[X86] Teach shuffle lowering to use 256-bit SHUF128 when possible.
authorCraig Topper <craig.topper@intel.com>
Sat, 4 Nov 2017 06:44:47 +0000 (06:44 +0000)
committerCraig Topper <craig.topper@intel.com>
Sat, 4 Nov 2017 06:44:47 +0000 (06:44 +0000)
commita96d62b360b873046035ba439053cd4de2ff1470
tree511ab85f17361886809e25757046c6dcf193c208
parent965429ee522b01b94a9a9d01b46ac10e804029f1
[X86] Teach shuffle lowering to use 256-bit SHUF128 when possible.

This allows masked operations to be used and allows the register allocator to use YMM16-31 if necessary.

As a follow up I'll look into teaching EVEX->VEX how to turn this back into PERM2X128 if any of the additional features don't work out.

llvm-svn: 317403
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/avx-schedule.ll
llvm/test/CodeGen/X86/avx2-schedule.ll
llvm/test/CodeGen/X86/avx512-shuffle-schedule.ll
llvm/test/CodeGen/X86/avx512-shuffles/shuffle-vec.ll
llvm/test/CodeGen/X86/vector-shuffle-256-v16.ll
llvm/test/CodeGen/X86/vector-shuffle-256-v32.ll
llvm/test/CodeGen/X86/vector-shuffle-256-v4.ll
llvm/test/CodeGen/X86/vector-shuffle-256-v8.ll