[llvm] [CVP] Refactor `processMinMaxIntrinsic` to use context-sensitive information (PR #82596)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 22 00:26:35 PST 2024
================
@@ -530,15 +530,23 @@ static bool processAbsIntrinsic(IntrinsicInst *II, LazyValueInfo *LVI) {
// See if this min/max intrinsic always picks it's one specific operand.
static bool processMinMaxIntrinsic(MinMaxIntrinsic *MM, LazyValueInfo *LVI) {
CmpInst::Predicate Pred = CmpInst::getNonStrictPredicate(MM->getPredicate());
- LazyValueInfo::Tristate Result = LVI->getPredicateAt(
- Pred, MM->getLHS(), MM->getRHS(), MM, /*UseBlockValue=*/true);
- if (Result == LazyValueInfo::Unknown)
- return false;
-
- ++NumMinMax;
- MM->replaceAllUsesWith(MM->getOperand(!Result));
- MM->eraseFromParent();
- return true;
+ ConstantRange LHS_CR = LVI->getConstantRangeAtUse(MM->getOperandUse(0),
+ /*UndefAllowed*/ true);
----------------
nikic wrote:
Shouldn't this be UndefAllowed=false?
https://github.com/llvm/llvm-project/pull/82596
More information about the llvm-commits
mailing list