[llvm] [VPlan] Simplify live-ins early using SCEV. (PR #155304)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 11 08:13:44 PDT 2025
================
@@ -7969,32 +7969,8 @@ VPWidenRecipe *VPRecipeBuilder::tryToWiden(Instruction *I,
case Instruction::Shl:
case Instruction::Sub:
case Instruction::Xor:
- case Instruction::Freeze: {
- SmallVector<VPValue *> NewOps(Operands);
- if (Instruction::isBinaryOp(I->getOpcode())) {
- // The legacy cost model uses SCEV to check if some of the operands are
- // constants. To match the legacy cost model's behavior, use SCEV to try
- // to replace operands with constants.
- ScalarEvolution &SE = *PSE.getSE();
- auto GetConstantViaSCEV = [this, &SE](VPValue *Op) {
- if (!Op->isLiveIn())
- return Op;
- Value *V = Op->getUnderlyingValue();
- if (isa<Constant>(V) || !SE.isSCEVable(V->getType()))
- return Op;
- auto *C = dyn_cast<SCEVConstant>(SE.getSCEV(V));
- if (!C)
- return Op;
- return Plan.getOrAddLiveIn(C->getValue());
- };
- // For Mul, the legacy cost model checks both operands.
- if (I->getOpcode() == Instruction::Mul)
- NewOps[0] = GetConstantViaSCEV(NewOps[0]);
----------------
fhahn wrote:
I couldn't find any in my testing
https://github.com/llvm/llvm-project/pull/155304
More information about the llvm-commits
mailing list