[llvm] [LoopVectorize] Enable shuffle padding for masked interleaved accesses (PR #75329)

via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 14 17:06:38 PST 2023


================
@@ -2672,6 +2707,24 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
              "Fail to get a member from an interleaved store group");
       Instruction *Member = Group->getMember(i);
 
+      if (!Member && MatchedLoad) {
+        // %wide.vec = load <12 x float>; 0,1,2,3,...,11
+        // %shuffle1 = shuffle %wide.vec, poison, <0, 3, 6, 9> ; 0,3,6,9
+        // %shuffle2 = shuffle %wide.vec, poison, <1, 4, 7, 10> ; 1,4,7,10
+        // %padded = shuffle %wide.vec, poison, <2, 5, 8, 11> ; 2,5,8,11
+        //
+        // %concate1 = shuffle %op1, %op2, <0, 1, ..., 7> ; 0,3,6,9,1,4,7,10
----------------
huhu233 wrote:

My apologies... Thanks for the reminder!

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


More information about the llvm-commits mailing list