[llvm] [VPlan] Optimize more IV increment exit users by using a map (PR #147016)
Shih-Po Hung via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 4 15:47:20 PDT 2025
================
@@ -8887,15 +8887,18 @@ VPlanPtr LoopVectorizationPlanner::tryToBuildVPlanWithVPRecipes(
// Update wide induction increments to use the same step as the corresponding
// wide induction. This enables detecting induction increments directly in
// VPlan and removes redundant splats.
+ DenseMap<VPValue *, VPWidenInductionRecipe *> MapIVs;
for (const auto &[Phi, ID] : Legal->getInductionVars()) {
auto *IVInc = cast<Instruction>(
Phi->getIncomingValueForBlock(OrigLoop->getLoopLatch()));
- if (IVInc->getOperand(0) != Phi || IVInc->getOpcode() != Instruction::Add)
- continue;
VPWidenInductionRecipe *WideIV =
cast<VPWidenInductionRecipe>(RecipeBuilder.getRecipe(Phi));
- VPRecipeBase *R = RecipeBuilder.getRecipe(IVInc);
- R->setOperand(1, WideIV->getStepValue());
+ VPValue *V = RecipeBuilder.getVPValueOrAddLiveIn(IVInc);
+ if (!dyn_cast<PHINode>(IVInc))
----------------
arcbbb wrote:
Fixed. Thanks!
https://github.com/llvm/llvm-project/pull/147016
More information about the llvm-commits
mailing list