diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2015-07-29 21:44:27 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2015-07-29 21:44:27 +0000 |
| commit | ba10f767051c68fb32afac36f6db605c2a7dc565 (patch) | |
| tree | 9683ed9f11e3d86207c16d7bcdeee1c5c0364876 /llvm/test | |
| parent | 2a9d801fd58d2b6407662d76e95fcd21957282a6 (diff) | |
| download | bcm5719-llvm-ba10f767051c68fb32afac36f6db605c2a7dc565.tar.gz bcm5719-llvm-ba10f767051c68fb32afac36f6db605c2a7dc565.zip | |
[X86][SSE] Keep 32-bit target i64 vector shifts on SSE unit.
This patch improves the 32-bit target i64 constant matching to detect the shuffle vector splats that are introduced by i64 vector shift vectorization (D8416).
Differential Revision: http://reviews.llvm.org/D11327
llvm-svn: 243577
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/X86/vector-shift-ashr-128.ll | 20 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/vector-shift-lshr-128.ll | 8 | ||||
| -rw-r--r-- | llvm/test/CodeGen/X86/vector-shift-shl-128.ll | 8 |
3 files changed, 12 insertions, 24 deletions
diff --git a/llvm/test/CodeGen/X86/vector-shift-ashr-128.ll b/llvm/test/CodeGen/X86/vector-shift-ashr-128.ll index fff788a2298..64d4ea03762 100644 --- a/llvm/test/CodeGen/X86/vector-shift-ashr-128.ll +++ b/llvm/test/CodeGen/X86/vector-shift-ashr-128.ll @@ -877,21 +877,17 @@ define <2 x i64> @constant_shift_v2i64(<2 x i64> %a) nounwind { ; ; X32-SSE-LABEL: constant_shift_v2i64: ; X32-SSE: # BB#0: -; X32-SSE-NEXT: movl $7, %eax -; X32-SSE-NEXT: movd %eax, %xmm2 ; X32-SSE-NEXT: movdqa {{.*#+}} xmm1 = [0,2147483648,0,2147483648] -; X32-SSE-NEXT: movdqa %xmm1, %xmm3 -; X32-SSE-NEXT: psrlq %xmm2, %xmm3 -; X32-SSE-NEXT: movl $1, %eax -; X32-SSE-NEXT: movd %eax, %xmm4 -; X32-SSE-NEXT: psrlq %xmm4, %xmm1 -; X32-SSE-NEXT: movsd {{.*#+}} xmm3 = xmm1[0],xmm3[1] +; X32-SSE-NEXT: movdqa %xmm1, %xmm2 +; X32-SSE-NEXT: psrlq $7, %xmm2 +; X32-SSE-NEXT: psrlq $1, %xmm1 +; X32-SSE-NEXT: movsd {{.*#+}} xmm2 = xmm1[0],xmm2[1] ; X32-SSE-NEXT: movdqa %xmm0, %xmm1 -; X32-SSE-NEXT: psrlq %xmm2, %xmm1 -; X32-SSE-NEXT: psrlq %xmm4, %xmm0 +; X32-SSE-NEXT: psrlq $7, %xmm1 +; X32-SSE-NEXT: psrlq $1, %xmm0 ; X32-SSE-NEXT: movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1] -; X32-SSE-NEXT: xorpd %xmm3, %xmm1 -; X32-SSE-NEXT: psubq %xmm3, %xmm1 +; X32-SSE-NEXT: xorpd %xmm2, %xmm1 +; X32-SSE-NEXT: psubq %xmm2, %xmm1 ; X32-SSE-NEXT: movdqa %xmm1, %xmm0 ; X32-SSE-NEXT: retl %shift = ashr <2 x i64> %a, <i64 1, i64 7> diff --git a/llvm/test/CodeGen/X86/vector-shift-lshr-128.ll b/llvm/test/CodeGen/X86/vector-shift-lshr-128.ll index 7ee0412b6ad..1c988946a46 100644 --- a/llvm/test/CodeGen/X86/vector-shift-lshr-128.ll +++ b/llvm/test/CodeGen/X86/vector-shift-lshr-128.ll @@ -655,13 +655,9 @@ define <2 x i64> @constant_shift_v2i64(<2 x i64> %a) nounwind { ; ; X32-SSE-LABEL: constant_shift_v2i64: ; X32-SSE: # BB#0: -; X32-SSE-NEXT: movl $7, %eax -; X32-SSE-NEXT: movd %eax, %xmm2 ; X32-SSE-NEXT: movdqa %xmm0, %xmm1 -; X32-SSE-NEXT: psrlq %xmm2, %xmm1 -; X32-SSE-NEXT: movl $1, %eax -; X32-SSE-NEXT: movd %eax, %xmm2 -; X32-SSE-NEXT: psrlq %xmm2, %xmm0 +; X32-SSE-NEXT: psrlq $7, %xmm1 +; X32-SSE-NEXT: psrlq $1, %xmm0 ; X32-SSE-NEXT: movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1] ; X32-SSE-NEXT: movapd %xmm1, %xmm0 ; X32-SSE-NEXT: retl diff --git a/llvm/test/CodeGen/X86/vector-shift-shl-128.ll b/llvm/test/CodeGen/X86/vector-shift-shl-128.ll index facbcc14c2c..fa6533d39cb 100644 --- a/llvm/test/CodeGen/X86/vector-shift-shl-128.ll +++ b/llvm/test/CodeGen/X86/vector-shift-shl-128.ll @@ -607,13 +607,9 @@ define <2 x i64> @constant_shift_v2i64(<2 x i64> %a) nounwind { ; ; X32-SSE-LABEL: constant_shift_v2i64: ; X32-SSE: # BB#0: -; X32-SSE-NEXT: movl $7, %eax -; X32-SSE-NEXT: movd %eax, %xmm2 ; X32-SSE-NEXT: movdqa %xmm0, %xmm1 -; X32-SSE-NEXT: psllq %xmm2, %xmm1 -; X32-SSE-NEXT: movl $1, %eax -; X32-SSE-NEXT: movd %eax, %xmm2 -; X32-SSE-NEXT: psllq %xmm2, %xmm0 +; X32-SSE-NEXT: psllq $7, %xmm1 +; X32-SSE-NEXT: psllq $1, %xmm0 ; X32-SSE-NEXT: movsd {{.*#+}} xmm1 = xmm0[0],xmm1[1] ; X32-SSE-NEXT: movapd %xmm1, %xmm0 ; X32-SSE-NEXT: retl |

