[PATCH] D26902: [AVX-512] Add support for changing the element size of PALIGNR/VALIGND/VALIGNQ shuffles if they feed a vselect with a different type

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Sun Nov 20 16:44:09 PST 2016


craig.topper created this revision.
craig.topper added reviewers: RKSimon, delena, zvi.
craig.topper added a subscriber: llvm-commits.

Shuffle lowering widens the element size of a shuffle if elements are contiguous. This is sometimes help because wider element types have more shuffle options. If the shuffle is one of the arguments to a vselect this shuffle widening can introduce a bitcast between the vselect and the shuffle. This will prevent isel from selecting a masked operation. If the shuffle can be written equally efficiently with a different element size to match the vselect type we should change the shuffle type to allow masking.

This patch does this conversion for all VALIGND/VALIGNQ sizes. It also supports turning 128-bit PALIGNR into VALIGND/VALIGNQ.

I plan to add support for more operations in future patches.


https://reviews.llvm.org/D26902

Files:
  lib/Target/X86/X86ISelLowering.cpp
  test/CodeGen/X86/vector-shuffle-512-v16.ll
  test/CodeGen/X86/vector-shuffle-masked.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D26902.78675.patch
Type: text/x-patch
Size: 11404 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161121/4e4eb812/attachment-0001.bin>


More information about the llvm-commits mailing list