@@ -31,21 +31,21 @@ define i1 @floor_x_ogt(float %x) {
31
31
32
32
define i1 @floor_x_ugt (float %x ) {
33
33
; CHECK-LABEL: @floor_x_ugt(
34
- ; CHECK-NEXT: [[RET:%.*]] = fcmp uno float [[X:%.*]], 0.000000e+00
34
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp ninf uno float [[X:%.*]], 0.000000e+00
35
35
; CHECK-NEXT: ret i1 [[RET]]
36
36
;
37
37
%floor = call float @llvm.floor.f32 (float %x )
38
- %ret = fcmp ugt float %floor , %x
38
+ %ret = fcmp ninf ugt float %floor , %x
39
39
ret i1 %ret
40
40
}
41
41
42
42
define i1 @x_floor_oge (float %x ) {
43
43
; CHECK-LABEL: @x_floor_oge(
44
- ; CHECK-NEXT: [[RET:%.*]] = fcmp ord float [[X:%.*]], 0.000000e+00
44
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp ninf ord float [[X:%.*]], 0.000000e+00
45
45
; CHECK-NEXT: ret i1 [[RET]]
46
46
;
47
47
%floor = call float @llvm.floor.f32 (float %x )
48
- %ret = fcmp oge float %x , %floor
48
+ %ret = fcmp ninf oge float %x , %floor
49
49
ret i1 %ret
50
50
}
51
51
@@ -69,11 +69,11 @@ define i1 @x_floor_olt(float %x) {
69
69
70
70
define i1 @x_floor_ult (float %x ) {
71
71
; CHECK-LABEL: @x_floor_ult(
72
- ; CHECK-NEXT: [[RET:%.*]] = fcmp uno float [[X:%.*]], 0.000000e+00
72
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp ninf uno float [[X:%.*]], 0.000000e+00
73
73
; CHECK-NEXT: ret i1 [[RET]]
74
74
;
75
75
%floor = call float @llvm.floor.f32 (float %x )
76
- %ret = fcmp ult float %x , %floor
76
+ %ret = fcmp ninf ult float %x , %floor
77
77
ret i1 %ret
78
78
}
79
79
@@ -97,6 +97,39 @@ define i1 @x_floor_ole_neg(float %x) {
97
97
ret i1 %ret
98
98
}
99
99
100
+ define i1 @x_floor_ogt_neg (float %x ) {
101
+ ; CHECK-LABEL: @x_floor_ogt_neg(
102
+ ; CHECK-NEXT: [[FLOOR:%.*]] = call float @llvm.floor.f32(float [[X:%.*]])
103
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp ogt float [[X]], [[FLOOR]]
104
+ ; CHECK-NEXT: ret i1 [[RET]]
105
+ ;
106
+ %floor = call float @llvm.floor.f32 (float %x )
107
+ %ret = fcmp ogt float %x , %floor
108
+ ret i1 %ret
109
+ }
110
+
111
+ define i1 @x_floor_ueq_neg (float %x ) {
112
+ ; CHECK-LABEL: @x_floor_ueq_neg(
113
+ ; CHECK-NEXT: [[FLOOR:%.*]] = call float @llvm.floor.f32(float [[X:%.*]])
114
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp ueq float [[X]], [[FLOOR]]
115
+ ; CHECK-NEXT: ret i1 [[RET]]
116
+ ;
117
+ %floor = call float @llvm.floor.f32 (float %x )
118
+ %ret = fcmp ueq float %x , %floor
119
+ ret i1 %ret
120
+ }
121
+
122
+ define i1 @x_floor_une_neg (float %x ) {
123
+ ; CHECK-LABEL: @x_floor_une_neg(
124
+ ; CHECK-NEXT: [[FLOOR:%.*]] = call float @llvm.floor.f32(float [[X:%.*]])
125
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp une float [[X]], [[FLOOR]]
126
+ ; CHECK-NEXT: ret i1 [[RET]]
127
+ ;
128
+ %floor = call float @llvm.floor.f32 (float %x )
129
+ %ret = fcmp une float %x , %floor
130
+ ret i1 %ret
131
+ }
132
+
100
133
define i1 @ceil_x_oge (float %x ) {
101
134
; CHECK-LABEL: @ceil_x_oge(
102
135
; CHECK-NEXT: [[RET:%.*]] = fcmp ninf ord float [[X:%.*]], 0.000000e+00
@@ -127,21 +160,21 @@ define i1 @ceil_x_olt(float %x) {
127
160
128
161
define i1 @ceil_x_ult (float %x ) {
129
162
; CHECK-LABEL: @ceil_x_ult(
130
- ; CHECK-NEXT: [[RET:%.*]] = fcmp uno float [[X:%.*]], 0.000000e+00
163
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp ninf uno float [[X:%.*]], 0.000000e+00
131
164
; CHECK-NEXT: ret i1 [[RET]]
132
165
;
133
166
%ceil = call float @llvm.ceil.f32 (float %x )
134
- %ret = fcmp ult float %ceil , %x
167
+ %ret = fcmp ninf ult float %ceil , %x
135
168
ret i1 %ret
136
169
}
137
170
138
171
define i1 @x_ceil_ole (float %x ) {
139
172
; CHECK-LABEL: @x_ceil_ole(
140
- ; CHECK-NEXT: [[RET:%.*]] = fcmp ord float [[X:%.*]], 0.000000e+00
173
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp ninf ord float [[X:%.*]], 0.000000e+00
141
174
; CHECK-NEXT: ret i1 [[RET]]
142
175
;
143
176
%ceil = call float @llvm.ceil.f32 (float %x )
144
- %ret = fcmp ole float %x , %ceil
177
+ %ret = fcmp ninf ole float %x , %ceil
145
178
ret i1 %ret
146
179
}
147
180
@@ -165,11 +198,11 @@ define i1 @x_ceil_ogt(float %x) {
165
198
166
199
define i1 @x_ceil_ugt (float %x ) {
167
200
; CHECK-LABEL: @x_ceil_ugt(
168
- ; CHECK-NEXT: [[RET:%.*]] = fcmp uno float [[X:%.*]], 0.000000e+00
201
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp ninf uno float [[X:%.*]], 0.000000e+00
169
202
; CHECK-NEXT: ret i1 [[RET]]
170
203
;
171
204
%ceil = call float @llvm.ceil.f32 (float %x )
172
- %ret = fcmp ugt float %x , %ceil
205
+ %ret = fcmp ninf ugt float %x , %ceil
173
206
ret i1 %ret
174
207
}
175
208
@@ -192,3 +225,36 @@ define i1 @x_ceil_oge_neg(float %x) {
192
225
%ret = fcmp oge float %x , %ceil
193
226
ret i1 %ret
194
227
}
228
+
229
+ define i1 @x_ceil_olt_neg (float %x ) {
230
+ ; CHECK-LABEL: @x_ceil_olt_neg(
231
+ ; CHECK-NEXT: [[CEIL:%.*]] = call float @llvm.ceil.f32(float [[X:%.*]])
232
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp olt float [[X]], [[CEIL]]
233
+ ; CHECK-NEXT: ret i1 [[RET]]
234
+ ;
235
+ %ceil = call float @llvm.ceil.f32 (float %x )
236
+ %ret = fcmp olt float %x , %ceil
237
+ ret i1 %ret
238
+ }
239
+
240
+ define i1 @x_ceil_oeq_neg (float %x ) {
241
+ ; CHECK-LABEL: @x_ceil_oeq_neg(
242
+ ; CHECK-NEXT: [[CEIL:%.*]] = call float @llvm.ceil.f32(float [[X:%.*]])
243
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp oeq float [[X]], [[CEIL]]
244
+ ; CHECK-NEXT: ret i1 [[RET]]
245
+ ;
246
+ %ceil = call float @llvm.ceil.f32 (float %x )
247
+ %ret = fcmp oeq float %x , %ceil
248
+ ret i1 %ret
249
+ }
250
+
251
+ define i1 @x_ceil_one_neg (float %x ) {
252
+ ; CHECK-LABEL: @x_ceil_one_neg(
253
+ ; CHECK-NEXT: [[CEIL:%.*]] = call float @llvm.ceil.f32(float [[X:%.*]])
254
+ ; CHECK-NEXT: [[RET:%.*]] = fcmp one float [[X]], [[CEIL]]
255
+ ; CHECK-NEXT: ret i1 [[RET]]
256
+ ;
257
+ %ceil = call float @llvm.ceil.f32 (float %x )
258
+ %ret = fcmp one float %x , %ceil
259
+ ret i1 %ret
260
+ }
0 commit comments