< prev index next >

src/hotspot/cpu/x86/x86_64.ad

Print this page

 5213      __ movl($dst$$Register, $mem$$Address);
 5214    %}
 5215    ins_pipe(ialu_reg_mem); // XXX
 5216 %}
 5217 
 5218 
 5219 // Load Klass Pointer
 5220 instruct loadKlass(rRegP dst, memory mem)
 5221 %{
 5222   match(Set dst (LoadKlass mem));
 5223 
 5224   ins_cost(125); // XXX
 5225   format %{ "movq    $dst, $mem\t# class" %}
 5226   ins_encode %{
 5227     __ movq($dst$$Register, $mem$$Address);
 5228   %}
 5229   ins_pipe(ialu_reg_mem); // XXX
 5230 %}
 5231 
 5232 // Load narrow Klass Pointer
 5233 instruct loadNKlass(rRegN dst, memory mem)
 5234 %{
 5235   match(Set dst (LoadNKlass mem));
 5236 
 5237   ins_cost(125); // XXX
 5238   format %{ "movl    $dst, $mem\t# compressed klass ptr" %}
 5239   ins_encode %{
 5240     __ movl($dst$$Register, $mem$$Address);


 5241   %}
 5242   ins_pipe(ialu_reg_mem); // XXX
 5243 %}
 5244 
 5245 // Load Float
 5246 instruct loadF(regF dst, memory mem)
 5247 %{
 5248   match(Set dst (LoadF mem));
 5249 
 5250   ins_cost(145); // XXX
 5251   format %{ "movss   $dst, $mem\t# float" %}
 5252   ins_encode %{
 5253     __ movflt($dst$$XMMRegister, $mem$$Address);
 5254   %}
 5255   ins_pipe(pipe_slow); // XXX
 5256 %}
 5257 
 5258 // Load Double
 5259 instruct loadD_partial(regD dst, memory mem)
 5260 %{
 5261   predicate(!UseXmmLoadAndClearUpper);
 5262   match(Set dst (LoadD mem));

12335 %{
12336   match(Set cr (CmpN src (LoadN mem)));
12337 
12338   format %{ "cmpl    $mem, $src\t# compressed ptr" %}
12339   ins_encode %{
12340     __ cmp_narrow_oop($mem$$Address, (jobject)$src$$constant);
12341   %}
12342   ins_pipe(ialu_cr_reg_mem);
12343 %}
12344 
12345 instruct compN_rReg_imm_klass(rFlagsRegU cr, rRegN op1, immNKlass op2) %{
12346   match(Set cr (CmpN op1 op2));
12347 
12348   format %{ "cmpl    $op1, $op2\t# compressed klass ptr" %}
12349   ins_encode %{
12350     __ cmp_narrow_klass($op1$$Register, (Klass*)$op2$$constant);
12351   %}
12352   ins_pipe(ialu_cr_reg_imm);
12353 %}
12354 



12355 instruct compN_mem_imm_klass(rFlagsRegU cr, memory mem, immNKlass src)
12356 %{

12357   match(Set cr (CmpN src (LoadNKlass mem)));
12358 
12359   format %{ "cmpl    $mem, $src\t# compressed klass ptr" %}
12360   ins_encode %{
12361     __ cmp_narrow_klass($mem$$Address, (Klass*)$src$$constant);
12362   %}
12363   ins_pipe(ialu_cr_reg_mem);
12364 %}
12365 
12366 instruct testN_reg(rFlagsReg cr, rRegN src, immN0 zero) %{
12367   match(Set cr (CmpN src zero));
12368 
12369   format %{ "testl   $src, $src\t# compressed ptr" %}
12370   ins_encode %{ __ testl($src$$Register, $src$$Register); %}
12371   ins_pipe(ialu_cr_reg_imm);
12372 %}
12373 
12374 instruct testN_mem(rFlagsReg cr, memory mem, immN0 zero)
12375 %{
12376   predicate(CompressedOops::base() != NULL);

 5213      __ movl($dst$$Register, $mem$$Address);
 5214    %}
 5215    ins_pipe(ialu_reg_mem); // XXX
 5216 %}
 5217 
 5218 
 5219 // Load Klass Pointer
 5220 instruct loadKlass(rRegP dst, memory mem)
 5221 %{
 5222   match(Set dst (LoadKlass mem));
 5223 
 5224   ins_cost(125); // XXX
 5225   format %{ "movq    $dst, $mem\t# class" %}
 5226   ins_encode %{
 5227     __ movq($dst$$Register, $mem$$Address);
 5228   %}
 5229   ins_pipe(ialu_reg_mem); // XXX
 5230 %}
 5231 
 5232 // Load narrow Klass Pointer
 5233 instruct loadNKlass(rRegN dst, indOffset8 mem, rFlagsReg cr)
 5234 %{
 5235   match(Set dst (LoadNKlass mem));
 5236   effect(TEMP_DEF dst, KILL cr);
 5237   ins_cost(125); // XXX
 5238   format %{ "movl    $dst, $mem\t# compressed klass ptr" %}
 5239   ins_encode %{
 5240     assert($mem$$disp == oopDesc::klass_offset_in_bytes(), "expect correct offset 4, but got: %d", $mem$$disp);
 5241     assert($mem$$index == 4, "expect no index register: %d", $mem$$index);
 5242     __ load_nklass($dst$$Register, $mem$$base$$Register);
 5243   %}
 5244   ins_pipe(pipe_slow); // XXX
 5245 %}
 5246 
 5247 // Load Float
 5248 instruct loadF(regF dst, memory mem)
 5249 %{
 5250   match(Set dst (LoadF mem));
 5251 
 5252   ins_cost(145); // XXX
 5253   format %{ "movss   $dst, $mem\t# float" %}
 5254   ins_encode %{
 5255     __ movflt($dst$$XMMRegister, $mem$$Address);
 5256   %}
 5257   ins_pipe(pipe_slow); // XXX
 5258 %}
 5259 
 5260 // Load Double
 5261 instruct loadD_partial(regD dst, memory mem)
 5262 %{
 5263   predicate(!UseXmmLoadAndClearUpper);
 5264   match(Set dst (LoadD mem));

12337 %{
12338   match(Set cr (CmpN src (LoadN mem)));
12339 
12340   format %{ "cmpl    $mem, $src\t# compressed ptr" %}
12341   ins_encode %{
12342     __ cmp_narrow_oop($mem$$Address, (jobject)$src$$constant);
12343   %}
12344   ins_pipe(ialu_cr_reg_mem);
12345 %}
12346 
12347 instruct compN_rReg_imm_klass(rFlagsRegU cr, rRegN op1, immNKlass op2) %{
12348   match(Set cr (CmpN op1 op2));
12349 
12350   format %{ "cmpl    $op1, $op2\t# compressed klass ptr" %}
12351   ins_encode %{
12352     __ cmp_narrow_klass($op1$$Register, (Klass*)$op2$$constant);
12353   %}
12354   ins_pipe(ialu_cr_reg_imm);
12355 %}
12356 
12357 // Disabled because the compressed Klass* in header cannot be safely
12358 // accessed. TODO: Re-enable it as soon as synchronization does not
12359 // overload the upper header bits anymore.
12360 instruct compN_mem_imm_klass(rFlagsRegU cr, memory mem, immNKlass src)
12361 %{
12362   predicate(false);
12363   match(Set cr (CmpN src (LoadNKlass mem)));
12364 
12365   format %{ "cmpl    $mem, $src\t# compressed klass ptr" %}
12366   ins_encode %{
12367     __ cmp_narrow_klass($mem$$Address, (Klass*)$src$$constant);
12368   %}
12369   ins_pipe(ialu_cr_reg_mem);
12370 %}
12371 
12372 instruct testN_reg(rFlagsReg cr, rRegN src, immN0 zero) %{
12373   match(Set cr (CmpN src zero));
12374 
12375   format %{ "testl   $src, $src\t# compressed ptr" %}
12376   ins_encode %{ __ testl($src$$Register, $src$$Register); %}
12377   ins_pipe(ialu_cr_reg_imm);
12378 %}
12379 
12380 instruct testN_mem(rFlagsReg cr, memory mem, immN0 zero)
12381 %{
12382   predicate(CompressedOops::base() != NULL);
< prev index next >