[llvm] [SLP][REVEC] Make ShuffleCostEstimator and ShuffleInstructionBuilder can vectorize vector instructions. (PR #99606)
Han-Kuan Chen via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 23 02:28:39 PDT 2024
================
@@ -8800,13 +8815,17 @@ class BoUpSLP::ShuffleCostEstimator : public BaseShuffleAnalysis {
// Shuffle single vector.
ExtraCost += GetValueMinBWAffectedCost(V1);
CommonVF = cast<FixedVectorType>(V1->getType())->getNumElements();
+ if (auto *VecTy = dyn_cast<FixedVectorType>(ScalarTy))
+ CommonVF /= VecTy->getNumElements();
----------------
HanKuanChen wrote:
If `CommonVF` is not large enough, the assert should fail.
```
assert(all_of(Mask,
[=](int Idx) {
return Idx < 2 * static_cast<int>(CommonVF);
}) &&
"All elements in mask must be less than 2 * CommonVF.");
```
https://github.com/llvm/llvm-project/pull/99606
More information about the llvm-commits
mailing list