< prev index next >

src/hotspot/cpu/x86/x86_64.ad

Print this page

 5297    ins_pipe(ialu_reg_mem); // XXX
 5298 %}
 5299 
 5300 
 5301 // Load Klass Pointer
 5302 instruct loadKlass(rRegP dst, memory mem)
 5303 %{
 5304   match(Set dst (LoadKlass mem));
 5305 
 5306   ins_cost(125); // XXX
 5307   format %{ "movq    $dst, $mem\t# class" %}
 5308   ins_encode %{
 5309     __ movq($dst$$Register, $mem$$Address);
 5310   %}
 5311   ins_pipe(ialu_reg_mem); // XXX
 5312 %}
 5313 
 5314 // Load narrow Klass Pointer
 5315 instruct loadNKlass(rRegN dst, memory mem)
 5316 %{

 5317   match(Set dst (LoadNKlass mem));
 5318 
 5319   ins_cost(125); // XXX
 5320   format %{ "movl    $dst, $mem\t# compressed klass ptr" %}
 5321   ins_encode %{
 5322     __ movl($dst$$Register, $mem$$Address);
 5323   %}
 5324   ins_pipe(ialu_reg_mem); // XXX
 5325 %}
 5326 























 5327 // Load Float
 5328 instruct loadF(regF dst, memory mem)
 5329 %{
 5330   match(Set dst (LoadF mem));
 5331 
 5332   ins_cost(145); // XXX
 5333   format %{ "movss   $dst, $mem\t# float" %}
 5334   ins_encode %{
 5335     __ movflt($dst$$XMMRegister, $mem$$Address);
 5336   %}
 5337   ins_pipe(pipe_slow); // XXX
 5338 %}
 5339 
 5340 // Load Double
 5341 instruct loadD_partial(regD dst, memory mem)
 5342 %{
 5343   predicate(!UseXmmLoadAndClearUpper);
 5344   match(Set dst (LoadD mem));
 5345 
 5346   ins_cost(145); // XXX

12677 
12678   format %{ "cmpl    $mem, $src\t# compressed ptr" %}
12679   ins_encode %{
12680     __ cmp_narrow_oop($mem$$Address, (jobject)$src$$constant);
12681   %}
12682   ins_pipe(ialu_cr_reg_mem);
12683 %}
12684 
12685 instruct compN_rReg_imm_klass(rFlagsRegU cr, rRegN op1, immNKlass op2) %{
12686   match(Set cr (CmpN op1 op2));
12687 
12688   format %{ "cmpl    $op1, $op2\t# compressed klass ptr" %}
12689   ins_encode %{
12690     __ cmp_narrow_klass($op1$$Register, (Klass*)$op2$$constant);
12691   %}
12692   ins_pipe(ialu_cr_reg_imm);
12693 %}
12694 
12695 instruct compN_mem_imm_klass(rFlagsRegU cr, memory mem, immNKlass src)
12696 %{

12697   match(Set cr (CmpN src (LoadNKlass mem)));
12698 
12699   format %{ "cmpl    $mem, $src\t# compressed klass ptr" %}
12700   ins_encode %{
12701     __ cmp_narrow_klass($mem$$Address, (Klass*)$src$$constant);
12702   %}
12703   ins_pipe(ialu_cr_reg_mem);
12704 %}
12705 
12706 instruct testN_reg(rFlagsReg cr, rRegN src, immN0 zero) %{
12707   match(Set cr (CmpN src zero));
12708 
12709   format %{ "testl   $src, $src\t# compressed ptr" %}
12710   ins_encode %{ __ testl($src$$Register, $src$$Register); %}
12711   ins_pipe(ialu_cr_reg_imm);
12712 %}
12713 
12714 instruct testN_mem(rFlagsReg cr, memory mem, immN0 zero)
12715 %{
12716   predicate(CompressedOops::base() != NULL);

 5297    ins_pipe(ialu_reg_mem); // XXX
 5298 %}
 5299 
 5300 
 5301 // Load Klass Pointer
 5302 instruct loadKlass(rRegP dst, memory mem)
 5303 %{
 5304   match(Set dst (LoadKlass mem));
 5305 
 5306   ins_cost(125); // XXX
 5307   format %{ "movq    $dst, $mem\t# class" %}
 5308   ins_encode %{
 5309     __ movq($dst$$Register, $mem$$Address);
 5310   %}
 5311   ins_pipe(ialu_reg_mem); // XXX
 5312 %}
 5313 
 5314 // Load narrow Klass Pointer
 5315 instruct loadNKlass(rRegN dst, memory mem)
 5316 %{
 5317   predicate(!UseCompactObjectHeaders);
 5318   match(Set dst (LoadNKlass mem));
 5319 
 5320   ins_cost(125); // XXX
 5321   format %{ "movl    $dst, $mem\t# compressed klass ptr" %}
 5322   ins_encode %{
 5323     __ movl($dst$$Register, $mem$$Address);
 5324   %}
 5325   ins_pipe(ialu_reg_mem); // XXX
 5326 %}
 5327 
 5328 instruct loadNKlassLilliput(rRegN dst, indOffset8 mem, rFlagsReg cr)
 5329 %{
 5330   predicate(UseCompactObjectHeaders);
 5331   match(Set dst (LoadNKlass mem));
 5332   effect(KILL cr);
 5333   ins_cost(125); // XXX
 5334   format %{ "movl    $dst, $mem\t# compressed klass ptr" %}
 5335   ins_encode %{
 5336     assert($mem$$disp == oopDesc::klass_offset_in_bytes(), "expect correct offset 4, but got: %d", $mem$$disp);
 5337     assert($mem$$index == 4, "expect no index register: %d", $mem$$index);
 5338     Register dst = $dst$$Register;
 5339     Register obj = $mem$$base$$Register;
 5340     C2LoadNKlassStub* stub = new (Compile::current()->comp_arena()) C2LoadNKlassStub(dst);
 5341     Compile::current()->output()->add_stub(stub);
 5342     __ movq(dst, Address(obj, oopDesc::mark_offset_in_bytes()));
 5343     __ testb(dst, markWord::monitor_value);
 5344     __ jcc(Assembler::notZero, stub->entry());
 5345     __ bind(stub->continuation());
 5346     __ shrq(dst, markWord::klass_shift);
 5347   %}
 5348   ins_pipe(pipe_slow); // XXX
 5349 %}
 5350 
 5351 // Load Float
 5352 instruct loadF(regF dst, memory mem)
 5353 %{
 5354   match(Set dst (LoadF mem));
 5355 
 5356   ins_cost(145); // XXX
 5357   format %{ "movss   $dst, $mem\t# float" %}
 5358   ins_encode %{
 5359     __ movflt($dst$$XMMRegister, $mem$$Address);
 5360   %}
 5361   ins_pipe(pipe_slow); // XXX
 5362 %}
 5363 
 5364 // Load Double
 5365 instruct loadD_partial(regD dst, memory mem)
 5366 %{
 5367   predicate(!UseXmmLoadAndClearUpper);
 5368   match(Set dst (LoadD mem));
 5369 
 5370   ins_cost(145); // XXX

12701 
12702   format %{ "cmpl    $mem, $src\t# compressed ptr" %}
12703   ins_encode %{
12704     __ cmp_narrow_oop($mem$$Address, (jobject)$src$$constant);
12705   %}
12706   ins_pipe(ialu_cr_reg_mem);
12707 %}
12708 
12709 instruct compN_rReg_imm_klass(rFlagsRegU cr, rRegN op1, immNKlass op2) %{
12710   match(Set cr (CmpN op1 op2));
12711 
12712   format %{ "cmpl    $op1, $op2\t# compressed klass ptr" %}
12713   ins_encode %{
12714     __ cmp_narrow_klass($op1$$Register, (Klass*)$op2$$constant);
12715   %}
12716   ins_pipe(ialu_cr_reg_imm);
12717 %}
12718 
12719 instruct compN_mem_imm_klass(rFlagsRegU cr, memory mem, immNKlass src)
12720 %{
12721   predicate(!UseCompactObjectHeaders);
12722   match(Set cr (CmpN src (LoadNKlass mem)));
12723 
12724   format %{ "cmpl    $mem, $src\t# compressed klass ptr" %}
12725   ins_encode %{
12726     __ cmp_narrow_klass($mem$$Address, (Klass*)$src$$constant);
12727   %}
12728   ins_pipe(ialu_cr_reg_mem);
12729 %}
12730 
12731 instruct testN_reg(rFlagsReg cr, rRegN src, immN0 zero) %{
12732   match(Set cr (CmpN src zero));
12733 
12734   format %{ "testl   $src, $src\t# compressed ptr" %}
12735   ins_encode %{ __ testl($src$$Register, $src$$Register); %}
12736   ins_pipe(ialu_cr_reg_imm);
12737 %}
12738 
12739 instruct testN_mem(rFlagsReg cr, memory mem, immN0 zero)
12740 %{
12741   predicate(CompressedOops::base() != NULL);
< prev index next >