Skip to content
  1. Sep 05, 2016
  2. Sep 01, 2016
    • Michael Kuperstein's avatar
      [SelectionDAG] Generate vector_shuffle nodes for undersized result vector sizes · 5f17d08f
      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
      5f17d08f
  3. Aug 27, 2016
    • Michael Kuperstein's avatar
      [X86] Add baseline test for "odd" shuffles. NFC. · aea50f8b
      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
      aea50f8b
Loading