< prev index next >

src/hotspot/cpu/riscv/riscv.ad

Print this page
*** 10539,21 ***
    ins_pipe(pipe_class_empty);
  %}
  
  // inlined locking and unlocking
  // using t1 as the 'flag' register to bridge the BoolNode producers and consumers
! instruct cmpFastLock(rFlagsReg cr, iRegP object, iRegP box, iRegPNoSp tmp1, iRegPNoSp tmp2, iRegPNoSp tmp3)
  %{
    predicate(LockingMode != LM_LIGHTWEIGHT);
    match(Set cr (FastLock object box));
!   effect(TEMP tmp1, TEMP tmp2, TEMP tmp3);
  
    ins_cost(10 * DEFAULT_COST);
!   format %{ "fastlock $object,$box\t! kills $tmp1,$tmp2,$tmp3, #@cmpFastLock" %}
  
    ins_encode %{
!     __ fast_lock($object$$Register, $box$$Register, $tmp1$$Register, $tmp2$$Register, $tmp3$$Register);
    %}
  
    ins_pipe(pipe_serial);
  %}
  
--- 10539,23 ---
    ins_pipe(pipe_class_empty);
  %}
  
  // inlined locking and unlocking
  // using t1 as the 'flag' register to bridge the BoolNode producers and consumers
! instruct cmpFastLock(rFlagsReg cr, iRegP object, iRegP box,
+                      iRegPNoSp tmp1, iRegPNoSp tmp2, iRegPNoSp tmp3, iRegPNoSp tmp4)
  %{
    predicate(LockingMode != LM_LIGHTWEIGHT);
    match(Set cr (FastLock object box));
!   effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4);
  
    ins_cost(10 * DEFAULT_COST);
!   format %{ "fastlock $object,$box\t! kills $tmp1,$tmp2,$tmp3,$tmp4 #@cmpFastLock" %}
  
    ins_encode %{
!     __ fast_lock($object$$Register, $box$$Register,
+                  $tmp1$$Register, $tmp2$$Register, $tmp3$$Register, $tmp4$$Register);
    %}
  
    ins_pipe(pipe_serial);
  %}
  

*** 10572,37 ***
    %}
  
    ins_pipe(pipe_serial);
  %}
  
! instruct cmpFastLockLightweight(rFlagsReg cr, iRegP object, iRegP box, iRegPNoSp tmp1, iRegPNoSp tmp2, iRegPNoSp tmp3)
  %{
    predicate(LockingMode == LM_LIGHTWEIGHT);
    match(Set cr (FastLock object box));
!   effect(TEMP tmp1, TEMP tmp2, TEMP tmp3);
  
    ins_cost(10 * DEFAULT_COST);
!   format %{ "fastlock $object,$box\t! kills $tmp1,$tmp2,$tmp3 #@cmpFastLockLightweight" %}
  
    ins_encode %{
!     __ fast_lock_lightweight($object$$Register, $box$$Register, $tmp1$$Register, $tmp2$$Register, $tmp3$$Register);
    %}
  
    ins_pipe(pipe_serial);
  %}
  
! instruct cmpFastUnlockLightweight(rFlagsReg cr, iRegP object, iRegP box, iRegPNoSp tmp1, iRegPNoSp tmp2, iRegPNoSp tmp3)
  %{
    predicate(LockingMode == LM_LIGHTWEIGHT);
    match(Set cr (FastUnlock object box));
    effect(TEMP tmp1, TEMP tmp2, TEMP tmp3);
  
    ins_cost(10 * DEFAULT_COST);
    format %{ "fastunlock $object,$box\t! kills $tmp1,$tmp2,$tmp3 #@cmpFastUnlockLightweight" %}
  
    ins_encode %{
!     __ fast_unlock_lightweight($object$$Register, $box$$Register, $tmp1$$Register, $tmp2$$Register, $tmp3$$Register);
    %}
  
    ins_pipe(pipe_serial);
  %}
  
--- 10574,41 ---
    %}
  
    ins_pipe(pipe_serial);
  %}
  
! instruct cmpFastLockLightweight(rFlagsReg cr, iRegP object, iRegP box,
+                                 iRegPNoSp tmp1, iRegPNoSp tmp2, iRegPNoSp tmp3, iRegPNoSp tmp4)
  %{
    predicate(LockingMode == LM_LIGHTWEIGHT);
    match(Set cr (FastLock object box));
!   effect(TEMP tmp1, TEMP tmp2, TEMP tmp3, TEMP tmp4);
  
    ins_cost(10 * DEFAULT_COST);
!   format %{ "fastlock $object,$box\t! kills $tmp1,$tmp2,$tmp3,$tmp4 #@cmpFastLockLightweight" %}
  
    ins_encode %{
!     __ fast_lock_lightweight($object$$Register, $box$$Register,
+                              $tmp1$$Register, $tmp2$$Register, $tmp3$$Register, $tmp4$$Register);
    %}
  
    ins_pipe(pipe_serial);
  %}
  
! instruct cmpFastUnlockLightweight(rFlagsReg cr, iRegP object, iRegP box,
+                                   iRegPNoSp tmp1, iRegPNoSp tmp2, iRegPNoSp tmp3)
  %{
    predicate(LockingMode == LM_LIGHTWEIGHT);
    match(Set cr (FastUnlock object box));
    effect(TEMP tmp1, TEMP tmp2, TEMP tmp3);
  
    ins_cost(10 * DEFAULT_COST);
    format %{ "fastunlock $object,$box\t! kills $tmp1,$tmp2,$tmp3 #@cmpFastUnlockLightweight" %}
  
    ins_encode %{
!     __ fast_unlock_lightweight($object$$Register, $box$$Register,
+                                $tmp1$$Register, $tmp2$$Register, $tmp3$$Register);
    %}
  
    ins_pipe(pipe_serial);
  %}
  
< prev index next >