[all-commits] [llvm/llvm-project] 9f61fb: [LV] Relax assumption that LCSSA implies single entry
Philip Reames via All-commits
all-commits at lists.llvm.org
Tue Jan 12 12:35:14 PST 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 9f61fbd75ae1757d77988b37562de4d6583579aa
https://github.com/llvm/llvm-project/commit/9f61fbd75ae1757d77988b37562de4d6583579aa
Author: Philip Reames <listmail at philipreames.com>
Date: 2021-01-12 (Tue, 12 Jan 2021)
Changed paths:
M llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
M llvm/test/Transforms/LoopVectorize/first-order-recurrence-complex.ll
M llvm/test/Transforms/LoopVectorize/loop-form.ll
Log Message:
-----------
[LV] Relax assumption that LCSSA implies single entry
This relates to the ongoing effort to support vectorization of multiple exit loops (see 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)
Differential Revision: https://reviews.llvm.org/D93725
More information about the All-commits
mailing list