[llvm] InstCombine: Handle canonicalize in SimplifyDemandedFPClass (PR #173189)
Yingwei Zheng via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 24 05:17:46 PST 2025
================
@@ -2106,6 +2106,77 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(Value *V,
Known.copysign(KnownSign);
break;
}
+ case Intrinsic::canonicalize: {
+ Type *EltTy = VTy->getScalarType();
+
+ // TODO: This could have more refined support for PositiveZero denormal
+ // mode.
+ if (EltTy->isIEEELikeFPTy()) {
+ DenormalMode Mode = F.getDenormalMode(EltTy->getFltSemantics());
+
+ FPClassTest SrcDemandedMask = DemandedMask;
+
+ // A demanded quiet nan result may have come from a signaling nan, so we
+ // need to expand the demanded mask.
+ if ((DemandedMask & fcQNan) != fcNone)
+ SrcDemandedMask |= fcSNan;
+
+ // This cannot have produced a signaling nan, so we can trim any snan
+ // inputs.
+ if ((DemandedMask & fcSNan) != fcNone)
----------------
dtcxzyw wrote:
```suggestion
if ((DemandedMask & fcSNan) == fcNone)
```
https://github.com/llvm/llvm-project/pull/173189
More information about the llvm-commits
mailing list