src/cpu/x86/vm/x86_64.ad
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6710487 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/x86_64.ad

Print this page




7043 %{
7044   match(Set dst (CastX2P src));
7045 
7046   format %{ "movq    $dst, $src\t# long->ptr" %}
7047   ins_encode(enc_copy_wide(dst, src));
7048   ins_pipe(ialu_reg_reg); // XXX
7049 %}
7050 
7051 instruct castP2X(rRegL dst, rRegP src)
7052 %{
7053   match(Set dst (CastP2X src));
7054 
7055   format %{ "movq    $dst, $src\t# ptr -> long" %}
7056   ins_encode(enc_copy_wide(dst, src));
7057   ins_pipe(ialu_reg_reg); // XXX
7058 %}
7059 
7060 
7061 // Convert oop pointer into compressed form
7062 instruct encodeHeapOop(rRegN dst, rRegP src, rFlagsReg cr) %{
7063   predicate(n->bottom_type()->is_narrowoop()->make_oopptr()->ptr() != TypePtr::NotNull);
7064   match(Set dst (EncodeP src));
7065   effect(KILL cr);
7066   format %{ "encode_heap_oop $dst,$src" %}
7067   ins_encode %{
7068     Register s = $src$$Register;
7069     Register d = $dst$$Register;
7070     if (s != d) {
7071       __ movq(d, s);
7072     }
7073     __ encode_heap_oop(d);
7074   %}
7075   ins_pipe(ialu_reg_long);
7076 %}
7077 
7078 instruct encodeHeapOop_not_null(rRegN dst, rRegP src, rFlagsReg cr) %{
7079   predicate(n->bottom_type()->is_narrowoop()->make_oopptr()->ptr() == TypePtr::NotNull);
7080   match(Set dst (EncodeP src));
7081   effect(KILL cr);
7082   format %{ "encode_heap_oop_not_null $dst,$src" %}
7083   ins_encode %{
7084     Register s = $src$$Register;
7085     Register d = $dst$$Register;
7086     __ encode_heap_oop_not_null(d, s);
7087   %}
7088   ins_pipe(ialu_reg_long);
7089 %}
7090 
7091 instruct decodeHeapOop(rRegP dst, rRegN src, rFlagsReg cr) %{
7092   predicate(n->bottom_type()->is_oopptr()->ptr() != TypePtr::NotNull &&
7093             n->bottom_type()->is_oopptr()->ptr() != TypePtr::Constant);
7094   match(Set dst (DecodeN src));
7095   effect(KILL cr);
7096   format %{ "decode_heap_oop $dst,$src" %}
7097   ins_encode %{
7098     Register s = $src$$Register;
7099     Register d = $dst$$Register;




7043 %{
7044   match(Set dst (CastX2P src));
7045 
7046   format %{ "movq    $dst, $src\t# long->ptr" %}
7047   ins_encode(enc_copy_wide(dst, src));
7048   ins_pipe(ialu_reg_reg); // XXX
7049 %}
7050 
7051 instruct castP2X(rRegL dst, rRegP src)
7052 %{
7053   match(Set dst (CastP2X src));
7054 
7055   format %{ "movq    $dst, $src\t# ptr -> long" %}
7056   ins_encode(enc_copy_wide(dst, src));
7057   ins_pipe(ialu_reg_reg); // XXX
7058 %}
7059 
7060 
7061 // Convert oop pointer into compressed form
7062 instruct encodeHeapOop(rRegN dst, rRegP src, rFlagsReg cr) %{
7063   predicate(n->bottom_type()->make_ptr()->ptr() != TypePtr::NotNull);
7064   match(Set dst (EncodeP src));
7065   effect(KILL cr);
7066   format %{ "encode_heap_oop $dst,$src" %}
7067   ins_encode %{
7068     Register s = $src$$Register;
7069     Register d = $dst$$Register;
7070     if (s != d) {
7071       __ movq(d, s);
7072     }
7073     __ encode_heap_oop(d);
7074   %}
7075   ins_pipe(ialu_reg_long);
7076 %}
7077 
7078 instruct encodeHeapOop_not_null(rRegN dst, rRegP src, rFlagsReg cr) %{
7079   predicate(n->bottom_type()->make_ptr()->ptr() == TypePtr::NotNull);
7080   match(Set dst (EncodeP src));
7081   effect(KILL cr);
7082   format %{ "encode_heap_oop_not_null $dst,$src" %}
7083   ins_encode %{
7084     Register s = $src$$Register;
7085     Register d = $dst$$Register;
7086     __ encode_heap_oop_not_null(d, s);
7087   %}
7088   ins_pipe(ialu_reg_long);
7089 %}
7090 
7091 instruct decodeHeapOop(rRegP dst, rRegN src, rFlagsReg cr) %{
7092   predicate(n->bottom_type()->is_oopptr()->ptr() != TypePtr::NotNull &&
7093             n->bottom_type()->is_oopptr()->ptr() != TypePtr::Constant);
7094   match(Set dst (DecodeN src));
7095   effect(KILL cr);
7096   format %{ "decode_heap_oop $dst,$src" %}
7097   ins_encode %{
7098     Register s = $src$$Register;
7099     Register d = $dst$$Register;


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