|
@@ -166,19 +166,15 @@ define void @test5(i1 %c, <2 x i16> %a, <2 x i16> %b, <2 x i16>* %p) nounwind {
|
|
|
; MCU-LABEL: test5:
|
|
|
; MCU: # BB#0:
|
|
|
; MCU-NEXT: pushl %esi
|
|
|
-; MCU-NEXT: andb $1, %al
|
|
|
+; MCU-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
|
+; MCU-NEXT: testb $1, %al
|
|
|
; MCU-NEXT: jne .LBB4_2
|
|
|
; MCU-NEXT: # BB#1:
|
|
|
+; MCU-NEXT: movw {{[0-9]+}}(%esp), %cx
|
|
|
; MCU-NEXT: movw {{[0-9]+}}(%esp), %dx
|
|
|
; MCU-NEXT: .LBB4_2:
|
|
|
-; MCU-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
|
-; MCU-NEXT: testb %al, %al
|
|
|
-; MCU-NEXT: jne .LBB4_4
|
|
|
-; MCU-NEXT: # BB#3:
|
|
|
-; MCU-NEXT: movw {{[0-9]+}}(%esp), %cx
|
|
|
-; MCU-NEXT: .LBB4_4:
|
|
|
-; MCU-NEXT: movw %dx, (%esi)
|
|
|
; MCU-NEXT: movw %cx, 2(%esi)
|
|
|
+; MCU-NEXT: movw %dx, (%esi)
|
|
|
; MCU-NEXT: popl %esi
|
|
|
; MCU-NEXT: retl
|
|
|
%x = select i1 %c, <2 x i16> %a, <2 x i16> %b
|
|
@@ -292,81 +288,69 @@ define x86_fp80 @test7(i32 %tmp8) nounwind {
|
|
|
define void @test8(i1 %c, <6 x i32>* %dst.addr, <6 x i32> %src1,<6 x i32> %src2) nounwind {
|
|
|
; GENERIC-LABEL: test8:
|
|
|
; GENERIC: ## BB#0:
|
|
|
-; GENERIC-NEXT: andb $1, %dil
|
|
|
+; GENERIC-NEXT: testb $1, %dil
|
|
|
; GENERIC-NEXT: jne LBB7_1
|
|
|
; GENERIC-NEXT: ## BB#2:
|
|
|
-; GENERIC-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
|
|
|
; GENERIC-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
-; GENERIC-NEXT: jmp LBB7_3
|
|
|
-; GENERIC-NEXT: LBB7_1:
|
|
|
; GENERIC-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
|
|
|
+; GENERIC-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
|
|
|
+; GENERIC-NEXT: movd {{.*#+}} xmm2 = mem[0],zero,zero,zero
|
|
|
; GENERIC-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
-; GENERIC-NEXT: LBB7_3:
|
|
|
-; GENERIC-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
|
|
|
-; GENERIC-NEXT: testb %dil, %dil
|
|
|
-; GENERIC-NEXT: jne LBB7_4
|
|
|
-; GENERIC-NEXT: ## BB#5:
|
|
|
+; GENERIC-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
|
|
|
+; GENERIC-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
|
|
|
+; GENERIC-NEXT: movd {{.*#+}} xmm2 = mem[0],zero,zero,zero
|
|
|
; GENERIC-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
|
|
|
+; GENERIC-NEXT: jmp LBB7_3
|
|
|
+; GENERIC-NEXT: LBB7_1:
|
|
|
+; GENERIC-NEXT: movd %r9d, %xmm0
|
|
|
+; GENERIC-NEXT: movd %r8d, %xmm1
|
|
|
+; GENERIC-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
|
|
|
+; GENERIC-NEXT: movd %ecx, %xmm2
|
|
|
+; GENERIC-NEXT: movd %edx, %xmm0
|
|
|
+; GENERIC-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
|
|
|
+; GENERIC-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
|
|
|
; GENERIC-NEXT: movd {{.*#+}} xmm2 = mem[0],zero,zero,zero
|
|
|
-; GENERIC-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
|
|
|
-; GENERIC-NEXT: movd {{.*#+}} xmm3 = mem[0],zero,zero,zero
|
|
|
; GENERIC-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
|
|
|
-; GENERIC-NEXT: jmp LBB7_6
|
|
|
-; GENERIC-NEXT: LBB7_4:
|
|
|
-; GENERIC-NEXT: movd %r9d, %xmm1
|
|
|
-; GENERIC-NEXT: movd %r8d, %xmm2
|
|
|
-; GENERIC-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
|
|
|
-; GENERIC-NEXT: movd %ecx, %xmm3
|
|
|
-; GENERIC-NEXT: movd %edx, %xmm1
|
|
|
-; GENERIC-NEXT: LBB7_6:
|
|
|
-; GENERIC-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
|
|
|
-; GENERIC-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
|
|
|
+; GENERIC-NEXT: LBB7_3:
|
|
|
+; GENERIC-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
|
|
|
; GENERIC-NEXT: pcmpeqd %xmm2, %xmm2
|
|
|
-; GENERIC-NEXT: paddd %xmm2, %xmm1
|
|
|
; GENERIC-NEXT: paddd %xmm2, %xmm0
|
|
|
-; GENERIC-NEXT: movq %xmm0, 16(%rsi)
|
|
|
-; GENERIC-NEXT: movdqa %xmm1, (%rsi)
|
|
|
+; GENERIC-NEXT: paddd %xmm2, %xmm1
|
|
|
+; GENERIC-NEXT: movq %xmm1, 16(%rsi)
|
|
|
+; GENERIC-NEXT: movdqa %xmm0, (%rsi)
|
|
|
; GENERIC-NEXT: retq
|
|
|
; GENERIC-NEXT: ## -- End function
|
|
|
;
|
|
|
; ATOM-LABEL: test8:
|
|
|
; ATOM: ## BB#0:
|
|
|
-; ATOM-NEXT: andb $1, %dil
|
|
|
+; ATOM-NEXT: testb $1, %dil
|
|
|
; ATOM-NEXT: jne LBB7_1
|
|
|
; ATOM-NEXT: ## BB#2:
|
|
|
-; ATOM-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
|
|
|
; ATOM-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
-; ATOM-NEXT: jmp LBB7_3
|
|
|
-; ATOM-NEXT: LBB7_1:
|
|
|
-; ATOM-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
|
|
|
-; ATOM-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
-; ATOM-NEXT: LBB7_3:
|
|
|
-; ATOM-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
|
|
|
-; ATOM-NEXT: testb %dil, %dil
|
|
|
-; ATOM-NEXT: jne LBB7_4
|
|
|
-; ATOM-NEXT: ## BB#5:
|
|
|
; ATOM-NEXT: movd {{.*#+}} xmm2 = mem[0],zero,zero,zero
|
|
|
; ATOM-NEXT: movd {{.*#+}} xmm3 = mem[0],zero,zero,zero
|
|
|
; ATOM-NEXT: movd {{.*#+}} xmm4 = mem[0],zero,zero,zero
|
|
|
+; ATOM-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
|
|
|
+; ATOM-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
; ATOM-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
|
|
|
-; ATOM-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
|
|
|
-; ATOM-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
|
|
|
-; ATOM-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0]
|
|
|
-; ATOM-NEXT: jmp LBB7_6
|
|
|
-; ATOM-NEXT: LBB7_4:
|
|
|
-; ATOM-NEXT: movd %r9d, %xmm1
|
|
|
+; ATOM-NEXT: jmp LBB7_3
|
|
|
+; ATOM-NEXT: LBB7_1:
|
|
|
+; ATOM-NEXT: movd %r9d, %xmm0
|
|
|
; ATOM-NEXT: movd %r8d, %xmm2
|
|
|
-; ATOM-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
|
|
|
+; ATOM-NEXT: punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
|
|
|
; ATOM-NEXT: movd %ecx, %xmm3
|
|
|
-; ATOM-NEXT: movd %edx, %xmm1
|
|
|
-; ATOM-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
|
|
|
-; ATOM-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm2[0]
|
|
|
-; ATOM-NEXT: LBB7_6:
|
|
|
+; ATOM-NEXT: movd %edx, %xmm0
|
|
|
+; ATOM-NEXT: movd {{.*#+}} xmm4 = mem[0],zero,zero,zero
|
|
|
+; ATOM-NEXT: movd {{.*#+}} xmm1 = mem[0],zero,zero,zero
|
|
|
+; ATOM-NEXT: LBB7_3:
|
|
|
+; ATOM-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1]
|
|
|
+; ATOM-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
|
|
|
; ATOM-NEXT: pcmpeqd %xmm2, %xmm2
|
|
|
+; ATOM-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
|
|
|
; ATOM-NEXT: paddd %xmm2, %xmm0
|
|
|
; ATOM-NEXT: paddd %xmm2, %xmm1
|
|
|
-; ATOM-NEXT: movq %xmm0, 16(%rsi)
|
|
|
-; ATOM-NEXT: movdqa %xmm1, (%rsi)
|
|
|
+; ATOM-NEXT: movq %xmm1, 16(%rsi)
|
|
|
+; ATOM-NEXT: movdqa %xmm0, (%rsi)
|
|
|
; ATOM-NEXT: retq
|
|
|
; ATOM-NEXT: ## -- End function
|
|
|
;
|
|
@@ -376,68 +360,67 @@ define void @test8(i1 %c, <6 x i32>* %dst.addr, <6 x i32> %src1,<6 x i32> %src2)
|
|
|
; MCU-NEXT: pushl %ebx
|
|
|
; MCU-NEXT: pushl %edi
|
|
|
; MCU-NEXT: pushl %esi
|
|
|
-; MCU-NEXT: andb $1, %al
|
|
|
+; MCU-NEXT: testb $1, %al
|
|
|
; MCU-NEXT: jne .LBB7_1
|
|
|
; MCU-NEXT: # BB#2:
|
|
|
-; MCU-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
-; MCU-NEXT: movl (%ecx), %ecx
|
|
|
+; MCU-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
+; MCU-NEXT: movl (%eax), %eax
|
|
|
; MCU-NEXT: je .LBB7_5
|
|
|
; MCU-NEXT: .LBB7_4:
|
|
|
-; MCU-NEXT: leal {{[0-9]+}}(%esp), %esi
|
|
|
-; MCU-NEXT: movl (%esi), %esi
|
|
|
+; MCU-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
+; MCU-NEXT: movl (%ecx), %ecx
|
|
|
; MCU-NEXT: je .LBB7_8
|
|
|
; MCU-NEXT: .LBB7_7:
|
|
|
-; MCU-NEXT: leal {{[0-9]+}}(%esp), %edi
|
|
|
-; MCU-NEXT: movl (%edi), %edi
|
|
|
+; MCU-NEXT: leal {{[0-9]+}}(%esp), %esi
|
|
|
+; MCU-NEXT: movl (%esi), %esi
|
|
|
; MCU-NEXT: je .LBB7_11
|
|
|
; MCU-NEXT: .LBB7_10:
|
|
|
-; MCU-NEXT: leal {{[0-9]+}}(%esp), %ebx
|
|
|
-; MCU-NEXT: movl (%ebx), %ebx
|
|
|
+; MCU-NEXT: leal {{[0-9]+}}(%esp), %edi
|
|
|
+; MCU-NEXT: movl (%edi), %edi
|
|
|
; MCU-NEXT: je .LBB7_14
|
|
|
; MCU-NEXT: .LBB7_13:
|
|
|
+; MCU-NEXT: leal {{[0-9]+}}(%esp), %ebx
|
|
|
+; MCU-NEXT: movl (%ebx), %ebx
|
|
|
+; MCU-NEXT: je .LBB7_17
|
|
|
+; MCU-NEXT: .LBB7_16:
|
|
|
; MCU-NEXT: leal {{[0-9]+}}(%esp), %ebp
|
|
|
-; MCU-NEXT: jmp .LBB7_15
|
|
|
+; MCU-NEXT: jmp .LBB7_18
|
|
|
; MCU-NEXT: .LBB7_1:
|
|
|
-; MCU-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
-; MCU-NEXT: movl (%ecx), %ecx
|
|
|
+; MCU-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
+; MCU-NEXT: movl (%eax), %eax
|
|
|
; MCU-NEXT: jne .LBB7_4
|
|
|
; MCU-NEXT: .LBB7_5:
|
|
|
-; MCU-NEXT: leal {{[0-9]+}}(%esp), %esi
|
|
|
-; MCU-NEXT: movl (%esi), %esi
|
|
|
+; MCU-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
+; MCU-NEXT: movl (%ecx), %ecx
|
|
|
; MCU-NEXT: jne .LBB7_7
|
|
|
; MCU-NEXT: .LBB7_8:
|
|
|
-; MCU-NEXT: leal {{[0-9]+}}(%esp), %edi
|
|
|
-; MCU-NEXT: movl (%edi), %edi
|
|
|
+; MCU-NEXT: leal {{[0-9]+}}(%esp), %esi
|
|
|
+; MCU-NEXT: movl (%esi), %esi
|
|
|
; MCU-NEXT: jne .LBB7_10
|
|
|
; MCU-NEXT: .LBB7_11:
|
|
|
-; MCU-NEXT: leal {{[0-9]+}}(%esp), %ebx
|
|
|
-; MCU-NEXT: movl (%ebx), %ebx
|
|
|
+; MCU-NEXT: leal {{[0-9]+}}(%esp), %edi
|
|
|
+; MCU-NEXT: movl (%edi), %edi
|
|
|
; MCU-NEXT: jne .LBB7_13
|
|
|
; MCU-NEXT: .LBB7_14:
|
|
|
-; MCU-NEXT: leal {{[0-9]+}}(%esp), %ebp
|
|
|
-; MCU-NEXT: .LBB7_15:
|
|
|
-; MCU-NEXT: movl (%ebp), %ebp
|
|
|
-; MCU-NEXT: testb %al, %al
|
|
|
+; MCU-NEXT: leal {{[0-9]+}}(%esp), %ebx
|
|
|
+; MCU-NEXT: movl (%ebx), %ebx
|
|
|
; MCU-NEXT: jne .LBB7_16
|
|
|
-; MCU-NEXT: # BB#17:
|
|
|
-; MCU-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
-; MCU-NEXT: jmp .LBB7_18
|
|
|
-; MCU-NEXT: .LBB7_16:
|
|
|
-; MCU-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
+; MCU-NEXT: .LBB7_17:
|
|
|
+; MCU-NEXT: leal {{[0-9]+}}(%esp), %ebp
|
|
|
; MCU-NEXT: .LBB7_18:
|
|
|
-; MCU-NEXT: movl (%eax), %eax
|
|
|
-; MCU-NEXT: decl %eax
|
|
|
+; MCU-NEXT: movl (%ebp), %ebp
|
|
|
; MCU-NEXT: decl %ebp
|
|
|
; MCU-NEXT: decl %ebx
|
|
|
; MCU-NEXT: decl %edi
|
|
|
; MCU-NEXT: decl %esi
|
|
|
; MCU-NEXT: decl %ecx
|
|
|
-; MCU-NEXT: movl %ecx, 20(%edx)
|
|
|
-; MCU-NEXT: movl %esi, 16(%edx)
|
|
|
-; MCU-NEXT: movl %edi, 12(%edx)
|
|
|
-; MCU-NEXT: movl %ebx, 8(%edx)
|
|
|
-; MCU-NEXT: movl %ebp, 4(%edx)
|
|
|
-; MCU-NEXT: movl %eax, (%edx)
|
|
|
+; MCU-NEXT: decl %eax
|
|
|
+; MCU-NEXT: movl %eax, 20(%edx)
|
|
|
+; MCU-NEXT: movl %ecx, 16(%edx)
|
|
|
+; MCU-NEXT: movl %esi, 12(%edx)
|
|
|
+; MCU-NEXT: movl %edi, 8(%edx)
|
|
|
+; MCU-NEXT: movl %ebx, 4(%edx)
|
|
|
+; MCU-NEXT: movl %ebp, (%edx)
|
|
|
; MCU-NEXT: popl %esi
|
|
|
; MCU-NEXT: popl %edi
|
|
|
; MCU-NEXT: popl %ebx
|