@@ -8229,20 +8229,8 @@ void LoopVectorizationPlanner::buildVPlansWithVPRecipes(ElementCount MinVF,
8229
8229
for (ElementCount VF = MinVF; ElementCount::isKnownLT (VF, MaxVFTimes2);) {
8230
8230
VFRange SubRange = {VF, MaxVFTimes2};
8231
8231
if (auto Plan = tryToBuildVPlanWithVPRecipes (
8232
- std::unique_ptr<VPlan>(VPlan0->duplicate ()), SubRange, &LVer)) {
8233
- bool HasScalarVF = Plan->hasScalarVFOnly ();
8234
- // Now optimize the initial VPlan.
8235
- if (!HasScalarVF)
8236
- VPlanTransforms::runPass (VPlanTransforms::truncateToMinimalBitwidths,
8237
- *Plan, CM.getMinimalBitwidths ());
8238
- VPlanTransforms::runPass (VPlanTransforms::optimize, *Plan);
8239
- // TODO: try to put it close to addActiveLaneMask().
8240
- if (CM.foldTailWithEVL () && !HasScalarVF)
8241
- VPlanTransforms::runPass (VPlanTransforms::addExplicitVectorLength,
8242
- *Plan, CM.getMaxSafeElements ());
8243
- assert (verifyVPlanIsValid (*Plan) && " VPlan is invalid" );
8232
+ std::unique_ptr<VPlan>(VPlan0->duplicate ()), SubRange, &LVer))
8244
8233
VPlans.push_back (std::move (Plan));
8245
- }
8246
8234
VF = SubRange.End ;
8247
8235
}
8248
8236
}
@@ -8709,6 +8697,12 @@ VPlanPtr LoopVectorizationPlanner::tryToBuildVPlanWithVPRecipes(
8709
8697
WithoutRuntimeCheck);
8710
8698
}
8711
8699
VPlanTransforms::optimizeInductionExitUsers (*Plan, IVEndValues, *PSE.getSE ());
8700
+ VPlanTransforms::runPass (VPlanTransforms::truncateToMinimalBitwidths, *Plan,
8701
+ CM.getMinimalBitwidths ());
8702
+ VPlanTransforms::runPass (VPlanTransforms::optimize, *Plan);
8703
+ if (CM.foldTailWithEVL ())
8704
+ VPlanTransforms::runPass (VPlanTransforms::addExplicitVectorLength, *Plan,
8705
+ CM.getMaxSafeElements ());
8712
8706
8713
8707
assert (verifyVPlanIsValid (*Plan) && " VPlan is invalid" );
8714
8708
return Plan;
0 commit comments