[llvm] [SLP][REVEC] Support more mask pattern usage in shufflevector. (PR #106212)
Han-Kuan Chen via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 1 09:29:13 PDT 2024
================
@@ -301,15 +300,17 @@ static unsigned getShufflevectorNumGroups(ArrayRef<Value *> VL) {
auto *SV = cast<ShuffleVectorInst>(VL.front());
unsigned SVNumElements =
cast<FixedVectorType>(SV->getOperand(0)->getType())->getNumElements();
- unsigned GroupSize = SVNumElements / SV->getShuffleMask().size();
+ unsigned ShuffleMaskSize = SV->getShuffleMask().size();
+ unsigned GroupSize = SVNumElements / ShuffleMaskSize;
if (GroupSize == 0 || (VL.size() % GroupSize) != 0)
return 0;
unsigned NumGroup = 0;
for (size_t I = 0, E = VL.size(); I != E; I += GroupSize) {
auto *SV = cast<ShuffleVectorInst>(VL[I]);
Value *Src = SV->getOperand(0);
ArrayRef<Value *> Group = VL.slice(I, GroupSize);
- SmallVector<int> ExtractionIndex(SVNumElements);
+ SmallVector<int> ExpectedIndex(
+ createStrideMask(0, ShuffleMaskSize, GroupSize));
----------------
HanKuanChen wrote:
Fixed.
https://github.com/llvm/llvm-project/pull/106212
More information about the llvm-commits
mailing list