@@ -191,3 +191,127 @@ bb2:
191
191
ret i32 127
192
192
}
193
193
194
+ define i32 @icmp_i1_uge (i32 %a , i32 %b ) {
195
+ ; CHECK-LABEL: icmp_i1_uge(
196
+ ; CHECK: {
197
+ ; CHECK-NEXT: .reg .pred %p<4>;
198
+ ; CHECK-NEXT: .reg .b32 %r<5>;
199
+ ; CHECK-EMPTY:
200
+ ; CHECK-NEXT: // %bb.0:
201
+ ; CHECK-NEXT: ld.param.u32 %r1, [icmp_i1_uge_param_0];
202
+ ; CHECK-NEXT: setp.lt.s32 %p1, %r1, 2;
203
+ ; CHECK-NEXT: ld.param.u32 %r2, [icmp_i1_uge_param_1];
204
+ ; CHECK-NEXT: setp.gt.s32 %p2, %r2, 1;
205
+ ; CHECK-NEXT: and.pred %p3, %p2, %p1;
206
+ ; CHECK-NEXT: @%p3 bra $L__BB6_2;
207
+ ; CHECK-NEXT: // %bb.1: // %bb1
208
+ ; CHECK-NEXT: mov.b32 %r4, 1;
209
+ ; CHECK-NEXT: st.param.b32 [func_retval0], %r4;
210
+ ; CHECK-NEXT: ret;
211
+ ; CHECK-NEXT: $L__BB6_2: // %bb2
212
+ ; CHECK-NEXT: mov.b32 %r3, 127;
213
+ ; CHECK-NEXT: st.param.b32 [func_retval0], %r3;
214
+ ; CHECK-NEXT: ret;
215
+ %p1 = icmp sgt i32 %a , 1
216
+ %p2 = icmp sgt i32 %b , 1
217
+ %c = icmp uge i1 %p1 , %p2
218
+ br i1 %c , label %bb1 , label %bb2
219
+ bb1:
220
+ ret i32 1
221
+ bb2:
222
+ ret i32 127
223
+ }
224
+
225
+ define i32 @icmp_i1_ugt (i32 %a , i32 %b ) {
226
+ ; CHECK-LABEL: icmp_i1_ugt(
227
+ ; CHECK: {
228
+ ; CHECK-NEXT: .reg .pred %p<4>;
229
+ ; CHECK-NEXT: .reg .b32 %r<5>;
230
+ ; CHECK-EMPTY:
231
+ ; CHECK-NEXT: // %bb.0:
232
+ ; CHECK-NEXT: ld.param.u32 %r1, [icmp_i1_ugt_param_0];
233
+ ; CHECK-NEXT: setp.lt.s32 %p1, %r1, 2;
234
+ ; CHECK-NEXT: ld.param.u32 %r2, [icmp_i1_ugt_param_1];
235
+ ; CHECK-NEXT: setp.gt.s32 %p2, %r2, 1;
236
+ ; CHECK-NEXT: or.pred %p3, %p2, %p1;
237
+ ; CHECK-NEXT: @%p3 bra $L__BB7_2;
238
+ ; CHECK-NEXT: // %bb.1: // %bb1
239
+ ; CHECK-NEXT: mov.b32 %r4, 1;
240
+ ; CHECK-NEXT: st.param.b32 [func_retval0], %r4;
241
+ ; CHECK-NEXT: ret;
242
+ ; CHECK-NEXT: $L__BB7_2: // %bb2
243
+ ; CHECK-NEXT: mov.b32 %r3, 127;
244
+ ; CHECK-NEXT: st.param.b32 [func_retval0], %r3;
245
+ ; CHECK-NEXT: ret;
246
+ %p1 = icmp sgt i32 %a , 1
247
+ %p2 = icmp sgt i32 %b , 1
248
+ %c = icmp ugt i1 %p1 , %p2
249
+ br i1 %c , label %bb1 , label %bb2
250
+ bb1:
251
+ ret i32 1
252
+ bb2:
253
+ ret i32 127
254
+ }
255
+
256
+ define i32 @icmp_i1_ule (i32 %a , i32 %b ) {
257
+ ; CHECK-LABEL: icmp_i1_ule(
258
+ ; CHECK: {
259
+ ; CHECK-NEXT: .reg .pred %p<4>;
260
+ ; CHECK-NEXT: .reg .b32 %r<5>;
261
+ ; CHECK-EMPTY:
262
+ ; CHECK-NEXT: // %bb.0:
263
+ ; CHECK-NEXT: ld.param.u32 %r1, [icmp_i1_ule_param_0];
264
+ ; CHECK-NEXT: setp.gt.s32 %p1, %r1, 1;
265
+ ; CHECK-NEXT: ld.param.u32 %r2, [icmp_i1_ule_param_1];
266
+ ; CHECK-NEXT: setp.lt.s32 %p2, %r2, 2;
267
+ ; CHECK-NEXT: and.pred %p3, %p1, %p2;
268
+ ; CHECK-NEXT: @%p3 bra $L__BB8_2;
269
+ ; CHECK-NEXT: // %bb.1: // %bb1
270
+ ; CHECK-NEXT: mov.b32 %r4, 1;
271
+ ; CHECK-NEXT: st.param.b32 [func_retval0], %r4;
272
+ ; CHECK-NEXT: ret;
273
+ ; CHECK-NEXT: $L__BB8_2: // %bb2
274
+ ; CHECK-NEXT: mov.b32 %r3, 127;
275
+ ; CHECK-NEXT: st.param.b32 [func_retval0], %r3;
276
+ ; CHECK-NEXT: ret;
277
+ %p1 = icmp sgt i32 %a , 1
278
+ %p2 = icmp sgt i32 %b , 1
279
+ %c = icmp ule i1 %p1 , %p2
280
+ br i1 %c , label %bb1 , label %bb2
281
+ bb1:
282
+ ret i32 1
283
+ bb2:
284
+ ret i32 127
285
+ }
286
+
287
+ define i32 @icmp_i1_ult (i32 %a , i32 %b ) {
288
+ ; CHECK-LABEL: icmp_i1_ult(
289
+ ; CHECK: {
290
+ ; CHECK-NEXT: .reg .pred %p<4>;
291
+ ; CHECK-NEXT: .reg .b32 %r<5>;
292
+ ; CHECK-EMPTY:
293
+ ; CHECK-NEXT: // %bb.0:
294
+ ; CHECK-NEXT: ld.param.u32 %r1, [icmp_i1_ult_param_0];
295
+ ; CHECK-NEXT: setp.gt.s32 %p1, %r1, 1;
296
+ ; CHECK-NEXT: ld.param.u32 %r2, [icmp_i1_ult_param_1];
297
+ ; CHECK-NEXT: setp.lt.s32 %p2, %r2, 2;
298
+ ; CHECK-NEXT: or.pred %p3, %p1, %p2;
299
+ ; CHECK-NEXT: @%p3 bra $L__BB9_2;
300
+ ; CHECK-NEXT: // %bb.1: // %bb1
301
+ ; CHECK-NEXT: mov.b32 %r4, 1;
302
+ ; CHECK-NEXT: st.param.b32 [func_retval0], %r4;
303
+ ; CHECK-NEXT: ret;
304
+ ; CHECK-NEXT: $L__BB9_2: // %bb2
305
+ ; CHECK-NEXT: mov.b32 %r3, 127;
306
+ ; CHECK-NEXT: st.param.b32 [func_retval0], %r3;
307
+ ; CHECK-NEXT: ret;
308
+ %p1 = icmp sgt i32 %a , 1
309
+ %p2 = icmp sgt i32 %b , 1
310
+ %c = icmp ult i1 %p1 , %p2
311
+ br i1 %c , label %bb1 , label %bb2
312
+ bb1:
313
+ ret i32 1
314
+ bb2:
315
+ ret i32 127
316
+ }
317
+
0 commit comments