[llvm] [LV][AArch64]: Utilise SVE ld4/st4 instructions via auto-vectorisation (PR #89018)

Mel Chen via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 17 03:41:34 PDT 2024


================
@@ -2519,7 +2533,7 @@ void InnerLoopVectorizer::vectorizeInterleaveGroup(
                              unsigned Part, Value *MaskForGaps) -> Value * {
     if (VF.isScalable()) {
       assert(!MaskForGaps && "Interleaved groups with gaps are not supported.");
-      assert(InterleaveFactor == 2 &&
+      assert(isPowerOf2_32(InterleaveFactor)  &&
              "Unsupported deinterleave factor for scalable vectors");
       auto *BlockInMaskPart = State.get(BlockInMask, Part);
       SmallVector<Value *, 2> Ops = {BlockInMaskPart, BlockInMaskPart};
----------------
Mel-Chen wrote:

The mask of masked interleaved accesses also requires an interleave tree to generate the correct mask.

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


More information about the llvm-commits mailing list