summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2016-05-30 18:18:44 +0000
committerSimon Pilgrim <llvm-dev@redking.me.uk>2016-05-30 18:18:44 +0000
commit4ed0e07b231ecee04303bc6e9165359b6c54e274 (patch)
tree5aee1ce929979e6b473f7ef40ccc2df129ca2c04 /llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll
parent43439bd33dd5b2c5aa911644921b8977d0852b99 (diff)
downloadbcm5719-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.ll35
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
}
OpenPOWER on IntegriCloud