Skip to content

Commit 7f53c1c

Browse files
committed
[VPlan] Go through vector for predicated VPReplicateRecipes.
1 parent af03b31 commit 7f53c1c

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1926,14 +1926,21 @@ static void materializePack(VPlan &Plan) {
19261926
!vputils::isSingleScalar(RepR->getOperand(1)));
19271927
});
19281928
}
1929-
if (all_of(Def->users(),
1930-
[Def](VPUser *U) { return U->usesScalars(Def); }))
1929+
if (all_of(Def->users(), [Def](VPUser *U) {
1930+
auto *R = cast<VPRecipeBase>(U);
1931+
return U->usesScalars(Def) &&
1932+
(!R->getParent()->getParent() ||
1933+
!R->getParent()->getParent()->getParent());
1934+
}))
19311935
continue;
19321936

19331937
auto *Pack = new VPInstruction(VPInstruction::Pack, {Def});
19341938
Pack->insertAfter(Def);
19351939
Def->replaceUsesWithIf(Pack, [Pack, Def](VPUser &U, unsigned) {
1936-
return &U != Pack && !U.usesScalars(Def) &&
1940+
auto *R = cast<VPRecipeBase>(&U);
1941+
return &U != Pack &&
1942+
(!U.usesScalars(Def) ||
1943+
(R->getParent()->getParent() && R->getParent()->getParent())) &&
19371944
(!isa<VPInstruction>(&U) ||
19381945
(cast<VPInstruction>(&U)->getOpcode() !=
19391946
VPInstruction::ExtractLastElement &&

0 commit comments

Comments
 (0)