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