diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-05-30 18:18:44 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2016-05-30 18:18:44 +0000 |
| commit | 4ed0e07b231ecee04303bc6e9165359b6c54e274 (patch) | |
| tree | 5aee1ce929979e6b473f7ef40ccc2df129ca2c04 /llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll | |
| parent | 43439bd33dd5b2c5aa911644921b8977d0852b99 (diff) | |
| download | bcm5719-llvm-4ed0e07b231ecee04303bc6e9165359b6c54e274.tar.gz bcm5719-llvm-4ed0e07b231ecee04303bc6e9165359b6c54e274.zip | |
[X86][SSE2] Updated _mm_store_pd1/_mm_store1_pd fast-isel tests to match D20617
llvm-svn: 271220
Diffstat (limited to 'llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll')
| -rw-r--r-- | llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll b/llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll index b1e6e6c73b4..03e9130c97e 100644 --- a/llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll +++ b/llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll @@ -3104,6 +3104,25 @@ define void @test_mm_store_pd(double *%a0, <2 x double> %a1) { ret void } +define void @test_mm_store_pd1(double *%a0, <2 x double> %a1) { +; X32-LABEL: test_mm_store_pd1: +; X32: # BB#0: +; X32-NEXT: movl {{[0-9]+}}(%esp), %eax +; X32-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] +; X32-NEXT: movaps %xmm0, (%eax) +; X32-NEXT: retl +; +; X64-LABEL: test_mm_store_pd1: +; X64: # BB#0: +; X64-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] +; X64-NEXT: movaps %xmm0, (%rdi) +; X64-NEXT: retq + %arg0 = bitcast double * %a0 to <2 x double>* + %shuf = shufflevector <2 x double> %a1, <2 x double> undef, <2 x i32> zeroinitializer + store <2 x double> %shuf, <2 x double>* %arg0, align 16 + ret void +} + define void @test_mm_store_sd(double *%a0, <2 x double> %a1) { ; X32-LABEL: test_mm_store_sd: ; X32: # BB#0: @@ -3139,20 +3158,18 @@ define void @test_mm_store1_pd(double *%a0, <2 x double> %a1) { ; X32-LABEL: test_mm_store1_pd: ; X32: # BB#0: ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax -; X32-NEXT: movsd %xmm0, (%eax) -; X32-NEXT: movsd %xmm0, 8(%eax) +; X32-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] +; X32-NEXT: movaps %xmm0, (%eax) ; X32-NEXT: retl ; ; X64-LABEL: test_mm_store1_pd: ; X64: # BB#0: -; X64-NEXT: movsd %xmm0, (%rdi) -; X64-NEXT: movsd %xmm0, 8(%rdi) +; X64-NEXT: movlhps {{.*#+}} xmm0 = xmm0[0,0] +; X64-NEXT: movaps %xmm0, (%rdi) ; X64-NEXT: retq - %ext = extractelement <2 x double> %a1, i32 0 - %ptr0 = getelementptr inbounds double, double* %a0, i32 0 - %ptr1 = getelementptr inbounds double, double* %a0, i32 1 - store double %ext, double* %ptr0, align 1 - store double %ext, double* %ptr1, align 1 + %arg0 = bitcast double * %a0 to <2 x double>* + %shuf = shufflevector <2 x double> %a1, <2 x double> undef, <2 x i32> zeroinitializer + store <2 x double> %shuf, <2 x double>* %arg0, align 16 ret void } |

