[PATCH] D77973: [VPlan] Move widening check for non-memory/non-calls to function (NFC).
Ayal Zaks via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 14 08:00:05 PDT 2020
Ayal added inline comments.
================
Comment at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:6940
+bool VPRecipeBuilder::shouldWiden(Instruction *I, VFRange &Range) const {
+ assert(!isa<PHINode>(I) && "PHIs should have been handled earlier");
+ // Instruction should be widened, unless it is scalar after vectorization,
----------------
fhahn wrote:
> Ayal wrote:
> > Retain the !isa<Call, Load, Store> alongside !isa<PHI>?
> > To avoid using this method for such opcodes, as their widening decision is more complex.
> I've brought it back, but with the new code structure, it also required adding an early exit for calls, loads & stores, but I think that makes sense. What do you think?
Ahh, right. Perhaps better to early-exit here:
```
// Calls and memory instructions that were not widened earlier should be scalarized.
if (isa<CallInst>(Instr) || isa<LoadInst>(Instr) || isa<StoreInst>(Instr))
return false;
assert(!isa<PHINode>(I) && ...);
```
================
Comment at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:6969
case Instruction::BitCast:
case Instruction::Br:
case Instruction::FAdd:
----------------
fhahn wrote:
> Ayal wrote:
> > Branches should also find their way out of IsVectorizableOpcode and into an assert; no recipes are created for them.
> Will submit as a follow-up commit once this one lands.
Sure.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77973/new/
https://reviews.llvm.org/D77973
More information about the llvm-commits
mailing list