Author: Kewen Meng Date: 2026-01-02T12:52:24-08:00 New Revision: c29b31170c86d2f35b7e949098085f666c83636d
URL: https://github.com/llvm/llvm-project/commit/c29b31170c86d2f35b7e949098085f666c83636d DIFF: https://github.com/llvm/llvm-project/commit/c29b31170c86d2f35b7e949098085f666c83636d.diff LOG: Revert "[InstCombine] Support DemandElts in SimplifyDemandedFPClass (#174176)" This reverts commit 3c9d46ae338ea39f638342ac0e6f09d1cd8d10fa. Added: Modified: llvm/lib/Transforms/InstCombine/InstCombineInternal.h llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp Removed: ################################################################################ diff --git a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h index 4f4023ce8616c..9bdd8cb71f7f3 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineInternal.h +++ b/llvm/lib/Transforms/InstCombine/InstCombineInternal.h @@ -211,15 +211,6 @@ class LLVM_LIBRARY_VISIBILITY InstCombinerImpl final Depth); } - KnownFPClass computeKnownFPClass(Value *Val, const APInt &DemandedElts, - FastMathFlags FMF, - FPClassTest Interested = fcAllFlags, - const Instruction *CtxI = nullptr, - unsigned Depth = 0) const { - return llvm::computeKnownFPClass( - Val, DemandedElts, FMF, Interested, - getSimplifyQuery().getWithInstruction(CtxI), Depth); - } KnownFPClass computeKnownFPClass(Value *Val, FPClassTest Interested = fcAllFlags, const Instruction *CtxI = nullptr, @@ -228,14 +219,6 @@ class LLVM_LIBRARY_VISIBILITY InstCombinerImpl final Val, Interested, getSimplifyQuery().getWithInstruction(CtxI), Depth); } - KnownFPClass computeKnownFPClass(Value *Val, const APInt &DemandedElts, - FPClassTest Interested = fcAllFlags, - const Instruction *CtxI = nullptr, - unsigned Depth = 0) const { - return llvm::computeKnownFPClass( - Val, DemandedElts, Interested, - getSimplifyQuery().getWithInstruction(CtxI), Depth); - } /// Check if fmul \p MulVal, +0.0 will yield +0.0 (or signed zero is /// ignorable). bool fmulByZeroIsZero(Value *MulVal, FastMathFlags FMF, @@ -631,15 +614,7 @@ class LLVM_LIBRARY_VISIBILITY InstCombinerImpl final Value *SimplifyDemandedUseFPClass(Value *V, FPClassTest DemandedMask, KnownFPClass &Known, Instruction *CxtI, unsigned Depth = 0); - Value *SimplifyDemandedUseFPClass(Value *V, const APInt &DemandedElts, - FPClassTest DemandedMask, - KnownFPClass &Known, Instruction *CxtI, - unsigned Depth = 0); - bool SimplifyDemandedFPClass(Instruction *I, unsigned Op, - FPClassTest DemandedMask, KnownFPClass &Known, - unsigned Depth = 0); bool SimplifyDemandedFPClass(Instruction *I, unsigned Op, - const APInt &DemandedElts, FPClassTest DemandedMask, KnownFPClass &Known, unsigned Depth = 0); diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp index a9c759cbdbcba..3ad1caa6baa63 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp @@ -2033,23 +2033,12 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass(Value *V, KnownFPClass &Known, Instruction *CxtI, unsigned Depth) { - auto *FVTy = dyn_cast<FixedVectorType>(V->getType()); - APInt DemandedElts = - FVTy ? APInt::getAllOnes(FVTy->getNumElements()) : APInt(1, 1); - - return SimplifyDemandedUseFPClass(V, DemandedElts, DemandedMask, Known, CxtI, - Depth); -} - -Value *InstCombinerImpl::SimplifyDemandedUseFPClass( - Value *V, const APInt &DemandedElts, FPClassTest DemandedMask, - KnownFPClass &Known, Instruction *CxtI, unsigned Depth) { assert(Depth <= MaxAnalysisRecursionDepth && "Limit Search Depth"); Type *VTy = V->getType(); assert(Known == KnownFPClass() && "expected uninitialized state"); - if (DemandedMask == fcNone || !DemandedElts) + if (DemandedMask == fcNone) return isa<UndefValue>(V) ? nullptr : PoisonValue::get(VTy); if (Depth == MaxAnalysisRecursionDepth) @@ -2058,7 +2047,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass( Instruction *I = dyn_cast<Instruction>(V); if (!I) { // Handle constants and arguments - Known = computeKnownFPClass(V, DemandedElts, fcAllFlags, CxtI, Depth + 1); + Known = computeKnownFPClass(V, fcAllFlags, CxtI, Depth + 1); FPClassTest ValidResults = DemandedMask & Known.KnownFPClasses; if (ValidResults == fcNone) @@ -2091,8 +2080,8 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass( switch (I->getOpcode()) { case Instruction::FNeg: { - if (SimplifyDemandedFPClass(I, 0, DemandedElts, llvm::fneg(DemandedMask), - Known, Depth + 1)) + if (SimplifyDemandedFPClass(I, 0, llvm::fneg(DemandedMask), Known, + Depth + 1)) return I; Known.fneg(); break; @@ -2101,22 +2090,19 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass( CallInst *CI = cast<CallInst>(I); switch (CI->getIntrinsicID()) { case Intrinsic::fabs: - if (SimplifyDemandedFPClass(I, 0, DemandedElts, - llvm::inverse_fabs(DemandedMask), Known, + if (SimplifyDemandedFPClass(I, 0, llvm::inverse_fabs(DemandedMask), Known, Depth + 1)) return I; Known.fabs(); break; case Intrinsic::arithmetic_fence: - if (SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, Known, - Depth + 1)) + if (SimplifyDemandedFPClass(I, 0, DemandedMask, Known, Depth + 1)) return I; break; case Intrinsic::copysign: { // Flip on more potentially demanded classes const FPClassTest DemandedMaskAnySign = llvm::unknown_sign(DemandedMask); - if (SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMaskAnySign, - Known, Depth + 1)) + if (SimplifyDemandedFPClass(I, 0, DemandedMaskAnySign, Known, Depth + 1)) return I; if ((DemandedMask & fcNegative) == DemandedMask) { @@ -2131,8 +2117,8 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass( return I; } - KnownFPClass KnownSign = computeKnownFPClass( - I->getOperand(1), DemandedElts, fcAllFlags, CxtI, Depth + 1); + KnownFPClass KnownSign = + computeKnownFPClass(I->getOperand(1), fcAllFlags, CxtI, Depth + 1); Known.copysign(KnownSign); break; } @@ -2184,8 +2170,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass( // TODO: This could really make use of KnownFPClass of specific value // range, (i.e., close enough to 1) - if (SimplifyDemandedFPClass(I, 0, DemandedElts, SrcDemandedMask, KnownSrc, - Depth + 1)) + if (SimplifyDemandedFPClass(I, 0, SrcDemandedMask, KnownSrc, Depth + 1)) return I; /// Propagate nnan-ness to simplify edge case checks. @@ -2268,8 +2253,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass( KnownFPClass KnownSrc; // Simplify upstream operations before trying to simplify this call. - if (SimplifyDemandedFPClass(I, 0, DemandedElts, SrcDemandedMask, - KnownSrc, Depth + 1)) + if (SimplifyDemandedFPClass(I, 0, SrcDemandedMask, KnownSrc, Depth + 1)) return I; // Perform the canonicalization to see if this folded to a constant. @@ -2295,8 +2279,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass( [[fallthrough]]; } default: - Known = - computeKnownFPClass(I, DemandedElts, DemandedMask, CxtI, Depth + 1); + Known = computeKnownFPClass(I, DemandedMask, CxtI, Depth + 1); break; } @@ -2304,10 +2287,8 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass( } case Instruction::Select: { KnownFPClass KnownLHS, KnownRHS; - if (SimplifyDemandedFPClass(I, 2, DemandedElts, DemandedMask, KnownRHS, - Depth + 1) || - SimplifyDemandedFPClass(I, 1, DemandedElts, DemandedMask, KnownLHS, - Depth + 1)) + if (SimplifyDemandedFPClass(I, 2, DemandedMask, KnownRHS, Depth + 1) || + SimplifyDemandedFPClass(I, 1, DemandedMask, KnownLHS, Depth + 1)) return I; if (KnownLHS.isKnownNever(DemandedMask)) @@ -2321,29 +2302,24 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass( } case Instruction::ExtractElement: { // TODO: Handle demanded element mask - if (SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, Known, - Depth + 1)) + if (SimplifyDemandedFPClass(I, 0, DemandedMask, Known, Depth + 1)) return I; break; } case Instruction::InsertElement: { KnownFPClass KnownInserted, KnownVec; - - if (SimplifyDemandedFPClass(I, 1, DemandedElts, DemandedMask, KnownInserted, - Depth + 1) || - SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, KnownVec, - Depth + 1)) + if (SimplifyDemandedFPClass(I, 1, DemandedMask, KnownInserted, Depth + 1) || + SimplifyDemandedFPClass(I, 0, DemandedMask, KnownVec, Depth + 1)) return I; + // TODO: Use demanded elements logic from computeKnownFPClass Known = KnownVec | KnownInserted; break; } case Instruction::ShuffleVector: { KnownFPClass KnownLHS, KnownRHS; - if (SimplifyDemandedFPClass(I, 1, DemandedElts, DemandedMask, KnownRHS, - Depth + 1) || - SimplifyDemandedFPClass(I, 0, DemandedElts, DemandedMask, KnownLHS, - Depth + 1)) + if (SimplifyDemandedFPClass(I, 1, DemandedMask, KnownRHS, Depth + 1) || + SimplifyDemandedFPClass(I, 0, DemandedMask, KnownLHS, Depth + 1)) return I; // TODO: This is overly conservative and should consider demanded elements, @@ -2352,7 +2328,7 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass( break; } default: - Known = computeKnownFPClass(I, DemandedElts, DemandedMask, CxtI, Depth + 1); + Known = computeKnownFPClass(I, DemandedMask, CxtI, Depth + 1); break; } @@ -2360,13 +2336,12 @@ Value *InstCombinerImpl::SimplifyDemandedUseFPClass( } bool InstCombinerImpl::SimplifyDemandedFPClass(Instruction *I, unsigned OpNo, - const APInt &DemandedElts, FPClassTest DemandedMask, KnownFPClass &Known, unsigned Depth) { Use &U = I->getOperandUse(OpNo); - Value *NewVal = SimplifyDemandedUseFPClass(U.get(), DemandedElts, - DemandedMask, Known, I, Depth); + Value *NewVal = + SimplifyDemandedUseFPClass(U.get(), DemandedMask, Known, I, Depth); if (!NewVal) return false; if (Instruction *OpInst = dyn_cast<Instruction>(U)) _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
