From d8b471db283b534b0aec4b1f762227b38dc3b7c0 Mon Sep 17 00:00:00 2001 From: Han-Kuan Chen Date: Mon, 22 Jul 2024 00:26:58 -0700 Subject: [PATCH] [SLP] NFC. ShuffleInstructionBuilder::add V1->getType() is always a FixedVectorType. castToScalarTyElem has a cast(V->getType()). --- llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index d8c3bae06e932..47db2c7b29262 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -12042,6 +12042,9 @@ class BoUpSLP::ShuffleInstructionBuilder final : public BaseShuffleAnalysis { /// Adds 2 input vectors and the mask for their shuffling. void add(Value *V1, Value *V2, ArrayRef Mask) { assert(V1 && V2 && !Mask.empty() && "Expected non-empty input vectors."); + assert(isa(V1->getType()) && + isa(V2->getType()) && + "castToScalarTyElem expects V1 and V2 to be FixedVectorType"); V1 = castToScalarTyElem(V1); V2 = castToScalarTyElem(V2); if (InVectors.empty()) { @@ -12071,13 +12074,10 @@ class BoUpSLP::ShuffleInstructionBuilder final : public BaseShuffleAnalysis { } /// Adds another one input vector and the mask for the shuffling. void add(Value *V1, ArrayRef Mask, bool = false) { + assert(isa(V1->getType()) && + "castToScalarTyElem expects V1 to be FixedVectorType"); V1 = castToScalarTyElem(V1); if (InVectors.empty()) { - if (!isa(V1->getType())) { - V1 = createShuffle(V1, nullptr, CommonMask); - CommonMask.assign(Mask.size(), PoisonMaskElem); - transformMaskAfterShuffle(CommonMask, Mask); - } InVectors.push_back(V1); CommonMask.assign(Mask.begin(), Mask.end()); return; @@ -12085,8 +12085,7 @@ class BoUpSLP::ShuffleInstructionBuilder final : public BaseShuffleAnalysis { const auto *It = find(InVectors, V1); if (It == InVectors.end()) { if (InVectors.size() == 2 || - InVectors.front()->getType() != V1->getType() || - !isa(V1->getType())) { + InVectors.front()->getType() != V1->getType()) { Value *V = InVectors.front(); if (InVectors.size() == 2) { V = createShuffle(InVectors.front(), InVectors.back(), CommonMask); @@ -12120,9 +12119,7 @@ class BoUpSLP::ShuffleInstructionBuilder final : public BaseShuffleAnalysis { break; } } - int VF = CommonMask.size(); - if (auto *FTy = dyn_cast(V1->getType())) - VF = FTy->getNumElements(); + int VF = cast(V1->getType())->getNumElements(); for (unsigned Idx = 0, Sz = CommonMask.size(); Idx < Sz; ++Idx) if (Mask[Idx] != PoisonMaskElem && CommonMask[Idx] == PoisonMaskElem) CommonMask[Idx] = Mask[Idx] + (It == InVectors.begin() ? 0 : VF);