[Mlir-commits] [llvm] [mlir] Add usub_cond and usub_sat operations to atomicrmw (PR #105568)

Matt Arsenault llvmlistbot at llvm.org
Thu Aug 22 08:07:38 PDT 2024


================
@@ -98,13 +98,15 @@ Value *llvm::buildAtomicRMWValue(AtomicRMWInst::BinOp Op,
   case AtomicRMWInst::USubCond: {
     Value *Cmp = Builder.CreateICmpUGE(Loaded, Val);
     Value *Sub = Builder.CreateSub(Loaded, Val);
-    return Builder.CreateSelect(Cmp, Sub, Val, "new");
+    return Builder.CreateSelect(Cmp, Sub, Loaded, "new");
   }
   case AtomicRMWInst::USubSat: {
-    Constant *Zero = ConstantInt::get(Loaded->getType(), 0);
-    Value *Cmp = Builder.CreateICmpUGE(Loaded, Val);
-    Value *Sub = Builder.CreateSub(Loaded, Val);
-    return Builder.CreateSelect(Cmp, Sub, Zero, "new");
+    return Builder.CreateIntrinsic(Intrinsic::usub_sat, Loaded->getType(),
+                                   {Loaded, Val}, nullptr, "new");
+    //    Constant *Zero = ConstantInt::get(Loaded->getType(), 0);
+    //    Value *Cmp = Builder.CreateICmpUGE(Loaded, Val);
+    //    Value *Sub = Builder.CreateSub(Loaded, Val);
+    //    return Builder.CreateSelect(Cmp, Sub, Zero, "new");
----------------
arsenm wrote:

Remove commented out code 

https://github.com/llvm/llvm-project/pull/105568


More information about the Mlir-commits mailing list