diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/widen_cast-1.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/widen_cast-1.ll | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/llvm/test/CodeGen/X86/widen_cast-1.ll b/llvm/test/CodeGen/X86/widen_cast-1.ll index 2401e005be2..63bb4725550 100644 --- a/llvm/test/CodeGen/X86/widen_cast-1.ll +++ b/llvm/test/CodeGen/X86/widen_cast-1.ll @@ -12,6 +12,7 @@ define void @convert(<2 x i32>* %dst, <4 x i16>* %src) nounwind { ; CHECK-NEXT: pushl %eax ; CHECK-NEXT: movl $0, (%esp) ; CHECK-NEXT: pcmpeqd %xmm0, %xmm0 +; CHECK-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] ; CHECK-NEXT: cmpl $3, (%esp) ; CHECK-NEXT: jg .LBB0_3 ; CHECK-NEXT: .p2align 4, 0x90 @@ -20,9 +21,10 @@ define void @convert(<2 x i32>* %dst, <4 x i16>* %src) nounwind { ; CHECK-NEXT: movl (%esp), %eax ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx -; CHECK-NEXT: movq {{.*#+}} xmm1 = mem[0],zero -; CHECK-NEXT: psubw %xmm0, %xmm1 -; CHECK-NEXT: movq %xmm1, (%ecx,%eax,8) +; CHECK-NEXT: pmovzxwd {{.*#+}} xmm2 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero +; CHECK-NEXT: psubw %xmm0, %xmm2 +; CHECK-NEXT: pshufb %xmm1, %xmm2 +; CHECK-NEXT: movq %xmm2, (%ecx,%eax,8) ; CHECK-NEXT: incl (%esp) ; CHECK-NEXT: cmpl $3, (%esp) ; CHECK-NEXT: jle .LBB0_2 @@ -34,6 +36,7 @@ define void @convert(<2 x i32>* %dst, <4 x i16>* %src) nounwind { ; ATOM: # %bb.0: # %entry ; ATOM-NEXT: pushl %eax ; ATOM-NEXT: pcmpeqd %xmm0, %xmm0 +; ATOM-NEXT: movdqa {{.*#+}} xmm1 = [0,1,4,5,8,9,12,13,8,9,12,13,12,13,14,15] ; ATOM-NEXT: movl $0, (%esp) ; ATOM-NEXT: cmpl $3, (%esp) ; ATOM-NEXT: jg .LBB0_3 @@ -42,10 +45,12 @@ define void @convert(<2 x i32>* %dst, <4 x i16>* %src) nounwind { ; ATOM-NEXT: # =>This Inner Loop Header: Depth=1 ; ATOM-NEXT: movl (%esp), %eax ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx -; ATOM-NEXT: movq {{.*#+}} xmm1 = mem[0],zero +; ATOM-NEXT: movq {{.*#+}} xmm2 = mem[0],zero ; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx -; ATOM-NEXT: psubw %xmm0, %xmm1 -; ATOM-NEXT: movq %xmm1, (%ecx,%eax,8) +; ATOM-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1],xmm2[2],xmm0[2],xmm2[3],xmm0[3] +; ATOM-NEXT: psubw %xmm0, %xmm2 +; ATOM-NEXT: pshufb %xmm1, %xmm2 +; ATOM-NEXT: movq %xmm2, (%ecx,%eax,8) ; ATOM-NEXT: incl (%esp) ; ATOM-NEXT: cmpl $3, (%esp) ; ATOM-NEXT: jle .LBB0_2 |