src/hotspot/cpu/x86/gc/shenandoah/shenandoah_x86_64.ad
changeset 54423 6c0ab8bd8da5
parent 53519 74a5ef4c81cc
equal deleted inserted replaced
54422:f562f8318ebd 54423:6c0ab8bd8da5
    21 //
    21 //
    22 //
    22 //
    23 
    23 
    24 source_hpp %{
    24 source_hpp %{
    25 #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
    25 #include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
    26 %}
    26 #include "gc/shenandoah/c2/shenandoahSupport.hpp"
    27 
       
    28 instruct shenandoahRB(rRegP dst, rRegP src, rFlagsReg cr) %{
       
    29   match(Set dst (ShenandoahReadBarrier src));
       
    30   effect(DEF dst, USE src);
       
    31   ins_cost(125); // XXX
       
    32   format %{ "shenandoah_rb $dst, $src" %}
       
    33   ins_encode %{
       
    34     Register d = $dst$$Register;
       
    35     Register s = $src$$Register;
       
    36     __ movptr(d, Address(s, ShenandoahBrooksPointer::byte_offset()));
       
    37   %}
       
    38   ins_pipe(ialu_reg_mem);
       
    39 %}
       
    40 
       
    41 instruct shenandoahRBNarrow(rRegP dst, rRegN src) %{
       
    42   predicate(UseCompressedOops && (Universe::narrow_oop_shift() == 0));
       
    43   match(Set dst (ShenandoahReadBarrier (DecodeN src)));
       
    44   effect(DEF dst, USE src);
       
    45   ins_cost(125); // XXX
       
    46   format %{ "shenandoah_rb $dst, $src" %}
       
    47   ins_encode %{
       
    48     Register d = $dst$$Register;
       
    49     Register s = $src$$Register;
       
    50     __ movptr(d, Address(r12, s, Address::times_1, ShenandoahBrooksPointer::byte_offset()));
       
    51   %}
       
    52   ins_pipe(ialu_reg_mem);
       
    53 %}
       
    54 
       
    55 instruct shenandoahRBNarrowShift(rRegP dst, rRegN src) %{
       
    56   predicate(UseCompressedOops && (Universe::narrow_oop_shift() == Address::times_8));
       
    57   match(Set dst (ShenandoahReadBarrier (DecodeN src)));
       
    58   effect(DEF dst, USE src);
       
    59   ins_cost(125); // XXX
       
    60   format %{ "shenandoah_rb $dst, $src" %}
       
    61   ins_encode %{
       
    62     Register d = $dst$$Register;
       
    63     Register s = $src$$Register;
       
    64     __ movptr(d, Address(r12, s, Address::times_8, ShenandoahBrooksPointer::byte_offset()));
       
    65   %}
       
    66   ins_pipe(ialu_reg_mem);
       
    67 %}
    27 %}
    68 
    28 
    69 instruct compareAndSwapP_shenandoah(rRegI res,
    29 instruct compareAndSwapP_shenandoah(rRegI res,
    70                                     memory mem_ptr,
    30                                     memory mem_ptr,
    71                                     rRegP tmp1, rRegP tmp2,
    31                                     rRegP tmp1, rRegP tmp2,