[llvm] [VPlan] Move initial skeleton construction earlier (NFC). (PR #150848)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 3 09:27:10 PDT 2025
================
@@ -8615,22 +8625,14 @@ VPlanPtr LoopVectorizationPlanner::tryToBuildVPlanWithVPRecipes(
// visit each basic block after having visited its predecessor basic blocks.
// ---------------------------------------------------------------------------
- // Create initial VPlan skeleton, having a basic block for the pre-header
- // which contains SCEV expansions that need to happen before the CFG is
- // modified; a basic block for the vector pre-header, followed by a region for
- // the vector loop, followed by the middle basic block. The skeleton vector
- // loop region contains a header and latch basic blocks.
-
bool RequiresScalarEpilogueCheck =
LoopVectorizationPlanner::getDecisionAndClampRange(
[this](ElementCount VF) {
return !CM.requiresScalarEpilogue(VF.isVector());
},
Range);
- VPlanTransforms::prepareForVectorization(
- *Plan, Legal->getWidestInductionType(), PSE, RequiresScalarEpilogueCheck,
- CM.foldTailByMasking(), OrigLoop,
- getDebugLocFromInstOrOperands(Legal->getPrimaryInduction()),
+ VPlanTransforms::handleEarlyExitsAndAddMiddleCheck(
+ *Plan, RequiresScalarEpilogueCheck, CM.foldTailByMasking(),
----------------
ayalz wrote:
Potential follow-up: would be good to complete the common skeleton with a canonical representation of early exits and middle check, to be specialized per each VF range according to its RequiresScalarEpilogueCheck (fold tail is currently also common?).
https://github.com/llvm/llvm-project/pull/150848
More information about the llvm-commits
mailing list