[llvm] [NVPTX] Add syncscope support for cmpxchg (PR #140812)

Alex MacLean via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 2 10:07:54 PDT 2025


================
@@ -1836,37 +1896,54 @@ multiclass F_ATOMIC_2<RegTyInfo t, string sem_str, string as_str, string op_str,
   }
 }
 
-// has 3 operands
-multiclass F_ATOMIC_3<RegTyInfo t, string sem_str, string as_str, string op_str,
-                      SDPatternOperator op, list<Predicate> preds> {
-  defvar asm_str = "atom" # sem_str # as_str # "." # op_str;
+multiclass F_ATOMIC_3<RegTyInfo t, string op_str> {
+  defvar asm_str = "atom${sem:sem}${scope:scope}${addsp:addsp}" # op_str # "\t$dst, [$addr], $b, $c;";
+
   let mayLoad = 1, mayStore = 1, hasSideEffects = 1 in {
-    def rr : BasicNVPTXInst<(outs t.RC:$dst),
-      (ins ADDR:$addr, t.RC:$b, t.RC:$c),
-      asm_str,
-      [(set t.Ty:$dst, (op addr:$addr, t.Ty:$b, t.Ty:$c))]>,
-    Requires<preds>;
+    def _rr : NVPTXInst<(outs t.RC:$dst),
----------------
AlexMaclean wrote:

Use a `BasicFlagsNVPTXInst` here

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


More information about the llvm-commits mailing list