[llvm] [InterleavedAccess] Construct interleaved access store with shuffles (PR #164000)

via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 22 08:08:36 PDT 2025


================
@@ -18023,11 +18024,17 @@ bool AArch64TargetLowering::lowerInterleavedStore(Instruction *Store,
                                                   unsigned Factor,
                                                   const APInt &GapMask) const {
 
-  assert(Factor >= 2 && Factor <= getMaxSupportedInterleaveFactor() &&
-         "Invalid interleave factor");
   auto *SI = dyn_cast<StoreInst>(Store);
   if (!SI)
     return false;
+
+  if (isProfitableToInterleaveWithGatherScatter() &&
+      Factor > getMaxSupportedInterleaveFactor())
+    return lowerInterleavedStoreWithShuffle(SI, SVI, Factor);
+
+  assert(Factor >= 2 && Factor <= getMaxSupportedInterleaveFactor() &&
+         "Invalid interleave factor");
----------------
ram-NK wrote:

Some cases may return false by isProfitableToInterleaveWithGatherScatter(). For those cases, I kept those assertion. 

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


More information about the llvm-commits mailing list