@@ -191,3 +191,127 @@ bb2:
191191 ret i32 127
192192}
193193
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