[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