[PATCH] D71047: [LV] Keep dominator tree up to date during vectorization.

Evgeniy via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 4 21:51:25 PST 2019


ebrevnov created this revision.
Herald added subscribers: llvm-commits, rogfer01, rkruppe, javed.absar, hiraditya.
Herald added a project: LLVM.

Main motivation for this change is next patch where I'm going to enable vectorization of short trip count loops with run-time checks. The idea is to first generate run-time checks and do second round of cost modeling as part of code generation. That means we may generate vector skeleton and skip generation of vector body. Unfortunately, current way of updating DT is not consistent and doesn't allow to simply skip part of code generation.

Moreover there is existing TODO in the code for this:

- // FIXME: After creating the structure of the new loop, the dominator tree is
- //        no longer up-to-date, and it remains that way until we update it
- //        here. An out-of-date dominator tree is problematic for SCEV,
- //        because SCEVExpander uses it to guide code generation. The
- //        vectorizer use SCEVExpanders in several places. Instead, we should
- //        keep the dominator tree up-to-date as we go.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D71047

Files:
  llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
  llvm/lib/Transforms/Vectorize/VPlan.cpp
  llvm/lib/Transforms/Vectorize/VPlan.h
  llvm/test/Transforms/LoopVectorize/AArch64/aarch64-predication.ll
  llvm/test/Transforms/LoopVectorize/AArch64/pr36032.ll
  llvm/test/Transforms/LoopVectorize/ARM/sphinx.ll
  llvm/test/Transforms/LoopVectorize/X86/consecutive-ptr-uniforms.ll
  llvm/test/Transforms/LoopVectorize/X86/constant-fold.ll
  llvm/test/Transforms/LoopVectorize/X86/cost-model-assert.ll
  llvm/test/Transforms/LoopVectorize/X86/float-induction-x86.ll
  llvm/test/Transforms/LoopVectorize/X86/gather_scatter.ll
  llvm/test/Transforms/LoopVectorize/X86/illegal-parallel-loop-uniform-write.ll
  llvm/test/Transforms/LoopVectorize/X86/imprecise-through-phis.ll
  llvm/test/Transforms/LoopVectorize/X86/invariant-load-gather.ll
  llvm/test/Transforms/LoopVectorize/X86/invariant-store-vectorization.ll
  llvm/test/Transforms/LoopVectorize/X86/load-deref-pred.ll
  llvm/test/Transforms/LoopVectorize/X86/masked_load_store.ll
  llvm/test/Transforms/LoopVectorize/X86/metadata-enable.ll
  llvm/test/Transforms/LoopVectorize/X86/optsize.ll
  llvm/test/Transforms/LoopVectorize/X86/pr23997.ll
  llvm/test/Transforms/LoopVectorize/X86/pr35432.ll
  llvm/test/Transforms/LoopVectorize/X86/pr42674.ll
  llvm/test/Transforms/LoopVectorize/X86/reduction-crash.ll
  llvm/test/Transforms/LoopVectorize/X86/small-size.ll
  llvm/test/Transforms/LoopVectorize/X86/vect.omp.force.small-tc.ll
  llvm/test/Transforms/LoopVectorize/X86/x86-interleaved-accesses-masked-group.ll
  llvm/test/Transforms/LoopVectorize/debugloc.ll
  llvm/test/Transforms/LoopVectorize/first-order-recurrence.ll
  llvm/test/Transforms/LoopVectorize/float-minmax-instruction-flag.ll
  llvm/test/Transforms/LoopVectorize/if-conversion-nest.ll
  llvm/test/Transforms/LoopVectorize/if-pred-stores.ll
  llvm/test/Transforms/LoopVectorize/induction.ll
  llvm/test/Transforms/LoopVectorize/invariant-store-vectorization.ll
  llvm/test/Transforms/LoopVectorize/iv_outside_user.ll
  llvm/test/Transforms/LoopVectorize/pr34681.ll
  llvm/test/Transforms/LoopVectorize/pr38697.ll
  llvm/test/Transforms/LoopVectorize/runtime-check.ll
  llvm/test/Transforms/LoopVectorize/tbaa-nodep.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D71047.232261.patch
Type: text/x-patch
Size: 155981 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191205/18fd5d6e/attachment-0001.bin>


More information about the llvm-commits mailing list