@@ -304,39 +304,42 @@ def : Pat<(XLenVT (atomic_load_nand_i32_acq_rel GPR:$addr, GPR:$incr)),
304304def : 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 {
309326def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_xchg_i32,
310327 PseudoMaskedAtomicSwap32>;
311- let Size = 28 in
312- def PseudoMaskedAtomicLoadAdd32 : PseudoMaskedAMO;
313328def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_add_i32,
314329 PseudoMaskedAtomicLoadAdd32>;
315- let Size = 28 in
316- def PseudoMaskedAtomicLoadSub32 : PseudoMaskedAMO;
317330def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_sub_i32,
318331 PseudoMaskedAtomicLoadSub32>;
319- let Size = 32 in
320- def PseudoMaskedAtomicLoadNand32 : PseudoMaskedAMO;
321332def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_nand_i32,
322333 PseudoMaskedAtomicLoadNand32>;
323- let Size = 44 in
324- def PseudoMaskedAtomicLoadMax32 : PseudoMaskedAMOMinMax;
325334def : PseudoMaskedAMOMinMaxPat<int_riscv_masked_atomicrmw_max_i32,
326335 PseudoMaskedAtomicLoadMax32>;
327- let Size = 44 in
328- def PseudoMaskedAtomicLoadMin32 : PseudoMaskedAMOMinMax;
329336def : PseudoMaskedAMOMinMaxPat<int_riscv_masked_atomicrmw_min_i32,
330337 PseudoMaskedAtomicLoadMin32>;
331- let Size = 36 in
332- def PseudoMaskedAtomicLoadUMax32 : PseudoMaskedAMOUMinUMax;
333338def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_umax_i32,
334339 PseudoMaskedAtomicLoadUMax32>;
335- let Size = 36 in
336- def PseudoMaskedAtomicLoadUMin32 : PseudoMaskedAMOUMinUMax;
337340def : PseudoMaskedAMOPat<int_riscv_masked_atomicrmw_umin_i32,
338341 PseudoMaskedAtomicLoadUMin32>;
339- } // Predicates = [HasStdExtA]
342+ } // Predicates = [HasStdExtA, IsRV32 ]
340343
341344let Predicates = [HasStdExtA, IsRV64] in {
342345
0 commit comments