[llvm] Use (de)interleaving intrinsics for fixed-length vectors (PR #202583)

Matthew Devereau via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 11 08:27:34 PDT 2026


================
@@ -5192,6 +5192,17 @@ unsigned AArch64TTIImpl::getMaxInterleaveFactor(ElementCount VF) const {
   return ST->getMaxInterleaveFactor();
 }
 
+bool AArch64TTIImpl::supportsVectorInterleaveDeinterleaveIntrinsics(
+    unsigned Factor, VectorType *VecTy) const {
+  if (VecTy->isScalableTy()) {
+    assert(Factor <= 8 && "Scalable vector interleave/deinterleave intrinsics "
+                          "only support factors up to 8");
+    return Factor <= 8;
+  }
+  // For Fixed length vectors.
+  return Factor <= 4;
----------------
MDevereau wrote:

We have lowering for fixed factors 6 and 8 on AArch64: https://gcc.godbolt.org/z/88nK1K4f4


```suggestion
  return (Factor <= 4 || Factor == 6 || Factor == 8)
```

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


More information about the llvm-commits mailing list