================
@@ -5743,6 +5747,14 @@ 
LoongArchTargetLowering::shouldExpandAtomicRMWInIR(AtomicRMWInst *AI) const {
   }
 
   unsigned Size = AI->getType()->getPrimitiveSizeInBits();
+  if (Subtarget.hasLAMCAS()) {
+    if (AI->getOperation() == AtomicRMWInst::Nand ||
+        (Size < 32 /*&& (AI->getOperation() != AtomicRMWInst::Or &&
----------------
tangaac wrote:

atomicrmw nand & i8 / i16 atomicrmw add / sub / [u]min / [u]max should be 
converted to amcas.

i8 / i16 atomicrmw and  / or / xor shouldn't be converted to amcas because they 
can use am(and / or / xor).w to expand. 

But after feature LAMCAS enabled, all i8,i16 atomicrmw operations will be 
converted to amcas, 
how to fix it?

https://github.com/llvm/llvm-project/pull/114189
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to