[llvm] [SLP][REVEC] Make ShuffleCostEstimator and ShuffleInstructionBuilder support vector instructions. (PR #99499)
Alexey Bataev via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 6 06:33:22 PDT 2024
================
@@ -14061,7 +14061,17 @@ Value *BoUpSLP::vectorizeTree(
CloneGEP->takeName(GEP);
Ex = CloneGEP;
} else {
- Ex = Builder.CreateExtractElement(Vec, Lane);
+ if (auto *VecTy = dyn_cast<FixedVectorType>(Scalar->getType())) {
+ unsigned VecTyNumElements = VecTy->getNumElements();
+ // When REVEC is enabled, we need to extract a vector.
+ // Note: The element size of Scalar may be different from the
+ // element size of Vec.
+ Ex = Builder.CreateExtractVector(
+ FixedVectorType::get(Vec->getType()->getScalarType(),
+ VecTyNumElements),
+ Vec, Builder.getInt64(ExternalUse.Lane * VecTyNumElements));
+ } else
+ Ex = Builder.CreateExtractElement(Vec, Lane);
----------------
alexey-bataev wrote:
Enclose in braces
https://github.com/llvm/llvm-project/pull/99499
More information about the llvm-commits
mailing list