[PATCH] D29449: [SLP] Generalization of vectorization of CmpInst operands, NFC.
Michael Kuperstein via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 2 11:42:09 PST 2017
mkuper added inline comments.
================
Comment at: lib/Transforms/Vectorize/SLPVectorizer.cpp:4806
// Try to vectorize trees that start at compare instructions.
- if (CmpInst *CI = dyn_cast<CmpInst>(it)) {
- if (tryToVectorizePair(CI->getOperand(0), CI->getOperand(1), R)) {
+ if (auto *BI = dyn_cast<BranchInst>(it)) {
+ if (!BI->isConditional())
----------------
The code is not equivalent.
1) A cmp doesn't have to feed a branch. You can have two icmps feeding an or, for instance, with the i1 being used by a branch. Why would we want to avoid vectorizing those? Or do we already fail to vectorize when the icmp feeds anything but a branch?
2) On the flip side, you can have a branch that is fed by an "or (icmp, icmp)", or any other source of i1. I assume this will get filtered out in tryToVectorize() but it'd be good to have a test.
In any case, the comment above needs to be updated.
Repository:
rL LLVM
https://reviews.llvm.org/D29449
More information about the llvm-commits
mailing list