src/hotspot/cpu/aarch64/cas.m4
author rkennke
Sun, 06 May 2018 00:42:59 +0200
changeset 50024 7238cb613dc5
parent 47216 71c04702a3d5
permissions -rw-r--r--
8202676: AArch64: Missing enter/leave around barrier leads to infinite loop Reviewed-by: aph, eosterlund
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42579
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
     1
dnl Copyright (c) 2016, Red Hat Inc. All rights reserved.
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
     2
dnl DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
     3
dnl
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
     4
dnl This code is free software; you can redistribute it and/or modify it
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
     5
dnl under the terms of the GNU General Public License version 2 only, as
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
     6
dnl published by the Free Software Foundation.
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
     7
dnl
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
     8
dnl This code is distributed in the hope that it will be useful, but WITHOUT
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
     9
dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    10
dnl FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    11
dnl version 2 for more details (a copy is included in the LICENSE file that
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    12
dnl accompanied this code).
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    13
dnl
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    14
dnl You should have received a copy of the GNU General Public License version
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    15
dnl 2 along with this work; if not, write to the Free Software Foundation,
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    16
dnl Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    17
dnl
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    18
dnl Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    19
dnl or visit www.oracle.com if you need additional information or have any
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    20
dnl questions.
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    21
dnl
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    22
dnl 
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    23
dnl Process this file with m4 cas.m4 to generate the CAE and wCAS
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    24
dnl instructions used in aarch64.ad.
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    25
dnl
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    26
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    27
// BEGIN This section of the file is automatically generated. Do not edit --------------
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    28
40049
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    29
// Sundry CAS operations.  Note that release is always true,
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    30
// regardless of the memory ordering of the CAS.  This is because we
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    31
// need the volatile case to be sequentially consistent but there is
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    32
// no trailing StoreLoad barrier emitted by C2.  Unfortunately we
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    33
// can't check the type of memory ordering here, so we always emit a
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    34
// STLXR.
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    35
42579
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    36
// This section is generated from aarch64_ad_cas.m4
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    37
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    38
40049
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    39
define(`CAS_INSN',
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    40
`
42579
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    41
instruct compareAndExchange$1$5(iReg$2NoSp res, indirect mem, iReg$2 oldval, iReg$2 newval, rFlagsReg cr) %{
40049
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    42
  match(Set res (CompareAndExchange$1 mem (Binary oldval newval)));
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    43
  ifelse($5,Acq,'  predicate(needs_acquiring_load_exclusive(n));
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    44
  ins_cost(VOLATILE_REF_COST);`,'  ins_cost(2 * VOLATILE_REF_COST);`)
42579
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    45
  effect(TEMP_DEF res, KILL cr);
40049
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    46
  format %{
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    47
    "cmpxchg $res = $mem, $oldval, $newval\t# ($3, weak) if $mem == $oldval then $mem <-- $newval"
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    48
  %}
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    49
  ins_encode %{
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    50
    __ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register,
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    51
               Assembler::$4, /*acquire*/ ifelse($5,Acq,true,false), /*release*/ true,
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    52
               /*weak*/ false, $res$$Register);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    53
  %}
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    54
  ins_pipe(pipe_slow);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    55
%}')dnl
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    56
define(`CAS_INSN4',
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    57
`
42579
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    58
instruct compareAndExchange$1$7(iReg$2NoSp res, indirect mem, iReg$2 oldval, iReg$2 newval, rFlagsReg cr) %{
40049
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    59
  match(Set res (CompareAndExchange$1 mem (Binary oldval newval)));
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    60
  ifelse($7,Acq,'  predicate(needs_acquiring_load_exclusive(n));
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    61
  ins_cost(VOLATILE_REF_COST);`,'  ins_cost(2 * VOLATILE_REF_COST);`)
42579
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
    62
  effect(TEMP_DEF res, KILL cr);
40049
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    63
  format %{
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    64
    "cmpxchg $res = $mem, $oldval, $newval\t# ($3, weak) if $mem == $oldval then $mem <-- $newval"
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    65
  %}
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    66
  ins_encode %{
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    67
    __ $5(rscratch2, $oldval$$Register);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    68
    __ cmpxchg($mem$$Register, rscratch2, $newval$$Register,
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    69
               Assembler::$4, /*acquire*/ ifelse($5,Acq,true,false), /*release*/ true,
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    70
               /*weak*/ false, $res$$Register);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    71
    __ $6($res$$Register, $res$$Register);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    72
  %}
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    73
  ins_pipe(pipe_slow);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    74
%}')dnl
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    75
CAS_INSN4(B,I,byte,byte,uxtbw,sxtbw)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    76
CAS_INSN4(S,I,short,halfword,uxthw,sxthw)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    77
CAS_INSN(I,I,int,word)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    78
CAS_INSN(L,L,long,xword)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    79
CAS_INSN(N,N,narrow oop,word)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    80
CAS_INSN(P,P,ptr,xword)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    81
dnl
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    82
dnl CAS_INSN4(B,I,byte,byte,uxtbw,sxtbw,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    83
dnl CAS_INSN4(S,I,short,halfword,uxthw,sxthw,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    84
dnl CAS_INSN(I,I,int,word,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    85
dnl CAS_INSN(L,L,long,xword,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    86
dnl CAS_INSN(N,N,narrow oop,word,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    87
dnl CAS_INSN(P,P,ptr,xword,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    88
dnl
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    89
define(`CAS_INSN2',
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    90
`
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    91
instruct weakCompareAndSwap$1$6(iRegINoSp res, indirect mem, iReg$2 oldval, iReg$2 newval, rFlagsReg cr) %{
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    92
  match(Set res (WeakCompareAndSwap$1 mem (Binary oldval newval)));
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    93
  ifelse($6,Acq,'  predicate(needs_acquiring_load_exclusive(n));
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    94
  ins_cost(VOLATILE_REF_COST);`,'  ins_cost(2 * VOLATILE_REF_COST);`)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    95
  effect(KILL cr);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    96
  format %{
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    97
    "cmpxchg $res = $mem, $oldval, $newval\t# ($3, weak) if $mem == $oldval then $mem <-- $newval"
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    98
    "csetw $res, EQ\t# $res <-- (EQ ? 1 : 0)"
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
    99
  %}
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   100
  ins_encode %{
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   101
    __ uxt$5(rscratch2, $oldval$$Register);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   102
    __ cmpxchg($mem$$Register, rscratch2, $newval$$Register,
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   103
               Assembler::$4, /*acquire*/ ifelse($6,Acq,true,false), /*release*/ true,
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   104
               /*weak*/ true, noreg);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   105
    __ csetw($res$$Register, Assembler::EQ);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   106
  %}
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   107
  ins_pipe(pipe_slow);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   108
%}')dnl
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   109
define(`CAS_INSN3',
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   110
`
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   111
instruct weakCompareAndSwap$1$5(iRegINoSp res, indirect mem, iReg$2 oldval, iReg$2 newval, rFlagsReg cr) %{
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   112
  match(Set res (WeakCompareAndSwap$1 mem (Binary oldval newval)));
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   113
  ifelse($5,Acq,'  predicate(needs_acquiring_load_exclusive(n));
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   114
  ins_cost(VOLATILE_REF_COST);`,'  ins_cost(2 * VOLATILE_REF_COST);`)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   115
  effect(KILL cr);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   116
  format %{
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   117
    "cmpxchg $res = $mem, $oldval, $newval\t# ($3, weak) if $mem == $oldval then $mem <-- $newval"
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   118
    "csetw $res, EQ\t# $res <-- (EQ ? 1 : 0)"
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   119
  %}
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   120
  ins_encode %{
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   121
    __ cmpxchg($mem$$Register, $oldval$$Register, $newval$$Register,
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   122
               Assembler::$4, /*acquire*/ ifelse($5,Acq,true,false), /*release*/ true,
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   123
               /*weak*/ true, noreg);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   124
    __ csetw($res$$Register, Assembler::EQ);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   125
  %}
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   126
  ins_pipe(pipe_slow);
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   127
%}')dnl
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   128
CAS_INSN2(B,I,byte,byte,bw)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   129
CAS_INSN2(S,I,short,halfword,hw)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   130
CAS_INSN3(I,I,int,word)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   131
CAS_INSN3(L,L,long,xword)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   132
CAS_INSN3(N,N,narrow oop,word)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   133
CAS_INSN3(P,P,ptr,xword)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   134
dnl CAS_INSN2(B,I,byte,byte,bw,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   135
dnl CAS_INSN2(S,I,short,halfword,hw,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   136
dnl CAS_INSN3(I,I,int,word,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   137
dnl CAS_INSN3(L,L,long,xword,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   138
dnl CAS_INSN3(N,N,narrow oop,word,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   139
dnl CAS_INSN3(P,P,ptr,xword,Acq)
a23a3ed6c7a6 8141633: Implement VarHandles/Unsafe intrinsics on AArch64
aph
parents:
diff changeset
   140
dnl
42579
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
   141
c7699b65b434 8169901: AArch64: CompareAndExchange intrinsics clobber address register
rkennke
parents: 40049
diff changeset
   142
// END This section of the file is automatically generated. Do not edit --------------