diff options
author | Michael Kuperstein <mkuper@google.com> | 2016-09-01 21:32:09 +0000 |
---|---|---|
committer | Michael Kuperstein <mkuper@google.com> | 2016-09-01 21:32:09 +0000 |
commit | 5f17d08f498167c1523136b3e62f51588769152d (patch) | |
tree | 8bc52e8b0d24f9fa1d17b95b08cdf0e7f82aeecd /lldb/packages/Python/lldbsuite/test/python_api/signals/main.cpp | |
parent | e68b47070f617ffa8becd3c9d777a93cf2c3b6a8 (diff) | |
download | bcm5719-llvm-5f17d08f498167c1523136b3e62f51588769152d.tar.gz bcm5719-llvm-5f17d08f498167c1523136b3e62f51588769152d.zip |
[SelectionDAG] Generate vector_shuffle nodes for undersized result vector sizes
Prior to this, we could generate a vector_shuffle from an IR shuffle when the
size of the result was exactly the sum of the sizes of the input vectors.
If the output vector was narrower - e.g. a <12 x i8> being formed by a shuffle
with two <8 x i8> inputs - we would lower the shuffle to a sequence of extracts
and inserts.
Instead, we can form a larger vector_shuffle, and then extract a subvector
of the right size - e.g. shuffle the two <8 x i8> inputs into a <16 x i8>
and then extract a <12 x i8>.
This also includes a target-specific X86 combine that in the presence of
AVX2 combines:
(vector_shuffle <mask> (concat_vectors t1, undef)
(concat_vectors t2, undef))
into:
(vector_shuffle <mask> (concat_vectors t1, t2), undef)
in cases where this allows us to form VPERMD/VPERMQ.
(This is not a separate commit, as that pattern does not appear without
the DAGBuilder change.)
llvm-svn: 280418
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/signals/main.cpp')
0 files changed, 0 insertions, 0 deletions