[PATCH] D103153: [InstCombine] Add fold for extracting known elements from a stepvector
Jay Foad via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed May 26 04:14:24 PDT 2021
foad added inline comments.
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp:351
+ if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(SrcVec)) {
+ if (Intrinsic::ID IID = II->getIntrinsicID()) {
+ switch (IID) {
----------------
You don't need this "if".
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp:354
+ case Intrinsic::experimental_stepvector:
+ if (IndexC->getZExtValue() <= NumElts) {
+ auto *Idx = ConstantInt::get(
----------------
foad wrote:
> Should be "<" not "<=", surely?
`IndexC->getValue().ult(NumElts)` seems safer, since getZExtValue can truncate wide values.
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp:356
+ auto *Idx = ConstantInt::get(
+ cast<VectorType>(EI.getVectorOperandType())->getScalarType(),
+ IndexC->getZExtValue());
----------------
Don't need the case to VectorType since getScalarType is defined on Type.
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp:357
+ cast<VectorType>(EI.getVectorOperandType())->getScalarType(),
+ IndexC->getZExtValue());
+ return replaceInstUsesWith(EI, Idx);
----------------
Just use getValue here.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D103153/new/
https://reviews.llvm.org/D103153
More information about the llvm-commits
mailing list