[Mlir-commits] [clang] [llvm] [mlir] [IR][CodeGen] Replace constrained FP intrinsics with fp.control/fp.except operand bundles (PR #191613)

Jason Eckhardt llvmlistbot at llvm.org
Sun Apr 12 13:11:51 PDT 2026


================
@@ -109,28 +109,42 @@ struct SimpleValue {
     if (CallInst *CI = dyn_cast<CallInst>(Inst)) {
       if (Function *F = CI->getCalledFunction()) {
         switch (F->getIntrinsicID()) {
-        case Intrinsic::experimental_constrained_fadd:
-        case Intrinsic::experimental_constrained_fsub:
-        case Intrinsic::experimental_constrained_fmul:
-        case Intrinsic::experimental_constrained_fdiv:
-        case Intrinsic::experimental_constrained_frem:
-        case Intrinsic::experimental_constrained_fptosi:
-        case Intrinsic::experimental_constrained_sitofp:
-        case Intrinsic::experimental_constrained_fptoui:
-        case Intrinsic::experimental_constrained_uitofp:
-        case Intrinsic::experimental_constrained_fcmp:
-        case Intrinsic::experimental_constrained_fcmps: {
-          auto *CFP = cast<ConstrainedFPIntrinsic>(CI);
-          if (CFP->getExceptionBehavior() &&
-              CFP->getExceptionBehavior() == fp::ebStrict)
+        // New-form FP intrinsics (llvm.fadd, llvm.fsub, etc.) with fp.control
+        // and/or fp.except operand bundles follow the same CSE rules as their
+        // constrained predecessors:
+        //   - ebStrict or absent exception behavior → no CSE
+        //   - Dynamic or absent rounding mode → no CSE (unknown mode)
+        //   - Fixed non-strict EB + known RM → CSE allowed
----------------
nvjle wrote:

Micro-nit: I don't remember if there is a specific/explicit rule about this in the coding standards, but should the special arrow character be replaced by ASCII `->`? 

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


More information about the Mlir-commits mailing list