OSDN Git Service

[X86] Rewrite LowerAVXCONCAT_VECTORS similar to how we handle vXi1 concats.
authorCraig Topper <craig.topper@intel.com>
Tue, 13 Mar 2018 22:05:25 +0000 (22:05 +0000)
committerCraig Topper <craig.topper@intel.com>
Tue, 13 Mar 2018 22:05:25 +0000 (22:05 +0000)
commit597af6522cad1774bd5d946ea677e3239bb690b0
tree7e9c7c1a70edee4b1ca3afbeb2d442a1ce55b105
parent737a344b6fd44154cc18c76e4c0899687cd4abda
[X86] Rewrite LowerAVXCONCAT_VECTORS similar to how we handle vXi1 concats.

This better able to detect undef and zeros pieces in the concat. Or cases when only one subvector is non-zero. This allows us to avoid silly things like double inserts into progressively larger undefs.

This still builds 512 bit concats of 128 bits by building up through 256 bits first. But I don't know if that's best.

We probably want to merge this with the vXi1 concat code since they are very similar.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@327454 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrAVX512.td
test/CodeGen/X86/avx512-intrinsics-fast-isel.ll
test/CodeGen/X86/avx512-intrinsics-upgrade.ll