diff options
author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-04-03 21:06:51 +0000 |
---|---|---|
committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-04-03 21:06:51 +0000 |
commit | af33757b5dec5f99bc78f724a2eb2cd822c14b73 (patch) | |
tree | b79baa363e9ca2afbdb8470ff7b522eba00312f8 /llvm/test/CodeGen/X86/vec_fp_to_int.ll | |
parent | 3b392bb8d85d3cd6cf265e940884394d5f25d641 (diff) | |
download | bcm5719-llvm-af33757b5dec5f99bc78f724a2eb2cd822c14b73.tar.gz bcm5719-llvm-af33757b5dec5f99bc78f724a2eb2cd822c14b73.zip |
[X86][SSE]] Lower BUILD_VECTOR with repeated elts as BUILD_VECTOR + VECTOR_SHUFFLE
It can be costly to transfer from the gprs to the xmm registers and can prevent loads merging.
This patch splits vXi16/vXi32/vXi64 BUILD_VECTORS that use the same operand in multiple elements into a BUILD_VECTOR with only a single insertion of each of those elements and then performs an unary shuffle to duplicate the values.
There are a couple of minor regressions this patch unearths due to some missing MOVDDUP/BROADCAST folds that I will address in a future patch.
Note: Now that vector shuffle lowering and combining is pretty good we should be reusing that instead of duplicating so much in LowerBUILD_VECTOR - this is the first of several patches to address this.
Differential Revision: https://reviews.llvm.org/D31373
llvm-svn: 299387
Diffstat (limited to 'llvm/test/CodeGen/X86/vec_fp_to_int.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/vec_fp_to_int.ll | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/X86/vec_fp_to_int.ll b/llvm/test/CodeGen/X86/vec_fp_to_int.ll index a345f78e18c..8baef924521 100644 --- a/llvm/test/CodeGen/X86/vec_fp_to_int.ll +++ b/llvm/test/CodeGen/X86/vec_fp_to_int.ll @@ -537,7 +537,7 @@ define <4 x i32> @fptoui_4f64_to_2i32(<2 x double> %a) { ; VEX-NEXT: vpinsrd $1, %eax, %xmm0, %xmm0 ; VEX-NEXT: vcvttsd2si %xmm0, %rax ; VEX-NEXT: vpinsrd $2, %eax, %xmm0, %xmm0 -; VEX-NEXT: vpinsrd $3, %eax, %xmm0, %xmm0 +; VEX-NEXT: vpshufd {{.*#+}} xmm0 = xmm0[0,1,2,2] ; VEX-NEXT: retq ; ; AVX512F-LABEL: fptoui_4f64_to_2i32: |