src/cpu/sparc/vm/sparc.ad
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6695810 Sdiff src/cpu/sparc/vm

src/cpu/sparc/vm/sparc.ad

Print this page




5454    ins_cost(MEMORY_REF_COST);
5455    size(4);
5456 
5457    format %{ "LDUW   $mem,$dst\t! compressed ptr" %}
5458    ins_encode %{
5459      Register base = as_Register($mem$$base);
5460      Register index = as_Register($mem$$index);
5461      Register dst = $dst$$Register;
5462      if (index != G0) {
5463        __ lduw(base, index, dst);
5464      } else {
5465        __ lduw(base, $mem$$disp, dst);
5466      }
5467    %}
5468    ins_pipe(iload_mem);
5469 %}
5470 
5471 // Load Klass Pointer
5472 instruct loadKlass(iRegP dst, memory mem) %{
5473   match(Set dst (LoadKlass mem));
5474   predicate(!n->in(MemNode::Address)->bottom_type()->is_narrow());
5475   ins_cost(MEMORY_REF_COST);
5476   size(4);
5477 
5478 #ifndef _LP64
5479   format %{ "LDUW   $mem,$dst\t! klass ptr" %}
5480   opcode(Assembler::lduw_op3, 0, REGP_OP);
5481 #else
5482   format %{ "LDX    $mem,$dst\t! klass ptr" %}
5483   opcode(Assembler::ldx_op3, 0, REGP_OP);
5484 #endif
5485   ins_encode( form3_mem_reg( mem, dst ) );
5486   ins_pipe(iload_mem);
5487 %}
5488 
5489 // Load Klass Pointer
5490 instruct loadKlassComp(iRegP dst, memory mem) %{
5491   match(Set dst (LoadKlass mem));
5492   predicate(n->in(MemNode::Address)->bottom_type()->is_narrow());
5493   ins_cost(MEMORY_REF_COST);
5494 
5495   format %{ "LDUW   $mem,$dst\t! compressed klass ptr" %}
5496 
5497   ins_encode %{
5498      Register base = as_Register($mem$$base);
5499      Register index = as_Register($mem$$index);
5500      Register dst = $dst$$Register;
5501      if (index != G0) {
5502        __ lduw(base, index, dst);
5503      } else {
5504        __ lduw(base, $mem$$disp, dst);
5505      }
5506      // klass oop never null but this is generated for nonheader klass loads
5507      // too which can be null.
5508      __ decode_heap_oop(dst);
5509   %}
5510   ins_pipe(iload_mem);
5511 %}
5512 




5454    ins_cost(MEMORY_REF_COST);
5455    size(4);
5456 
5457    format %{ "LDUW   $mem,$dst\t! compressed ptr" %}
5458    ins_encode %{
5459      Register base = as_Register($mem$$base);
5460      Register index = as_Register($mem$$index);
5461      Register dst = $dst$$Register;
5462      if (index != G0) {
5463        __ lduw(base, index, dst);
5464      } else {
5465        __ lduw(base, $mem$$disp, dst);
5466      }
5467    %}
5468    ins_pipe(iload_mem);
5469 %}
5470 
5471 // Load Klass Pointer
5472 instruct loadKlass(iRegP dst, memory mem) %{
5473   match(Set dst (LoadKlass mem));
5474   predicate(!n->in(MemNode::Address)->bottom_type()->is_ptr_to_narrowoop());
5475   ins_cost(MEMORY_REF_COST);
5476   size(4);
5477 
5478 #ifndef _LP64
5479   format %{ "LDUW   $mem,$dst\t! klass ptr" %}
5480   opcode(Assembler::lduw_op3, 0, REGP_OP);
5481 #else
5482   format %{ "LDX    $mem,$dst\t! klass ptr" %}
5483   opcode(Assembler::ldx_op3, 0, REGP_OP);
5484 #endif
5485   ins_encode( form3_mem_reg( mem, dst ) );
5486   ins_pipe(iload_mem);
5487 %}
5488 
5489 // Load Klass Pointer
5490 instruct loadKlassComp(iRegP dst, memory mem) %{
5491   match(Set dst (LoadKlass mem));
5492   predicate(n->in(MemNode::Address)->bottom_type()->is_ptr_to_narrowoop());
5493   ins_cost(MEMORY_REF_COST);
5494 
5495   format %{ "LDUW   $mem,$dst\t! compressed klass ptr" %}
5496 
5497   ins_encode %{
5498      Register base = as_Register($mem$$base);
5499      Register index = as_Register($mem$$index);
5500      Register dst = $dst$$Register;
5501      if (index != G0) {
5502        __ lduw(base, index, dst);
5503      } else {
5504        __ lduw(base, $mem$$disp, dst);
5505      }
5506      // klass oop never null but this is generated for nonheader klass loads
5507      // too which can be null.
5508      __ decode_heap_oop(dst);
5509   %}
5510   ins_pipe(iload_mem);
5511 %}
5512 


src/cpu/sparc/vm/sparc.ad
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File