5
5
define i1 @fcmp_trunc (double %0 ) {
6
6
; CHECK-LABEL: define i1 @fcmp_trunc(
7
7
; CHECK-SAME: double [[TMP0:%.*]]) {
8
- ; CHECK-NEXT: [[RESULT:%.*]] = fcmp oge double [[TMP0]], 1.000000e+02
8
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp oge double [[TMP0]], 0x4058FFFFF0000000
9
9
; CHECK-NEXT: ret i1 [[RESULT]]
10
10
;
11
11
%trunc = fptrunc double %0 to float
12
12
%result = fcmp oge float %trunc , 1 .000000e+02
13
13
ret i1 %result
14
14
}
15
15
16
+ define i1 @fcmp_trunc_ult (double %0 ) {
17
+ ; CHECK-LABEL: define i1 @fcmp_trunc_ult(
18
+ ; CHECK-SAME: double [[TMP0:%.*]]) {
19
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp ult double [[TMP0]], 0x4068FFFFF0000000
20
+ ; CHECK-NEXT: ret i1 [[RESULT]]
21
+ ;
22
+ %trunc = fptrunc double %0 to float
23
+ %result = fcmp ult float %trunc , 2 .000000e+02
24
+ ret i1 %result
25
+ }
26
+
27
+ define i1 @fcmp_trunc_ole (double %0 ) {
28
+ ; CHECK-LABEL: define i1 @fcmp_trunc_ole(
29
+ ; CHECK-SAME: double [[TMP0:%.*]]) {
30
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp ole double [[TMP0]], 0x4072C00010000000
31
+ ; CHECK-NEXT: ret i1 [[RESULT]]
32
+ ;
33
+ %trunc = fptrunc double %0 to float
34
+ %result = fcmp ole float %trunc , 3 .000000e+02
35
+ ret i1 %result
36
+ }
37
+
38
+ define i1 @fcmp_trunc_ogt (double %0 ) {
39
+ ; CHECK-LABEL: define i1 @fcmp_trunc_ogt(
40
+ ; CHECK-SAME: double [[TMP0:%.*]]) {
41
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp ogt double [[TMP0]], 0x4079000010000000
42
+ ; CHECK-NEXT: ret i1 [[RESULT]]
43
+ ;
44
+ %trunc = fptrunc double %0 to float
45
+ %result = fcmp ogt float %trunc , 4 .000000e+02
46
+ ret i1 %result
47
+ }
48
+
49
+ define i1 @fcmp_trunc_zero (double %0 ) {
50
+ ; CHECK-LABEL: define i1 @fcmp_trunc_zero(
51
+ ; CHECK-SAME: double [[TMP0:%.*]]) {
52
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp oge double [[TMP0]], 0xB690000000000000
53
+ ; CHECK-NEXT: ret i1 [[RESULT]]
54
+ ;
55
+ %trunc = fptrunc double %0 to float
56
+ %result = fcmp oge float %trunc , 0 .000000
57
+ ret i1 %result
58
+ }
59
+
16
60
define i1 @fcmp_trunc_with_nnan (double %0 ) {
17
61
; CHECK-LABEL: define i1 @fcmp_trunc_with_nnan(
18
62
; CHECK-SAME: double [[TMP0:%.*]]) {
19
- ; CHECK-NEXT: [[RESULT:%.*]] = fcmp nnan oge double [[TMP0]], 1.000000e+02
63
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp nnan oge double [[TMP0]], 0x4058FFFFF0000000
20
64
; CHECK-NEXT: ret i1 [[RESULT]]
21
65
;
22
66
%trunc = fptrunc double %0 to float
@@ -27,7 +71,7 @@ define i1 @fcmp_trunc_with_nnan(double %0) {
27
71
define i1 @fcmp_trunc_with_ninf (double %0 ) {
28
72
; CHECK-LABEL: define i1 @fcmp_trunc_with_ninf(
29
73
; CHECK-SAME: double [[TMP0:%.*]]) {
30
- ; CHECK-NEXT: [[RESULT:%.*]] = fcmp ninf oge double [[TMP0]], 1.000000e+02
74
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp ninf oge double [[TMP0]], 0x4058FFFFF0000000
31
75
; CHECK-NEXT: ret i1 [[RESULT]]
32
76
;
33
77
%trunc = fptrunc double %0 to float
@@ -38,7 +82,7 @@ define i1 @fcmp_trunc_with_ninf(double %0) {
38
82
define i1 @fcmp_trunc_with_nsz (double %0 ) {
39
83
; CHECK-LABEL: define i1 @fcmp_trunc_with_nsz(
40
84
; CHECK-SAME: double [[TMP0:%.*]]) {
41
- ; CHECK-NEXT: [[RESULT:%.*]] = fcmp nsz oge double [[TMP0]], 1.000000e+02
85
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp nsz oge double [[TMP0]], 0x4058FFFFF0000000
42
86
; CHECK-NEXT: ret i1 [[RESULT]]
43
87
;
44
88
%trunc = fptrunc double %0 to float
@@ -49,7 +93,7 @@ define i1 @fcmp_trunc_with_nsz(double %0) {
49
93
define i1 @fcmp_trunc_with_reassoc (double %0 ) {
50
94
; CHECK-LABEL: define i1 @fcmp_trunc_with_reassoc(
51
95
; CHECK-SAME: double [[TMP0:%.*]]) {
52
- ; CHECK-NEXT: [[RESULT:%.*]] = fcmp reassoc oge double [[TMP0]], 1.000000e+02
96
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp reassoc oge double [[TMP0]], 0x4058FFFFF0000000
53
97
; CHECK-NEXT: ret i1 [[RESULT]]
54
98
;
55
99
%trunc = fptrunc double %0 to float
@@ -60,7 +104,7 @@ define i1 @fcmp_trunc_with_reassoc(double %0) {
60
104
define i1 @fcmp_trunc_with_fast (double %0 ) {
61
105
; CHECK-LABEL: define i1 @fcmp_trunc_with_fast(
62
106
; CHECK-SAME: double [[TMP0:%.*]]) {
63
- ; CHECK-NEXT: [[RESULT:%.*]] = fcmp fast oge double [[TMP0]], 1.000000e+02
107
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp fast oge double [[TMP0]], 0x4058FFFFF0000000
64
108
; CHECK-NEXT: ret i1 [[RESULT]]
65
109
;
66
110
%trunc = fptrunc double %0 to float
@@ -71,29 +115,29 @@ define i1 @fcmp_trunc_with_fast(double %0) {
71
115
define <4 x i1 > @fcmp_vec_trunc (<4 x double > %0 ) {
72
116
; CHECK-LABEL: define <4 x i1> @fcmp_vec_trunc(
73
117
; CHECK-SAME: <4 x double> [[TMP0:%.*]]) {
74
- ; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <4 x double> [[TMP0]], <double 1.000000e+00 , double 2.000000e+00 , double 3.000000e+00 , double 4.000000e+00 >
118
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp olt <4 x double> [[TMP0]], <double 0x3FEFFFFFF0000000 , double 0x3FEFFFFFF0000000 , double 0x3FEFFFFFF0000000 , double 0x3FEFFFFFF0000000 >
75
119
; CHECK-NEXT: ret <4 x i1> [[CMP]]
76
120
;
77
121
%vec = fptrunc <4 x double > %0 to <4 x float >
78
- %cmp = fcmp olt <4 x float > %vec , <float 1 .0 , float 2 .0 , float 3 .0 , float 4 .0 >
122
+ %cmp = fcmp olt <4 x float > %vec , <float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 >
79
123
ret <4 x i1 > %cmp
80
124
}
81
125
82
- define <4 x i1 > @fcmp_vec_trunc_with_flag (< 4 x double > %0 ) {
83
- ; CHECK-LABEL: define <4 x i1> @fcmp_vec_trunc_with_flag (
84
- ; CHECK-SAME: <4 x double> [[TMP0:%.*]]) {
85
- ; CHECK-NEXT: [[CMP:%.*]] = fcmp fast olt <4 x double> [[TMP0]], <double 1.000000e+00, double 2.000000e+00, double 3.000000e+00, double 4.000000e+00 >
86
- ; CHECK-NEXT: ret <4 x i1> [[CMP]]
126
+ define <1 x i1 > @fcmp_vec_trunc_scalar (< 1 x double > %0 ) {
127
+ ; CHECK-LABEL: define <1 x i1> @fcmp_vec_trunc_scalar (
128
+ ; CHECK-SAME: <1 x double> [[TMP0:%.*]]) {
129
+ ; CHECK-NEXT: [[CMP:%.*]] = fcmp fast olt <1 x double> [[TMP0]], <double 0x3FEFFFFFF0000000 >
130
+ ; CHECK-NEXT: ret <1 x i1> [[CMP]]
87
131
;
88
- %vec = fptrunc <4 x double > %0 to <4 x float >
89
- %cmp = fcmp fast olt <4 x float > %vec , <float 1 . 0 , float 2 . 0 , float 3 . 0 , float 4 .0 >
90
- ret <4 x i1 > %cmp
132
+ %vec = fptrunc <1 x double > %0 to <1 x float >
133
+ %cmp = fcmp fast olt <1 x float > %vec , <float 1 .0 >
134
+ ret <1 x i1 > %cmp
91
135
}
92
136
93
137
define i1 @fcmp_trunc_fp128 (fp128 %0 ) {
94
138
; CHECK-LABEL: define i1 @fcmp_trunc_fp128(
95
139
; CHECK-SAME: fp128 [[TMP0:%.*]]) {
96
- ; CHECK-NEXT: [[RESULT:%.*]] = fcmp fast oge fp128 [[TMP0]], 0xL00000000000000004005900000000000
140
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp fast oge fp128 [[TMP0]], 0xL000000000000000040058FFFFF000000
97
141
; CHECK-NEXT: ret i1 [[RESULT]]
98
142
;
99
143
%trunc = fptrunc fp128 %0 to float
@@ -104,7 +148,7 @@ define i1 @fcmp_trunc_fp128(fp128 %0) {
104
148
define i1 @fcmp_trunc_x86_fp80 (x86_fp80 %0 ) {
105
149
; CHECK-LABEL: define i1 @fcmp_trunc_x86_fp80(
106
150
; CHECK-SAME: x86_fp80 [[TMP0:%.*]]) {
107
- ; CHECK-NEXT: [[RESULT:%.*]] = fcmp fast oge x86_fp80 [[TMP0]], 0xK4005C800000000000000
151
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp fast oge x86_fp80 [[TMP0]], 0xK4005C7FFFF8000000000
108
152
; CHECK-NEXT: ret i1 [[RESULT]]
109
153
;
110
154
%trunc = fptrunc x86_fp80 %0 to float
@@ -115,7 +159,7 @@ define i1 @fcmp_trunc_x86_fp80(x86_fp80 %0) {
115
159
define i1 @fcmp_trunc_ppc_fp128 (ppc_fp128 %0 ) {
116
160
; CHECK-LABEL: define i1 @fcmp_trunc_ppc_fp128(
117
161
; CHECK-SAME: ppc_fp128 [[TMP0:%.*]]) {
118
- ; CHECK-NEXT: [[RESULT:%.*]] = fcmp fast oge ppc_fp128 [[TMP0]], 0xM40590000000000000000000000000000
162
+ ; CHECK-NEXT: [[RESULT:%.*]] = fcmp fast oge ppc_fp128 [[TMP0]], 0xM4058FFFFF0000000BD00000000000000
119
163
; CHECK-NEXT: ret i1 [[RESULT]]
120
164
;
121
165
%trunc = fptrunc ppc_fp128 %0 to float
0 commit comments