[llvm] [LoopVectorize] Enable shuffle padding for masked interleaved accesses (PR #75329)
Kolya Panchenko via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 14 07:56:57 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
----------------
nikolaypanchenko wrote:
should `op1` be `shuffle1` and `op2` be `shuffle2` ?
https://github.com/llvm/llvm-project/pull/75329
More information about the llvm-commits
mailing list