Skip to content

Commit b6789ee

Browse files
committed
[VPlan] Go through vector for predicated VPReplicateRecipes.
1 parent fad25b7 commit b6789ee

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
@@ -1948,14 +1948,21 @@ static void materializePack(VPlan &Plan) {
19481948
!vputils::isSingleScalar(RepR->getOperand(1)));
19491949
});
19501950
}
1951-
if (all_of(Def->users(),
1952-
[Def](VPUser *U) { return U->usesScalars(Def); }))
1951+
if (all_of(Def->users(), [Def](VPUser *U) {
1952+
auto *R = cast<VPRecipeBase>(U);
1953+
return U->usesScalars(Def) &&
1954+
(!R->getParent()->getParent() ||
1955+
!R->getParent()->getParent()->getParent());
1956+
}))
19531957
continue;
19541958

19551959
auto *Pack = new VPInstruction(VPInstruction::Pack, {Def});
19561960
Pack->insertAfter(Def);
19571961
Def->replaceUsesWithIf(Pack, [Pack, Def](VPUser &U, unsigned) {
1958-
return &U != Pack && !U.usesScalars(Def) &&
1962+
auto *R = cast<VPRecipeBase>(&U);
1963+
return &U != Pack &&
1964+
(!U.usesScalars(Def) ||
1965+
(R->getParent()->getParent() && R->getParent()->getParent())) &&
19591966
(!isa<VPInstruction>(&U) ||
19601967
(cast<VPInstruction>(&U)->getOpcode() !=
19611968
VPInstruction::ExtractLastElement &&

0 commit comments

Comments
 (0)