[llvm] [LV] Create block in mask up-front if needed. (PR #76635)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 9 02:07:11 PST 2024
================
@@ -8758,13 +8762,20 @@ LoopVectorizationPlanner::tryToBuildVPlanWithVPRecipes(VFRange &Range) {
DFS.perform(LI);
VPBasicBlock *VPBB = HeaderVPBB;
+ bool NeedsMasks = CM.foldTailByMasking() ||
+ any_of(OrigLoop->blocks(), [this](BasicBlock *BB) {
+ return Legal->blockNeedsPredication(BB);
+ });
for (BasicBlock *BB : make_range(DFS.beginRPO(), DFS.endRPO())) {
// Relevant instructions from basic block BB will be grouped into VPRecipe
// ingredients and fill a new VPBasicBlock.
if (VPBB != HeaderVPBB)
VPBB->setName(BB->getName());
Builder.setInsertPoint(VPBB);
+ if (VPBB != HeaderVPBB && NeedsMasks)
+ RecipeBuilder.createBlockInMask(BB, *Plan);
+
----------------
fhahn wrote:
Adjusted, thanks!
https://github.com/llvm/llvm-project/pull/76635
More information about the llvm-commits
mailing list