[llvm] [LoopVectorize] Improve Vectorization of Small Loops (PR #195823)
Jack Styles via llvm-commits
llvm-commits at lists.llvm.org
Tue May 5 08:47:56 PDT 2026
================
@@ -3023,9 +3033,37 @@ LoopVectorizationCostModel::computeMaxVF(ElementCount UserVF, unsigned UserIC) {
NoScalarEpilogueNeeded(MaxFactors.FixedVF.getFixedValue())) {
LLVM_DEBUG(dbgs() << "LV: Picking a fixed-width so that no tail will "
"remain for any chosen VF.\n");
- MaxFactors.ScalableVF = ElementCount::getScalable(0);
+ ApplyVectorWidth(MaxFactors, MaxFactors.FixedVF.getFixedValue(), 0);
return MaxFactors;
}
+ // Allow cases where the ExactTC == VF + 1. VF can be any power of
+ // 2 between 2 and MaxVF.
+ //
+ // This produces 1 vector iteration, and 1 scalar iteration with
+ // no remainder. Later passes will eliminate the loop and leave
+ // straight-line code as the both iteration counts are statically known.
+ ElementCount ExactTC = getSmallConstantTripCount(PSE.getSE(), TheLoop);
+ if (EpilogueLoweringStatus == CM_EpilogueNotAllowedLowTripLoop &&
+ ExactTC && ExactTC.isFixed()) {
----------------
Stylie777 wrote:
If ExpectedTC is fixed, then ExactTC will also be fixed. I've changed this to just check ExactTC.isFixed()
https://github.com/llvm/llvm-project/pull/195823
More information about the llvm-commits
mailing list