1
1
; 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
4
4
5
5
; PR19059
6
6
7
7
define 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
17
17
;
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
27
27
%i = fptosi double %d to i32
28
28
%e = sitofp i32 %i to double
29
29
%c = fcmp oeq double %d , %e
@@ -32,24 +32,24 @@ define i32 @isint_return(double %d) nounwind {
32
32
}
33
33
34
34
define 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
43
43
;
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
53
53
%i = fptosi float %f to i32
54
54
%g = sitofp i32 %i to float
55
55
%c = fcmp oeq float %f , %g
@@ -60,32 +60,32 @@ define i32 @isint_float_return(float %f) nounwind {
60
60
declare void @foo ()
61
61
62
62
define 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
76
76
;
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
89
89
%i = fptosi double %d to i32
90
90
%e = sitofp i32 %i to double
91
91
%c = fcmp oeq double %d , %e
0 commit comments