[X86] Add lowering to VALIGN
authorAdam Nemet <anemet@apple.com>
Tue, 5 Aug 2014 17:22:59 +0000 (17:22 +0000)
committerAdam Nemet <anemet@apple.com>
Tue, 5 Aug 2014 17:22:59 +0000 (17:22 +0000)
commitaf98f76fb5ec9ac2a392b32cf40b31f67e0bfd44
tree514220f378e897373e0a502f371d393103114542
parentb4d58974c3dcf6baf8b359ac55e99daa53ef43e4
[X86] Add lowering to VALIGN

This was currently part of lowering to PALIGNR with some special-casing to
make interlane shifting work.  Since AVX512F has interlane alignr (valignd/q)
and AVX512BW has vpalignr we need to support both of these *at the same time*,
e.g. for SKX.

This patch breaks out the common code and then add support to check both of
these lowering options from LowerVECTOR_SHUFFLE.

I also added some FIXMEs where I think the AVX512BW and AVX512VL additions
should probably go.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214888 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrAVX512.td