[llvm] [VPlan] Run narrowInterleaveGroups during general VPlan optimizations. (PR #149706)

via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 23 09:51:23 PDT 2025


================
@@ -4047,14 +4049,14 @@ static bool canNarrowLoad(VPWidenRecipe *WideMember0, unsigned OpIdx,
   return false;
 }
 
-/// Returns true if \p IR is a full interleave group with factor and number of
-/// members both equal to \p VF. The interleave group must also access the full
-/// vector width \p VectorRegWidth.
-static bool isConsecutiveInterleaveGroup(VPInterleaveRecipe *InterleaveR,
-                                         unsigned VF, VPTypeAnalysis &TypeInfo,
-                                         unsigned VectorRegWidth) {
+/// Returns VF from \p VFs if \p IR is a full interleave group with factor and
+/// number of members both equal to VF. The interleave group must also access
+/// the full vector width.
+static std::optional<ElementCount> isConsecutiveInterleaveGroup(
+    VPInterleaveRecipe *InterleaveR, ArrayRef<ElementCount> VFs,
----------------
ayalz wrote:

isConsecutiveInterleaveGroup() is extended from accepting a single, **fixed** unsigned `VF` to working with an ArrayRef of `VFs` - which can now also be scalable? No, scalable VF's are already supported. The confusion stemmed from naming the unsigned parameter of `isConsecutiveInterleaveGroup()` "VF", instead of "VFMinVal".

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


More information about the llvm-commits mailing list