[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