- Sep 05, 2016
-
-
Simon Pilgrim authored
llvm-svn: 280661
-
- Sep 01, 2016
-
-
Michael Kuperstein authored
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
-
- Aug 27, 2016
-
-
Michael Kuperstein authored
Adds a baseline test for lowering shuffles where the width of the output vector is not twice the size of the input vectors. Many of those sequences are suboptimal, and will hopefully be improved in follow-up patches. llvm-svn: 279888
-