[AVX-512] Promote AND/OR/XOR to v2i64/v4i64/v8i64 even when we have AVX512F/AVX512VL.
authorCraig Topper <craig.topper@gmail.com>
Sun, 28 Aug 2016 06:06:28 +0000 (06:06 +0000)
committerCraig Topper <craig.topper@gmail.com>
Sun, 28 Aug 2016 06:06:28 +0000 (06:06 +0000)
commitabe80cc04df000d51895d7532c748be2f25fbd86
tree2e1bd49eafd6e3481cde380221656168279b7ff1
parent8046e2033e725a811f5078652ce21e26e736375d
[AVX-512] Promote AND/OR/XOR to v2i64/v4i64/v8i64 even when we have AVX512F/AVX512VL.

Previously we weren't creating masked logical operations if bitcasts appeared between the logic operation and the select. The IR optimizers can move bitcasts across logic operations and create these cases. To minimize the number of cases we need to handle, this change promotes all logic ops to an i64 vector type just like when only SSE or AVX is available.

Unfortunately, this also has the consequence of making it difficult to select unmasked VPANDD/VPORD/VPXORD in all the cases it was previously used. This is the cause of most of the test change. This shouldn't result in any functional change though.

llvm-svn: 279929
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/lib/Target/X86/X86InstrAVX512.td
llvm/test/CodeGen/X86/avx512-arith.ll
llvm/test/CodeGen/X86/avx512-logic.ll
llvm/test/CodeGen/X86/avx512-select.ll
llvm/test/CodeGen/X86/stack-folding-fp-avx512.ll
llvm/test/CodeGen/X86/stack-folding-fp-avx512vl.ll
llvm/test/CodeGen/X86/vector-bitreverse.ll