[llvm-branch-commits] [llvm] InstCombine: Implement SimplifyDemandedFPClass for frexp (PR #176122)
Matt Arsenault via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Jan 15 07:47:03 PST 2026
================
@@ -2941,6 +2941,55 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(Instruction *I,
Known = KnownLHS | KnownRHS;
break;
}
+ case Instruction::ExtractValue: {
+ ExtractValueInst *Extract = cast<ExtractValueInst>(I);
+ ArrayRef<unsigned> Indices = Extract->getIndices();
+ Value *Src = Extract->getAggregateOperand();
+ if (isa<StructType>(Src->getType()) && Indices.size() == 1 &&
+ Indices[0] == 0) {
+ if (auto *II = dyn_cast<IntrinsicInst>(Src)) {
+ switch (II->getIntrinsicID()) {
+ case Intrinsic::frexp: {
+ FPClassTest SrcDemandedMask = fcNone;
+ if (DemandedMask & fcNan)
+ SrcDemandedMask |= fcNan;
+ if (DemandedMask & fcNegFinite)
+ SrcDemandedMask |= fcNegFinite;
+ if (DemandedMask & fcPosFinite)
+ SrcDemandedMask |= fcPosFinite;
+ if (DemandedMask & fcPosInf)
+ SrcDemandedMask |= fcPosInf;
+ if (DemandedMask & fcNegInf)
+ SrcDemandedMask |= fcNegInf;
+
+ KnownFPClass KnownSrc;
+ if (SimplifyDemandedFPClass(II, 0, SrcDemandedMask, KnownSrc,
----------------
arsenm wrote:
You mean like https://github.com/llvm/llvm-project/blob/872574dd6e897c6dda29324f4f9cd67167ede07d/llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-frexp.ll#L212, or with multiple uses of the extracted mant
https://github.com/llvm/llvm-project/pull/176122
More information about the llvm-branch-commits
mailing list