[llvm-branch-commits] [llvm] InstCombine: Implement SimplifyDemandedFPClass for sqrt (PR #173883)
Matt Arsenault via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Jan 6 07:12:57 PST 2026
================
@@ -242,3 +242,27 @@ KnownFPClass KnownFPClass::log(const KnownFPClass &KnownSrc,
return Known;
}
+
+KnownFPClass KnownFPClass::sqrt(const KnownFPClass &KnownSrc,
+ DenormalMode Mode) {
+ KnownFPClass Known;
+
+ if (KnownSrc.isKnownNeverPosInfinity())
+ Known.knownNot(fcPosInf);
+ if (KnownSrc.isKnownNever(fcSNan))
+ Known.knownNot(fcSNan);
+
+ // Any negative value besides -0 returns a nan.
+ if (KnownSrc.isKnownNeverNaN() && KnownSrc.cannotBeOrderedLessThanZero())
+ Known.knownNot(fcNan);
+
+ // The only negative value that can be returned is -0 for -0 inputs.
+ Known.knownNot(fcNegInf | fcNegSubnormal | fcNegNormal);
----------------
arsenm wrote:
Anything provably not-subnormal is quite useful, we can trim the subnormal scaling in some of the complex functions. Seems to hold at least for float
https://github.com/llvm/llvm-project/pull/173883
More information about the llvm-branch-commits
mailing list