11; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2- ; RUN: llc < %s -mtriple=x86_64-pc-unknown -mattr=+sse2 | FileCheck -check-prefix=CHECK64 %s
3- ; RUN: llc < %s -mtriple=i686-pc-unknown -mattr=+sse2 | FileCheck -check-prefix=CHECK32 %s
2+ ; RUN: llc < %s -mtriple=x86_64-pc-unknown -mattr=+sse2 | FileCheck -check-prefix=X64 %s
3+ ; RUN: llc < %s -mtriple=i686-pc-unknown -mattr=+sse2 | FileCheck -check-prefix=X86 %s
44
55; PR19059
66
77define i32 @isint_return (double %d ) nounwind {
8- ; CHECK64 -LABEL: isint_return:
9- ; CHECK64 : # %bb.0:
10- ; CHECK64 -NEXT: cvttpd2dq %xmm0, %xmm1
11- ; CHECK64 -NEXT: cvtdq2pd %xmm1, %xmm1
12- ; CHECK64 -NEXT: cmpeqsd %xmm0, %xmm1
13- ; CHECK64 -NEXT: movq %xmm1, %rax
14- ; CHECK64 -NEXT: andl $1, %eax
15- ; CHECK64 -NEXT: # kill: def $eax killed $eax killed $rax
16- ; CHECK64 -NEXT: retq
8+ ; X64 -LABEL: isint_return:
9+ ; X64 : # %bb.0:
10+ ; X64 -NEXT: cvttpd2dq %xmm0, %xmm1
11+ ; X64 -NEXT: cvtdq2pd %xmm1, %xmm1
12+ ; X64 -NEXT: cmpeqsd %xmm0, %xmm1
13+ ; X64 -NEXT: movq %xmm1, %rax
14+ ; X64 -NEXT: andl $1, %eax
15+ ; X64 -NEXT: # kill: def $eax killed $eax killed $rax
16+ ; X64 -NEXT: retq
1717;
18- ; CHECK32 -LABEL: isint_return:
19- ; CHECK32 : # %bb.0:
20- ; CHECK32 -NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
21- ; CHECK32 -NEXT: cvttpd2dq %xmm0, %xmm1
22- ; CHECK32 -NEXT: cvtdq2pd %xmm1, %xmm1
23- ; CHECK32 -NEXT: cmpeqsd %xmm0, %xmm1
24- ; CHECK32 -NEXT: movd %xmm1, %eax
25- ; CHECK32 -NEXT: andl $1, %eax
26- ; CHECK32 -NEXT: retl
18+ ; X86 -LABEL: isint_return:
19+ ; X86 : # %bb.0:
20+ ; X86 -NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
21+ ; X86 -NEXT: cvttpd2dq %xmm0, %xmm1
22+ ; X86 -NEXT: cvtdq2pd %xmm1, %xmm1
23+ ; X86 -NEXT: cmpeqsd %xmm0, %xmm1
24+ ; X86 -NEXT: movd %xmm1, %eax
25+ ; X86 -NEXT: andl $1, %eax
26+ ; X86 -NEXT: retl
2727 %i = fptosi double %d to i32
2828 %e = sitofp i32 %i to double
2929 %c = fcmp oeq double %d , %e
@@ -32,24 +32,24 @@ define i32 @isint_return(double %d) nounwind {
3232}
3333
3434define i32 @isint_float_return (float %f ) nounwind {
35- ; CHECK64 -LABEL: isint_float_return:
36- ; CHECK64 : # %bb.0:
37- ; CHECK64 -NEXT: cvttps2dq %xmm0, %xmm1
38- ; CHECK64 -NEXT: cvtdq2ps %xmm1, %xmm1
39- ; CHECK64 -NEXT: cmpeqss %xmm0, %xmm1
40- ; CHECK64 -NEXT: movd %xmm1, %eax
41- ; CHECK64 -NEXT: andl $1, %eax
42- ; CHECK64 -NEXT: retq
35+ ; X64 -LABEL: isint_float_return:
36+ ; X64 : # %bb.0:
37+ ; X64 -NEXT: cvttps2dq %xmm0, %xmm1
38+ ; X64 -NEXT: cvtdq2ps %xmm1, %xmm1
39+ ; X64 -NEXT: cmpeqss %xmm0, %xmm1
40+ ; X64 -NEXT: movd %xmm1, %eax
41+ ; X64 -NEXT: andl $1, %eax
42+ ; X64 -NEXT: retq
4343;
44- ; CHECK32 -LABEL: isint_float_return:
45- ; CHECK32 : # %bb.0:
46- ; CHECK32 -NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
47- ; CHECK32 -NEXT: cvttps2dq %xmm0, %xmm1
48- ; CHECK32 -NEXT: cvtdq2ps %xmm1, %xmm1
49- ; CHECK32 -NEXT: cmpeqss %xmm0, %xmm1
50- ; CHECK32 -NEXT: movd %xmm1, %eax
51- ; CHECK32 -NEXT: andl $1, %eax
52- ; CHECK32 -NEXT: retl
44+ ; X86 -LABEL: isint_float_return:
45+ ; X86 : # %bb.0:
46+ ; X86 -NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
47+ ; X86 -NEXT: cvttps2dq %xmm0, %xmm1
48+ ; X86 -NEXT: cvtdq2ps %xmm1, %xmm1
49+ ; X86 -NEXT: cmpeqss %xmm0, %xmm1
50+ ; X86 -NEXT: movd %xmm1, %eax
51+ ; X86 -NEXT: andl $1, %eax
52+ ; X86 -NEXT: retl
5353 %i = fptosi float %f to i32
5454 %g = sitofp i32 %i to float
5555 %c = fcmp oeq float %f , %g
@@ -60,32 +60,32 @@ define i32 @isint_float_return(float %f) nounwind {
6060declare void @foo ()
6161
6262define void @isint_branch (double %d ) nounwind {
63- ; CHECK64 -LABEL: isint_branch:
64- ; CHECK64 : # %bb.0:
65- ; CHECK64 -NEXT: cvttpd2dq %xmm0, %xmm1
66- ; CHECK64 -NEXT: cvtdq2pd %xmm1, %xmm1
67- ; CHECK64 -NEXT: ucomisd %xmm1, %xmm0
68- ; CHECK64 -NEXT: jne .LBB2_2
69- ; CHECK64 -NEXT: jp .LBB2_2
70- ; CHECK64 -NEXT: # %bb.1: # %true
71- ; CHECK64 -NEXT: pushq %rax
72- ; CHECK64 -NEXT: callq foo@PLT
73- ; CHECK64 -NEXT: popq %rax
74- ; CHECK64 -NEXT: .LBB2_2: # %false
75- ; CHECK64 -NEXT: retq
63+ ; X64 -LABEL: isint_branch:
64+ ; X64 : # %bb.0:
65+ ; X64 -NEXT: cvttpd2dq %xmm0, %xmm1
66+ ; X64 -NEXT: cvtdq2pd %xmm1, %xmm1
67+ ; X64 -NEXT: ucomisd %xmm1, %xmm0
68+ ; X64 -NEXT: jne .LBB2_2
69+ ; X64 -NEXT: jp .LBB2_2
70+ ; X64 -NEXT: # %bb.1: # %true
71+ ; X64 -NEXT: pushq %rax
72+ ; X64 -NEXT: callq foo@PLT
73+ ; X64 -NEXT: popq %rax
74+ ; X64 -NEXT: .LBB2_2: # %false
75+ ; X64 -NEXT: retq
7676;
77- ; CHECK32 -LABEL: isint_branch:
78- ; CHECK32 : # %bb.0:
79- ; CHECK32 -NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
80- ; CHECK32 -NEXT: cvttpd2dq %xmm0, %xmm1
81- ; CHECK32 -NEXT: cvtdq2pd %xmm1, %xmm1
82- ; CHECK32 -NEXT: ucomisd %xmm1, %xmm0
83- ; CHECK32 -NEXT: jne .LBB2_2
84- ; CHECK32 -NEXT: jp .LBB2_2
85- ; CHECK32 -NEXT: # %bb.1: # %true
86- ; CHECK32 -NEXT: calll foo@PLT
87- ; CHECK32 -NEXT: .LBB2_2: # %false
88- ; CHECK32 -NEXT: retl
77+ ; X86 -LABEL: isint_branch:
78+ ; X86 : # %bb.0:
79+ ; X86 -NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
80+ ; X86 -NEXT: cvttpd2dq %xmm0, %xmm1
81+ ; X86 -NEXT: cvtdq2pd %xmm1, %xmm1
82+ ; X86 -NEXT: ucomisd %xmm1, %xmm0
83+ ; X86 -NEXT: jne .LBB2_2
84+ ; X86 -NEXT: jp .LBB2_2
85+ ; X86 -NEXT: # %bb.1: # %true
86+ ; X86 -NEXT: calll foo@PLT
87+ ; X86 -NEXT: .LBB2_2: # %false
88+ ; X86 -NEXT: retl
8989 %i = fptosi double %d to i32
9090 %e = sitofp i32 %i to double
9191 %c = fcmp oeq double %d , %e
0 commit comments