[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