[llvm] [SLP]Prefer segmented/deinterleaved loads to strided and fix codegen (PR #135058)

Alexey Bataev via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 15 07:02:21 PDT 2025


================
@@ -17618,8 +17617,27 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
             MaskValues = replicateMask(MaskValues, VecTy->getNumElements());
           }
           Constant *MaskValue = ConstantVector::get(MaskValues);
-          NewLI = Builder.CreateMaskedLoad(LoadVecTy, PO, CommonAlignment,
-                                           MaskValue);
+          if (InterleaveFactor &&
+              TTI->hasActiveVectorLength(Instruction::Load, LoadVecTy,
+                                         CommonAlignment)) {
+            // FIXME: codegen currently recognizes only vp.load, not
+            // masked.load, as segmented (deinterleaved) loads.
----------------
alexey-bataev wrote:

All codegen. Actually, even vp.load is not supported yet, that's why the patch is not landed yet, waiting for the proper support.

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


More information about the llvm-commits mailing list