|
|
|
|
@ -8,12 +8,23 @@
|
|
|
|
|
define double @test1(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test1:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmoval %eax, %ecx
|
|
|
|
|
; SSE-NEXT: fldl (%ecx)
|
|
|
|
|
; SSE-NEXT: pushl %ebp
|
|
|
|
|
; SSE-NEXT: movl %esp, %ebp
|
|
|
|
|
; SSE-NEXT: andl $-8, %esp
|
|
|
|
|
; SSE-NEXT: subl $8, %esp
|
|
|
|
|
; SSE-NEXT: movl 8(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: cmpl 12(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: ja .LBB0_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB0_3
|
|
|
|
|
; SSE-NEXT: .LBB0_1:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = [9.9E+1,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB0_3:
|
|
|
|
|
; SSE-NEXT: movsd %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: fldl (%esp)
|
|
|
|
|
; SSE-NEXT: movl %ebp, %esp
|
|
|
|
|
; SSE-NEXT: popl %ebp
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test1:
|
|
|
|
|
@ -49,12 +60,23 @@ define double @test1(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
define double @test2(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test2:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovael %eax, %ecx
|
|
|
|
|
; SSE-NEXT: fldl (%ecx)
|
|
|
|
|
; SSE-NEXT: pushl %ebp
|
|
|
|
|
; SSE-NEXT: movl %esp, %ebp
|
|
|
|
|
; SSE-NEXT: andl $-8, %esp
|
|
|
|
|
; SSE-NEXT: subl $8, %esp
|
|
|
|
|
; SSE-NEXT: movl 8(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: cmpl 12(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: jae .LBB1_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB1_3
|
|
|
|
|
; SSE-NEXT: .LBB1_1:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = [9.9E+1,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB1_3:
|
|
|
|
|
; SSE-NEXT: movsd %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: fldl (%esp)
|
|
|
|
|
; SSE-NEXT: movl %ebp, %esp
|
|
|
|
|
; SSE-NEXT: popl %ebp
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test2:
|
|
|
|
|
@ -90,12 +112,23 @@ define double @test2(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
define double @test3(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test3:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovbl %eax, %ecx
|
|
|
|
|
; SSE-NEXT: fldl (%ecx)
|
|
|
|
|
; SSE-NEXT: pushl %ebp
|
|
|
|
|
; SSE-NEXT: movl %esp, %ebp
|
|
|
|
|
; SSE-NEXT: andl $-8, %esp
|
|
|
|
|
; SSE-NEXT: subl $8, %esp
|
|
|
|
|
; SSE-NEXT: movl 8(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: cmpl 12(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: jb .LBB2_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB2_3
|
|
|
|
|
; SSE-NEXT: .LBB2_1:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = [9.9E+1,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB2_3:
|
|
|
|
|
; SSE-NEXT: movsd %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: fldl (%esp)
|
|
|
|
|
; SSE-NEXT: movl %ebp, %esp
|
|
|
|
|
; SSE-NEXT: popl %ebp
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test3:
|
|
|
|
|
@ -131,12 +164,23 @@ define double @test3(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
define double @test4(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test4:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovbel %eax, %ecx
|
|
|
|
|
; SSE-NEXT: fldl (%ecx)
|
|
|
|
|
; SSE-NEXT: pushl %ebp
|
|
|
|
|
; SSE-NEXT: movl %esp, %ebp
|
|
|
|
|
; SSE-NEXT: andl $-8, %esp
|
|
|
|
|
; SSE-NEXT: subl $8, %esp
|
|
|
|
|
; SSE-NEXT: movl 8(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: cmpl 12(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: jbe .LBB3_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB3_3
|
|
|
|
|
; SSE-NEXT: .LBB3_1:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = [9.9E+1,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB3_3:
|
|
|
|
|
; SSE-NEXT: movsd %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: fldl (%esp)
|
|
|
|
|
; SSE-NEXT: movl %ebp, %esp
|
|
|
|
|
; SSE-NEXT: popl %ebp
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test4:
|
|
|
|
|
@ -172,12 +216,23 @@ define double @test4(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
define double @test5(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test5:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovgl %eax, %ecx
|
|
|
|
|
; SSE-NEXT: fldl (%ecx)
|
|
|
|
|
; SSE-NEXT: pushl %ebp
|
|
|
|
|
; SSE-NEXT: movl %esp, %ebp
|
|
|
|
|
; SSE-NEXT: andl $-8, %esp
|
|
|
|
|
; SSE-NEXT: subl $8, %esp
|
|
|
|
|
; SSE-NEXT: movl 8(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: cmpl 12(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: jg .LBB4_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB4_3
|
|
|
|
|
; SSE-NEXT: .LBB4_1:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = [9.9E+1,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB4_3:
|
|
|
|
|
; SSE-NEXT: movsd %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: fldl (%esp)
|
|
|
|
|
; SSE-NEXT: movl %ebp, %esp
|
|
|
|
|
; SSE-NEXT: popl %ebp
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test5:
|
|
|
|
|
@ -215,12 +270,23 @@ define double @test5(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
define double @test6(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test6:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovgel %eax, %ecx
|
|
|
|
|
; SSE-NEXT: fldl (%ecx)
|
|
|
|
|
; SSE-NEXT: pushl %ebp
|
|
|
|
|
; SSE-NEXT: movl %esp, %ebp
|
|
|
|
|
; SSE-NEXT: andl $-8, %esp
|
|
|
|
|
; SSE-NEXT: subl $8, %esp
|
|
|
|
|
; SSE-NEXT: movl 8(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: cmpl 12(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: jge .LBB5_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB5_3
|
|
|
|
|
; SSE-NEXT: .LBB5_1:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = [9.9E+1,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB5_3:
|
|
|
|
|
; SSE-NEXT: movsd %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: fldl (%esp)
|
|
|
|
|
; SSE-NEXT: movl %ebp, %esp
|
|
|
|
|
; SSE-NEXT: popl %ebp
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test6:
|
|
|
|
|
@ -258,12 +324,23 @@ define double @test6(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
define double @test7(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test7:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovll %eax, %ecx
|
|
|
|
|
; SSE-NEXT: fldl (%ecx)
|
|
|
|
|
; SSE-NEXT: pushl %ebp
|
|
|
|
|
; SSE-NEXT: movl %esp, %ebp
|
|
|
|
|
; SSE-NEXT: andl $-8, %esp
|
|
|
|
|
; SSE-NEXT: subl $8, %esp
|
|
|
|
|
; SSE-NEXT: movl 8(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: cmpl 12(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: jl .LBB6_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB6_3
|
|
|
|
|
; SSE-NEXT: .LBB6_1:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = [9.9E+1,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB6_3:
|
|
|
|
|
; SSE-NEXT: movsd %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: fldl (%esp)
|
|
|
|
|
; SSE-NEXT: movl %ebp, %esp
|
|
|
|
|
; SSE-NEXT: popl %ebp
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test7:
|
|
|
|
|
@ -301,12 +378,23 @@ define double @test7(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
define double @test8(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test8:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovlel %eax, %ecx
|
|
|
|
|
; SSE-NEXT: fldl (%ecx)
|
|
|
|
|
; SSE-NEXT: pushl %ebp
|
|
|
|
|
; SSE-NEXT: movl %esp, %ebp
|
|
|
|
|
; SSE-NEXT: andl $-8, %esp
|
|
|
|
|
; SSE-NEXT: subl $8, %esp
|
|
|
|
|
; SSE-NEXT: movl 8(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: cmpl 12(%ebp), %eax
|
|
|
|
|
; SSE-NEXT: jle .LBB7_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB7_3
|
|
|
|
|
; SSE-NEXT: .LBB7_1:
|
|
|
|
|
; SSE-NEXT: movsd {{.*#+}} xmm0 = [9.9E+1,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB7_3:
|
|
|
|
|
; SSE-NEXT: movsd %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: fldl (%esp)
|
|
|
|
|
; SSE-NEXT: movl %ebp, %esp
|
|
|
|
|
; SSE-NEXT: popl %ebp
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test8:
|
|
|
|
|
@ -344,34 +432,62 @@ define double @test8(i32 %a, i32 %b, double %x) nounwind {
|
|
|
|
|
define float @test9(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test9:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: pushl %eax
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmoval %eax, %ecx
|
|
|
|
|
; SSE-NEXT: flds (%ecx)
|
|
|
|
|
; SSE-NEXT: ja .LBB8_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB8_3
|
|
|
|
|
; SSE-NEXT: .LBB8_1:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB8_3:
|
|
|
|
|
; SSE-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: flds (%esp)
|
|
|
|
|
; SSE-NEXT: popl %eax
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test9:
|
|
|
|
|
; NOSSE: # %bb.0:
|
|
|
|
|
; NOSSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE-NEXT: cmoval %eax, %ecx
|
|
|
|
|
; NOSSE-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE-NEXT: retl
|
|
|
|
|
; NOSSE2-LABEL: test9:
|
|
|
|
|
; NOSSE2: # %bb.0:
|
|
|
|
|
; NOSSE2-NEXT: pushl %eax
|
|
|
|
|
; NOSSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: ja .LBB8_1
|
|
|
|
|
; NOSSE2-NEXT: # %bb.2:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; NOSSE2-NEXT: jmp .LBB8_3
|
|
|
|
|
; NOSSE2-NEXT: .LBB8_1:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; NOSSE2-NEXT: .LBB8_3:
|
|
|
|
|
; NOSSE2-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; NOSSE2-NEXT: flds (%esp)
|
|
|
|
|
; NOSSE2-NEXT: popl %eax
|
|
|
|
|
; NOSSE2-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE1-LABEL: test9:
|
|
|
|
|
; NOSSE1: # %bb.0:
|
|
|
|
|
; NOSSE1-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOSSE1-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOSSE1-NEXT: fxch %st(1)
|
|
|
|
|
; NOSSE1-NEXT: fcmovnbe %st(1), %st
|
|
|
|
|
; NOSSE1-NEXT: fstp %st(1)
|
|
|
|
|
; NOSSE1-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOCMOV-LABEL: test9:
|
|
|
|
|
; NOCMOV: # %bb.0:
|
|
|
|
|
; NOCMOV-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOCMOV-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOCMOV-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOCMOV-NEXT: ja .LBB8_2
|
|
|
|
|
; NOCMOV-NEXT: # %bb.1:
|
|
|
|
|
; NOCMOV-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(0)
|
|
|
|
|
; NOCMOV-NEXT: fldz
|
|
|
|
|
; NOCMOV-NEXT: fxch %st(1)
|
|
|
|
|
; NOCMOV-NEXT: .LBB8_2:
|
|
|
|
|
; NOCMOV-NEXT: flds (%eax)
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(1)
|
|
|
|
|
; NOCMOV-NEXT: retl
|
|
|
|
|
%cmp = icmp ugt i32 %a, %b
|
|
|
|
|
%sel = select i1 %cmp, float 99.0, float %x
|
|
|
|
|
@ -381,34 +497,62 @@ define float @test9(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
define float @test10(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test10:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: pushl %eax
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovael %eax, %ecx
|
|
|
|
|
; SSE-NEXT: flds (%ecx)
|
|
|
|
|
; SSE-NEXT: jae .LBB9_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB9_3
|
|
|
|
|
; SSE-NEXT: .LBB9_1:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB9_3:
|
|
|
|
|
; SSE-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: flds (%esp)
|
|
|
|
|
; SSE-NEXT: popl %eax
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test10:
|
|
|
|
|
; NOSSE: # %bb.0:
|
|
|
|
|
; NOSSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE-NEXT: cmovael %eax, %ecx
|
|
|
|
|
; NOSSE-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE-NEXT: retl
|
|
|
|
|
; NOSSE2-LABEL: test10:
|
|
|
|
|
; NOSSE2: # %bb.0:
|
|
|
|
|
; NOSSE2-NEXT: pushl %eax
|
|
|
|
|
; NOSSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: jae .LBB9_1
|
|
|
|
|
; NOSSE2-NEXT: # %bb.2:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; NOSSE2-NEXT: jmp .LBB9_3
|
|
|
|
|
; NOSSE2-NEXT: .LBB9_1:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; NOSSE2-NEXT: .LBB9_3:
|
|
|
|
|
; NOSSE2-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; NOSSE2-NEXT: flds (%esp)
|
|
|
|
|
; NOSSE2-NEXT: popl %eax
|
|
|
|
|
; NOSSE2-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE1-LABEL: test10:
|
|
|
|
|
; NOSSE1: # %bb.0:
|
|
|
|
|
; NOSSE1-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOSSE1-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOSSE1-NEXT: fxch %st(1)
|
|
|
|
|
; NOSSE1-NEXT: fcmovnb %st(1), %st
|
|
|
|
|
; NOSSE1-NEXT: fstp %st(1)
|
|
|
|
|
; NOSSE1-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOCMOV-LABEL: test10:
|
|
|
|
|
; NOCMOV: # %bb.0:
|
|
|
|
|
; NOCMOV-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOCMOV-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOCMOV-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOCMOV-NEXT: jae .LBB9_2
|
|
|
|
|
; NOCMOV-NEXT: # %bb.1:
|
|
|
|
|
; NOCMOV-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(0)
|
|
|
|
|
; NOCMOV-NEXT: fldz
|
|
|
|
|
; NOCMOV-NEXT: fxch %st(1)
|
|
|
|
|
; NOCMOV-NEXT: .LBB9_2:
|
|
|
|
|
; NOCMOV-NEXT: flds (%eax)
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(1)
|
|
|
|
|
; NOCMOV-NEXT: retl
|
|
|
|
|
%cmp = icmp uge i32 %a, %b
|
|
|
|
|
%sel = select i1 %cmp, float 99.0, float %x
|
|
|
|
|
@ -418,34 +562,62 @@ define float @test10(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
define float @test11(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test11:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: pushl %eax
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovbl %eax, %ecx
|
|
|
|
|
; SSE-NEXT: flds (%ecx)
|
|
|
|
|
; SSE-NEXT: jb .LBB10_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB10_3
|
|
|
|
|
; SSE-NEXT: .LBB10_1:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB10_3:
|
|
|
|
|
; SSE-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: flds (%esp)
|
|
|
|
|
; SSE-NEXT: popl %eax
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test11:
|
|
|
|
|
; NOSSE: # %bb.0:
|
|
|
|
|
; NOSSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE-NEXT: cmovbl %eax, %ecx
|
|
|
|
|
; NOSSE-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE-NEXT: retl
|
|
|
|
|
; NOSSE2-LABEL: test11:
|
|
|
|
|
; NOSSE2: # %bb.0:
|
|
|
|
|
; NOSSE2-NEXT: pushl %eax
|
|
|
|
|
; NOSSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: jb .LBB10_1
|
|
|
|
|
; NOSSE2-NEXT: # %bb.2:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; NOSSE2-NEXT: jmp .LBB10_3
|
|
|
|
|
; NOSSE2-NEXT: .LBB10_1:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; NOSSE2-NEXT: .LBB10_3:
|
|
|
|
|
; NOSSE2-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; NOSSE2-NEXT: flds (%esp)
|
|
|
|
|
; NOSSE2-NEXT: popl %eax
|
|
|
|
|
; NOSSE2-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE1-LABEL: test11:
|
|
|
|
|
; NOSSE1: # %bb.0:
|
|
|
|
|
; NOSSE1-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOSSE1-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOSSE1-NEXT: fxch %st(1)
|
|
|
|
|
; NOSSE1-NEXT: fcmovb %st(1), %st
|
|
|
|
|
; NOSSE1-NEXT: fstp %st(1)
|
|
|
|
|
; NOSSE1-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOCMOV-LABEL: test11:
|
|
|
|
|
; NOCMOV: # %bb.0:
|
|
|
|
|
; NOCMOV-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOCMOV-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOCMOV-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOCMOV-NEXT: jb .LBB10_2
|
|
|
|
|
; NOCMOV-NEXT: # %bb.1:
|
|
|
|
|
; NOCMOV-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(0)
|
|
|
|
|
; NOCMOV-NEXT: fldz
|
|
|
|
|
; NOCMOV-NEXT: fxch %st(1)
|
|
|
|
|
; NOCMOV-NEXT: .LBB10_2:
|
|
|
|
|
; NOCMOV-NEXT: flds (%eax)
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(1)
|
|
|
|
|
; NOCMOV-NEXT: retl
|
|
|
|
|
%cmp = icmp ult i32 %a, %b
|
|
|
|
|
%sel = select i1 %cmp, float 99.0, float %x
|
|
|
|
|
@ -455,34 +627,62 @@ define float @test11(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
define float @test12(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test12:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: pushl %eax
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovbel %eax, %ecx
|
|
|
|
|
; SSE-NEXT: flds (%ecx)
|
|
|
|
|
; SSE-NEXT: jbe .LBB11_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB11_3
|
|
|
|
|
; SSE-NEXT: .LBB11_1:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB11_3:
|
|
|
|
|
; SSE-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: flds (%esp)
|
|
|
|
|
; SSE-NEXT: popl %eax
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE-LABEL: test12:
|
|
|
|
|
; NOSSE: # %bb.0:
|
|
|
|
|
; NOSSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE-NEXT: cmovbel %eax, %ecx
|
|
|
|
|
; NOSSE-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE-NEXT: retl
|
|
|
|
|
; NOSSE2-LABEL: test12:
|
|
|
|
|
; NOSSE2: # %bb.0:
|
|
|
|
|
; NOSSE2-NEXT: pushl %eax
|
|
|
|
|
; NOSSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: jbe .LBB11_1
|
|
|
|
|
; NOSSE2-NEXT: # %bb.2:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; NOSSE2-NEXT: jmp .LBB11_3
|
|
|
|
|
; NOSSE2-NEXT: .LBB11_1:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; NOSSE2-NEXT: .LBB11_3:
|
|
|
|
|
; NOSSE2-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; NOSSE2-NEXT: flds (%esp)
|
|
|
|
|
; NOSSE2-NEXT: popl %eax
|
|
|
|
|
; NOSSE2-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE1-LABEL: test12:
|
|
|
|
|
; NOSSE1: # %bb.0:
|
|
|
|
|
; NOSSE1-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOSSE1-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOSSE1-NEXT: fxch %st(1)
|
|
|
|
|
; NOSSE1-NEXT: fcmovbe %st(1), %st
|
|
|
|
|
; NOSSE1-NEXT: fstp %st(1)
|
|
|
|
|
; NOSSE1-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOCMOV-LABEL: test12:
|
|
|
|
|
; NOCMOV: # %bb.0:
|
|
|
|
|
; NOCMOV-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOCMOV-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOCMOV-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOCMOV-NEXT: jbe .LBB11_2
|
|
|
|
|
; NOCMOV-NEXT: # %bb.1:
|
|
|
|
|
; NOCMOV-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(0)
|
|
|
|
|
; NOCMOV-NEXT: fldz
|
|
|
|
|
; NOCMOV-NEXT: fxch %st(1)
|
|
|
|
|
; NOCMOV-NEXT: .LBB11_2:
|
|
|
|
|
; NOCMOV-NEXT: flds (%eax)
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(1)
|
|
|
|
|
; NOCMOV-NEXT: retl
|
|
|
|
|
%cmp = icmp ule i32 %a, %b
|
|
|
|
|
%sel = select i1 %cmp, float 99.0, float %x
|
|
|
|
|
@ -492,46 +692,64 @@ define float @test12(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
define float @test13(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test13:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: pushl %eax
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovgl %eax, %ecx
|
|
|
|
|
; SSE-NEXT: flds (%ecx)
|
|
|
|
|
; SSE-NEXT: jg .LBB12_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB12_3
|
|
|
|
|
; SSE-NEXT: .LBB12_1:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB12_3:
|
|
|
|
|
; SSE-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: flds (%esp)
|
|
|
|
|
; SSE-NEXT: popl %eax
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE2-LABEL: test13:
|
|
|
|
|
; NOSSE2: # %bb.0:
|
|
|
|
|
; NOSSE2-NEXT: pushl %eax
|
|
|
|
|
; NOSSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE2-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE2-NEXT: cmovgl %eax, %ecx
|
|
|
|
|
; NOSSE2-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE2-NEXT: jg .LBB12_1
|
|
|
|
|
; NOSSE2-NEXT: # %bb.2:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; NOSSE2-NEXT: jmp .LBB12_3
|
|
|
|
|
; NOSSE2-NEXT: .LBB12_1:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; NOSSE2-NEXT: .LBB12_3:
|
|
|
|
|
; NOSSE2-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; NOSSE2-NEXT: flds (%esp)
|
|
|
|
|
; NOSSE2-NEXT: popl %eax
|
|
|
|
|
; NOSSE2-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE1-LABEL: test13:
|
|
|
|
|
; NOSSE1: # %bb.0:
|
|
|
|
|
; NOSSE1-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOSSE1-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: setg %al
|
|
|
|
|
; NOSSE1-NEXT: testb %al, %al
|
|
|
|
|
; NOSSE1-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE1-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE1-NEXT: cmovgl %eax, %ecx
|
|
|
|
|
; NOSSE1-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE1-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOSSE1-NEXT: fxch %st(1)
|
|
|
|
|
; NOSSE1-NEXT: fcmovne %st(1), %st
|
|
|
|
|
; NOSSE1-NEXT: fstp %st(1)
|
|
|
|
|
; NOSSE1-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOCMOV-LABEL: test13:
|
|
|
|
|
; NOCMOV: # %bb.0:
|
|
|
|
|
; NOCMOV-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOCMOV-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOCMOV-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOCMOV-NEXT: jg .LBB12_2
|
|
|
|
|
; NOCMOV-NEXT: # %bb.1:
|
|
|
|
|
; NOCMOV-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(0)
|
|
|
|
|
; NOCMOV-NEXT: fldz
|
|
|
|
|
; NOCMOV-NEXT: fxch %st(1)
|
|
|
|
|
; NOCMOV-NEXT: .LBB12_2:
|
|
|
|
|
; NOCMOV-NEXT: flds (%eax)
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(1)
|
|
|
|
|
; NOCMOV-NEXT: retl
|
|
|
|
|
%cmp = icmp sgt i32 %a, %b
|
|
|
|
|
%sel = select i1 %cmp, float 99.0, float %x
|
|
|
|
|
@ -541,46 +759,64 @@ define float @test13(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
define float @test14(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test14:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: pushl %eax
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovgel %eax, %ecx
|
|
|
|
|
; SSE-NEXT: flds (%ecx)
|
|
|
|
|
; SSE-NEXT: jge .LBB13_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB13_3
|
|
|
|
|
; SSE-NEXT: .LBB13_1:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB13_3:
|
|
|
|
|
; SSE-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: flds (%esp)
|
|
|
|
|
; SSE-NEXT: popl %eax
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE2-LABEL: test14:
|
|
|
|
|
; NOSSE2: # %bb.0:
|
|
|
|
|
; NOSSE2-NEXT: pushl %eax
|
|
|
|
|
; NOSSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE2-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE2-NEXT: cmovgel %eax, %ecx
|
|
|
|
|
; NOSSE2-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE2-NEXT: jge .LBB13_1
|
|
|
|
|
; NOSSE2-NEXT: # %bb.2:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; NOSSE2-NEXT: jmp .LBB13_3
|
|
|
|
|
; NOSSE2-NEXT: .LBB13_1:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; NOSSE2-NEXT: .LBB13_3:
|
|
|
|
|
; NOSSE2-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; NOSSE2-NEXT: flds (%esp)
|
|
|
|
|
; NOSSE2-NEXT: popl %eax
|
|
|
|
|
; NOSSE2-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE1-LABEL: test14:
|
|
|
|
|
; NOSSE1: # %bb.0:
|
|
|
|
|
; NOSSE1-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOSSE1-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: setge %al
|
|
|
|
|
; NOSSE1-NEXT: testb %al, %al
|
|
|
|
|
; NOSSE1-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE1-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE1-NEXT: cmovgel %eax, %ecx
|
|
|
|
|
; NOSSE1-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE1-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOSSE1-NEXT: fxch %st(1)
|
|
|
|
|
; NOSSE1-NEXT: fcmovne %st(1), %st
|
|
|
|
|
; NOSSE1-NEXT: fstp %st(1)
|
|
|
|
|
; NOSSE1-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOCMOV-LABEL: test14:
|
|
|
|
|
; NOCMOV: # %bb.0:
|
|
|
|
|
; NOCMOV-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOCMOV-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOCMOV-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOCMOV-NEXT: jge .LBB13_2
|
|
|
|
|
; NOCMOV-NEXT: # %bb.1:
|
|
|
|
|
; NOCMOV-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(0)
|
|
|
|
|
; NOCMOV-NEXT: fldz
|
|
|
|
|
; NOCMOV-NEXT: fxch %st(1)
|
|
|
|
|
; NOCMOV-NEXT: .LBB13_2:
|
|
|
|
|
; NOCMOV-NEXT: flds (%eax)
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(1)
|
|
|
|
|
; NOCMOV-NEXT: retl
|
|
|
|
|
%cmp = icmp sge i32 %a, %b
|
|
|
|
|
%sel = select i1 %cmp, float 99.0, float %x
|
|
|
|
|
@ -590,46 +826,64 @@ define float @test14(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
define float @test15(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test15:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: pushl %eax
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovll %eax, %ecx
|
|
|
|
|
; SSE-NEXT: flds (%ecx)
|
|
|
|
|
; SSE-NEXT: jl .LBB14_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB14_3
|
|
|
|
|
; SSE-NEXT: .LBB14_1:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB14_3:
|
|
|
|
|
; SSE-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: flds (%esp)
|
|
|
|
|
; SSE-NEXT: popl %eax
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE2-LABEL: test15:
|
|
|
|
|
; NOSSE2: # %bb.0:
|
|
|
|
|
; NOSSE2-NEXT: pushl %eax
|
|
|
|
|
; NOSSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE2-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE2-NEXT: cmovll %eax, %ecx
|
|
|
|
|
; NOSSE2-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE2-NEXT: jl .LBB14_1
|
|
|
|
|
; NOSSE2-NEXT: # %bb.2:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; NOSSE2-NEXT: jmp .LBB14_3
|
|
|
|
|
; NOSSE2-NEXT: .LBB14_1:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; NOSSE2-NEXT: .LBB14_3:
|
|
|
|
|
; NOSSE2-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; NOSSE2-NEXT: flds (%esp)
|
|
|
|
|
; NOSSE2-NEXT: popl %eax
|
|
|
|
|
; NOSSE2-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE1-LABEL: test15:
|
|
|
|
|
; NOSSE1: # %bb.0:
|
|
|
|
|
; NOSSE1-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOSSE1-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: setl %al
|
|
|
|
|
; NOSSE1-NEXT: testb %al, %al
|
|
|
|
|
; NOSSE1-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE1-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE1-NEXT: cmovll %eax, %ecx
|
|
|
|
|
; NOSSE1-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE1-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOSSE1-NEXT: fxch %st(1)
|
|
|
|
|
; NOSSE1-NEXT: fcmovne %st(1), %st
|
|
|
|
|
; NOSSE1-NEXT: fstp %st(1)
|
|
|
|
|
; NOSSE1-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOCMOV-LABEL: test15:
|
|
|
|
|
; NOCMOV: # %bb.0:
|
|
|
|
|
; NOCMOV-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOCMOV-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOCMOV-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOCMOV-NEXT: jl .LBB14_2
|
|
|
|
|
; NOCMOV-NEXT: # %bb.1:
|
|
|
|
|
; NOCMOV-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(0)
|
|
|
|
|
; NOCMOV-NEXT: fldz
|
|
|
|
|
; NOCMOV-NEXT: fxch %st(1)
|
|
|
|
|
; NOCMOV-NEXT: .LBB14_2:
|
|
|
|
|
; NOCMOV-NEXT: flds (%eax)
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(1)
|
|
|
|
|
; NOCMOV-NEXT: retl
|
|
|
|
|
%cmp = icmp slt i32 %a, %b
|
|
|
|
|
%sel = select i1 %cmp, float 99.0, float %x
|
|
|
|
|
@ -639,46 +893,64 @@ define float @test15(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
define float @test16(i32 %a, i32 %b, float %x) nounwind {
|
|
|
|
|
; SSE-LABEL: test16:
|
|
|
|
|
; SSE: # %bb.0:
|
|
|
|
|
; SSE-NEXT: pushl %eax
|
|
|
|
|
; SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; SSE-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; SSE-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; SSE-NEXT: cmovlel %eax, %ecx
|
|
|
|
|
; SSE-NEXT: flds (%ecx)
|
|
|
|
|
; SSE-NEXT: jle .LBB15_1
|
|
|
|
|
; SSE-NEXT: # %bb.2:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; SSE-NEXT: jmp .LBB15_3
|
|
|
|
|
; SSE-NEXT: .LBB15_1:
|
|
|
|
|
; SSE-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; SSE-NEXT: .LBB15_3:
|
|
|
|
|
; SSE-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; SSE-NEXT: flds (%esp)
|
|
|
|
|
; SSE-NEXT: popl %eax
|
|
|
|
|
; SSE-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE2-LABEL: test16:
|
|
|
|
|
; NOSSE2: # %bb.0:
|
|
|
|
|
; NOSSE2-NEXT: pushl %eax
|
|
|
|
|
; NOSSE2-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE2-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE2-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE2-NEXT: cmovlel %eax, %ecx
|
|
|
|
|
; NOSSE2-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE2-NEXT: jle .LBB15_1
|
|
|
|
|
; NOSSE2-NEXT: # %bb.2:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
|
|
|
|
|
; NOSSE2-NEXT: jmp .LBB15_3
|
|
|
|
|
; NOSSE2-NEXT: .LBB15_1:
|
|
|
|
|
; NOSSE2-NEXT: movss {{.*#+}} xmm0 = [9.9E+1,0.0E+0,0.0E+0,0.0E+0]
|
|
|
|
|
; NOSSE2-NEXT: .LBB15_3:
|
|
|
|
|
; NOSSE2-NEXT: movss %xmm0, (%esp)
|
|
|
|
|
; NOSSE2-NEXT: flds (%esp)
|
|
|
|
|
; NOSSE2-NEXT: popl %eax
|
|
|
|
|
; NOSSE2-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOSSE1-LABEL: test16:
|
|
|
|
|
; NOSSE1: # %bb.0:
|
|
|
|
|
; NOSSE1-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOSSE1-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOSSE1-NEXT: setle %al
|
|
|
|
|
; NOSSE1-NEXT: testb %al, %al
|
|
|
|
|
; NOSSE1-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOSSE1-NEXT: leal {{[0-9]+}}(%esp), %ecx
|
|
|
|
|
; NOSSE1-NEXT: cmovlel %eax, %ecx
|
|
|
|
|
; NOSSE1-NEXT: flds (%ecx)
|
|
|
|
|
; NOSSE1-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOSSE1-NEXT: fxch %st(1)
|
|
|
|
|
; NOSSE1-NEXT: fcmovne %st(1), %st
|
|
|
|
|
; NOSSE1-NEXT: fstp %st(1)
|
|
|
|
|
; NOSSE1-NEXT: retl
|
|
|
|
|
;
|
|
|
|
|
; NOCMOV-LABEL: test16:
|
|
|
|
|
; NOCMOV: # %bb.0:
|
|
|
|
|
; NOCMOV-NEXT: flds {{[0-9]+}}(%esp)
|
|
|
|
|
; NOCMOV-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: cmpl {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: movl ${{\.?LCPI[0-9]+_[0-9]+}}, %eax
|
|
|
|
|
; NOCMOV-NEXT: flds {{\.?LCPI[0-9]+_[0-9]+}}
|
|
|
|
|
; NOCMOV-NEXT: jle .LBB15_2
|
|
|
|
|
; NOCMOV-NEXT: # %bb.1:
|
|
|
|
|
; NOCMOV-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(0)
|
|
|
|
|
; NOCMOV-NEXT: fldz
|
|
|
|
|
; NOCMOV-NEXT: fxch %st(1)
|
|
|
|
|
; NOCMOV-NEXT: .LBB15_2:
|
|
|
|
|
; NOCMOV-NEXT: flds (%eax)
|
|
|
|
|
; NOCMOV-NEXT: fstp %st(1)
|
|
|
|
|
; NOCMOV-NEXT: retl
|
|
|
|
|
%cmp = icmp sle i32 %a, %b
|
|
|
|
|
%sel = select i1 %cmp, float 99.0, float %x
|
|
|
|
|
|