[llvm] [SLP][REVEC] Fix CompressVectorize does not expand mask when REVEC is enabled. (PR #135174)

Alexey Bataev via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 10 06:38:02 PDT 2025


================
@@ -17610,6 +17610,18 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
               ConstantInt::getFalse(VecTy->getContext()));
           for (int I : CompressMask)
             MaskValues[I] = ConstantInt::getTrue(VecTy->getContext());
+          if (auto *VecTy = dyn_cast<FixedVectorType>(LI->getType())) {
+            assert(SLPReVec && "Only supported by REVEC.");
+            unsigned VecTyNumElements = VecTy->getNumElements();
+            SmallVector<Constant *> NewMaskValues(
+                MaskValues.size() * VecTyNumElements,
+                ConstantInt::getFalse(VecTy->getContext()));
+            for (auto [I, V] : enumerate(MaskValues))
+              if (V->isOneValue())
+                std::fill_n(NewMaskValues.begin() + I * VecTyNumElements,
+                            VecTyNumElements, V);
+            MaskValues.swap(NewMaskValues);
+          }
----------------
alexey-bataev wrote:

Extract to a function?

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


More information about the llvm-commits mailing list