================
@@ -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
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits