Skip to content

Commit 04a271a

Browse files
authored
[RISCV] Reorder atomic pseudo instructions and isel patterns. NFC (#154835)
Instead of interleaving the pseudo definitions and their patterns, define all the pseudos together and all the patterns together. Add IsRV32 predicate to the patterns.
1 parent c704dab commit 04a271a

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoA.td

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -304,39 +304,42 @@ def : Pat<(XLenVT (atomic_load_nand_i32_acq_rel GPR:$addr, GPR:$incr)),
304304
def : Pat<(XLenVT (atomic_load_nand_i32_seq_cst GPR:$addr, GPR:$incr)),
305305
(PseudoAtomicLoadNand32 GPR:$addr, GPR:$incr, 7)>;
306306

307-
let Size = 28 in
308-
def PseudoMaskedAtomicSwap32 : PseudoMaskedAMO;
307+
let Size = 28 in {
308+
def PseudoMaskedAtomicSwap32 : PseudoMaskedAMO;
309+
def PseudoMaskedAtomicLoadAdd32 : PseudoMaskedAMO;
310+
def PseudoMaskedAtomicLoadSub32 : PseudoMaskedAMO;
311+
}
312+
let Size = 32 in {
313+
def PseudoMaskedAtomicLoadNand32 : PseudoMaskedAMO;
314+
}
315+
let Size = 44 in {
316+
def PseudoMaskedAtomicLoadMax32 : PseudoMaskedAMOMinMax;
317+
def PseudoMaskedAtomicLoadMin32 : PseudoMaskedAMOMinMax;
318+
}
319+
let Size = 36 in {
320+
def PseudoMaskedAtomicLoadUMax32 : PseudoMaskedAMOUMinUMax;
321+
def PseudoMaskedAtomicLoadUMin32 : PseudoMaskedAMOUMinUMax;
322+
}
323+
} // Predicates = [HasStdExtA]
324+
325+
let Predicates = [HasStdExtA, IsRV32] in {
309326
def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_xchg_i32,
310327
PseudoMaskedAtomicSwap32>;
311-
let Size = 28 in
312-
def PseudoMaskedAtomicLoadAdd32 : PseudoMaskedAMO;
313328
def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_add_i32,
314329
PseudoMaskedAtomicLoadAdd32>;
315-
let Size = 28 in
316-
def PseudoMaskedAtomicLoadSub32 : PseudoMaskedAMO;
317330
def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_sub_i32,
318331
PseudoMaskedAtomicLoadSub32>;
319-
let Size = 32 in
320-
def PseudoMaskedAtomicLoadNand32 : PseudoMaskedAMO;
321332
def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_nand_i32,
322333
PseudoMaskedAtomicLoadNand32>;
323-
let Size = 44 in
324-
def PseudoMaskedAtomicLoadMax32 : PseudoMaskedAMOMinMax;
325334
def : PseudoMaskedAMOMinMaxPat<int_riscv_masked_atomicrmw_max_i32,
326335
PseudoMaskedAtomicLoadMax32>;
327-
let Size = 44 in
328-
def PseudoMaskedAtomicLoadMin32 : PseudoMaskedAMOMinMax;
329336
def : PseudoMaskedAMOMinMaxPat<int_riscv_masked_atomicrmw_min_i32,
330337
PseudoMaskedAtomicLoadMin32>;
331-
let Size = 36 in
332-
def PseudoMaskedAtomicLoadUMax32 : PseudoMaskedAMOUMinUMax;
333338
def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_umax_i32,
334339
PseudoMaskedAtomicLoadUMax32>;
335-
let Size = 36 in
336-
def PseudoMaskedAtomicLoadUMin32 : PseudoMaskedAMOUMinUMax;
337340
def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_umin_i32,
338341
PseudoMaskedAtomicLoadUMin32>;
339-
} // Predicates = [HasStdExtA]
342+
} // Predicates = [HasStdExtA, IsRV32]
340343

341344
let Predicates = [HasStdExtA, IsRV64] in {
342345

0 commit comments

Comments
 (0)