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" %}
|