File tree 1 file changed +5
-3
lines changed
llvm/lib/Transforms/Vectorize 1 file changed +5
-3
lines changed Original file line number Diff line number Diff line change @@ -1089,19 +1089,21 @@ static void narrowToSingleScalarRecipes(VPlan &Plan) {
1089
1089
if (Plan.hasScalarVFOnly ())
1090
1090
return ;
1091
1091
1092
+ // Try to narrow wide and replicating recipes to single scalar recipes,
1093
+ // based on VPlan analysis. Only process blocks in the loop region for now,
1094
+ // without traversing into nested regions, as recipes in replicate regions
1095
+ // cannot be converted yet.
1092
1096
for (VPBasicBlock *VPBB : VPBlockUtils::blocksOnly<VPBasicBlock>(
1093
1097
vp_depth_first_shallow (Plan.getVectorLoopRegion ()->getEntry ()))) {
1094
1098
for (VPRecipeBase &R : make_early_inc_range (reverse (*VPBB))) {
1095
- // Try to narrow wide and replicating recipes to single scalar recipes,
1096
- // based on VPlan analysis.
1097
1099
auto *RepR = dyn_cast<VPReplicateRecipe>(&R);
1098
1100
if (!RepR && !isa<VPWidenRecipe>(&R))
1099
1101
continue ;
1100
1102
if (RepR && RepR->isSingleScalar ())
1101
1103
continue ;
1102
1104
1103
1105
auto *RepOrWidenR = cast<VPSingleDefRecipe>(&R);
1104
- // Skip recipes that aren't single scalars and don't have only their
1106
+ // Skip recipes that aren't single scalars or don't have only their
1105
1107
// scalar results used. In the latter case, we would introduce extra
1106
1108
// broadcasts.
1107
1109
if (!vputils::isSingleScalar (RepOrWidenR) ||
You can’t perform that action at this time.
0 commit comments