[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