[llvm] [VPlan] Dissolve replicate regions with vector live-outs. (PR #189022)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 27 03:56:28 PDT 2026
================
@@ -817,18 +896,17 @@ static void replicateReplicateRegionsByVF(VPlan &Plan, ElementCount VF,
SmallVector<VPRegionBlock *> ReplicateRegions;
for (VPRegionBlock *Region : VPBlockUtils::blocksOnly<VPRegionBlock>(
vp_depth_first_shallow(Plan.getVectorLoopRegion()->getEntry()))) {
- // Skip regions with live-outs when vectorizing as packing scalar results
- // back into vectors is not yet implemented.
- if (Region->isReplicator() &&
- (VF.isScalar() || Region->getExitingBasicBlock()->empty()))
+ if (Region->isReplicator())
ReplicateRegions.push_back(Region);
}
assert((ReplicateRegions.empty() || !VF.isScalable()) &&
"cannot replicate across scalable VFs");
// Dissolve replicate regions by replicating their blocks for each lane.
- for (VPRegionBlock *Region : ReplicateRegions)
+ // Traversing in regions in reverse ensures that the successor of every region
----------------
fhahn wrote:
Fixed thanks
https://github.com/llvm/llvm-project/pull/189022
More information about the llvm-commits
mailing list