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

src/cpu/sparc/vm/sparc.ad

Print this page




5940   size(4);
5941   format %{ "STW    $src,$mem\t! storeF0" %}
5942   opcode(Assembler::stw_op3);
5943   ins_encode( form3_mem_reg( mem, R_G0 ) );
5944   ins_pipe(fstoreF_mem_zero);
5945 %}
5946 
5947 // Store Aligned Packed Bytes in Double register to memory
5948 instruct storeA8B(memory mem, regD src) %{
5949   match(Set mem (Store8B mem src));
5950   ins_cost(MEMORY_REF_COST);
5951   size(4);
5952   format %{ "STDF   $src,$mem\t! packed8B" %}
5953   opcode(Assembler::stdf_op3);
5954   ins_encode( form3_mem_reg( mem, src ) );
5955   ins_pipe(fstoreD_mem_reg);
5956 %}
5957 
5958 // Convert oop pointer into compressed form
5959 instruct encodeHeapOop(iRegN dst, iRegP src) %{

5960   match(Set dst (EncodeP src));
5961   format %{ "SRL    $src,3,$dst\t encodeHeapOop" %}
5962   ins_encode %{
5963     __ encode_heap_oop($src$$Register, $dst$$Register);
5964   %}
5965   ins_pipe(ialu_reg);
5966 %}
5967 










5968 instruct decodeHeapOop(iRegP dst, iRegN src) %{

5969   match(Set dst (DecodeN src));
5970   format %{ "decode_heap_oop $src, $dst" %}
5971   ins_encode %{
5972     __ decode_heap_oop($src$$Register, $dst$$Register);
5973   %}
5974   ins_pipe(ialu_reg);










5975 %}
5976 
5977 
5978 // Store Zero into Aligned Packed Bytes
5979 instruct storeA8B0(memory mem, immI0 zero) %{
5980   match(Set mem (Store8B mem zero));
5981   ins_cost(MEMORY_REF_COST);
5982   size(4);
5983   format %{ "STX    $zero,$mem\t! packed8B" %}
5984   opcode(Assembler::stx_op3);
5985   ins_encode( form3_mem_reg( mem, R_G0 ) );
5986   ins_pipe(fstoreD_mem_zero);
5987 %}
5988 
5989 // Store Aligned Packed Chars/Shorts in Double register to memory
5990 instruct storeA4C(memory mem, regD src) %{
5991   match(Set mem (Store4C mem src));
5992   ins_cost(MEMORY_REF_COST);
5993   size(4);
5994   format %{ "STDF   $src,$mem\t! packed4C" %}




5940   size(4);
5941   format %{ "STW    $src,$mem\t! storeF0" %}
5942   opcode(Assembler::stw_op3);
5943   ins_encode( form3_mem_reg( mem, R_G0 ) );
5944   ins_pipe(fstoreF_mem_zero);
5945 %}
5946 
5947 // Store Aligned Packed Bytes in Double register to memory
5948 instruct storeA8B(memory mem, regD src) %{
5949   match(Set mem (Store8B mem src));
5950   ins_cost(MEMORY_REF_COST);
5951   size(4);
5952   format %{ "STDF   $src,$mem\t! packed8B" %}
5953   opcode(Assembler::stdf_op3);
5954   ins_encode( form3_mem_reg( mem, src ) );
5955   ins_pipe(fstoreD_mem_reg);
5956 %}
5957 
5958 // Convert oop pointer into compressed form
5959 instruct encodeHeapOop(iRegN dst, iRegP src) %{
5960   predicate(n->bottom_type()->is_narrowoop()->make_oopptr()->ptr() != TypePtr::NotNull);
5961   match(Set dst (EncodeP src));
5962   format %{ "encode_heap_oop $src, $dst" %}
5963   ins_encode %{
5964     __ encode_heap_oop($src$$Register, $dst$$Register);
5965   %}
5966   ins_pipe(ialu_reg);
5967 %}
5968 
5969 instruct encodeHeapOop_not_null(iRegN dst, iRegP src) %{
5970   predicate(n->bottom_type()->is_narrowoop()->make_oopptr()->ptr() == TypePtr::NotNull);
5971   match(Set dst (EncodeP src));
5972   format %{ "encode_heap_oop_not_null $src, $dst" %}
5973   ins_encode %{
5974     __ encode_heap_oop_not_null($src$$Register, $dst$$Register);
5975   %}
5976   ins_pipe(ialu_reg);
5977 %}
5978 
5979 instruct decodeHeapOop(iRegP dst, iRegN src) %{
5980   predicate(n->bottom_type()->is_oopptr()->ptr() != TypePtr::NotNull);
5981   match(Set dst (DecodeN src));
5982   format %{ "decode_heap_oop $src, $dst" %}
5983   ins_encode %{
5984     __ decode_heap_oop($src$$Register, $dst$$Register);
5985   %}
5986   ins_pipe(ialu_reg);
5987 %}
5988 
5989 instruct decodeHeapOop_not_null(iRegP dst, iRegN src) %{
5990   predicate(n->bottom_type()->is_oopptr()->ptr() == TypePtr::NotNull);
5991   match(Set dst (DecodeN src));
5992   format %{ "decode_heap_oop_not_null $src, $dst" %}
5993   ins_encode %{
5994     __ decode_heap_oop_not_null($src$$Register, $dst$$Register);
5995   %}
5996   ins_pipe(ialu_reg);
5997 %}
5998 
5999 
6000 // Store Zero into Aligned Packed Bytes
6001 instruct storeA8B0(memory mem, immI0 zero) %{
6002   match(Set mem (Store8B mem zero));
6003   ins_cost(MEMORY_REF_COST);
6004   size(4);
6005   format %{ "STX    $zero,$mem\t! packed8B" %}
6006   opcode(Assembler::stx_op3);
6007   ins_encode( form3_mem_reg( mem, R_G0 ) );
6008   ins_pipe(fstoreD_mem_zero);
6009 %}
6010 
6011 // Store Aligned Packed Chars/Shorts in Double register to memory
6012 instruct storeA4C(memory mem, regD src) %{
6013   match(Set mem (Store4C mem src));
6014   ins_cost(MEMORY_REF_COST);
6015   size(4);
6016   format %{ "STDF   $src,$mem\t! packed4C" %}


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