[llvm] [LoopVectorize] Enhance Vectorization decisions for predicate tail-folded loops with low trip counts (PR #69588)
David Sherwood via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 20 06:52:17 PDT 2023
================
@@ -9816,11 +9817,13 @@ static bool areRuntimeChecksProfitable(GeneratedRTChecks &Checks,
// RtC < ScalarC * TC * (1 / X) ==> RtC * X / ScalarC < TC
double MinTC2 = RtC * 10 / ScalarC;
- // Now pick the larger minimum. If it is not a multiple of VF, choose the
- // next closest multiple of VF. This should partly compensate for ignoring
- // the epilogue cost.
+ // Now pick the larger minimum. If it is not a multiple of VF and a scalar
+ // epilogue is allowed, choose the next closest multiple of VF. This should
+ // partly compensate for ignoring the epilogue cost.
uint64_t MinTC = std::ceil(std::max(MinTC1, MinTC2));
- VF.MinProfitableTripCount = ElementCount::getFixed(alignTo(MinTC, IntVF));
+ if (SEL == CM_ScalarEpilogueAllowed)
----------------
david-arm wrote:
Can you just put an assert here for the CM_ScalarEpilogueAllowed case and see which tests fail? Then you can just make a copy of the test and adapt it to use PGO data for the trip count information and compile it with tail-folding enabled?
https://github.com/llvm/llvm-project/pull/69588
More information about the llvm-commits
mailing list