[PATCH] D97378: [VPlan] Support to vectorize inner loops with VPlan native path enabled
Florian Hahn via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 25 02:55:15 PST 2021
fhahn added inline comments.
================
Comment at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:4443
PHINode *P = cast<PHINode>(PN);
- if (EnableVPlanNativePath) {
- // Currently we enter here in the VPlan-native path for non-induction
- // PHIs where all control flow is uniform. We simply widen these PHIs.
+ if (EnableVPlanNativePath && !OrigLoop->isInnermost()) {
+ // We enter here in the VPlan-native path and when the loop is not the
----------------
I think we should probably have a `UseVPlanNativePath` variable in `ILV`, which is true if `EnableVPlanNativePath && !OrigLoop->isInnerMost()` and replace all checks of `EnableVPlanNativePath` with checking `UseVPlanNativePath`.
================
Comment at: llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:5184
if (isa<LoadInst>(I) && Legal->isUniformMemOp(*I)) {
- assert(WideningDecision == CM_Scalarize);
+ assert(WideningDecision == CM_Scalarize ||
+ WideningDecision == CM_GatherScatter);
----------------
Why is this needed? If we handle inner loops with the regular ILV even in the VPlanNativePath, the assert should not change I think. Is it possible that we need to update other parts to set the right decision for ILV in VPlanNativePath?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D97378/new/
https://reviews.llvm.org/D97378
More information about the llvm-commits
mailing list