[llvm] [LV, VP]VP intrinsics support for the Loop Vectorizer + adding new tail-folding mode using EVL. (PR #76172)

via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 7 14:07:57 PST 2024


================
@@ -242,6 +242,12 @@ struct VPTransformState {
   ElementCount VF;
   unsigned UF;
 
+  /// If EVL is not nullptr, then EVL must be a valid value set during plan
+  /// transformation, possibly a default value = whole vector register length.
+  /// EVL is created only if TTI prefers predicated vectorization, thus if EVL
+  /// is not nullptr it also implies preference for predicated vectorization.
+  VPValue *EVL = nullptr;
----------------
ayalz wrote:

VPValues should be held by VPBlocks (recipes) or by VPlan (live-ins), rather than by VPTransformState. That makes them visible as part of VPlan, rather than part of its execution. Some VPValues should be associated with loop VPRegions, as in the case of the canonical IV recipe / VPValue, and possibly EVL?

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


More information about the llvm-commits mailing list