Skip to content

Commit 8ca8ac2

Browse files
author
git apple-llvm automerger
committed
Merge commit '72dfee114bd3' from llvm.org/main into next
2 parents 0b56cea + 72dfee1 commit 8ca8ac2

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoA.td

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,19 @@ multiclass LR_r_aq_rl<bits<3> funct3, string opcodestr> {
3030
def _AQ_RL : LR_r<1, 1, funct3, opcodestr # ".aqrl">;
3131
}
3232

33+
let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in
34+
class SC_r<bit aq, bit rl, bits<3> funct3, string opcodestr>
35+
: RVInstRAtomic<0b00011, aq, rl, funct3, OPC_AMO,
36+
(outs GPR:$rd), (ins GPRMemZeroOffset:$rs1, GPR:$rs2),
37+
opcodestr, "$rd, $rs2, $rs1">;
38+
39+
multiclass SC_r_aq_rl<bits<3> funct3, string opcodestr> {
40+
def "" : SC_r<0, 0, funct3, opcodestr>;
41+
def _AQ : SC_r<1, 0, funct3, opcodestr # ".aq">;
42+
def _RL : SC_r<0, 1, funct3, opcodestr # ".rl">;
43+
def _AQ_RL : SC_r<1, 1, funct3, opcodestr # ".aqrl">;
44+
}
45+
3346
let hasSideEffects = 0, mayLoad = 1, mayStore = 1 in
3447
class AMO_rr<bits<5> funct5, bit aq, bit rl, bits<3> funct3, string opcodestr>
3548
: RVInstRAtomic<funct5, aq, rl, funct3, OPC_AMO,
@@ -49,7 +62,7 @@ multiclass AMO_rr_aq_rl<bits<5> funct5, bits<3> funct3, string opcodestr> {
4962

5063
let Predicates = [HasStdExtAOrZalrsc], IsSignExtendingOpW = 1 in {
5164
defm LR_W : LR_r_aq_rl<0b010, "lr.w">, Sched<[WriteAtomicLDW, ReadAtomicLDW]>;
52-
defm SC_W : AMO_rr_aq_rl<0b00011, 0b010, "sc.w">,
65+
defm SC_W : SC_r_aq_rl<0b010, "sc.w">,
5366
Sched<[WriteAtomicSTW, ReadAtomicSTW, ReadAtomicSTW]>;
5467
} // Predicates = [HasStdExtAOrZalrsc], IsSignExtendingOpW = 1
5568

@@ -76,7 +89,7 @@ defm AMOMAXU_W : AMO_rr_aq_rl<0b11100, 0b010, "amomaxu.w">,
7689

7790
let Predicates = [HasStdExtAOrZalrsc, IsRV64] in {
7891
defm LR_D : LR_r_aq_rl<0b011, "lr.d">, Sched<[WriteAtomicLDD, ReadAtomicLDD]>;
79-
defm SC_D : AMO_rr_aq_rl<0b00011, 0b011, "sc.d">,
92+
defm SC_D : SC_r_aq_rl<0b011, "sc.d">,
8093
Sched<[WriteAtomicSTD, ReadAtomicSTD, ReadAtomicSTD]>;
8194
} // Predicates = [HasStdExtAOrZalrsc, IsRV64]
8295

0 commit comments

Comments
 (0)