1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -mattr=+2e3 | FileCheck %s
3; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -mattr=+btst16 | FileCheck %s --check-prefix=GENERIC
4
5;EQ
6define i32 @brRR_eq(i32 %x, i32 %y) {
7; CHECK-LABEL: brRR_eq:
8; CHECK:       # %bb.0: # %entry
9; CHECK-NEXT:    cmpne16 a1, a0
10; CHECK-NEXT:    bt32 .LBB0_2
11; CHECK-NEXT:  # %bb.1: # %label1
12; CHECK-NEXT:    movi16 a0, 1
13; CHECK-NEXT:    rts16
14; CHECK-NEXT:  .LBB0_2: # %label2
15; CHECK-NEXT:    movi16 a0, 0
16; CHECK-NEXT:    rts16
17;
18; GENERIC-LABEL: brRR_eq:
19; GENERIC:       # %bb.0: # %entry
20; GENERIC-NEXT:    .cfi_def_cfa_offset 0
21; GENERIC-NEXT:    subi16 sp, sp, 4
22; GENERIC-NEXT:    .cfi_def_cfa_offset 4
23; GENERIC-NEXT:    cmpne16 a1, a0
24; GENERIC-NEXT:    bt16 .LBB0_2
25; GENERIC-NEXT:  # %bb.1: # %label1
26; GENERIC-NEXT:    movi16 a0, 1
27; GENERIC-NEXT:    addi16 sp, sp, 4
28; GENERIC-NEXT:    rts16
29; GENERIC-NEXT:  .LBB0_2: # %label2
30; GENERIC-NEXT:    movi16 a0, 0
31; GENERIC-NEXT:    addi16 sp, sp, 4
32; GENERIC-NEXT:    rts16
33entry:
34  %icmp = icmp eq i32 %y, %x
35  br i1 %icmp, label %label1, label %label2
36label1:
37  ret i32 1
38label2:
39  ret i32 0
40}
41
42define i32 @brRI_eq(i32 %x) {
43; CHECK-LABEL: brRI_eq:
44; CHECK:       # %bb.0: # %entry
45; CHECK-NEXT:    cmpnei16 a0, 10
46; CHECK-NEXT:    bt32 .LBB1_2
47; CHECK-NEXT:  # %bb.1: # %label1
48; CHECK-NEXT:    movi16 a0, 1
49; CHECK-NEXT:    rts16
50; CHECK-NEXT:  .LBB1_2: # %label2
51; CHECK-NEXT:    movi16 a0, 0
52; CHECK-NEXT:    rts16
53;
54; GENERIC-LABEL: brRI_eq:
55; GENERIC:       # %bb.0: # %entry
56; GENERIC-NEXT:    .cfi_def_cfa_offset 0
57; GENERIC-NEXT:    subi16 sp, sp, 4
58; GENERIC-NEXT:    .cfi_def_cfa_offset 4
59; GENERIC-NEXT:    cmpnei16 a0, 10
60; GENERIC-NEXT:    bt16 .LBB1_2
61; GENERIC-NEXT:  # %bb.1: # %label1
62; GENERIC-NEXT:    movi16 a0, 1
63; GENERIC-NEXT:    addi16 sp, sp, 4
64; GENERIC-NEXT:    rts16
65; GENERIC-NEXT:  .LBB1_2: # %label2
66; GENERIC-NEXT:    movi16 a0, 0
67; GENERIC-NEXT:    addi16 sp, sp, 4
68; GENERIC-NEXT:    rts16
69entry:
70  %icmp = icmp eq i32 %x, 10
71  br i1 %icmp, label %label1, label %label2
72label1:
73  ret i32 1
74label2:
75  ret i32 0
76}
77
78define i32 @brR0_eq(i32 %x) {
79; CHECK-LABEL: brR0_eq:
80; CHECK:       # %bb.0: # %entry
81; CHECK-NEXT:    bez32 a0, .LBB2_2
82; CHECK-NEXT:  # %bb.1: # %label2
83; CHECK-NEXT:    movi16 a0, 0
84; CHECK-NEXT:    rts16
85; CHECK-NEXT:  .LBB2_2: # %label1
86; CHECK-NEXT:    movi16 a0, 1
87; CHECK-NEXT:    rts16
88;
89; GENERIC-LABEL: brR0_eq:
90; GENERIC:       # %bb.0: # %entry
91; GENERIC-NEXT:    .cfi_def_cfa_offset 0
92; GENERIC-NEXT:    subi16 sp, sp, 4
93; GENERIC-NEXT:    .cfi_def_cfa_offset 4
94; GENERIC-NEXT:    cmpnei16 a0, 0
95; GENERIC-NEXT:    bf16 .LBB2_2
96; GENERIC-NEXT:  # %bb.1: # %label2
97; GENERIC-NEXT:    movi16 a0, 0
98; GENERIC-NEXT:    addi16 sp, sp, 4
99; GENERIC-NEXT:    rts16
100; GENERIC-NEXT:  .LBB2_2: # %label1
101; GENERIC-NEXT:    movi16 a0, 1
102; GENERIC-NEXT:    addi16 sp, sp, 4
103; GENERIC-NEXT:    rts16
104entry:
105  %icmp = icmp eq i32 %x, 0
106  br i1 %icmp, label %label1, label %label2
107label1:
108  ret i32 1
109label2:
110  ret i32 0
111}
112
113;NE
114define i32 @brRR_ne(i32 %x, i32 %y) {
115; CHECK-LABEL: brRR_ne:
116; CHECK:       # %bb.0: # %entry
117; CHECK-NEXT:    cmpne16 a1, a0
118; CHECK-NEXT:    bf32 .LBB3_2
119; CHECK-NEXT:  # %bb.1: # %label1
120; CHECK-NEXT:    movi16 a0, 1
121; CHECK-NEXT:    rts16
122; CHECK-NEXT:  .LBB3_2: # %label2
123; CHECK-NEXT:    movi16 a0, 0
124; CHECK-NEXT:    rts16
125;
126; GENERIC-LABEL: brRR_ne:
127; GENERIC:       # %bb.0: # %entry
128; GENERIC-NEXT:    .cfi_def_cfa_offset 0
129; GENERIC-NEXT:    subi16 sp, sp, 4
130; GENERIC-NEXT:    .cfi_def_cfa_offset 4
131; GENERIC-NEXT:    cmpne16 a1, a0
132; GENERIC-NEXT:    bf16 .LBB3_2
133; GENERIC-NEXT:  # %bb.1: # %label1
134; GENERIC-NEXT:    movi16 a0, 1
135; GENERIC-NEXT:    addi16 sp, sp, 4
136; GENERIC-NEXT:    rts16
137; GENERIC-NEXT:  .LBB3_2: # %label2
138; GENERIC-NEXT:    movi16 a0, 0
139; GENERIC-NEXT:    addi16 sp, sp, 4
140; GENERIC-NEXT:    rts16
141entry:
142  %icmp = icmp ne i32 %y, %x
143  br i1 %icmp, label %label1, label %label2
144label1:
145  ret i32 1
146label2:
147  ret i32 0
148}
149
150define i32 @brRI_ne(i32 %x) {
151; CHECK-LABEL: brRI_ne:
152; CHECK:       # %bb.0: # %entry
153; CHECK-NEXT:    cmpnei16 a0, 10
154; CHECK-NEXT:    bf32 .LBB4_2
155; CHECK-NEXT:  # %bb.1: # %label1
156; CHECK-NEXT:    movi16 a0, 1
157; CHECK-NEXT:    rts16
158; CHECK-NEXT:  .LBB4_2: # %label2
159; CHECK-NEXT:    movi16 a0, 0
160; CHECK-NEXT:    rts16
161;
162; GENERIC-LABEL: brRI_ne:
163; GENERIC:       # %bb.0: # %entry
164; GENERIC-NEXT:    .cfi_def_cfa_offset 0
165; GENERIC-NEXT:    subi16 sp, sp, 4
166; GENERIC-NEXT:    .cfi_def_cfa_offset 4
167; GENERIC-NEXT:    cmpnei16 a0, 10
168; GENERIC-NEXT:    bf16 .LBB4_2
169; GENERIC-NEXT:  # %bb.1: # %label1
170; GENERIC-NEXT:    movi16 a0, 1
171; GENERIC-NEXT:    addi16 sp, sp, 4
172; GENERIC-NEXT:    rts16
173; GENERIC-NEXT:  .LBB4_2: # %label2
174; GENERIC-NEXT:    movi16 a0, 0
175; GENERIC-NEXT:    addi16 sp, sp, 4
176; GENERIC-NEXT:    rts16
177entry:
178  %icmp = icmp ne i32 %x, 10
179  br i1 %icmp, label %label1, label %label2
180label1:
181  ret i32 1
182label2:
183  ret i32 0
184}
185
186define i32 @brR0_ne(i32 %x) {
187; CHECK-LABEL: brR0_ne:
188; CHECK:       # %bb.0: # %entry
189; CHECK-NEXT:    bez32 a0, .LBB5_2
190; CHECK-NEXT:  # %bb.1: # %label1
191; CHECK-NEXT:    movi16 a0, 1
192; CHECK-NEXT:    rts16
193; CHECK-NEXT:  .LBB5_2: # %label2
194; CHECK-NEXT:    movi16 a0, 0
195; CHECK-NEXT:    rts16
196;
197; GENERIC-LABEL: brR0_ne:
198; GENERIC:       # %bb.0: # %entry
199; GENERIC-NEXT:    .cfi_def_cfa_offset 0
200; GENERIC-NEXT:    subi16 sp, sp, 4
201; GENERIC-NEXT:    .cfi_def_cfa_offset 4
202; GENERIC-NEXT:    cmpnei16 a0, 0
203; GENERIC-NEXT:    bf16 .LBB5_2
204; GENERIC-NEXT:  # %bb.1: # %label1
205; GENERIC-NEXT:    movi16 a0, 1
206; GENERIC-NEXT:    addi16 sp, sp, 4
207; GENERIC-NEXT:    rts16
208; GENERIC-NEXT:  .LBB5_2: # %label2
209; GENERIC-NEXT:    movi16 a0, 0
210; GENERIC-NEXT:    addi16 sp, sp, 4
211; GENERIC-NEXT:    rts16
212entry:
213  %icmp = icmp ne i32 %x, 0
214  br i1 %icmp, label %label1, label %label2
215label1:
216  ret i32 1
217label2:
218  ret i32 0
219}
220
221;UGT
222define i32 @brRR_ugt(i32 %x, i32 %y) {
223; CHECK-LABEL: brRR_ugt:
224; CHECK:       # %bb.0: # %entry
225; CHECK-NEXT:    cmphs16 a0, a1
226; CHECK-NEXT:    bt32 .LBB6_2
227; CHECK-NEXT:  # %bb.1: # %label1
228; CHECK-NEXT:    movi16 a0, 1
229; CHECK-NEXT:    rts16
230; CHECK-NEXT:  .LBB6_2: # %label2
231; CHECK-NEXT:    movi16 a0, 0
232; CHECK-NEXT:    rts16
233;
234; GENERIC-LABEL: brRR_ugt:
235; GENERIC:       # %bb.0: # %entry
236; GENERIC-NEXT:    .cfi_def_cfa_offset 0
237; GENERIC-NEXT:    subi16 sp, sp, 4
238; GENERIC-NEXT:    .cfi_def_cfa_offset 4
239; GENERIC-NEXT:    cmphs16 a0, a1
240; GENERIC-NEXT:    bt16 .LBB6_2
241; GENERIC-NEXT:  # %bb.1: # %label1
242; GENERIC-NEXT:    movi16 a0, 1
243; GENERIC-NEXT:    addi16 sp, sp, 4
244; GENERIC-NEXT:    rts16
245; GENERIC-NEXT:  .LBB6_2: # %label2
246; GENERIC-NEXT:    movi16 a0, 0
247; GENERIC-NEXT:    addi16 sp, sp, 4
248; GENERIC-NEXT:    rts16
249; CHECK-UGTXT:    icmpu32 a0, a1, a0
250; CHECK-UGTXT:    rts16
251entry:
252  %icmp = icmp ugt i32 %y, %x
253  br i1 %icmp, label %label1, label %label2
254label1:
255  ret i32 1
256label2:
257  ret i32 0
258}
259
260define i32 @brRI_ugt(i32 %x) {
261; CHECK-LABEL: brRI_ugt:
262; CHECK:       # %bb.0: # %entry
263; CHECK-NEXT:    cmphsi16 a0, 11
264; CHECK-NEXT:    bf32 .LBB7_2
265; CHECK-NEXT:  # %bb.1: # %label1
266; CHECK-NEXT:    movi16 a0, 1
267; CHECK-NEXT:    rts16
268; CHECK-NEXT:  .LBB7_2: # %label2
269; CHECK-NEXT:    movi16 a0, 0
270; CHECK-NEXT:    rts16
271;
272; GENERIC-LABEL: brRI_ugt:
273; GENERIC:       # %bb.0: # %entry
274; GENERIC-NEXT:    .cfi_def_cfa_offset 0
275; GENERIC-NEXT:    subi16 sp, sp, 4
276; GENERIC-NEXT:    .cfi_def_cfa_offset 4
277; GENERIC-NEXT:    cmphsi16 a0, 11
278; GENERIC-NEXT:    bf16 .LBB7_2
279; GENERIC-NEXT:  # %bb.1: # %label1
280; GENERIC-NEXT:    movi16 a0, 1
281; GENERIC-NEXT:    addi16 sp, sp, 4
282; GENERIC-NEXT:    rts16
283; GENERIC-NEXT:  .LBB7_2: # %label2
284; GENERIC-NEXT:    movi16 a0, 0
285; GENERIC-NEXT:    addi16 sp, sp, 4
286; GENERIC-NEXT:    rts16
287; CHECK-UGTXT:    icmpu32 a0, a1, a0
288; CHECK-UGTXT:    rts16
289entry:
290  %icmp = icmp ugt i32 %x, 10
291  br i1 %icmp, label %label1, label %label2
292label1:
293  ret i32 1
294label2:
295  ret i32 0
296}
297
298define i32 @brR0_ugt(i32 %x) {
299; CHECK-LABEL: brR0_ugt:
300; CHECK:       # %bb.0: # %entry
301; CHECK-NEXT:    bez32 a0, .LBB8_2
302; CHECK-NEXT:  # %bb.1: # %label1
303; CHECK-NEXT:    movi16 a0, 1
304; CHECK-NEXT:    rts16
305; CHECK-NEXT:  .LBB8_2: # %label2
306; CHECK-NEXT:    movi16 a0, 0
307; CHECK-NEXT:    rts16
308;
309; GENERIC-LABEL: brR0_ugt:
310; GENERIC:       # %bb.0: # %entry
311; GENERIC-NEXT:    .cfi_def_cfa_offset 0
312; GENERIC-NEXT:    subi16 sp, sp, 4
313; GENERIC-NEXT:    .cfi_def_cfa_offset 4
314; GENERIC-NEXT:    cmpnei16 a0, 0
315; GENERIC-NEXT:    bf16 .LBB8_2
316; GENERIC-NEXT:  # %bb.1: # %label1
317; GENERIC-NEXT:    movi16 a0, 1
318; GENERIC-NEXT:    addi16 sp, sp, 4
319; GENERIC-NEXT:    rts16
320; GENERIC-NEXT:  .LBB8_2: # %label2
321; GENERIC-NEXT:    movi16 a0, 0
322; GENERIC-NEXT:    addi16 sp, sp, 4
323; GENERIC-NEXT:    rts16
324; CHECK-UGTXT:    icmpu32 a0, a1, a0
325; CHECK-UGTXT:    rts16
326entry:
327  %icmp = icmp ugt i32 %x, 0
328  br i1 %icmp, label %label1, label %label2
329label1:
330  ret i32 1
331label2:
332  ret i32 0
333}
334
335;UGE
336define i32 @brRR_uge(i32 %x, i32 %y) {
337; CHECK-LABEL: brRR_uge:
338; CHECK:       # %bb.0: # %entry
339; CHECK-NEXT:    cmphs16 a1, a0
340; CHECK-NEXT:    bf32 .LBB9_2
341; CHECK-NEXT:  # %bb.1: # %label1
342; CHECK-NEXT:    movi16 a0, 1
343; CHECK-NEXT:    rts16
344; CHECK-NEXT:  .LBB9_2: # %label2
345; CHECK-NEXT:    movi16 a0, 0
346; CHECK-NEXT:    rts16
347;
348; GENERIC-LABEL: brRR_uge:
349; GENERIC:       # %bb.0: # %entry
350; GENERIC-NEXT:    .cfi_def_cfa_offset 0
351; GENERIC-NEXT:    subi16 sp, sp, 4
352; GENERIC-NEXT:    .cfi_def_cfa_offset 4
353; GENERIC-NEXT:    cmphs16 a1, a0
354; GENERIC-NEXT:    bf16 .LBB9_2
355; GENERIC-NEXT:  # %bb.1: # %label1
356; GENERIC-NEXT:    movi16 a0, 1
357; GENERIC-NEXT:    addi16 sp, sp, 4
358; GENERIC-NEXT:    rts16
359; GENERIC-NEXT:  .LBB9_2: # %label2
360; GENERIC-NEXT:    movi16 a0, 0
361; GENERIC-NEXT:    addi16 sp, sp, 4
362; GENERIC-NEXT:    rts16
363; CHECK-UGTXT:    icmpu32 a0, a1, a0
364; CHECK-UGTXT:    rts16
365entry:
366  %icmp = icmp uge i32 %y, %x
367  br i1 %icmp, label %label1, label %label2
368label1:
369  ret i32 1
370label2:
371  ret i32 0
372}
373
374define i32 @brRI_uge(i32 %x) {
375; CHECK-LABEL: brRI_uge:
376; CHECK:       # %bb.0: # %entry
377; CHECK-NEXT:    cmphsi16 a0, 10
378; CHECK-NEXT:    bf32 .LBB10_2
379; CHECK-NEXT:  # %bb.1: # %label1
380; CHECK-NEXT:    movi16 a0, 1
381; CHECK-NEXT:    rts16
382; CHECK-NEXT:  .LBB10_2: # %label2
383; CHECK-NEXT:    movi16 a0, 0
384; CHECK-NEXT:    rts16
385;
386; GENERIC-LABEL: brRI_uge:
387; GENERIC:       # %bb.0: # %entry
388; GENERIC-NEXT:    .cfi_def_cfa_offset 0
389; GENERIC-NEXT:    subi16 sp, sp, 4
390; GENERIC-NEXT:    .cfi_def_cfa_offset 4
391; GENERIC-NEXT:    cmphsi16 a0, 10
392; GENERIC-NEXT:    bf16 .LBB10_2
393; GENERIC-NEXT:  # %bb.1: # %label1
394; GENERIC-NEXT:    movi16 a0, 1
395; GENERIC-NEXT:    addi16 sp, sp, 4
396; GENERIC-NEXT:    rts16
397; GENERIC-NEXT:  .LBB10_2: # %label2
398; GENERIC-NEXT:    movi16 a0, 0
399; GENERIC-NEXT:    addi16 sp, sp, 4
400; GENERIC-NEXT:    rts16
401; CHECK-UGTXT:    icmpu32 a0, a1, a0
402; CHECK-UGTXT:    rts16
403entry:
404  %icmp = icmp uge i32 %x, 10
405  br i1 %icmp, label %label1, label %label2
406label1:
407  ret i32 1
408label2:
409  ret i32 0
410}
411
412;ULT
413define i32 @brRR_ult(i32 %x, i32 %y) {
414; CHECK-LABEL: brRR_ult:
415; CHECK:       # %bb.0: # %entry
416; CHECK-NEXT:    cmphs16 a1, a0
417; CHECK-NEXT:    bt32 .LBB11_2
418; CHECK-NEXT:  # %bb.1: # %label1
419; CHECK-NEXT:    movi16 a0, 1
420; CHECK-NEXT:    rts16
421; CHECK-NEXT:  .LBB11_2: # %label2
422; CHECK-NEXT:    movi16 a0, 0
423; CHECK-NEXT:    rts16
424;
425; GENERIC-LABEL: brRR_ult:
426; GENERIC:       # %bb.0: # %entry
427; GENERIC-NEXT:    .cfi_def_cfa_offset 0
428; GENERIC-NEXT:    subi16 sp, sp, 4
429; GENERIC-NEXT:    .cfi_def_cfa_offset 4
430; GENERIC-NEXT:    cmphs16 a1, a0
431; GENERIC-NEXT:    bt16 .LBB11_2
432; GENERIC-NEXT:  # %bb.1: # %label1
433; GENERIC-NEXT:    movi16 a0, 1
434; GENERIC-NEXT:    addi16 sp, sp, 4
435; GENERIC-NEXT:    rts16
436; GENERIC-NEXT:  .LBB11_2: # %label2
437; GENERIC-NEXT:    movi16 a0, 0
438; GENERIC-NEXT:    addi16 sp, sp, 4
439; GENERIC-NEXT:    rts16
440; CHECK-UGTXT:    icmpu32 a0, a1, a0
441; CHECK-UGTXT:    rts16
442entry:
443  %icmp = icmp ult i32 %y, %x
444  br i1 %icmp, label %label1, label %label2
445label1:
446  ret i32 1
447label2:
448  ret i32 0
449}
450
451define i32 @brRI_ult(i32 %x) {
452; CHECK-LABEL: brRI_ult:
453; CHECK:       # %bb.0: # %entry
454; CHECK-NEXT:    movi16 a1, 9
455; CHECK-NEXT:    cmphs16 a1, a0
456; CHECK-NEXT:    bf32 .LBB12_2
457; CHECK-NEXT:  # %bb.1: # %label1
458; CHECK-NEXT:    movi16 a0, 1
459; CHECK-NEXT:    rts16
460; CHECK-NEXT:  .LBB12_2: # %label2
461; CHECK-NEXT:    movi16 a0, 0
462; CHECK-NEXT:    rts16
463;
464; GENERIC-LABEL: brRI_ult:
465; GENERIC:       # %bb.0: # %entry
466; GENERIC-NEXT:    .cfi_def_cfa_offset 0
467; GENERIC-NEXT:    subi16 sp, sp, 4
468; GENERIC-NEXT:    .cfi_def_cfa_offset 4
469; GENERIC-NEXT:    movi16 a1, 9
470; GENERIC-NEXT:    cmphs16 a1, a0
471; GENERIC-NEXT:    bf16 .LBB12_2
472; GENERIC-NEXT:  # %bb.1: # %label1
473; GENERIC-NEXT:    movi16 a0, 1
474; GENERIC-NEXT:    addi16 sp, sp, 4
475; GENERIC-NEXT:    rts16
476; GENERIC-NEXT:  .LBB12_2: # %label2
477; GENERIC-NEXT:    movi16 a0, 0
478; GENERIC-NEXT:    addi16 sp, sp, 4
479; GENERIC-NEXT:    rts16
480; CHECK-UGTXT:    icmpu32 a0, a1, a0
481; CHECK-UGTXT:    rts16
482entry:
483  %icmp = icmp ult i32 %x, 10
484  br i1 %icmp, label %label1, label %label2
485label1:
486  ret i32 1
487label2:
488  ret i32 0
489}
490
491
492;ULE
493define i32 @brRR_ule(i32 %x, i32 %y) {
494; CHECK-LABEL: brRR_ule:
495; CHECK:       # %bb.0: # %entry
496; CHECK-NEXT:    cmphs16 a0, a1
497; CHECK-NEXT:    bf32 .LBB13_2
498; CHECK-NEXT:  # %bb.1: # %label1
499; CHECK-NEXT:    movi16 a0, 1
500; CHECK-NEXT:    rts16
501; CHECK-NEXT:  .LBB13_2: # %label2
502; CHECK-NEXT:    movi16 a0, 0
503; CHECK-NEXT:    rts16
504;
505; GENERIC-LABEL: brRR_ule:
506; GENERIC:       # %bb.0: # %entry
507; GENERIC-NEXT:    .cfi_def_cfa_offset 0
508; GENERIC-NEXT:    subi16 sp, sp, 4
509; GENERIC-NEXT:    .cfi_def_cfa_offset 4
510; GENERIC-NEXT:    cmphs16 a0, a1
511; GENERIC-NEXT:    bf16 .LBB13_2
512; GENERIC-NEXT:  # %bb.1: # %label1
513; GENERIC-NEXT:    movi16 a0, 1
514; GENERIC-NEXT:    addi16 sp, sp, 4
515; GENERIC-NEXT:    rts16
516; GENERIC-NEXT:  .LBB13_2: # %label2
517; GENERIC-NEXT:    movi16 a0, 0
518; GENERIC-NEXT:    addi16 sp, sp, 4
519; GENERIC-NEXT:    rts16
520; CHECK-UGTXT:    icmpu32 a0, a1, a0
521; CHECK-UGTXT:    rts16
522entry:
523  %icmp = icmp ule i32 %y, %x
524  br i1 %icmp, label %label1, label %label2
525label1:
526  ret i32 1
527label2:
528  ret i32 0
529}
530
531define i32 @brRI_ule(i32 %x) {
532; CHECK-LABEL: brRI_ule:
533; CHECK:       # %bb.0: # %entry
534; CHECK-NEXT:    movi16 a1, 10
535; CHECK-NEXT:    cmphs16 a1, a0
536; CHECK-NEXT:    bf32 .LBB14_2
537; CHECK-NEXT:  # %bb.1: # %label1
538; CHECK-NEXT:    movi16 a0, 1
539; CHECK-NEXT:    rts16
540; CHECK-NEXT:  .LBB14_2: # %label2
541; CHECK-NEXT:    movi16 a0, 0
542; CHECK-NEXT:    rts16
543;
544; GENERIC-LABEL: brRI_ule:
545; GENERIC:       # %bb.0: # %entry
546; GENERIC-NEXT:    .cfi_def_cfa_offset 0
547; GENERIC-NEXT:    subi16 sp, sp, 4
548; GENERIC-NEXT:    .cfi_def_cfa_offset 4
549; GENERIC-NEXT:    movi16 a1, 10
550; GENERIC-NEXT:    cmphs16 a1, a0
551; GENERIC-NEXT:    bf16 .LBB14_2
552; GENERIC-NEXT:  # %bb.1: # %label1
553; GENERIC-NEXT:    movi16 a0, 1
554; GENERIC-NEXT:    addi16 sp, sp, 4
555; GENERIC-NEXT:    rts16
556; GENERIC-NEXT:  .LBB14_2: # %label2
557; GENERIC-NEXT:    movi16 a0, 0
558; GENERIC-NEXT:    addi16 sp, sp, 4
559; GENERIC-NEXT:    rts16
560; CHECK-UGTXT:    icmpu32 a0, a1, a0
561; CHECK-UGTXT:    rts16
562entry:
563  %icmp = icmp ule i32 %x, 10
564  br i1 %icmp, label %label1, label %label2
565label1:
566  ret i32 1
567label2:
568  ret i32 0
569}
570
571define i32 @brR0_ule(i32 %x) {
572; CHECK-LABEL: brR0_ule:
573; CHECK:       # %bb.0: # %entry
574; CHECK-NEXT:    bnez32 a0, .LBB15_2
575; CHECK-NEXT:  # %bb.1: # %label1
576; CHECK-NEXT:    movi16 a0, 1
577; CHECK-NEXT:    rts16
578; CHECK-NEXT:  .LBB15_2: # %label2
579; CHECK-NEXT:    movi16 a0, 0
580; CHECK-NEXT:    rts16
581;
582; GENERIC-LABEL: brR0_ule:
583; GENERIC:       # %bb.0: # %entry
584; GENERIC-NEXT:    .cfi_def_cfa_offset 0
585; GENERIC-NEXT:    subi16 sp, sp, 4
586; GENERIC-NEXT:    .cfi_def_cfa_offset 4
587; GENERIC-NEXT:    cmpnei16 a0, 0
588; GENERIC-NEXT:    bt16 .LBB15_2
589; GENERIC-NEXT:  # %bb.1: # %label1
590; GENERIC-NEXT:    movi16 a0, 1
591; GENERIC-NEXT:    addi16 sp, sp, 4
592; GENERIC-NEXT:    rts16
593; GENERIC-NEXT:  .LBB15_2: # %label2
594; GENERIC-NEXT:    movi16 a0, 0
595; GENERIC-NEXT:    addi16 sp, sp, 4
596; GENERIC-NEXT:    rts16
597; CHECK-UGTXT:    icmpu32 a0, a1, a0
598; CHECK-UGTXT:    rts16
599entry:
600  %icmp = icmp ule i32 %x, 0
601  br i1 %icmp, label %label1, label %label2
602label1:
603  ret i32 1
604label2:
605  ret i32 0
606}
607
608;SGT
609define i32 @brRR_sgt(i32 %x, i32 %y) {
610; CHECK-LABEL: brRR_sgt:
611; CHECK:       # %bb.0: # %entry
612; CHECK-NEXT:    cmplt16 a0, a1
613; CHECK-NEXT:    bf32 .LBB16_2
614; CHECK-NEXT:  # %bb.1: # %label1
615; CHECK-NEXT:    movi16 a0, 1
616; CHECK-NEXT:    rts16
617; CHECK-NEXT:  .LBB16_2: # %label2
618; CHECK-NEXT:    movi16 a0, 0
619; CHECK-NEXT:    rts16
620;
621; GENERIC-LABEL: brRR_sgt:
622; GENERIC:       # %bb.0: # %entry
623; GENERIC-NEXT:    .cfi_def_cfa_offset 0
624; GENERIC-NEXT:    subi16 sp, sp, 4
625; GENERIC-NEXT:    .cfi_def_cfa_offset 4
626; GENERIC-NEXT:    cmplt16 a0, a1
627; GENERIC-NEXT:    bf16 .LBB16_2
628; GENERIC-NEXT:  # %bb.1: # %label1
629; GENERIC-NEXT:    movi16 a0, 1
630; GENERIC-NEXT:    addi16 sp, sp, 4
631; GENERIC-NEXT:    rts16
632; GENERIC-NEXT:  .LBB16_2: # %label2
633; GENERIC-NEXT:    movi16 a0, 0
634; GENERIC-NEXT:    addi16 sp, sp, 4
635; GENERIC-NEXT:    rts16
636; CHECK-UGTXT:    icmpu32 a0, a1, a0
637; CHECK-UGTXT:    rts16
638entry:
639  %icmp = icmp sgt i32 %y, %x
640  br i1 %icmp, label %label1, label %label2
641label1:
642  ret i32 1
643label2:
644  ret i32 0
645}
646
647define i32 @brRI_sgt(i32 %x) {
648; CHECK-LABEL: brRI_sgt:
649; CHECK:       # %bb.0: # %entry
650; CHECK-NEXT:    cmplti16 a0, 11
651; CHECK-NEXT:    bt32 .LBB17_2
652; CHECK-NEXT:  # %bb.1: # %label1
653; CHECK-NEXT:    movi16 a0, 1
654; CHECK-NEXT:    rts16
655; CHECK-NEXT:  .LBB17_2: # %label2
656; CHECK-NEXT:    movi16 a0, 0
657; CHECK-NEXT:    rts16
658;
659; GENERIC-LABEL: brRI_sgt:
660; GENERIC:       # %bb.0: # %entry
661; GENERIC-NEXT:    .cfi_def_cfa_offset 0
662; GENERIC-NEXT:    subi16 sp, sp, 4
663; GENERIC-NEXT:    .cfi_def_cfa_offset 4
664; GENERIC-NEXT:    cmplti16 a0, 11
665; GENERIC-NEXT:    bt16 .LBB17_2
666; GENERIC-NEXT:  # %bb.1: # %label1
667; GENERIC-NEXT:    movi16 a0, 1
668; GENERIC-NEXT:    addi16 sp, sp, 4
669; GENERIC-NEXT:    rts16
670; GENERIC-NEXT:  .LBB17_2: # %label2
671; GENERIC-NEXT:    movi16 a0, 0
672; GENERIC-NEXT:    addi16 sp, sp, 4
673; GENERIC-NEXT:    rts16
674; CHECK-UGTXT:    icmpu32 a0, a1, a0
675; CHECK-UGTXT:    rts16
676entry:
677  %icmp = icmp sgt i32 %x, 10
678  br i1 %icmp, label %label1, label %label2
679label1:
680  ret i32 1
681label2:
682  ret i32 0
683}
684
685define i32 @brR0_sgt(i32 %x) {
686; CHECK-LABEL: brR0_sgt:
687; CHECK:       # %bb.0: # %entry
688; CHECK-NEXT:    cmplti16 a0, 1
689; CHECK-NEXT:    bt32 .LBB18_2
690; CHECK-NEXT:  # %bb.1: # %label1
691; CHECK-NEXT:    movi16 a0, 1
692; CHECK-NEXT:    rts16
693; CHECK-NEXT:  .LBB18_2: # %label2
694; CHECK-NEXT:    movi16 a0, 0
695; CHECK-NEXT:    rts16
696;
697; GENERIC-LABEL: brR0_sgt:
698; GENERIC:       # %bb.0: # %entry
699; GENERIC-NEXT:    .cfi_def_cfa_offset 0
700; GENERIC-NEXT:    subi16 sp, sp, 4
701; GENERIC-NEXT:    .cfi_def_cfa_offset 4
702; GENERIC-NEXT:    cmplti16 a0, 1
703; GENERIC-NEXT:    bt16 .LBB18_2
704; GENERIC-NEXT:  # %bb.1: # %label1
705; GENERIC-NEXT:    movi16 a0, 1
706; GENERIC-NEXT:    addi16 sp, sp, 4
707; GENERIC-NEXT:    rts16
708; GENERIC-NEXT:  .LBB18_2: # %label2
709; GENERIC-NEXT:    movi16 a0, 0
710; GENERIC-NEXT:    addi16 sp, sp, 4
711; GENERIC-NEXT:    rts16
712; CHECK-UGTXT:    icmpu32 a0, a1, a0
713; CHECK-UGTXT:    rts16
714entry:
715  %icmp = icmp sgt i32 %x, 0
716  br i1 %icmp, label %label1, label %label2
717label1:
718  ret i32 1
719label2:
720  ret i32 0
721}
722
723;SGE
724define i32 @brRR_sge(i32 %x, i32 %y) {
725; CHECK-LABEL: brRR_sge:
726; CHECK:       # %bb.0: # %entry
727; CHECK-NEXT:    cmplt16 a1, a0
728; CHECK-NEXT:    bt32 .LBB19_2
729; CHECK-NEXT:  # %bb.1: # %label1
730; CHECK-NEXT:    movi16 a0, 1
731; CHECK-NEXT:    rts16
732; CHECK-NEXT:  .LBB19_2: # %label2
733; CHECK-NEXT:    movi16 a0, 0
734; CHECK-NEXT:    rts16
735;
736; GENERIC-LABEL: brRR_sge:
737; GENERIC:       # %bb.0: # %entry
738; GENERIC-NEXT:    .cfi_def_cfa_offset 0
739; GENERIC-NEXT:    subi16 sp, sp, 4
740; GENERIC-NEXT:    .cfi_def_cfa_offset 4
741; GENERIC-NEXT:    cmplt16 a1, a0
742; GENERIC-NEXT:    bt16 .LBB19_2
743; GENERIC-NEXT:  # %bb.1: # %label1
744; GENERIC-NEXT:    movi16 a0, 1
745; GENERIC-NEXT:    addi16 sp, sp, 4
746; GENERIC-NEXT:    rts16
747; GENERIC-NEXT:  .LBB19_2: # %label2
748; GENERIC-NEXT:    movi16 a0, 0
749; GENERIC-NEXT:    addi16 sp, sp, 4
750; GENERIC-NEXT:    rts16
751; CHECK-UGTXT:    icmpu32 a0, a1, a0
752; CHECK-UGTXT:    rts16
753entry:
754  %icmp = icmp sge i32 %y, %x
755  br i1 %icmp, label %label1, label %label2
756label1:
757  ret i32 1
758label2:
759  ret i32 0
760}
761
762define i32 @brRI_sge(i32 %x) {
763; CHECK-LABEL: brRI_sge:
764; CHECK:       # %bb.0: # %entry
765; CHECK-NEXT:    cmplti16 a0, 10
766; CHECK-NEXT:    bt32 .LBB20_2
767; CHECK-NEXT:  # %bb.1: # %label1
768; CHECK-NEXT:    movi16 a0, 1
769; CHECK-NEXT:    rts16
770; CHECK-NEXT:  .LBB20_2: # %label2
771; CHECK-NEXT:    movi16 a0, 0
772; CHECK-NEXT:    rts16
773;
774; GENERIC-LABEL: brRI_sge:
775; GENERIC:       # %bb.0: # %entry
776; GENERIC-NEXT:    .cfi_def_cfa_offset 0
777; GENERIC-NEXT:    subi16 sp, sp, 4
778; GENERIC-NEXT:    .cfi_def_cfa_offset 4
779; GENERIC-NEXT:    cmplti16 a0, 10
780; GENERIC-NEXT:    bt16 .LBB20_2
781; GENERIC-NEXT:  # %bb.1: # %label1
782; GENERIC-NEXT:    movi16 a0, 1
783; GENERIC-NEXT:    addi16 sp, sp, 4
784; GENERIC-NEXT:    rts16
785; GENERIC-NEXT:  .LBB20_2: # %label2
786; GENERIC-NEXT:    movi16 a0, 0
787; GENERIC-NEXT:    addi16 sp, sp, 4
788; GENERIC-NEXT:    rts16
789; CHECK-UGTXT:    icmpu32 a0, a1, a0
790; CHECK-UGTXT:    rts16
791entry:
792  %icmp = icmp sge i32 %x, 10
793  br i1 %icmp, label %label1, label %label2
794label1:
795  ret i32 1
796label2:
797  ret i32 0
798}
799
800define i32 @brR0_sge(i32 %x) {
801; CHECK-LABEL: brR0_sge:
802; CHECK:       # %bb.0: # %entry
803; CHECK-NEXT:    blz32 a0, .LBB21_2
804; CHECK-NEXT:  # %bb.1: # %label1
805; CHECK-NEXT:    movi16 a0, 1
806; CHECK-NEXT:    rts16
807; CHECK-NEXT:  .LBB21_2: # %label2
808; CHECK-NEXT:    movi16 a0, 0
809; CHECK-NEXT:    rts16
810;
811; GENERIC-LABEL: brR0_sge:
812; GENERIC:       # %bb.0: # %entry
813; GENERIC-NEXT:    .cfi_def_cfa_offset 0
814; GENERIC-NEXT:    subi16 sp, sp, 4
815; GENERIC-NEXT:    .cfi_def_cfa_offset 4
816; GENERIC-NEXT:    movi16 a1, 0
817; GENERIC-NEXT:    cmplt16 a0, a1
818; GENERIC-NEXT:    bt16 .LBB21_2
819; GENERIC-NEXT:  # %bb.1: # %label1
820; GENERIC-NEXT:    movi16 a0, 1
821; GENERIC-NEXT:    addi16 sp, sp, 4
822; GENERIC-NEXT:    rts16
823; GENERIC-NEXT:  .LBB21_2: # %label2
824; GENERIC-NEXT:    movi16 a0, 0
825; GENERIC-NEXT:    addi16 sp, sp, 4
826; GENERIC-NEXT:    rts16
827; CHECK-UGTXT:    icmpu32 a0, a1, a0
828; CHECK-UGTXT:    rts16
829entry:
830  %icmp = icmp sge i32 %x, 0
831  br i1 %icmp, label %label1, label %label2
832label1:
833  ret i32 1
834label2:
835  ret i32 0
836}
837
838;SLT
839define i32 @brRR_slt(i32 %x, i32 %y) {
840; CHECK-LABEL: brRR_slt:
841; CHECK:       # %bb.0: # %entry
842; CHECK-NEXT:    cmplt16 a1, a0
843; CHECK-NEXT:    bf32 .LBB22_2
844; CHECK-NEXT:  # %bb.1: # %label1
845; CHECK-NEXT:    movi16 a0, 1
846; CHECK-NEXT:    rts16
847; CHECK-NEXT:  .LBB22_2: # %label2
848; CHECK-NEXT:    movi16 a0, 0
849; CHECK-NEXT:    rts16
850;
851; GENERIC-LABEL: brRR_slt:
852; GENERIC:       # %bb.0: # %entry
853; GENERIC-NEXT:    .cfi_def_cfa_offset 0
854; GENERIC-NEXT:    subi16 sp, sp, 4
855; GENERIC-NEXT:    .cfi_def_cfa_offset 4
856; GENERIC-NEXT:    cmplt16 a1, a0
857; GENERIC-NEXT:    bf16 .LBB22_2
858; GENERIC-NEXT:  # %bb.1: # %label1
859; GENERIC-NEXT:    movi16 a0, 1
860; GENERIC-NEXT:    addi16 sp, sp, 4
861; GENERIC-NEXT:    rts16
862; GENERIC-NEXT:  .LBB22_2: # %label2
863; GENERIC-NEXT:    movi16 a0, 0
864; GENERIC-NEXT:    addi16 sp, sp, 4
865; GENERIC-NEXT:    rts16
866; CHECK-UGTXT:    icmpu32 a0, a1, a0
867; CHECK-UGTXT:    rts16
868entry:
869  %icmp = icmp slt i32 %y, %x
870  br i1 %icmp, label %label1, label %label2
871label1:
872  ret i32 1
873label2:
874  ret i32 0
875}
876
877define i32 @brRI_slt(i32 %x) {
878; CHECK-LABEL: brRI_slt:
879; CHECK:       # %bb.0: # %entry
880; CHECK-NEXT:    movi16 a1, 9
881; CHECK-NEXT:    cmplt16 a1, a0
882; CHECK-NEXT:    bt32 .LBB23_2
883; CHECK-NEXT:  # %bb.1: # %label1
884; CHECK-NEXT:    movi16 a0, 1
885; CHECK-NEXT:    rts16
886; CHECK-NEXT:  .LBB23_2: # %label2
887; CHECK-NEXT:    movi16 a0, 0
888; CHECK-NEXT:    rts16
889;
890; GENERIC-LABEL: brRI_slt:
891; GENERIC:       # %bb.0: # %entry
892; GENERIC-NEXT:    .cfi_def_cfa_offset 0
893; GENERIC-NEXT:    subi16 sp, sp, 4
894; GENERIC-NEXT:    .cfi_def_cfa_offset 4
895; GENERIC-NEXT:    movi16 a1, 9
896; GENERIC-NEXT:    cmplt16 a1, a0
897; GENERIC-NEXT:    bt16 .LBB23_2
898; GENERIC-NEXT:  # %bb.1: # %label1
899; GENERIC-NEXT:    movi16 a0, 1
900; GENERIC-NEXT:    addi16 sp, sp, 4
901; GENERIC-NEXT:    rts16
902; GENERIC-NEXT:  .LBB23_2: # %label2
903; GENERIC-NEXT:    movi16 a0, 0
904; GENERIC-NEXT:    addi16 sp, sp, 4
905; GENERIC-NEXT:    rts16
906; CHECK-UGTXT:    icmpu32 a0, a1, a0
907; CHECK-UGTXT:    rts16
908entry:
909  %icmp = icmp slt i32 %x, 10
910  br i1 %icmp, label %label1, label %label2
911label1:
912  ret i32 1
913label2:
914  ret i32 0
915}
916
917define i32 @brR0_slt(i32 %x) {
918; CHECK-LABEL: brR0_slt:
919; CHECK:       # %bb.0: # %entry
920; CHECK-NEXT:    movih32 a1, 65535
921; CHECK-NEXT:    ori32 a1, a1, 65535
922; CHECK-NEXT:    cmplt16 a1, a0
923; CHECK-NEXT:    bf32 .LBB24_2
924; CHECK-NEXT:  # %bb.1: # %label2
925; CHECK-NEXT:    movi16 a0, 0
926; CHECK-NEXT:    rts16
927; CHECK-NEXT:  .LBB24_2: # %label1
928; CHECK-NEXT:    movi16 a0, 1
929; CHECK-NEXT:    rts16
930;
931; GENERIC-LABEL: brR0_slt:
932; GENERIC:       # %bb.0: # %entry
933; GENERIC-NEXT:    .cfi_def_cfa_offset 0
934; GENERIC-NEXT:    subi16 sp, sp, 4
935; GENERIC-NEXT:    .cfi_def_cfa_offset 4
936; GENERIC-NEXT:    movi16 a1, 255
937; GENERIC-NEXT:    lsli16 a2, a1, 24
938; GENERIC-NEXT:    lsli16 a3, a1, 16
939; GENERIC-NEXT:    or16 a3, a2
940; GENERIC-NEXT:    lsli16 a2, a1, 8
941; GENERIC-NEXT:    or16 a2, a3
942; GENERIC-NEXT:    or16 a2, a1
943; GENERIC-NEXT:    cmplt16 a2, a0
944; GENERIC-NEXT:    bf16 .LBB24_2
945; GENERIC-NEXT:  # %bb.1: # %label2
946; GENERIC-NEXT:    movi16 a0, 0
947; GENERIC-NEXT:    addi16 sp, sp, 4
948; GENERIC-NEXT:    rts16
949; GENERIC-NEXT:  .LBB24_2: # %label1
950; GENERIC-NEXT:    movi16 a0, 1
951; GENERIC-NEXT:    addi16 sp, sp, 4
952; GENERIC-NEXT:    rts16
953; CHECK-UGTXT:    icmpu32 a0, a1, a0
954; CHECK-UGTXT:    rts16
955entry:
956  %icmp = icmp slt i32 %x, 0
957  br i1 %icmp, label %label1, label %label2
958label1:
959  ret i32 1
960label2:
961  ret i32 0
962}
963
964;SLE
965define i32 @brRR_sle(i32 %x, i32 %y) {
966; CHECK-LABEL: brRR_sle:
967; CHECK:       # %bb.0: # %entry
968; CHECK-NEXT:    cmplt16 a0, a1
969; CHECK-NEXT:    bt32 .LBB25_2
970; CHECK-NEXT:  # %bb.1: # %label1
971; CHECK-NEXT:    movi16 a0, 1
972; CHECK-NEXT:    rts16
973; CHECK-NEXT:  .LBB25_2: # %label2
974; CHECK-NEXT:    movi16 a0, 0
975; CHECK-NEXT:    rts16
976;
977; GENERIC-LABEL: brRR_sle:
978; GENERIC:       # %bb.0: # %entry
979; GENERIC-NEXT:    .cfi_def_cfa_offset 0
980; GENERIC-NEXT:    subi16 sp, sp, 4
981; GENERIC-NEXT:    .cfi_def_cfa_offset 4
982; GENERIC-NEXT:    cmplt16 a0, a1
983; GENERIC-NEXT:    bt16 .LBB25_2
984; GENERIC-NEXT:  # %bb.1: # %label1
985; GENERIC-NEXT:    movi16 a0, 1
986; GENERIC-NEXT:    addi16 sp, sp, 4
987; GENERIC-NEXT:    rts16
988; GENERIC-NEXT:  .LBB25_2: # %label2
989; GENERIC-NEXT:    movi16 a0, 0
990; GENERIC-NEXT:    addi16 sp, sp, 4
991; GENERIC-NEXT:    rts16
992; CHECK-UGTXT:    icmpu32 a0, a1, a0
993; CHECK-UGTXT:    rts16
994entry:
995  %icmp = icmp sle i32 %y, %x
996  br i1 %icmp, label %label1, label %label2
997label1:
998  ret i32 1
999label2:
1000  ret i32 0
1001}
1002
1003define i32 @brRI_sle(i32 %x) {
1004; CHECK-LABEL: brRI_sle:
1005; CHECK:       # %bb.0: # %entry
1006; CHECK-NEXT:    movi16 a1, 10
1007; CHECK-NEXT:    cmplt16 a1, a0
1008; CHECK-NEXT:    bt32 .LBB26_2
1009; CHECK-NEXT:  # %bb.1: # %label1
1010; CHECK-NEXT:    movi16 a0, 1
1011; CHECK-NEXT:    rts16
1012; CHECK-NEXT:  .LBB26_2: # %label2
1013; CHECK-NEXT:    movi16 a0, 0
1014; CHECK-NEXT:    rts16
1015;
1016; GENERIC-LABEL: brRI_sle:
1017; GENERIC:       # %bb.0: # %entry
1018; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1019; GENERIC-NEXT:    subi16 sp, sp, 4
1020; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1021; GENERIC-NEXT:    movi16 a1, 10
1022; GENERIC-NEXT:    cmplt16 a1, a0
1023; GENERIC-NEXT:    bt16 .LBB26_2
1024; GENERIC-NEXT:  # %bb.1: # %label1
1025; GENERIC-NEXT:    movi16 a0, 1
1026; GENERIC-NEXT:    addi16 sp, sp, 4
1027; GENERIC-NEXT:    rts16
1028; GENERIC-NEXT:  .LBB26_2: # %label2
1029; GENERIC-NEXT:    movi16 a0, 0
1030; GENERIC-NEXT:    addi16 sp, sp, 4
1031; GENERIC-NEXT:    rts16
1032; CHECK-UGTXT:    icmpu32 a0, a1, a0
1033; CHECK-UGTXT:    rts16
1034entry:
1035  %icmp = icmp sle i32 %x, 10
1036  br i1 %icmp, label %label1, label %label2
1037label1:
1038  ret i32 1
1039label2:
1040  ret i32 0
1041}
1042
1043define i32 @brR0_sle(i32 %x) {
1044; CHECK-LABEL: brR0_sle:
1045; CHECK:       # %bb.0: # %entry
1046; CHECK-NEXT:    bhz32 a0, .LBB27_2
1047; CHECK-NEXT:  # %bb.1: # %label1
1048; CHECK-NEXT:    movi16 a0, 1
1049; CHECK-NEXT:    rts16
1050; CHECK-NEXT:  .LBB27_2: # %label2
1051; CHECK-NEXT:    movi16 a0, 0
1052; CHECK-NEXT:    rts16
1053;
1054; GENERIC-LABEL: brR0_sle:
1055; GENERIC:       # %bb.0: # %entry
1056; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1057; GENERIC-NEXT:    subi16 sp, sp, 4
1058; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1059; GENERIC-NEXT:    movi16 a1, 0
1060; GENERIC-NEXT:    cmplt16 a1, a0
1061; GENERIC-NEXT:    bt16 .LBB27_2
1062; GENERIC-NEXT:  # %bb.1: # %label1
1063; GENERIC-NEXT:    movi16 a0, 1
1064; GENERIC-NEXT:    addi16 sp, sp, 4
1065; GENERIC-NEXT:    rts16
1066; GENERIC-NEXT:  .LBB27_2: # %label2
1067; GENERIC-NEXT:    movi16 a0, 0
1068; GENERIC-NEXT:    addi16 sp, sp, 4
1069; GENERIC-NEXT:    rts16
1070; CHECK-UGTXT:    icmpu32 a0, a1, a0
1071; CHECK-UGTXT:    rts16
1072entry:
1073  %icmp = icmp sle i32 %x, 0
1074  br i1 %icmp, label %label1, label %label2
1075label1:
1076  ret i32 1
1077label2:
1078  ret i32 0
1079}
1080
1081
1082define i32 @brCBit(i1 %c) {
1083; CHECK-LABEL: brCBit:
1084; CHECK:       # %bb.0: # %entry
1085; CHECK-NEXT:    andi32 a0, a0, 1
1086; CHECK-NEXT:    bez32 a0, .LBB28_2
1087; CHECK-NEXT:  # %bb.1: # %label1
1088; CHECK-NEXT:    movi16 a0, 1
1089; CHECK-NEXT:    rts16
1090; CHECK-NEXT:  .LBB28_2: # %label2
1091; CHECK-NEXT:    movi16 a0, 0
1092; CHECK-NEXT:    rts16
1093;
1094; GENERIC-LABEL: brCBit:
1095; GENERIC:       # %bb.0: # %entry
1096; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1097; GENERIC-NEXT:    subi16 sp, sp, 4
1098; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1099; GENERIC-NEXT:    movi16 a1, 1
1100; GENERIC-NEXT:    and16 a1, a0
1101; GENERIC-NEXT:    cmpnei16 a1, 0
1102; GENERIC-NEXT:    bf16 .LBB28_2
1103; GENERIC-NEXT:  # %bb.1: # %label1
1104; GENERIC-NEXT:    movi16 a0, 1
1105; GENERIC-NEXT:    addi16 sp, sp, 4
1106; GENERIC-NEXT:    rts16
1107; GENERIC-NEXT:  .LBB28_2: # %label2
1108; GENERIC-NEXT:    movi16 a0, 0
1109; GENERIC-NEXT:    addi16 sp, sp, 4
1110; GENERIC-NEXT:    rts16
1111entry:
1112  br i1 %c, label %label1, label %label2
1113label1:
1114  ret i32 1
1115label2:
1116  ret i32 0
1117}
1118
1119
1120;EQ
1121define i64 @brRR_i64_eq(i64 %x, i64 %y) {
1122; CHECK-LABEL: brRR_i64_eq:
1123; CHECK:       # %bb.0: # %entry
1124; CHECK-NEXT:    xor16 a1, a3
1125; CHECK-NEXT:    xor16 a0, a2
1126; CHECK-NEXT:    or16 a0, a1
1127; CHECK-NEXT:    bnez32 a0, .LBB29_2
1128; CHECK-NEXT:  # %bb.1: # %label1
1129; CHECK-NEXT:    movi16 a0, 1
1130; CHECK-NEXT:    movi16 a1, 0
1131; CHECK-NEXT:    rts16
1132; CHECK-NEXT:  .LBB29_2: # %label2
1133; CHECK-NEXT:    movi16 a0, 0
1134; CHECK-NEXT:    movi16 a1, 0
1135; CHECK-NEXT:    rts16
1136;
1137; GENERIC-LABEL: brRR_i64_eq:
1138; GENERIC:       # %bb.0: # %entry
1139; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1140; GENERIC-NEXT:    subi16 sp, sp, 4
1141; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1142; GENERIC-NEXT:    xor16 a1, a3
1143; GENERIC-NEXT:    xor16 a0, a2
1144; GENERIC-NEXT:    or16 a0, a1
1145; GENERIC-NEXT:    cmpnei16 a0, 0
1146; GENERIC-NEXT:    bt16 .LBB29_2
1147; GENERIC-NEXT:  # %bb.1: # %label1
1148; GENERIC-NEXT:    movi16 a0, 1
1149; GENERIC-NEXT:    br32 .LBB29_3
1150; GENERIC-NEXT:  .LBB29_2: # %label2
1151; GENERIC-NEXT:    movi16 a0, 0
1152; GENERIC-NEXT:  .LBB29_3: # %label1
1153; GENERIC-NEXT:    movi16 a1, 0
1154; GENERIC-NEXT:    addi16 sp, sp, 4
1155; GENERIC-NEXT:    rts16
1156entry:
1157  %icmp = icmp eq i64 %y, %x
1158  br i1 %icmp, label %label1, label %label2
1159label1:
1160  ret i64 1
1161label2:
1162  ret i64 0
1163}
1164
1165define i64 @brR0_i64_eq(i64 %x) {
1166; CHECK-LABEL: brR0_i64_eq:
1167; CHECK:       # %bb.0: # %entry
1168; CHECK-NEXT:    xori32 a0, a0, 10
1169; CHECK-NEXT:    or16 a0, a1
1170; CHECK-NEXT:    bnez32 a0, .LBB30_2
1171; CHECK-NEXT:  # %bb.1: # %label1
1172; CHECK-NEXT:    movi16 a0, 1
1173; CHECK-NEXT:    movi16 a1, 0
1174; CHECK-NEXT:    rts16
1175; CHECK-NEXT:  .LBB30_2: # %label2
1176; CHECK-NEXT:    movi16 a0, 0
1177; CHECK-NEXT:    movi16 a1, 0
1178; CHECK-NEXT:    rts16
1179;
1180; GENERIC-LABEL: brR0_i64_eq:
1181; GENERIC:       # %bb.0: # %entry
1182; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1183; GENERIC-NEXT:    subi16 sp, sp, 4
1184; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1185; GENERIC-NEXT:    movi16 a2, 10
1186; GENERIC-NEXT:    xor16 a2, a0
1187; GENERIC-NEXT:    or16 a2, a1
1188; GENERIC-NEXT:    cmpnei16 a2, 0
1189; GENERIC-NEXT:    bt16 .LBB30_2
1190; GENERIC-NEXT:  # %bb.1: # %label1
1191; GENERIC-NEXT:    movi16 a0, 1
1192; GENERIC-NEXT:    br32 .LBB30_3
1193; GENERIC-NEXT:  .LBB30_2: # %label2
1194; GENERIC-NEXT:    movi16 a0, 0
1195; GENERIC-NEXT:  .LBB30_3: # %label1
1196; GENERIC-NEXT:    movi16 a1, 0
1197; GENERIC-NEXT:    addi16 sp, sp, 4
1198; GENERIC-NEXT:    rts16
1199entry:
1200  %icmp = icmp eq i64 %x, 10
1201  br i1 %icmp, label %label1, label %label2
1202label1:
1203  ret i64 1
1204label2:
1205  ret i64 0
1206}
1207
1208define i64 @brRI_i64_eq(i64 %x) {
1209; CHECK-LABEL: brRI_i64_eq:
1210; CHECK:       # %bb.0: # %entry
1211; CHECK-NEXT:    or16 a0, a1
1212; CHECK-NEXT:    bez32 a0, .LBB31_2
1213; CHECK-NEXT:  # %bb.1: # %label2
1214; CHECK-NEXT:    movi16 a0, 0
1215; CHECK-NEXT:    movi16 a1, 0
1216; CHECK-NEXT:    rts16
1217; CHECK-NEXT:  .LBB31_2: # %label1
1218; CHECK-NEXT:    movi16 a0, 1
1219; CHECK-NEXT:    movi16 a1, 0
1220; CHECK-NEXT:    rts16
1221;
1222; GENERIC-LABEL: brRI_i64_eq:
1223; GENERIC:       # %bb.0: # %entry
1224; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1225; GENERIC-NEXT:    subi16 sp, sp, 4
1226; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1227; GENERIC-NEXT:    or16 a0, a1
1228; GENERIC-NEXT:    cmpnei16 a0, 0
1229; GENERIC-NEXT:    bf16 .LBB31_2
1230; GENERIC-NEXT:  # %bb.1: # %label2
1231; GENERIC-NEXT:    movi16 a0, 0
1232; GENERIC-NEXT:    br32 .LBB31_3
1233; GENERIC-NEXT:  .LBB31_2: # %label1
1234; GENERIC-NEXT:    movi16 a0, 1
1235; GENERIC-NEXT:  .LBB31_3: # %label1
1236; GENERIC-NEXT:    movi16 a1, 0
1237; GENERIC-NEXT:    addi16 sp, sp, 4
1238; GENERIC-NEXT:    rts16
1239entry:
1240  %icmp = icmp eq i64 %x, 0
1241  br i1 %icmp, label %label1, label %label2
1242label1:
1243  ret i64 1
1244label2:
1245  ret i64 0
1246}
1247
1248;NE
1249define i64 @brRR_i64_ne(i64 %x, i64 %y) {
1250; CHECK-LABEL: brRR_i64_ne:
1251; CHECK:       # %bb.0: # %entry
1252; CHECK-NEXT:    xor16 a1, a3
1253; CHECK-NEXT:    xor16 a0, a2
1254; CHECK-NEXT:    or16 a0, a1
1255; CHECK-NEXT:    bez32 a0, .LBB32_2
1256; CHECK-NEXT:  # %bb.1: # %label1
1257; CHECK-NEXT:    movi16 a0, 1
1258; CHECK-NEXT:    movi16 a1, 0
1259; CHECK-NEXT:    rts16
1260; CHECK-NEXT:  .LBB32_2: # %label2
1261; CHECK-NEXT:    movi16 a0, 0
1262; CHECK-NEXT:    movi16 a1, 0
1263; CHECK-NEXT:    rts16
1264;
1265; GENERIC-LABEL: brRR_i64_ne:
1266; GENERIC:       # %bb.0: # %entry
1267; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1268; GENERIC-NEXT:    subi16 sp, sp, 4
1269; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1270; GENERIC-NEXT:    xor16 a1, a3
1271; GENERIC-NEXT:    xor16 a0, a2
1272; GENERIC-NEXT:    or16 a0, a1
1273; GENERIC-NEXT:    cmpnei16 a0, 0
1274; GENERIC-NEXT:    bf16 .LBB32_2
1275; GENERIC-NEXT:  # %bb.1: # %label1
1276; GENERIC-NEXT:    movi16 a0, 1
1277; GENERIC-NEXT:    br32 .LBB32_3
1278; GENERIC-NEXT:  .LBB32_2: # %label2
1279; GENERIC-NEXT:    movi16 a0, 0
1280; GENERIC-NEXT:  .LBB32_3: # %label1
1281; GENERIC-NEXT:    movi16 a1, 0
1282; GENERIC-NEXT:    addi16 sp, sp, 4
1283; GENERIC-NEXT:    rts16
1284entry:
1285  %icmp = icmp ne i64 %y, %x
1286  br i1 %icmp, label %label1, label %label2
1287label1:
1288  ret i64 1
1289label2:
1290  ret i64 0
1291}
1292
1293define i64 @brRI_i64_ne(i64 %x) {
1294; CHECK-LABEL: brRI_i64_ne:
1295; CHECK:       # %bb.0: # %entry
1296; CHECK-NEXT:    xori32 a0, a0, 10
1297; CHECK-NEXT:    or16 a0, a1
1298; CHECK-NEXT:    bez32 a0, .LBB33_2
1299; CHECK-NEXT:  # %bb.1: # %label1
1300; CHECK-NEXT:    movi16 a0, 1
1301; CHECK-NEXT:    movi16 a1, 0
1302; CHECK-NEXT:    rts16
1303; CHECK-NEXT:  .LBB33_2: # %label2
1304; CHECK-NEXT:    movi16 a0, 0
1305; CHECK-NEXT:    movi16 a1, 0
1306; CHECK-NEXT:    rts16
1307;
1308; GENERIC-LABEL: brRI_i64_ne:
1309; GENERIC:       # %bb.0: # %entry
1310; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1311; GENERIC-NEXT:    subi16 sp, sp, 4
1312; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1313; GENERIC-NEXT:    movi16 a2, 10
1314; GENERIC-NEXT:    xor16 a2, a0
1315; GENERIC-NEXT:    or16 a2, a1
1316; GENERIC-NEXT:    cmpnei16 a2, 0
1317; GENERIC-NEXT:    bf16 .LBB33_2
1318; GENERIC-NEXT:  # %bb.1: # %label1
1319; GENERIC-NEXT:    movi16 a0, 1
1320; GENERIC-NEXT:    br32 .LBB33_3
1321; GENERIC-NEXT:  .LBB33_2: # %label2
1322; GENERIC-NEXT:    movi16 a0, 0
1323; GENERIC-NEXT:  .LBB33_3: # %label1
1324; GENERIC-NEXT:    movi16 a1, 0
1325; GENERIC-NEXT:    addi16 sp, sp, 4
1326; GENERIC-NEXT:    rts16
1327entry:
1328  %icmp = icmp ne i64 %x, 10
1329  br i1 %icmp, label %label1, label %label2
1330label1:
1331  ret i64 1
1332label2:
1333  ret i64 0
1334}
1335
1336define i64 @brR0_i64_ne(i64 %x) {
1337; CHECK-LABEL: brR0_i64_ne:
1338; CHECK:       # %bb.0: # %entry
1339; CHECK-NEXT:    or16 a0, a1
1340; CHECK-NEXT:    bez32 a0, .LBB34_2
1341; CHECK-NEXT:  # %bb.1: # %label1
1342; CHECK-NEXT:    movi16 a0, 1
1343; CHECK-NEXT:    movi16 a1, 0
1344; CHECK-NEXT:    rts16
1345; CHECK-NEXT:  .LBB34_2: # %label2
1346; CHECK-NEXT:    movi16 a0, 0
1347; CHECK-NEXT:    movi16 a1, 0
1348; CHECK-NEXT:    rts16
1349;
1350; GENERIC-LABEL: brR0_i64_ne:
1351; GENERIC:       # %bb.0: # %entry
1352; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1353; GENERIC-NEXT:    subi16 sp, sp, 4
1354; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1355; GENERIC-NEXT:    or16 a0, a1
1356; GENERIC-NEXT:    cmpnei16 a0, 0
1357; GENERIC-NEXT:    bf16 .LBB34_2
1358; GENERIC-NEXT:  # %bb.1: # %label1
1359; GENERIC-NEXT:    movi16 a0, 1
1360; GENERIC-NEXT:    br32 .LBB34_3
1361; GENERIC-NEXT:  .LBB34_2: # %label2
1362; GENERIC-NEXT:    movi16 a0, 0
1363; GENERIC-NEXT:  .LBB34_3: # %label1
1364; GENERIC-NEXT:    movi16 a1, 0
1365; GENERIC-NEXT:    addi16 sp, sp, 4
1366; GENERIC-NEXT:    rts16
1367entry:
1368  %icmp = icmp ne i64 %x, 0
1369  br i1 %icmp, label %label1, label %label2
1370label1:
1371  ret i64 1
1372label2:
1373  ret i64 0
1374}
1375
1376;UGT
1377define i64 @brRR_i64_ugt(i64 %x, i64 %y) {
1378; CHECK-LABEL: brRR_i64_ugt:
1379; CHECK:       # %bb.0: # %entry
1380; CHECK-NEXT:    .cfi_def_cfa_offset 0
1381; CHECK-NEXT:    subi16 sp, sp, 16
1382; CHECK-NEXT:    .cfi_def_cfa_offset 16
1383; CHECK-NEXT:    cmphs16 a1, a3
1384; CHECK-NEXT:    mvc32 t0
1385; CHECK-NEXT:    st32.w t0, (sp, 12)
1386; CHECK-NEXT:    cmphs16 a0, a2
1387; CHECK-NEXT:    mvc32 a0
1388; CHECK-NEXT:    st16.w a0, (sp, 4)
1389; CHECK-NEXT:    cmpne16 a3, a1
1390; CHECK-NEXT:    mvc32 a0
1391; CHECK-NEXT:    st16.w a0, (sp, 8)
1392; CHECK-NEXT:    ld16.w a0, (sp, 4)
1393; CHECK-NEXT:    btsti32 a0, 0
1394; CHECK-NEXT:    mvc32 a0
1395; CHECK-NEXT:    ld16.w a1, (sp, 12)
1396; CHECK-NEXT:    btsti32 a1, 0
1397; CHECK-NEXT:    mvc32 a1
1398; CHECK-NEXT:    ld16.w a2, (sp, 8)
1399; CHECK-NEXT:    btsti32 a2, 0
1400; CHECK-NEXT:    movf32 a1, a0
1401; CHECK-NEXT:    btsti32 a1, 0
1402; CHECK-NEXT:    bt32 .LBB35_2
1403; CHECK-NEXT:  # %bb.1: # %label1
1404; CHECK-NEXT:    movi16 a0, 1
1405; CHECK-NEXT:    br32 .LBB35_3
1406; CHECK-NEXT:  .LBB35_2: # %label2
1407; CHECK-NEXT:    movi16 a0, 0
1408; CHECK-NEXT:  .LBB35_3: # %label1
1409; CHECK-NEXT:    movi16 a1, 0
1410; CHECK-NEXT:    addi16 sp, sp, 16
1411; CHECK-NEXT:    rts16
1412;
1413; GENERIC-LABEL: brRR_i64_ugt:
1414; GENERIC:       # %bb.0: # %entry
1415; GENERIC-NEXT:    subi16 sp, sp, 8
1416; GENERIC-NEXT:    .cfi_def_cfa_offset 8
1417; GENERIC-NEXT:    st16.w l1, (sp, 4) # 4-byte Folded Spill
1418; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
1419; GENERIC-NEXT:    .cfi_offset l1, -4
1420; GENERIC-NEXT:    .cfi_offset l0, -8
1421; GENERIC-NEXT:    subi16 sp, sp, 4
1422; GENERIC-NEXT:    .cfi_def_cfa_offset 12
1423; GENERIC-NEXT:    cmphs16 a1, a3
1424; GENERIC-NEXT:    mvcv16 l1
1425; GENERIC-NEXT:    movi16 l0, 1
1426; GENERIC-NEXT:    cmphs16 a0, a2
1427; GENERIC-NEXT:    mvcv16 a0
1428; GENERIC-NEXT:    cmpne16 a3, a1
1429; GENERIC-NEXT:    mvcv16 a1
1430; GENERIC-NEXT:    btsti16 a1, 0
1431; GENERIC-NEXT:    bt16 .LBB35_3
1432; GENERIC-NEXT:  # %bb.1: # %entry
1433; GENERIC-NEXT:    subu16 l0, l1
1434; GENERIC-NEXT:    btsti16 l0, 0
1435; GENERIC-NEXT:    bf16 .LBB35_4
1436; GENERIC-NEXT:  .LBB35_2: # %label2
1437; GENERIC-NEXT:    movi16 a0, 0
1438; GENERIC-NEXT:    br32 .LBB35_5
1439; GENERIC-NEXT:  .LBB35_3:
1440; GENERIC-NEXT:    subu16 l0, a0
1441; GENERIC-NEXT:    btsti16 l0, 0
1442; GENERIC-NEXT:    bt16 .LBB35_2
1443; GENERIC-NEXT:  .LBB35_4: # %label1
1444; GENERIC-NEXT:    movi16 a0, 1
1445; GENERIC-NEXT:  .LBB35_5: # %label1
1446; GENERIC-NEXT:    movi16 a1, 0
1447; GENERIC-NEXT:    addi16 sp, sp, 4
1448; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
1449; GENERIC-NEXT:    ld16.w l1, (sp, 4) # 4-byte Folded Reload
1450; GENERIC-NEXT:    addi16 sp, sp, 8
1451; GENERIC-NEXT:    rts16
1452; CHECK-UGTXT:    icmpu32 a0, a1, a0
1453; CHECK-UGTXT:    rts16
1454entry:
1455  %icmp = icmp ugt i64 %y, %x
1456  br i1 %icmp, label %label1, label %label2
1457label1:
1458  ret i64 1
1459label2:
1460  ret i64 0
1461}
1462
1463define i64 @brRI_i64_ugt(i64 %x) {
1464; CHECK-LABEL: brRI_i64_ugt:
1465; CHECK:       # %bb.0: # %entry
1466; CHECK-NEXT:    .cfi_def_cfa_offset 0
1467; CHECK-NEXT:    subi16 sp, sp, 8
1468; CHECK-NEXT:    .cfi_def_cfa_offset 8
1469; CHECK-NEXT:    cmpnei16 a1, 0
1470; CHECK-NEXT:    mvc32 a1
1471; CHECK-NEXT:    st16.w a1, (sp, 4)
1472; CHECK-NEXT:    cmphsi16 a0, 11
1473; CHECK-NEXT:    mvcv16 a0
1474; CHECK-NEXT:    movi16 a1, 0
1475; CHECK-NEXT:    ld16.w a2, (sp, 4)
1476; CHECK-NEXT:    btsti32 a2, 0
1477; CHECK-NEXT:    movf32 a1, a0
1478; CHECK-NEXT:    btsti32 a1, 0
1479; CHECK-NEXT:    bt32 .LBB36_2
1480; CHECK-NEXT:  # %bb.1: # %label1
1481; CHECK-NEXT:    movi16 a0, 1
1482; CHECK-NEXT:    br32 .LBB36_3
1483; CHECK-NEXT:  .LBB36_2: # %label2
1484; CHECK-NEXT:    movi16 a0, 0
1485; CHECK-NEXT:  .LBB36_3: # %label1
1486; CHECK-NEXT:    movi16 a1, 0
1487; CHECK-NEXT:    addi16 sp, sp, 8
1488; CHECK-NEXT:    rts16
1489;
1490; GENERIC-LABEL: brRI_i64_ugt:
1491; GENERIC:       # %bb.0: # %entry
1492; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1493; GENERIC-NEXT:    subi16 sp, sp, 4
1494; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1495; GENERIC-NEXT:    cmphsi16 a0, 11
1496; GENERIC-NEXT:    mvcv16 a0
1497; GENERIC-NEXT:    cmpnei16 a1, 0
1498; GENERIC-NEXT:    mvcv16 a1
1499; GENERIC-NEXT:    btsti16 a1, 0
1500; GENERIC-NEXT:    bt16 .LBB36_2
1501; GENERIC-NEXT:  # %bb.1: # %entry
1502; GENERIC-NEXT:    movi16 a0, 0
1503; GENERIC-NEXT:  .LBB36_2: # %entry
1504; GENERIC-NEXT:    btsti16 a0, 0
1505; GENERIC-NEXT:    bt16 .LBB36_4
1506; GENERIC-NEXT:  # %bb.3: # %label1
1507; GENERIC-NEXT:    movi16 a0, 1
1508; GENERIC-NEXT:    br32 .LBB36_5
1509; GENERIC-NEXT:  .LBB36_4: # %label2
1510; GENERIC-NEXT:    movi16 a0, 0
1511; GENERIC-NEXT:  .LBB36_5: # %label1
1512; GENERIC-NEXT:    movi16 a1, 0
1513; GENERIC-NEXT:    addi16 sp, sp, 4
1514; GENERIC-NEXT:    rts16
1515; CHECK-UGTXT:    icmpu32 a0, a1, a0
1516; CHECK-UGTXT:    rts16
1517entry:
1518  %icmp = icmp ugt i64 %x, 10
1519  br i1 %icmp, label %label1, label %label2
1520label1:
1521  ret i64 1
1522label2:
1523  ret i64 0
1524}
1525
1526define i64 @brR0_i64_ugt(i64 %x) {
1527; CHECK-LABEL: brR0_i64_ugt:
1528; CHECK:       # %bb.0: # %entry
1529; CHECK-NEXT:    or16 a0, a1
1530; CHECK-NEXT:    bez32 a0, .LBB37_2
1531; CHECK-NEXT:  # %bb.1: # %label1
1532; CHECK-NEXT:    movi16 a0, 1
1533; CHECK-NEXT:    movi16 a1, 0
1534; CHECK-NEXT:    rts16
1535; CHECK-NEXT:  .LBB37_2: # %label2
1536; CHECK-NEXT:    movi16 a0, 0
1537; CHECK-NEXT:    movi16 a1, 0
1538; CHECK-NEXT:    rts16
1539;
1540; GENERIC-LABEL: brR0_i64_ugt:
1541; GENERIC:       # %bb.0: # %entry
1542; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1543; GENERIC-NEXT:    subi16 sp, sp, 4
1544; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1545; GENERIC-NEXT:    or16 a0, a1
1546; GENERIC-NEXT:    cmpnei16 a0, 0
1547; GENERIC-NEXT:    bf16 .LBB37_2
1548; GENERIC-NEXT:  # %bb.1: # %label1
1549; GENERIC-NEXT:    movi16 a0, 1
1550; GENERIC-NEXT:    br32 .LBB37_3
1551; GENERIC-NEXT:  .LBB37_2: # %label2
1552; GENERIC-NEXT:    movi16 a0, 0
1553; GENERIC-NEXT:  .LBB37_3: # %label1
1554; GENERIC-NEXT:    movi16 a1, 0
1555; GENERIC-NEXT:    addi16 sp, sp, 4
1556; GENERIC-NEXT:    rts16
1557; CHECK-UGTXT:    icmpu32 a0, a1, a0
1558; CHECK-UGTXT:    rts16
1559entry:
1560  %icmp = icmp ugt i64 %x, 0
1561  br i1 %icmp, label %label1, label %label2
1562label1:
1563  ret i64 1
1564label2:
1565  ret i64 0
1566}
1567
1568;UGE
1569define i64 @brRR_i64_uge(i64 %x, i64 %y) {
1570; CHECK-LABEL: brRR_i64_uge:
1571; CHECK:       # %bb.0: # %entry
1572; CHECK-NEXT:    .cfi_def_cfa_offset 0
1573; CHECK-NEXT:    subi16 sp, sp, 8
1574; CHECK-NEXT:    .cfi_def_cfa_offset 8
1575; CHECK-NEXT:    cmpne16 a3, a1
1576; CHECK-NEXT:    mvc32 t0
1577; CHECK-NEXT:    st32.w t0, (sp, 4)
1578; CHECK-NEXT:    cmphs16 a3, a1
1579; CHECK-NEXT:    mvcv16 a1
1580; CHECK-NEXT:    cmphs16 a2, a0
1581; CHECK-NEXT:    mvcv16 a0
1582; CHECK-NEXT:    ld16.w a2, (sp, 4)
1583; CHECK-NEXT:    btsti32 a2, 0
1584; CHECK-NEXT:    movf32 a1, a0
1585; CHECK-NEXT:    btsti32 a1, 0
1586; CHECK-NEXT:    bt32 .LBB38_2
1587; CHECK-NEXT:  # %bb.1: # %label1
1588; CHECK-NEXT:    movi16 a0, 1
1589; CHECK-NEXT:    br32 .LBB38_3
1590; CHECK-NEXT:  .LBB38_2: # %label2
1591; CHECK-NEXT:    movi16 a0, 0
1592; CHECK-NEXT:  .LBB38_3: # %label1
1593; CHECK-NEXT:    movi16 a1, 0
1594; CHECK-NEXT:    addi16 sp, sp, 8
1595; CHECK-NEXT:    rts16
1596;
1597; GENERIC-LABEL: brRR_i64_uge:
1598; GENERIC:       # %bb.0: # %entry
1599; GENERIC-NEXT:    subi16 sp, sp, 4
1600; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1601; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
1602; GENERIC-NEXT:    .cfi_offset l0, -4
1603; GENERIC-NEXT:    subi16 sp, sp, 4
1604; GENERIC-NEXT:    .cfi_def_cfa_offset 8
1605; GENERIC-NEXT:    cmphs16 a3, a1
1606; GENERIC-NEXT:    mvcv16 l0
1607; GENERIC-NEXT:    cmphs16 a2, a0
1608; GENERIC-NEXT:    mvcv16 a0
1609; GENERIC-NEXT:    cmpne16 a3, a1
1610; GENERIC-NEXT:    mvcv16 a1
1611; GENERIC-NEXT:    btsti16 a1, 0
1612; GENERIC-NEXT:    bt16 .LBB38_2
1613; GENERIC-NEXT:  # %bb.1: # %entry
1614; GENERIC-NEXT:    mov16 a0, l0
1615; GENERIC-NEXT:  .LBB38_2: # %entry
1616; GENERIC-NEXT:    btsti16 a0, 0
1617; GENERIC-NEXT:    bt16 .LBB38_4
1618; GENERIC-NEXT:  # %bb.3: # %label1
1619; GENERIC-NEXT:    movi16 a0, 1
1620; GENERIC-NEXT:    br32 .LBB38_5
1621; GENERIC-NEXT:  .LBB38_4: # %label2
1622; GENERIC-NEXT:    movi16 a0, 0
1623; GENERIC-NEXT:  .LBB38_5: # %label1
1624; GENERIC-NEXT:    movi16 a1, 0
1625; GENERIC-NEXT:    addi16 sp, sp, 4
1626; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
1627; GENERIC-NEXT:    addi16 sp, sp, 4
1628; GENERIC-NEXT:    rts16
1629; CHECK-UGTXT:    icmpu32 a0, a1, a0
1630; CHECK-UGTXT:    rts16
1631entry:
1632  %icmp = icmp uge i64 %y, %x
1633  br i1 %icmp, label %label1, label %label2
1634label1:
1635  ret i64 1
1636label2:
1637  ret i64 0
1638}
1639
1640define i64 @brRI_i64_uge(i64 %x) {
1641; CHECK-LABEL: brRI_i64_uge:
1642; CHECK:       # %bb.0: # %entry
1643; CHECK-NEXT:    .cfi_def_cfa_offset 0
1644; CHECK-NEXT:    subi16 sp, sp, 8
1645; CHECK-NEXT:    .cfi_def_cfa_offset 8
1646; CHECK-NEXT:    cmpnei16 a1, 0
1647; CHECK-NEXT:    mvc32 a1
1648; CHECK-NEXT:    st16.w a1, (sp, 4)
1649; CHECK-NEXT:    cmphsi16 a0, 10
1650; CHECK-NEXT:    mvcv16 a0
1651; CHECK-NEXT:    movi16 a1, 0
1652; CHECK-NEXT:    ld16.w a2, (sp, 4)
1653; CHECK-NEXT:    btsti32 a2, 0
1654; CHECK-NEXT:    movf32 a1, a0
1655; CHECK-NEXT:    btsti32 a1, 0
1656; CHECK-NEXT:    bt32 .LBB39_2
1657; CHECK-NEXT:  # %bb.1: # %label1
1658; CHECK-NEXT:    movi16 a0, 1
1659; CHECK-NEXT:    br32 .LBB39_3
1660; CHECK-NEXT:  .LBB39_2: # %label2
1661; CHECK-NEXT:    movi16 a0, 0
1662; CHECK-NEXT:  .LBB39_3: # %label1
1663; CHECK-NEXT:    movi16 a1, 0
1664; CHECK-NEXT:    addi16 sp, sp, 8
1665; CHECK-NEXT:    rts16
1666;
1667; GENERIC-LABEL: brRI_i64_uge:
1668; GENERIC:       # %bb.0: # %entry
1669; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1670; GENERIC-NEXT:    subi16 sp, sp, 4
1671; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1672; GENERIC-NEXT:    cmphsi16 a0, 10
1673; GENERIC-NEXT:    mvcv16 a0
1674; GENERIC-NEXT:    cmpnei16 a1, 0
1675; GENERIC-NEXT:    mvcv16 a1
1676; GENERIC-NEXT:    btsti16 a1, 0
1677; GENERIC-NEXT:    bt16 .LBB39_2
1678; GENERIC-NEXT:  # %bb.1: # %entry
1679; GENERIC-NEXT:    movi16 a0, 0
1680; GENERIC-NEXT:  .LBB39_2: # %entry
1681; GENERIC-NEXT:    btsti16 a0, 0
1682; GENERIC-NEXT:    bt16 .LBB39_4
1683; GENERIC-NEXT:  # %bb.3: # %label1
1684; GENERIC-NEXT:    movi16 a0, 1
1685; GENERIC-NEXT:    br32 .LBB39_5
1686; GENERIC-NEXT:  .LBB39_4: # %label2
1687; GENERIC-NEXT:    movi16 a0, 0
1688; GENERIC-NEXT:  .LBB39_5: # %label1
1689; GENERIC-NEXT:    movi16 a1, 0
1690; GENERIC-NEXT:    addi16 sp, sp, 4
1691; GENERIC-NEXT:    rts16
1692; CHECK-UGTXT:    icmpu32 a0, a1, a0
1693; CHECK-UGTXT:    rts16
1694entry:
1695  %icmp = icmp uge i64 %x, 10
1696  br i1 %icmp, label %label1, label %label2
1697label1:
1698  ret i64 1
1699label2:
1700  ret i64 0
1701}
1702
1703;ULT
1704define i64 @brRR_i64_ult(i64 %x, i64 %y) {
1705; CHECK-LABEL: brRR_i64_ult:
1706; CHECK:       # %bb.0: # %entry
1707; CHECK-NEXT:    .cfi_def_cfa_offset 0
1708; CHECK-NEXT:    subi16 sp, sp, 16
1709; CHECK-NEXT:    .cfi_def_cfa_offset 16
1710; CHECK-NEXT:    cmphs16 a3, a1
1711; CHECK-NEXT:    mvc32 t0
1712; CHECK-NEXT:    st32.w t0, (sp, 12)
1713; CHECK-NEXT:    cmphs16 a2, a0
1714; CHECK-NEXT:    mvc32 a0
1715; CHECK-NEXT:    st16.w a0, (sp, 4)
1716; CHECK-NEXT:    cmpne16 a3, a1
1717; CHECK-NEXT:    mvc32 a0
1718; CHECK-NEXT:    st16.w a0, (sp, 8)
1719; CHECK-NEXT:    ld16.w a0, (sp, 4)
1720; CHECK-NEXT:    btsti32 a0, 0
1721; CHECK-NEXT:    mvc32 a0
1722; CHECK-NEXT:    ld16.w a1, (sp, 12)
1723; CHECK-NEXT:    btsti32 a1, 0
1724; CHECK-NEXT:    mvc32 a1
1725; CHECK-NEXT:    ld16.w a2, (sp, 8)
1726; CHECK-NEXT:    btsti32 a2, 0
1727; CHECK-NEXT:    movf32 a1, a0
1728; CHECK-NEXT:    btsti32 a1, 0
1729; CHECK-NEXT:    bt32 .LBB40_2
1730; CHECK-NEXT:  # %bb.1: # %label1
1731; CHECK-NEXT:    movi16 a0, 1
1732; CHECK-NEXT:    br32 .LBB40_3
1733; CHECK-NEXT:  .LBB40_2: # %label2
1734; CHECK-NEXT:    movi16 a0, 0
1735; CHECK-NEXT:  .LBB40_3: # %label1
1736; CHECK-NEXT:    movi16 a1, 0
1737; CHECK-NEXT:    addi16 sp, sp, 16
1738; CHECK-NEXT:    rts16
1739;
1740; GENERIC-LABEL: brRR_i64_ult:
1741; GENERIC:       # %bb.0: # %entry
1742; GENERIC-NEXT:    subi16 sp, sp, 8
1743; GENERIC-NEXT:    .cfi_def_cfa_offset 8
1744; GENERIC-NEXT:    st16.w l1, (sp, 4) # 4-byte Folded Spill
1745; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
1746; GENERIC-NEXT:    .cfi_offset l1, -4
1747; GENERIC-NEXT:    .cfi_offset l0, -8
1748; GENERIC-NEXT:    subi16 sp, sp, 4
1749; GENERIC-NEXT:    .cfi_def_cfa_offset 12
1750; GENERIC-NEXT:    cmphs16 a3, a1
1751; GENERIC-NEXT:    mvcv16 l1
1752; GENERIC-NEXT:    movi16 l0, 1
1753; GENERIC-NEXT:    cmphs16 a2, a0
1754; GENERIC-NEXT:    mvcv16 a0
1755; GENERIC-NEXT:    cmpne16 a3, a1
1756; GENERIC-NEXT:    mvcv16 a1
1757; GENERIC-NEXT:    btsti16 a1, 0
1758; GENERIC-NEXT:    bt16 .LBB40_3
1759; GENERIC-NEXT:  # %bb.1: # %entry
1760; GENERIC-NEXT:    subu16 l0, l1
1761; GENERIC-NEXT:    btsti16 l0, 0
1762; GENERIC-NEXT:    bf16 .LBB40_4
1763; GENERIC-NEXT:  .LBB40_2: # %label2
1764; GENERIC-NEXT:    movi16 a0, 0
1765; GENERIC-NEXT:    br32 .LBB40_5
1766; GENERIC-NEXT:  .LBB40_3:
1767; GENERIC-NEXT:    subu16 l0, a0
1768; GENERIC-NEXT:    btsti16 l0, 0
1769; GENERIC-NEXT:    bt16 .LBB40_2
1770; GENERIC-NEXT:  .LBB40_4: # %label1
1771; GENERIC-NEXT:    movi16 a0, 1
1772; GENERIC-NEXT:  .LBB40_5: # %label1
1773; GENERIC-NEXT:    movi16 a1, 0
1774; GENERIC-NEXT:    addi16 sp, sp, 4
1775; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
1776; GENERIC-NEXT:    ld16.w l1, (sp, 4) # 4-byte Folded Reload
1777; GENERIC-NEXT:    addi16 sp, sp, 8
1778; GENERIC-NEXT:    rts16
1779; CHECK-UGTXT:    icmpu32 a0, a1, a0
1780; CHECK-UGTXT:    rts16
1781entry:
1782  %icmp = icmp ult i64 %y, %x
1783  br i1 %icmp, label %label1, label %label2
1784label1:
1785  ret i64 1
1786label2:
1787  ret i64 0
1788}
1789
1790define i64 @brRI_i64_ult(i64 %x) {
1791; CHECK-LABEL: brRI_i64_ult:
1792; CHECK:       # %bb.0: # %entry
1793; CHECK-NEXT:    movi16 a2, 9
1794; CHECK-NEXT:    cmphs16 a2, a0
1795; CHECK-NEXT:    mvcv16 a0
1796; CHECK-NEXT:    cmpnei16 a1, 0
1797; CHECK-NEXT:    mvc32 a1
1798; CHECK-NEXT:    movf32 a1, a0
1799; CHECK-NEXT:    btsti32 a1, 0
1800; CHECK-NEXT:    bt32 .LBB41_2
1801; CHECK-NEXT:  # %bb.1: # %label1
1802; CHECK-NEXT:    movi16 a0, 1
1803; CHECK-NEXT:    movi16 a1, 0
1804; CHECK-NEXT:    rts16
1805; CHECK-NEXT:  .LBB41_2: # %label2
1806; CHECK-NEXT:    movi16 a0, 0
1807; CHECK-NEXT:    movi16 a1, 0
1808; CHECK-NEXT:    rts16
1809;
1810; GENERIC-LABEL: brRI_i64_ult:
1811; GENERIC:       # %bb.0: # %entry
1812; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1813; GENERIC-NEXT:    subi16 sp, sp, 4
1814; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1815; GENERIC-NEXT:    cmpnei16 a1, 0
1816; GENERIC-NEXT:    mvcv16 a1
1817; GENERIC-NEXT:    movi16 a2, 9
1818; GENERIC-NEXT:    cmphs16 a2, a0
1819; GENERIC-NEXT:    mvcv16 a0
1820; GENERIC-NEXT:    btsti16 a1, 0
1821; GENERIC-NEXT:    bt16 .LBB41_2
1822; GENERIC-NEXT:  # %bb.1: # %entry
1823; GENERIC-NEXT:    movi16 a0, 1
1824; GENERIC-NEXT:    subu16 a0, a1
1825; GENERIC-NEXT:  .LBB41_2: # %entry
1826; GENERIC-NEXT:    btsti16 a0, 0
1827; GENERIC-NEXT:    bt16 .LBB41_4
1828; GENERIC-NEXT:  # %bb.3: # %label1
1829; GENERIC-NEXT:    movi16 a0, 1
1830; GENERIC-NEXT:    br32 .LBB41_5
1831; GENERIC-NEXT:  .LBB41_4: # %label2
1832; GENERIC-NEXT:    movi16 a0, 0
1833; GENERIC-NEXT:  .LBB41_5: # %label1
1834; GENERIC-NEXT:    movi16 a1, 0
1835; GENERIC-NEXT:    addi16 sp, sp, 4
1836; GENERIC-NEXT:    rts16
1837; CHECK-UGTXT:    icmpu32 a0, a1, a0
1838; CHECK-UGTXT:    rts16
1839entry:
1840  %icmp = icmp ult i64 %x, 10
1841  br i1 %icmp, label %label1, label %label2
1842label1:
1843  ret i64 1
1844label2:
1845  ret i64 0
1846}
1847
1848
1849;ULE
1850define i64 @brRR_i64_ule(i64 %x, i64 %y) {
1851; CHECK-LABEL: brRR_i64_ule:
1852; CHECK:       # %bb.0: # %entry
1853; CHECK-NEXT:    .cfi_def_cfa_offset 0
1854; CHECK-NEXT:    subi16 sp, sp, 8
1855; CHECK-NEXT:    .cfi_def_cfa_offset 8
1856; CHECK-NEXT:    cmpne16 a3, a1
1857; CHECK-NEXT:    mvc32 t0
1858; CHECK-NEXT:    st32.w t0, (sp, 4)
1859; CHECK-NEXT:    cmphs16 a1, a3
1860; CHECK-NEXT:    mvcv16 a1
1861; CHECK-NEXT:    cmphs16 a0, a2
1862; CHECK-NEXT:    mvcv16 a0
1863; CHECK-NEXT:    ld16.w a2, (sp, 4)
1864; CHECK-NEXT:    btsti32 a2, 0
1865; CHECK-NEXT:    movf32 a1, a0
1866; CHECK-NEXT:    btsti32 a1, 0
1867; CHECK-NEXT:    bt32 .LBB42_2
1868; CHECK-NEXT:  # %bb.1: # %label1
1869; CHECK-NEXT:    movi16 a0, 1
1870; CHECK-NEXT:    br32 .LBB42_3
1871; CHECK-NEXT:  .LBB42_2: # %label2
1872; CHECK-NEXT:    movi16 a0, 0
1873; CHECK-NEXT:  .LBB42_3: # %label1
1874; CHECK-NEXT:    movi16 a1, 0
1875; CHECK-NEXT:    addi16 sp, sp, 8
1876; CHECK-NEXT:    rts16
1877;
1878; GENERIC-LABEL: brRR_i64_ule:
1879; GENERIC:       # %bb.0: # %entry
1880; GENERIC-NEXT:    subi16 sp, sp, 4
1881; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1882; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
1883; GENERIC-NEXT:    .cfi_offset l0, -4
1884; GENERIC-NEXT:    subi16 sp, sp, 4
1885; GENERIC-NEXT:    .cfi_def_cfa_offset 8
1886; GENERIC-NEXT:    cmphs16 a1, a3
1887; GENERIC-NEXT:    mvcv16 l0
1888; GENERIC-NEXT:    cmphs16 a0, a2
1889; GENERIC-NEXT:    mvcv16 a0
1890; GENERIC-NEXT:    cmpne16 a3, a1
1891; GENERIC-NEXT:    mvcv16 a1
1892; GENERIC-NEXT:    btsti16 a1, 0
1893; GENERIC-NEXT:    bt16 .LBB42_2
1894; GENERIC-NEXT:  # %bb.1: # %entry
1895; GENERIC-NEXT:    mov16 a0, l0
1896; GENERIC-NEXT:  .LBB42_2: # %entry
1897; GENERIC-NEXT:    btsti16 a0, 0
1898; GENERIC-NEXT:    bt16 .LBB42_4
1899; GENERIC-NEXT:  # %bb.3: # %label1
1900; GENERIC-NEXT:    movi16 a0, 1
1901; GENERIC-NEXT:    br32 .LBB42_5
1902; GENERIC-NEXT:  .LBB42_4: # %label2
1903; GENERIC-NEXT:    movi16 a0, 0
1904; GENERIC-NEXT:  .LBB42_5: # %label1
1905; GENERIC-NEXT:    movi16 a1, 0
1906; GENERIC-NEXT:    addi16 sp, sp, 4
1907; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
1908; GENERIC-NEXT:    addi16 sp, sp, 4
1909; GENERIC-NEXT:    rts16
1910; CHECK-UGTXT:    icmpu32 a0, a1, a0
1911; CHECK-UGTXT:    rts16
1912entry:
1913  %icmp = icmp ule i64 %y, %x
1914  br i1 %icmp, label %label1, label %label2
1915label1:
1916  ret i64 1
1917label2:
1918  ret i64 0
1919}
1920
1921define i64 @brRI_i64_ule(i64 %x) {
1922; CHECK-LABEL: brRI_i64_ule:
1923; CHECK:       # %bb.0: # %entry
1924; CHECK-NEXT:    movi16 a2, 10
1925; CHECK-NEXT:    cmphs16 a2, a0
1926; CHECK-NEXT:    mvcv16 a0
1927; CHECK-NEXT:    cmpnei16 a1, 0
1928; CHECK-NEXT:    mvc32 a1
1929; CHECK-NEXT:    movf32 a1, a0
1930; CHECK-NEXT:    btsti32 a1, 0
1931; CHECK-NEXT:    bt32 .LBB43_2
1932; CHECK-NEXT:  # %bb.1: # %label1
1933; CHECK-NEXT:    movi16 a0, 1
1934; CHECK-NEXT:    movi16 a1, 0
1935; CHECK-NEXT:    rts16
1936; CHECK-NEXT:  .LBB43_2: # %label2
1937; CHECK-NEXT:    movi16 a0, 0
1938; CHECK-NEXT:    movi16 a1, 0
1939; CHECK-NEXT:    rts16
1940;
1941; GENERIC-LABEL: brRI_i64_ule:
1942; GENERIC:       # %bb.0: # %entry
1943; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1944; GENERIC-NEXT:    subi16 sp, sp, 4
1945; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1946; GENERIC-NEXT:    cmpnei16 a1, 0
1947; GENERIC-NEXT:    mvcv16 a1
1948; GENERIC-NEXT:    movi16 a2, 10
1949; GENERIC-NEXT:    cmphs16 a2, a0
1950; GENERIC-NEXT:    mvcv16 a0
1951; GENERIC-NEXT:    btsti16 a1, 0
1952; GENERIC-NEXT:    bt16 .LBB43_2
1953; GENERIC-NEXT:  # %bb.1: # %entry
1954; GENERIC-NEXT:    movi16 a0, 1
1955; GENERIC-NEXT:    subu16 a0, a1
1956; GENERIC-NEXT:  .LBB43_2: # %entry
1957; GENERIC-NEXT:    btsti16 a0, 0
1958; GENERIC-NEXT:    bt16 .LBB43_4
1959; GENERIC-NEXT:  # %bb.3: # %label1
1960; GENERIC-NEXT:    movi16 a0, 1
1961; GENERIC-NEXT:    br32 .LBB43_5
1962; GENERIC-NEXT:  .LBB43_4: # %label2
1963; GENERIC-NEXT:    movi16 a0, 0
1964; GENERIC-NEXT:  .LBB43_5: # %label1
1965; GENERIC-NEXT:    movi16 a1, 0
1966; GENERIC-NEXT:    addi16 sp, sp, 4
1967; GENERIC-NEXT:    rts16
1968; CHECK-UGTXT:    icmpu32 a0, a1, a0
1969; CHECK-UGTXT:    rts16
1970entry:
1971  %icmp = icmp ule i64 %x, 10
1972  br i1 %icmp, label %label1, label %label2
1973label1:
1974  ret i64 1
1975label2:
1976  ret i64 0
1977}
1978
1979define i64 @brR0_i64_ule(i64 %x) {
1980; CHECK-LABEL: brR0_i64_ule:
1981; CHECK:       # %bb.0: # %entry
1982; CHECK-NEXT:    or16 a0, a1
1983; CHECK-NEXT:    bnez32 a0, .LBB44_2
1984; CHECK-NEXT:  # %bb.1: # %label1
1985; CHECK-NEXT:    movi16 a0, 1
1986; CHECK-NEXT:    movi16 a1, 0
1987; CHECK-NEXT:    rts16
1988; CHECK-NEXT:  .LBB44_2: # %label2
1989; CHECK-NEXT:    movi16 a0, 0
1990; CHECK-NEXT:    movi16 a1, 0
1991; CHECK-NEXT:    rts16
1992;
1993; GENERIC-LABEL: brR0_i64_ule:
1994; GENERIC:       # %bb.0: # %entry
1995; GENERIC-NEXT:    .cfi_def_cfa_offset 0
1996; GENERIC-NEXT:    subi16 sp, sp, 4
1997; GENERIC-NEXT:    .cfi_def_cfa_offset 4
1998; GENERIC-NEXT:    or16 a0, a1
1999; GENERIC-NEXT:    cmpnei16 a0, 0
2000; GENERIC-NEXT:    bt16 .LBB44_2
2001; GENERIC-NEXT:  # %bb.1: # %label1
2002; GENERIC-NEXT:    movi16 a0, 1
2003; GENERIC-NEXT:    br32 .LBB44_3
2004; GENERIC-NEXT:  .LBB44_2: # %label2
2005; GENERIC-NEXT:    movi16 a0, 0
2006; GENERIC-NEXT:  .LBB44_3: # %label1
2007; GENERIC-NEXT:    movi16 a1, 0
2008; GENERIC-NEXT:    addi16 sp, sp, 4
2009; GENERIC-NEXT:    rts16
2010; CHECK-UGTXT:    icmpu32 a0, a1, a0
2011; CHECK-UGTXT:    rts16
2012entry:
2013  %icmp = icmp ule i64 %x, 0
2014  br i1 %icmp, label %label1, label %label2
2015label1:
2016  ret i64 1
2017label2:
2018  ret i64 0
2019}
2020
2021;SGT
2022define i64 @brRR_i64_sgt(i64 %x, i64 %y) {
2023; CHECK-LABEL: brRR_i64_sgt:
2024; CHECK:       # %bb.0: # %entry
2025; CHECK-NEXT:    .cfi_def_cfa_offset 0
2026; CHECK-NEXT:    subi16 sp, sp, 12
2027; CHECK-NEXT:    .cfi_def_cfa_offset 12
2028; CHECK-NEXT:    cmphs16 a0, a2
2029; CHECK-NEXT:    mvc32 a0
2030; CHECK-NEXT:    st16.w a0, (sp, 4)
2031; CHECK-NEXT:    cmpne16 a3, a1
2032; CHECK-NEXT:    mvc32 a0
2033; CHECK-NEXT:    st16.w a0, (sp, 8)
2034; CHECK-NEXT:    cmplt16 a1, a3
2035; CHECK-NEXT:    mvcv16 a0
2036; CHECK-NEXT:    ld16.w a1, (sp, 4)
2037; CHECK-NEXT:    btsti32 a1, 0
2038; CHECK-NEXT:    mvc32 a1
2039; CHECK-NEXT:    ld16.w a2, (sp, 8)
2040; CHECK-NEXT:    btsti32 a2, 0
2041; CHECK-NEXT:    movf32 a0, a1
2042; CHECK-NEXT:    btsti32 a0, 0
2043; CHECK-NEXT:    bt32 .LBB45_2
2044; CHECK-NEXT:  # %bb.1: # %label1
2045; CHECK-NEXT:    movi16 a0, 1
2046; CHECK-NEXT:    br32 .LBB45_3
2047; CHECK-NEXT:  .LBB45_2: # %label2
2048; CHECK-NEXT:    movi16 a0, 0
2049; CHECK-NEXT:  .LBB45_3: # %label1
2050; CHECK-NEXT:    movi16 a1, 0
2051; CHECK-NEXT:    addi16 sp, sp, 12
2052; CHECK-NEXT:    rts16
2053;
2054; GENERIC-LABEL: brRR_i64_sgt:
2055; GENERIC:       # %bb.0: # %entry
2056; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2057; GENERIC-NEXT:    subi16 sp, sp, 4
2058; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2059; GENERIC-NEXT:    cmphs16 a0, a2
2060; GENERIC-NEXT:    mvcv16 a2
2061; GENERIC-NEXT:    cmplt16 a1, a3
2062; GENERIC-NEXT:    mvcv16 a0
2063; GENERIC-NEXT:    cmpne16 a3, a1
2064; GENERIC-NEXT:    mvcv16 a1
2065; GENERIC-NEXT:    btsti16 a1, 0
2066; GENERIC-NEXT:    bf16 .LBB45_2
2067; GENERIC-NEXT:  # %bb.1:
2068; GENERIC-NEXT:    movi16 a0, 1
2069; GENERIC-NEXT:    subu16 a0, a2
2070; GENERIC-NEXT:  .LBB45_2: # %entry
2071; GENERIC-NEXT:    btsti16 a0, 0
2072; GENERIC-NEXT:    bt16 .LBB45_4
2073; GENERIC-NEXT:  # %bb.3: # %label1
2074; GENERIC-NEXT:    movi16 a0, 1
2075; GENERIC-NEXT:    br32 .LBB45_5
2076; GENERIC-NEXT:  .LBB45_4: # %label2
2077; GENERIC-NEXT:    movi16 a0, 0
2078; GENERIC-NEXT:  .LBB45_5: # %label1
2079; GENERIC-NEXT:    movi16 a1, 0
2080; GENERIC-NEXT:    addi16 sp, sp, 4
2081; GENERIC-NEXT:    rts16
2082; CHECK-UGTXT:    icmpu32 a0, a1, a0
2083; CHECK-UGTXT:    rts16
2084entry:
2085  %icmp = icmp sgt i64 %y, %x
2086  br i1 %icmp, label %label1, label %label2
2087label1:
2088  ret i64 1
2089label2:
2090  ret i64 0
2091}
2092
2093define i64 @brRI_i64_sgt(i64 %x) {
2094; CHECK-LABEL: brRI_i64_sgt:
2095; CHECK:       # %bb.0: # %entry
2096; CHECK-NEXT:    .cfi_def_cfa_offset 0
2097; CHECK-NEXT:    subi16 sp, sp, 12
2098; CHECK-NEXT:    .cfi_def_cfa_offset 12
2099; CHECK-NEXT:    movi16 a2, 0
2100; CHECK-NEXT:    cmplt16 a1, a2
2101; CHECK-NEXT:    mvc32 a2
2102; CHECK-NEXT:    st16.w a2, (sp, 4)
2103; CHECK-NEXT:    cmpnei16 a1, 0
2104; CHECK-NEXT:    mvc32 a1
2105; CHECK-NEXT:    st16.w a1, (sp, 8)
2106; CHECK-NEXT:    cmphsi16 a0, 11
2107; CHECK-NEXT:    mvcv16 a0
2108; CHECK-NEXT:    ld16.w a1, (sp, 4)
2109; CHECK-NEXT:    btsti32 a1, 0
2110; CHECK-NEXT:    mvc32 a1
2111; CHECK-NEXT:    ld16.w a2, (sp, 8)
2112; CHECK-NEXT:    btsti32 a2, 0
2113; CHECK-NEXT:    movf32 a1, a0
2114; CHECK-NEXT:    btsti32 a1, 0
2115; CHECK-NEXT:    bt32 .LBB46_2
2116; CHECK-NEXT:  # %bb.1: # %label1
2117; CHECK-NEXT:    movi16 a0, 1
2118; CHECK-NEXT:    br32 .LBB46_3
2119; CHECK-NEXT:  .LBB46_2: # %label2
2120; CHECK-NEXT:    movi16 a0, 0
2121; CHECK-NEXT:  .LBB46_3: # %label1
2122; CHECK-NEXT:    movi16 a1, 0
2123; CHECK-NEXT:    addi16 sp, sp, 12
2124; CHECK-NEXT:    rts16
2125;
2126; GENERIC-LABEL: brRI_i64_sgt:
2127; GENERIC:       # %bb.0: # %entry
2128; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2129; GENERIC-NEXT:    subi16 sp, sp, 4
2130; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2131; GENERIC-NEXT:    movi16 a2, 0
2132; GENERIC-NEXT:    cmplt16 a1, a2
2133; GENERIC-NEXT:    mvcv16 a2
2134; GENERIC-NEXT:    cmphsi16 a0, 11
2135; GENERIC-NEXT:    mvcv16 a0
2136; GENERIC-NEXT:    cmpnei16 a1, 0
2137; GENERIC-NEXT:    mvcv16 a1
2138; GENERIC-NEXT:    btsti16 a1, 0
2139; GENERIC-NEXT:    bt16 .LBB46_2
2140; GENERIC-NEXT:  # %bb.1: # %entry
2141; GENERIC-NEXT:    movi16 a0, 1
2142; GENERIC-NEXT:    subu16 a0, a2
2143; GENERIC-NEXT:  .LBB46_2: # %entry
2144; GENERIC-NEXT:    btsti16 a0, 0
2145; GENERIC-NEXT:    bt16 .LBB46_4
2146; GENERIC-NEXT:  # %bb.3: # %label1
2147; GENERIC-NEXT:    movi16 a0, 1
2148; GENERIC-NEXT:    br32 .LBB46_5
2149; GENERIC-NEXT:  .LBB46_4: # %label2
2150; GENERIC-NEXT:    movi16 a0, 0
2151; GENERIC-NEXT:  .LBB46_5: # %label1
2152; GENERIC-NEXT:    movi16 a1, 0
2153; GENERIC-NEXT:    addi16 sp, sp, 4
2154; GENERIC-NEXT:    rts16
2155; CHECK-UGTXT:    icmpu32 a0, a1, a0
2156; CHECK-UGTXT:    rts16
2157entry:
2158  %icmp = icmp sgt i64 %x, 10
2159  br i1 %icmp, label %label1, label %label2
2160label1:
2161  ret i64 1
2162label2:
2163  ret i64 0
2164}
2165
2166define i64 @brR0_i64_sgt(i64 %x) {
2167; CHECK-LABEL: brR0_i64_sgt:
2168; CHECK:       # %bb.0: # %entry
2169; CHECK-NEXT:    .cfi_def_cfa_offset 0
2170; CHECK-NEXT:    subi16 sp, sp, 12
2171; CHECK-NEXT:    .cfi_def_cfa_offset 12
2172; CHECK-NEXT:    movi16 a2, 0
2173; CHECK-NEXT:    cmplt16 a1, a2
2174; CHECK-NEXT:    mvc32 a2
2175; CHECK-NEXT:    st16.w a2, (sp, 4)
2176; CHECK-NEXT:    cmpnei16 a1, 0
2177; CHECK-NEXT:    mvc32 a1
2178; CHECK-NEXT:    st16.w a1, (sp, 8)
2179; CHECK-NEXT:    cmpnei16 a0, 0
2180; CHECK-NEXT:    mvcv16 a0
2181; CHECK-NEXT:    ld16.w a1, (sp, 4)
2182; CHECK-NEXT:    btsti32 a1, 0
2183; CHECK-NEXT:    mvc32 a1
2184; CHECK-NEXT:    ld16.w a2, (sp, 8)
2185; CHECK-NEXT:    btsti32 a2, 0
2186; CHECK-NEXT:    movf32 a1, a0
2187; CHECK-NEXT:    btsti32 a1, 0
2188; CHECK-NEXT:    bt32 .LBB47_2
2189; CHECK-NEXT:  # %bb.1: # %label1
2190; CHECK-NEXT:    movi16 a0, 1
2191; CHECK-NEXT:    br32 .LBB47_3
2192; CHECK-NEXT:  .LBB47_2: # %label2
2193; CHECK-NEXT:    movi16 a0, 0
2194; CHECK-NEXT:  .LBB47_3: # %label1
2195; CHECK-NEXT:    movi16 a1, 0
2196; CHECK-NEXT:    addi16 sp, sp, 12
2197; CHECK-NEXT:    rts16
2198;
2199; GENERIC-LABEL: brR0_i64_sgt:
2200; GENERIC:       # %bb.0: # %entry
2201; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2202; GENERIC-NEXT:    subi16 sp, sp, 4
2203; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2204; GENERIC-NEXT:    movi16 a2, 0
2205; GENERIC-NEXT:    cmplt16 a1, a2
2206; GENERIC-NEXT:    mvcv16 a2
2207; GENERIC-NEXT:    cmpnei16 a0, 0
2208; GENERIC-NEXT:    mvcv16 a0
2209; GENERIC-NEXT:    cmpnei16 a1, 0
2210; GENERIC-NEXT:    mvcv16 a1
2211; GENERIC-NEXT:    btsti16 a1, 0
2212; GENERIC-NEXT:    bt16 .LBB47_2
2213; GENERIC-NEXT:  # %bb.1: # %entry
2214; GENERIC-NEXT:    movi16 a0, 1
2215; GENERIC-NEXT:    subu16 a0, a2
2216; GENERIC-NEXT:  .LBB47_2: # %entry
2217; GENERIC-NEXT:    btsti16 a0, 0
2218; GENERIC-NEXT:    bt16 .LBB47_4
2219; GENERIC-NEXT:  # %bb.3: # %label1
2220; GENERIC-NEXT:    movi16 a0, 1
2221; GENERIC-NEXT:    br32 .LBB47_5
2222; GENERIC-NEXT:  .LBB47_4: # %label2
2223; GENERIC-NEXT:    movi16 a0, 0
2224; GENERIC-NEXT:  .LBB47_5: # %label1
2225; GENERIC-NEXT:    movi16 a1, 0
2226; GENERIC-NEXT:    addi16 sp, sp, 4
2227; GENERIC-NEXT:    rts16
2228; CHECK-UGTXT:    icmpu32 a0, a1, a0
2229; CHECK-UGTXT:    rts16
2230entry:
2231  %icmp = icmp sgt i64 %x, 0
2232  br i1 %icmp, label %label1, label %label2
2233label1:
2234  ret i64 1
2235label2:
2236  ret i64 0
2237}
2238
2239;SGE
2240define i64 @brRR_i64_sge(i64 %x, i64 %y) {
2241; CHECK-LABEL: brRR_i64_sge:
2242; CHECK:       # %bb.0: # %entry
2243; CHECK-NEXT:    .cfi_def_cfa_offset 0
2244; CHECK-NEXT:    subi16 sp, sp, 12
2245; CHECK-NEXT:    .cfi_def_cfa_offset 12
2246; CHECK-NEXT:    cmplt16 a3, a1
2247; CHECK-NEXT:    mvc32 t0
2248; CHECK-NEXT:    st32.w t0, (sp, 4)
2249; CHECK-NEXT:    cmpne16 a3, a1
2250; CHECK-NEXT:    mvc32 a1
2251; CHECK-NEXT:    st16.w a1, (sp, 8)
2252; CHECK-NEXT:    cmphs16 a2, a0
2253; CHECK-NEXT:    mvcv16 a0
2254; CHECK-NEXT:    ld16.w a1, (sp, 4)
2255; CHECK-NEXT:    btsti32 a1, 0
2256; CHECK-NEXT:    mvc32 a1
2257; CHECK-NEXT:    ld16.w a2, (sp, 8)
2258; CHECK-NEXT:    btsti32 a2, 0
2259; CHECK-NEXT:    movf32 a1, a0
2260; CHECK-NEXT:    btsti32 a1, 0
2261; CHECK-NEXT:    bt32 .LBB48_2
2262; CHECK-NEXT:  # %bb.1: # %label1
2263; CHECK-NEXT:    movi16 a0, 1
2264; CHECK-NEXT:    br32 .LBB48_3
2265; CHECK-NEXT:  .LBB48_2: # %label2
2266; CHECK-NEXT:    movi16 a0, 0
2267; CHECK-NEXT:  .LBB48_3: # %label1
2268; CHECK-NEXT:    movi16 a1, 0
2269; CHECK-NEXT:    addi16 sp, sp, 12
2270; CHECK-NEXT:    rts16
2271;
2272; GENERIC-LABEL: brRR_i64_sge:
2273; GENERIC:       # %bb.0: # %entry
2274; GENERIC-NEXT:    subi16 sp, sp, 4
2275; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2276; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
2277; GENERIC-NEXT:    .cfi_offset l0, -4
2278; GENERIC-NEXT:    subi16 sp, sp, 4
2279; GENERIC-NEXT:    .cfi_def_cfa_offset 8
2280; GENERIC-NEXT:    cmplt16 a3, a1
2281; GENERIC-NEXT:    mvcv16 l0
2282; GENERIC-NEXT:    cmphs16 a2, a0
2283; GENERIC-NEXT:    mvcv16 a0
2284; GENERIC-NEXT:    cmpne16 a3, a1
2285; GENERIC-NEXT:    mvcv16 a1
2286; GENERIC-NEXT:    btsti16 a1, 0
2287; GENERIC-NEXT:    bt16 .LBB48_2
2288; GENERIC-NEXT:  # %bb.1: # %entry
2289; GENERIC-NEXT:    movi16 a0, 1
2290; GENERIC-NEXT:    subu16 a0, l0
2291; GENERIC-NEXT:  .LBB48_2: # %entry
2292; GENERIC-NEXT:    btsti16 a0, 0
2293; GENERIC-NEXT:    bt16 .LBB48_4
2294; GENERIC-NEXT:  # %bb.3: # %label1
2295; GENERIC-NEXT:    movi16 a0, 1
2296; GENERIC-NEXT:    br32 .LBB48_5
2297; GENERIC-NEXT:  .LBB48_4: # %label2
2298; GENERIC-NEXT:    movi16 a0, 0
2299; GENERIC-NEXT:  .LBB48_5: # %label1
2300; GENERIC-NEXT:    movi16 a1, 0
2301; GENERIC-NEXT:    addi16 sp, sp, 4
2302; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
2303; GENERIC-NEXT:    addi16 sp, sp, 4
2304; GENERIC-NEXT:    rts16
2305; CHECK-UGTXT:    icmpu32 a0, a1, a0
2306; CHECK-UGTXT:    rts16
2307entry:
2308  %icmp = icmp sge i64 %y, %x
2309  br i1 %icmp, label %label1, label %label2
2310label1:
2311  ret i64 1
2312label2:
2313  ret i64 0
2314}
2315
2316define i64 @brRI_i64_sge(i64 %x) {
2317; CHECK-LABEL: brRI_i64_sge:
2318; CHECK:       # %bb.0: # %entry
2319; CHECK-NEXT:    .cfi_def_cfa_offset 0
2320; CHECK-NEXT:    subi16 sp, sp, 12
2321; CHECK-NEXT:    .cfi_def_cfa_offset 12
2322; CHECK-NEXT:    movi16 a2, 0
2323; CHECK-NEXT:    cmplt16 a1, a2
2324; CHECK-NEXT:    mvc32 a2
2325; CHECK-NEXT:    st16.w a2, (sp, 4)
2326; CHECK-NEXT:    cmpnei16 a1, 0
2327; CHECK-NEXT:    mvc32 a1
2328; CHECK-NEXT:    st16.w a1, (sp, 8)
2329; CHECK-NEXT:    cmphsi16 a0, 10
2330; CHECK-NEXT:    mvcv16 a0
2331; CHECK-NEXT:    ld16.w a1, (sp, 4)
2332; CHECK-NEXT:    btsti32 a1, 0
2333; CHECK-NEXT:    mvc32 a1
2334; CHECK-NEXT:    ld16.w a2, (sp, 8)
2335; CHECK-NEXT:    btsti32 a2, 0
2336; CHECK-NEXT:    movf32 a1, a0
2337; CHECK-NEXT:    btsti32 a1, 0
2338; CHECK-NEXT:    bt32 .LBB49_2
2339; CHECK-NEXT:  # %bb.1: # %label1
2340; CHECK-NEXT:    movi16 a0, 1
2341; CHECK-NEXT:    br32 .LBB49_3
2342; CHECK-NEXT:  .LBB49_2: # %label2
2343; CHECK-NEXT:    movi16 a0, 0
2344; CHECK-NEXT:  .LBB49_3: # %label1
2345; CHECK-NEXT:    movi16 a1, 0
2346; CHECK-NEXT:    addi16 sp, sp, 12
2347; CHECK-NEXT:    rts16
2348;
2349; GENERIC-LABEL: brRI_i64_sge:
2350; GENERIC:       # %bb.0: # %entry
2351; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2352; GENERIC-NEXT:    subi16 sp, sp, 4
2353; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2354; GENERIC-NEXT:    movi16 a2, 0
2355; GENERIC-NEXT:    cmplt16 a1, a2
2356; GENERIC-NEXT:    mvcv16 a2
2357; GENERIC-NEXT:    cmphsi16 a0, 10
2358; GENERIC-NEXT:    mvcv16 a0
2359; GENERIC-NEXT:    cmpnei16 a1, 0
2360; GENERIC-NEXT:    mvcv16 a1
2361; GENERIC-NEXT:    btsti16 a1, 0
2362; GENERIC-NEXT:    bt16 .LBB49_2
2363; GENERIC-NEXT:  # %bb.1: # %entry
2364; GENERIC-NEXT:    movi16 a0, 1
2365; GENERIC-NEXT:    subu16 a0, a2
2366; GENERIC-NEXT:  .LBB49_2: # %entry
2367; GENERIC-NEXT:    btsti16 a0, 0
2368; GENERIC-NEXT:    bt16 .LBB49_4
2369; GENERIC-NEXT:  # %bb.3: # %label1
2370; GENERIC-NEXT:    movi16 a0, 1
2371; GENERIC-NEXT:    br32 .LBB49_5
2372; GENERIC-NEXT:  .LBB49_4: # %label2
2373; GENERIC-NEXT:    movi16 a0, 0
2374; GENERIC-NEXT:  .LBB49_5: # %label1
2375; GENERIC-NEXT:    movi16 a1, 0
2376; GENERIC-NEXT:    addi16 sp, sp, 4
2377; GENERIC-NEXT:    rts16
2378; CHECK-UGTXT:    icmpu32 a0, a1, a0
2379; CHECK-UGTXT:    rts16
2380entry:
2381  %icmp = icmp sge i64 %x, 10
2382  br i1 %icmp, label %label1, label %label2
2383label1:
2384  ret i64 1
2385label2:
2386  ret i64 0
2387}
2388
2389define i64 @brR0_i64_sge(i64 %x) {
2390; CHECK-LABEL: brR0_i64_sge:
2391; CHECK:       # %bb.0: # %entry
2392; CHECK-NEXT:    blz32 a1, .LBB50_2
2393; CHECK-NEXT:  # %bb.1: # %label1
2394; CHECK-NEXT:    movi16 a0, 1
2395; CHECK-NEXT:    movi16 a1, 0
2396; CHECK-NEXT:    rts16
2397; CHECK-NEXT:  .LBB50_2: # %label2
2398; CHECK-NEXT:    movi16 a0, 0
2399; CHECK-NEXT:    movi16 a1, 0
2400; CHECK-NEXT:    rts16
2401;
2402; GENERIC-LABEL: brR0_i64_sge:
2403; GENERIC:       # %bb.0: # %entry
2404; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2405; GENERIC-NEXT:    subi16 sp, sp, 4
2406; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2407; GENERIC-NEXT:    movi16 a0, 0
2408; GENERIC-NEXT:    cmplt16 a1, a0
2409; GENERIC-NEXT:    bt16 .LBB50_2
2410; GENERIC-NEXT:  # %bb.1: # %label1
2411; GENERIC-NEXT:    movi16 a0, 1
2412; GENERIC-NEXT:    br32 .LBB50_3
2413; GENERIC-NEXT:  .LBB50_2: # %label2
2414; GENERIC-NEXT:    movi16 a0, 0
2415; GENERIC-NEXT:  .LBB50_3: # %label1
2416; GENERIC-NEXT:    movi16 a1, 0
2417; GENERIC-NEXT:    addi16 sp, sp, 4
2418; GENERIC-NEXT:    rts16
2419; CHECK-UGTXT:    icmpu32 a0, a1, a0
2420; CHECK-UGTXT:    rts16
2421entry:
2422  %icmp = icmp sge i64 %x, 0
2423  br i1 %icmp, label %label1, label %label2
2424label1:
2425  ret i64 1
2426label2:
2427  ret i64 0
2428}
2429
2430;SLT
2431define i64 @brRR_i64_slt(i64 %x, i64 %y) {
2432; CHECK-LABEL: brRR_i64_slt:
2433; CHECK:       # %bb.0: # %entry
2434; CHECK-NEXT:    .cfi_def_cfa_offset 0
2435; CHECK-NEXT:    subi16 sp, sp, 12
2436; CHECK-NEXT:    .cfi_def_cfa_offset 12
2437; CHECK-NEXT:    cmphs16 a2, a0
2438; CHECK-NEXT:    mvc32 a0
2439; CHECK-NEXT:    st16.w a0, (sp, 4)
2440; CHECK-NEXT:    cmpne16 a3, a1
2441; CHECK-NEXT:    mvc32 a0
2442; CHECK-NEXT:    st16.w a0, (sp, 8)
2443; CHECK-NEXT:    cmplt16 a3, a1
2444; CHECK-NEXT:    mvcv16 a0
2445; CHECK-NEXT:    ld16.w a1, (sp, 4)
2446; CHECK-NEXT:    btsti32 a1, 0
2447; CHECK-NEXT:    mvc32 a1
2448; CHECK-NEXT:    ld16.w a2, (sp, 8)
2449; CHECK-NEXT:    btsti32 a2, 0
2450; CHECK-NEXT:    movf32 a0, a1
2451; CHECK-NEXT:    btsti32 a0, 0
2452; CHECK-NEXT:    bt32 .LBB51_2
2453; CHECK-NEXT:  # %bb.1: # %label1
2454; CHECK-NEXT:    movi16 a0, 1
2455; CHECK-NEXT:    br32 .LBB51_3
2456; CHECK-NEXT:  .LBB51_2: # %label2
2457; CHECK-NEXT:    movi16 a0, 0
2458; CHECK-NEXT:  .LBB51_3: # %label1
2459; CHECK-NEXT:    movi16 a1, 0
2460; CHECK-NEXT:    addi16 sp, sp, 12
2461; CHECK-NEXT:    rts16
2462;
2463; GENERIC-LABEL: brRR_i64_slt:
2464; GENERIC:       # %bb.0: # %entry
2465; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2466; GENERIC-NEXT:    subi16 sp, sp, 4
2467; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2468; GENERIC-NEXT:    cmphs16 a2, a0
2469; GENERIC-NEXT:    mvcv16 a2
2470; GENERIC-NEXT:    cmplt16 a3, a1
2471; GENERIC-NEXT:    mvcv16 a0
2472; GENERIC-NEXT:    cmpne16 a3, a1
2473; GENERIC-NEXT:    mvcv16 a1
2474; GENERIC-NEXT:    btsti16 a1, 0
2475; GENERIC-NEXT:    bf16 .LBB51_2
2476; GENERIC-NEXT:  # %bb.1:
2477; GENERIC-NEXT:    movi16 a0, 1
2478; GENERIC-NEXT:    subu16 a0, a2
2479; GENERIC-NEXT:  .LBB51_2: # %entry
2480; GENERIC-NEXT:    btsti16 a0, 0
2481; GENERIC-NEXT:    bt16 .LBB51_4
2482; GENERIC-NEXT:  # %bb.3: # %label1
2483; GENERIC-NEXT:    movi16 a0, 1
2484; GENERIC-NEXT:    br32 .LBB51_5
2485; GENERIC-NEXT:  .LBB51_4: # %label2
2486; GENERIC-NEXT:    movi16 a0, 0
2487; GENERIC-NEXT:  .LBB51_5: # %label1
2488; GENERIC-NEXT:    movi16 a1, 0
2489; GENERIC-NEXT:    addi16 sp, sp, 4
2490; GENERIC-NEXT:    rts16
2491; CHECK-UGTXT:    icmpu32 a0, a1, a0
2492; CHECK-UGTXT:    rts16
2493entry:
2494  %icmp = icmp slt i64 %y, %x
2495  br i1 %icmp, label %label1, label %label2
2496label1:
2497  ret i64 1
2498label2:
2499  ret i64 0
2500}
2501
2502define i64 @brRI_i64_slt(i64 %x) {
2503; CHECK-LABEL: brRI_i64_slt:
2504; CHECK:       # %bb.0: # %entry
2505; CHECK-NEXT:    .cfi_def_cfa_offset 0
2506; CHECK-NEXT:    subi16 sp, sp, 12
2507; CHECK-NEXT:    .cfi_def_cfa_offset 12
2508; CHECK-NEXT:    movi16 a2, 0
2509; CHECK-NEXT:    cmplt16 a2, a1
2510; CHECK-NEXT:    mvc32 a2
2511; CHECK-NEXT:    st16.w a2, (sp, 8)
2512; CHECK-NEXT:    movi16 a2, 9
2513; CHECK-NEXT:    cmphs16 a2, a0
2514; CHECK-NEXT:    mvcv16 a0
2515; CHECK-NEXT:    cmpnei16 a1, 0
2516; CHECK-NEXT:    mvc32 a1
2517; CHECK-NEXT:    st16.w a1, (sp, 4)
2518; CHECK-NEXT:    ld16.w a1, (sp, 8)
2519; CHECK-NEXT:    btsti32 a1, 0
2520; CHECK-NEXT:    mvc32 a1
2521; CHECK-NEXT:    ld16.w a2, (sp, 4)
2522; CHECK-NEXT:    btsti32 a2, 0
2523; CHECK-NEXT:    movf32 a1, a0
2524; CHECK-NEXT:    btsti32 a1, 0
2525; CHECK-NEXT:    bt32 .LBB52_2
2526; CHECK-NEXT:  # %bb.1: # %label1
2527; CHECK-NEXT:    movi16 a0, 1
2528; CHECK-NEXT:    br32 .LBB52_3
2529; CHECK-NEXT:  .LBB52_2: # %label2
2530; CHECK-NEXT:    movi16 a0, 0
2531; CHECK-NEXT:  .LBB52_3: # %label1
2532; CHECK-NEXT:    movi16 a1, 0
2533; CHECK-NEXT:    addi16 sp, sp, 12
2534; CHECK-NEXT:    rts16
2535;
2536; GENERIC-LABEL: brRI_i64_slt:
2537; GENERIC:       # %bb.0: # %entry
2538; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2539; GENERIC-NEXT:    subi16 sp, sp, 4
2540; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2541; GENERIC-NEXT:    movi16 a2, 0
2542; GENERIC-NEXT:    cmplt16 a2, a1
2543; GENERIC-NEXT:    mvcv16 a2
2544; GENERIC-NEXT:    movi16 a3, 9
2545; GENERIC-NEXT:    cmphs16 a3, a0
2546; GENERIC-NEXT:    mvcv16 a0
2547; GENERIC-NEXT:    cmpnei16 a1, 0
2548; GENERIC-NEXT:    mvcv16 a1
2549; GENERIC-NEXT:    btsti16 a1, 0
2550; GENERIC-NEXT:    bt16 .LBB52_2
2551; GENERIC-NEXT:  # %bb.1: # %entry
2552; GENERIC-NEXT:    movi16 a0, 1
2553; GENERIC-NEXT:    subu16 a0, a2
2554; GENERIC-NEXT:  .LBB52_2: # %entry
2555; GENERIC-NEXT:    btsti16 a0, 0
2556; GENERIC-NEXT:    bt16 .LBB52_4
2557; GENERIC-NEXT:  # %bb.3: # %label1
2558; GENERIC-NEXT:    movi16 a0, 1
2559; GENERIC-NEXT:    br32 .LBB52_5
2560; GENERIC-NEXT:  .LBB52_4: # %label2
2561; GENERIC-NEXT:    movi16 a0, 0
2562; GENERIC-NEXT:  .LBB52_5: # %label1
2563; GENERIC-NEXT:    movi16 a1, 0
2564; GENERIC-NEXT:    addi16 sp, sp, 4
2565; GENERIC-NEXT:    rts16
2566; CHECK-UGTXT:    icmpu32 a0, a1, a0
2567; CHECK-UGTXT:    rts16
2568entry:
2569  %icmp = icmp slt i64 %x, 10
2570  br i1 %icmp, label %label1, label %label2
2571label1:
2572  ret i64 1
2573label2:
2574  ret i64 0
2575}
2576
2577define i64 @brR0_i64_slt(i64 %x) {
2578; CHECK-LABEL: brR0_i64_slt:
2579; CHECK:       # %bb.0: # %entry
2580; CHECK-NEXT:    movih32 a0, 65535
2581; CHECK-NEXT:    ori32 a0, a0, 65535
2582; CHECK-NEXT:    cmplt16 a0, a1
2583; CHECK-NEXT:    bf32 .LBB53_2
2584; CHECK-NEXT:  # %bb.1: # %label2
2585; CHECK-NEXT:    movi16 a0, 0
2586; CHECK-NEXT:    movi16 a1, 0
2587; CHECK-NEXT:    rts16
2588; CHECK-NEXT:  .LBB53_2: # %label1
2589; CHECK-NEXT:    movi16 a0, 1
2590; CHECK-NEXT:    movi16 a1, 0
2591; CHECK-NEXT:    rts16
2592;
2593; GENERIC-LABEL: brR0_i64_slt:
2594; GENERIC:       # %bb.0: # %entry
2595; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2596; GENERIC-NEXT:    subi16 sp, sp, 4
2597; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2598; GENERIC-NEXT:    movi16 a0, 255
2599; GENERIC-NEXT:    lsli16 a2, a0, 24
2600; GENERIC-NEXT:    lsli16 a3, a0, 16
2601; GENERIC-NEXT:    or16 a3, a2
2602; GENERIC-NEXT:    lsli16 a2, a0, 8
2603; GENERIC-NEXT:    or16 a2, a3
2604; GENERIC-NEXT:    or16 a2, a0
2605; GENERIC-NEXT:    cmplt16 a2, a1
2606; GENERIC-NEXT:    bf16 .LBB53_2
2607; GENERIC-NEXT:  # %bb.1: # %label2
2608; GENERIC-NEXT:    movi16 a0, 0
2609; GENERIC-NEXT:    br32 .LBB53_3
2610; GENERIC-NEXT:  .LBB53_2: # %label1
2611; GENERIC-NEXT:    movi16 a0, 1
2612; GENERIC-NEXT:  .LBB53_3: # %label1
2613; GENERIC-NEXT:    movi16 a1, 0
2614; GENERIC-NEXT:    addi16 sp, sp, 4
2615; GENERIC-NEXT:    rts16
2616; CHECK-UGTXT:    icmpu32 a0, a1, a0
2617; CHECK-UGTXT:    rts16
2618entry:
2619  %icmp = icmp slt i64 %x, 0
2620  br i1 %icmp, label %label1, label %label2
2621label1:
2622  ret i64 1
2623label2:
2624  ret i64 0
2625}
2626
2627;SLE
2628define i64 @brRR_i64_sle(i64 %x, i64 %y) {
2629; CHECK-LABEL: brRR_i64_sle:
2630; CHECK:       # %bb.0: # %entry
2631; CHECK-NEXT:    .cfi_def_cfa_offset 0
2632; CHECK-NEXT:    subi16 sp, sp, 12
2633; CHECK-NEXT:    .cfi_def_cfa_offset 12
2634; CHECK-NEXT:    cmplt16 a1, a3
2635; CHECK-NEXT:    mvc32 t0
2636; CHECK-NEXT:    st32.w t0, (sp, 4)
2637; CHECK-NEXT:    cmpne16 a3, a1
2638; CHECK-NEXT:    mvc32 a1
2639; CHECK-NEXT:    st16.w a1, (sp, 8)
2640; CHECK-NEXT:    cmphs16 a0, a2
2641; CHECK-NEXT:    mvcv16 a0
2642; CHECK-NEXT:    ld16.w a1, (sp, 4)
2643; CHECK-NEXT:    btsti32 a1, 0
2644; CHECK-NEXT:    mvc32 a1
2645; CHECK-NEXT:    ld16.w a2, (sp, 8)
2646; CHECK-NEXT:    btsti32 a2, 0
2647; CHECK-NEXT:    movf32 a1, a0
2648; CHECK-NEXT:    btsti32 a1, 0
2649; CHECK-NEXT:    bt32 .LBB54_2
2650; CHECK-NEXT:  # %bb.1: # %label1
2651; CHECK-NEXT:    movi16 a0, 1
2652; CHECK-NEXT:    br32 .LBB54_3
2653; CHECK-NEXT:  .LBB54_2: # %label2
2654; CHECK-NEXT:    movi16 a0, 0
2655; CHECK-NEXT:  .LBB54_3: # %label1
2656; CHECK-NEXT:    movi16 a1, 0
2657; CHECK-NEXT:    addi16 sp, sp, 12
2658; CHECK-NEXT:    rts16
2659;
2660; GENERIC-LABEL: brRR_i64_sle:
2661; GENERIC:       # %bb.0: # %entry
2662; GENERIC-NEXT:    subi16 sp, sp, 4
2663; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2664; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
2665; GENERIC-NEXT:    .cfi_offset l0, -4
2666; GENERIC-NEXT:    subi16 sp, sp, 4
2667; GENERIC-NEXT:    .cfi_def_cfa_offset 8
2668; GENERIC-NEXT:    cmplt16 a1, a3
2669; GENERIC-NEXT:    mvcv16 l0
2670; GENERIC-NEXT:    cmphs16 a0, a2
2671; GENERIC-NEXT:    mvcv16 a0
2672; GENERIC-NEXT:    cmpne16 a3, a1
2673; GENERIC-NEXT:    mvcv16 a1
2674; GENERIC-NEXT:    btsti16 a1, 0
2675; GENERIC-NEXT:    bt16 .LBB54_2
2676; GENERIC-NEXT:  # %bb.1: # %entry
2677; GENERIC-NEXT:    movi16 a0, 1
2678; GENERIC-NEXT:    subu16 a0, l0
2679; GENERIC-NEXT:  .LBB54_2: # %entry
2680; GENERIC-NEXT:    btsti16 a0, 0
2681; GENERIC-NEXT:    bt16 .LBB54_4
2682; GENERIC-NEXT:  # %bb.3: # %label1
2683; GENERIC-NEXT:    movi16 a0, 1
2684; GENERIC-NEXT:    br32 .LBB54_5
2685; GENERIC-NEXT:  .LBB54_4: # %label2
2686; GENERIC-NEXT:    movi16 a0, 0
2687; GENERIC-NEXT:  .LBB54_5: # %label1
2688; GENERIC-NEXT:    movi16 a1, 0
2689; GENERIC-NEXT:    addi16 sp, sp, 4
2690; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
2691; GENERIC-NEXT:    addi16 sp, sp, 4
2692; GENERIC-NEXT:    rts16
2693; CHECK-UGTXT:    icmpu32 a0, a1, a0
2694; CHECK-UGTXT:    rts16
2695entry:
2696  %icmp = icmp sle i64 %y, %x
2697  br i1 %icmp, label %label1, label %label2
2698label1:
2699  ret i64 1
2700label2:
2701  ret i64 0
2702}
2703
2704define i64 @brRI_i64_sle(i64 %x) {
2705; CHECK-LABEL: brRI_i64_sle:
2706; CHECK:       # %bb.0: # %entry
2707; CHECK-NEXT:    .cfi_def_cfa_offset 0
2708; CHECK-NEXT:    subi16 sp, sp, 12
2709; CHECK-NEXT:    .cfi_def_cfa_offset 12
2710; CHECK-NEXT:    movi16 a2, 0
2711; CHECK-NEXT:    cmplt16 a2, a1
2712; CHECK-NEXT:    mvc32 a2
2713; CHECK-NEXT:    st16.w a2, (sp, 8)
2714; CHECK-NEXT:    movi16 a2, 10
2715; CHECK-NEXT:    cmphs16 a2, a0
2716; CHECK-NEXT:    mvcv16 a0
2717; CHECK-NEXT:    cmpnei16 a1, 0
2718; CHECK-NEXT:    mvc32 a1
2719; CHECK-NEXT:    st16.w a1, (sp, 4)
2720; CHECK-NEXT:    ld16.w a1, (sp, 8)
2721; CHECK-NEXT:    btsti32 a1, 0
2722; CHECK-NEXT:    mvc32 a1
2723; CHECK-NEXT:    ld16.w a2, (sp, 4)
2724; CHECK-NEXT:    btsti32 a2, 0
2725; CHECK-NEXT:    movf32 a1, a0
2726; CHECK-NEXT:    btsti32 a1, 0
2727; CHECK-NEXT:    bt32 .LBB55_2
2728; CHECK-NEXT:  # %bb.1: # %label1
2729; CHECK-NEXT:    movi16 a0, 1
2730; CHECK-NEXT:    br32 .LBB55_3
2731; CHECK-NEXT:  .LBB55_2: # %label2
2732; CHECK-NEXT:    movi16 a0, 0
2733; CHECK-NEXT:  .LBB55_3: # %label1
2734; CHECK-NEXT:    movi16 a1, 0
2735; CHECK-NEXT:    addi16 sp, sp, 12
2736; CHECK-NEXT:    rts16
2737;
2738; GENERIC-LABEL: brRI_i64_sle:
2739; GENERIC:       # %bb.0: # %entry
2740; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2741; GENERIC-NEXT:    subi16 sp, sp, 4
2742; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2743; GENERIC-NEXT:    movi16 a2, 0
2744; GENERIC-NEXT:    cmplt16 a2, a1
2745; GENERIC-NEXT:    mvcv16 a2
2746; GENERIC-NEXT:    movi16 a3, 10
2747; GENERIC-NEXT:    cmphs16 a3, a0
2748; GENERIC-NEXT:    mvcv16 a0
2749; GENERIC-NEXT:    cmpnei16 a1, 0
2750; GENERIC-NEXT:    mvcv16 a1
2751; GENERIC-NEXT:    btsti16 a1, 0
2752; GENERIC-NEXT:    bt16 .LBB55_2
2753; GENERIC-NEXT:  # %bb.1: # %entry
2754; GENERIC-NEXT:    movi16 a0, 1
2755; GENERIC-NEXT:    subu16 a0, a2
2756; GENERIC-NEXT:  .LBB55_2: # %entry
2757; GENERIC-NEXT:    btsti16 a0, 0
2758; GENERIC-NEXT:    bt16 .LBB55_4
2759; GENERIC-NEXT:  # %bb.3: # %label1
2760; GENERIC-NEXT:    movi16 a0, 1
2761; GENERIC-NEXT:    br32 .LBB55_5
2762; GENERIC-NEXT:  .LBB55_4: # %label2
2763; GENERIC-NEXT:    movi16 a0, 0
2764; GENERIC-NEXT:  .LBB55_5: # %label1
2765; GENERIC-NEXT:    movi16 a1, 0
2766; GENERIC-NEXT:    addi16 sp, sp, 4
2767; GENERIC-NEXT:    rts16
2768; CHECK-UGTXT:    icmpu32 a0, a1, a0
2769; CHECK-UGTXT:    rts16
2770entry:
2771  %icmp = icmp sle i64 %x, 10
2772  br i1 %icmp, label %label1, label %label2
2773label1:
2774  ret i64 1
2775label2:
2776  ret i64 0
2777}
2778
2779define i64 @brR0_i64_sle(i64 %x) {
2780; CHECK-LABEL: brR0_i64_sle:
2781; CHECK:       # %bb.0: # %entry
2782; CHECK-NEXT:    .cfi_def_cfa_offset 0
2783; CHECK-NEXT:    subi16 sp, sp, 16
2784; CHECK-NEXT:    .cfi_def_cfa_offset 16
2785; CHECK-NEXT:    movi16 a2, 0
2786; CHECK-NEXT:    cmplt16 a2, a1
2787; CHECK-NEXT:    mvc32 a2
2788; CHECK-NEXT:    st16.w a2, (sp, 12)
2789; CHECK-NEXT:    cmpnei16 a0, 0
2790; CHECK-NEXT:    mvc32 a0
2791; CHECK-NEXT:    st16.w a0, (sp, 4)
2792; CHECK-NEXT:    cmpnei16 a1, 0
2793; CHECK-NEXT:    mvc32 a0
2794; CHECK-NEXT:    st16.w a0, (sp, 8)
2795; CHECK-NEXT:    ld16.w a0, (sp, 4)
2796; CHECK-NEXT:    btsti32 a0, 0
2797; CHECK-NEXT:    mvc32 a0
2798; CHECK-NEXT:    ld16.w a1, (sp, 12)
2799; CHECK-NEXT:    btsti32 a1, 0
2800; CHECK-NEXT:    mvc32 a1
2801; CHECK-NEXT:    ld16.w a2, (sp, 8)
2802; CHECK-NEXT:    btsti32 a2, 0
2803; CHECK-NEXT:    movf32 a1, a0
2804; CHECK-NEXT:    btsti32 a1, 0
2805; CHECK-NEXT:    bt32 .LBB56_2
2806; CHECK-NEXT:  # %bb.1: # %label1
2807; CHECK-NEXT:    movi16 a0, 1
2808; CHECK-NEXT:    br32 .LBB56_3
2809; CHECK-NEXT:  .LBB56_2: # %label2
2810; CHECK-NEXT:    movi16 a0, 0
2811; CHECK-NEXT:  .LBB56_3: # %label1
2812; CHECK-NEXT:    movi16 a1, 0
2813; CHECK-NEXT:    addi16 sp, sp, 16
2814; CHECK-NEXT:    rts16
2815;
2816; GENERIC-LABEL: brR0_i64_sle:
2817; GENERIC:       # %bb.0: # %entry
2818; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2819; GENERIC-NEXT:    subi16 sp, sp, 4
2820; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2821; GENERIC-NEXT:    movi16 a2, 0
2822; GENERIC-NEXT:    cmplt16 a2, a1
2823; GENERIC-NEXT:    mvcv16 a3
2824; GENERIC-NEXT:    movi16 a2, 1
2825; GENERIC-NEXT:    cmpnei16 a0, 0
2826; GENERIC-NEXT:    mvcv16 a0
2827; GENERIC-NEXT:    cmpnei16 a1, 0
2828; GENERIC-NEXT:    mvcv16 a1
2829; GENERIC-NEXT:    btsti16 a1, 0
2830; GENERIC-NEXT:    bt16 .LBB56_3
2831; GENERIC-NEXT:  # %bb.1: # %entry
2832; GENERIC-NEXT:    subu16 a2, a3
2833; GENERIC-NEXT:    btsti16 a2, 0
2834; GENERIC-NEXT:    bf16 .LBB56_4
2835; GENERIC-NEXT:  .LBB56_2: # %label2
2836; GENERIC-NEXT:    movi16 a0, 0
2837; GENERIC-NEXT:    br32 .LBB56_5
2838; GENERIC-NEXT:  .LBB56_3:
2839; GENERIC-NEXT:    subu16 a2, a0
2840; GENERIC-NEXT:    btsti16 a2, 0
2841; GENERIC-NEXT:    bt16 .LBB56_2
2842; GENERIC-NEXT:  .LBB56_4: # %label1
2843; GENERIC-NEXT:    movi16 a0, 1
2844; GENERIC-NEXT:  .LBB56_5: # %label1
2845; GENERIC-NEXT:    movi16 a1, 0
2846; GENERIC-NEXT:    addi16 sp, sp, 4
2847; GENERIC-NEXT:    rts16
2848; CHECK-UGTXT:    icmpu32 a0, a1, a0
2849; CHECK-UGTXT:    rts16
2850entry:
2851  %icmp = icmp sle i64 %x, 0
2852  br i1 %icmp, label %label1, label %label2
2853label1:
2854  ret i64 1
2855label2:
2856  ret i64 0
2857}
2858
2859
2860define i64 @brCBit_i64(i1 %c) {
2861; CHECK-LABEL: brCBit_i64:
2862; CHECK:       # %bb.0: # %entry
2863; CHECK-NEXT:    andi32 a0, a0, 1
2864; CHECK-NEXT:    bez32 a0, .LBB57_2
2865; CHECK-NEXT:  # %bb.1: # %label1
2866; CHECK-NEXT:    movi16 a0, 1
2867; CHECK-NEXT:    movi16 a1, 0
2868; CHECK-NEXT:    rts16
2869; CHECK-NEXT:  .LBB57_2: # %label2
2870; CHECK-NEXT:    movi16 a0, 0
2871; CHECK-NEXT:    movi16 a1, 0
2872; CHECK-NEXT:    rts16
2873;
2874; GENERIC-LABEL: brCBit_i64:
2875; GENERIC:       # %bb.0: # %entry
2876; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2877; GENERIC-NEXT:    subi16 sp, sp, 4
2878; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2879; GENERIC-NEXT:    movi16 a1, 1
2880; GENERIC-NEXT:    and16 a1, a0
2881; GENERIC-NEXT:    cmpnei16 a1, 0
2882; GENERIC-NEXT:    bf16 .LBB57_2
2883; GENERIC-NEXT:  # %bb.1: # %label1
2884; GENERIC-NEXT:    movi16 a0, 1
2885; GENERIC-NEXT:    br32 .LBB57_3
2886; GENERIC-NEXT:  .LBB57_2: # %label2
2887; GENERIC-NEXT:    movi16 a0, 0
2888; GENERIC-NEXT:  .LBB57_3: # %label1
2889; GENERIC-NEXT:    movi16 a1, 0
2890; GENERIC-NEXT:    addi16 sp, sp, 4
2891; GENERIC-NEXT:    rts16
2892entry:
2893  br i1 %c, label %label1, label %label2
2894label1:
2895  ret i64 1
2896label2:
2897  ret i64 0
2898}
2899
2900
2901;EQ
2902define i16 @brRR_i16_eq(i16 %x, i16 %y) {
2903; CHECK-LABEL: brRR_i16_eq:
2904; CHECK:       # %bb.0: # %entry
2905; CHECK-NEXT:    zexth16 a0, a0
2906; CHECK-NEXT:    zexth16 a1, a1
2907; CHECK-NEXT:    cmpne16 a1, a0
2908; CHECK-NEXT:    bt32 .LBB58_2
2909; CHECK-NEXT:  # %bb.1: # %label1
2910; CHECK-NEXT:    movi16 a0, 1
2911; CHECK-NEXT:    rts16
2912; CHECK-NEXT:  .LBB58_2: # %label2
2913; CHECK-NEXT:    movi16 a0, 0
2914; CHECK-NEXT:    rts16
2915;
2916; GENERIC-LABEL: brRR_i16_eq:
2917; GENERIC:       # %bb.0: # %entry
2918; GENERIC-NEXT:    subi16 sp, sp, 4
2919; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2920; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
2921; GENERIC-NEXT:    .cfi_offset l0, -4
2922; GENERIC-NEXT:    subi16 sp, sp, 4
2923; GENERIC-NEXT:    .cfi_def_cfa_offset 8
2924; GENERIC-NEXT:    movi16 a2, 0
2925; GENERIC-NEXT:    lsli16 a3, a2, 24
2926; GENERIC-NEXT:    lsli16 a2, a2, 16
2927; GENERIC-NEXT:    or16 a2, a3
2928; GENERIC-NEXT:    movi16 a3, 255
2929; GENERIC-NEXT:    lsli16 l0, a3, 8
2930; GENERIC-NEXT:    or16 l0, a2
2931; GENERIC-NEXT:    or16 l0, a3
2932; GENERIC-NEXT:    and16 a0, l0
2933; GENERIC-NEXT:    and16 l0, a1
2934; GENERIC-NEXT:    cmpne16 l0, a0
2935; GENERIC-NEXT:    bt16 .LBB58_2
2936; GENERIC-NEXT:  # %bb.1: # %label1
2937; GENERIC-NEXT:    movi16 a0, 1
2938; GENERIC-NEXT:    br32 .LBB58_3
2939; GENERIC-NEXT:  .LBB58_2: # %label2
2940; GENERIC-NEXT:    movi16 a0, 0
2941; GENERIC-NEXT:  .LBB58_3: # %label1
2942; GENERIC-NEXT:    addi16 sp, sp, 4
2943; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
2944; GENERIC-NEXT:    addi16 sp, sp, 4
2945; GENERIC-NEXT:    rts16
2946entry:
2947  %icmp = icmp eq i16 %y, %x
2948  br i1 %icmp, label %label1, label %label2
2949label1:
2950  ret i16 1
2951label2:
2952  ret i16 0
2953}
2954
2955define i16 @brRI_i16_eq(i16 %x) {
2956; CHECK-LABEL: brRI_i16_eq:
2957; CHECK:       # %bb.0: # %entry
2958; CHECK-NEXT:    zexth16 a0, a0
2959; CHECK-NEXT:    cmpnei16 a0, 10
2960; CHECK-NEXT:    bt32 .LBB59_2
2961; CHECK-NEXT:  # %bb.1: # %label1
2962; CHECK-NEXT:    movi16 a0, 1
2963; CHECK-NEXT:    rts16
2964; CHECK-NEXT:  .LBB59_2: # %label2
2965; CHECK-NEXT:    movi16 a0, 0
2966; CHECK-NEXT:    rts16
2967;
2968; GENERIC-LABEL: brRI_i16_eq:
2969; GENERIC:       # %bb.0: # %entry
2970; GENERIC-NEXT:    .cfi_def_cfa_offset 0
2971; GENERIC-NEXT:    subi16 sp, sp, 4
2972; GENERIC-NEXT:    .cfi_def_cfa_offset 4
2973; GENERIC-NEXT:    movi16 a1, 0
2974; GENERIC-NEXT:    lsli16 a2, a1, 24
2975; GENERIC-NEXT:    lsli16 a1, a1, 16
2976; GENERIC-NEXT:    or16 a1, a2
2977; GENERIC-NEXT:    movi16 a2, 255
2978; GENERIC-NEXT:    lsli16 a3, a2, 8
2979; GENERIC-NEXT:    or16 a3, a1
2980; GENERIC-NEXT:    or16 a3, a2
2981; GENERIC-NEXT:    and16 a3, a0
2982; GENERIC-NEXT:    cmpnei16 a3, 10
2983; GENERIC-NEXT:    bt16 .LBB59_2
2984; GENERIC-NEXT:  # %bb.1: # %label1
2985; GENERIC-NEXT:    movi16 a0, 1
2986; GENERIC-NEXT:    addi16 sp, sp, 4
2987; GENERIC-NEXT:    rts16
2988; GENERIC-NEXT:  .LBB59_2: # %label2
2989; GENERIC-NEXT:    movi16 a0, 0
2990; GENERIC-NEXT:    addi16 sp, sp, 4
2991; GENERIC-NEXT:    rts16
2992entry:
2993  %icmp = icmp eq i16 %x, 10
2994  br i1 %icmp, label %label1, label %label2
2995label1:
2996  ret i16 1
2997label2:
2998  ret i16 0
2999}
3000
3001define i16 @brR0_i16_eq(i16 %x) {
3002; CHECK-LABEL: brR0_i16_eq:
3003; CHECK:       # %bb.0: # %entry
3004; CHECK-NEXT:    zexth16 a0, a0
3005; CHECK-NEXT:    bez32 a0, .LBB60_2
3006; CHECK-NEXT:  # %bb.1: # %label2
3007; CHECK-NEXT:    movi16 a0, 0
3008; CHECK-NEXT:    rts16
3009; CHECK-NEXT:  .LBB60_2: # %label1
3010; CHECK-NEXT:    movi16 a0, 1
3011; CHECK-NEXT:    rts16
3012;
3013; GENERIC-LABEL: brR0_i16_eq:
3014; GENERIC:       # %bb.0: # %entry
3015; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3016; GENERIC-NEXT:    subi16 sp, sp, 4
3017; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3018; GENERIC-NEXT:    movi16 a1, 0
3019; GENERIC-NEXT:    lsli16 a2, a1, 24
3020; GENERIC-NEXT:    lsli16 a1, a1, 16
3021; GENERIC-NEXT:    or16 a1, a2
3022; GENERIC-NEXT:    movi16 a2, 255
3023; GENERIC-NEXT:    lsli16 a3, a2, 8
3024; GENERIC-NEXT:    or16 a3, a1
3025; GENERIC-NEXT:    or16 a3, a2
3026; GENERIC-NEXT:    and16 a3, a0
3027; GENERIC-NEXT:    cmpnei16 a3, 0
3028; GENERIC-NEXT:    bf16 .LBB60_2
3029; GENERIC-NEXT:  # %bb.1: # %label2
3030; GENERIC-NEXT:    movi16 a0, 0
3031; GENERIC-NEXT:    addi16 sp, sp, 4
3032; GENERIC-NEXT:    rts16
3033; GENERIC-NEXT:  .LBB60_2: # %label1
3034; GENERIC-NEXT:    movi16 a0, 1
3035; GENERIC-NEXT:    addi16 sp, sp, 4
3036; GENERIC-NEXT:    rts16
3037entry:
3038  %icmp = icmp eq i16 %x, 0
3039  br i1 %icmp, label %label1, label %label2
3040label1:
3041  ret i16 1
3042label2:
3043  ret i16 0
3044}
3045
3046;NE
3047define i16 @brRR_i16_ne(i16 %x, i16 %y) {
3048; CHECK-LABEL: brRR_i16_ne:
3049; CHECK:       # %bb.0: # %entry
3050; CHECK-NEXT:    zexth16 a0, a0
3051; CHECK-NEXT:    zexth16 a1, a1
3052; CHECK-NEXT:    cmpne16 a1, a0
3053; CHECK-NEXT:    bf32 .LBB61_2
3054; CHECK-NEXT:  # %bb.1: # %label1
3055; CHECK-NEXT:    movi16 a0, 1
3056; CHECK-NEXT:    rts16
3057; CHECK-NEXT:  .LBB61_2: # %label2
3058; CHECK-NEXT:    movi16 a0, 0
3059; CHECK-NEXT:    rts16
3060;
3061; GENERIC-LABEL: brRR_i16_ne:
3062; GENERIC:       # %bb.0: # %entry
3063; GENERIC-NEXT:    subi16 sp, sp, 4
3064; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3065; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
3066; GENERIC-NEXT:    .cfi_offset l0, -4
3067; GENERIC-NEXT:    subi16 sp, sp, 4
3068; GENERIC-NEXT:    .cfi_def_cfa_offset 8
3069; GENERIC-NEXT:    movi16 a2, 0
3070; GENERIC-NEXT:    lsli16 a3, a2, 24
3071; GENERIC-NEXT:    lsli16 a2, a2, 16
3072; GENERIC-NEXT:    or16 a2, a3
3073; GENERIC-NEXT:    movi16 a3, 255
3074; GENERIC-NEXT:    lsli16 l0, a3, 8
3075; GENERIC-NEXT:    or16 l0, a2
3076; GENERIC-NEXT:    or16 l0, a3
3077; GENERIC-NEXT:    and16 a0, l0
3078; GENERIC-NEXT:    and16 l0, a1
3079; GENERIC-NEXT:    cmpne16 l0, a0
3080; GENERIC-NEXT:    bf16 .LBB61_2
3081; GENERIC-NEXT:  # %bb.1: # %label1
3082; GENERIC-NEXT:    movi16 a0, 1
3083; GENERIC-NEXT:    br32 .LBB61_3
3084; GENERIC-NEXT:  .LBB61_2: # %label2
3085; GENERIC-NEXT:    movi16 a0, 0
3086; GENERIC-NEXT:  .LBB61_3: # %label1
3087; GENERIC-NEXT:    addi16 sp, sp, 4
3088; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
3089; GENERIC-NEXT:    addi16 sp, sp, 4
3090; GENERIC-NEXT:    rts16
3091entry:
3092  %icmp = icmp ne i16 %y, %x
3093  br i1 %icmp, label %label1, label %label2
3094label1:
3095  ret i16 1
3096label2:
3097  ret i16 0
3098}
3099
3100define i16 @brRI_i16_ne(i16 %x) {
3101; CHECK-LABEL: brRI_i16_ne:
3102; CHECK:       # %bb.0: # %entry
3103; CHECK-NEXT:    zexth16 a0, a0
3104; CHECK-NEXT:    cmpnei16 a0, 10
3105; CHECK-NEXT:    bf32 .LBB62_2
3106; CHECK-NEXT:  # %bb.1: # %label1
3107; CHECK-NEXT:    movi16 a0, 1
3108; CHECK-NEXT:    rts16
3109; CHECK-NEXT:  .LBB62_2: # %label2
3110; CHECK-NEXT:    movi16 a0, 0
3111; CHECK-NEXT:    rts16
3112;
3113; GENERIC-LABEL: brRI_i16_ne:
3114; GENERIC:       # %bb.0: # %entry
3115; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3116; GENERIC-NEXT:    subi16 sp, sp, 4
3117; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3118; GENERIC-NEXT:    movi16 a1, 0
3119; GENERIC-NEXT:    lsli16 a2, a1, 24
3120; GENERIC-NEXT:    lsli16 a1, a1, 16
3121; GENERIC-NEXT:    or16 a1, a2
3122; GENERIC-NEXT:    movi16 a2, 255
3123; GENERIC-NEXT:    lsli16 a3, a2, 8
3124; GENERIC-NEXT:    or16 a3, a1
3125; GENERIC-NEXT:    or16 a3, a2
3126; GENERIC-NEXT:    and16 a3, a0
3127; GENERIC-NEXT:    cmpnei16 a3, 10
3128; GENERIC-NEXT:    bf16 .LBB62_2
3129; GENERIC-NEXT:  # %bb.1: # %label1
3130; GENERIC-NEXT:    movi16 a0, 1
3131; GENERIC-NEXT:    addi16 sp, sp, 4
3132; GENERIC-NEXT:    rts16
3133; GENERIC-NEXT:  .LBB62_2: # %label2
3134; GENERIC-NEXT:    movi16 a0, 0
3135; GENERIC-NEXT:    addi16 sp, sp, 4
3136; GENERIC-NEXT:    rts16
3137entry:
3138  %icmp = icmp ne i16 %x, 10
3139  br i1 %icmp, label %label1, label %label2
3140label1:
3141  ret i16 1
3142label2:
3143  ret i16 0
3144}
3145
3146define i16 @brR0_i16_ne(i16 %x) {
3147; CHECK-LABEL: brR0_i16_ne:
3148; CHECK:       # %bb.0: # %entry
3149; CHECK-NEXT:    zexth16 a0, a0
3150; CHECK-NEXT:    bez32 a0, .LBB63_2
3151; CHECK-NEXT:  # %bb.1: # %label1
3152; CHECK-NEXT:    movi16 a0, 1
3153; CHECK-NEXT:    rts16
3154; CHECK-NEXT:  .LBB63_2: # %label2
3155; CHECK-NEXT:    movi16 a0, 0
3156; CHECK-NEXT:    rts16
3157;
3158; GENERIC-LABEL: brR0_i16_ne:
3159; GENERIC:       # %bb.0: # %entry
3160; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3161; GENERIC-NEXT:    subi16 sp, sp, 4
3162; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3163; GENERIC-NEXT:    movi16 a1, 0
3164; GENERIC-NEXT:    lsli16 a2, a1, 24
3165; GENERIC-NEXT:    lsli16 a1, a1, 16
3166; GENERIC-NEXT:    or16 a1, a2
3167; GENERIC-NEXT:    movi16 a2, 255
3168; GENERIC-NEXT:    lsli16 a3, a2, 8
3169; GENERIC-NEXT:    or16 a3, a1
3170; GENERIC-NEXT:    or16 a3, a2
3171; GENERIC-NEXT:    and16 a3, a0
3172; GENERIC-NEXT:    cmpnei16 a3, 0
3173; GENERIC-NEXT:    bf16 .LBB63_2
3174; GENERIC-NEXT:  # %bb.1: # %label1
3175; GENERIC-NEXT:    movi16 a0, 1
3176; GENERIC-NEXT:    addi16 sp, sp, 4
3177; GENERIC-NEXT:    rts16
3178; GENERIC-NEXT:  .LBB63_2: # %label2
3179; GENERIC-NEXT:    movi16 a0, 0
3180; GENERIC-NEXT:    addi16 sp, sp, 4
3181; GENERIC-NEXT:    rts16
3182entry:
3183  %icmp = icmp ne i16 %x, 0
3184  br i1 %icmp, label %label1, label %label2
3185label1:
3186  ret i16 1
3187label2:
3188  ret i16 0
3189}
3190
3191;UGT
3192define i16 @brRR_i16_ugt(i16 %x, i16 %y) {
3193; CHECK-LABEL: brRR_i16_ugt:
3194; CHECK:       # %bb.0: # %entry
3195; CHECK-NEXT:    zexth16 a1, a1
3196; CHECK-NEXT:    zexth16 a0, a0
3197; CHECK-NEXT:    cmphs16 a0, a1
3198; CHECK-NEXT:    bt32 .LBB64_2
3199; CHECK-NEXT:  # %bb.1: # %label1
3200; CHECK-NEXT:    movi16 a0, 1
3201; CHECK-NEXT:    rts16
3202; CHECK-NEXT:  .LBB64_2: # %label2
3203; CHECK-NEXT:    movi16 a0, 0
3204; CHECK-NEXT:    rts16
3205;
3206; GENERIC-LABEL: brRR_i16_ugt:
3207; GENERIC:       # %bb.0: # %entry
3208; GENERIC-NEXT:    subi16 sp, sp, 4
3209; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3210; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
3211; GENERIC-NEXT:    .cfi_offset l0, -4
3212; GENERIC-NEXT:    subi16 sp, sp, 4
3213; GENERIC-NEXT:    .cfi_def_cfa_offset 8
3214; GENERIC-NEXT:    movi16 a2, 0
3215; GENERIC-NEXT:    lsli16 a3, a2, 24
3216; GENERIC-NEXT:    lsli16 a2, a2, 16
3217; GENERIC-NEXT:    or16 a2, a3
3218; GENERIC-NEXT:    movi16 a3, 255
3219; GENERIC-NEXT:    lsli16 l0, a3, 8
3220; GENERIC-NEXT:    or16 l0, a2
3221; GENERIC-NEXT:    or16 l0, a3
3222; GENERIC-NEXT:    and16 a1, l0
3223; GENERIC-NEXT:    and16 l0, a0
3224; GENERIC-NEXT:    cmphs16 l0, a1
3225; GENERIC-NEXT:    bt16 .LBB64_2
3226; GENERIC-NEXT:  # %bb.1: # %label1
3227; GENERIC-NEXT:    movi16 a0, 1
3228; GENERIC-NEXT:    br32 .LBB64_3
3229; GENERIC-NEXT:  .LBB64_2: # %label2
3230; GENERIC-NEXT:    movi16 a0, 0
3231; GENERIC-NEXT:  .LBB64_3: # %label1
3232; GENERIC-NEXT:    addi16 sp, sp, 4
3233; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
3234; GENERIC-NEXT:    addi16 sp, sp, 4
3235; GENERIC-NEXT:    rts16
3236; CHECK-UGTXT:    icmpu32 a0, a1, a0
3237; CHECK-UGTXT:    rts16
3238entry:
3239  %icmp = icmp ugt i16 %y, %x
3240  br i1 %icmp, label %label1, label %label2
3241label1:
3242  ret i16 1
3243label2:
3244  ret i16 0
3245}
3246
3247define i16 @brRI_i16_ugt(i16 %x) {
3248; CHECK-LABEL: brRI_i16_ugt:
3249; CHECK:       # %bb.0: # %entry
3250; CHECK-NEXT:    zexth16 a0, a0
3251; CHECK-NEXT:    cmphsi16 a0, 11
3252; CHECK-NEXT:    bf32 .LBB65_2
3253; CHECK-NEXT:  # %bb.1: # %label1
3254; CHECK-NEXT:    movi16 a0, 1
3255; CHECK-NEXT:    rts16
3256; CHECK-NEXT:  .LBB65_2: # %label2
3257; CHECK-NEXT:    movi16 a0, 0
3258; CHECK-NEXT:    rts16
3259;
3260; GENERIC-LABEL: brRI_i16_ugt:
3261; GENERIC:       # %bb.0: # %entry
3262; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3263; GENERIC-NEXT:    subi16 sp, sp, 4
3264; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3265; GENERIC-NEXT:    movi16 a1, 0
3266; GENERIC-NEXT:    lsli16 a2, a1, 24
3267; GENERIC-NEXT:    lsli16 a1, a1, 16
3268; GENERIC-NEXT:    or16 a1, a2
3269; GENERIC-NEXT:    movi16 a2, 255
3270; GENERIC-NEXT:    lsli16 a3, a2, 8
3271; GENERIC-NEXT:    or16 a3, a1
3272; GENERIC-NEXT:    or16 a3, a2
3273; GENERIC-NEXT:    and16 a3, a0
3274; GENERIC-NEXT:    cmphsi16 a3, 11
3275; GENERIC-NEXT:    bf16 .LBB65_2
3276; GENERIC-NEXT:  # %bb.1: # %label1
3277; GENERIC-NEXT:    movi16 a0, 1
3278; GENERIC-NEXT:    addi16 sp, sp, 4
3279; GENERIC-NEXT:    rts16
3280; GENERIC-NEXT:  .LBB65_2: # %label2
3281; GENERIC-NEXT:    movi16 a0, 0
3282; GENERIC-NEXT:    addi16 sp, sp, 4
3283; GENERIC-NEXT:    rts16
3284; CHECK-UGTXT:    icmpu32 a0, a1, a0
3285; CHECK-UGTXT:    rts16
3286entry:
3287  %icmp = icmp ugt i16 %x, 10
3288  br i1 %icmp, label %label1, label %label2
3289label1:
3290  ret i16 1
3291label2:
3292  ret i16 0
3293}
3294
3295define i16 @brR0_i16_ugt(i16 %x) {
3296; CHECK-LABEL: brR0_i16_ugt:
3297; CHECK:       # %bb.0: # %entry
3298; CHECK-NEXT:    zexth16 a0, a0
3299; CHECK-NEXT:    bez32 a0, .LBB66_2
3300; CHECK-NEXT:  # %bb.1: # %label1
3301; CHECK-NEXT:    movi16 a0, 1
3302; CHECK-NEXT:    rts16
3303; CHECK-NEXT:  .LBB66_2: # %label2
3304; CHECK-NEXT:    movi16 a0, 0
3305; CHECK-NEXT:    rts16
3306;
3307; GENERIC-LABEL: brR0_i16_ugt:
3308; GENERIC:       # %bb.0: # %entry
3309; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3310; GENERIC-NEXT:    subi16 sp, sp, 4
3311; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3312; GENERIC-NEXT:    movi16 a1, 0
3313; GENERIC-NEXT:    lsli16 a2, a1, 24
3314; GENERIC-NEXT:    lsli16 a1, a1, 16
3315; GENERIC-NEXT:    or16 a1, a2
3316; GENERIC-NEXT:    movi16 a2, 255
3317; GENERIC-NEXT:    lsli16 a3, a2, 8
3318; GENERIC-NEXT:    or16 a3, a1
3319; GENERIC-NEXT:    or16 a3, a2
3320; GENERIC-NEXT:    and16 a3, a0
3321; GENERIC-NEXT:    cmpnei16 a3, 0
3322; GENERIC-NEXT:    bf16 .LBB66_2
3323; GENERIC-NEXT:  # %bb.1: # %label1
3324; GENERIC-NEXT:    movi16 a0, 1
3325; GENERIC-NEXT:    addi16 sp, sp, 4
3326; GENERIC-NEXT:    rts16
3327; GENERIC-NEXT:  .LBB66_2: # %label2
3328; GENERIC-NEXT:    movi16 a0, 0
3329; GENERIC-NEXT:    addi16 sp, sp, 4
3330; GENERIC-NEXT:    rts16
3331; CHECK-UGTXT:    icmpu32 a0, a1, a0
3332; CHECK-UGTXT:    rts16
3333entry:
3334  %icmp = icmp ugt i16 %x, 0
3335  br i1 %icmp, label %label1, label %label2
3336label1:
3337  ret i16 1
3338label2:
3339  ret i16 0
3340}
3341
3342;UGE
3343define i16 @brRR_i16_uge(i16 %x, i16 %y) {
3344; CHECK-LABEL: brRR_i16_uge:
3345; CHECK:       # %bb.0: # %entry
3346; CHECK-NEXT:    zexth16 a0, a0
3347; CHECK-NEXT:    zexth16 a1, a1
3348; CHECK-NEXT:    cmphs16 a1, a0
3349; CHECK-NEXT:    bf32 .LBB67_2
3350; CHECK-NEXT:  # %bb.1: # %label1
3351; CHECK-NEXT:    movi16 a0, 1
3352; CHECK-NEXT:    rts16
3353; CHECK-NEXT:  .LBB67_2: # %label2
3354; CHECK-NEXT:    movi16 a0, 0
3355; CHECK-NEXT:    rts16
3356;
3357; GENERIC-LABEL: brRR_i16_uge:
3358; GENERIC:       # %bb.0: # %entry
3359; GENERIC-NEXT:    subi16 sp, sp, 4
3360; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3361; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
3362; GENERIC-NEXT:    .cfi_offset l0, -4
3363; GENERIC-NEXT:    subi16 sp, sp, 4
3364; GENERIC-NEXT:    .cfi_def_cfa_offset 8
3365; GENERIC-NEXT:    movi16 a2, 0
3366; GENERIC-NEXT:    lsli16 a3, a2, 24
3367; GENERIC-NEXT:    lsli16 a2, a2, 16
3368; GENERIC-NEXT:    or16 a2, a3
3369; GENERIC-NEXT:    movi16 a3, 255
3370; GENERIC-NEXT:    lsli16 l0, a3, 8
3371; GENERIC-NEXT:    or16 l0, a2
3372; GENERIC-NEXT:    or16 l0, a3
3373; GENERIC-NEXT:    and16 a0, l0
3374; GENERIC-NEXT:    and16 l0, a1
3375; GENERIC-NEXT:    cmphs16 l0, a0
3376; GENERIC-NEXT:    bf16 .LBB67_2
3377; GENERIC-NEXT:  # %bb.1: # %label1
3378; GENERIC-NEXT:    movi16 a0, 1
3379; GENERIC-NEXT:    br32 .LBB67_3
3380; GENERIC-NEXT:  .LBB67_2: # %label2
3381; GENERIC-NEXT:    movi16 a0, 0
3382; GENERIC-NEXT:  .LBB67_3: # %label1
3383; GENERIC-NEXT:    addi16 sp, sp, 4
3384; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
3385; GENERIC-NEXT:    addi16 sp, sp, 4
3386; GENERIC-NEXT:    rts16
3387; CHECK-UGTXT:    icmpu32 a0, a1, a0
3388; CHECK-UGTXT:    rts16
3389entry:
3390  %icmp = icmp uge i16 %y, %x
3391  br i1 %icmp, label %label1, label %label2
3392label1:
3393  ret i16 1
3394label2:
3395  ret i16 0
3396}
3397
3398define i16 @brRI_i16_uge(i16 %x) {
3399; CHECK-LABEL: brRI_i16_uge:
3400; CHECK:       # %bb.0: # %entry
3401; CHECK-NEXT:    zexth16 a0, a0
3402; CHECK-NEXT:    cmphsi16 a0, 10
3403; CHECK-NEXT:    bf32 .LBB68_2
3404; CHECK-NEXT:  # %bb.1: # %label1
3405; CHECK-NEXT:    movi16 a0, 1
3406; CHECK-NEXT:    rts16
3407; CHECK-NEXT:  .LBB68_2: # %label2
3408; CHECK-NEXT:    movi16 a0, 0
3409; CHECK-NEXT:    rts16
3410;
3411; GENERIC-LABEL: brRI_i16_uge:
3412; GENERIC:       # %bb.0: # %entry
3413; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3414; GENERIC-NEXT:    subi16 sp, sp, 4
3415; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3416; GENERIC-NEXT:    movi16 a1, 0
3417; GENERIC-NEXT:    lsli16 a2, a1, 24
3418; GENERIC-NEXT:    lsli16 a1, a1, 16
3419; GENERIC-NEXT:    or16 a1, a2
3420; GENERIC-NEXT:    movi16 a2, 255
3421; GENERIC-NEXT:    lsli16 a3, a2, 8
3422; GENERIC-NEXT:    or16 a3, a1
3423; GENERIC-NEXT:    or16 a3, a2
3424; GENERIC-NEXT:    and16 a3, a0
3425; GENERIC-NEXT:    cmphsi16 a3, 10
3426; GENERIC-NEXT:    bf16 .LBB68_2
3427; GENERIC-NEXT:  # %bb.1: # %label1
3428; GENERIC-NEXT:    movi16 a0, 1
3429; GENERIC-NEXT:    addi16 sp, sp, 4
3430; GENERIC-NEXT:    rts16
3431; GENERIC-NEXT:  .LBB68_2: # %label2
3432; GENERIC-NEXT:    movi16 a0, 0
3433; GENERIC-NEXT:    addi16 sp, sp, 4
3434; GENERIC-NEXT:    rts16
3435; CHECK-UGTXT:    icmpu32 a0, a1, a0
3436; CHECK-UGTXT:    rts16
3437entry:
3438  %icmp = icmp uge i16 %x, 10
3439  br i1 %icmp, label %label1, label %label2
3440label1:
3441  ret i16 1
3442label2:
3443  ret i16 0
3444}
3445
3446;ULT
3447define i16 @brRR_i16_ult(i16 %x, i16 %y) {
3448; CHECK-LABEL: brRR_i16_ult:
3449; CHECK:       # %bb.0: # %entry
3450; CHECK-NEXT:    zexth16 a0, a0
3451; CHECK-NEXT:    zexth16 a1, a1
3452; CHECK-NEXT:    cmphs16 a1, a0
3453; CHECK-NEXT:    bt32 .LBB69_2
3454; CHECK-NEXT:  # %bb.1: # %label1
3455; CHECK-NEXT:    movi16 a0, 1
3456; CHECK-NEXT:    rts16
3457; CHECK-NEXT:  .LBB69_2: # %label2
3458; CHECK-NEXT:    movi16 a0, 0
3459; CHECK-NEXT:    rts16
3460;
3461; GENERIC-LABEL: brRR_i16_ult:
3462; GENERIC:       # %bb.0: # %entry
3463; GENERIC-NEXT:    subi16 sp, sp, 4
3464; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3465; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
3466; GENERIC-NEXT:    .cfi_offset l0, -4
3467; GENERIC-NEXT:    subi16 sp, sp, 4
3468; GENERIC-NEXT:    .cfi_def_cfa_offset 8
3469; GENERIC-NEXT:    movi16 a2, 0
3470; GENERIC-NEXT:    lsli16 a3, a2, 24
3471; GENERIC-NEXT:    lsli16 a2, a2, 16
3472; GENERIC-NEXT:    or16 a2, a3
3473; GENERIC-NEXT:    movi16 a3, 255
3474; GENERIC-NEXT:    lsli16 l0, a3, 8
3475; GENERIC-NEXT:    or16 l0, a2
3476; GENERIC-NEXT:    or16 l0, a3
3477; GENERIC-NEXT:    and16 a0, l0
3478; GENERIC-NEXT:    and16 l0, a1
3479; GENERIC-NEXT:    cmphs16 l0, a0
3480; GENERIC-NEXT:    bt16 .LBB69_2
3481; GENERIC-NEXT:  # %bb.1: # %label1
3482; GENERIC-NEXT:    movi16 a0, 1
3483; GENERIC-NEXT:    br32 .LBB69_3
3484; GENERIC-NEXT:  .LBB69_2: # %label2
3485; GENERIC-NEXT:    movi16 a0, 0
3486; GENERIC-NEXT:  .LBB69_3: # %label1
3487; GENERIC-NEXT:    addi16 sp, sp, 4
3488; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
3489; GENERIC-NEXT:    addi16 sp, sp, 4
3490; GENERIC-NEXT:    rts16
3491; CHECK-UGTXT:    icmpu32 a0, a1, a0
3492; CHECK-UGTXT:    rts16
3493entry:
3494  %icmp = icmp ult i16 %y, %x
3495  br i1 %icmp, label %label1, label %label2
3496label1:
3497  ret i16 1
3498label2:
3499  ret i16 0
3500}
3501
3502define i16 @brRI_i16_ult(i16 %x) {
3503; CHECK-LABEL: brRI_i16_ult:
3504; CHECK:       # %bb.0: # %entry
3505; CHECK-NEXT:    zexth16 a0, a0
3506; CHECK-NEXT:    movi16 a1, 9
3507; CHECK-NEXT:    cmphs16 a1, a0
3508; CHECK-NEXT:    bf32 .LBB70_2
3509; CHECK-NEXT:  # %bb.1: # %label1
3510; CHECK-NEXT:    movi16 a0, 1
3511; CHECK-NEXT:    rts16
3512; CHECK-NEXT:  .LBB70_2: # %label2
3513; CHECK-NEXT:    movi16 a0, 0
3514; CHECK-NEXT:    rts16
3515;
3516; GENERIC-LABEL: brRI_i16_ult:
3517; GENERIC:       # %bb.0: # %entry
3518; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3519; GENERIC-NEXT:    subi16 sp, sp, 4
3520; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3521; GENERIC-NEXT:    movi16 a1, 0
3522; GENERIC-NEXT:    lsli16 a2, a1, 24
3523; GENERIC-NEXT:    lsli16 a1, a1, 16
3524; GENERIC-NEXT:    or16 a1, a2
3525; GENERIC-NEXT:    movi16 a2, 255
3526; GENERIC-NEXT:    lsli16 a3, a2, 8
3527; GENERIC-NEXT:    or16 a3, a1
3528; GENERIC-NEXT:    or16 a3, a2
3529; GENERIC-NEXT:    and16 a3, a0
3530; GENERIC-NEXT:    movi16 a0, 9
3531; GENERIC-NEXT:    cmphs16 a0, a3
3532; GENERIC-NEXT:    bf16 .LBB70_2
3533; GENERIC-NEXT:  # %bb.1: # %label1
3534; GENERIC-NEXT:    movi16 a0, 1
3535; GENERIC-NEXT:    addi16 sp, sp, 4
3536; GENERIC-NEXT:    rts16
3537; GENERIC-NEXT:  .LBB70_2: # %label2
3538; GENERIC-NEXT:    movi16 a0, 0
3539; GENERIC-NEXT:    addi16 sp, sp, 4
3540; GENERIC-NEXT:    rts16
3541; CHECK-UGTXT:    icmpu32 a0, a1, a0
3542; CHECK-UGTXT:    rts16
3543entry:
3544  %icmp = icmp ult i16 %x, 10
3545  br i1 %icmp, label %label1, label %label2
3546label1:
3547  ret i16 1
3548label2:
3549  ret i16 0
3550}
3551
3552
3553;ULE
3554define i16 @brRR_i16_ule(i16 %x, i16 %y) {
3555; CHECK-LABEL: brRR_i16_ule:
3556; CHECK:       # %bb.0: # %entry
3557; CHECK-NEXT:    zexth16 a1, a1
3558; CHECK-NEXT:    zexth16 a0, a0
3559; CHECK-NEXT:    cmphs16 a0, a1
3560; CHECK-NEXT:    bf32 .LBB71_2
3561; CHECK-NEXT:  # %bb.1: # %label1
3562; CHECK-NEXT:    movi16 a0, 1
3563; CHECK-NEXT:    rts16
3564; CHECK-NEXT:  .LBB71_2: # %label2
3565; CHECK-NEXT:    movi16 a0, 0
3566; CHECK-NEXT:    rts16
3567;
3568; GENERIC-LABEL: brRR_i16_ule:
3569; GENERIC:       # %bb.0: # %entry
3570; GENERIC-NEXT:    subi16 sp, sp, 4
3571; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3572; GENERIC-NEXT:    st16.w l0, (sp, 0) # 4-byte Folded Spill
3573; GENERIC-NEXT:    .cfi_offset l0, -4
3574; GENERIC-NEXT:    subi16 sp, sp, 4
3575; GENERIC-NEXT:    .cfi_def_cfa_offset 8
3576; GENERIC-NEXT:    movi16 a2, 0
3577; GENERIC-NEXT:    lsli16 a3, a2, 24
3578; GENERIC-NEXT:    lsli16 a2, a2, 16
3579; GENERIC-NEXT:    or16 a2, a3
3580; GENERIC-NEXT:    movi16 a3, 255
3581; GENERIC-NEXT:    lsli16 l0, a3, 8
3582; GENERIC-NEXT:    or16 l0, a2
3583; GENERIC-NEXT:    or16 l0, a3
3584; GENERIC-NEXT:    and16 a1, l0
3585; GENERIC-NEXT:    and16 l0, a0
3586; GENERIC-NEXT:    cmphs16 l0, a1
3587; GENERIC-NEXT:    bf16 .LBB71_2
3588; GENERIC-NEXT:  # %bb.1: # %label1
3589; GENERIC-NEXT:    movi16 a0, 1
3590; GENERIC-NEXT:    br32 .LBB71_3
3591; GENERIC-NEXT:  .LBB71_2: # %label2
3592; GENERIC-NEXT:    movi16 a0, 0
3593; GENERIC-NEXT:  .LBB71_3: # %label1
3594; GENERIC-NEXT:    addi16 sp, sp, 4
3595; GENERIC-NEXT:    ld16.w l0, (sp, 0) # 4-byte Folded Reload
3596; GENERIC-NEXT:    addi16 sp, sp, 4
3597; GENERIC-NEXT:    rts16
3598; CHECK-UGTXT:    icmpu32 a0, a1, a0
3599; CHECK-UGTXT:    rts16
3600entry:
3601  %icmp = icmp ule i16 %y, %x
3602  br i1 %icmp, label %label1, label %label2
3603label1:
3604  ret i16 1
3605label2:
3606  ret i16 0
3607}
3608
3609define i16 @brRI_i16_ule(i16 %x) {
3610; CHECK-LABEL: brRI_i16_ule:
3611; CHECK:       # %bb.0: # %entry
3612; CHECK-NEXT:    zexth16 a0, a0
3613; CHECK-NEXT:    movi16 a1, 10
3614; CHECK-NEXT:    cmphs16 a1, a0
3615; CHECK-NEXT:    bf32 .LBB72_2
3616; CHECK-NEXT:  # %bb.1: # %label1
3617; CHECK-NEXT:    movi16 a0, 1
3618; CHECK-NEXT:    rts16
3619; CHECK-NEXT:  .LBB72_2: # %label2
3620; CHECK-NEXT:    movi16 a0, 0
3621; CHECK-NEXT:    rts16
3622;
3623; GENERIC-LABEL: brRI_i16_ule:
3624; GENERIC:       # %bb.0: # %entry
3625; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3626; GENERIC-NEXT:    subi16 sp, sp, 4
3627; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3628; GENERIC-NEXT:    movi16 a1, 0
3629; GENERIC-NEXT:    lsli16 a2, a1, 24
3630; GENERIC-NEXT:    lsli16 a1, a1, 16
3631; GENERIC-NEXT:    or16 a1, a2
3632; GENERIC-NEXT:    movi16 a2, 255
3633; GENERIC-NEXT:    lsli16 a3, a2, 8
3634; GENERIC-NEXT:    or16 a3, a1
3635; GENERIC-NEXT:    or16 a3, a2
3636; GENERIC-NEXT:    and16 a3, a0
3637; GENERIC-NEXT:    movi16 a0, 10
3638; GENERIC-NEXT:    cmphs16 a0, a3
3639; GENERIC-NEXT:    bf16 .LBB72_2
3640; GENERIC-NEXT:  # %bb.1: # %label1
3641; GENERIC-NEXT:    movi16 a0, 1
3642; GENERIC-NEXT:    addi16 sp, sp, 4
3643; GENERIC-NEXT:    rts16
3644; GENERIC-NEXT:  .LBB72_2: # %label2
3645; GENERIC-NEXT:    movi16 a0, 0
3646; GENERIC-NEXT:    addi16 sp, sp, 4
3647; GENERIC-NEXT:    rts16
3648; CHECK-UGTXT:    icmpu32 a0, a1, a0
3649; CHECK-UGTXT:    rts16
3650entry:
3651  %icmp = icmp ule i16 %x, 10
3652  br i1 %icmp, label %label1, label %label2
3653label1:
3654  ret i16 1
3655label2:
3656  ret i16 0
3657}
3658
3659define i16 @brR0_i16_ule(i16 %x) {
3660; CHECK-LABEL: brR0_i16_ule:
3661; CHECK:       # %bb.0: # %entry
3662; CHECK-NEXT:    zexth16 a0, a0
3663; CHECK-NEXT:    bnez32 a0, .LBB73_2
3664; CHECK-NEXT:  # %bb.1: # %label1
3665; CHECK-NEXT:    movi16 a0, 1
3666; CHECK-NEXT:    rts16
3667; CHECK-NEXT:  .LBB73_2: # %label2
3668; CHECK-NEXT:    movi16 a0, 0
3669; CHECK-NEXT:    rts16
3670;
3671; GENERIC-LABEL: brR0_i16_ule:
3672; GENERIC:       # %bb.0: # %entry
3673; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3674; GENERIC-NEXT:    subi16 sp, sp, 4
3675; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3676; GENERIC-NEXT:    movi16 a1, 0
3677; GENERIC-NEXT:    lsli16 a2, a1, 24
3678; GENERIC-NEXT:    lsli16 a1, a1, 16
3679; GENERIC-NEXT:    or16 a1, a2
3680; GENERIC-NEXT:    movi16 a2, 255
3681; GENERIC-NEXT:    lsli16 a3, a2, 8
3682; GENERIC-NEXT:    or16 a3, a1
3683; GENERIC-NEXT:    or16 a3, a2
3684; GENERIC-NEXT:    and16 a3, a0
3685; GENERIC-NEXT:    cmpnei16 a3, 0
3686; GENERIC-NEXT:    bt16 .LBB73_2
3687; GENERIC-NEXT:  # %bb.1: # %label1
3688; GENERIC-NEXT:    movi16 a0, 1
3689; GENERIC-NEXT:    addi16 sp, sp, 4
3690; GENERIC-NEXT:    rts16
3691; GENERIC-NEXT:  .LBB73_2: # %label2
3692; GENERIC-NEXT:    movi16 a0, 0
3693; GENERIC-NEXT:    addi16 sp, sp, 4
3694; GENERIC-NEXT:    rts16
3695; CHECK-UGTXT:    icmpu32 a0, a1, a0
3696; CHECK-UGTXT:    rts16
3697entry:
3698  %icmp = icmp ule i16 %x, 0
3699  br i1 %icmp, label %label1, label %label2
3700label1:
3701  ret i16 1
3702label2:
3703  ret i16 0
3704}
3705
3706;SGT
3707define i16 @brRR_i16_sgt(i16 %x, i16 %y) {
3708; CHECK-LABEL: brRR_i16_sgt:
3709; CHECK:       # %bb.0: # %entry
3710; CHECK-NEXT:    sexth16 a1, a1
3711; CHECK-NEXT:    sexth16 a0, a0
3712; CHECK-NEXT:    cmplt16 a0, a1
3713; CHECK-NEXT:    bf32 .LBB74_2
3714; CHECK-NEXT:  # %bb.1: # %label1
3715; CHECK-NEXT:    movi16 a0, 1
3716; CHECK-NEXT:    rts16
3717; CHECK-NEXT:  .LBB74_2: # %label2
3718; CHECK-NEXT:    movi16 a0, 0
3719; CHECK-NEXT:    rts16
3720;
3721; GENERIC-LABEL: brRR_i16_sgt:
3722; GENERIC:       # %bb.0: # %entry
3723; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3724; GENERIC-NEXT:    subi16 sp, sp, 4
3725; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3726; GENERIC-NEXT:    sexth16 a1, a1
3727; GENERIC-NEXT:    sexth16 a0, a0
3728; GENERIC-NEXT:    cmplt16 a0, a1
3729; GENERIC-NEXT:    bf16 .LBB74_2
3730; GENERIC-NEXT:  # %bb.1: # %label1
3731; GENERIC-NEXT:    movi16 a0, 1
3732; GENERIC-NEXT:    addi16 sp, sp, 4
3733; GENERIC-NEXT:    rts16
3734; GENERIC-NEXT:  .LBB74_2: # %label2
3735; GENERIC-NEXT:    movi16 a0, 0
3736; GENERIC-NEXT:    addi16 sp, sp, 4
3737; GENERIC-NEXT:    rts16
3738; CHECK-UGTXT:    icmpu32 a0, a1, a0
3739; CHECK-UGTXT:    rts16
3740entry:
3741  %icmp = icmp sgt i16 %y, %x
3742  br i1 %icmp, label %label1, label %label2
3743label1:
3744  ret i16 1
3745label2:
3746  ret i16 0
3747}
3748
3749define i16 @brRI_i16_sgt(i16 %x) {
3750; CHECK-LABEL: brRI_i16_sgt:
3751; CHECK:       # %bb.0: # %entry
3752; CHECK-NEXT:    sexth16 a0, a0
3753; CHECK-NEXT:    cmplti16 a0, 11
3754; CHECK-NEXT:    bt32 .LBB75_2
3755; CHECK-NEXT:  # %bb.1: # %label1
3756; CHECK-NEXT:    movi16 a0, 1
3757; CHECK-NEXT:    rts16
3758; CHECK-NEXT:  .LBB75_2: # %label2
3759; CHECK-NEXT:    movi16 a0, 0
3760; CHECK-NEXT:    rts16
3761;
3762; GENERIC-LABEL: brRI_i16_sgt:
3763; GENERIC:       # %bb.0: # %entry
3764; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3765; GENERIC-NEXT:    subi16 sp, sp, 4
3766; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3767; GENERIC-NEXT:    sexth16 a0, a0
3768; GENERIC-NEXT:    cmplti16 a0, 11
3769; GENERIC-NEXT:    bt16 .LBB75_2
3770; GENERIC-NEXT:  # %bb.1: # %label1
3771; GENERIC-NEXT:    movi16 a0, 1
3772; GENERIC-NEXT:    addi16 sp, sp, 4
3773; GENERIC-NEXT:    rts16
3774; GENERIC-NEXT:  .LBB75_2: # %label2
3775; GENERIC-NEXT:    movi16 a0, 0
3776; GENERIC-NEXT:    addi16 sp, sp, 4
3777; GENERIC-NEXT:    rts16
3778; CHECK-UGTXT:    icmpu32 a0, a1, a0
3779; CHECK-UGTXT:    rts16
3780entry:
3781  %icmp = icmp sgt i16 %x, 10
3782  br i1 %icmp, label %label1, label %label2
3783label1:
3784  ret i16 1
3785label2:
3786  ret i16 0
3787}
3788
3789define i16 @brR0_i16_sgt(i16 %x) {
3790; CHECK-LABEL: brR0_i16_sgt:
3791; CHECK:       # %bb.0: # %entry
3792; CHECK-NEXT:    sexth16 a0, a0
3793; CHECK-NEXT:    cmplti16 a0, 1
3794; CHECK-NEXT:    bt32 .LBB76_2
3795; CHECK-NEXT:  # %bb.1: # %label1
3796; CHECK-NEXT:    movi16 a0, 1
3797; CHECK-NEXT:    rts16
3798; CHECK-NEXT:  .LBB76_2: # %label2
3799; CHECK-NEXT:    movi16 a0, 0
3800; CHECK-NEXT:    rts16
3801;
3802; GENERIC-LABEL: brR0_i16_sgt:
3803; GENERIC:       # %bb.0: # %entry
3804; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3805; GENERIC-NEXT:    subi16 sp, sp, 4
3806; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3807; GENERIC-NEXT:    sexth16 a0, a0
3808; GENERIC-NEXT:    cmplti16 a0, 1
3809; GENERIC-NEXT:    bt16 .LBB76_2
3810; GENERIC-NEXT:  # %bb.1: # %label1
3811; GENERIC-NEXT:    movi16 a0, 1
3812; GENERIC-NEXT:    addi16 sp, sp, 4
3813; GENERIC-NEXT:    rts16
3814; GENERIC-NEXT:  .LBB76_2: # %label2
3815; GENERIC-NEXT:    movi16 a0, 0
3816; GENERIC-NEXT:    addi16 sp, sp, 4
3817; GENERIC-NEXT:    rts16
3818; CHECK-UGTXT:    icmpu32 a0, a1, a0
3819; CHECK-UGTXT:    rts16
3820entry:
3821  %icmp = icmp sgt i16 %x, 0
3822  br i1 %icmp, label %label1, label %label2
3823label1:
3824  ret i16 1
3825label2:
3826  ret i16 0
3827}
3828
3829;SGE
3830define i16 @brRR_i16_sge(i16 %x, i16 %y) {
3831; CHECK-LABEL: brRR_i16_sge:
3832; CHECK:       # %bb.0: # %entry
3833; CHECK-NEXT:    sexth16 a0, a0
3834; CHECK-NEXT:    sexth16 a1, a1
3835; CHECK-NEXT:    cmplt16 a1, a0
3836; CHECK-NEXT:    bt32 .LBB77_2
3837; CHECK-NEXT:  # %bb.1: # %label1
3838; CHECK-NEXT:    movi16 a0, 1
3839; CHECK-NEXT:    rts16
3840; CHECK-NEXT:  .LBB77_2: # %label2
3841; CHECK-NEXT:    movi16 a0, 0
3842; CHECK-NEXT:    rts16
3843;
3844; GENERIC-LABEL: brRR_i16_sge:
3845; GENERIC:       # %bb.0: # %entry
3846; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3847; GENERIC-NEXT:    subi16 sp, sp, 4
3848; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3849; GENERIC-NEXT:    sexth16 a0, a0
3850; GENERIC-NEXT:    sexth16 a1, a1
3851; GENERIC-NEXT:    cmplt16 a1, a0
3852; GENERIC-NEXT:    bt16 .LBB77_2
3853; GENERIC-NEXT:  # %bb.1: # %label1
3854; GENERIC-NEXT:    movi16 a0, 1
3855; GENERIC-NEXT:    addi16 sp, sp, 4
3856; GENERIC-NEXT:    rts16
3857; GENERIC-NEXT:  .LBB77_2: # %label2
3858; GENERIC-NEXT:    movi16 a0, 0
3859; GENERIC-NEXT:    addi16 sp, sp, 4
3860; GENERIC-NEXT:    rts16
3861; CHECK-UGTXT:    icmpu32 a0, a1, a0
3862; CHECK-UGTXT:    rts16
3863entry:
3864  %icmp = icmp sge i16 %y, %x
3865  br i1 %icmp, label %label1, label %label2
3866label1:
3867  ret i16 1
3868label2:
3869  ret i16 0
3870}
3871
3872define i16 @brRI_i16_sge(i16 %x) {
3873; CHECK-LABEL: brRI_i16_sge:
3874; CHECK:       # %bb.0: # %entry
3875; CHECK-NEXT:    sexth16 a0, a0
3876; CHECK-NEXT:    cmplti16 a0, 10
3877; CHECK-NEXT:    bt32 .LBB78_2
3878; CHECK-NEXT:  # %bb.1: # %label1
3879; CHECK-NEXT:    movi16 a0, 1
3880; CHECK-NEXT:    rts16
3881; CHECK-NEXT:  .LBB78_2: # %label2
3882; CHECK-NEXT:    movi16 a0, 0
3883; CHECK-NEXT:    rts16
3884;
3885; GENERIC-LABEL: brRI_i16_sge:
3886; GENERIC:       # %bb.0: # %entry
3887; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3888; GENERIC-NEXT:    subi16 sp, sp, 4
3889; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3890; GENERIC-NEXT:    sexth16 a0, a0
3891; GENERIC-NEXT:    cmplti16 a0, 10
3892; GENERIC-NEXT:    bt16 .LBB78_2
3893; GENERIC-NEXT:  # %bb.1: # %label1
3894; GENERIC-NEXT:    movi16 a0, 1
3895; GENERIC-NEXT:    addi16 sp, sp, 4
3896; GENERIC-NEXT:    rts16
3897; GENERIC-NEXT:  .LBB78_2: # %label2
3898; GENERIC-NEXT:    movi16 a0, 0
3899; GENERIC-NEXT:    addi16 sp, sp, 4
3900; GENERIC-NEXT:    rts16
3901; CHECK-UGTXT:    icmpu32 a0, a1, a0
3902; CHECK-UGTXT:    rts16
3903entry:
3904  %icmp = icmp sge i16 %x, 10
3905  br i1 %icmp, label %label1, label %label2
3906label1:
3907  ret i16 1
3908label2:
3909  ret i16 0
3910}
3911
3912define i16 @brR0_i16_sge(i16 %x) {
3913; CHECK-LABEL: brR0_i16_sge:
3914; CHECK:       # %bb.0: # %entry
3915; CHECK-NEXT:    sexth16 a0, a0
3916; CHECK-NEXT:    blz32 a0, .LBB79_2
3917; CHECK-NEXT:  # %bb.1: # %label1
3918; CHECK-NEXT:    movi16 a0, 1
3919; CHECK-NEXT:    rts16
3920; CHECK-NEXT:  .LBB79_2: # %label2
3921; CHECK-NEXT:    movi16 a0, 0
3922; CHECK-NEXT:    rts16
3923;
3924; GENERIC-LABEL: brR0_i16_sge:
3925; GENERIC:       # %bb.0: # %entry
3926; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3927; GENERIC-NEXT:    subi16 sp, sp, 4
3928; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3929; GENERIC-NEXT:    sexth16 a0, a0
3930; GENERIC-NEXT:    movi16 a1, 0
3931; GENERIC-NEXT:    cmplt16 a0, a1
3932; GENERIC-NEXT:    bt16 .LBB79_2
3933; GENERIC-NEXT:  # %bb.1: # %label1
3934; GENERIC-NEXT:    movi16 a0, 1
3935; GENERIC-NEXT:    addi16 sp, sp, 4
3936; GENERIC-NEXT:    rts16
3937; GENERIC-NEXT:  .LBB79_2: # %label2
3938; GENERIC-NEXT:    movi16 a0, 0
3939; GENERIC-NEXT:    addi16 sp, sp, 4
3940; GENERIC-NEXT:    rts16
3941; CHECK-UGTXT:    icmpu32 a0, a1, a0
3942; CHECK-UGTXT:    rts16
3943entry:
3944  %icmp = icmp sge i16 %x, 0
3945  br i1 %icmp, label %label1, label %label2
3946label1:
3947  ret i16 1
3948label2:
3949  ret i16 0
3950}
3951
3952;SLT
3953define i16 @brRR_i16_slt(i16 %x, i16 %y) {
3954; CHECK-LABEL: brRR_i16_slt:
3955; CHECK:       # %bb.0: # %entry
3956; CHECK-NEXT:    sexth16 a0, a0
3957; CHECK-NEXT:    sexth16 a1, a1
3958; CHECK-NEXT:    cmplt16 a1, a0
3959; CHECK-NEXT:    bf32 .LBB80_2
3960; CHECK-NEXT:  # %bb.1: # %label1
3961; CHECK-NEXT:    movi16 a0, 1
3962; CHECK-NEXT:    rts16
3963; CHECK-NEXT:  .LBB80_2: # %label2
3964; CHECK-NEXT:    movi16 a0, 0
3965; CHECK-NEXT:    rts16
3966;
3967; GENERIC-LABEL: brRR_i16_slt:
3968; GENERIC:       # %bb.0: # %entry
3969; GENERIC-NEXT:    .cfi_def_cfa_offset 0
3970; GENERIC-NEXT:    subi16 sp, sp, 4
3971; GENERIC-NEXT:    .cfi_def_cfa_offset 4
3972; GENERIC-NEXT:    sexth16 a0, a0
3973; GENERIC-NEXT:    sexth16 a1, a1
3974; GENERIC-NEXT:    cmplt16 a1, a0
3975; GENERIC-NEXT:    bf16 .LBB80_2
3976; GENERIC-NEXT:  # %bb.1: # %label1
3977; GENERIC-NEXT:    movi16 a0, 1
3978; GENERIC-NEXT:    addi16 sp, sp, 4
3979; GENERIC-NEXT:    rts16
3980; GENERIC-NEXT:  .LBB80_2: # %label2
3981; GENERIC-NEXT:    movi16 a0, 0
3982; GENERIC-NEXT:    addi16 sp, sp, 4
3983; GENERIC-NEXT:    rts16
3984; CHECK-UGTXT:    icmpu32 a0, a1, a0
3985; CHECK-UGTXT:    rts16
3986entry:
3987  %icmp = icmp slt i16 %y, %x
3988  br i1 %icmp, label %label1, label %label2
3989label1:
3990  ret i16 1
3991label2:
3992  ret i16 0
3993}
3994
3995define i16 @brRI_i16_slt(i16 %x) {
3996; CHECK-LABEL: brRI_i16_slt:
3997; CHECK:       # %bb.0: # %entry
3998; CHECK-NEXT:    sexth16 a0, a0
3999; CHECK-NEXT:    movi16 a1, 9
4000; CHECK-NEXT:    cmplt16 a1, a0
4001; CHECK-NEXT:    bt32 .LBB81_2
4002; CHECK-NEXT:  # %bb.1: # %label1
4003; CHECK-NEXT:    movi16 a0, 1
4004; CHECK-NEXT:    rts16
4005; CHECK-NEXT:  .LBB81_2: # %label2
4006; CHECK-NEXT:    movi16 a0, 0
4007; CHECK-NEXT:    rts16
4008;
4009; GENERIC-LABEL: brRI_i16_slt:
4010; GENERIC:       # %bb.0: # %entry
4011; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4012; GENERIC-NEXT:    subi16 sp, sp, 4
4013; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4014; GENERIC-NEXT:    sexth16 a0, a0
4015; GENERIC-NEXT:    movi16 a1, 9
4016; GENERIC-NEXT:    cmplt16 a1, a0
4017; GENERIC-NEXT:    bt16 .LBB81_2
4018; GENERIC-NEXT:  # %bb.1: # %label1
4019; GENERIC-NEXT:    movi16 a0, 1
4020; GENERIC-NEXT:    addi16 sp, sp, 4
4021; GENERIC-NEXT:    rts16
4022; GENERIC-NEXT:  .LBB81_2: # %label2
4023; GENERIC-NEXT:    movi16 a0, 0
4024; GENERIC-NEXT:    addi16 sp, sp, 4
4025; GENERIC-NEXT:    rts16
4026; CHECK-UGTXT:    icmpu32 a0, a1, a0
4027; CHECK-UGTXT:    rts16
4028entry:
4029  %icmp = icmp slt i16 %x, 10
4030  br i1 %icmp, label %label1, label %label2
4031label1:
4032  ret i16 1
4033label2:
4034  ret i16 0
4035}
4036
4037define i16 @brR0_i16_slt(i16 %x) {
4038; CHECK-LABEL: brR0_i16_slt:
4039; CHECK:       # %bb.0: # %entry
4040; CHECK-NEXT:    sexth16 a0, a0
4041; CHECK-NEXT:    movih32 a1, 65535
4042; CHECK-NEXT:    ori32 a1, a1, 65535
4043; CHECK-NEXT:    cmplt16 a1, a0
4044; CHECK-NEXT:    bf32 .LBB82_2
4045; CHECK-NEXT:  # %bb.1: # %label2
4046; CHECK-NEXT:    movi16 a0, 0
4047; CHECK-NEXT:    rts16
4048; CHECK-NEXT:  .LBB82_2: # %label1
4049; CHECK-NEXT:    movi16 a0, 1
4050; CHECK-NEXT:    rts16
4051;
4052; GENERIC-LABEL: brR0_i16_slt:
4053; GENERIC:       # %bb.0: # %entry
4054; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4055; GENERIC-NEXT:    subi16 sp, sp, 4
4056; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4057; GENERIC-NEXT:    sexth16 a0, a0
4058; GENERIC-NEXT:    movi16 a1, 255
4059; GENERIC-NEXT:    lsli16 a2, a1, 24
4060; GENERIC-NEXT:    lsli16 a3, a1, 16
4061; GENERIC-NEXT:    or16 a3, a2
4062; GENERIC-NEXT:    lsli16 a2, a1, 8
4063; GENERIC-NEXT:    or16 a2, a3
4064; GENERIC-NEXT:    or16 a2, a1
4065; GENERIC-NEXT:    cmplt16 a2, a0
4066; GENERIC-NEXT:    bf16 .LBB82_2
4067; GENERIC-NEXT:  # %bb.1: # %label2
4068; GENERIC-NEXT:    movi16 a0, 0
4069; GENERIC-NEXT:    addi16 sp, sp, 4
4070; GENERIC-NEXT:    rts16
4071; GENERIC-NEXT:  .LBB82_2: # %label1
4072; GENERIC-NEXT:    movi16 a0, 1
4073; GENERIC-NEXT:    addi16 sp, sp, 4
4074; GENERIC-NEXT:    rts16
4075; CHECK-UGTXT:    icmpu32 a0, a1, a0
4076; CHECK-UGTXT:    rts16
4077entry:
4078  %icmp = icmp slt i16 %x, 0
4079  br i1 %icmp, label %label1, label %label2
4080label1:
4081  ret i16 1
4082label2:
4083  ret i16 0
4084}
4085
4086;SLE
4087define i16 @brRR_i16_sle(i16 %x, i16 %y) {
4088; CHECK-LABEL: brRR_i16_sle:
4089; CHECK:       # %bb.0: # %entry
4090; CHECK-NEXT:    sexth16 a1, a1
4091; CHECK-NEXT:    sexth16 a0, a0
4092; CHECK-NEXT:    cmplt16 a0, a1
4093; CHECK-NEXT:    bt32 .LBB83_2
4094; CHECK-NEXT:  # %bb.1: # %label1
4095; CHECK-NEXT:    movi16 a0, 1
4096; CHECK-NEXT:    rts16
4097; CHECK-NEXT:  .LBB83_2: # %label2
4098; CHECK-NEXT:    movi16 a0, 0
4099; CHECK-NEXT:    rts16
4100;
4101; GENERIC-LABEL: brRR_i16_sle:
4102; GENERIC:       # %bb.0: # %entry
4103; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4104; GENERIC-NEXT:    subi16 sp, sp, 4
4105; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4106; GENERIC-NEXT:    sexth16 a1, a1
4107; GENERIC-NEXT:    sexth16 a0, a0
4108; GENERIC-NEXT:    cmplt16 a0, a1
4109; GENERIC-NEXT:    bt16 .LBB83_2
4110; GENERIC-NEXT:  # %bb.1: # %label1
4111; GENERIC-NEXT:    movi16 a0, 1
4112; GENERIC-NEXT:    addi16 sp, sp, 4
4113; GENERIC-NEXT:    rts16
4114; GENERIC-NEXT:  .LBB83_2: # %label2
4115; GENERIC-NEXT:    movi16 a0, 0
4116; GENERIC-NEXT:    addi16 sp, sp, 4
4117; GENERIC-NEXT:    rts16
4118; CHECK-UGTXT:    icmpu32 a0, a1, a0
4119; CHECK-UGTXT:    rts16
4120entry:
4121  %icmp = icmp sle i16 %y, %x
4122  br i1 %icmp, label %label1, label %label2
4123label1:
4124  ret i16 1
4125label2:
4126  ret i16 0
4127}
4128
4129define i16 @brRI_i16_sle(i16 %x) {
4130; CHECK-LABEL: brRI_i16_sle:
4131; CHECK:       # %bb.0: # %entry
4132; CHECK-NEXT:    sexth16 a0, a0
4133; CHECK-NEXT:    movi16 a1, 10
4134; CHECK-NEXT:    cmplt16 a1, a0
4135; CHECK-NEXT:    bt32 .LBB84_2
4136; CHECK-NEXT:  # %bb.1: # %label1
4137; CHECK-NEXT:    movi16 a0, 1
4138; CHECK-NEXT:    rts16
4139; CHECK-NEXT:  .LBB84_2: # %label2
4140; CHECK-NEXT:    movi16 a0, 0
4141; CHECK-NEXT:    rts16
4142;
4143; GENERIC-LABEL: brRI_i16_sle:
4144; GENERIC:       # %bb.0: # %entry
4145; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4146; GENERIC-NEXT:    subi16 sp, sp, 4
4147; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4148; GENERIC-NEXT:    sexth16 a0, a0
4149; GENERIC-NEXT:    movi16 a1, 10
4150; GENERIC-NEXT:    cmplt16 a1, a0
4151; GENERIC-NEXT:    bt16 .LBB84_2
4152; GENERIC-NEXT:  # %bb.1: # %label1
4153; GENERIC-NEXT:    movi16 a0, 1
4154; GENERIC-NEXT:    addi16 sp, sp, 4
4155; GENERIC-NEXT:    rts16
4156; GENERIC-NEXT:  .LBB84_2: # %label2
4157; GENERIC-NEXT:    movi16 a0, 0
4158; GENERIC-NEXT:    addi16 sp, sp, 4
4159; GENERIC-NEXT:    rts16
4160; CHECK-UGTXT:    icmpu32 a0, a1, a0
4161; CHECK-UGTXT:    rts16
4162entry:
4163  %icmp = icmp sle i16 %x, 10
4164  br i1 %icmp, label %label1, label %label2
4165label1:
4166  ret i16 1
4167label2:
4168  ret i16 0
4169}
4170
4171define i16 @brR0_i16_sle(i16 %x) {
4172; CHECK-LABEL: brR0_i16_sle:
4173; CHECK:       # %bb.0: # %entry
4174; CHECK-NEXT:    sexth16 a0, a0
4175; CHECK-NEXT:    bhz32 a0, .LBB85_2
4176; CHECK-NEXT:  # %bb.1: # %label1
4177; CHECK-NEXT:    movi16 a0, 1
4178; CHECK-NEXT:    rts16
4179; CHECK-NEXT:  .LBB85_2: # %label2
4180; CHECK-NEXT:    movi16 a0, 0
4181; CHECK-NEXT:    rts16
4182;
4183; GENERIC-LABEL: brR0_i16_sle:
4184; GENERIC:       # %bb.0: # %entry
4185; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4186; GENERIC-NEXT:    subi16 sp, sp, 4
4187; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4188; GENERIC-NEXT:    sexth16 a0, a0
4189; GENERIC-NEXT:    movi16 a1, 0
4190; GENERIC-NEXT:    cmplt16 a1, a0
4191; GENERIC-NEXT:    bt16 .LBB85_2
4192; GENERIC-NEXT:  # %bb.1: # %label1
4193; GENERIC-NEXT:    movi16 a0, 1
4194; GENERIC-NEXT:    addi16 sp, sp, 4
4195; GENERIC-NEXT:    rts16
4196; GENERIC-NEXT:  .LBB85_2: # %label2
4197; GENERIC-NEXT:    movi16 a0, 0
4198; GENERIC-NEXT:    addi16 sp, sp, 4
4199; GENERIC-NEXT:    rts16
4200; CHECK-UGTXT:    icmpu32 a0, a1, a0
4201; CHECK-UGTXT:    rts16
4202entry:
4203  %icmp = icmp sle i16 %x, 0
4204  br i1 %icmp, label %label1, label %label2
4205label1:
4206  ret i16 1
4207label2:
4208  ret i16 0
4209}
4210
4211
4212define i16 @brCBit_i16(i1 %c) {
4213; CHECK-LABEL: brCBit_i16:
4214; CHECK:       # %bb.0: # %entry
4215; CHECK-NEXT:    andi32 a0, a0, 1
4216; CHECK-NEXT:    bez32 a0, .LBB86_2
4217; CHECK-NEXT:  # %bb.1: # %label1
4218; CHECK-NEXT:    movi16 a0, 1
4219; CHECK-NEXT:    rts16
4220; CHECK-NEXT:  .LBB86_2: # %label2
4221; CHECK-NEXT:    movi16 a0, 0
4222; CHECK-NEXT:    rts16
4223;
4224; GENERIC-LABEL: brCBit_i16:
4225; GENERIC:       # %bb.0: # %entry
4226; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4227; GENERIC-NEXT:    subi16 sp, sp, 4
4228; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4229; GENERIC-NEXT:    movi16 a1, 1
4230; GENERIC-NEXT:    and16 a1, a0
4231; GENERIC-NEXT:    cmpnei16 a1, 0
4232; GENERIC-NEXT:    bf16 .LBB86_2
4233; GENERIC-NEXT:  # %bb.1: # %label1
4234; GENERIC-NEXT:    movi16 a0, 1
4235; GENERIC-NEXT:    addi16 sp, sp, 4
4236; GENERIC-NEXT:    rts16
4237; GENERIC-NEXT:  .LBB86_2: # %label2
4238; GENERIC-NEXT:    movi16 a0, 0
4239; GENERIC-NEXT:    addi16 sp, sp, 4
4240; GENERIC-NEXT:    rts16
4241entry:
4242  br i1 %c, label %label1, label %label2
4243label1:
4244  ret i16 1
4245label2:
4246  ret i16 0
4247}
4248
4249
4250;EQ
4251define i8 @brRR_i8_eq(i8 %x, i8 %y) {
4252; CHECK-LABEL: brRR_i8_eq:
4253; CHECK:       # %bb.0: # %entry
4254; CHECK-NEXT:    zextb16 a0, a0
4255; CHECK-NEXT:    zextb16 a1, a1
4256; CHECK-NEXT:    cmpne16 a1, a0
4257; CHECK-NEXT:    bt32 .LBB87_2
4258; CHECK-NEXT:  # %bb.1: # %label1
4259; CHECK-NEXT:    movi16 a0, 1
4260; CHECK-NEXT:    rts16
4261; CHECK-NEXT:  .LBB87_2: # %label2
4262; CHECK-NEXT:    movi16 a0, 0
4263; CHECK-NEXT:    rts16
4264;
4265; GENERIC-LABEL: brRR_i8_eq:
4266; GENERIC:       # %bb.0: # %entry
4267; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4268; GENERIC-NEXT:    subi16 sp, sp, 4
4269; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4270; GENERIC-NEXT:    movi16 a2, 255
4271; GENERIC-NEXT:    and16 a0, a2
4272; GENERIC-NEXT:    and16 a1, a2
4273; GENERIC-NEXT:    cmpne16 a1, a0
4274; GENERIC-NEXT:    bt16 .LBB87_2
4275; GENERIC-NEXT:  # %bb.1: # %label1
4276; GENERIC-NEXT:    movi16 a0, 1
4277; GENERIC-NEXT:    addi16 sp, sp, 4
4278; GENERIC-NEXT:    rts16
4279; GENERIC-NEXT:  .LBB87_2: # %label2
4280; GENERIC-NEXT:    movi16 a0, 0
4281; GENERIC-NEXT:    addi16 sp, sp, 4
4282; GENERIC-NEXT:    rts16
4283entry:
4284  %icmp = icmp eq i8 %y, %x
4285  br i1 %icmp, label %label1, label %label2
4286label1:
4287  ret i8 1
4288label2:
4289  ret i8 0
4290}
4291
4292define i8 @brRI_i8_eq(i8 %x) {
4293; CHECK-LABEL: brRI_i8_eq:
4294; CHECK:       # %bb.0: # %entry
4295; CHECK-NEXT:    zextb16 a0, a0
4296; CHECK-NEXT:    cmpnei16 a0, 10
4297; CHECK-NEXT:    bt32 .LBB88_2
4298; CHECK-NEXT:  # %bb.1: # %label1
4299; CHECK-NEXT:    movi16 a0, 1
4300; CHECK-NEXT:    rts16
4301; CHECK-NEXT:  .LBB88_2: # %label2
4302; CHECK-NEXT:    movi16 a0, 0
4303; CHECK-NEXT:    rts16
4304;
4305; GENERIC-LABEL: brRI_i8_eq:
4306; GENERIC:       # %bb.0: # %entry
4307; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4308; GENERIC-NEXT:    subi16 sp, sp, 4
4309; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4310; GENERIC-NEXT:    movi16 a1, 255
4311; GENERIC-NEXT:    and16 a1, a0
4312; GENERIC-NEXT:    cmpnei16 a1, 10
4313; GENERIC-NEXT:    bt16 .LBB88_2
4314; GENERIC-NEXT:  # %bb.1: # %label1
4315; GENERIC-NEXT:    movi16 a0, 1
4316; GENERIC-NEXT:    addi16 sp, sp, 4
4317; GENERIC-NEXT:    rts16
4318; GENERIC-NEXT:  .LBB88_2: # %label2
4319; GENERIC-NEXT:    movi16 a0, 0
4320; GENERIC-NEXT:    addi16 sp, sp, 4
4321; GENERIC-NEXT:    rts16
4322entry:
4323  %icmp = icmp eq i8 %x, 10
4324  br i1 %icmp, label %label1, label %label2
4325label1:
4326  ret i8 1
4327label2:
4328  ret i8 0
4329}
4330
4331define i8 @brR0_i8_eq(i8 %x) {
4332; CHECK-LABEL: brR0_i8_eq:
4333; CHECK:       # %bb.0: # %entry
4334; CHECK-NEXT:    zextb16 a0, a0
4335; CHECK-NEXT:    bez32 a0, .LBB89_2
4336; CHECK-NEXT:  # %bb.1: # %label2
4337; CHECK-NEXT:    movi16 a0, 0
4338; CHECK-NEXT:    rts16
4339; CHECK-NEXT:  .LBB89_2: # %label1
4340; CHECK-NEXT:    movi16 a0, 1
4341; CHECK-NEXT:    rts16
4342;
4343; GENERIC-LABEL: brR0_i8_eq:
4344; GENERIC:       # %bb.0: # %entry
4345; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4346; GENERIC-NEXT:    subi16 sp, sp, 4
4347; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4348; GENERIC-NEXT:    movi16 a1, 255
4349; GENERIC-NEXT:    and16 a1, a0
4350; GENERIC-NEXT:    cmpnei16 a1, 0
4351; GENERIC-NEXT:    bf16 .LBB89_2
4352; GENERIC-NEXT:  # %bb.1: # %label2
4353; GENERIC-NEXT:    movi16 a0, 0
4354; GENERIC-NEXT:    addi16 sp, sp, 4
4355; GENERIC-NEXT:    rts16
4356; GENERIC-NEXT:  .LBB89_2: # %label1
4357; GENERIC-NEXT:    movi16 a0, 1
4358; GENERIC-NEXT:    addi16 sp, sp, 4
4359; GENERIC-NEXT:    rts16
4360entry:
4361  %icmp = icmp eq i8 %x, 0
4362  br i1 %icmp, label %label1, label %label2
4363label1:
4364  ret i8 1
4365label2:
4366  ret i8 0
4367}
4368
4369;NE
4370define i8 @brRR_i8_ne(i8 %x, i8 %y) {
4371; CHECK-LABEL: brRR_i8_ne:
4372; CHECK:       # %bb.0: # %entry
4373; CHECK-NEXT:    zextb16 a0, a0
4374; CHECK-NEXT:    zextb16 a1, a1
4375; CHECK-NEXT:    cmpne16 a1, a0
4376; CHECK-NEXT:    bf32 .LBB90_2
4377; CHECK-NEXT:  # %bb.1: # %label1
4378; CHECK-NEXT:    movi16 a0, 1
4379; CHECK-NEXT:    rts16
4380; CHECK-NEXT:  .LBB90_2: # %label2
4381; CHECK-NEXT:    movi16 a0, 0
4382; CHECK-NEXT:    rts16
4383;
4384; GENERIC-LABEL: brRR_i8_ne:
4385; GENERIC:       # %bb.0: # %entry
4386; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4387; GENERIC-NEXT:    subi16 sp, sp, 4
4388; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4389; GENERIC-NEXT:    movi16 a2, 255
4390; GENERIC-NEXT:    and16 a0, a2
4391; GENERIC-NEXT:    and16 a1, a2
4392; GENERIC-NEXT:    cmpne16 a1, a0
4393; GENERIC-NEXT:    bf16 .LBB90_2
4394; GENERIC-NEXT:  # %bb.1: # %label1
4395; GENERIC-NEXT:    movi16 a0, 1
4396; GENERIC-NEXT:    addi16 sp, sp, 4
4397; GENERIC-NEXT:    rts16
4398; GENERIC-NEXT:  .LBB90_2: # %label2
4399; GENERIC-NEXT:    movi16 a0, 0
4400; GENERIC-NEXT:    addi16 sp, sp, 4
4401; GENERIC-NEXT:    rts16
4402entry:
4403  %icmp = icmp ne i8 %y, %x
4404  br i1 %icmp, label %label1, label %label2
4405label1:
4406  ret i8 1
4407label2:
4408  ret i8 0
4409}
4410
4411define i8 @brRI_i8_ne(i8 %x) {
4412; CHECK-LABEL: brRI_i8_ne:
4413; CHECK:       # %bb.0: # %entry
4414; CHECK-NEXT:    zextb16 a0, a0
4415; CHECK-NEXT:    cmpnei16 a0, 10
4416; CHECK-NEXT:    bf32 .LBB91_2
4417; CHECK-NEXT:  # %bb.1: # %label1
4418; CHECK-NEXT:    movi16 a0, 1
4419; CHECK-NEXT:    rts16
4420; CHECK-NEXT:  .LBB91_2: # %label2
4421; CHECK-NEXT:    movi16 a0, 0
4422; CHECK-NEXT:    rts16
4423;
4424; GENERIC-LABEL: brRI_i8_ne:
4425; GENERIC:       # %bb.0: # %entry
4426; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4427; GENERIC-NEXT:    subi16 sp, sp, 4
4428; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4429; GENERIC-NEXT:    movi16 a1, 255
4430; GENERIC-NEXT:    and16 a1, a0
4431; GENERIC-NEXT:    cmpnei16 a1, 10
4432; GENERIC-NEXT:    bf16 .LBB91_2
4433; GENERIC-NEXT:  # %bb.1: # %label1
4434; GENERIC-NEXT:    movi16 a0, 1
4435; GENERIC-NEXT:    addi16 sp, sp, 4
4436; GENERIC-NEXT:    rts16
4437; GENERIC-NEXT:  .LBB91_2: # %label2
4438; GENERIC-NEXT:    movi16 a0, 0
4439; GENERIC-NEXT:    addi16 sp, sp, 4
4440; GENERIC-NEXT:    rts16
4441entry:
4442  %icmp = icmp ne i8 %x, 10
4443  br i1 %icmp, label %label1, label %label2
4444label1:
4445  ret i8 1
4446label2:
4447  ret i8 0
4448}
4449
4450define i8 @brR0_i8_ne(i8 %x) {
4451; CHECK-LABEL: brR0_i8_ne:
4452; CHECK:       # %bb.0: # %entry
4453; CHECK-NEXT:    zextb16 a0, a0
4454; CHECK-NEXT:    bez32 a0, .LBB92_2
4455; CHECK-NEXT:  # %bb.1: # %label1
4456; CHECK-NEXT:    movi16 a0, 1
4457; CHECK-NEXT:    rts16
4458; CHECK-NEXT:  .LBB92_2: # %label2
4459; CHECK-NEXT:    movi16 a0, 0
4460; CHECK-NEXT:    rts16
4461;
4462; GENERIC-LABEL: brR0_i8_ne:
4463; GENERIC:       # %bb.0: # %entry
4464; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4465; GENERIC-NEXT:    subi16 sp, sp, 4
4466; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4467; GENERIC-NEXT:    movi16 a1, 255
4468; GENERIC-NEXT:    and16 a1, a0
4469; GENERIC-NEXT:    cmpnei16 a1, 0
4470; GENERIC-NEXT:    bf16 .LBB92_2
4471; GENERIC-NEXT:  # %bb.1: # %label1
4472; GENERIC-NEXT:    movi16 a0, 1
4473; GENERIC-NEXT:    addi16 sp, sp, 4
4474; GENERIC-NEXT:    rts16
4475; GENERIC-NEXT:  .LBB92_2: # %label2
4476; GENERIC-NEXT:    movi16 a0, 0
4477; GENERIC-NEXT:    addi16 sp, sp, 4
4478; GENERIC-NEXT:    rts16
4479entry:
4480  %icmp = icmp ne i8 %x, 0
4481  br i1 %icmp, label %label1, label %label2
4482label1:
4483  ret i8 1
4484label2:
4485  ret i8 0
4486}
4487
4488;UGT
4489define i8 @brRR_i8_ugt(i8 %x, i8 %y) {
4490; CHECK-LABEL: brRR_i8_ugt:
4491; CHECK:       # %bb.0: # %entry
4492; CHECK-NEXT:    zextb16 a1, a1
4493; CHECK-NEXT:    zextb16 a0, a0
4494; CHECK-NEXT:    cmphs16 a0, a1
4495; CHECK-NEXT:    bt32 .LBB93_2
4496; CHECK-NEXT:  # %bb.1: # %label1
4497; CHECK-NEXT:    movi16 a0, 1
4498; CHECK-NEXT:    rts16
4499; CHECK-NEXT:  .LBB93_2: # %label2
4500; CHECK-NEXT:    movi16 a0, 0
4501; CHECK-NEXT:    rts16
4502;
4503; GENERIC-LABEL: brRR_i8_ugt:
4504; GENERIC:       # %bb.0: # %entry
4505; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4506; GENERIC-NEXT:    subi16 sp, sp, 4
4507; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4508; GENERIC-NEXT:    movi16 a2, 255
4509; GENERIC-NEXT:    and16 a1, a2
4510; GENERIC-NEXT:    and16 a0, a2
4511; GENERIC-NEXT:    cmphs16 a0, a1
4512; GENERIC-NEXT:    bt16 .LBB93_2
4513; GENERIC-NEXT:  # %bb.1: # %label1
4514; GENERIC-NEXT:    movi16 a0, 1
4515; GENERIC-NEXT:    addi16 sp, sp, 4
4516; GENERIC-NEXT:    rts16
4517; GENERIC-NEXT:  .LBB93_2: # %label2
4518; GENERIC-NEXT:    movi16 a0, 0
4519; GENERIC-NEXT:    addi16 sp, sp, 4
4520; GENERIC-NEXT:    rts16
4521; CHECK-UGTXT:    icmpu32 a0, a1, a0
4522; CHECK-UGTXT:    rts16
4523entry:
4524  %icmp = icmp ugt i8 %y, %x
4525  br i1 %icmp, label %label1, label %label2
4526label1:
4527  ret i8 1
4528label2:
4529  ret i8 0
4530}
4531
4532define i8 @brRI_i8_ugt(i8 %x) {
4533; CHECK-LABEL: brRI_i8_ugt:
4534; CHECK:       # %bb.0: # %entry
4535; CHECK-NEXT:    zextb16 a0, a0
4536; CHECK-NEXT:    cmphsi16 a0, 11
4537; CHECK-NEXT:    bf32 .LBB94_2
4538; CHECK-NEXT:  # %bb.1: # %label1
4539; CHECK-NEXT:    movi16 a0, 1
4540; CHECK-NEXT:    rts16
4541; CHECK-NEXT:  .LBB94_2: # %label2
4542; CHECK-NEXT:    movi16 a0, 0
4543; CHECK-NEXT:    rts16
4544;
4545; GENERIC-LABEL: brRI_i8_ugt:
4546; GENERIC:       # %bb.0: # %entry
4547; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4548; GENERIC-NEXT:    subi16 sp, sp, 4
4549; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4550; GENERIC-NEXT:    movi16 a1, 255
4551; GENERIC-NEXT:    and16 a1, a0
4552; GENERIC-NEXT:    cmphsi16 a1, 11
4553; GENERIC-NEXT:    bf16 .LBB94_2
4554; GENERIC-NEXT:  # %bb.1: # %label1
4555; GENERIC-NEXT:    movi16 a0, 1
4556; GENERIC-NEXT:    addi16 sp, sp, 4
4557; GENERIC-NEXT:    rts16
4558; GENERIC-NEXT:  .LBB94_2: # %label2
4559; GENERIC-NEXT:    movi16 a0, 0
4560; GENERIC-NEXT:    addi16 sp, sp, 4
4561; GENERIC-NEXT:    rts16
4562; CHECK-UGTXT:    icmpu32 a0, a1, a0
4563; CHECK-UGTXT:    rts16
4564entry:
4565  %icmp = icmp ugt i8 %x, 10
4566  br i1 %icmp, label %label1, label %label2
4567label1:
4568  ret i8 1
4569label2:
4570  ret i8 0
4571}
4572
4573define i8 @brR0_i8_ugt(i8 %x) {
4574; CHECK-LABEL: brR0_i8_ugt:
4575; CHECK:       # %bb.0: # %entry
4576; CHECK-NEXT:    zextb16 a0, a0
4577; CHECK-NEXT:    bez32 a0, .LBB95_2
4578; CHECK-NEXT:  # %bb.1: # %label1
4579; CHECK-NEXT:    movi16 a0, 1
4580; CHECK-NEXT:    rts16
4581; CHECK-NEXT:  .LBB95_2: # %label2
4582; CHECK-NEXT:    movi16 a0, 0
4583; CHECK-NEXT:    rts16
4584;
4585; GENERIC-LABEL: brR0_i8_ugt:
4586; GENERIC:       # %bb.0: # %entry
4587; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4588; GENERIC-NEXT:    subi16 sp, sp, 4
4589; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4590; GENERIC-NEXT:    movi16 a1, 255
4591; GENERIC-NEXT:    and16 a1, a0
4592; GENERIC-NEXT:    cmpnei16 a1, 0
4593; GENERIC-NEXT:    bf16 .LBB95_2
4594; GENERIC-NEXT:  # %bb.1: # %label1
4595; GENERIC-NEXT:    movi16 a0, 1
4596; GENERIC-NEXT:    addi16 sp, sp, 4
4597; GENERIC-NEXT:    rts16
4598; GENERIC-NEXT:  .LBB95_2: # %label2
4599; GENERIC-NEXT:    movi16 a0, 0
4600; GENERIC-NEXT:    addi16 sp, sp, 4
4601; GENERIC-NEXT:    rts16
4602; CHECK-UGTXT:    icmpu32 a0, a1, a0
4603; CHECK-UGTXT:    rts16
4604entry:
4605  %icmp = icmp ugt i8 %x, 0
4606  br i1 %icmp, label %label1, label %label2
4607label1:
4608  ret i8 1
4609label2:
4610  ret i8 0
4611}
4612
4613;UGE
4614define i8 @brRR_i8_uge(i8 %x, i8 %y) {
4615; CHECK-LABEL: brRR_i8_uge:
4616; CHECK:       # %bb.0: # %entry
4617; CHECK-NEXT:    zextb16 a0, a0
4618; CHECK-NEXT:    zextb16 a1, a1
4619; CHECK-NEXT:    cmphs16 a1, a0
4620; CHECK-NEXT:    bf32 .LBB96_2
4621; CHECK-NEXT:  # %bb.1: # %label1
4622; CHECK-NEXT:    movi16 a0, 1
4623; CHECK-NEXT:    rts16
4624; CHECK-NEXT:  .LBB96_2: # %label2
4625; CHECK-NEXT:    movi16 a0, 0
4626; CHECK-NEXT:    rts16
4627;
4628; GENERIC-LABEL: brRR_i8_uge:
4629; GENERIC:       # %bb.0: # %entry
4630; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4631; GENERIC-NEXT:    subi16 sp, sp, 4
4632; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4633; GENERIC-NEXT:    movi16 a2, 255
4634; GENERIC-NEXT:    and16 a0, a2
4635; GENERIC-NEXT:    and16 a1, a2
4636; GENERIC-NEXT:    cmphs16 a1, a0
4637; GENERIC-NEXT:    bf16 .LBB96_2
4638; GENERIC-NEXT:  # %bb.1: # %label1
4639; GENERIC-NEXT:    movi16 a0, 1
4640; GENERIC-NEXT:    addi16 sp, sp, 4
4641; GENERIC-NEXT:    rts16
4642; GENERIC-NEXT:  .LBB96_2: # %label2
4643; GENERIC-NEXT:    movi16 a0, 0
4644; GENERIC-NEXT:    addi16 sp, sp, 4
4645; GENERIC-NEXT:    rts16
4646; CHECK-UGTXT:    icmpu32 a0, a1, a0
4647; CHECK-UGTXT:    rts16
4648entry:
4649  %icmp = icmp uge i8 %y, %x
4650  br i1 %icmp, label %label1, label %label2
4651label1:
4652  ret i8 1
4653label2:
4654  ret i8 0
4655}
4656
4657define i8 @brRI_i8_uge(i8 %x) {
4658; CHECK-LABEL: brRI_i8_uge:
4659; CHECK:       # %bb.0: # %entry
4660; CHECK-NEXT:    zextb16 a0, a0
4661; CHECK-NEXT:    cmphsi16 a0, 10
4662; CHECK-NEXT:    bf32 .LBB97_2
4663; CHECK-NEXT:  # %bb.1: # %label1
4664; CHECK-NEXT:    movi16 a0, 1
4665; CHECK-NEXT:    rts16
4666; CHECK-NEXT:  .LBB97_2: # %label2
4667; CHECK-NEXT:    movi16 a0, 0
4668; CHECK-NEXT:    rts16
4669;
4670; GENERIC-LABEL: brRI_i8_uge:
4671; GENERIC:       # %bb.0: # %entry
4672; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4673; GENERIC-NEXT:    subi16 sp, sp, 4
4674; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4675; GENERIC-NEXT:    movi16 a1, 255
4676; GENERIC-NEXT:    and16 a1, a0
4677; GENERIC-NEXT:    cmphsi16 a1, 10
4678; GENERIC-NEXT:    bf16 .LBB97_2
4679; GENERIC-NEXT:  # %bb.1: # %label1
4680; GENERIC-NEXT:    movi16 a0, 1
4681; GENERIC-NEXT:    addi16 sp, sp, 4
4682; GENERIC-NEXT:    rts16
4683; GENERIC-NEXT:  .LBB97_2: # %label2
4684; GENERIC-NEXT:    movi16 a0, 0
4685; GENERIC-NEXT:    addi16 sp, sp, 4
4686; GENERIC-NEXT:    rts16
4687; CHECK-UGTXT:    icmpu32 a0, a1, a0
4688; CHECK-UGTXT:    rts16
4689entry:
4690  %icmp = icmp uge i8 %x, 10
4691  br i1 %icmp, label %label1, label %label2
4692label1:
4693  ret i8 1
4694label2:
4695  ret i8 0
4696}
4697
4698;ULT
4699define i8 @brRR_i8_ult(i8 %x, i8 %y) {
4700; CHECK-LABEL: brRR_i8_ult:
4701; CHECK:       # %bb.0: # %entry
4702; CHECK-NEXT:    zextb16 a0, a0
4703; CHECK-NEXT:    zextb16 a1, a1
4704; CHECK-NEXT:    cmphs16 a1, a0
4705; CHECK-NEXT:    bt32 .LBB98_2
4706; CHECK-NEXT:  # %bb.1: # %label1
4707; CHECK-NEXT:    movi16 a0, 1
4708; CHECK-NEXT:    rts16
4709; CHECK-NEXT:  .LBB98_2: # %label2
4710; CHECK-NEXT:    movi16 a0, 0
4711; CHECK-NEXT:    rts16
4712;
4713; GENERIC-LABEL: brRR_i8_ult:
4714; GENERIC:       # %bb.0: # %entry
4715; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4716; GENERIC-NEXT:    subi16 sp, sp, 4
4717; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4718; GENERIC-NEXT:    movi16 a2, 255
4719; GENERIC-NEXT:    and16 a0, a2
4720; GENERIC-NEXT:    and16 a1, a2
4721; GENERIC-NEXT:    cmphs16 a1, a0
4722; GENERIC-NEXT:    bt16 .LBB98_2
4723; GENERIC-NEXT:  # %bb.1: # %label1
4724; GENERIC-NEXT:    movi16 a0, 1
4725; GENERIC-NEXT:    addi16 sp, sp, 4
4726; GENERIC-NEXT:    rts16
4727; GENERIC-NEXT:  .LBB98_2: # %label2
4728; GENERIC-NEXT:    movi16 a0, 0
4729; GENERIC-NEXT:    addi16 sp, sp, 4
4730; GENERIC-NEXT:    rts16
4731; CHECK-UGTXT:    icmpu32 a0, a1, a0
4732; CHECK-UGTXT:    rts16
4733entry:
4734  %icmp = icmp ult i8 %y, %x
4735  br i1 %icmp, label %label1, label %label2
4736label1:
4737  ret i8 1
4738label2:
4739  ret i8 0
4740}
4741
4742define i8 @brRI_i8_ult(i8 %x) {
4743; CHECK-LABEL: brRI_i8_ult:
4744; CHECK:       # %bb.0: # %entry
4745; CHECK-NEXT:    zextb16 a0, a0
4746; CHECK-NEXT:    movi16 a1, 9
4747; CHECK-NEXT:    cmphs16 a1, a0
4748; CHECK-NEXT:    bf32 .LBB99_2
4749; CHECK-NEXT:  # %bb.1: # %label1
4750; CHECK-NEXT:    movi16 a0, 1
4751; CHECK-NEXT:    rts16
4752; CHECK-NEXT:  .LBB99_2: # %label2
4753; CHECK-NEXT:    movi16 a0, 0
4754; CHECK-NEXT:    rts16
4755;
4756; GENERIC-LABEL: brRI_i8_ult:
4757; GENERIC:       # %bb.0: # %entry
4758; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4759; GENERIC-NEXT:    subi16 sp, sp, 4
4760; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4761; GENERIC-NEXT:    movi16 a1, 255
4762; GENERIC-NEXT:    and16 a1, a0
4763; GENERIC-NEXT:    movi16 a0, 9
4764; GENERIC-NEXT:    cmphs16 a0, a1
4765; GENERIC-NEXT:    bf16 .LBB99_2
4766; GENERIC-NEXT:  # %bb.1: # %label1
4767; GENERIC-NEXT:    movi16 a0, 1
4768; GENERIC-NEXT:    addi16 sp, sp, 4
4769; GENERIC-NEXT:    rts16
4770; GENERIC-NEXT:  .LBB99_2: # %label2
4771; GENERIC-NEXT:    movi16 a0, 0
4772; GENERIC-NEXT:    addi16 sp, sp, 4
4773; GENERIC-NEXT:    rts16
4774; CHECK-UGTXT:    icmpu32 a0, a1, a0
4775; CHECK-UGTXT:    rts16
4776entry:
4777  %icmp = icmp ult i8 %x, 10
4778  br i1 %icmp, label %label1, label %label2
4779label1:
4780  ret i8 1
4781label2:
4782  ret i8 0
4783}
4784
4785
4786;ULE
4787define i8 @brRR_i8_ule(i8 %x, i8 %y) {
4788; CHECK-LABEL: brRR_i8_ule:
4789; CHECK:       # %bb.0: # %entry
4790; CHECK-NEXT:    zextb16 a1, a1
4791; CHECK-NEXT:    zextb16 a0, a0
4792; CHECK-NEXT:    cmphs16 a0, a1
4793; CHECK-NEXT:    bf32 .LBB100_2
4794; CHECK-NEXT:  # %bb.1: # %label1
4795; CHECK-NEXT:    movi16 a0, 1
4796; CHECK-NEXT:    rts16
4797; CHECK-NEXT:  .LBB100_2: # %label2
4798; CHECK-NEXT:    movi16 a0, 0
4799; CHECK-NEXT:    rts16
4800;
4801; GENERIC-LABEL: brRR_i8_ule:
4802; GENERIC:       # %bb.0: # %entry
4803; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4804; GENERIC-NEXT:    subi16 sp, sp, 4
4805; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4806; GENERIC-NEXT:    movi16 a2, 255
4807; GENERIC-NEXT:    and16 a1, a2
4808; GENERIC-NEXT:    and16 a0, a2
4809; GENERIC-NEXT:    cmphs16 a0, a1
4810; GENERIC-NEXT:    bf16 .LBB100_2
4811; GENERIC-NEXT:  # %bb.1: # %label1
4812; GENERIC-NEXT:    movi16 a0, 1
4813; GENERIC-NEXT:    addi16 sp, sp, 4
4814; GENERIC-NEXT:    rts16
4815; GENERIC-NEXT:  .LBB100_2: # %label2
4816; GENERIC-NEXT:    movi16 a0, 0
4817; GENERIC-NEXT:    addi16 sp, sp, 4
4818; GENERIC-NEXT:    rts16
4819; CHECK-UGTXT:    icmpu32 a0, a1, a0
4820; CHECK-UGTXT:    rts16
4821entry:
4822  %icmp = icmp ule i8 %y, %x
4823  br i1 %icmp, label %label1, label %label2
4824label1:
4825  ret i8 1
4826label2:
4827  ret i8 0
4828}
4829
4830define i8 @brRI_i8_ule(i8 %x) {
4831; CHECK-LABEL: brRI_i8_ule:
4832; CHECK:       # %bb.0: # %entry
4833; CHECK-NEXT:    zextb16 a0, a0
4834; CHECK-NEXT:    movi16 a1, 10
4835; CHECK-NEXT:    cmphs16 a1, a0
4836; CHECK-NEXT:    bf32 .LBB101_2
4837; CHECK-NEXT:  # %bb.1: # %label1
4838; CHECK-NEXT:    movi16 a0, 1
4839; CHECK-NEXT:    rts16
4840; CHECK-NEXT:  .LBB101_2: # %label2
4841; CHECK-NEXT:    movi16 a0, 0
4842; CHECK-NEXT:    rts16
4843;
4844; GENERIC-LABEL: brRI_i8_ule:
4845; GENERIC:       # %bb.0: # %entry
4846; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4847; GENERIC-NEXT:    subi16 sp, sp, 4
4848; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4849; GENERIC-NEXT:    movi16 a1, 255
4850; GENERIC-NEXT:    and16 a1, a0
4851; GENERIC-NEXT:    movi16 a0, 10
4852; GENERIC-NEXT:    cmphs16 a0, a1
4853; GENERIC-NEXT:    bf16 .LBB101_2
4854; GENERIC-NEXT:  # %bb.1: # %label1
4855; GENERIC-NEXT:    movi16 a0, 1
4856; GENERIC-NEXT:    addi16 sp, sp, 4
4857; GENERIC-NEXT:    rts16
4858; GENERIC-NEXT:  .LBB101_2: # %label2
4859; GENERIC-NEXT:    movi16 a0, 0
4860; GENERIC-NEXT:    addi16 sp, sp, 4
4861; GENERIC-NEXT:    rts16
4862; CHECK-UGTXT:    icmpu32 a0, a1, a0
4863; CHECK-UGTXT:    rts16
4864entry:
4865  %icmp = icmp ule i8 %x, 10
4866  br i1 %icmp, label %label1, label %label2
4867label1:
4868  ret i8 1
4869label2:
4870  ret i8 0
4871}
4872
4873define i8 @brR0_i8_ule(i8 %x) {
4874; CHECK-LABEL: brR0_i8_ule:
4875; CHECK:       # %bb.0: # %entry
4876; CHECK-NEXT:    zextb16 a0, a0
4877; CHECK-NEXT:    bnez32 a0, .LBB102_2
4878; CHECK-NEXT:  # %bb.1: # %label1
4879; CHECK-NEXT:    movi16 a0, 1
4880; CHECK-NEXT:    rts16
4881; CHECK-NEXT:  .LBB102_2: # %label2
4882; CHECK-NEXT:    movi16 a0, 0
4883; CHECK-NEXT:    rts16
4884;
4885; GENERIC-LABEL: brR0_i8_ule:
4886; GENERIC:       # %bb.0: # %entry
4887; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4888; GENERIC-NEXT:    subi16 sp, sp, 4
4889; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4890; GENERIC-NEXT:    movi16 a1, 255
4891; GENERIC-NEXT:    and16 a1, a0
4892; GENERIC-NEXT:    cmpnei16 a1, 0
4893; GENERIC-NEXT:    bt16 .LBB102_2
4894; GENERIC-NEXT:  # %bb.1: # %label1
4895; GENERIC-NEXT:    movi16 a0, 1
4896; GENERIC-NEXT:    addi16 sp, sp, 4
4897; GENERIC-NEXT:    rts16
4898; GENERIC-NEXT:  .LBB102_2: # %label2
4899; GENERIC-NEXT:    movi16 a0, 0
4900; GENERIC-NEXT:    addi16 sp, sp, 4
4901; GENERIC-NEXT:    rts16
4902; CHECK-UGTXT:    icmpu32 a0, a1, a0
4903; CHECK-UGTXT:    rts16
4904entry:
4905  %icmp = icmp ule i8 %x, 0
4906  br i1 %icmp, label %label1, label %label2
4907label1:
4908  ret i8 1
4909label2:
4910  ret i8 0
4911}
4912
4913;SGT
4914define i8 @brRR_i8_sgt(i8 %x, i8 %y) {
4915; CHECK-LABEL: brRR_i8_sgt:
4916; CHECK:       # %bb.0: # %entry
4917; CHECK-NEXT:    sextb16 a1, a1
4918; CHECK-NEXT:    sextb16 a0, a0
4919; CHECK-NEXT:    cmplt16 a0, a1
4920; CHECK-NEXT:    bf32 .LBB103_2
4921; CHECK-NEXT:  # %bb.1: # %label1
4922; CHECK-NEXT:    movi16 a0, 1
4923; CHECK-NEXT:    rts16
4924; CHECK-NEXT:  .LBB103_2: # %label2
4925; CHECK-NEXT:    movi16 a0, 0
4926; CHECK-NEXT:    rts16
4927;
4928; GENERIC-LABEL: brRR_i8_sgt:
4929; GENERIC:       # %bb.0: # %entry
4930; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4931; GENERIC-NEXT:    subi16 sp, sp, 4
4932; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4933; GENERIC-NEXT:    sextb16 a1, a1
4934; GENERIC-NEXT:    sextb16 a0, a0
4935; GENERIC-NEXT:    cmplt16 a0, a1
4936; GENERIC-NEXT:    bf16 .LBB103_2
4937; GENERIC-NEXT:  # %bb.1: # %label1
4938; GENERIC-NEXT:    movi16 a0, 1
4939; GENERIC-NEXT:    addi16 sp, sp, 4
4940; GENERIC-NEXT:    rts16
4941; GENERIC-NEXT:  .LBB103_2: # %label2
4942; GENERIC-NEXT:    movi16 a0, 0
4943; GENERIC-NEXT:    addi16 sp, sp, 4
4944; GENERIC-NEXT:    rts16
4945; CHECK-UGTXT:    icmpu32 a0, a1, a0
4946; CHECK-UGTXT:    rts16
4947entry:
4948  %icmp = icmp sgt i8 %y, %x
4949  br i1 %icmp, label %label1, label %label2
4950label1:
4951  ret i8 1
4952label2:
4953  ret i8 0
4954}
4955
4956define i8 @brRI_i8_sgt(i8 %x) {
4957; CHECK-LABEL: brRI_i8_sgt:
4958; CHECK:       # %bb.0: # %entry
4959; CHECK-NEXT:    sextb16 a0, a0
4960; CHECK-NEXT:    cmplti16 a0, 11
4961; CHECK-NEXT:    bt32 .LBB104_2
4962; CHECK-NEXT:  # %bb.1: # %label1
4963; CHECK-NEXT:    movi16 a0, 1
4964; CHECK-NEXT:    rts16
4965; CHECK-NEXT:  .LBB104_2: # %label2
4966; CHECK-NEXT:    movi16 a0, 0
4967; CHECK-NEXT:    rts16
4968;
4969; GENERIC-LABEL: brRI_i8_sgt:
4970; GENERIC:       # %bb.0: # %entry
4971; GENERIC-NEXT:    .cfi_def_cfa_offset 0
4972; GENERIC-NEXT:    subi16 sp, sp, 4
4973; GENERIC-NEXT:    .cfi_def_cfa_offset 4
4974; GENERIC-NEXT:    sextb16 a0, a0
4975; GENERIC-NEXT:    cmplti16 a0, 11
4976; GENERIC-NEXT:    bt16 .LBB104_2
4977; GENERIC-NEXT:  # %bb.1: # %label1
4978; GENERIC-NEXT:    movi16 a0, 1
4979; GENERIC-NEXT:    addi16 sp, sp, 4
4980; GENERIC-NEXT:    rts16
4981; GENERIC-NEXT:  .LBB104_2: # %label2
4982; GENERIC-NEXT:    movi16 a0, 0
4983; GENERIC-NEXT:    addi16 sp, sp, 4
4984; GENERIC-NEXT:    rts16
4985; CHECK-UGTXT:    icmpu32 a0, a1, a0
4986; CHECK-UGTXT:    rts16
4987entry:
4988  %icmp = icmp sgt i8 %x, 10
4989  br i1 %icmp, label %label1, label %label2
4990label1:
4991  ret i8 1
4992label2:
4993  ret i8 0
4994}
4995
4996define i8 @brR0_i8_sgt(i8 %x) {
4997; CHECK-LABEL: brR0_i8_sgt:
4998; CHECK:       # %bb.0: # %entry
4999; CHECK-NEXT:    sextb16 a0, a0
5000; CHECK-NEXT:    cmplti16 a0, 1
5001; CHECK-NEXT:    bt32 .LBB105_2
5002; CHECK-NEXT:  # %bb.1: # %label1
5003; CHECK-NEXT:    movi16 a0, 1
5004; CHECK-NEXT:    rts16
5005; CHECK-NEXT:  .LBB105_2: # %label2
5006; CHECK-NEXT:    movi16 a0, 0
5007; CHECK-NEXT:    rts16
5008;
5009; GENERIC-LABEL: brR0_i8_sgt:
5010; GENERIC:       # %bb.0: # %entry
5011; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5012; GENERIC-NEXT:    subi16 sp, sp, 4
5013; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5014; GENERIC-NEXT:    sextb16 a0, a0
5015; GENERIC-NEXT:    cmplti16 a0, 1
5016; GENERIC-NEXT:    bt16 .LBB105_2
5017; GENERIC-NEXT:  # %bb.1: # %label1
5018; GENERIC-NEXT:    movi16 a0, 1
5019; GENERIC-NEXT:    addi16 sp, sp, 4
5020; GENERIC-NEXT:    rts16
5021; GENERIC-NEXT:  .LBB105_2: # %label2
5022; GENERIC-NEXT:    movi16 a0, 0
5023; GENERIC-NEXT:    addi16 sp, sp, 4
5024; GENERIC-NEXT:    rts16
5025; CHECK-UGTXT:    icmpu32 a0, a1, a0
5026; CHECK-UGTXT:    rts16
5027entry:
5028  %icmp = icmp sgt i8 %x, 0
5029  br i1 %icmp, label %label1, label %label2
5030label1:
5031  ret i8 1
5032label2:
5033  ret i8 0
5034}
5035
5036;SGE
5037define i8 @brRR_i8_sge(i8 %x, i8 %y) {
5038; CHECK-LABEL: brRR_i8_sge:
5039; CHECK:       # %bb.0: # %entry
5040; CHECK-NEXT:    sextb16 a0, a0
5041; CHECK-NEXT:    sextb16 a1, a1
5042; CHECK-NEXT:    cmplt16 a1, a0
5043; CHECK-NEXT:    bt32 .LBB106_2
5044; CHECK-NEXT:  # %bb.1: # %label1
5045; CHECK-NEXT:    movi16 a0, 1
5046; CHECK-NEXT:    rts16
5047; CHECK-NEXT:  .LBB106_2: # %label2
5048; CHECK-NEXT:    movi16 a0, 0
5049; CHECK-NEXT:    rts16
5050;
5051; GENERIC-LABEL: brRR_i8_sge:
5052; GENERIC:       # %bb.0: # %entry
5053; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5054; GENERIC-NEXT:    subi16 sp, sp, 4
5055; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5056; GENERIC-NEXT:    sextb16 a0, a0
5057; GENERIC-NEXT:    sextb16 a1, a1
5058; GENERIC-NEXT:    cmplt16 a1, a0
5059; GENERIC-NEXT:    bt16 .LBB106_2
5060; GENERIC-NEXT:  # %bb.1: # %label1
5061; GENERIC-NEXT:    movi16 a0, 1
5062; GENERIC-NEXT:    addi16 sp, sp, 4
5063; GENERIC-NEXT:    rts16
5064; GENERIC-NEXT:  .LBB106_2: # %label2
5065; GENERIC-NEXT:    movi16 a0, 0
5066; GENERIC-NEXT:    addi16 sp, sp, 4
5067; GENERIC-NEXT:    rts16
5068; CHECK-UGTXT:    icmpu32 a0, a1, a0
5069; CHECK-UGTXT:    rts16
5070entry:
5071  %icmp = icmp sge i8 %y, %x
5072  br i1 %icmp, label %label1, label %label2
5073label1:
5074  ret i8 1
5075label2:
5076  ret i8 0
5077}
5078
5079define i8 @brRI_i8_sge(i8 %x) {
5080; CHECK-LABEL: brRI_i8_sge:
5081; CHECK:       # %bb.0: # %entry
5082; CHECK-NEXT:    sextb16 a0, a0
5083; CHECK-NEXT:    cmplti16 a0, 10
5084; CHECK-NEXT:    bt32 .LBB107_2
5085; CHECK-NEXT:  # %bb.1: # %label1
5086; CHECK-NEXT:    movi16 a0, 1
5087; CHECK-NEXT:    rts16
5088; CHECK-NEXT:  .LBB107_2: # %label2
5089; CHECK-NEXT:    movi16 a0, 0
5090; CHECK-NEXT:    rts16
5091;
5092; GENERIC-LABEL: brRI_i8_sge:
5093; GENERIC:       # %bb.0: # %entry
5094; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5095; GENERIC-NEXT:    subi16 sp, sp, 4
5096; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5097; GENERIC-NEXT:    sextb16 a0, a0
5098; GENERIC-NEXT:    cmplti16 a0, 10
5099; GENERIC-NEXT:    bt16 .LBB107_2
5100; GENERIC-NEXT:  # %bb.1: # %label1
5101; GENERIC-NEXT:    movi16 a0, 1
5102; GENERIC-NEXT:    addi16 sp, sp, 4
5103; GENERIC-NEXT:    rts16
5104; GENERIC-NEXT:  .LBB107_2: # %label2
5105; GENERIC-NEXT:    movi16 a0, 0
5106; GENERIC-NEXT:    addi16 sp, sp, 4
5107; GENERIC-NEXT:    rts16
5108; CHECK-UGTXT:    icmpu32 a0, a1, a0
5109; CHECK-UGTXT:    rts16
5110entry:
5111  %icmp = icmp sge i8 %x, 10
5112  br i1 %icmp, label %label1, label %label2
5113label1:
5114  ret i8 1
5115label2:
5116  ret i8 0
5117}
5118
5119define i8 @brR0_i8_sge(i8 %x) {
5120; CHECK-LABEL: brR0_i8_sge:
5121; CHECK:       # %bb.0: # %entry
5122; CHECK-NEXT:    sextb16 a0, a0
5123; CHECK-NEXT:    blz32 a0, .LBB108_2
5124; CHECK-NEXT:  # %bb.1: # %label1
5125; CHECK-NEXT:    movi16 a0, 1
5126; CHECK-NEXT:    rts16
5127; CHECK-NEXT:  .LBB108_2: # %label2
5128; CHECK-NEXT:    movi16 a0, 0
5129; CHECK-NEXT:    rts16
5130;
5131; GENERIC-LABEL: brR0_i8_sge:
5132; GENERIC:       # %bb.0: # %entry
5133; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5134; GENERIC-NEXT:    subi16 sp, sp, 4
5135; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5136; GENERIC-NEXT:    sextb16 a0, a0
5137; GENERIC-NEXT:    movi16 a1, 0
5138; GENERIC-NEXT:    cmplt16 a0, a1
5139; GENERIC-NEXT:    bt16 .LBB108_2
5140; GENERIC-NEXT:  # %bb.1: # %label1
5141; GENERIC-NEXT:    movi16 a0, 1
5142; GENERIC-NEXT:    addi16 sp, sp, 4
5143; GENERIC-NEXT:    rts16
5144; GENERIC-NEXT:  .LBB108_2: # %label2
5145; GENERIC-NEXT:    movi16 a0, 0
5146; GENERIC-NEXT:    addi16 sp, sp, 4
5147; GENERIC-NEXT:    rts16
5148; CHECK-UGTXT:    icmpu32 a0, a1, a0
5149; CHECK-UGTXT:    rts16
5150entry:
5151  %icmp = icmp sge i8 %x, 0
5152  br i1 %icmp, label %label1, label %label2
5153label1:
5154  ret i8 1
5155label2:
5156  ret i8 0
5157}
5158
5159;SLT
5160define i8 @brRR_i8_slt(i8 %x, i8 %y) {
5161; CHECK-LABEL: brRR_i8_slt:
5162; CHECK:       # %bb.0: # %entry
5163; CHECK-NEXT:    sextb16 a0, a0
5164; CHECK-NEXT:    sextb16 a1, a1
5165; CHECK-NEXT:    cmplt16 a1, a0
5166; CHECK-NEXT:    bf32 .LBB109_2
5167; CHECK-NEXT:  # %bb.1: # %label1
5168; CHECK-NEXT:    movi16 a0, 1
5169; CHECK-NEXT:    rts16
5170; CHECK-NEXT:  .LBB109_2: # %label2
5171; CHECK-NEXT:    movi16 a0, 0
5172; CHECK-NEXT:    rts16
5173;
5174; GENERIC-LABEL: brRR_i8_slt:
5175; GENERIC:       # %bb.0: # %entry
5176; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5177; GENERIC-NEXT:    subi16 sp, sp, 4
5178; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5179; GENERIC-NEXT:    sextb16 a0, a0
5180; GENERIC-NEXT:    sextb16 a1, a1
5181; GENERIC-NEXT:    cmplt16 a1, a0
5182; GENERIC-NEXT:    bf16 .LBB109_2
5183; GENERIC-NEXT:  # %bb.1: # %label1
5184; GENERIC-NEXT:    movi16 a0, 1
5185; GENERIC-NEXT:    addi16 sp, sp, 4
5186; GENERIC-NEXT:    rts16
5187; GENERIC-NEXT:  .LBB109_2: # %label2
5188; GENERIC-NEXT:    movi16 a0, 0
5189; GENERIC-NEXT:    addi16 sp, sp, 4
5190; GENERIC-NEXT:    rts16
5191; CHECK-UGTXT:    icmpu32 a0, a1, a0
5192; CHECK-UGTXT:    rts16
5193entry:
5194  %icmp = icmp slt i8 %y, %x
5195  br i1 %icmp, label %label1, label %label2
5196label1:
5197  ret i8 1
5198label2:
5199  ret i8 0
5200}
5201
5202define i8 @brRI_i8_slt(i8 %x) {
5203; CHECK-LABEL: brRI_i8_slt:
5204; CHECK:       # %bb.0: # %entry
5205; CHECK-NEXT:    sextb16 a0, a0
5206; CHECK-NEXT:    movi16 a1, 9
5207; CHECK-NEXT:    cmplt16 a1, a0
5208; CHECK-NEXT:    bt32 .LBB110_2
5209; CHECK-NEXT:  # %bb.1: # %label1
5210; CHECK-NEXT:    movi16 a0, 1
5211; CHECK-NEXT:    rts16
5212; CHECK-NEXT:  .LBB110_2: # %label2
5213; CHECK-NEXT:    movi16 a0, 0
5214; CHECK-NEXT:    rts16
5215;
5216; GENERIC-LABEL: brRI_i8_slt:
5217; GENERIC:       # %bb.0: # %entry
5218; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5219; GENERIC-NEXT:    subi16 sp, sp, 4
5220; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5221; GENERIC-NEXT:    sextb16 a0, a0
5222; GENERIC-NEXT:    movi16 a1, 9
5223; GENERIC-NEXT:    cmplt16 a1, a0
5224; GENERIC-NEXT:    bt16 .LBB110_2
5225; GENERIC-NEXT:  # %bb.1: # %label1
5226; GENERIC-NEXT:    movi16 a0, 1
5227; GENERIC-NEXT:    addi16 sp, sp, 4
5228; GENERIC-NEXT:    rts16
5229; GENERIC-NEXT:  .LBB110_2: # %label2
5230; GENERIC-NEXT:    movi16 a0, 0
5231; GENERIC-NEXT:    addi16 sp, sp, 4
5232; GENERIC-NEXT:    rts16
5233; CHECK-UGTXT:    icmpu32 a0, a1, a0
5234; CHECK-UGTXT:    rts16
5235entry:
5236  %icmp = icmp slt i8 %x, 10
5237  br i1 %icmp, label %label1, label %label2
5238label1:
5239  ret i8 1
5240label2:
5241  ret i8 0
5242}
5243
5244define i8 @brR0_i8_slt(i8 %x) {
5245; CHECK-LABEL: brR0_i8_slt:
5246; CHECK:       # %bb.0: # %entry
5247; CHECK-NEXT:    sextb16 a0, a0
5248; CHECK-NEXT:    movih32 a1, 65535
5249; CHECK-NEXT:    ori32 a1, a1, 65535
5250; CHECK-NEXT:    cmplt16 a1, a0
5251; CHECK-NEXT:    bf32 .LBB111_2
5252; CHECK-NEXT:  # %bb.1: # %label2
5253; CHECK-NEXT:    movi16 a0, 0
5254; CHECK-NEXT:    rts16
5255; CHECK-NEXT:  .LBB111_2: # %label1
5256; CHECK-NEXT:    movi16 a0, 1
5257; CHECK-NEXT:    rts16
5258;
5259; GENERIC-LABEL: brR0_i8_slt:
5260; GENERIC:       # %bb.0: # %entry
5261; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5262; GENERIC-NEXT:    subi16 sp, sp, 4
5263; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5264; GENERIC-NEXT:    sextb16 a0, a0
5265; GENERIC-NEXT:    movi16 a1, 255
5266; GENERIC-NEXT:    lsli16 a2, a1, 24
5267; GENERIC-NEXT:    lsli16 a3, a1, 16
5268; GENERIC-NEXT:    or16 a3, a2
5269; GENERIC-NEXT:    lsli16 a2, a1, 8
5270; GENERIC-NEXT:    or16 a2, a3
5271; GENERIC-NEXT:    or16 a2, a1
5272; GENERIC-NEXT:    cmplt16 a2, a0
5273; GENERIC-NEXT:    bf16 .LBB111_2
5274; GENERIC-NEXT:  # %bb.1: # %label2
5275; GENERIC-NEXT:    movi16 a0, 0
5276; GENERIC-NEXT:    addi16 sp, sp, 4
5277; GENERIC-NEXT:    rts16
5278; GENERIC-NEXT:  .LBB111_2: # %label1
5279; GENERIC-NEXT:    movi16 a0, 1
5280; GENERIC-NEXT:    addi16 sp, sp, 4
5281; GENERIC-NEXT:    rts16
5282; CHECK-UGTXT:    icmpu32 a0, a1, a0
5283; CHECK-UGTXT:    rts16
5284entry:
5285  %icmp = icmp slt i8 %x, 0
5286  br i1 %icmp, label %label1, label %label2
5287label1:
5288  ret i8 1
5289label2:
5290  ret i8 0
5291}
5292
5293;SLE
5294define i8 @brRR_i8_sle(i8 %x, i8 %y) {
5295; CHECK-LABEL: brRR_i8_sle:
5296; CHECK:       # %bb.0: # %entry
5297; CHECK-NEXT:    sextb16 a1, a1
5298; CHECK-NEXT:    sextb16 a0, a0
5299; CHECK-NEXT:    cmplt16 a0, a1
5300; CHECK-NEXT:    bt32 .LBB112_2
5301; CHECK-NEXT:  # %bb.1: # %label1
5302; CHECK-NEXT:    movi16 a0, 1
5303; CHECK-NEXT:    rts16
5304; CHECK-NEXT:  .LBB112_2: # %label2
5305; CHECK-NEXT:    movi16 a0, 0
5306; CHECK-NEXT:    rts16
5307;
5308; GENERIC-LABEL: brRR_i8_sle:
5309; GENERIC:       # %bb.0: # %entry
5310; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5311; GENERIC-NEXT:    subi16 sp, sp, 4
5312; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5313; GENERIC-NEXT:    sextb16 a1, a1
5314; GENERIC-NEXT:    sextb16 a0, a0
5315; GENERIC-NEXT:    cmplt16 a0, a1
5316; GENERIC-NEXT:    bt16 .LBB112_2
5317; GENERIC-NEXT:  # %bb.1: # %label1
5318; GENERIC-NEXT:    movi16 a0, 1
5319; GENERIC-NEXT:    addi16 sp, sp, 4
5320; GENERIC-NEXT:    rts16
5321; GENERIC-NEXT:  .LBB112_2: # %label2
5322; GENERIC-NEXT:    movi16 a0, 0
5323; GENERIC-NEXT:    addi16 sp, sp, 4
5324; GENERIC-NEXT:    rts16
5325; CHECK-UGTXT:    icmpu32 a0, a1, a0
5326; CHECK-UGTXT:    rts16
5327entry:
5328  %icmp = icmp sle i8 %y, %x
5329  br i1 %icmp, label %label1, label %label2
5330label1:
5331  ret i8 1
5332label2:
5333  ret i8 0
5334}
5335
5336define i8 @brRI_i8_sle(i8 %x) {
5337; CHECK-LABEL: brRI_i8_sle:
5338; CHECK:       # %bb.0: # %entry
5339; CHECK-NEXT:    sextb16 a0, a0
5340; CHECK-NEXT:    movi16 a1, 10
5341; CHECK-NEXT:    cmplt16 a1, a0
5342; CHECK-NEXT:    bt32 .LBB113_2
5343; CHECK-NEXT:  # %bb.1: # %label1
5344; CHECK-NEXT:    movi16 a0, 1
5345; CHECK-NEXT:    rts16
5346; CHECK-NEXT:  .LBB113_2: # %label2
5347; CHECK-NEXT:    movi16 a0, 0
5348; CHECK-NEXT:    rts16
5349;
5350; GENERIC-LABEL: brRI_i8_sle:
5351; GENERIC:       # %bb.0: # %entry
5352; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5353; GENERIC-NEXT:    subi16 sp, sp, 4
5354; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5355; GENERIC-NEXT:    sextb16 a0, a0
5356; GENERIC-NEXT:    movi16 a1, 10
5357; GENERIC-NEXT:    cmplt16 a1, a0
5358; GENERIC-NEXT:    bt16 .LBB113_2
5359; GENERIC-NEXT:  # %bb.1: # %label1
5360; GENERIC-NEXT:    movi16 a0, 1
5361; GENERIC-NEXT:    addi16 sp, sp, 4
5362; GENERIC-NEXT:    rts16
5363; GENERIC-NEXT:  .LBB113_2: # %label2
5364; GENERIC-NEXT:    movi16 a0, 0
5365; GENERIC-NEXT:    addi16 sp, sp, 4
5366; GENERIC-NEXT:    rts16
5367; CHECK-UGTXT:    icmpu32 a0, a1, a0
5368; CHECK-UGTXT:    rts16
5369entry:
5370  %icmp = icmp sle i8 %x, 10
5371  br i1 %icmp, label %label1, label %label2
5372label1:
5373  ret i8 1
5374label2:
5375  ret i8 0
5376}
5377
5378define i8 @brR0_i8_sle(i8 %x) {
5379; CHECK-LABEL: brR0_i8_sle:
5380; CHECK:       # %bb.0: # %entry
5381; CHECK-NEXT:    sextb16 a0, a0
5382; CHECK-NEXT:    bhz32 a0, .LBB114_2
5383; CHECK-NEXT:  # %bb.1: # %label1
5384; CHECK-NEXT:    movi16 a0, 1
5385; CHECK-NEXT:    rts16
5386; CHECK-NEXT:  .LBB114_2: # %label2
5387; CHECK-NEXT:    movi16 a0, 0
5388; CHECK-NEXT:    rts16
5389;
5390; GENERIC-LABEL: brR0_i8_sle:
5391; GENERIC:       # %bb.0: # %entry
5392; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5393; GENERIC-NEXT:    subi16 sp, sp, 4
5394; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5395; GENERIC-NEXT:    sextb16 a0, a0
5396; GENERIC-NEXT:    movi16 a1, 0
5397; GENERIC-NEXT:    cmplt16 a1, a0
5398; GENERIC-NEXT:    bt16 .LBB114_2
5399; GENERIC-NEXT:  # %bb.1: # %label1
5400; GENERIC-NEXT:    movi16 a0, 1
5401; GENERIC-NEXT:    addi16 sp, sp, 4
5402; GENERIC-NEXT:    rts16
5403; GENERIC-NEXT:  .LBB114_2: # %label2
5404; GENERIC-NEXT:    movi16 a0, 0
5405; GENERIC-NEXT:    addi16 sp, sp, 4
5406; GENERIC-NEXT:    rts16
5407; CHECK-UGTXT:    icmpu32 a0, a1, a0
5408; CHECK-UGTXT:    rts16
5409entry:
5410  %icmp = icmp sle i8 %x, 0
5411  br i1 %icmp, label %label1, label %label2
5412label1:
5413  ret i8 1
5414label2:
5415  ret i8 0
5416}
5417
5418
5419define i8 @brCBit_i8(i1 %c) {
5420; CHECK-LABEL: brCBit_i8:
5421; CHECK:       # %bb.0: # %entry
5422; CHECK-NEXT:    andi32 a0, a0, 1
5423; CHECK-NEXT:    bez32 a0, .LBB115_2
5424; CHECK-NEXT:  # %bb.1: # %label1
5425; CHECK-NEXT:    movi16 a0, 1
5426; CHECK-NEXT:    rts16
5427; CHECK-NEXT:  .LBB115_2: # %label2
5428; CHECK-NEXT:    movi16 a0, 0
5429; CHECK-NEXT:    rts16
5430;
5431; GENERIC-LABEL: brCBit_i8:
5432; GENERIC:       # %bb.0: # %entry
5433; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5434; GENERIC-NEXT:    subi16 sp, sp, 4
5435; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5436; GENERIC-NEXT:    movi16 a1, 1
5437; GENERIC-NEXT:    and16 a1, a0
5438; GENERIC-NEXT:    cmpnei16 a1, 0
5439; GENERIC-NEXT:    bf16 .LBB115_2
5440; GENERIC-NEXT:  # %bb.1: # %label1
5441; GENERIC-NEXT:    movi16 a0, 1
5442; GENERIC-NEXT:    addi16 sp, sp, 4
5443; GENERIC-NEXT:    rts16
5444; GENERIC-NEXT:  .LBB115_2: # %label2
5445; GENERIC-NEXT:    movi16 a0, 0
5446; GENERIC-NEXT:    addi16 sp, sp, 4
5447; GENERIC-NEXT:    rts16
5448entry:
5449  br i1 %c, label %label1, label %label2
5450label1:
5451  ret i8 1
5452label2:
5453  ret i8 0
5454}
5455
5456
5457;EQ
5458define i1 @brRR_i1_eq(i1 %x, i1 %y) {
5459; CHECK-LABEL: brRR_i1_eq:
5460; CHECK:       # %bb.0: # %entry
5461; CHECK-NEXT:    andi32 a0, a0, 1
5462; CHECK-NEXT:    andi32 a1, a1, 1
5463; CHECK-NEXT:    cmpne16 a1, a0
5464; CHECK-NEXT:    bt32 .LBB116_2
5465; CHECK-NEXT:  # %bb.1: # %label1
5466; CHECK-NEXT:    movi16 a0, 1
5467; CHECK-NEXT:    rts16
5468; CHECK-NEXT:  .LBB116_2: # %label2
5469; CHECK-NEXT:    movi16 a0, 0
5470; CHECK-NEXT:    rts16
5471;
5472; GENERIC-LABEL: brRR_i1_eq:
5473; GENERIC:       # %bb.0: # %entry
5474; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5475; GENERIC-NEXT:    subi16 sp, sp, 4
5476; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5477; GENERIC-NEXT:    movi16 a2, 1
5478; GENERIC-NEXT:    and16 a0, a2
5479; GENERIC-NEXT:    and16 a1, a2
5480; GENERIC-NEXT:    cmpne16 a1, a0
5481; GENERIC-NEXT:    bt16 .LBB116_2
5482; GENERIC-NEXT:  # %bb.1: # %label1
5483; GENERIC-NEXT:    movi16 a0, 1
5484; GENERIC-NEXT:    addi16 sp, sp, 4
5485; GENERIC-NEXT:    rts16
5486; GENERIC-NEXT:  .LBB116_2: # %label2
5487; GENERIC-NEXT:    movi16 a0, 0
5488; GENERIC-NEXT:    addi16 sp, sp, 4
5489; GENERIC-NEXT:    rts16
5490entry:
5491  %icmp = icmp eq i1 %y, %x
5492  br i1 %icmp, label %label1, label %label2
5493label1:
5494  ret i1 1
5495label2:
5496  ret i1 0
5497}
5498
5499define i1 @brRI_i1_eq(i1 %x) {
5500; CHECK-LABEL: brRI_i1_eq:
5501; CHECK:       # %bb.0: # %entry
5502; CHECK-NEXT:    andi32 a0, a0, 1
5503; CHECK-NEXT:    btsti32 a0, 0
5504; CHECK-NEXT:    bf32 .LBB117_2
5505; CHECK-NEXT:  # %bb.1: # %label2
5506; CHECK-NEXT:    movi16 a0, 0
5507; CHECK-NEXT:    rts16
5508; CHECK-NEXT:  .LBB117_2: # %label1
5509; CHECK-NEXT:    movi16 a0, 1
5510; CHECK-NEXT:    rts16
5511;
5512; GENERIC-LABEL: brRI_i1_eq:
5513; GENERIC:       # %bb.0: # %entry
5514; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5515; GENERIC-NEXT:    subi16 sp, sp, 4
5516; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5517; GENERIC-NEXT:    movi16 a1, 1
5518; GENERIC-NEXT:    and16 a1, a0
5519; GENERIC-NEXT:    btsti16 a1, 0
5520; GENERIC-NEXT:    bf16 .LBB117_2
5521; GENERIC-NEXT:  # %bb.1: # %label2
5522; GENERIC-NEXT:    movi16 a0, 0
5523; GENERIC-NEXT:    addi16 sp, sp, 4
5524; GENERIC-NEXT:    rts16
5525; GENERIC-NEXT:  .LBB117_2: # %label1
5526; GENERIC-NEXT:    movi16 a0, 1
5527; GENERIC-NEXT:    addi16 sp, sp, 4
5528; GENERIC-NEXT:    rts16
5529entry:
5530  %icmp = icmp eq i1 %x, 10
5531  br i1 %icmp, label %label1, label %label2
5532label1:
5533  ret i1 1
5534label2:
5535  ret i1 0
5536}
5537
5538define i1 @brR0_i1_eq(i1 %x) {
5539; CHECK-LABEL: brR0_i1_eq:
5540; CHECK:       # %bb.0: # %entry
5541; CHECK-NEXT:    andi32 a0, a0, 1
5542; CHECK-NEXT:    btsti32 a0, 0
5543; CHECK-NEXT:    bf32 .LBB118_2
5544; CHECK-NEXT:  # %bb.1: # %label2
5545; CHECK-NEXT:    movi16 a0, 0
5546; CHECK-NEXT:    rts16
5547; CHECK-NEXT:  .LBB118_2: # %label1
5548; CHECK-NEXT:    movi16 a0, 1
5549; CHECK-NEXT:    rts16
5550;
5551; GENERIC-LABEL: brR0_i1_eq:
5552; GENERIC:       # %bb.0: # %entry
5553; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5554; GENERIC-NEXT:    subi16 sp, sp, 4
5555; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5556; GENERIC-NEXT:    movi16 a1, 1
5557; GENERIC-NEXT:    and16 a1, a0
5558; GENERIC-NEXT:    btsti16 a1, 0
5559; GENERIC-NEXT:    bf16 .LBB118_2
5560; GENERIC-NEXT:  # %bb.1: # %label2
5561; GENERIC-NEXT:    movi16 a0, 0
5562; GENERIC-NEXT:    addi16 sp, sp, 4
5563; GENERIC-NEXT:    rts16
5564; GENERIC-NEXT:  .LBB118_2: # %label1
5565; GENERIC-NEXT:    movi16 a0, 1
5566; GENERIC-NEXT:    addi16 sp, sp, 4
5567; GENERIC-NEXT:    rts16
5568entry:
5569  %icmp = icmp eq i1 %x, 0
5570  br i1 %icmp, label %label1, label %label2
5571label1:
5572  ret i1 1
5573label2:
5574  ret i1 0
5575}
5576
5577;NE
5578define i1 @brRR_i1_ne(i1 %x, i1 %y) {
5579; CHECK-LABEL: brRR_i1_ne:
5580; CHECK:       # %bb.0: # %entry
5581; CHECK-NEXT:    andi32 a0, a0, 1
5582; CHECK-NEXT:    andi32 a1, a1, 1
5583; CHECK-NEXT:    cmpne16 a1, a0
5584; CHECK-NEXT:    bf32 .LBB119_2
5585; CHECK-NEXT:  # %bb.1: # %label1
5586; CHECK-NEXT:    movi16 a0, 1
5587; CHECK-NEXT:    rts16
5588; CHECK-NEXT:  .LBB119_2: # %label2
5589; CHECK-NEXT:    movi16 a0, 0
5590; CHECK-NEXT:    rts16
5591;
5592; GENERIC-LABEL: brRR_i1_ne:
5593; GENERIC:       # %bb.0: # %entry
5594; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5595; GENERIC-NEXT:    subi16 sp, sp, 4
5596; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5597; GENERIC-NEXT:    movi16 a2, 1
5598; GENERIC-NEXT:    and16 a0, a2
5599; GENERIC-NEXT:    and16 a1, a2
5600; GENERIC-NEXT:    cmpne16 a1, a0
5601; GENERIC-NEXT:    bf16 .LBB119_2
5602; GENERIC-NEXT:  # %bb.1: # %label1
5603; GENERIC-NEXT:    movi16 a0, 1
5604; GENERIC-NEXT:    addi16 sp, sp, 4
5605; GENERIC-NEXT:    rts16
5606; GENERIC-NEXT:  .LBB119_2: # %label2
5607; GENERIC-NEXT:    movi16 a0, 0
5608; GENERIC-NEXT:    addi16 sp, sp, 4
5609; GENERIC-NEXT:    rts16
5610entry:
5611  %icmp = icmp ne i1 %y, %x
5612  br i1 %icmp, label %label1, label %label2
5613label1:
5614  ret i1 1
5615label2:
5616  ret i1 0
5617}
5618
5619define i1 @brRI_i1_ne(i1 %x) {
5620; CHECK-LABEL: brRI_i1_ne:
5621; CHECK:       # %bb.0: # %entry
5622; CHECK-NEXT:    andi32 a0, a0, 1
5623; CHECK-NEXT:    bez32 a0, .LBB120_2
5624; CHECK-NEXT:  # %bb.1: # %label1
5625; CHECK-NEXT:    movi16 a0, 1
5626; CHECK-NEXT:    rts16
5627; CHECK-NEXT:  .LBB120_2: # %label2
5628; CHECK-NEXT:    movi16 a0, 0
5629; CHECK-NEXT:    rts16
5630;
5631; GENERIC-LABEL: brRI_i1_ne:
5632; GENERIC:       # %bb.0: # %entry
5633; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5634; GENERIC-NEXT:    subi16 sp, sp, 4
5635; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5636; GENERIC-NEXT:    movi16 a1, 1
5637; GENERIC-NEXT:    and16 a1, a0
5638; GENERIC-NEXT:    cmpnei16 a1, 0
5639; GENERIC-NEXT:    bf16 .LBB120_2
5640; GENERIC-NEXT:  # %bb.1: # %label1
5641; GENERIC-NEXT:    movi16 a0, 1
5642; GENERIC-NEXT:    addi16 sp, sp, 4
5643; GENERIC-NEXT:    rts16
5644; GENERIC-NEXT:  .LBB120_2: # %label2
5645; GENERIC-NEXT:    movi16 a0, 0
5646; GENERIC-NEXT:    addi16 sp, sp, 4
5647; GENERIC-NEXT:    rts16
5648entry:
5649  %icmp = icmp ne i1 %x, 10
5650  br i1 %icmp, label %label1, label %label2
5651label1:
5652  ret i1 1
5653label2:
5654  ret i1 0
5655}
5656
5657define i1 @brR0_i1_ne(i1 %x) {
5658; CHECK-LABEL: brR0_i1_ne:
5659; CHECK:       # %bb.0: # %entry
5660; CHECK-NEXT:    andi32 a0, a0, 1
5661; CHECK-NEXT:    bez32 a0, .LBB121_2
5662; CHECK-NEXT:  # %bb.1: # %label1
5663; CHECK-NEXT:    movi16 a0, 1
5664; CHECK-NEXT:    rts16
5665; CHECK-NEXT:  .LBB121_2: # %label2
5666; CHECK-NEXT:    movi16 a0, 0
5667; CHECK-NEXT:    rts16
5668;
5669; GENERIC-LABEL: brR0_i1_ne:
5670; GENERIC:       # %bb.0: # %entry
5671; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5672; GENERIC-NEXT:    subi16 sp, sp, 4
5673; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5674; GENERIC-NEXT:    movi16 a1, 1
5675; GENERIC-NEXT:    and16 a1, a0
5676; GENERIC-NEXT:    cmpnei16 a1, 0
5677; GENERIC-NEXT:    bf16 .LBB121_2
5678; GENERIC-NEXT:  # %bb.1: # %label1
5679; GENERIC-NEXT:    movi16 a0, 1
5680; GENERIC-NEXT:    addi16 sp, sp, 4
5681; GENERIC-NEXT:    rts16
5682; GENERIC-NEXT:  .LBB121_2: # %label2
5683; GENERIC-NEXT:    movi16 a0, 0
5684; GENERIC-NEXT:    addi16 sp, sp, 4
5685; GENERIC-NEXT:    rts16
5686entry:
5687  %icmp = icmp ne i1 %x, 0
5688  br i1 %icmp, label %label1, label %label2
5689label1:
5690  ret i1 1
5691label2:
5692  ret i1 0
5693}
5694
5695;UGT
5696define i1 @brRR_i1_ugt(i1 %x, i1 %y) {
5697; CHECK-LABEL: brRR_i1_ugt:
5698; CHECK:       # %bb.0: # %entry
5699; CHECK-NEXT:    andi32 a1, a1, 1
5700; CHECK-NEXT:    andi32 a0, a0, 1
5701; CHECK-NEXT:    cmphs16 a0, a1
5702; CHECK-NEXT:    bt32 .LBB122_2
5703; CHECK-NEXT:  # %bb.1: # %label1
5704; CHECK-NEXT:    movi16 a0, 1
5705; CHECK-NEXT:    rts16
5706; CHECK-NEXT:  .LBB122_2: # %label2
5707; CHECK-NEXT:    movi16 a0, 0
5708; CHECK-NEXT:    rts16
5709;
5710; GENERIC-LABEL: brRR_i1_ugt:
5711; GENERIC:       # %bb.0: # %entry
5712; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5713; GENERIC-NEXT:    subi16 sp, sp, 4
5714; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5715; GENERIC-NEXT:    movi16 a2, 1
5716; GENERIC-NEXT:    and16 a1, a2
5717; GENERIC-NEXT:    and16 a0, a2
5718; GENERIC-NEXT:    cmphs16 a0, a1
5719; GENERIC-NEXT:    bt16 .LBB122_2
5720; GENERIC-NEXT:  # %bb.1: # %label1
5721; GENERIC-NEXT:    movi16 a0, 1
5722; GENERIC-NEXT:    addi16 sp, sp, 4
5723; GENERIC-NEXT:    rts16
5724; GENERIC-NEXT:  .LBB122_2: # %label2
5725; GENERIC-NEXT:    movi16 a0, 0
5726; GENERIC-NEXT:    addi16 sp, sp, 4
5727; GENERIC-NEXT:    rts16
5728; CHECK-UGTXT:    icmpu32 a0, a1, a0
5729; CHECK-UGTXT:    rts16
5730entry:
5731  %icmp = icmp ugt i1 %y, %x
5732  br i1 %icmp, label %label1, label %label2
5733label1:
5734  ret i1 1
5735label2:
5736  ret i1 0
5737}
5738
5739define i1 @brRI_i1_ugt(i1 %x) {
5740; CHECK-LABEL: brRI_i1_ugt:
5741; CHECK:       # %bb.0: # %entry
5742; CHECK-NEXT:    andi32 a0, a0, 1
5743; CHECK-NEXT:    bez32 a0, .LBB123_2
5744; CHECK-NEXT:  # %bb.1: # %label1
5745; CHECK-NEXT:    movi16 a0, 1
5746; CHECK-NEXT:    rts16
5747; CHECK-NEXT:  .LBB123_2: # %label2
5748; CHECK-NEXT:    movi16 a0, 0
5749; CHECK-NEXT:    rts16
5750;
5751; GENERIC-LABEL: brRI_i1_ugt:
5752; GENERIC:       # %bb.0: # %entry
5753; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5754; GENERIC-NEXT:    subi16 sp, sp, 4
5755; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5756; GENERIC-NEXT:    movi16 a1, 1
5757; GENERIC-NEXT:    and16 a1, a0
5758; GENERIC-NEXT:    cmpnei16 a1, 0
5759; GENERIC-NEXT:    bf16 .LBB123_2
5760; GENERIC-NEXT:  # %bb.1: # %label1
5761; GENERIC-NEXT:    movi16 a0, 1
5762; GENERIC-NEXT:    addi16 sp, sp, 4
5763; GENERIC-NEXT:    rts16
5764; GENERIC-NEXT:  .LBB123_2: # %label2
5765; GENERIC-NEXT:    movi16 a0, 0
5766; GENERIC-NEXT:    addi16 sp, sp, 4
5767; GENERIC-NEXT:    rts16
5768; CHECK-UGTXT:    icmpu32 a0, a1, a0
5769; CHECK-UGTXT:    rts16
5770entry:
5771  %icmp = icmp ugt i1 %x, 10
5772  br i1 %icmp, label %label1, label %label2
5773label1:
5774  ret i1 1
5775label2:
5776  ret i1 0
5777}
5778
5779define i1 @brR0_i1_ugt(i1 %x) {
5780; CHECK-LABEL: brR0_i1_ugt:
5781; CHECK:       # %bb.0: # %entry
5782; CHECK-NEXT:    andi32 a0, a0, 1
5783; CHECK-NEXT:    bez32 a0, .LBB124_2
5784; CHECK-NEXT:  # %bb.1: # %label1
5785; CHECK-NEXT:    movi16 a0, 1
5786; CHECK-NEXT:    rts16
5787; CHECK-NEXT:  .LBB124_2: # %label2
5788; CHECK-NEXT:    movi16 a0, 0
5789; CHECK-NEXT:    rts16
5790;
5791; GENERIC-LABEL: brR0_i1_ugt:
5792; GENERIC:       # %bb.0: # %entry
5793; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5794; GENERIC-NEXT:    subi16 sp, sp, 4
5795; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5796; GENERIC-NEXT:    movi16 a1, 1
5797; GENERIC-NEXT:    and16 a1, a0
5798; GENERIC-NEXT:    cmpnei16 a1, 0
5799; GENERIC-NEXT:    bf16 .LBB124_2
5800; GENERIC-NEXT:  # %bb.1: # %label1
5801; GENERIC-NEXT:    movi16 a0, 1
5802; GENERIC-NEXT:    addi16 sp, sp, 4
5803; GENERIC-NEXT:    rts16
5804; GENERIC-NEXT:  .LBB124_2: # %label2
5805; GENERIC-NEXT:    movi16 a0, 0
5806; GENERIC-NEXT:    addi16 sp, sp, 4
5807; GENERIC-NEXT:    rts16
5808; CHECK-UGTXT:    icmpu32 a0, a1, a0
5809; CHECK-UGTXT:    rts16
5810entry:
5811  %icmp = icmp ugt i1 %x, 0
5812  br i1 %icmp, label %label1, label %label2
5813label1:
5814  ret i1 1
5815label2:
5816  ret i1 0
5817}
5818
5819;UGE
5820define i1 @brRR_i1_uge(i1 %x, i1 %y) {
5821; CHECK-LABEL: brRR_i1_uge:
5822; CHECK:       # %bb.0: # %entry
5823; CHECK-NEXT:    andi32 a0, a0, 1
5824; CHECK-NEXT:    andi32 a1, a1, 1
5825; CHECK-NEXT:    cmphs16 a1, a0
5826; CHECK-NEXT:    bf32 .LBB125_2
5827; CHECK-NEXT:  # %bb.1: # %label1
5828; CHECK-NEXT:    movi16 a0, 1
5829; CHECK-NEXT:    rts16
5830; CHECK-NEXT:  .LBB125_2: # %label2
5831; CHECK-NEXT:    movi16 a0, 0
5832; CHECK-NEXT:    rts16
5833;
5834; GENERIC-LABEL: brRR_i1_uge:
5835; GENERIC:       # %bb.0: # %entry
5836; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5837; GENERIC-NEXT:    subi16 sp, sp, 4
5838; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5839; GENERIC-NEXT:    movi16 a2, 1
5840; GENERIC-NEXT:    and16 a0, a2
5841; GENERIC-NEXT:    and16 a1, a2
5842; GENERIC-NEXT:    cmphs16 a1, a0
5843; GENERIC-NEXT:    bf16 .LBB125_2
5844; GENERIC-NEXT:  # %bb.1: # %label1
5845; GENERIC-NEXT:    movi16 a0, 1
5846; GENERIC-NEXT:    addi16 sp, sp, 4
5847; GENERIC-NEXT:    rts16
5848; GENERIC-NEXT:  .LBB125_2: # %label2
5849; GENERIC-NEXT:    movi16 a0, 0
5850; GENERIC-NEXT:    addi16 sp, sp, 4
5851; GENERIC-NEXT:    rts16
5852; CHECK-UGTXT:    icmpu32 a0, a1, a0
5853; CHECK-UGTXT:    rts16
5854entry:
5855  %icmp = icmp uge i1 %y, %x
5856  br i1 %icmp, label %label1, label %label2
5857label1:
5858  ret i1 1
5859label2:
5860  ret i1 0
5861}
5862
5863define i1 @brRI_i1_uge(i1 %x) {
5864; CHECK-LABEL: brRI_i1_uge:
5865; CHECK:       # %bb.0: # %entry
5866; CHECK-NEXT:    movi16 a0, 0
5867; CHECK-NEXT:    btsti32 a0, 0
5868; CHECK-NEXT:    bt32 .LBB126_2
5869; CHECK-NEXT:  # %bb.1: # %label1
5870; CHECK-NEXT:    movi16 a0, 1
5871; CHECK-NEXT:    rts16
5872; CHECK-NEXT:  .LBB126_2: # %label2
5873; CHECK-NEXT:    movi16 a0, 0
5874; CHECK-NEXT:    rts16
5875;
5876; GENERIC-LABEL: brRI_i1_uge:
5877; GENERIC:       # %bb.0: # %entry
5878; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5879; GENERIC-NEXT:    subi16 sp, sp, 4
5880; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5881; GENERIC-NEXT:    movi16 a0, 0
5882; GENERIC-NEXT:    btsti16 a0, 0
5883; GENERIC-NEXT:    bt16 .LBB126_2
5884; GENERIC-NEXT:  # %bb.1: # %label1
5885; GENERIC-NEXT:    movi16 a0, 1
5886; GENERIC-NEXT:    addi16 sp, sp, 4
5887; GENERIC-NEXT:    rts16
5888; GENERIC-NEXT:  .LBB126_2: # %label2
5889; GENERIC-NEXT:    movi16 a0, 0
5890; GENERIC-NEXT:    addi16 sp, sp, 4
5891; GENERIC-NEXT:    rts16
5892; CHECK-UGTXT:    icmpu32 a0, a1, a0
5893; CHECK-UGTXT:    rts16
5894entry:
5895  %icmp = icmp uge i1 %x, 10
5896  br i1 %icmp, label %label1, label %label2
5897label1:
5898  ret i1 1
5899label2:
5900  ret i1 0
5901}
5902
5903;ULT
5904define i1 @brRR_i1_ult(i1 %x, i1 %y) {
5905; CHECK-LABEL: brRR_i1_ult:
5906; CHECK:       # %bb.0: # %entry
5907; CHECK-NEXT:    andi32 a0, a0, 1
5908; CHECK-NEXT:    andi32 a1, a1, 1
5909; CHECK-NEXT:    cmphs16 a1, a0
5910; CHECK-NEXT:    bt32 .LBB127_2
5911; CHECK-NEXT:  # %bb.1: # %label1
5912; CHECK-NEXT:    movi16 a0, 1
5913; CHECK-NEXT:    rts16
5914; CHECK-NEXT:  .LBB127_2: # %label2
5915; CHECK-NEXT:    movi16 a0, 0
5916; CHECK-NEXT:    rts16
5917;
5918; GENERIC-LABEL: brRR_i1_ult:
5919; GENERIC:       # %bb.0: # %entry
5920; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5921; GENERIC-NEXT:    subi16 sp, sp, 4
5922; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5923; GENERIC-NEXT:    movi16 a2, 1
5924; GENERIC-NEXT:    and16 a0, a2
5925; GENERIC-NEXT:    and16 a1, a2
5926; GENERIC-NEXT:    cmphs16 a1, a0
5927; GENERIC-NEXT:    bt16 .LBB127_2
5928; GENERIC-NEXT:  # %bb.1: # %label1
5929; GENERIC-NEXT:    movi16 a0, 1
5930; GENERIC-NEXT:    addi16 sp, sp, 4
5931; GENERIC-NEXT:    rts16
5932; GENERIC-NEXT:  .LBB127_2: # %label2
5933; GENERIC-NEXT:    movi16 a0, 0
5934; GENERIC-NEXT:    addi16 sp, sp, 4
5935; GENERIC-NEXT:    rts16
5936; CHECK-UGTXT:    icmpu32 a0, a1, a0
5937; CHECK-UGTXT:    rts16
5938entry:
5939  %icmp = icmp ult i1 %y, %x
5940  br i1 %icmp, label %label1, label %label2
5941label1:
5942  ret i1 1
5943label2:
5944  ret i1 0
5945}
5946
5947define i1 @brRI_i1_ult(i1 %x) {
5948; CHECK-LABEL: brRI_i1_ult:
5949; CHECK:       # %bb.0: # %entry
5950; CHECK-NEXT:    movi16 a0, 1
5951; CHECK-NEXT:    btsti32 a0, 0
5952; CHECK-NEXT:    bt32 .LBB128_2
5953; CHECK-NEXT:  # %bb.1: # %label1
5954; CHECK-NEXT:    movi16 a0, 1
5955; CHECK-NEXT:    rts16
5956; CHECK-NEXT:  .LBB128_2: # %label2
5957; CHECK-NEXT:    movi16 a0, 0
5958; CHECK-NEXT:    rts16
5959;
5960; GENERIC-LABEL: brRI_i1_ult:
5961; GENERIC:       # %bb.0: # %entry
5962; GENERIC-NEXT:    .cfi_def_cfa_offset 0
5963; GENERIC-NEXT:    subi16 sp, sp, 4
5964; GENERIC-NEXT:    .cfi_def_cfa_offset 4
5965; GENERIC-NEXT:    movi16 a0, 1
5966; GENERIC-NEXT:    btsti16 a0, 0
5967; GENERIC-NEXT:    bt16 .LBB128_2
5968; GENERIC-NEXT:  # %bb.1: # %label1
5969; GENERIC-NEXT:    movi16 a0, 1
5970; GENERIC-NEXT:    addi16 sp, sp, 4
5971; GENERIC-NEXT:    rts16
5972; GENERIC-NEXT:  .LBB128_2: # %label2
5973; GENERIC-NEXT:    movi16 a0, 0
5974; GENERIC-NEXT:    addi16 sp, sp, 4
5975; GENERIC-NEXT:    rts16
5976; CHECK-UGTXT:    icmpu32 a0, a1, a0
5977; CHECK-UGTXT:    rts16
5978entry:
5979  %icmp = icmp ult i1 %x, 10
5980  br i1 %icmp, label %label1, label %label2
5981label1:
5982  ret i1 1
5983label2:
5984  ret i1 0
5985}
5986
5987
5988;ULE
5989define i1 @brRR_i1_ule(i1 %x, i1 %y) {
5990; CHECK-LABEL: brRR_i1_ule:
5991; CHECK:       # %bb.0: # %entry
5992; CHECK-NEXT:    andi32 a1, a1, 1
5993; CHECK-NEXT:    andi32 a0, a0, 1
5994; CHECK-NEXT:    cmphs16 a0, a1
5995; CHECK-NEXT:    bf32 .LBB129_2
5996; CHECK-NEXT:  # %bb.1: # %label1
5997; CHECK-NEXT:    movi16 a0, 1
5998; CHECK-NEXT:    rts16
5999; CHECK-NEXT:  .LBB129_2: # %label2
6000; CHECK-NEXT:    movi16 a0, 0
6001; CHECK-NEXT:    rts16
6002;
6003; GENERIC-LABEL: brRR_i1_ule:
6004; GENERIC:       # %bb.0: # %entry
6005; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6006; GENERIC-NEXT:    subi16 sp, sp, 4
6007; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6008; GENERIC-NEXT:    movi16 a2, 1
6009; GENERIC-NEXT:    and16 a1, a2
6010; GENERIC-NEXT:    and16 a0, a2
6011; GENERIC-NEXT:    cmphs16 a0, a1
6012; GENERIC-NEXT:    bf16 .LBB129_2
6013; GENERIC-NEXT:  # %bb.1: # %label1
6014; GENERIC-NEXT:    movi16 a0, 1
6015; GENERIC-NEXT:    addi16 sp, sp, 4
6016; GENERIC-NEXT:    rts16
6017; GENERIC-NEXT:  .LBB129_2: # %label2
6018; GENERIC-NEXT:    movi16 a0, 0
6019; GENERIC-NEXT:    addi16 sp, sp, 4
6020; GENERIC-NEXT:    rts16
6021; CHECK-UGTXT:    icmpu32 a0, a1, a0
6022; CHECK-UGTXT:    rts16
6023entry:
6024  %icmp = icmp ule i1 %y, %x
6025  br i1 %icmp, label %label1, label %label2
6026label1:
6027  ret i1 1
6028label2:
6029  ret i1 0
6030}
6031
6032define i1 @brRI_i1_ule(i1 %x) {
6033; CHECK-LABEL: brRI_i1_ule:
6034; CHECK:       # %bb.0: # %entry
6035; CHECK-NEXT:    andi32 a0, a0, 1
6036; CHECK-NEXT:    btsti32 a0, 0
6037; CHECK-NEXT:    bt32 .LBB130_2
6038; CHECK-NEXT:  # %bb.1: # %label1
6039; CHECK-NEXT:    movi16 a0, 1
6040; CHECK-NEXT:    rts16
6041; CHECK-NEXT:  .LBB130_2: # %label2
6042; CHECK-NEXT:    movi16 a0, 0
6043; CHECK-NEXT:    rts16
6044;
6045; GENERIC-LABEL: brRI_i1_ule:
6046; GENERIC:       # %bb.0: # %entry
6047; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6048; GENERIC-NEXT:    subi16 sp, sp, 4
6049; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6050; GENERIC-NEXT:    movi16 a1, 1
6051; GENERIC-NEXT:    and16 a1, a0
6052; GENERIC-NEXT:    btsti16 a1, 0
6053; GENERIC-NEXT:    bt16 .LBB130_2
6054; GENERIC-NEXT:  # %bb.1: # %label1
6055; GENERIC-NEXT:    movi16 a0, 1
6056; GENERIC-NEXT:    addi16 sp, sp, 4
6057; GENERIC-NEXT:    rts16
6058; GENERIC-NEXT:  .LBB130_2: # %label2
6059; GENERIC-NEXT:    movi16 a0, 0
6060; GENERIC-NEXT:    addi16 sp, sp, 4
6061; GENERIC-NEXT:    rts16
6062; CHECK-UGTXT:    icmpu32 a0, a1, a0
6063; CHECK-UGTXT:    rts16
6064entry:
6065  %icmp = icmp ule i1 %x, 10
6066  br i1 %icmp, label %label1, label %label2
6067label1:
6068  ret i1 1
6069label2:
6070  ret i1 0
6071}
6072
6073define i1 @brR0_i1_ule(i1 %x) {
6074; CHECK-LABEL: brR0_i1_ule:
6075; CHECK:       # %bb.0: # %entry
6076; CHECK-NEXT:    andi32 a0, a0, 1
6077; CHECK-NEXT:    btsti32 a0, 0
6078; CHECK-NEXT:    bt32 .LBB131_2
6079; CHECK-NEXT:  # %bb.1: # %label1
6080; CHECK-NEXT:    movi16 a0, 1
6081; CHECK-NEXT:    rts16
6082; CHECK-NEXT:  .LBB131_2: # %label2
6083; CHECK-NEXT:    movi16 a0, 0
6084; CHECK-NEXT:    rts16
6085;
6086; GENERIC-LABEL: brR0_i1_ule:
6087; GENERIC:       # %bb.0: # %entry
6088; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6089; GENERIC-NEXT:    subi16 sp, sp, 4
6090; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6091; GENERIC-NEXT:    movi16 a1, 1
6092; GENERIC-NEXT:    and16 a1, a0
6093; GENERIC-NEXT:    btsti16 a1, 0
6094; GENERIC-NEXT:    bt16 .LBB131_2
6095; GENERIC-NEXT:  # %bb.1: # %label1
6096; GENERIC-NEXT:    movi16 a0, 1
6097; GENERIC-NEXT:    addi16 sp, sp, 4
6098; GENERIC-NEXT:    rts16
6099; GENERIC-NEXT:  .LBB131_2: # %label2
6100; GENERIC-NEXT:    movi16 a0, 0
6101; GENERIC-NEXT:    addi16 sp, sp, 4
6102; GENERIC-NEXT:    rts16
6103; CHECK-UGTXT:    icmpu32 a0, a1, a0
6104; CHECK-UGTXT:    rts16
6105entry:
6106  %icmp = icmp ule i1 %x, 0
6107  br i1 %icmp, label %label1, label %label2
6108label1:
6109  ret i1 1
6110label2:
6111  ret i1 0
6112}
6113
6114;SGT
6115define i1 @brRR_i1_sgt(i1 %x, i1 %y) {
6116; CHECK-LABEL: brRR_i1_sgt:
6117; CHECK:       # %bb.0: # %entry
6118; CHECK-NEXT:    sext32 a1, a1, 0, 0
6119; CHECK-NEXT:    sext32 a0, a0, 0, 0
6120; CHECK-NEXT:    cmplt16 a0, a1
6121; CHECK-NEXT:    bf32 .LBB132_2
6122; CHECK-NEXT:  # %bb.1: # %label1
6123; CHECK-NEXT:    movi16 a0, 1
6124; CHECK-NEXT:    rts16
6125; CHECK-NEXT:  .LBB132_2: # %label2
6126; CHECK-NEXT:    movi16 a0, 0
6127; CHECK-NEXT:    rts16
6128;
6129; GENERIC-LABEL: brRR_i1_sgt:
6130; GENERIC:       # %bb.0: # %entry
6131; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6132; GENERIC-NEXT:    subi16 sp, sp, 4
6133; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6134; GENERIC-NEXT:    lsli16 a1, a1, 7
6135; GENERIC-NEXT:    asri16 a1, a1, 7
6136; GENERIC-NEXT:    lsli16 a0, a0, 7
6137; GENERIC-NEXT:    asri16 a0, a0, 7
6138; GENERIC-NEXT:    cmplt16 a0, a1
6139; GENERIC-NEXT:    bf16 .LBB132_2
6140; GENERIC-NEXT:  # %bb.1: # %label1
6141; GENERIC-NEXT:    movi16 a0, 1
6142; GENERIC-NEXT:    addi16 sp, sp, 4
6143; GENERIC-NEXT:    rts16
6144; GENERIC-NEXT:  .LBB132_2: # %label2
6145; GENERIC-NEXT:    movi16 a0, 0
6146; GENERIC-NEXT:    addi16 sp, sp, 4
6147; GENERIC-NEXT:    rts16
6148; CHECK-UGTXT:    icmpu32 a0, a1, a0
6149; CHECK-UGTXT:    rts16
6150entry:
6151  %icmp = icmp sgt i1 %y, %x
6152  br i1 %icmp, label %label1, label %label2
6153label1:
6154  ret i1 1
6155label2:
6156  ret i1 0
6157}
6158
6159define i1 @brRI_i1_sgt(i1 %x) {
6160; CHECK-LABEL: brRI_i1_sgt:
6161; CHECK:       # %bb.0: # %entry
6162; CHECK-NEXT:    movi16 a0, 1
6163; CHECK-NEXT:    btsti32 a0, 0
6164; CHECK-NEXT:    bt32 .LBB133_2
6165; CHECK-NEXT:  # %bb.1: # %label1
6166; CHECK-NEXT:    movi16 a0, 1
6167; CHECK-NEXT:    rts16
6168; CHECK-NEXT:  .LBB133_2: # %label2
6169; CHECK-NEXT:    movi16 a0, 0
6170; CHECK-NEXT:    rts16
6171;
6172; GENERIC-LABEL: brRI_i1_sgt:
6173; GENERIC:       # %bb.0: # %entry
6174; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6175; GENERIC-NEXT:    subi16 sp, sp, 4
6176; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6177; GENERIC-NEXT:    movi16 a0, 1
6178; GENERIC-NEXT:    btsti16 a0, 0
6179; GENERIC-NEXT:    bt16 .LBB133_2
6180; GENERIC-NEXT:  # %bb.1: # %label1
6181; GENERIC-NEXT:    movi16 a0, 1
6182; GENERIC-NEXT:    addi16 sp, sp, 4
6183; GENERIC-NEXT:    rts16
6184; GENERIC-NEXT:  .LBB133_2: # %label2
6185; GENERIC-NEXT:    movi16 a0, 0
6186; GENERIC-NEXT:    addi16 sp, sp, 4
6187; GENERIC-NEXT:    rts16
6188; CHECK-UGTXT:    icmpu32 a0, a1, a0
6189; CHECK-UGTXT:    rts16
6190entry:
6191  %icmp = icmp sgt i1 %x, 10
6192  br i1 %icmp, label %label1, label %label2
6193label1:
6194  ret i1 1
6195label2:
6196  ret i1 0
6197}
6198
6199define i1 @brR0_i1_sgt(i1 %x) {
6200; CHECK-LABEL: brR0_i1_sgt:
6201; CHECK:       # %bb.0: # %entry
6202; CHECK-NEXT:    movi16 a0, 1
6203; CHECK-NEXT:    btsti32 a0, 0
6204; CHECK-NEXT:    bt32 .LBB134_2
6205; CHECK-NEXT:  # %bb.1: # %label1
6206; CHECK-NEXT:    movi16 a0, 1
6207; CHECK-NEXT:    rts16
6208; CHECK-NEXT:  .LBB134_2: # %label2
6209; CHECK-NEXT:    movi16 a0, 0
6210; CHECK-NEXT:    rts16
6211;
6212; GENERIC-LABEL: brR0_i1_sgt:
6213; GENERIC:       # %bb.0: # %entry
6214; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6215; GENERIC-NEXT:    subi16 sp, sp, 4
6216; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6217; GENERIC-NEXT:    movi16 a0, 1
6218; GENERIC-NEXT:    btsti16 a0, 0
6219; GENERIC-NEXT:    bt16 .LBB134_2
6220; GENERIC-NEXT:  # %bb.1: # %label1
6221; GENERIC-NEXT:    movi16 a0, 1
6222; GENERIC-NEXT:    addi16 sp, sp, 4
6223; GENERIC-NEXT:    rts16
6224; GENERIC-NEXT:  .LBB134_2: # %label2
6225; GENERIC-NEXT:    movi16 a0, 0
6226; GENERIC-NEXT:    addi16 sp, sp, 4
6227; GENERIC-NEXT:    rts16
6228; CHECK-UGTXT:    icmpu32 a0, a1, a0
6229; CHECK-UGTXT:    rts16
6230entry:
6231  %icmp = icmp sgt i1 %x, 0
6232  br i1 %icmp, label %label1, label %label2
6233label1:
6234  ret i1 1
6235label2:
6236  ret i1 0
6237}
6238
6239;SGE
6240define i1 @brRR_i1_sge(i1 %x, i1 %y) {
6241; CHECK-LABEL: brRR_i1_sge:
6242; CHECK:       # %bb.0: # %entry
6243; CHECK-NEXT:    sext32 a0, a0, 0, 0
6244; CHECK-NEXT:    sext32 a1, a1, 0, 0
6245; CHECK-NEXT:    cmplt16 a1, a0
6246; CHECK-NEXT:    bt32 .LBB135_2
6247; CHECK-NEXT:  # %bb.1: # %label1
6248; CHECK-NEXT:    movi16 a0, 1
6249; CHECK-NEXT:    rts16
6250; CHECK-NEXT:  .LBB135_2: # %label2
6251; CHECK-NEXT:    movi16 a0, 0
6252; CHECK-NEXT:    rts16
6253;
6254; GENERIC-LABEL: brRR_i1_sge:
6255; GENERIC:       # %bb.0: # %entry
6256; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6257; GENERIC-NEXT:    subi16 sp, sp, 4
6258; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6259; GENERIC-NEXT:    lsli16 a0, a0, 7
6260; GENERIC-NEXT:    asri16 a0, a0, 7
6261; GENERIC-NEXT:    lsli16 a1, a1, 7
6262; GENERIC-NEXT:    asri16 a1, a1, 7
6263; GENERIC-NEXT:    cmplt16 a1, a0
6264; GENERIC-NEXT:    bt16 .LBB135_2
6265; GENERIC-NEXT:  # %bb.1: # %label1
6266; GENERIC-NEXT:    movi16 a0, 1
6267; GENERIC-NEXT:    addi16 sp, sp, 4
6268; GENERIC-NEXT:    rts16
6269; GENERIC-NEXT:  .LBB135_2: # %label2
6270; GENERIC-NEXT:    movi16 a0, 0
6271; GENERIC-NEXT:    addi16 sp, sp, 4
6272; GENERIC-NEXT:    rts16
6273; CHECK-UGTXT:    icmpu32 a0, a1, a0
6274; CHECK-UGTXT:    rts16
6275entry:
6276  %icmp = icmp sge i1 %y, %x
6277  br i1 %icmp, label %label1, label %label2
6278label1:
6279  ret i1 1
6280label2:
6281  ret i1 0
6282}
6283
6284define i1 @brRI_i1_sge(i1 %x) {
6285; CHECK-LABEL: brRI_i1_sge:
6286; CHECK:       # %bb.0: # %entry
6287; CHECK-NEXT:    andi32 a0, a0, 1
6288; CHECK-NEXT:    btsti32 a0, 0
6289; CHECK-NEXT:    bt32 .LBB136_2
6290; CHECK-NEXT:  # %bb.1: # %label1
6291; CHECK-NEXT:    movi16 a0, 1
6292; CHECK-NEXT:    rts16
6293; CHECK-NEXT:  .LBB136_2: # %label2
6294; CHECK-NEXT:    movi16 a0, 0
6295; CHECK-NEXT:    rts16
6296;
6297; GENERIC-LABEL: brRI_i1_sge:
6298; GENERIC:       # %bb.0: # %entry
6299; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6300; GENERIC-NEXT:    subi16 sp, sp, 4
6301; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6302; GENERIC-NEXT:    movi16 a1, 1
6303; GENERIC-NEXT:    and16 a1, a0
6304; GENERIC-NEXT:    btsti16 a1, 0
6305; GENERIC-NEXT:    bt16 .LBB136_2
6306; GENERIC-NEXT:  # %bb.1: # %label1
6307; GENERIC-NEXT:    movi16 a0, 1
6308; GENERIC-NEXT:    addi16 sp, sp, 4
6309; GENERIC-NEXT:    rts16
6310; GENERIC-NEXT:  .LBB136_2: # %label2
6311; GENERIC-NEXT:    movi16 a0, 0
6312; GENERIC-NEXT:    addi16 sp, sp, 4
6313; GENERIC-NEXT:    rts16
6314; CHECK-UGTXT:    icmpu32 a0, a1, a0
6315; CHECK-UGTXT:    rts16
6316entry:
6317  %icmp = icmp sge i1 %x, 10
6318  br i1 %icmp, label %label1, label %label2
6319label1:
6320  ret i1 1
6321label2:
6322  ret i1 0
6323}
6324
6325define i1 @brR0_i1_sge(i1 %x) {
6326; CHECK-LABEL: brR0_i1_sge:
6327; CHECK:       # %bb.0: # %entry
6328; CHECK-NEXT:    andi32 a0, a0, 1
6329; CHECK-NEXT:    btsti32 a0, 0
6330; CHECK-NEXT:    bt32 .LBB137_2
6331; CHECK-NEXT:  # %bb.1: # %label1
6332; CHECK-NEXT:    movi16 a0, 1
6333; CHECK-NEXT:    rts16
6334; CHECK-NEXT:  .LBB137_2: # %label2
6335; CHECK-NEXT:    movi16 a0, 0
6336; CHECK-NEXT:    rts16
6337;
6338; GENERIC-LABEL: brR0_i1_sge:
6339; GENERIC:       # %bb.0: # %entry
6340; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6341; GENERIC-NEXT:    subi16 sp, sp, 4
6342; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6343; GENERIC-NEXT:    movi16 a1, 1
6344; GENERIC-NEXT:    and16 a1, a0
6345; GENERIC-NEXT:    btsti16 a1, 0
6346; GENERIC-NEXT:    bt16 .LBB137_2
6347; GENERIC-NEXT:  # %bb.1: # %label1
6348; GENERIC-NEXT:    movi16 a0, 1
6349; GENERIC-NEXT:    addi16 sp, sp, 4
6350; GENERIC-NEXT:    rts16
6351; GENERIC-NEXT:  .LBB137_2: # %label2
6352; GENERIC-NEXT:    movi16 a0, 0
6353; GENERIC-NEXT:    addi16 sp, sp, 4
6354; GENERIC-NEXT:    rts16
6355; CHECK-UGTXT:    icmpu32 a0, a1, a0
6356; CHECK-UGTXT:    rts16
6357entry:
6358  %icmp = icmp sge i1 %x, 0
6359  br i1 %icmp, label %label1, label %label2
6360label1:
6361  ret i1 1
6362label2:
6363  ret i1 0
6364}
6365
6366;SLT
6367define i1 @brRR_i1_slt(i1 %x, i1 %y) {
6368; CHECK-LABEL: brRR_i1_slt:
6369; CHECK:       # %bb.0: # %entry
6370; CHECK-NEXT:    sext32 a0, a0, 0, 0
6371; CHECK-NEXT:    sext32 a1, a1, 0, 0
6372; CHECK-NEXT:    cmplt16 a1, a0
6373; CHECK-NEXT:    bf32 .LBB138_2
6374; CHECK-NEXT:  # %bb.1: # %label1
6375; CHECK-NEXT:    movi16 a0, 1
6376; CHECK-NEXT:    rts16
6377; CHECK-NEXT:  .LBB138_2: # %label2
6378; CHECK-NEXT:    movi16 a0, 0
6379; CHECK-NEXT:    rts16
6380;
6381; GENERIC-LABEL: brRR_i1_slt:
6382; GENERIC:       # %bb.0: # %entry
6383; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6384; GENERIC-NEXT:    subi16 sp, sp, 4
6385; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6386; GENERIC-NEXT:    lsli16 a0, a0, 7
6387; GENERIC-NEXT:    asri16 a0, a0, 7
6388; GENERIC-NEXT:    lsli16 a1, a1, 7
6389; GENERIC-NEXT:    asri16 a1, a1, 7
6390; GENERIC-NEXT:    cmplt16 a1, a0
6391; GENERIC-NEXT:    bf16 .LBB138_2
6392; GENERIC-NEXT:  # %bb.1: # %label1
6393; GENERIC-NEXT:    movi16 a0, 1
6394; GENERIC-NEXT:    addi16 sp, sp, 4
6395; GENERIC-NEXT:    rts16
6396; GENERIC-NEXT:  .LBB138_2: # %label2
6397; GENERIC-NEXT:    movi16 a0, 0
6398; GENERIC-NEXT:    addi16 sp, sp, 4
6399; GENERIC-NEXT:    rts16
6400; CHECK-UGTXT:    icmpu32 a0, a1, a0
6401; CHECK-UGTXT:    rts16
6402entry:
6403  %icmp = icmp slt i1 %y, %x
6404  br i1 %icmp, label %label1, label %label2
6405label1:
6406  ret i1 1
6407label2:
6408  ret i1 0
6409}
6410
6411define i1 @brRI_i1_slt(i1 %x) {
6412; CHECK-LABEL: brRI_i1_slt:
6413; CHECK:       # %bb.0: # %entry
6414; CHECK-NEXT:    andi32 a0, a0, 1
6415; CHECK-NEXT:    bnez32 a0, .LBB139_2
6416; CHECK-NEXT:  # %bb.1: # %label2
6417; CHECK-NEXT:    movi16 a0, 0
6418; CHECK-NEXT:    rts16
6419; CHECK-NEXT:  .LBB139_2: # %label1
6420; CHECK-NEXT:    movi16 a0, 1
6421; CHECK-NEXT:    rts16
6422;
6423; GENERIC-LABEL: brRI_i1_slt:
6424; GENERIC:       # %bb.0: # %entry
6425; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6426; GENERIC-NEXT:    subi16 sp, sp, 4
6427; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6428; GENERIC-NEXT:    movi16 a1, 1
6429; GENERIC-NEXT:    and16 a1, a0
6430; GENERIC-NEXT:    cmpnei16 a1, 0
6431; GENERIC-NEXT:    bt16 .LBB139_2
6432; GENERIC-NEXT:  # %bb.1: # %label2
6433; GENERIC-NEXT:    movi16 a0, 0
6434; GENERIC-NEXT:    addi16 sp, sp, 4
6435; GENERIC-NEXT:    rts16
6436; GENERIC-NEXT:  .LBB139_2: # %label1
6437; GENERIC-NEXT:    movi16 a0, 1
6438; GENERIC-NEXT:    addi16 sp, sp, 4
6439; GENERIC-NEXT:    rts16
6440; CHECK-UGTXT:    icmpu32 a0, a1, a0
6441; CHECK-UGTXT:    rts16
6442entry:
6443  %icmp = icmp slt i1 %x, 10
6444  br i1 %icmp, label %label1, label %label2
6445label1:
6446  ret i1 1
6447label2:
6448  ret i1 0
6449}
6450
6451define i1 @brR0_i1_slt(i1 %x) {
6452; CHECK-LABEL: brR0_i1_slt:
6453; CHECK:       # %bb.0: # %entry
6454; CHECK-NEXT:    andi32 a0, a0, 1
6455; CHECK-NEXT:    bnez32 a0, .LBB140_2
6456; CHECK-NEXT:  # %bb.1: # %label2
6457; CHECK-NEXT:    movi16 a0, 0
6458; CHECK-NEXT:    rts16
6459; CHECK-NEXT:  .LBB140_2: # %label1
6460; CHECK-NEXT:    movi16 a0, 1
6461; CHECK-NEXT:    rts16
6462;
6463; GENERIC-LABEL: brR0_i1_slt:
6464; GENERIC:       # %bb.0: # %entry
6465; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6466; GENERIC-NEXT:    subi16 sp, sp, 4
6467; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6468; GENERIC-NEXT:    movi16 a1, 1
6469; GENERIC-NEXT:    and16 a1, a0
6470; GENERIC-NEXT:    cmpnei16 a1, 0
6471; GENERIC-NEXT:    bt16 .LBB140_2
6472; GENERIC-NEXT:  # %bb.1: # %label2
6473; GENERIC-NEXT:    movi16 a0, 0
6474; GENERIC-NEXT:    addi16 sp, sp, 4
6475; GENERIC-NEXT:    rts16
6476; GENERIC-NEXT:  .LBB140_2: # %label1
6477; GENERIC-NEXT:    movi16 a0, 1
6478; GENERIC-NEXT:    addi16 sp, sp, 4
6479; GENERIC-NEXT:    rts16
6480; CHECK-UGTXT:    icmpu32 a0, a1, a0
6481; CHECK-UGTXT:    rts16
6482entry:
6483  %icmp = icmp slt i1 %x, 0
6484  br i1 %icmp, label %label1, label %label2
6485label1:
6486  ret i1 1
6487label2:
6488  ret i1 0
6489}
6490
6491;SLE
6492define i1 @brRR_i1_sle(i1 %x, i1 %y) {
6493; CHECK-LABEL: brRR_i1_sle:
6494; CHECK:       # %bb.0: # %entry
6495; CHECK-NEXT:    sext32 a1, a1, 0, 0
6496; CHECK-NEXT:    sext32 a0, a0, 0, 0
6497; CHECK-NEXT:    cmplt16 a0, a1
6498; CHECK-NEXT:    bt32 .LBB141_2
6499; CHECK-NEXT:  # %bb.1: # %label1
6500; CHECK-NEXT:    movi16 a0, 1
6501; CHECK-NEXT:    rts16
6502; CHECK-NEXT:  .LBB141_2: # %label2
6503; CHECK-NEXT:    movi16 a0, 0
6504; CHECK-NEXT:    rts16
6505;
6506; GENERIC-LABEL: brRR_i1_sle:
6507; GENERIC:       # %bb.0: # %entry
6508; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6509; GENERIC-NEXT:    subi16 sp, sp, 4
6510; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6511; GENERIC-NEXT:    lsli16 a1, a1, 7
6512; GENERIC-NEXT:    asri16 a1, a1, 7
6513; GENERIC-NEXT:    lsli16 a0, a0, 7
6514; GENERIC-NEXT:    asri16 a0, a0, 7
6515; GENERIC-NEXT:    cmplt16 a0, a1
6516; GENERIC-NEXT:    bt16 .LBB141_2
6517; GENERIC-NEXT:  # %bb.1: # %label1
6518; GENERIC-NEXT:    movi16 a0, 1
6519; GENERIC-NEXT:    addi16 sp, sp, 4
6520; GENERIC-NEXT:    rts16
6521; GENERIC-NEXT:  .LBB141_2: # %label2
6522; GENERIC-NEXT:    movi16 a0, 0
6523; GENERIC-NEXT:    addi16 sp, sp, 4
6524; GENERIC-NEXT:    rts16
6525; CHECK-UGTXT:    icmpu32 a0, a1, a0
6526; CHECK-UGTXT:    rts16
6527entry:
6528  %icmp = icmp sle i1 %y, %x
6529  br i1 %icmp, label %label1, label %label2
6530label1:
6531  ret i1 1
6532label2:
6533  ret i1 0
6534}
6535
6536define i1 @brRI_i1_sle(i1 %x) {
6537; CHECK-LABEL: brRI_i1_sle:
6538; CHECK:       # %bb.0: # %entry
6539; CHECK-NEXT:    movi16 a0, 0
6540; CHECK-NEXT:    btsti32 a0, 0
6541; CHECK-NEXT:    bt32 .LBB142_2
6542; CHECK-NEXT:  # %bb.1: # %label1
6543; CHECK-NEXT:    movi16 a0, 1
6544; CHECK-NEXT:    rts16
6545; CHECK-NEXT:  .LBB142_2: # %label2
6546; CHECK-NEXT:    movi16 a0, 0
6547; CHECK-NEXT:    rts16
6548;
6549; GENERIC-LABEL: brRI_i1_sle:
6550; GENERIC:       # %bb.0: # %entry
6551; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6552; GENERIC-NEXT:    subi16 sp, sp, 4
6553; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6554; GENERIC-NEXT:    movi16 a0, 0
6555; GENERIC-NEXT:    btsti16 a0, 0
6556; GENERIC-NEXT:    bt16 .LBB142_2
6557; GENERIC-NEXT:  # %bb.1: # %label1
6558; GENERIC-NEXT:    movi16 a0, 1
6559; GENERIC-NEXT:    addi16 sp, sp, 4
6560; GENERIC-NEXT:    rts16
6561; GENERIC-NEXT:  .LBB142_2: # %label2
6562; GENERIC-NEXT:    movi16 a0, 0
6563; GENERIC-NEXT:    addi16 sp, sp, 4
6564; GENERIC-NEXT:    rts16
6565; CHECK-UGTXT:    icmpu32 a0, a1, a0
6566; CHECK-UGTXT:    rts16
6567entry:
6568  %icmp = icmp sle i1 %x, 10
6569  br i1 %icmp, label %label1, label %label2
6570label1:
6571  ret i1 1
6572label2:
6573  ret i1 0
6574}
6575
6576define i1 @brR0_i1_sle(i1 %x) {
6577; CHECK-LABEL: brR0_i1_sle:
6578; CHECK:       # %bb.0: # %entry
6579; CHECK-NEXT:    movi16 a0, 0
6580; CHECK-NEXT:    btsti32 a0, 0
6581; CHECK-NEXT:    bt32 .LBB143_2
6582; CHECK-NEXT:  # %bb.1: # %label1
6583; CHECK-NEXT:    movi16 a0, 1
6584; CHECK-NEXT:    rts16
6585; CHECK-NEXT:  .LBB143_2: # %label2
6586; CHECK-NEXT:    movi16 a0, 0
6587; CHECK-NEXT:    rts16
6588;
6589; GENERIC-LABEL: brR0_i1_sle:
6590; GENERIC:       # %bb.0: # %entry
6591; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6592; GENERIC-NEXT:    subi16 sp, sp, 4
6593; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6594; GENERIC-NEXT:    movi16 a0, 0
6595; GENERIC-NEXT:    btsti16 a0, 0
6596; GENERIC-NEXT:    bt16 .LBB143_2
6597; GENERIC-NEXT:  # %bb.1: # %label1
6598; GENERIC-NEXT:    movi16 a0, 1
6599; GENERIC-NEXT:    addi16 sp, sp, 4
6600; GENERIC-NEXT:    rts16
6601; GENERIC-NEXT:  .LBB143_2: # %label2
6602; GENERIC-NEXT:    movi16 a0, 0
6603; GENERIC-NEXT:    addi16 sp, sp, 4
6604; GENERIC-NEXT:    rts16
6605; CHECK-UGTXT:    icmpu32 a0, a1, a0
6606; CHECK-UGTXT:    rts16
6607entry:
6608  %icmp = icmp sle i1 %x, 0
6609  br i1 %icmp, label %label1, label %label2
6610label1:
6611  ret i1 1
6612label2:
6613  ret i1 0
6614}
6615
6616
6617define i1 @brCBit_i1(i1 %c) {
6618; CHECK-LABEL: brCBit_i1:
6619; CHECK:       # %bb.0: # %entry
6620; CHECK-NEXT:    andi32 a0, a0, 1
6621; CHECK-NEXT:    bez32 a0, .LBB144_2
6622; CHECK-NEXT:  # %bb.1: # %label1
6623; CHECK-NEXT:    movi16 a0, 1
6624; CHECK-NEXT:    rts16
6625; CHECK-NEXT:  .LBB144_2: # %label2
6626; CHECK-NEXT:    movi16 a0, 0
6627; CHECK-NEXT:    rts16
6628;
6629; GENERIC-LABEL: brCBit_i1:
6630; GENERIC:       # %bb.0: # %entry
6631; GENERIC-NEXT:    .cfi_def_cfa_offset 0
6632; GENERIC-NEXT:    subi16 sp, sp, 4
6633; GENERIC-NEXT:    .cfi_def_cfa_offset 4
6634; GENERIC-NEXT:    movi16 a1, 1
6635; GENERIC-NEXT:    and16 a1, a0
6636; GENERIC-NEXT:    cmpnei16 a1, 0
6637; GENERIC-NEXT:    bf16 .LBB144_2
6638; GENERIC-NEXT:  # %bb.1: # %label1
6639; GENERIC-NEXT:    movi16 a0, 1
6640; GENERIC-NEXT:    addi16 sp, sp, 4
6641; GENERIC-NEXT:    rts16
6642; GENERIC-NEXT:  .LBB144_2: # %label2
6643; GENERIC-NEXT:    movi16 a0, 0
6644; GENERIC-NEXT:    addi16 sp, sp, 4
6645; GENERIC-NEXT:    rts16
6646entry:
6647  br i1 %c, label %label1, label %label2
6648label1:
6649  ret i1 1
6650label2:
6651  ret i1 0
6652}
6653