< 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

12625 
12626   format %{ "cmpl    $mem, $src\t# compressed ptr" %}
12627   ins_encode %{
12628     __ cmp_narrow_oop($mem$$Address, (jobject)$src$$constant);
12629   %}
12630   ins_pipe(ialu_cr_reg_mem);
12631 %}
12632 
12633 instruct compN_rReg_imm_klass(rFlagsRegU cr, rRegN op1, immNKlass op2) %{
12634   match(Set cr (CmpN op1 op2));
12635 
12636   format %{ "cmpl    $op1, $op2\t# compressed klass ptr" %}
12637   ins_encode %{
12638     __ cmp_narrow_klass($op1$$Register, (Klass*)$op2$$constant);
12639   %}
12640   ins_pipe(ialu_cr_reg_imm);
12641 %}
12642 
12643 instruct compN_mem_imm_klass(rFlagsRegU cr, memory mem, immNKlass src)
12644 %{

12645   match(Set cr (CmpN src (LoadNKlass mem)));
12646 
12647   format %{ "cmpl    $mem, $src\t# compressed klass ptr" %}
12648   ins_encode %{
12649     __ cmp_narrow_klass($mem$$Address, (Klass*)$src$$constant);
12650   %}
12651   ins_pipe(ialu_cr_reg_mem);
12652 %}
12653 
12654 instruct testN_reg(rFlagsReg cr, rRegN src, immN0 zero) %{
12655   match(Set cr (CmpN src zero));
12656 
12657   format %{ "testl   $src, $src\t# compressed ptr" %}
12658   ins_encode %{ __ testl($src$$Register, $src$$Register); %}
12659   ins_pipe(ialu_cr_reg_imm);
12660 %}
12661 
12662 instruct testN_mem(rFlagsReg cr, memory mem, immN0 zero)
12663 %{
12664   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 loadNKlassCompactHeaders(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     __ load_nklass_compact_c2($dst$$Register, $mem$$base$$Register);
 5339   %}
 5340   ins_pipe(pipe_slow); // XXX
 5341 %}
 5342 
 5343 // Load Float
 5344 instruct loadF(regF dst, memory mem)
 5345 %{
 5346   match(Set dst (LoadF mem));
 5347 
 5348   ins_cost(145); // XXX
 5349   format %{ "movss   $dst, $mem\t# float" %}
 5350   ins_encode %{
 5351     __ movflt($dst$$XMMRegister, $mem$$Address);
 5352   %}
 5353   ins_pipe(pipe_slow); // XXX
 5354 %}
 5355 
 5356 // Load Double
 5357 instruct loadD_partial(regD dst, memory mem)
 5358 %{
 5359   predicate(!UseXmmLoadAndClearUpper);
 5360   match(Set dst (LoadD mem));
 5361 
 5362   ins_cost(145); // XXX

12641 
12642   format %{ "cmpl    $mem, $src\t# compressed ptr" %}
12643   ins_encode %{
12644     __ cmp_narrow_oop($mem$$Address, (jobject)$src$$constant);
12645   %}
12646   ins_pipe(ialu_cr_reg_mem);
12647 %}
12648 
12649 instruct compN_rReg_imm_klass(rFlagsRegU cr, rRegN op1, immNKlass op2) %{
12650   match(Set cr (CmpN op1 op2));
12651 
12652   format %{ "cmpl    $op1, $op2\t# compressed klass ptr" %}
12653   ins_encode %{
12654     __ cmp_narrow_klass($op1$$Register, (Klass*)$op2$$constant);
12655   %}
12656   ins_pipe(ialu_cr_reg_imm);
12657 %}
12658 
12659 instruct compN_mem_imm_klass(rFlagsRegU cr, memory mem, immNKlass src)
12660 %{
12661   predicate(!UseCompactObjectHeaders);
12662   match(Set cr (CmpN src (LoadNKlass mem)));
12663 
12664   format %{ "cmpl    $mem, $src\t# compressed klass ptr" %}
12665   ins_encode %{
12666     __ cmp_narrow_klass($mem$$Address, (Klass*)$src$$constant);
12667   %}
12668   ins_pipe(ialu_cr_reg_mem);
12669 %}
12670 
12671 instruct testN_reg(rFlagsReg cr, rRegN src, immN0 zero) %{
12672   match(Set cr (CmpN src zero));
12673 
12674   format %{ "testl   $src, $src\t# compressed ptr" %}
12675   ins_encode %{ __ testl($src$$Register, $src$$Register); %}
12676   ins_pipe(ialu_cr_reg_imm);
12677 %}
12678 
12679 instruct testN_mem(rFlagsReg cr, memory mem, immN0 zero)
12680 %{
12681   predicate(CompressedOops::base() != NULL);
< prev index next >