[llvm] [RISCV] Enabled masked interleaved access (PR #149981)

Luke Lau via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 23 02:20:14 PDT 2025


================
@@ -1358,7 +1358,9 @@ class LoopVectorizationCostModel {
       return;
     // Override forced styles if needed.
     // FIXME: Investigate opportunity for fixed vector factor.
+    // FIXME: Support interleave accesses.
     bool EVLIsLegal = UserIC <= 1 && IsScalableVF &&
+                      !InterleaveInfo.hasGroups() &&
----------------
lukel97 wrote:

I think you're right. This looks like an underlying issue with mixing the header masks and EVL based IV. 

I think we need to convert the header masks from `icmp ule wide-canonical-iv, backedge-tc` to `icmp ult step-vector, EVL`. 

Because on the second-to-last iteration the original header mask isn't going to take into account the possible truncation. 

So on the first iteration, it should really be:

[0, 1, 2, 3] < 3 = [T, T, T, F]

And on the second iteration

[0, 1, 2, 3] < 2 = [T, T, F, F].

I'll create an issue for this, this is a good find.

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


More information about the llvm-commits mailing list