[llvm-branch-commits] [llvm] c29b311 - Revert "[InstCombine] Support DemandElts in SimplifyDemandedFPClass (#174176)"
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Jan 2 12:52:27 PST 2026
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))
More information about the llvm-branch-commits
mailing list