[llvm] [KnownFPClass] Refine known classes for `atan2(y, x)` when `x` is negative (PR #214629)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 20 19:59:30 PDT 2026
================
@@ -5427,12 +5425,25 @@ void computeKnownFPClass(const Value *V, const APInt &DemandedElts,
break;
}
case Intrinsic::atan2: {
- KnownFPClass KnownLHS, KnownRHS;
- computeKnownFPClass(II->getArgOperand(0), DemandedElts, InterestedClasses,
- KnownLHS, Q, Depth + 1);
- computeKnownFPClass(II->getArgOperand(1), DemandedElts, InterestedClasses,
- KnownRHS, Q, Depth + 1);
- Known = KnownFPClass::atan2(KnownLHS, KnownRHS);
+ FPClassTest InterestedY = InterestedClasses;
+ FPClassTest InterestedX = InterestedClasses;
+
+ // We can rule out zero and subnormal if x cannot have a positive value.
+ if ((InterestedClasses & (fcZero | fcSubnormal)) != fcNone)
+ InterestedX |= fcPositive | fcNegSubnormal;
----------------
ZERICO2005 wrote:
I was unable to construct a test to prove that this is needed. Do you have any pointers on how I can write a test to demonstrate that a fold does not occur without demanding this analysis?
https://github.com/llvm/llvm-project/pull/214629
More information about the llvm-commits
mailing list