[PATCH] D93725: [LV] Relax assumption that LCSSA implies single entry

Philip Reames via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 22 12:23:27 PST 2020


reames created this revision.
reames added reviewers: Ayal, fhahn.
Herald added subscribers: dantrushin, bollu, hiraditya, mcrosier.
reames requested review of this revision.
Herald added a project: LLVM.

This relates to the ongoing effort to support vectorization of multiple exit loops (see D93317 <https://reviews.llvm.org/D93317>).

The previous code assumed that LCSSA phis were always single entry before the vectorizer ran.  This was correct, but only because the vectorizer allowed only a single exiting edge.  There's nothing in the definition of LCSSA which requires single entry phis.

A common case where this comes up is with a loop with multiple exiting blocks which all reach a common exit block.  (e.g. see the test updates)


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D93725

Files:
  llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
  llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
  llvm/test/Transforms/LoopVectorize/loop-form.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D93725.313405.patch
Type: text/x-patch
Size: 14344 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201222/2d898cb9/attachment.bin>


More information about the llvm-commits mailing list