================
@@ -2426,19 +2430,21 @@ def CIR_AddOp : CIR_SaturatableBinaryOp<"add", 
CIR_AnyArithType> {
     operands. Both operands and the result must have the same type.
 
     For integer types, the optional `nsw` (no signed wrap) and `nuw` (no
-    unsigned wrap) unit attributes indicate that the result is poison if signed
-    or unsigned overflow occurs, respectively. The optional `sat` (saturated)
-    attribute clamps the result to the type's representable range instead of
-    wrapping. The `nsw`/`nuw` flags and `sat` are mutually exclusive.
-    
+    unsigned wrap) overflow flags indicate that the result is poison if signed
+    or unsigned overflow occurs, respectively. Combined flags are written as
+    `nsw|nuw`. The optional `sat` (saturated) attribute clamps the result to
+    the type's representable range instead of wrapping. The `nsw`/`nuw` flags
+    and `sat` are mutually exclusive.
+
     Example:
 
     ```
     %0 = cir.add %a, %b : !s32i
     %1 = cir.add nsw %a, %b : !s32i
     %2 = cir.add nuw %a, %b : !u32i
-    %3 = cir.add sat %a, %b : !s32i
-    %4 = cir.add %a, %b : !cir.float
+    %3 = cir.add nsw|nuw %a, %b : !s32i
----------------
andykaylor wrote:

I don't like this representation. I'm used to seeing this as `nuw nsw` in LLVM 
IR, and having it represented otherwise in CIR feels jarring.

https://github.com/llvm/llvm-project/pull/195618
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to