[X86][AVX] Use lowerShuffleAsLanePermuteAndSHUFP to lower binary v4f64 shuffles.
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 12 Jan 2020 12:29:41 +0000 (12:29 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sun, 12 Jan 2020 12:29:41 +0000 (12:29 +0000)
commit66e39067edbfdb1469be001ebb053530a608b532
tree3b859f47aa9940d094c642e9d94d36d71b593c50
parentb375f28b0ec1129a4b94770a9c55ba49222ea1dd
[X86][AVX] Use lowerShuffleAsLanePermuteAndSHUFP to lower binary v4f64 shuffles.

Only perform this if we are shuffling lower and upper lane elements across the lanes (otherwise splitting to lower xmm shuffles would be better).

This is a regression if we shuffle build_vectors due to getVectorShuffle canonicalizing 'blend of splat' build vectors, for now I've set this not to shuffle build_vector nodes at all to avoid this.
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/avx-unpack.ll
llvm/test/CodeGen/X86/avx512-shuffles/partial_permute.ll
llvm/test/CodeGen/X86/subvector-broadcast.ll
llvm/test/CodeGen/X86/vector-shuffle-256-v4.ll
llvm/test/CodeGen/X86/vector-shuffle-256-v8.ll