[llvm-branch-commits] [llvm] ValueTracking: Improve computeKnownFPClass fmul handling (PR #173247)

Yingwei Zheng via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Dec 24 05:46:37 PST 2025


================
@@ -5749,12 +5743,39 @@ void computeKnownFPClass(const Value *V, const APInt &DemandedElts,
         Known.knownNot(fcSubnormal);
     }
 
-    if (!KnownRHS.isKnownNeverNaN())
-      break;
-
-    computeKnownFPClass(Op->getOperand(0), DemandedElts, NeedForNan, KnownLHS,
+    computeKnownFPClass(Op->getOperand(0), DemandedElts, fcAllFlags, KnownLHS,
                         Q, Depth + 1);
-    if (!KnownLHS.isKnownNeverNaN())
+
+    // xor sign bit.
+    if ((KnownLHS.isKnownNever(fcNegative) &&
+         KnownRHS.isKnownNever(fcNegative)) ||
+        (KnownLHS.isKnownNever(fcPositive) &&
+         KnownRHS.isKnownNever(fcPositive)))
+      Known.knownNot(fcNegative);
+
+    if ((KnownLHS.isKnownAlways(fcNegative | fcNan) &&
+         KnownRHS.isKnownNever(fcNegative)) ||
+        (KnownLHS.isKnownNever(fcNegative) &&
+         KnownRHS.isKnownAlways(fcNegative | fcNan)))
+      Known.knownNot(fcPositive);
+
+    // inf * anything => inf or nan
+    if (KnownLHS.isKnownAlways(fcInf) || KnownRHS.isKnownAlways(fcInf))
----------------
dtcxzyw wrote:

```suggestion
    if (KnownLHS.isKnownAlways(fcInf | fcNan) || KnownRHS.isKnownAlways(fcInf | fcNan))
```

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


More information about the llvm-branch-commits mailing list