[llvm-branch-commits] [llvm] InstCombine: Handle nsz in copysign SimplifyDemandedFPClass (PR #176916)
Yingwei Zheng via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Jan 20 07:50:41 PST 2026
================
@@ -2081,6 +2081,32 @@ static Value *simplifyDemandedFPClassFnegFabs(KnownFPClass &Known, Value *Src,
return nullptr;
}
+static Value *simplifyDemandedFPClassCopysignMag(Value *MagSrc,
+ FPClassTest DemandedMask,
+ KnownFPClass KnownSrc,
+ bool NSZ) {
+ if (NSZ) {
+ constexpr FPClassTest NegOrZero = fcNegative | fcPosZero;
+ constexpr FPClassTest PosOrZero = fcPositive | fcNegZero;
+
+ if ((DemandedMask & ~NegOrZero) == fcNone &&
+ KnownSrc.isKnownNever(KnownFPClass::OrderedGreaterThanZeroMask | fcNan))
+ return MagSrc;
+
+ if ((DemandedMask & ~PosOrZero) == fcNone &&
+ KnownSrc.isKnownNever(KnownFPClass::OrderedLessThanZeroMask | fcNan))
+ return MagSrc;
+ } else {
+ if ((DemandedMask & ~fcNegative) == fcNone && KnownSrc.SignBit == true)
----------------
dtcxzyw wrote:
Missing positive tests.
https://github.com/llvm/llvm-project/pull/176916
More information about the llvm-branch-commits
mailing list