[llvm] [LoopVectorize] Enable vectorisation of early exit loops with live-outs (PR #120567)

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Sun Jan 5 11:01:20 PST 2025


================
@@ -3662,6 +3665,13 @@ class VPRegionBlock : public VPBlockBase {
   /// VPRegionBlock.
   VPBlockBase *Exiting;
 
+  /// Hold the Early Exit block of the SEME region, if one exists.
+  VPBasicBlock *EarlyExit;
+
+  /// If one exists, this keeps track of the vector early mask that triggered
+  /// the early exit.
+  VPValue *VectorEarlyExitCond;
+
   /// An indicator whether this region is to generate multiple replicated
----------------
fhahn wrote:

IIUC those are only needed because currently the final values are computed outside VPlan, right?

Could we instead either force a wide IV and extract the desired lane and add the required recipes directly on VPlan-construction?

Or compute the end value for the user directly in VPlan (see #112145 which computes the end values for the resume phis  #112147 which removes `fixupIVUsers`)? 

https://github.com/llvm/llvm-project/pull/120567


More information about the llvm-commits mailing list