diff options
author | David Green <david.green@arm.com> | 2022-07-05 17:16:18 +0100 |
---|---|---|
committer | David Green <david.green@arm.com> | 2022-07-05 17:16:18 +0100 |
commit | 5493f8fc59ca9cc6fc14da8e6aafe6a52fb9ebc0 (patch) | |
tree | ce3ce5fb135daf6569dd3de96481a8dd6617ac23 /llvm/lib/Transforms/Utils/LoopUtils.cpp | |
parent | e70ea18e2fdedbc4e0fe3610861e003857763a4c (diff) | |
download | llvm-5493f8fc59ca9cc6fc14da8e6aafe6a52fb9ebc0.zip llvm-5493f8fc59ca9cc6fc14da8e6aafe6a52fb9ebc0.tar.gz llvm-5493f8fc59ca9cc6fc14da8e6aafe6a52fb9ebc0.tar.bz2 |
[VectorCombine] Improve shuffle select shuffle-of-shuffles
This in an extension to the code added in D123911 which added vector
combine folding of shuffle-select patterns, attempting to reduce the
total amount of shuffling required in patterns like:
%x = shuffle %i1, %i2
%y = shuffle %i1, %i2
%a = binop %x, %y
%b = binop %x, %y
shuffle %a, %b, selectmask
This patch extends the handing of shuffles that are dependent on one
another, which can arise from the SLP vectorizer, as-in:
%x = shuffle %i1, %i2
%y = shuffle %x
The input shuffles can also be emitted, in which case they are treated
like identity shuffles. This patch also attempts to calculate a better
ordering of input shuffles, which can help getting lower cost input
shuffles, pushing complex shuffles further down the tree.
This is a recommit with some additional checks for supported forms and
out-of-bounds mask elements, with some extra tests.
Differential Revision: https://reviews.llvm.org/D128732
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUtils.cpp')
0 files changed, 0 insertions, 0 deletions