[PATCH] D106163: [SVE] Fix casts to <FixedVectorType> in truncateToMinimalBitwidths
Kerry McLaughlin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 16 09:28:13 PDT 2021
kmclaughlin created this revision.
kmclaughlin added reviewers: sdesmalen, david-arm, efriedma, DylanFleming-arm.
Herald added subscribers: psnobl, hiraditya, kristof.beyls, tschuett.
kmclaughlin requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Fixes more casts to `<FixedVectorType>` for the cases where the
instruction is a Insert/ExtractElementInst.
For fixed-width, this part of truncateToMinimalBitWidths is tested by
//AArch64/type-shrinkage-insertelt.ll//. I attempted to write a test case for this part
of truncateToMinimalBitWidths which uses scalable vectors, but was unable to add
one. The tests in //type-shrinkage-insertelt.ll// rely on scalarization to create extract
element instructions for instance, which is not possible for scalable vectors.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D106163
Files:
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
Index: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
===================================================================
--- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -4049,19 +4049,19 @@
// Don't do anything with the operands, just extend the result.
continue;
} else if (auto *IE = dyn_cast<InsertElementInst>(I)) {
- auto Elements = cast<FixedVectorType>(IE->getOperand(0)->getType())
- ->getNumElements();
+ auto Elements = cast<VectorType>(IE->getOperand(0)->getType())
+ ->getElementCount();
auto *O0 = B.CreateZExtOrTrunc(
IE->getOperand(0),
- FixedVectorType::get(ScalarTruncatedTy, Elements));
+ VectorType::get(ScalarTruncatedTy, Elements));
auto *O1 = B.CreateZExtOrTrunc(IE->getOperand(1), ScalarTruncatedTy);
NewI = B.CreateInsertElement(O0, O1, IE->getOperand(2));
} else if (auto *EE = dyn_cast<ExtractElementInst>(I)) {
- auto Elements = cast<FixedVectorType>(EE->getOperand(0)->getType())
- ->getNumElements();
+ auto Elements = cast<VectorType>(EE->getOperand(0)->getType())
+ ->getElementCount();
auto *O0 = B.CreateZExtOrTrunc(
EE->getOperand(0),
- FixedVectorType::get(ScalarTruncatedTy, Elements));
+ VectorType::get(ScalarTruncatedTy, Elements));
NewI = B.CreateExtractElement(O0, EE->getOperand(2));
} else {
// If we don't know what to do, be conservative and don't do anything.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106163.359359.patch
Type: text/x-patch
Size: 1666 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210716/ab221955/attachment.bin>
More information about the llvm-commits
mailing list