[llvm] [LV] Allow scalable epilogue VFs matching the MainLoop VF (PR #208686)
Sander de Smalen via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 13 02:36:07 PDT 2026
================
@@ -3592,14 +3592,11 @@ std::unique_ptr<VPlan> LoopVectorizationPlanner::selectBestEpiloguePlan(
VPlan &CurrentPlan = getPlanFor(NextVF.Width);
ElementCount EffectiveVF = GetEffectiveVF(CurrentPlan, NextVF.Width);
- // Skip candidate VFs with widths >= the (estimated) runtime VF (scalable
- // vectors) or > the VF of the main loop (fixed vectors).
+ // Skip fixed vector VFs > to the estimated runtime VF, or any VF > than
+ // the VF of the main loop.
if ((!EffectiveVF.isScalable() && MainLoopVF.isScalable() &&
- ElementCount::isKnownGE(EffectiveVF, EstimatedRuntimeVF)) ||
- (EffectiveVF.isScalable() &&
- ElementCount::isKnownGE(EffectiveVF, MainLoopVF)) ||
- (!EffectiveVF.isScalable() && !MainLoopVF.isScalable() &&
- ElementCount::isKnownGT(EffectiveVF, MainLoopVF)))
+ ElementCount::isKnownGT(EffectiveVF, EstimatedRuntimeVF)) ||
+ ElementCount::isKnownGT(EffectiveVF, MainLoopVF))
----------------
sdesmalen-arm wrote:
This can be simplified to:
```
if (ElementCount::isKnownGT(EffectiveVF, EstimatedRuntimeVF))
continue;
```
because if `MainLoopVF` is not scalable, `EstimatedRuntimeVF == MainLoopVF`.
https://github.com/llvm/llvm-project/pull/208686
More information about the llvm-commits
mailing list