diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/widen_arith-1.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/widen_arith-1.ll | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/llvm/test/CodeGen/X86/widen_arith-1.ll b/llvm/test/CodeGen/X86/widen_arith-1.ll index a37dba14f22..d5b1cbb5548 100644 --- a/llvm/test/CodeGen/X86/widen_arith-1.ll +++ b/llvm/test/CodeGen/X86/widen_arith-1.ll @@ -4,9 +4,10 @@ define void @update(<3 x i8>* %dst, <3 x i8>* %src, i32 %n) nounwind { ; CHECK-LABEL: update: ; CHECK: # %bb.0: # %entry -; CHECK-NEXT: pushl %eax +; CHECK-NEXT: subl $12, %esp ; CHECK-NEXT: movl $0, (%esp) ; CHECK-NEXT: pcmpeqd %xmm0, %xmm0 +; CHECK-NEXT: movdqa {{.*#+}} xmm1 = <0,4,8,12,u,u,u,u,u,u,u,u,u,u,u,u> ; CHECK-NEXT: .p2align 4, 0x90 ; CHECK-NEXT: .LBB0_1: # %forcond ; CHECK-NEXT: # =>This Inner Loop Header: Depth=1 @@ -18,14 +19,15 @@ define void @update(<3 x i8>* %dst, <3 x i8>* %src, i32 %n) nounwind { ; CHECK-NEXT: movl (%esp), %eax ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx ; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx -; CHECK-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero -; CHECK-NEXT: psubb %xmm0, %xmm1 -; CHECK-NEXT: pextrb $2, %xmm1, 2(%ecx,%eax,4) -; CHECK-NEXT: pextrw $0, %xmm1, (%ecx,%eax,4) +; CHECK-NEXT: pmovzxbd {{.*#+}} xmm2 = mem[0],zero,zero,zero,mem[1],zero,zero,zero,mem[2],zero,zero,zero,mem[3],zero,zero,zero +; CHECK-NEXT: psubd %xmm0, %xmm2 +; CHECK-NEXT: pextrb $8, %xmm2, 2(%ecx,%eax,4) +; CHECK-NEXT: pshufb %xmm1, %xmm2 +; CHECK-NEXT: pextrw $0, %xmm2, (%ecx,%eax,4) ; CHECK-NEXT: incl (%esp) ; CHECK-NEXT: jmp .LBB0_1 ; CHECK-NEXT: .LBB0_3: # %afterfor -; CHECK-NEXT: popl %eax +; CHECK-NEXT: addl $12, %esp ; CHECK-NEXT: retl entry: %dst.addr = alloca <3 x i8>* |