Follow up to d0858bffa11, add missing REQUIRES x86
[llvm-project.git] / llvm / test / Transforms / InstSimplify / icmp-ranges.ll
blob7063728af89cc1d8ca6aee391bd6e706ef94ea25
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
4 ; Cycle through all pairs of predicates to test
5 ; simplification of range-intersection or range-union.
7 ; eq
8 ; x == 13 && x == 17
10 define i1 @and_eq_eq(i8 %x) {
11 ; CHECK-LABEL: @and_eq_eq(
12 ; CHECK-NEXT:    ret i1 false
14   %a = icmp eq i8 %x, 13
15   %b = icmp eq i8 %x, 17
16   %c = and i1 %a, %b
17   ret i1 %c
20 ; x == 13 && x != 17
22 define i1 @and_eq_ne(i8 %x) {
23 ; CHECK-LABEL: @and_eq_ne(
24 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 13
25 ; CHECK-NEXT:    ret i1 [[A]]
27   %a = icmp eq i8 %x, 13
28   %b = icmp ne i8 %x, 17
29   %c = and i1 %a, %b
30   ret i1 %c
33 ; x == 13 && x >=s 17
35 define i1 @and_eq_sge(i8 %x) {
36 ; CHECK-LABEL: @and_eq_sge(
37 ; CHECK-NEXT:    ret i1 false
39   %a = icmp eq i8 %x, 13
40   %b = icmp sge i8 %x, 17
41   %c = and i1 %a, %b
42   ret i1 %c
45 ; x == 13 && x >s 17
47 define i1 @and_eq_sgt(i8 %x) {
48 ; CHECK-LABEL: @and_eq_sgt(
49 ; CHECK-NEXT:    ret i1 false
51   %a = icmp eq i8 %x, 13
52   %b = icmp sgt i8 %x, 17
53   %c = and i1 %a, %b
54   ret i1 %c
57 ; x == 13 && x <=s 17
59 define i1 @and_eq_sle(i8 %x) {
60 ; CHECK-LABEL: @and_eq_sle(
61 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 13
62 ; CHECK-NEXT:    ret i1 [[A]]
64   %a = icmp eq i8 %x, 13
65   %b = icmp sle i8 %x, 17
66   %c = and i1 %a, %b
67   ret i1 %c
70 ; x == 13 && x <s 17
72 define i1 @and_eq_slt(i8 %x) {
73 ; CHECK-LABEL: @and_eq_slt(
74 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 13
75 ; CHECK-NEXT:    ret i1 [[A]]
77   %a = icmp eq i8 %x, 13
78   %b = icmp slt i8 %x, 17
79   %c = and i1 %a, %b
80   ret i1 %c
83 ; x == 13 && x >=u 17
85 define i1 @and_eq_uge(i8 %x) {
86 ; CHECK-LABEL: @and_eq_uge(
87 ; CHECK-NEXT:    ret i1 false
89   %a = icmp eq i8 %x, 13
90   %b = icmp uge i8 %x, 17
91   %c = and i1 %a, %b
92   ret i1 %c
95 ; x == 13 && x >u 17
97 define i1 @and_eq_ugt(i8 %x) {
98 ; CHECK-LABEL: @and_eq_ugt(
99 ; CHECK-NEXT:    ret i1 false
101   %a = icmp eq i8 %x, 13
102   %b = icmp ugt i8 %x, 17
103   %c = and i1 %a, %b
104   ret i1 %c
107 ; x == 13 && x <=u 17
109 define i1 @and_eq_ule(i8 %x) {
110 ; CHECK-LABEL: @and_eq_ule(
111 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 13
112 ; CHECK-NEXT:    ret i1 [[A]]
114   %a = icmp eq i8 %x, 13
115   %b = icmp ule i8 %x, 17
116   %c = and i1 %a, %b
117   ret i1 %c
120 ; x == 13 && x <u 17
122 define i1 @and_eq_ult(i8 %x) {
123 ; CHECK-LABEL: @and_eq_ult(
124 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 13
125 ; CHECK-NEXT:    ret i1 [[A]]
127   %a = icmp eq i8 %x, 13
128   %b = icmp ult i8 %x, 17
129   %c = and i1 %a, %b
130   ret i1 %c
133 ; ne
134 ; x != 13 && x == 17
136 define i1 @and_ne_eq(i8 %x) {
137 ; CHECK-LABEL: @and_ne_eq(
138 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X:%.*]], 17
139 ; CHECK-NEXT:    ret i1 [[B]]
141   %a = icmp ne i8 %x, 13
142   %b = icmp eq i8 %x, 17
143   %c = and i1 %a, %b
144   ret i1 %c
147 ; x != 13 && x != 17
149 define i1 @and_ne_ne(i8 %x) {
150 ; CHECK-LABEL: @and_ne_ne(
151 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 13
152 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X]], 17
153 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
154 ; CHECK-NEXT:    ret i1 [[C]]
156   %a = icmp ne i8 %x, 13
157   %b = icmp ne i8 %x, 17
158   %c = and i1 %a, %b
159   ret i1 %c
162 ; x != 13 && x >=s 17
164 define i1 @and_ne_sge(i8 %x) {
165 ; CHECK-LABEL: @and_ne_sge(
166 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X:%.*]], 17
167 ; CHECK-NEXT:    ret i1 [[B]]
169   %a = icmp ne i8 %x, 13
170   %b = icmp sge i8 %x, 17
171   %c = and i1 %a, %b
172   ret i1 %c
175 ; x != 13 && x >s 17
177 define i1 @and_ne_sgt(i8 %x) {
178 ; CHECK-LABEL: @and_ne_sgt(
179 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17
180 ; CHECK-NEXT:    ret i1 [[B]]
182   %a = icmp ne i8 %x, 13
183   %b = icmp sgt i8 %x, 17
184   %c = and i1 %a, %b
185   ret i1 %c
188 ; x != 13 && x <=s 17
190 define i1 @and_ne_sle(i8 %x) {
191 ; CHECK-LABEL: @and_ne_sle(
192 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 13
193 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
194 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
195 ; CHECK-NEXT:    ret i1 [[C]]
197   %a = icmp ne i8 %x, 13
198   %b = icmp sle i8 %x, 17
199   %c = and i1 %a, %b
200   ret i1 %c
203 ; x != 13 && x <s 17
205 define i1 @and_ne_slt(i8 %x) {
206 ; CHECK-LABEL: @and_ne_slt(
207 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 13
208 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
209 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
210 ; CHECK-NEXT:    ret i1 [[C]]
212   %a = icmp ne i8 %x, 13
213   %b = icmp slt i8 %x, 17
214   %c = and i1 %a, %b
215   ret i1 %c
218 ; x != 13 && x >=u 17
220 define i1 @and_ne_uge(i8 %x) {
221 ; CHECK-LABEL: @and_ne_uge(
222 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X:%.*]], 17
223 ; CHECK-NEXT:    ret i1 [[B]]
225   %a = icmp ne i8 %x, 13
226   %b = icmp uge i8 %x, 17
227   %c = and i1 %a, %b
228   ret i1 %c
231 ; x != 13 && x >u 17
233 define i1 @and_ne_ugt(i8 %x) {
234 ; CHECK-LABEL: @and_ne_ugt(
235 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17
236 ; CHECK-NEXT:    ret i1 [[B]]
238   %a = icmp ne i8 %x, 13
239   %b = icmp ugt i8 %x, 17
240   %c = and i1 %a, %b
241   ret i1 %c
244 ; x != 13 && x <=u 17
246 define i1 @and_ne_ule(i8 %x) {
247 ; CHECK-LABEL: @and_ne_ule(
248 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 13
249 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
250 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
251 ; CHECK-NEXT:    ret i1 [[C]]
253   %a = icmp ne i8 %x, 13
254   %b = icmp ule i8 %x, 17
255   %c = and i1 %a, %b
256   ret i1 %c
259 ; x != 13 && x <u 17
261 define i1 @and_ne_ult(i8 %x) {
262 ; CHECK-LABEL: @and_ne_ult(
263 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 13
264 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
265 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
266 ; CHECK-NEXT:    ret i1 [[C]]
268   %a = icmp ne i8 %x, 13
269   %b = icmp ult i8 %x, 17
270   %c = and i1 %a, %b
271   ret i1 %c
274 ; sge
275 ; x >=s 13 && x == 17
277 define i1 @and_sge_eq(i8 %x) {
278 ; CHECK-LABEL: @and_sge_eq(
279 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X:%.*]], 17
280 ; CHECK-NEXT:    ret i1 [[B]]
282   %a = icmp sge i8 %x, 13
283   %b = icmp eq i8 %x, 17
284   %c = and i1 %a, %b
285   ret i1 %c
288 ; x >=s 13 && x != 17
290 define i1 @and_sge_ne(i8 %x) {
291 ; CHECK-LABEL: @and_sge_ne(
292 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
293 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X]], 17
294 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
295 ; CHECK-NEXT:    ret i1 [[C]]
297   %a = icmp sge i8 %x, 13
298   %b = icmp ne i8 %x, 17
299   %c = and i1 %a, %b
300   ret i1 %c
303 ; x >=s 13 && x >=s 17
305 define i1 @and_sge_sge(i8 %x) {
306 ; CHECK-LABEL: @and_sge_sge(
307 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X:%.*]], 17
308 ; CHECK-NEXT:    ret i1 [[B]]
310   %a = icmp sge i8 %x, 13
311   %b = icmp sge i8 %x, 17
312   %c = and i1 %a, %b
313   ret i1 %c
316 ; x >=s 13 && x >s 17
318 define i1 @and_sge_sgt(i8 %x) {
319 ; CHECK-LABEL: @and_sge_sgt(
320 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17
321 ; CHECK-NEXT:    ret i1 [[B]]
323   %a = icmp sge i8 %x, 13
324   %b = icmp sgt i8 %x, 17
325   %c = and i1 %a, %b
326   ret i1 %c
329 ; x >=s 13 && x <=s 17
331 define i1 @and_sge_sle(i8 %x) {
332 ; CHECK-LABEL: @and_sge_sle(
333 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
334 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
335 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
336 ; CHECK-NEXT:    ret i1 [[C]]
338   %a = icmp sge i8 %x, 13
339   %b = icmp sle i8 %x, 17
340   %c = and i1 %a, %b
341   ret i1 %c
344 ; x >=s 13 && x <s 17
346 define i1 @and_sge_slt(i8 %x) {
347 ; CHECK-LABEL: @and_sge_slt(
348 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
349 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
350 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
351 ; CHECK-NEXT:    ret i1 [[C]]
353   %a = icmp sge i8 %x, 13
354   %b = icmp slt i8 %x, 17
355   %c = and i1 %a, %b
356   ret i1 %c
359 ; x >=s 13 && x >=u 17
361 define i1 @and_sge_uge(i8 %x) {
362 ; CHECK-LABEL: @and_sge_uge(
363 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
364 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
365 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
366 ; CHECK-NEXT:    ret i1 [[C]]
368   %a = icmp sge i8 %x, 13
369   %b = icmp uge i8 %x, 17
370   %c = and i1 %a, %b
371   ret i1 %c
374 ; x >=s 13 && x >u 17
376 define i1 @and_sge_ugt(i8 %x) {
377 ; CHECK-LABEL: @and_sge_ugt(
378 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
379 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
380 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
381 ; CHECK-NEXT:    ret i1 [[C]]
383   %a = icmp sge i8 %x, 13
384   %b = icmp ugt i8 %x, 17
385   %c = and i1 %a, %b
386   ret i1 %c
389 ; x >=s 13 && x <=u 17
391 define i1 @and_sge_ule(i8 %x) {
392 ; CHECK-LABEL: @and_sge_ule(
393 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
394 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
395 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
396 ; CHECK-NEXT:    ret i1 [[C]]
398   %a = icmp sge i8 %x, 13
399   %b = icmp ule i8 %x, 17
400   %c = and i1 %a, %b
401   ret i1 %c
404 ; x >=s 13 && x <u 17
406 define i1 @and_sge_ult(i8 %x) {
407 ; CHECK-LABEL: @and_sge_ult(
408 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
409 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
410 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
411 ; CHECK-NEXT:    ret i1 [[C]]
413   %a = icmp sge i8 %x, 13
414   %b = icmp ult i8 %x, 17
415   %c = and i1 %a, %b
416   ret i1 %c
419 ; sgt
420 ; x >s 13 && x == 17
422 define i1 @and_sgt_eq(i8 %x) {
423 ; CHECK-LABEL: @and_sgt_eq(
424 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X:%.*]], 17
425 ; CHECK-NEXT:    ret i1 [[B]]
427   %a = icmp sgt i8 %x, 13
428   %b = icmp eq i8 %x, 17
429   %c = and i1 %a, %b
430   ret i1 %c
433 ; x >s 13 && x != 17
435 define i1 @and_sgt_ne(i8 %x) {
436 ; CHECK-LABEL: @and_sgt_ne(
437 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
438 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X]], 17
439 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
440 ; CHECK-NEXT:    ret i1 [[C]]
442   %a = icmp sgt i8 %x, 13
443   %b = icmp ne i8 %x, 17
444   %c = and i1 %a, %b
445   ret i1 %c
448 ; x >s 13 && x >=s 17
450 define i1 @and_sgt_sge(i8 %x) {
451 ; CHECK-LABEL: @and_sgt_sge(
452 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X:%.*]], 17
453 ; CHECK-NEXT:    ret i1 [[B]]
455   %a = icmp sgt i8 %x, 13
456   %b = icmp sge i8 %x, 17
457   %c = and i1 %a, %b
458   ret i1 %c
461 ; x >s 13 && x >s 17
463 define i1 @and_sgt_sgt(i8 %x) {
464 ; CHECK-LABEL: @and_sgt_sgt(
465 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17
466 ; CHECK-NEXT:    ret i1 [[B]]
468   %a = icmp sgt i8 %x, 13
469   %b = icmp sgt i8 %x, 17
470   %c = and i1 %a, %b
471   ret i1 %c
474 ; x >s 13 && x <=s 17
476 define i1 @and_sgt_sle(i8 %x) {
477 ; CHECK-LABEL: @and_sgt_sle(
478 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
479 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
480 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
481 ; CHECK-NEXT:    ret i1 [[C]]
483   %a = icmp sgt i8 %x, 13
484   %b = icmp sle i8 %x, 17
485   %c = and i1 %a, %b
486   ret i1 %c
489 ; x >s 13 && x <s 17
491 define i1 @and_sgt_slt(i8 %x) {
492 ; CHECK-LABEL: @and_sgt_slt(
493 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
494 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
495 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
496 ; CHECK-NEXT:    ret i1 [[C]]
498   %a = icmp sgt i8 %x, 13
499   %b = icmp slt i8 %x, 17
500   %c = and i1 %a, %b
501   ret i1 %c
504 ; x >s 13 && x >=u 17
506 define i1 @and_sgt_uge(i8 %x) {
507 ; CHECK-LABEL: @and_sgt_uge(
508 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
509 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
510 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
511 ; CHECK-NEXT:    ret i1 [[C]]
513   %a = icmp sgt i8 %x, 13
514   %b = icmp uge i8 %x, 17
515   %c = and i1 %a, %b
516   ret i1 %c
519 ; x >s 13 && x >u 17
521 define i1 @and_sgt_ugt(i8 %x) {
522 ; CHECK-LABEL: @and_sgt_ugt(
523 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
524 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
525 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
526 ; CHECK-NEXT:    ret i1 [[C]]
528   %a = icmp sgt i8 %x, 13
529   %b = icmp ugt i8 %x, 17
530   %c = and i1 %a, %b
531   ret i1 %c
534 ; x >s 13 && x <=u 17
536 define i1 @and_sgt_ule(i8 %x) {
537 ; CHECK-LABEL: @and_sgt_ule(
538 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
539 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
540 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
541 ; CHECK-NEXT:    ret i1 [[C]]
543   %a = icmp sgt i8 %x, 13
544   %b = icmp ule i8 %x, 17
545   %c = and i1 %a, %b
546   ret i1 %c
549 ; x >s 13 && x <u 17
551 define i1 @and_sgt_ult(i8 %x) {
552 ; CHECK-LABEL: @and_sgt_ult(
553 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
554 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
555 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
556 ; CHECK-NEXT:    ret i1 [[C]]
558   %a = icmp sgt i8 %x, 13
559   %b = icmp ult i8 %x, 17
560   %c = and i1 %a, %b
561   ret i1 %c
564 ; sle
565 ; x <=s 13 && x == 17
567 define i1 @and_sle_eq(i8 %x) {
568 ; CHECK-LABEL: @and_sle_eq(
569 ; CHECK-NEXT:    ret i1 false
571   %a = icmp sle i8 %x, 13
572   %b = icmp eq i8 %x, 17
573   %c = and i1 %a, %b
574   ret i1 %c
577 ; x <=s 13 && x != 17
579 define i1 @and_sle_ne(i8 %x) {
580 ; CHECK-LABEL: @and_sle_ne(
581 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
582 ; CHECK-NEXT:    ret i1 [[A]]
584   %a = icmp sle i8 %x, 13
585   %b = icmp ne i8 %x, 17
586   %c = and i1 %a, %b
587   ret i1 %c
590 ; x <=s 13 && x >=s 17
592 define i1 @and_sle_sge(i8 %x) {
593 ; CHECK-LABEL: @and_sle_sge(
594 ; CHECK-NEXT:    ret i1 false
596   %a = icmp sle i8 %x, 13
597   %b = icmp sge i8 %x, 17
598   %c = and i1 %a, %b
599   ret i1 %c
602 ; x <=s 13 && x >s 17
604 define i1 @and_sle_sgt(i8 %x) {
605 ; CHECK-LABEL: @and_sle_sgt(
606 ; CHECK-NEXT:    ret i1 false
608   %a = icmp sle i8 %x, 13
609   %b = icmp sgt i8 %x, 17
610   %c = and i1 %a, %b
611   ret i1 %c
614 ; x <=s 13 && x <=s 17
616 define i1 @and_sle_sle(i8 %x) {
617 ; CHECK-LABEL: @and_sle_sle(
618 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
619 ; CHECK-NEXT:    ret i1 [[A]]
621   %a = icmp sle i8 %x, 13
622   %b = icmp sle i8 %x, 17
623   %c = and i1 %a, %b
624   ret i1 %c
627 ; x <=s 13 && x <s 17
629 define i1 @and_sle_slt(i8 %x) {
630 ; CHECK-LABEL: @and_sle_slt(
631 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
632 ; CHECK-NEXT:    ret i1 [[A]]
634   %a = icmp sle i8 %x, 13
635   %b = icmp slt i8 %x, 17
636   %c = and i1 %a, %b
637   ret i1 %c
640 ; x <=s 13 && x >=u 17
642 define i1 @and_sle_uge(i8 %x) {
643 ; CHECK-LABEL: @and_sle_uge(
644 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
645 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
646 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
647 ; CHECK-NEXT:    ret i1 [[C]]
649   %a = icmp sle i8 %x, 13
650   %b = icmp uge i8 %x, 17
651   %c = and i1 %a, %b
652   ret i1 %c
655 ; x <=s 13 && x >u 17
657 define i1 @and_sle_ugt(i8 %x) {
658 ; CHECK-LABEL: @and_sle_ugt(
659 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
660 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
661 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
662 ; CHECK-NEXT:    ret i1 [[C]]
664   %a = icmp sle i8 %x, 13
665   %b = icmp ugt i8 %x, 17
666   %c = and i1 %a, %b
667   ret i1 %c
670 ; x <=s 13 && x <=u 17
672 define i1 @and_sle_ule(i8 %x) {
673 ; CHECK-LABEL: @and_sle_ule(
674 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
675 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
676 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
677 ; CHECK-NEXT:    ret i1 [[C]]
679   %a = icmp sle i8 %x, 13
680   %b = icmp ule i8 %x, 17
681   %c = and i1 %a, %b
682   ret i1 %c
685 ; x <=s 13 && x <u 17
687 define i1 @and_sle_ult(i8 %x) {
688 ; CHECK-LABEL: @and_sle_ult(
689 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
690 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
691 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
692 ; CHECK-NEXT:    ret i1 [[C]]
694   %a = icmp sle i8 %x, 13
695   %b = icmp ult i8 %x, 17
696   %c = and i1 %a, %b
697   ret i1 %c
700 ; slt
701 ; x <s 13 && x == 17
703 define i1 @and_slt_eq(i8 %x) {
704 ; CHECK-LABEL: @and_slt_eq(
705 ; CHECK-NEXT:    ret i1 false
707   %a = icmp slt i8 %x, 13
708   %b = icmp eq i8 %x, 17
709   %c = and i1 %a, %b
710   ret i1 %c
713 ; x <s 13 && x != 17
715 define i1 @and_slt_ne(i8 %x) {
716 ; CHECK-LABEL: @and_slt_ne(
717 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
718 ; CHECK-NEXT:    ret i1 [[A]]
720   %a = icmp slt i8 %x, 13
721   %b = icmp ne i8 %x, 17
722   %c = and i1 %a, %b
723   ret i1 %c
726 ; x <s 13 && x >=s 17
728 define i1 @and_slt_sge(i8 %x) {
729 ; CHECK-LABEL: @and_slt_sge(
730 ; CHECK-NEXT:    ret i1 false
732   %a = icmp slt i8 %x, 13
733   %b = icmp sge i8 %x, 17
734   %c = and i1 %a, %b
735   ret i1 %c
738 ; x <s 13 && x >s 17
740 define i1 @and_slt_sgt(i8 %x) {
741 ; CHECK-LABEL: @and_slt_sgt(
742 ; CHECK-NEXT:    ret i1 false
744   %a = icmp slt i8 %x, 13
745   %b = icmp sgt i8 %x, 17
746   %c = and i1 %a, %b
747   ret i1 %c
750 ; x <s 13 && x <=s 17
752 define i1 @and_slt_sle(i8 %x) {
753 ; CHECK-LABEL: @and_slt_sle(
754 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
755 ; CHECK-NEXT:    ret i1 [[A]]
757   %a = icmp slt i8 %x, 13
758   %b = icmp sle i8 %x, 17
759   %c = and i1 %a, %b
760   ret i1 %c
763 ; x <s 13 && x <s 17
765 define i1 @and_slt_slt(i8 %x) {
766 ; CHECK-LABEL: @and_slt_slt(
767 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
768 ; CHECK-NEXT:    ret i1 [[A]]
770   %a = icmp slt i8 %x, 13
771   %b = icmp slt i8 %x, 17
772   %c = and i1 %a, %b
773   ret i1 %c
776 ; x <s 13 && x >=u 17
778 define i1 @and_slt_uge(i8 %x) {
779 ; CHECK-LABEL: @and_slt_uge(
780 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
781 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
782 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
783 ; CHECK-NEXT:    ret i1 [[C]]
785   %a = icmp slt i8 %x, 13
786   %b = icmp uge i8 %x, 17
787   %c = and i1 %a, %b
788   ret i1 %c
791 ; x <s 13 && x >u 17
793 define i1 @and_slt_ugt(i8 %x) {
794 ; CHECK-LABEL: @and_slt_ugt(
795 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
796 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
797 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
798 ; CHECK-NEXT:    ret i1 [[C]]
800   %a = icmp slt i8 %x, 13
801   %b = icmp ugt i8 %x, 17
802   %c = and i1 %a, %b
803   ret i1 %c
806 ; x <s 13 && x <=u 17
808 define i1 @and_slt_ule(i8 %x) {
809 ; CHECK-LABEL: @and_slt_ule(
810 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
811 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
812 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
813 ; CHECK-NEXT:    ret i1 [[C]]
815   %a = icmp slt i8 %x, 13
816   %b = icmp ule i8 %x, 17
817   %c = and i1 %a, %b
818   ret i1 %c
821 ; x <s 13 && x <u 17
823 define i1 @and_slt_ult(i8 %x) {
824 ; CHECK-LABEL: @and_slt_ult(
825 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
826 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
827 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
828 ; CHECK-NEXT:    ret i1 [[C]]
830   %a = icmp slt i8 %x, 13
831   %b = icmp ult i8 %x, 17
832   %c = and i1 %a, %b
833   ret i1 %c
836 ; uge
837 ; x >=u 13 && x == 17
839 define i1 @and_uge_eq(i8 %x) {
840 ; CHECK-LABEL: @and_uge_eq(
841 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X:%.*]], 17
842 ; CHECK-NEXT:    ret i1 [[B]]
844   %a = icmp uge i8 %x, 13
845   %b = icmp eq i8 %x, 17
846   %c = and i1 %a, %b
847   ret i1 %c
850 ; x >=u 13 && x != 17
852 define i1 @and_uge_ne(i8 %x) {
853 ; CHECK-LABEL: @and_uge_ne(
854 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 13
855 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X]], 17
856 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
857 ; CHECK-NEXT:    ret i1 [[C]]
859   %a = icmp uge i8 %x, 13
860   %b = icmp ne i8 %x, 17
861   %c = and i1 %a, %b
862   ret i1 %c
865 ; x >=u 13 && x >=s 17
867 define i1 @and_uge_sge(i8 %x) {
868 ; CHECK-LABEL: @and_uge_sge(
869 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X:%.*]], 17
870 ; CHECK-NEXT:    ret i1 [[B]]
872   %a = icmp uge i8 %x, 13
873   %b = icmp sge i8 %x, 17
874   %c = and i1 %a, %b
875   ret i1 %c
878 ; x >=u 13 && x >s 17
880 define i1 @and_uge_sgt(i8 %x) {
881 ; CHECK-LABEL: @and_uge_sgt(
882 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17
883 ; CHECK-NEXT:    ret i1 [[B]]
885   %a = icmp uge i8 %x, 13
886   %b = icmp sgt i8 %x, 17
887   %c = and i1 %a, %b
888   ret i1 %c
891 ; x >=u 13 && x <=s 17
893 define i1 @and_uge_sle(i8 %x) {
894 ; CHECK-LABEL: @and_uge_sle(
895 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 13
896 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
897 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
898 ; CHECK-NEXT:    ret i1 [[C]]
900   %a = icmp uge i8 %x, 13
901   %b = icmp sle i8 %x, 17
902   %c = and i1 %a, %b
903   ret i1 %c
906 ; x >=u 13 && x <s 17
908 define i1 @and_uge_slt(i8 %x) {
909 ; CHECK-LABEL: @and_uge_slt(
910 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 13
911 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
912 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
913 ; CHECK-NEXT:    ret i1 [[C]]
915   %a = icmp uge i8 %x, 13
916   %b = icmp slt i8 %x, 17
917   %c = and i1 %a, %b
918   ret i1 %c
921 ; x >=u 13 && x >=u 17
923 define i1 @and_uge_uge(i8 %x) {
924 ; CHECK-LABEL: @and_uge_uge(
925 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X:%.*]], 17
926 ; CHECK-NEXT:    ret i1 [[B]]
928   %a = icmp uge i8 %x, 13
929   %b = icmp uge i8 %x, 17
930   %c = and i1 %a, %b
931   ret i1 %c
934 ; x >=u 13 && x >u 17
936 define i1 @and_uge_ugt(i8 %x) {
937 ; CHECK-LABEL: @and_uge_ugt(
938 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17
939 ; CHECK-NEXT:    ret i1 [[B]]
941   %a = icmp uge i8 %x, 13
942   %b = icmp ugt i8 %x, 17
943   %c = and i1 %a, %b
944   ret i1 %c
947 ; x >=u 13 && x <=u 17
949 define i1 @and_uge_ule(i8 %x) {
950 ; CHECK-LABEL: @and_uge_ule(
951 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 13
952 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
953 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
954 ; CHECK-NEXT:    ret i1 [[C]]
956   %a = icmp uge i8 %x, 13
957   %b = icmp ule i8 %x, 17
958   %c = and i1 %a, %b
959   ret i1 %c
962 ; x >=u 13 && x <u 17
964 define i1 @and_uge_ult(i8 %x) {
965 ; CHECK-LABEL: @and_uge_ult(
966 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 13
967 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
968 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
969 ; CHECK-NEXT:    ret i1 [[C]]
971   %a = icmp uge i8 %x, 13
972   %b = icmp ult i8 %x, 17
973   %c = and i1 %a, %b
974   ret i1 %c
977 ; ugt
978 ; x >u 13 && x == 17
980 define i1 @and_ugt_eq(i8 %x) {
981 ; CHECK-LABEL: @and_ugt_eq(
982 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X:%.*]], 17
983 ; CHECK-NEXT:    ret i1 [[B]]
985   %a = icmp ugt i8 %x, 13
986   %b = icmp eq i8 %x, 17
987   %c = and i1 %a, %b
988   ret i1 %c
991 ; x >u 13 && x != 17
993 define i1 @and_ugt_ne(i8 %x) {
994 ; CHECK-LABEL: @and_ugt_ne(
995 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13
996 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X]], 17
997 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
998 ; CHECK-NEXT:    ret i1 [[C]]
1000   %a = icmp ugt i8 %x, 13
1001   %b = icmp ne i8 %x, 17
1002   %c = and i1 %a, %b
1003   ret i1 %c
1006 ; x >u 13 && x >=s 17
1008 define i1 @and_ugt_sge(i8 %x) {
1009 ; CHECK-LABEL: @and_ugt_sge(
1010 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X:%.*]], 17
1011 ; CHECK-NEXT:    ret i1 [[B]]
1013   %a = icmp ugt i8 %x, 13
1014   %b = icmp sge i8 %x, 17
1015   %c = and i1 %a, %b
1016   ret i1 %c
1019 ; x >u 13 && x >s 17
1021 define i1 @and_ugt_sgt(i8 %x) {
1022 ; CHECK-LABEL: @and_ugt_sgt(
1023 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17
1024 ; CHECK-NEXT:    ret i1 [[B]]
1026   %a = icmp ugt i8 %x, 13
1027   %b = icmp sgt i8 %x, 17
1028   %c = and i1 %a, %b
1029   ret i1 %c
1032 ; x >u 13 && x <=s 17
1034 define i1 @and_ugt_sle(i8 %x) {
1035 ; CHECK-LABEL: @and_ugt_sle(
1036 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13
1037 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
1038 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1039 ; CHECK-NEXT:    ret i1 [[C]]
1041   %a = icmp ugt i8 %x, 13
1042   %b = icmp sle i8 %x, 17
1043   %c = and i1 %a, %b
1044   ret i1 %c
1047 ; x >u 13 && x <s 17
1049 define i1 @and_ugt_slt(i8 %x) {
1050 ; CHECK-LABEL: @and_ugt_slt(
1051 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13
1052 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
1053 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1054 ; CHECK-NEXT:    ret i1 [[C]]
1056   %a = icmp ugt i8 %x, 13
1057   %b = icmp slt i8 %x, 17
1058   %c = and i1 %a, %b
1059   ret i1 %c
1062 ; x >u 13 && x >=u 17
1064 define i1 @and_ugt_uge(i8 %x) {
1065 ; CHECK-LABEL: @and_ugt_uge(
1066 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X:%.*]], 17
1067 ; CHECK-NEXT:    ret i1 [[B]]
1069   %a = icmp ugt i8 %x, 13
1070   %b = icmp uge i8 %x, 17
1071   %c = and i1 %a, %b
1072   ret i1 %c
1075 ; x >u 13 && x >u 17
1077 define i1 @and_ugt_ugt(i8 %x) {
1078 ; CHECK-LABEL: @and_ugt_ugt(
1079 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17
1080 ; CHECK-NEXT:    ret i1 [[B]]
1082   %a = icmp ugt i8 %x, 13
1083   %b = icmp ugt i8 %x, 17
1084   %c = and i1 %a, %b
1085   ret i1 %c
1088 ; x >u 13 && x <=u 17
1090 define i1 @and_ugt_ule(i8 %x) {
1091 ; CHECK-LABEL: @and_ugt_ule(
1092 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13
1093 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
1094 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1095 ; CHECK-NEXT:    ret i1 [[C]]
1097   %a = icmp ugt i8 %x, 13
1098   %b = icmp ule i8 %x, 17
1099   %c = and i1 %a, %b
1100   ret i1 %c
1103 ; x >u 13 && x <u 17
1105 define i1 @and_ugt_ult(i8 %x) {
1106 ; CHECK-LABEL: @and_ugt_ult(
1107 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13
1108 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
1109 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1110 ; CHECK-NEXT:    ret i1 [[C]]
1112   %a = icmp ugt i8 %x, 13
1113   %b = icmp ult i8 %x, 17
1114   %c = and i1 %a, %b
1115   ret i1 %c
1118 ; ule
1119 ; x <=u 13 && x == 17
1121 define i1 @and_ule_eq(i8 %x) {
1122 ; CHECK-LABEL: @and_ule_eq(
1123 ; CHECK-NEXT:    ret i1 false
1125   %a = icmp ule i8 %x, 13
1126   %b = icmp eq i8 %x, 17
1127   %c = and i1 %a, %b
1128   ret i1 %c
1131 ; x <=u 13 && x != 17
1133 define i1 @and_ule_ne(i8 %x) {
1134 ; CHECK-LABEL: @and_ule_ne(
1135 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 13
1136 ; CHECK-NEXT:    ret i1 [[A]]
1138   %a = icmp ule i8 %x, 13
1139   %b = icmp ne i8 %x, 17
1140   %c = and i1 %a, %b
1141   ret i1 %c
1144 ; x <=u 13 && x >=s 17
1146 define i1 @and_ule_sge(i8 %x) {
1147 ; CHECK-LABEL: @and_ule_sge(
1148 ; CHECK-NEXT:    ret i1 false
1150   %a = icmp ule i8 %x, 13
1151   %b = icmp sge i8 %x, 17
1152   %c = and i1 %a, %b
1153   ret i1 %c
1156 ; x <=u 13 && x >s 17
1158 define i1 @and_ule_sgt(i8 %x) {
1159 ; CHECK-LABEL: @and_ule_sgt(
1160 ; CHECK-NEXT:    ret i1 false
1162   %a = icmp ule i8 %x, 13
1163   %b = icmp sgt i8 %x, 17
1164   %c = and i1 %a, %b
1165   ret i1 %c
1168 ; x <=u 13 && x <=s 17
1170 define i1 @and_ule_sle(i8 %x) {
1171 ; CHECK-LABEL: @and_ule_sle(
1172 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 13
1173 ; CHECK-NEXT:    ret i1 [[A]]
1175   %a = icmp ule i8 %x, 13
1176   %b = icmp sle i8 %x, 17
1177   %c = and i1 %a, %b
1178   ret i1 %c
1181 ; x <=u 13 && x <s 17
1183 define i1 @and_ule_slt(i8 %x) {
1184 ; CHECK-LABEL: @and_ule_slt(
1185 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 13
1186 ; CHECK-NEXT:    ret i1 [[A]]
1188   %a = icmp ule i8 %x, 13
1189   %b = icmp slt i8 %x, 17
1190   %c = and i1 %a, %b
1191   ret i1 %c
1194 ; x <=u 13 && x >=u 17
1196 define i1 @and_ule_uge(i8 %x) {
1197 ; CHECK-LABEL: @and_ule_uge(
1198 ; CHECK-NEXT:    ret i1 false
1200   %a = icmp ule i8 %x, 13
1201   %b = icmp uge i8 %x, 17
1202   %c = and i1 %a, %b
1203   ret i1 %c
1206 ; x <=u 13 && x >u 17
1208 define i1 @and_ule_ugt(i8 %x) {
1209 ; CHECK-LABEL: @and_ule_ugt(
1210 ; CHECK-NEXT:    ret i1 false
1212   %a = icmp ule i8 %x, 13
1213   %b = icmp ugt i8 %x, 17
1214   %c = and i1 %a, %b
1215   ret i1 %c
1218 ; x <=u 13 && x <=u 17
1220 define i1 @and_ule_ule(i8 %x) {
1221 ; CHECK-LABEL: @and_ule_ule(
1222 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 13
1223 ; CHECK-NEXT:    ret i1 [[A]]
1225   %a = icmp ule i8 %x, 13
1226   %b = icmp ule i8 %x, 17
1227   %c = and i1 %a, %b
1228   ret i1 %c
1231 ; x <=u 13 && x <u 17
1233 define i1 @and_ule_ult(i8 %x) {
1234 ; CHECK-LABEL: @and_ule_ult(
1235 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 13
1236 ; CHECK-NEXT:    ret i1 [[A]]
1238   %a = icmp ule i8 %x, 13
1239   %b = icmp ult i8 %x, 17
1240   %c = and i1 %a, %b
1241   ret i1 %c
1244 ; ult
1245 ; x <u 13 && x == 17
1247 define i1 @and_ult_eq(i8 %x) {
1248 ; CHECK-LABEL: @and_ult_eq(
1249 ; CHECK-NEXT:    ret i1 false
1251   %a = icmp ult i8 %x, 13
1252   %b = icmp eq i8 %x, 17
1253   %c = and i1 %a, %b
1254   ret i1 %c
1257 ; x <u 13 && x != 17
1259 define i1 @and_ult_ne(i8 %x) {
1260 ; CHECK-LABEL: @and_ult_ne(
1261 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 13
1262 ; CHECK-NEXT:    ret i1 [[A]]
1264   %a = icmp ult i8 %x, 13
1265   %b = icmp ne i8 %x, 17
1266   %c = and i1 %a, %b
1267   ret i1 %c
1270 ; x <u 13 && x >=s 17
1272 define i1 @and_ult_sge(i8 %x) {
1273 ; CHECK-LABEL: @and_ult_sge(
1274 ; CHECK-NEXT:    ret i1 false
1276   %a = icmp ult i8 %x, 13
1277   %b = icmp sge i8 %x, 17
1278   %c = and i1 %a, %b
1279   ret i1 %c
1282 ; x <u 13 && x >s 17
1284 define i1 @and_ult_sgt(i8 %x) {
1285 ; CHECK-LABEL: @and_ult_sgt(
1286 ; CHECK-NEXT:    ret i1 false
1288   %a = icmp ult i8 %x, 13
1289   %b = icmp sgt i8 %x, 17
1290   %c = and i1 %a, %b
1291   ret i1 %c
1294 ; x <u 13 && x <=s 17
1296 define i1 @and_ult_sle(i8 %x) {
1297 ; CHECK-LABEL: @and_ult_sle(
1298 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 13
1299 ; CHECK-NEXT:    ret i1 [[A]]
1301   %a = icmp ult i8 %x, 13
1302   %b = icmp sle i8 %x, 17
1303   %c = and i1 %a, %b
1304   ret i1 %c
1307 ; x <u 13 && x <s 17
1309 define i1 @and_ult_slt(i8 %x) {
1310 ; CHECK-LABEL: @and_ult_slt(
1311 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 13
1312 ; CHECK-NEXT:    ret i1 [[A]]
1314   %a = icmp ult i8 %x, 13
1315   %b = icmp slt i8 %x, 17
1316   %c = and i1 %a, %b
1317   ret i1 %c
1320 ; x <u 13 && x >=u 17
1322 define i1 @and_ult_uge(i8 %x) {
1323 ; CHECK-LABEL: @and_ult_uge(
1324 ; CHECK-NEXT:    ret i1 false
1326   %a = icmp ult i8 %x, 13
1327   %b = icmp uge i8 %x, 17
1328   %c = and i1 %a, %b
1329   ret i1 %c
1332 ; x <u 13 && x >u 17
1334 define i1 @and_ult_ugt(i8 %x) {
1335 ; CHECK-LABEL: @and_ult_ugt(
1336 ; CHECK-NEXT:    ret i1 false
1338   %a = icmp ult i8 %x, 13
1339   %b = icmp ugt i8 %x, 17
1340   %c = and i1 %a, %b
1341   ret i1 %c
1344 ; x <u 13 && x <=u 17
1346 define i1 @and_ult_ule(i8 %x) {
1347 ; CHECK-LABEL: @and_ult_ule(
1348 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 13
1349 ; CHECK-NEXT:    ret i1 [[A]]
1351   %a = icmp ult i8 %x, 13
1352   %b = icmp ule i8 %x, 17
1353   %c = and i1 %a, %b
1354   ret i1 %c
1357 ; x <u 13 && x <u 17
1359 define i1 @and_ult_ult(i8 %x) {
1360 ; CHECK-LABEL: @and_ult_ult(
1361 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 13
1362 ; CHECK-NEXT:    ret i1 [[A]]
1364   %a = icmp ult i8 %x, 13
1365   %b = icmp ult i8 %x, 17
1366   %c = and i1 %a, %b
1367   ret i1 %c
1370 ; eq
1371 ; x == 23 && x == 17
1373 define i1 @and_eq_eq_swap(i8 %x) {
1374 ; CHECK-LABEL: @and_eq_eq_swap(
1375 ; CHECK-NEXT:    ret i1 false
1377   %a = icmp eq i8 %x, 23
1378   %b = icmp eq i8 %x, 17
1379   %c = and i1 %a, %b
1380   ret i1 %c
1383 ; x == 23 && x != 17
1385 define i1 @and_eq_ne_swap(i8 %x) {
1386 ; CHECK-LABEL: @and_eq_ne_swap(
1387 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 23
1388 ; CHECK-NEXT:    ret i1 [[A]]
1390   %a = icmp eq i8 %x, 23
1391   %b = icmp ne i8 %x, 17
1392   %c = and i1 %a, %b
1393   ret i1 %c
1396 ; x == 23 && x >=s 17
1398 define i1 @and_eq_sge_swap(i8 %x) {
1399 ; CHECK-LABEL: @and_eq_sge_swap(
1400 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 23
1401 ; CHECK-NEXT:    ret i1 [[A]]
1403   %a = icmp eq i8 %x, 23
1404   %b = icmp sge i8 %x, 17
1405   %c = and i1 %a, %b
1406   ret i1 %c
1409 ; x == 23 && x >s 17
1411 define i1 @and_eq_sgt_swap(i8 %x) {
1412 ; CHECK-LABEL: @and_eq_sgt_swap(
1413 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 23
1414 ; CHECK-NEXT:    ret i1 [[A]]
1416   %a = icmp eq i8 %x, 23
1417   %b = icmp sgt i8 %x, 17
1418   %c = and i1 %a, %b
1419   ret i1 %c
1422 ; x == 23 && x <=s 17
1424 define i1 @and_eq_sle_swap(i8 %x) {
1425 ; CHECK-LABEL: @and_eq_sle_swap(
1426 ; CHECK-NEXT:    ret i1 false
1428   %a = icmp eq i8 %x, 23
1429   %b = icmp sle i8 %x, 17
1430   %c = and i1 %a, %b
1431   ret i1 %c
1434 ; x == 23 && x <s 17
1436 define i1 @and_eq_slt_swap(i8 %x) {
1437 ; CHECK-LABEL: @and_eq_slt_swap(
1438 ; CHECK-NEXT:    ret i1 false
1440   %a = icmp eq i8 %x, 23
1441   %b = icmp slt i8 %x, 17
1442   %c = and i1 %a, %b
1443   ret i1 %c
1446 ; x == 23 && x >=u 17
1448 define i1 @and_eq_uge_swap(i8 %x) {
1449 ; CHECK-LABEL: @and_eq_uge_swap(
1450 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 23
1451 ; CHECK-NEXT:    ret i1 [[A]]
1453   %a = icmp eq i8 %x, 23
1454   %b = icmp uge i8 %x, 17
1455   %c = and i1 %a, %b
1456   ret i1 %c
1459 ; x == 23 && x >u 17
1461 define i1 @and_eq_ugt_swap(i8 %x) {
1462 ; CHECK-LABEL: @and_eq_ugt_swap(
1463 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 23
1464 ; CHECK-NEXT:    ret i1 [[A]]
1466   %a = icmp eq i8 %x, 23
1467   %b = icmp ugt i8 %x, 17
1468   %c = and i1 %a, %b
1469   ret i1 %c
1472 ; x == 23 && x <=u 17
1474 define i1 @and_eq_ule_swap(i8 %x) {
1475 ; CHECK-LABEL: @and_eq_ule_swap(
1476 ; CHECK-NEXT:    ret i1 false
1478   %a = icmp eq i8 %x, 23
1479   %b = icmp ule i8 %x, 17
1480   %c = and i1 %a, %b
1481   ret i1 %c
1484 ; x == 23 && x <u 17
1486 define i1 @and_eq_ult_swap(i8 %x) {
1487 ; CHECK-LABEL: @and_eq_ult_swap(
1488 ; CHECK-NEXT:    ret i1 false
1490   %a = icmp eq i8 %x, 23
1491   %b = icmp ult i8 %x, 17
1492   %c = and i1 %a, %b
1493   ret i1 %c
1496 ; ne
1497 ; x != 23 && x == 17
1499 define i1 @and_ne_eq_swap(i8 %x) {
1500 ; CHECK-LABEL: @and_ne_eq_swap(
1501 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X:%.*]], 17
1502 ; CHECK-NEXT:    ret i1 [[B]]
1504   %a = icmp ne i8 %x, 23
1505   %b = icmp eq i8 %x, 17
1506   %c = and i1 %a, %b
1507   ret i1 %c
1510 ; x != 23 && x != 17
1512 define i1 @and_ne_ne_swap(i8 %x) {
1513 ; CHECK-LABEL: @and_ne_ne_swap(
1514 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 23
1515 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X]], 17
1516 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1517 ; CHECK-NEXT:    ret i1 [[C]]
1519   %a = icmp ne i8 %x, 23
1520   %b = icmp ne i8 %x, 17
1521   %c = and i1 %a, %b
1522   ret i1 %c
1525 ; x != 23 && x >=s 17
1527 define i1 @and_ne_sge_swap(i8 %x) {
1528 ; CHECK-LABEL: @and_ne_sge_swap(
1529 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 23
1530 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
1531 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1532 ; CHECK-NEXT:    ret i1 [[C]]
1534   %a = icmp ne i8 %x, 23
1535   %b = icmp sge i8 %x, 17
1536   %c = and i1 %a, %b
1537   ret i1 %c
1540 ; x != 23 && x >s 17
1542 define i1 @and_ne_sgt_swap(i8 %x) {
1543 ; CHECK-LABEL: @and_ne_sgt_swap(
1544 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 23
1545 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
1546 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1547 ; CHECK-NEXT:    ret i1 [[C]]
1549   %a = icmp ne i8 %x, 23
1550   %b = icmp sgt i8 %x, 17
1551   %c = and i1 %a, %b
1552   ret i1 %c
1555 ; x != 23 && x <=s 17
1557 define i1 @and_ne_sle_swap(i8 %x) {
1558 ; CHECK-LABEL: @and_ne_sle_swap(
1559 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X:%.*]], 17
1560 ; CHECK-NEXT:    ret i1 [[B]]
1562   %a = icmp ne i8 %x, 23
1563   %b = icmp sle i8 %x, 17
1564   %c = and i1 %a, %b
1565   ret i1 %c
1568 ; x != 23 && x <s 17
1570 define i1 @and_ne_slt_swap(i8 %x) {
1571 ; CHECK-LABEL: @and_ne_slt_swap(
1572 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X:%.*]], 17
1573 ; CHECK-NEXT:    ret i1 [[B]]
1575   %a = icmp ne i8 %x, 23
1576   %b = icmp slt i8 %x, 17
1577   %c = and i1 %a, %b
1578   ret i1 %c
1581 ; x != 23 && x >=u 17
1583 define i1 @and_ne_uge_swap(i8 %x) {
1584 ; CHECK-LABEL: @and_ne_uge_swap(
1585 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 23
1586 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
1587 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1588 ; CHECK-NEXT:    ret i1 [[C]]
1590   %a = icmp ne i8 %x, 23
1591   %b = icmp uge i8 %x, 17
1592   %c = and i1 %a, %b
1593   ret i1 %c
1596 ; x != 23 && x >u 17
1598 define i1 @and_ne_ugt_swap(i8 %x) {
1599 ; CHECK-LABEL: @and_ne_ugt_swap(
1600 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 23
1601 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
1602 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1603 ; CHECK-NEXT:    ret i1 [[C]]
1605   %a = icmp ne i8 %x, 23
1606   %b = icmp ugt i8 %x, 17
1607   %c = and i1 %a, %b
1608   ret i1 %c
1611 ; x != 23 && x <=u 17
1613 define i1 @and_ne_ule_swap(i8 %x) {
1614 ; CHECK-LABEL: @and_ne_ule_swap(
1615 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X:%.*]], 17
1616 ; CHECK-NEXT:    ret i1 [[B]]
1618   %a = icmp ne i8 %x, 23
1619   %b = icmp ule i8 %x, 17
1620   %c = and i1 %a, %b
1621   ret i1 %c
1624 ; x != 23 && x <u 17
1626 define i1 @and_ne_ult_swap(i8 %x) {
1627 ; CHECK-LABEL: @and_ne_ult_swap(
1628 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X:%.*]], 17
1629 ; CHECK-NEXT:    ret i1 [[B]]
1631   %a = icmp ne i8 %x, 23
1632   %b = icmp ult i8 %x, 17
1633   %c = and i1 %a, %b
1634   ret i1 %c
1637 ; sge
1638 ; x >=s 23 && x == 17
1640 define i1 @and_sge_eq_swap(i8 %x) {
1641 ; CHECK-LABEL: @and_sge_eq_swap(
1642 ; CHECK-NEXT:    ret i1 false
1644   %a = icmp sge i8 %x, 23
1645   %b = icmp eq i8 %x, 17
1646   %c = and i1 %a, %b
1647   ret i1 %c
1650 ; x >=s 23 && x != 17
1652 define i1 @and_sge_ne_swap(i8 %x) {
1653 ; CHECK-LABEL: @and_sge_ne_swap(
1654 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 23
1655 ; CHECK-NEXT:    ret i1 [[A]]
1657   %a = icmp sge i8 %x, 23
1658   %b = icmp ne i8 %x, 17
1659   %c = and i1 %a, %b
1660   ret i1 %c
1663 ; x >=s 23 && x >=s 17
1665 define i1 @and_sge_sge_swap(i8 %x) {
1666 ; CHECK-LABEL: @and_sge_sge_swap(
1667 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 23
1668 ; CHECK-NEXT:    ret i1 [[A]]
1670   %a = icmp sge i8 %x, 23
1671   %b = icmp sge i8 %x, 17
1672   %c = and i1 %a, %b
1673   ret i1 %c
1676 ; x >=s 23 && x >s 17
1678 define i1 @and_sge_sgt_swap(i8 %x) {
1679 ; CHECK-LABEL: @and_sge_sgt_swap(
1680 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 23
1681 ; CHECK-NEXT:    ret i1 [[A]]
1683   %a = icmp sge i8 %x, 23
1684   %b = icmp sgt i8 %x, 17
1685   %c = and i1 %a, %b
1686   ret i1 %c
1689 ; x >=s 23 && x <=s 17
1691 define i1 @and_sge_sle_swap(i8 %x) {
1692 ; CHECK-LABEL: @and_sge_sle_swap(
1693 ; CHECK-NEXT:    ret i1 false
1695   %a = icmp sge i8 %x, 23
1696   %b = icmp sle i8 %x, 17
1697   %c = and i1 %a, %b
1698   ret i1 %c
1701 ; x >=s 23 && x <s 17
1703 define i1 @and_sge_slt_swap(i8 %x) {
1704 ; CHECK-LABEL: @and_sge_slt_swap(
1705 ; CHECK-NEXT:    ret i1 false
1707   %a = icmp sge i8 %x, 23
1708   %b = icmp slt i8 %x, 17
1709   %c = and i1 %a, %b
1710   ret i1 %c
1713 ; x >=s 23 && x >=u 17
1715 define i1 @and_sge_uge_swap(i8 %x) {
1716 ; CHECK-LABEL: @and_sge_uge_swap(
1717 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 23
1718 ; CHECK-NEXT:    ret i1 [[A]]
1720   %a = icmp sge i8 %x, 23
1721   %b = icmp uge i8 %x, 17
1722   %c = and i1 %a, %b
1723   ret i1 %c
1726 ; x >=s 23 && x >u 17
1728 define i1 @and_sge_ugt_swap(i8 %x) {
1729 ; CHECK-LABEL: @and_sge_ugt_swap(
1730 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 23
1731 ; CHECK-NEXT:    ret i1 [[A]]
1733   %a = icmp sge i8 %x, 23
1734   %b = icmp ugt i8 %x, 17
1735   %c = and i1 %a, %b
1736   ret i1 %c
1739 ; x >=s 23 && x <=u 17
1741 define i1 @and_sge_ule_swap(i8 %x) {
1742 ; CHECK-LABEL: @and_sge_ule_swap(
1743 ; CHECK-NEXT:    ret i1 false
1745   %a = icmp sge i8 %x, 23
1746   %b = icmp ule i8 %x, 17
1747   %c = and i1 %a, %b
1748   ret i1 %c
1751 ; x >=s 23 && x <u 17
1753 define i1 @and_sge_ult_swap(i8 %x) {
1754 ; CHECK-LABEL: @and_sge_ult_swap(
1755 ; CHECK-NEXT:    ret i1 false
1757   %a = icmp sge i8 %x, 23
1758   %b = icmp ult i8 %x, 17
1759   %c = and i1 %a, %b
1760   ret i1 %c
1763 ; sgt
1764 ; x >s 23 && x == 17
1766 define i1 @and_sgt_eq_swap(i8 %x) {
1767 ; CHECK-LABEL: @and_sgt_eq_swap(
1768 ; CHECK-NEXT:    ret i1 false
1770   %a = icmp sgt i8 %x, 23
1771   %b = icmp eq i8 %x, 17
1772   %c = and i1 %a, %b
1773   ret i1 %c
1776 ; x >s 23 && x != 17
1778 define i1 @and_sgt_ne_swap(i8 %x) {
1779 ; CHECK-LABEL: @and_sgt_ne_swap(
1780 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23
1781 ; CHECK-NEXT:    ret i1 [[A]]
1783   %a = icmp sgt i8 %x, 23
1784   %b = icmp ne i8 %x, 17
1785   %c = and i1 %a, %b
1786   ret i1 %c
1789 ; x >s 23 && x >=s 17
1791 define i1 @and_sgt_sge_swap(i8 %x) {
1792 ; CHECK-LABEL: @and_sgt_sge_swap(
1793 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23
1794 ; CHECK-NEXT:    ret i1 [[A]]
1796   %a = icmp sgt i8 %x, 23
1797   %b = icmp sge i8 %x, 17
1798   %c = and i1 %a, %b
1799   ret i1 %c
1802 ; x >s 23 && x >s 17
1804 define i1 @and_sgt_sgt_swap(i8 %x) {
1805 ; CHECK-LABEL: @and_sgt_sgt_swap(
1806 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23
1807 ; CHECK-NEXT:    ret i1 [[A]]
1809   %a = icmp sgt i8 %x, 23
1810   %b = icmp sgt i8 %x, 17
1811   %c = and i1 %a, %b
1812   ret i1 %c
1815 ; x >s 23 && x <=s 17
1817 define i1 @and_sgt_sle_swap(i8 %x) {
1818 ; CHECK-LABEL: @and_sgt_sle_swap(
1819 ; CHECK-NEXT:    ret i1 false
1821   %a = icmp sgt i8 %x, 23
1822   %b = icmp sle i8 %x, 17
1823   %c = and i1 %a, %b
1824   ret i1 %c
1827 ; x >s 23 && x <s 17
1829 define i1 @and_sgt_slt_swap(i8 %x) {
1830 ; CHECK-LABEL: @and_sgt_slt_swap(
1831 ; CHECK-NEXT:    ret i1 false
1833   %a = icmp sgt i8 %x, 23
1834   %b = icmp slt i8 %x, 17
1835   %c = and i1 %a, %b
1836   ret i1 %c
1839 ; x >s 23 && x >=u 17
1841 define i1 @and_sgt_uge_swap(i8 %x) {
1842 ; CHECK-LABEL: @and_sgt_uge_swap(
1843 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23
1844 ; CHECK-NEXT:    ret i1 [[A]]
1846   %a = icmp sgt i8 %x, 23
1847   %b = icmp uge i8 %x, 17
1848   %c = and i1 %a, %b
1849   ret i1 %c
1852 ; x >s 23 && x >u 17
1854 define i1 @and_sgt_ugt_swap(i8 %x) {
1855 ; CHECK-LABEL: @and_sgt_ugt_swap(
1856 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23
1857 ; CHECK-NEXT:    ret i1 [[A]]
1859   %a = icmp sgt i8 %x, 23
1860   %b = icmp ugt i8 %x, 17
1861   %c = and i1 %a, %b
1862   ret i1 %c
1865 ; x >s 23 && x <=u 17
1867 define i1 @and_sgt_ule_swap(i8 %x) {
1868 ; CHECK-LABEL: @and_sgt_ule_swap(
1869 ; CHECK-NEXT:    ret i1 false
1871   %a = icmp sgt i8 %x, 23
1872   %b = icmp ule i8 %x, 17
1873   %c = and i1 %a, %b
1874   ret i1 %c
1877 ; x >s 23 && x <u 17
1879 define i1 @and_sgt_ult_swap(i8 %x) {
1880 ; CHECK-LABEL: @and_sgt_ult_swap(
1881 ; CHECK-NEXT:    ret i1 false
1883   %a = icmp sgt i8 %x, 23
1884   %b = icmp ult i8 %x, 17
1885   %c = and i1 %a, %b
1886   ret i1 %c
1889 ; sle
1890 ; x <=s 23 && x == 17
1892 define i1 @and_sle_eq_swap(i8 %x) {
1893 ; CHECK-LABEL: @and_sle_eq_swap(
1894 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X:%.*]], 17
1895 ; CHECK-NEXT:    ret i1 [[B]]
1897   %a = icmp sle i8 %x, 23
1898   %b = icmp eq i8 %x, 17
1899   %c = and i1 %a, %b
1900   ret i1 %c
1903 ; x <=s 23 && x != 17
1905 define i1 @and_sle_ne_swap(i8 %x) {
1906 ; CHECK-LABEL: @and_sle_ne_swap(
1907 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 23
1908 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X]], 17
1909 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1910 ; CHECK-NEXT:    ret i1 [[C]]
1912   %a = icmp sle i8 %x, 23
1913   %b = icmp ne i8 %x, 17
1914   %c = and i1 %a, %b
1915   ret i1 %c
1918 ; x <=s 23 && x >=s 17
1920 define i1 @and_sle_sge_swap(i8 %x) {
1921 ; CHECK-LABEL: @and_sle_sge_swap(
1922 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 23
1923 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
1924 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1925 ; CHECK-NEXT:    ret i1 [[C]]
1927   %a = icmp sle i8 %x, 23
1928   %b = icmp sge i8 %x, 17
1929   %c = and i1 %a, %b
1930   ret i1 %c
1933 ; x <=s 23 && x >s 17
1935 define i1 @and_sle_sgt_swap(i8 %x) {
1936 ; CHECK-LABEL: @and_sle_sgt_swap(
1937 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 23
1938 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
1939 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1940 ; CHECK-NEXT:    ret i1 [[C]]
1942   %a = icmp sle i8 %x, 23
1943   %b = icmp sgt i8 %x, 17
1944   %c = and i1 %a, %b
1945   ret i1 %c
1948 ; x <=s 23 && x <=s 17
1950 define i1 @and_sle_sle_swap(i8 %x) {
1951 ; CHECK-LABEL: @and_sle_sle_swap(
1952 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X:%.*]], 17
1953 ; CHECK-NEXT:    ret i1 [[B]]
1955   %a = icmp sle i8 %x, 23
1956   %b = icmp sle i8 %x, 17
1957   %c = and i1 %a, %b
1958   ret i1 %c
1961 ; x <=s 23 && x <s 17
1963 define i1 @and_sle_slt_swap(i8 %x) {
1964 ; CHECK-LABEL: @and_sle_slt_swap(
1965 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X:%.*]], 17
1966 ; CHECK-NEXT:    ret i1 [[B]]
1968   %a = icmp sle i8 %x, 23
1969   %b = icmp slt i8 %x, 17
1970   %c = and i1 %a, %b
1971   ret i1 %c
1974 ; x <=s 23 && x >=u 17
1976 define i1 @and_sle_uge_swap(i8 %x) {
1977 ; CHECK-LABEL: @and_sle_uge_swap(
1978 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 23
1979 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
1980 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1981 ; CHECK-NEXT:    ret i1 [[C]]
1983   %a = icmp sle i8 %x, 23
1984   %b = icmp uge i8 %x, 17
1985   %c = and i1 %a, %b
1986   ret i1 %c
1989 ; x <=s 23 && x >u 17
1991 define i1 @and_sle_ugt_swap(i8 %x) {
1992 ; CHECK-LABEL: @and_sle_ugt_swap(
1993 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 23
1994 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
1995 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
1996 ; CHECK-NEXT:    ret i1 [[C]]
1998   %a = icmp sle i8 %x, 23
1999   %b = icmp ugt i8 %x, 17
2000   %c = and i1 %a, %b
2001   ret i1 %c
2004 ; x <=s 23 && x <=u 17
2006 define i1 @and_sle_ule_swap(i8 %x) {
2007 ; CHECK-LABEL: @and_sle_ule_swap(
2008 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X:%.*]], 17
2009 ; CHECK-NEXT:    ret i1 [[B]]
2011   %a = icmp sle i8 %x, 23
2012   %b = icmp ule i8 %x, 17
2013   %c = and i1 %a, %b
2014   ret i1 %c
2017 ; x <=s 23 && x <u 17
2019 define i1 @and_sle_ult_swap(i8 %x) {
2020 ; CHECK-LABEL: @and_sle_ult_swap(
2021 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X:%.*]], 17
2022 ; CHECK-NEXT:    ret i1 [[B]]
2024   %a = icmp sle i8 %x, 23
2025   %b = icmp ult i8 %x, 17
2026   %c = and i1 %a, %b
2027   ret i1 %c
2030 ; slt
2031 ; x <s 23 && x == 17
2033 define i1 @and_slt_eq_swap(i8 %x) {
2034 ; CHECK-LABEL: @and_slt_eq_swap(
2035 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X:%.*]], 17
2036 ; CHECK-NEXT:    ret i1 [[B]]
2038   %a = icmp slt i8 %x, 23
2039   %b = icmp eq i8 %x, 17
2040   %c = and i1 %a, %b
2041   ret i1 %c
2044 ; x <s 23 && x != 17
2046 define i1 @and_slt_ne_swap(i8 %x) {
2047 ; CHECK-LABEL: @and_slt_ne_swap(
2048 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 23
2049 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X]], 17
2050 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2051 ; CHECK-NEXT:    ret i1 [[C]]
2053   %a = icmp slt i8 %x, 23
2054   %b = icmp ne i8 %x, 17
2055   %c = and i1 %a, %b
2056   ret i1 %c
2059 ; x <s 23 && x >=s 17
2061 define i1 @and_slt_sge_swap(i8 %x) {
2062 ; CHECK-LABEL: @and_slt_sge_swap(
2063 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 23
2064 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
2065 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2066 ; CHECK-NEXT:    ret i1 [[C]]
2068   %a = icmp slt i8 %x, 23
2069   %b = icmp sge i8 %x, 17
2070   %c = and i1 %a, %b
2071   ret i1 %c
2074 ; x <s 23 && x >s 17
2076 define i1 @and_slt_sgt_swap(i8 %x) {
2077 ; CHECK-LABEL: @and_slt_sgt_swap(
2078 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 23
2079 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
2080 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2081 ; CHECK-NEXT:    ret i1 [[C]]
2083   %a = icmp slt i8 %x, 23
2084   %b = icmp sgt i8 %x, 17
2085   %c = and i1 %a, %b
2086   ret i1 %c
2089 ; x <s 23 && x <=s 17
2091 define i1 @and_slt_sle_swap(i8 %x) {
2092 ; CHECK-LABEL: @and_slt_sle_swap(
2093 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X:%.*]], 17
2094 ; CHECK-NEXT:    ret i1 [[B]]
2096   %a = icmp slt i8 %x, 23
2097   %b = icmp sle i8 %x, 17
2098   %c = and i1 %a, %b
2099   ret i1 %c
2102 ; x <s 23 && x <s 17
2104 define i1 @and_slt_slt_swap(i8 %x) {
2105 ; CHECK-LABEL: @and_slt_slt_swap(
2106 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X:%.*]], 17
2107 ; CHECK-NEXT:    ret i1 [[B]]
2109   %a = icmp slt i8 %x, 23
2110   %b = icmp slt i8 %x, 17
2111   %c = and i1 %a, %b
2112   ret i1 %c
2115 ; x <s 23 && x >=u 17
2117 define i1 @and_slt_uge_swap(i8 %x) {
2118 ; CHECK-LABEL: @and_slt_uge_swap(
2119 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 23
2120 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
2121 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2122 ; CHECK-NEXT:    ret i1 [[C]]
2124   %a = icmp slt i8 %x, 23
2125   %b = icmp uge i8 %x, 17
2126   %c = and i1 %a, %b
2127   ret i1 %c
2130 ; x <s 23 && x >u 17
2132 define i1 @and_slt_ugt_swap(i8 %x) {
2133 ; CHECK-LABEL: @and_slt_ugt_swap(
2134 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 23
2135 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
2136 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2137 ; CHECK-NEXT:    ret i1 [[C]]
2139   %a = icmp slt i8 %x, 23
2140   %b = icmp ugt i8 %x, 17
2141   %c = and i1 %a, %b
2142   ret i1 %c
2145 ; x <s 23 && x <=u 17
2147 define i1 @and_slt_ule_swap(i8 %x) {
2148 ; CHECK-LABEL: @and_slt_ule_swap(
2149 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X:%.*]], 17
2150 ; CHECK-NEXT:    ret i1 [[B]]
2152   %a = icmp slt i8 %x, 23
2153   %b = icmp ule i8 %x, 17
2154   %c = and i1 %a, %b
2155   ret i1 %c
2158 ; x <s 23 && x <u 17
2160 define i1 @and_slt_ult_swap(i8 %x) {
2161 ; CHECK-LABEL: @and_slt_ult_swap(
2162 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X:%.*]], 17
2163 ; CHECK-NEXT:    ret i1 [[B]]
2165   %a = icmp slt i8 %x, 23
2166   %b = icmp ult i8 %x, 17
2167   %c = and i1 %a, %b
2168   ret i1 %c
2171 ; uge
2172 ; x >=u 23 && x == 17
2174 define i1 @and_uge_eq_swap(i8 %x) {
2175 ; CHECK-LABEL: @and_uge_eq_swap(
2176 ; CHECK-NEXT:    ret i1 false
2178   %a = icmp uge i8 %x, 23
2179   %b = icmp eq i8 %x, 17
2180   %c = and i1 %a, %b
2181   ret i1 %c
2184 ; x >=u 23 && x != 17
2186 define i1 @and_uge_ne_swap(i8 %x) {
2187 ; CHECK-LABEL: @and_uge_ne_swap(
2188 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
2189 ; CHECK-NEXT:    ret i1 [[A]]
2191   %a = icmp uge i8 %x, 23
2192   %b = icmp ne i8 %x, 17
2193   %c = and i1 %a, %b
2194   ret i1 %c
2197 ; x >=u 23 && x >=s 17
2199 define i1 @and_uge_sge_swap(i8 %x) {
2200 ; CHECK-LABEL: @and_uge_sge_swap(
2201 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
2202 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
2203 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2204 ; CHECK-NEXT:    ret i1 [[C]]
2206   %a = icmp uge i8 %x, 23
2207   %b = icmp sge i8 %x, 17
2208   %c = and i1 %a, %b
2209   ret i1 %c
2212 ; x >=u 23 && x >s 17
2214 define i1 @and_uge_sgt_swap(i8 %x) {
2215 ; CHECK-LABEL: @and_uge_sgt_swap(
2216 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
2217 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
2218 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2219 ; CHECK-NEXT:    ret i1 [[C]]
2221   %a = icmp uge i8 %x, 23
2222   %b = icmp sgt i8 %x, 17
2223   %c = and i1 %a, %b
2224   ret i1 %c
2227 ; x >=u 23 && x <=s 17
2229 define i1 @and_uge_sle_swap(i8 %x) {
2230 ; CHECK-LABEL: @and_uge_sle_swap(
2231 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
2232 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
2233 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2234 ; CHECK-NEXT:    ret i1 [[C]]
2236   %a = icmp uge i8 %x, 23
2237   %b = icmp sle i8 %x, 17
2238   %c = and i1 %a, %b
2239   ret i1 %c
2242 ; x >=u 23 && x <s 17
2244 define i1 @and_uge_slt_swap(i8 %x) {
2245 ; CHECK-LABEL: @and_uge_slt_swap(
2246 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
2247 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
2248 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2249 ; CHECK-NEXT:    ret i1 [[C]]
2251   %a = icmp uge i8 %x, 23
2252   %b = icmp slt i8 %x, 17
2253   %c = and i1 %a, %b
2254   ret i1 %c
2257 ; x >=u 23 && x >=u 17
2259 define i1 @and_uge_uge_swap(i8 %x) {
2260 ; CHECK-LABEL: @and_uge_uge_swap(
2261 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
2262 ; CHECK-NEXT:    ret i1 [[A]]
2264   %a = icmp uge i8 %x, 23
2265   %b = icmp uge i8 %x, 17
2266   %c = and i1 %a, %b
2267   ret i1 %c
2270 ; x >=u 23 && x >u 17
2272 define i1 @and_uge_ugt_swap(i8 %x) {
2273 ; CHECK-LABEL: @and_uge_ugt_swap(
2274 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
2275 ; CHECK-NEXT:    ret i1 [[A]]
2277   %a = icmp uge i8 %x, 23
2278   %b = icmp ugt i8 %x, 17
2279   %c = and i1 %a, %b
2280   ret i1 %c
2283 ; x >=u 23 && x <=u 17
2285 define i1 @and_uge_ule_swap(i8 %x) {
2286 ; CHECK-LABEL: @and_uge_ule_swap(
2287 ; CHECK-NEXT:    ret i1 false
2289   %a = icmp uge i8 %x, 23
2290   %b = icmp ule i8 %x, 17
2291   %c = and i1 %a, %b
2292   ret i1 %c
2295 ; x >=u 23 && x <u 17
2297 define i1 @and_uge_ult_swap(i8 %x) {
2298 ; CHECK-LABEL: @and_uge_ult_swap(
2299 ; CHECK-NEXT:    ret i1 false
2301   %a = icmp uge i8 %x, 23
2302   %b = icmp ult i8 %x, 17
2303   %c = and i1 %a, %b
2304   ret i1 %c
2307 ; ugt
2308 ; x >u 23 && x == 17
2310 define i1 @and_ugt_eq_swap(i8 %x) {
2311 ; CHECK-LABEL: @and_ugt_eq_swap(
2312 ; CHECK-NEXT:    ret i1 false
2314   %a = icmp ugt i8 %x, 23
2315   %b = icmp eq i8 %x, 17
2316   %c = and i1 %a, %b
2317   ret i1 %c
2320 ; x >u 23 && x != 17
2322 define i1 @and_ugt_ne_swap(i8 %x) {
2323 ; CHECK-LABEL: @and_ugt_ne_swap(
2324 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
2325 ; CHECK-NEXT:    ret i1 [[A]]
2327   %a = icmp ugt i8 %x, 23
2328   %b = icmp ne i8 %x, 17
2329   %c = and i1 %a, %b
2330   ret i1 %c
2333 ; x >u 23 && x >=s 17
2335 define i1 @and_ugt_sge_swap(i8 %x) {
2336 ; CHECK-LABEL: @and_ugt_sge_swap(
2337 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
2338 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
2339 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2340 ; CHECK-NEXT:    ret i1 [[C]]
2342   %a = icmp ugt i8 %x, 23
2343   %b = icmp sge i8 %x, 17
2344   %c = and i1 %a, %b
2345   ret i1 %c
2348 ; x >u 23 && x >s 17
2350 define i1 @and_ugt_sgt_swap(i8 %x) {
2351 ; CHECK-LABEL: @and_ugt_sgt_swap(
2352 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
2353 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
2354 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2355 ; CHECK-NEXT:    ret i1 [[C]]
2357   %a = icmp ugt i8 %x, 23
2358   %b = icmp sgt i8 %x, 17
2359   %c = and i1 %a, %b
2360   ret i1 %c
2363 ; x >u 23 && x <=s 17
2365 define i1 @and_ugt_sle_swap(i8 %x) {
2366 ; CHECK-LABEL: @and_ugt_sle_swap(
2367 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
2368 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
2369 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2370 ; CHECK-NEXT:    ret i1 [[C]]
2372   %a = icmp ugt i8 %x, 23
2373   %b = icmp sle i8 %x, 17
2374   %c = and i1 %a, %b
2375   ret i1 %c
2378 ; x >u 23 && x <s 17
2380 define i1 @and_ugt_slt_swap(i8 %x) {
2381 ; CHECK-LABEL: @and_ugt_slt_swap(
2382 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
2383 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
2384 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2385 ; CHECK-NEXT:    ret i1 [[C]]
2387   %a = icmp ugt i8 %x, 23
2388   %b = icmp slt i8 %x, 17
2389   %c = and i1 %a, %b
2390   ret i1 %c
2393 ; x >u 23 && x >=u 17
2395 define i1 @and_ugt_uge_swap(i8 %x) {
2396 ; CHECK-LABEL: @and_ugt_uge_swap(
2397 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
2398 ; CHECK-NEXT:    ret i1 [[A]]
2400   %a = icmp ugt i8 %x, 23
2401   %b = icmp uge i8 %x, 17
2402   %c = and i1 %a, %b
2403   ret i1 %c
2406 ; x >u 23 && x >u 17
2408 define i1 @and_ugt_ugt_swap(i8 %x) {
2409 ; CHECK-LABEL: @and_ugt_ugt_swap(
2410 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
2411 ; CHECK-NEXT:    ret i1 [[A]]
2413   %a = icmp ugt i8 %x, 23
2414   %b = icmp ugt i8 %x, 17
2415   %c = and i1 %a, %b
2416   ret i1 %c
2419 ; x >u 23 && x <=u 17
2421 define i1 @and_ugt_ule_swap(i8 %x) {
2422 ; CHECK-LABEL: @and_ugt_ule_swap(
2423 ; CHECK-NEXT:    ret i1 false
2425   %a = icmp ugt i8 %x, 23
2426   %b = icmp ule i8 %x, 17
2427   %c = and i1 %a, %b
2428   ret i1 %c
2431 ; x >u 23 && x <u 17
2433 define i1 @and_ugt_ult_swap(i8 %x) {
2434 ; CHECK-LABEL: @and_ugt_ult_swap(
2435 ; CHECK-NEXT:    ret i1 false
2437   %a = icmp ugt i8 %x, 23
2438   %b = icmp ult i8 %x, 17
2439   %c = and i1 %a, %b
2440   ret i1 %c
2443 ; ule
2444 ; x <=u 23 && x == 17
2446 define i1 @and_ule_eq_swap(i8 %x) {
2447 ; CHECK-LABEL: @and_ule_eq_swap(
2448 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X:%.*]], 17
2449 ; CHECK-NEXT:    ret i1 [[B]]
2451   %a = icmp ule i8 %x, 23
2452   %b = icmp eq i8 %x, 17
2453   %c = and i1 %a, %b
2454   ret i1 %c
2457 ; x <=u 23 && x != 17
2459 define i1 @and_ule_ne_swap(i8 %x) {
2460 ; CHECK-LABEL: @and_ule_ne_swap(
2461 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
2462 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X]], 17
2463 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2464 ; CHECK-NEXT:    ret i1 [[C]]
2466   %a = icmp ule i8 %x, 23
2467   %b = icmp ne i8 %x, 17
2468   %c = and i1 %a, %b
2469   ret i1 %c
2472 ; x <=u 23 && x >=s 17
2474 define i1 @and_ule_sge_swap(i8 %x) {
2475 ; CHECK-LABEL: @and_ule_sge_swap(
2476 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
2477 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
2478 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2479 ; CHECK-NEXT:    ret i1 [[C]]
2481   %a = icmp ule i8 %x, 23
2482   %b = icmp sge i8 %x, 17
2483   %c = and i1 %a, %b
2484   ret i1 %c
2487 ; x <=u 23 && x >s 17
2489 define i1 @and_ule_sgt_swap(i8 %x) {
2490 ; CHECK-LABEL: @and_ule_sgt_swap(
2491 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
2492 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
2493 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2494 ; CHECK-NEXT:    ret i1 [[C]]
2496   %a = icmp ule i8 %x, 23
2497   %b = icmp sgt i8 %x, 17
2498   %c = and i1 %a, %b
2499   ret i1 %c
2502 ; x <=u 23 && x <=s 17
2504 define i1 @and_ule_sle_swap(i8 %x) {
2505 ; CHECK-LABEL: @and_ule_sle_swap(
2506 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
2507 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
2508 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2509 ; CHECK-NEXT:    ret i1 [[C]]
2511   %a = icmp ule i8 %x, 23
2512   %b = icmp sle i8 %x, 17
2513   %c = and i1 %a, %b
2514   ret i1 %c
2517 ; x <=u 23 && x <s 17
2519 define i1 @and_ule_slt_swap(i8 %x) {
2520 ; CHECK-LABEL: @and_ule_slt_swap(
2521 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
2522 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
2523 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2524 ; CHECK-NEXT:    ret i1 [[C]]
2526   %a = icmp ule i8 %x, 23
2527   %b = icmp slt i8 %x, 17
2528   %c = and i1 %a, %b
2529   ret i1 %c
2532 ; x <=u 23 && x >=u 17
2534 define i1 @and_ule_uge_swap(i8 %x) {
2535 ; CHECK-LABEL: @and_ule_uge_swap(
2536 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
2537 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
2538 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2539 ; CHECK-NEXT:    ret i1 [[C]]
2541   %a = icmp ule i8 %x, 23
2542   %b = icmp uge i8 %x, 17
2543   %c = and i1 %a, %b
2544   ret i1 %c
2547 ; x <=u 23 && x >u 17
2549 define i1 @and_ule_ugt_swap(i8 %x) {
2550 ; CHECK-LABEL: @and_ule_ugt_swap(
2551 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
2552 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
2553 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2554 ; CHECK-NEXT:    ret i1 [[C]]
2556   %a = icmp ule i8 %x, 23
2557   %b = icmp ugt i8 %x, 17
2558   %c = and i1 %a, %b
2559   ret i1 %c
2562 ; x <=u 23 && x <=u 17
2564 define i1 @and_ule_ule_swap(i8 %x) {
2565 ; CHECK-LABEL: @and_ule_ule_swap(
2566 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X:%.*]], 17
2567 ; CHECK-NEXT:    ret i1 [[B]]
2569   %a = icmp ule i8 %x, 23
2570   %b = icmp ule i8 %x, 17
2571   %c = and i1 %a, %b
2572   ret i1 %c
2575 ; x <=u 23 && x <u 17
2577 define i1 @and_ule_ult_swap(i8 %x) {
2578 ; CHECK-LABEL: @and_ule_ult_swap(
2579 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X:%.*]], 17
2580 ; CHECK-NEXT:    ret i1 [[B]]
2582   %a = icmp ule i8 %x, 23
2583   %b = icmp ult i8 %x, 17
2584   %c = and i1 %a, %b
2585   ret i1 %c
2588 ; ult
2589 ; x <u 23 && x == 17
2591 define i1 @and_ult_eq_swap(i8 %x) {
2592 ; CHECK-LABEL: @and_ult_eq_swap(
2593 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X:%.*]], 17
2594 ; CHECK-NEXT:    ret i1 [[B]]
2596   %a = icmp ult i8 %x, 23
2597   %b = icmp eq i8 %x, 17
2598   %c = and i1 %a, %b
2599   ret i1 %c
2602 ; x <u 23 && x != 17
2604 define i1 @and_ult_ne_swap(i8 %x) {
2605 ; CHECK-LABEL: @and_ult_ne_swap(
2606 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
2607 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X]], 17
2608 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2609 ; CHECK-NEXT:    ret i1 [[C]]
2611   %a = icmp ult i8 %x, 23
2612   %b = icmp ne i8 %x, 17
2613   %c = and i1 %a, %b
2614   ret i1 %c
2617 ; x <u 23 && x >=s 17
2619 define i1 @and_ult_sge_swap(i8 %x) {
2620 ; CHECK-LABEL: @and_ult_sge_swap(
2621 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
2622 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
2623 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2624 ; CHECK-NEXT:    ret i1 [[C]]
2626   %a = icmp ult i8 %x, 23
2627   %b = icmp sge i8 %x, 17
2628   %c = and i1 %a, %b
2629   ret i1 %c
2632 ; x <u 23 && x >s 17
2634 define i1 @and_ult_sgt_swap(i8 %x) {
2635 ; CHECK-LABEL: @and_ult_sgt_swap(
2636 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
2637 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
2638 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2639 ; CHECK-NEXT:    ret i1 [[C]]
2641   %a = icmp ult i8 %x, 23
2642   %b = icmp sgt i8 %x, 17
2643   %c = and i1 %a, %b
2644   ret i1 %c
2647 ; x <u 23 && x <=s 17
2649 define i1 @and_ult_sle_swap(i8 %x) {
2650 ; CHECK-LABEL: @and_ult_sle_swap(
2651 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
2652 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
2653 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2654 ; CHECK-NEXT:    ret i1 [[C]]
2656   %a = icmp ult i8 %x, 23
2657   %b = icmp sle i8 %x, 17
2658   %c = and i1 %a, %b
2659   ret i1 %c
2662 ; x <u 23 && x <s 17
2664 define i1 @and_ult_slt_swap(i8 %x) {
2665 ; CHECK-LABEL: @and_ult_slt_swap(
2666 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
2667 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
2668 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2669 ; CHECK-NEXT:    ret i1 [[C]]
2671   %a = icmp ult i8 %x, 23
2672   %b = icmp slt i8 %x, 17
2673   %c = and i1 %a, %b
2674   ret i1 %c
2677 ; x <u 23 && x >=u 17
2679 define i1 @and_ult_uge_swap(i8 %x) {
2680 ; CHECK-LABEL: @and_ult_uge_swap(
2681 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
2682 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
2683 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2684 ; CHECK-NEXT:    ret i1 [[C]]
2686   %a = icmp ult i8 %x, 23
2687   %b = icmp uge i8 %x, 17
2688   %c = and i1 %a, %b
2689   ret i1 %c
2692 ; x <u 23 && x >u 17
2694 define i1 @and_ult_ugt_swap(i8 %x) {
2695 ; CHECK-LABEL: @and_ult_ugt_swap(
2696 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
2697 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
2698 ; CHECK-NEXT:    [[C:%.*]] = and i1 [[A]], [[B]]
2699 ; CHECK-NEXT:    ret i1 [[C]]
2701   %a = icmp ult i8 %x, 23
2702   %b = icmp ugt i8 %x, 17
2703   %c = and i1 %a, %b
2704   ret i1 %c
2707 ; x <u 23 && x <=u 17
2709 define i1 @and_ult_ule_swap(i8 %x) {
2710 ; CHECK-LABEL: @and_ult_ule_swap(
2711 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X:%.*]], 17
2712 ; CHECK-NEXT:    ret i1 [[B]]
2714   %a = icmp ult i8 %x, 23
2715   %b = icmp ule i8 %x, 17
2716   %c = and i1 %a, %b
2717   ret i1 %c
2720 ; x <u 23 && x <u 17
2722 define i1 @and_ult_ult_swap(i8 %x) {
2723 ; CHECK-LABEL: @and_ult_ult_swap(
2724 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X:%.*]], 17
2725 ; CHECK-NEXT:    ret i1 [[B]]
2727   %a = icmp ult i8 %x, 23
2728   %b = icmp ult i8 %x, 17
2729   %c = and i1 %a, %b
2730   ret i1 %c
2733 ; eq
2734 ; x == 13 || x == 17
2736 define i1 @or_eq_eq(i8 %x) {
2737 ; CHECK-LABEL: @or_eq_eq(
2738 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 13
2739 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X]], 17
2740 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
2741 ; CHECK-NEXT:    ret i1 [[C]]
2743   %a = icmp eq i8 %x, 13
2744   %b = icmp eq i8 %x, 17
2745   %c = or i1 %a, %b
2746   ret i1 %c
2749 ; x == 13 || x != 17
2751 define i1 @or_eq_ne(i8 %x) {
2752 ; CHECK-LABEL: @or_eq_ne(
2753 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X:%.*]], 17
2754 ; CHECK-NEXT:    ret i1 [[B]]
2756   %a = icmp eq i8 %x, 13
2757   %b = icmp ne i8 %x, 17
2758   %c = or i1 %a, %b
2759   ret i1 %c
2762 ; x == 13 || x >=s 17
2764 define i1 @or_eq_sge(i8 %x) {
2765 ; CHECK-LABEL: @or_eq_sge(
2766 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 13
2767 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
2768 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
2769 ; CHECK-NEXT:    ret i1 [[C]]
2771   %a = icmp eq i8 %x, 13
2772   %b = icmp sge i8 %x, 17
2773   %c = or i1 %a, %b
2774   ret i1 %c
2777 ; x == 13 || x >s 17
2779 define i1 @or_eq_sgt(i8 %x) {
2780 ; CHECK-LABEL: @or_eq_sgt(
2781 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 13
2782 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
2783 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
2784 ; CHECK-NEXT:    ret i1 [[C]]
2786   %a = icmp eq i8 %x, 13
2787   %b = icmp sgt i8 %x, 17
2788   %c = or i1 %a, %b
2789   ret i1 %c
2792 ; x == 13 || x <=s 17
2794 define i1 @or_eq_sle(i8 %x) {
2795 ; CHECK-LABEL: @or_eq_sle(
2796 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X:%.*]], 17
2797 ; CHECK-NEXT:    ret i1 [[B]]
2799   %a = icmp eq i8 %x, 13
2800   %b = icmp sle i8 %x, 17
2801   %c = or i1 %a, %b
2802   ret i1 %c
2805 ; x == 13 || x <s 17
2807 define i1 @or_eq_slt(i8 %x) {
2808 ; CHECK-LABEL: @or_eq_slt(
2809 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X:%.*]], 17
2810 ; CHECK-NEXT:    ret i1 [[B]]
2812   %a = icmp eq i8 %x, 13
2813   %b = icmp slt i8 %x, 17
2814   %c = or i1 %a, %b
2815   ret i1 %c
2818 ; x == 13 || x >=u 17
2820 define i1 @or_eq_uge(i8 %x) {
2821 ; CHECK-LABEL: @or_eq_uge(
2822 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 13
2823 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
2824 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
2825 ; CHECK-NEXT:    ret i1 [[C]]
2827   %a = icmp eq i8 %x, 13
2828   %b = icmp uge i8 %x, 17
2829   %c = or i1 %a, %b
2830   ret i1 %c
2833 ; x == 13 || x >u 17
2835 define i1 @or_eq_ugt(i8 %x) {
2836 ; CHECK-LABEL: @or_eq_ugt(
2837 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 13
2838 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
2839 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
2840 ; CHECK-NEXT:    ret i1 [[C]]
2842   %a = icmp eq i8 %x, 13
2843   %b = icmp ugt i8 %x, 17
2844   %c = or i1 %a, %b
2845   ret i1 %c
2848 ; x == 13 || x <=u 17
2850 define i1 @or_eq_ule(i8 %x) {
2851 ; CHECK-LABEL: @or_eq_ule(
2852 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X:%.*]], 17
2853 ; CHECK-NEXT:    ret i1 [[B]]
2855   %a = icmp eq i8 %x, 13
2856   %b = icmp ule i8 %x, 17
2857   %c = or i1 %a, %b
2858   ret i1 %c
2861 ; x == 13 || x <u 17
2863 define i1 @or_eq_ult(i8 %x) {
2864 ; CHECK-LABEL: @or_eq_ult(
2865 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X:%.*]], 17
2866 ; CHECK-NEXT:    ret i1 [[B]]
2868   %a = icmp eq i8 %x, 13
2869   %b = icmp ult i8 %x, 17
2870   %c = or i1 %a, %b
2871   ret i1 %c
2874 ; ne
2875 ; x != 13 || x == 17
2877 define i1 @or_ne_eq(i8 %x) {
2878 ; CHECK-LABEL: @or_ne_eq(
2879 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 13
2880 ; CHECK-NEXT:    ret i1 [[A]]
2882   %a = icmp ne i8 %x, 13
2883   %b = icmp eq i8 %x, 17
2884   %c = or i1 %a, %b
2885   ret i1 %c
2888 ; x != 13 || x != 17
2890 define i1 @or_ne_ne(i8 %x) {
2891 ; CHECK-LABEL: @or_ne_ne(
2892 ; CHECK-NEXT:    ret i1 true
2894   %a = icmp ne i8 %x, 13
2895   %b = icmp ne i8 %x, 17
2896   %c = or i1 %a, %b
2897   ret i1 %c
2900 ; x != 13 || x >=s 17
2902 define i1 @or_ne_sge(i8 %x) {
2903 ; CHECK-LABEL: @or_ne_sge(
2904 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 13
2905 ; CHECK-NEXT:    ret i1 [[A]]
2907   %a = icmp ne i8 %x, 13
2908   %b = icmp sge i8 %x, 17
2909   %c = or i1 %a, %b
2910   ret i1 %c
2913 ; x != 13 || x >s 17
2915 define i1 @or_ne_sgt(i8 %x) {
2916 ; CHECK-LABEL: @or_ne_sgt(
2917 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 13
2918 ; CHECK-NEXT:    ret i1 [[A]]
2920   %a = icmp ne i8 %x, 13
2921   %b = icmp sgt i8 %x, 17
2922   %c = or i1 %a, %b
2923   ret i1 %c
2926 ; x != 13 || x <=s 17
2928 define i1 @or_ne_sle(i8 %x) {
2929 ; CHECK-LABEL: @or_ne_sle(
2930 ; CHECK-NEXT:    ret i1 true
2932   %a = icmp ne i8 %x, 13
2933   %b = icmp sle i8 %x, 17
2934   %c = or i1 %a, %b
2935   ret i1 %c
2938 ; x != 13 || x <s 17
2940 define i1 @or_ne_slt(i8 %x) {
2941 ; CHECK-LABEL: @or_ne_slt(
2942 ; CHECK-NEXT:    ret i1 true
2944   %a = icmp ne i8 %x, 13
2945   %b = icmp slt i8 %x, 17
2946   %c = or i1 %a, %b
2947   ret i1 %c
2950 ; x != 13 || x >=u 17
2952 define i1 @or_ne_uge(i8 %x) {
2953 ; CHECK-LABEL: @or_ne_uge(
2954 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 13
2955 ; CHECK-NEXT:    ret i1 [[A]]
2957   %a = icmp ne i8 %x, 13
2958   %b = icmp uge i8 %x, 17
2959   %c = or i1 %a, %b
2960   ret i1 %c
2963 ; x != 13 || x >u 17
2965 define i1 @or_ne_ugt(i8 %x) {
2966 ; CHECK-LABEL: @or_ne_ugt(
2967 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 13
2968 ; CHECK-NEXT:    ret i1 [[A]]
2970   %a = icmp ne i8 %x, 13
2971   %b = icmp ugt i8 %x, 17
2972   %c = or i1 %a, %b
2973   ret i1 %c
2976 ; x != 13 || x <=u 17
2978 define i1 @or_ne_ule(i8 %x) {
2979 ; CHECK-LABEL: @or_ne_ule(
2980 ; CHECK-NEXT:    ret i1 true
2982   %a = icmp ne i8 %x, 13
2983   %b = icmp ule i8 %x, 17
2984   %c = or i1 %a, %b
2985   ret i1 %c
2988 ; x != 13 || x <u 17
2990 define i1 @or_ne_ult(i8 %x) {
2991 ; CHECK-LABEL: @or_ne_ult(
2992 ; CHECK-NEXT:    ret i1 true
2994   %a = icmp ne i8 %x, 13
2995   %b = icmp ult i8 %x, 17
2996   %c = or i1 %a, %b
2997   ret i1 %c
3000 ; sge
3001 ; x >=s 13 || x == 17
3003 define i1 @or_sge_eq(i8 %x) {
3004 ; CHECK-LABEL: @or_sge_eq(
3005 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
3006 ; CHECK-NEXT:    ret i1 [[A]]
3008   %a = icmp sge i8 %x, 13
3009   %b = icmp eq i8 %x, 17
3010   %c = or i1 %a, %b
3011   ret i1 %c
3014 ; x >=s 13 || x != 17
3016 define i1 @or_sge_ne(i8 %x) {
3017 ; CHECK-LABEL: @or_sge_ne(
3018 ; CHECK-NEXT:    ret i1 true
3020   %a = icmp sge i8 %x, 13
3021   %b = icmp ne i8 %x, 17
3022   %c = or i1 %a, %b
3023   ret i1 %c
3026 ; x >=s 13 || x >=s 17
3028 define i1 @or_sge_sge(i8 %x) {
3029 ; CHECK-LABEL: @or_sge_sge(
3030 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
3031 ; CHECK-NEXT:    ret i1 [[A]]
3033   %a = icmp sge i8 %x, 13
3034   %b = icmp sge i8 %x, 17
3035   %c = or i1 %a, %b
3036   ret i1 %c
3039 ; x >=s 13 || x >s 17
3041 define i1 @or_sge_sgt(i8 %x) {
3042 ; CHECK-LABEL: @or_sge_sgt(
3043 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
3044 ; CHECK-NEXT:    ret i1 [[A]]
3046   %a = icmp sge i8 %x, 13
3047   %b = icmp sgt i8 %x, 17
3048   %c = or i1 %a, %b
3049   ret i1 %c
3052 ; x >=s 13 || x <=s 17
3054 define i1 @or_sge_sle(i8 %x) {
3055 ; CHECK-LABEL: @or_sge_sle(
3056 ; CHECK-NEXT:    ret i1 true
3058   %a = icmp sge i8 %x, 13
3059   %b = icmp sle i8 %x, 17
3060   %c = or i1 %a, %b
3061   ret i1 %c
3064 ; x >=s 13 || x <s 17
3066 define i1 @or_sge_slt(i8 %x) {
3067 ; CHECK-LABEL: @or_sge_slt(
3068 ; CHECK-NEXT:    ret i1 true
3070   %a = icmp sge i8 %x, 13
3071   %b = icmp slt i8 %x, 17
3072   %c = or i1 %a, %b
3073   ret i1 %c
3076 ; x >=s 13 || x >=u 17
3078 define i1 @or_sge_uge(i8 %x) {
3079 ; CHECK-LABEL: @or_sge_uge(
3080 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
3081 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
3082 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3083 ; CHECK-NEXT:    ret i1 [[C]]
3085   %a = icmp sge i8 %x, 13
3086   %b = icmp uge i8 %x, 17
3087   %c = or i1 %a, %b
3088   ret i1 %c
3091 ; x >=s 13 || x >u 17
3093 define i1 @or_sge_ugt(i8 %x) {
3094 ; CHECK-LABEL: @or_sge_ugt(
3095 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
3096 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
3097 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3098 ; CHECK-NEXT:    ret i1 [[C]]
3100   %a = icmp sge i8 %x, 13
3101   %b = icmp ugt i8 %x, 17
3102   %c = or i1 %a, %b
3103   ret i1 %c
3106 ; x >=s 13 || x <=u 17
3108 define i1 @or_sge_ule(i8 %x) {
3109 ; CHECK-LABEL: @or_sge_ule(
3110 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
3111 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
3112 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3113 ; CHECK-NEXT:    ret i1 [[C]]
3115   %a = icmp sge i8 %x, 13
3116   %b = icmp ule i8 %x, 17
3117   %c = or i1 %a, %b
3118   ret i1 %c
3121 ; x >=s 13 || x <u 17
3123 define i1 @or_sge_ult(i8 %x) {
3124 ; CHECK-LABEL: @or_sge_ult(
3125 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 13
3126 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
3127 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3128 ; CHECK-NEXT:    ret i1 [[C]]
3130   %a = icmp sge i8 %x, 13
3131   %b = icmp ult i8 %x, 17
3132   %c = or i1 %a, %b
3133   ret i1 %c
3136 ; sgt
3137 ; x >s 13 || x == 17
3139 define i1 @or_sgt_eq(i8 %x) {
3140 ; CHECK-LABEL: @or_sgt_eq(
3141 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
3142 ; CHECK-NEXT:    ret i1 [[A]]
3144   %a = icmp sgt i8 %x, 13
3145   %b = icmp eq i8 %x, 17
3146   %c = or i1 %a, %b
3147   ret i1 %c
3150 ; x >s 13 || x != 17
3152 define i1 @or_sgt_ne(i8 %x) {
3153 ; CHECK-LABEL: @or_sgt_ne(
3154 ; CHECK-NEXT:    ret i1 true
3156   %a = icmp sgt i8 %x, 13
3157   %b = icmp ne i8 %x, 17
3158   %c = or i1 %a, %b
3159   ret i1 %c
3162 ; x >s 13 || x >=s 17
3164 define i1 @or_sgt_sge(i8 %x) {
3165 ; CHECK-LABEL: @or_sgt_sge(
3166 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
3167 ; CHECK-NEXT:    ret i1 [[A]]
3169   %a = icmp sgt i8 %x, 13
3170   %b = icmp sge i8 %x, 17
3171   %c = or i1 %a, %b
3172   ret i1 %c
3175 ; x >s 13 || x >s 17
3177 define i1 @or_sgt_sgt(i8 %x) {
3178 ; CHECK-LABEL: @or_sgt_sgt(
3179 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
3180 ; CHECK-NEXT:    ret i1 [[A]]
3182   %a = icmp sgt i8 %x, 13
3183   %b = icmp sgt i8 %x, 17
3184   %c = or i1 %a, %b
3185   ret i1 %c
3188 ; x >s 13 || x <=s 17
3190 define i1 @or_sgt_sle(i8 %x) {
3191 ; CHECK-LABEL: @or_sgt_sle(
3192 ; CHECK-NEXT:    ret i1 true
3194   %a = icmp sgt i8 %x, 13
3195   %b = icmp sle i8 %x, 17
3196   %c = or i1 %a, %b
3197   ret i1 %c
3200 ; x >s 13 || x <s 17
3202 define i1 @or_sgt_slt(i8 %x) {
3203 ; CHECK-LABEL: @or_sgt_slt(
3204 ; CHECK-NEXT:    ret i1 true
3206   %a = icmp sgt i8 %x, 13
3207   %b = icmp slt i8 %x, 17
3208   %c = or i1 %a, %b
3209   ret i1 %c
3212 ; x >s 13 || x >=u 17
3214 define i1 @or_sgt_uge(i8 %x) {
3215 ; CHECK-LABEL: @or_sgt_uge(
3216 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
3217 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
3218 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3219 ; CHECK-NEXT:    ret i1 [[C]]
3221   %a = icmp sgt i8 %x, 13
3222   %b = icmp uge i8 %x, 17
3223   %c = or i1 %a, %b
3224   ret i1 %c
3227 ; x >s 13 || x >u 17
3229 define i1 @or_sgt_ugt(i8 %x) {
3230 ; CHECK-LABEL: @or_sgt_ugt(
3231 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
3232 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
3233 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3234 ; CHECK-NEXT:    ret i1 [[C]]
3236   %a = icmp sgt i8 %x, 13
3237   %b = icmp ugt i8 %x, 17
3238   %c = or i1 %a, %b
3239   ret i1 %c
3242 ; x >s 13 || x <=u 17
3244 define i1 @or_sgt_ule(i8 %x) {
3245 ; CHECK-LABEL: @or_sgt_ule(
3246 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
3247 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
3248 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3249 ; CHECK-NEXT:    ret i1 [[C]]
3251   %a = icmp sgt i8 %x, 13
3252   %b = icmp ule i8 %x, 17
3253   %c = or i1 %a, %b
3254   ret i1 %c
3257 ; x >s 13 || x <u 17
3259 define i1 @or_sgt_ult(i8 %x) {
3260 ; CHECK-LABEL: @or_sgt_ult(
3261 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 13
3262 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
3263 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3264 ; CHECK-NEXT:    ret i1 [[C]]
3266   %a = icmp sgt i8 %x, 13
3267   %b = icmp ult i8 %x, 17
3268   %c = or i1 %a, %b
3269   ret i1 %c
3272 ; sle
3273 ; x <=s 13 || x == 17
3275 define i1 @or_sle_eq(i8 %x) {
3276 ; CHECK-LABEL: @or_sle_eq(
3277 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
3278 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X]], 17
3279 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3280 ; CHECK-NEXT:    ret i1 [[C]]
3282   %a = icmp sle i8 %x, 13
3283   %b = icmp eq i8 %x, 17
3284   %c = or i1 %a, %b
3285   ret i1 %c
3288 ; x <=s 13 || x != 17
3290 define i1 @or_sle_ne(i8 %x) {
3291 ; CHECK-LABEL: @or_sle_ne(
3292 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X:%.*]], 17
3293 ; CHECK-NEXT:    ret i1 [[B]]
3295   %a = icmp sle i8 %x, 13
3296   %b = icmp ne i8 %x, 17
3297   %c = or i1 %a, %b
3298   ret i1 %c
3301 ; x <=s 13 || x >=s 17
3303 define i1 @or_sle_sge(i8 %x) {
3304 ; CHECK-LABEL: @or_sle_sge(
3305 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
3306 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
3307 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3308 ; CHECK-NEXT:    ret i1 [[C]]
3310   %a = icmp sle i8 %x, 13
3311   %b = icmp sge i8 %x, 17
3312   %c = or i1 %a, %b
3313   ret i1 %c
3316 ; x <=s 13 || x >s 17
3318 define i1 @or_sle_sgt(i8 %x) {
3319 ; CHECK-LABEL: @or_sle_sgt(
3320 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
3321 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
3322 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3323 ; CHECK-NEXT:    ret i1 [[C]]
3325   %a = icmp sle i8 %x, 13
3326   %b = icmp sgt i8 %x, 17
3327   %c = or i1 %a, %b
3328   ret i1 %c
3331 ; x <=s 13 || x <=s 17
3333 define i1 @or_sle_sle(i8 %x) {
3334 ; CHECK-LABEL: @or_sle_sle(
3335 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X:%.*]], 17
3336 ; CHECK-NEXT:    ret i1 [[B]]
3338   %a = icmp sle i8 %x, 13
3339   %b = icmp sle i8 %x, 17
3340   %c = or i1 %a, %b
3341   ret i1 %c
3344 ; x <=s 13 || x <s 17
3346 define i1 @or_sle_slt(i8 %x) {
3347 ; CHECK-LABEL: @or_sle_slt(
3348 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X:%.*]], 17
3349 ; CHECK-NEXT:    ret i1 [[B]]
3351   %a = icmp sle i8 %x, 13
3352   %b = icmp slt i8 %x, 17
3353   %c = or i1 %a, %b
3354   ret i1 %c
3357 ; x <=s 13 || x >=u 17
3359 define i1 @or_sle_uge(i8 %x) {
3360 ; CHECK-LABEL: @or_sle_uge(
3361 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
3362 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
3363 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3364 ; CHECK-NEXT:    ret i1 [[C]]
3366   %a = icmp sle i8 %x, 13
3367   %b = icmp uge i8 %x, 17
3368   %c = or i1 %a, %b
3369   ret i1 %c
3372 ; x <=s 13 || x >u 17
3374 define i1 @or_sle_ugt(i8 %x) {
3375 ; CHECK-LABEL: @or_sle_ugt(
3376 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
3377 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
3378 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3379 ; CHECK-NEXT:    ret i1 [[C]]
3381   %a = icmp sle i8 %x, 13
3382   %b = icmp ugt i8 %x, 17
3383   %c = or i1 %a, %b
3384   ret i1 %c
3387 ; x <=s 13 || x <=u 17
3389 define i1 @or_sle_ule(i8 %x) {
3390 ; CHECK-LABEL: @or_sle_ule(
3391 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
3392 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
3393 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3394 ; CHECK-NEXT:    ret i1 [[C]]
3396   %a = icmp sle i8 %x, 13
3397   %b = icmp ule i8 %x, 17
3398   %c = or i1 %a, %b
3399   ret i1 %c
3402 ; x <=s 13 || x <u 17
3404 define i1 @or_sle_ult(i8 %x) {
3405 ; CHECK-LABEL: @or_sle_ult(
3406 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 13
3407 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
3408 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3409 ; CHECK-NEXT:    ret i1 [[C]]
3411   %a = icmp sle i8 %x, 13
3412   %b = icmp ult i8 %x, 17
3413   %c = or i1 %a, %b
3414   ret i1 %c
3417 ; slt
3418 ; x <s 13 || x == 17
3420 define i1 @or_slt_eq(i8 %x) {
3421 ; CHECK-LABEL: @or_slt_eq(
3422 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
3423 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X]], 17
3424 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3425 ; CHECK-NEXT:    ret i1 [[C]]
3427   %a = icmp slt i8 %x, 13
3428   %b = icmp eq i8 %x, 17
3429   %c = or i1 %a, %b
3430   ret i1 %c
3433 ; x <s 13 || x != 17
3435 define i1 @or_slt_ne(i8 %x) {
3436 ; CHECK-LABEL: @or_slt_ne(
3437 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X:%.*]], 17
3438 ; CHECK-NEXT:    ret i1 [[B]]
3440   %a = icmp slt i8 %x, 13
3441   %b = icmp ne i8 %x, 17
3442   %c = or i1 %a, %b
3443   ret i1 %c
3446 ; x <s 13 || x >=s 17
3448 define i1 @or_slt_sge(i8 %x) {
3449 ; CHECK-LABEL: @or_slt_sge(
3450 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
3451 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
3452 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3453 ; CHECK-NEXT:    ret i1 [[C]]
3455   %a = icmp slt i8 %x, 13
3456   %b = icmp sge i8 %x, 17
3457   %c = or i1 %a, %b
3458   ret i1 %c
3461 ; x <s 13 || x >s 17
3463 define i1 @or_slt_sgt(i8 %x) {
3464 ; CHECK-LABEL: @or_slt_sgt(
3465 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
3466 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
3467 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3468 ; CHECK-NEXT:    ret i1 [[C]]
3470   %a = icmp slt i8 %x, 13
3471   %b = icmp sgt i8 %x, 17
3472   %c = or i1 %a, %b
3473   ret i1 %c
3476 ; x <s 13 || x <=s 17
3478 define i1 @or_slt_sle(i8 %x) {
3479 ; CHECK-LABEL: @or_slt_sle(
3480 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X:%.*]], 17
3481 ; CHECK-NEXT:    ret i1 [[B]]
3483   %a = icmp slt i8 %x, 13
3484   %b = icmp sle i8 %x, 17
3485   %c = or i1 %a, %b
3486   ret i1 %c
3489 ; x <s 13 || x <s 17
3491 define i1 @or_slt_slt(i8 %x) {
3492 ; CHECK-LABEL: @or_slt_slt(
3493 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X:%.*]], 17
3494 ; CHECK-NEXT:    ret i1 [[B]]
3496   %a = icmp slt i8 %x, 13
3497   %b = icmp slt i8 %x, 17
3498   %c = or i1 %a, %b
3499   ret i1 %c
3502 ; x <s 13 || x >=u 17
3504 define i1 @or_slt_uge(i8 %x) {
3505 ; CHECK-LABEL: @or_slt_uge(
3506 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
3507 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
3508 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3509 ; CHECK-NEXT:    ret i1 [[C]]
3511   %a = icmp slt i8 %x, 13
3512   %b = icmp uge i8 %x, 17
3513   %c = or i1 %a, %b
3514   ret i1 %c
3517 ; x <s 13 || x >u 17
3519 define i1 @or_slt_ugt(i8 %x) {
3520 ; CHECK-LABEL: @or_slt_ugt(
3521 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
3522 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
3523 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3524 ; CHECK-NEXT:    ret i1 [[C]]
3526   %a = icmp slt i8 %x, 13
3527   %b = icmp ugt i8 %x, 17
3528   %c = or i1 %a, %b
3529   ret i1 %c
3532 ; x <s 13 || x <=u 17
3534 define i1 @or_slt_ule(i8 %x) {
3535 ; CHECK-LABEL: @or_slt_ule(
3536 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
3537 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
3538 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3539 ; CHECK-NEXT:    ret i1 [[C]]
3541   %a = icmp slt i8 %x, 13
3542   %b = icmp ule i8 %x, 17
3543   %c = or i1 %a, %b
3544   ret i1 %c
3547 ; x <s 13 || x <u 17
3549 define i1 @or_slt_ult(i8 %x) {
3550 ; CHECK-LABEL: @or_slt_ult(
3551 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 13
3552 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
3553 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3554 ; CHECK-NEXT:    ret i1 [[C]]
3556   %a = icmp slt i8 %x, 13
3557   %b = icmp ult i8 %x, 17
3558   %c = or i1 %a, %b
3559   ret i1 %c
3562 ; uge
3563 ; x >=u 13 || x == 17
3565 define i1 @or_uge_eq(i8 %x) {
3566 ; CHECK-LABEL: @or_uge_eq(
3567 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 13
3568 ; CHECK-NEXT:    ret i1 [[A]]
3570   %a = icmp uge i8 %x, 13
3571   %b = icmp eq i8 %x, 17
3572   %c = or i1 %a, %b
3573   ret i1 %c
3576 ; x >=u 13 || x != 17
3578 define i1 @or_uge_ne(i8 %x) {
3579 ; CHECK-LABEL: @or_uge_ne(
3580 ; CHECK-NEXT:    ret i1 true
3582   %a = icmp uge i8 %x, 13
3583   %b = icmp ne i8 %x, 17
3584   %c = or i1 %a, %b
3585   ret i1 %c
3588 ; x >=u 13 || x >=s 17
3590 define i1 @or_uge_sge(i8 %x) {
3591 ; CHECK-LABEL: @or_uge_sge(
3592 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 13
3593 ; CHECK-NEXT:    ret i1 [[A]]
3595   %a = icmp uge i8 %x, 13
3596   %b = icmp sge i8 %x, 17
3597   %c = or i1 %a, %b
3598   ret i1 %c
3601 ; x >=u 13 || x >s 17
3603 define i1 @or_uge_sgt(i8 %x) {
3604 ; CHECK-LABEL: @or_uge_sgt(
3605 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 13
3606 ; CHECK-NEXT:    ret i1 [[A]]
3608   %a = icmp uge i8 %x, 13
3609   %b = icmp sgt i8 %x, 17
3610   %c = or i1 %a, %b
3611   ret i1 %c
3614 ; x >=u 13 || x <=s 17
3616 define i1 @or_uge_sle(i8 %x) {
3617 ; CHECK-LABEL: @or_uge_sle(
3618 ; CHECK-NEXT:    ret i1 true
3620   %a = icmp uge i8 %x, 13
3621   %b = icmp sle i8 %x, 17
3622   %c = or i1 %a, %b
3623   ret i1 %c
3626 ; x >=u 13 || x <s 17
3628 define i1 @or_uge_slt(i8 %x) {
3629 ; CHECK-LABEL: @or_uge_slt(
3630 ; CHECK-NEXT:    ret i1 true
3632   %a = icmp uge i8 %x, 13
3633   %b = icmp slt i8 %x, 17
3634   %c = or i1 %a, %b
3635   ret i1 %c
3638 ; x >=u 13 || x >=u 17
3640 define i1 @or_uge_uge(i8 %x) {
3641 ; CHECK-LABEL: @or_uge_uge(
3642 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 13
3643 ; CHECK-NEXT:    ret i1 [[A]]
3645   %a = icmp uge i8 %x, 13
3646   %b = icmp uge i8 %x, 17
3647   %c = or i1 %a, %b
3648   ret i1 %c
3651 ; x >=u 13 || x >u 17
3653 define i1 @or_uge_ugt(i8 %x) {
3654 ; CHECK-LABEL: @or_uge_ugt(
3655 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 13
3656 ; CHECK-NEXT:    ret i1 [[A]]
3658   %a = icmp uge i8 %x, 13
3659   %b = icmp ugt i8 %x, 17
3660   %c = or i1 %a, %b
3661   ret i1 %c
3664 ; x >=u 13 || x <=u 17
3666 define i1 @or_uge_ule(i8 %x) {
3667 ; CHECK-LABEL: @or_uge_ule(
3668 ; CHECK-NEXT:    ret i1 true
3670   %a = icmp uge i8 %x, 13
3671   %b = icmp ule i8 %x, 17
3672   %c = or i1 %a, %b
3673   ret i1 %c
3676 ; x >=u 13 || x <u 17
3678 define i1 @or_uge_ult(i8 %x) {
3679 ; CHECK-LABEL: @or_uge_ult(
3680 ; CHECK-NEXT:    ret i1 true
3682   %a = icmp uge i8 %x, 13
3683   %b = icmp ult i8 %x, 17
3684   %c = or i1 %a, %b
3685   ret i1 %c
3688 ; ugt
3689 ; x >u 13 || x == 17
3691 define i1 @or_ugt_eq(i8 %x) {
3692 ; CHECK-LABEL: @or_ugt_eq(
3693 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13
3694 ; CHECK-NEXT:    ret i1 [[A]]
3696   %a = icmp ugt i8 %x, 13
3697   %b = icmp eq i8 %x, 17
3698   %c = or i1 %a, %b
3699   ret i1 %c
3702 ; x >u 13 || x != 17
3704 define i1 @or_ugt_ne(i8 %x) {
3705 ; CHECK-LABEL: @or_ugt_ne(
3706 ; CHECK-NEXT:    ret i1 true
3708   %a = icmp ugt i8 %x, 13
3709   %b = icmp ne i8 %x, 17
3710   %c = or i1 %a, %b
3711   ret i1 %c
3714 ; x >u 13 || x >=s 17
3716 define i1 @or_ugt_sge(i8 %x) {
3717 ; CHECK-LABEL: @or_ugt_sge(
3718 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13
3719 ; CHECK-NEXT:    ret i1 [[A]]
3721   %a = icmp ugt i8 %x, 13
3722   %b = icmp sge i8 %x, 17
3723   %c = or i1 %a, %b
3724   ret i1 %c
3727 ; x >u 13 || x >s 17
3729 define i1 @or_ugt_sgt(i8 %x) {
3730 ; CHECK-LABEL: @or_ugt_sgt(
3731 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13
3732 ; CHECK-NEXT:    ret i1 [[A]]
3734   %a = icmp ugt i8 %x, 13
3735   %b = icmp sgt i8 %x, 17
3736   %c = or i1 %a, %b
3737   ret i1 %c
3740 ; x >u 13 || x <=s 17
3742 define i1 @or_ugt_sle(i8 %x) {
3743 ; CHECK-LABEL: @or_ugt_sle(
3744 ; CHECK-NEXT:    ret i1 true
3746   %a = icmp ugt i8 %x, 13
3747   %b = icmp sle i8 %x, 17
3748   %c = or i1 %a, %b
3749   ret i1 %c
3752 ; x >u 13 || x <s 17
3754 define i1 @or_ugt_slt(i8 %x) {
3755 ; CHECK-LABEL: @or_ugt_slt(
3756 ; CHECK-NEXT:    ret i1 true
3758   %a = icmp ugt i8 %x, 13
3759   %b = icmp slt i8 %x, 17
3760   %c = or i1 %a, %b
3761   ret i1 %c
3764 ; x >u 13 || x >=u 17
3766 define i1 @or_ugt_uge(i8 %x) {
3767 ; CHECK-LABEL: @or_ugt_uge(
3768 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13
3769 ; CHECK-NEXT:    ret i1 [[A]]
3771   %a = icmp ugt i8 %x, 13
3772   %b = icmp uge i8 %x, 17
3773   %c = or i1 %a, %b
3774   ret i1 %c
3777 ; x >u 13 || x >u 17
3779 define i1 @or_ugt_ugt(i8 %x) {
3780 ; CHECK-LABEL: @or_ugt_ugt(
3781 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 13
3782 ; CHECK-NEXT:    ret i1 [[A]]
3784   %a = icmp ugt i8 %x, 13
3785   %b = icmp ugt i8 %x, 17
3786   %c = or i1 %a, %b
3787   ret i1 %c
3790 ; x >u 13 || x <=u 17
3792 define i1 @or_ugt_ule(i8 %x) {
3793 ; CHECK-LABEL: @or_ugt_ule(
3794 ; CHECK-NEXT:    ret i1 true
3796   %a = icmp ugt i8 %x, 13
3797   %b = icmp ule i8 %x, 17
3798   %c = or i1 %a, %b
3799   ret i1 %c
3802 ; x >u 13 || x <u 17
3804 define i1 @or_ugt_ult(i8 %x) {
3805 ; CHECK-LABEL: @or_ugt_ult(
3806 ; CHECK-NEXT:    ret i1 true
3808   %a = icmp ugt i8 %x, 13
3809   %b = icmp ult i8 %x, 17
3810   %c = or i1 %a, %b
3811   ret i1 %c
3814 ; ule
3815 ; x <=u 13 || x == 17
3817 define i1 @or_ule_eq(i8 %x) {
3818 ; CHECK-LABEL: @or_ule_eq(
3819 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 13
3820 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X]], 17
3821 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3822 ; CHECK-NEXT:    ret i1 [[C]]
3824   %a = icmp ule i8 %x, 13
3825   %b = icmp eq i8 %x, 17
3826   %c = or i1 %a, %b
3827   ret i1 %c
3830 ; x <=u 13 || x != 17
3832 define i1 @or_ule_ne(i8 %x) {
3833 ; CHECK-LABEL: @or_ule_ne(
3834 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X:%.*]], 17
3835 ; CHECK-NEXT:    ret i1 [[B]]
3837   %a = icmp ule i8 %x, 13
3838   %b = icmp ne i8 %x, 17
3839   %c = or i1 %a, %b
3840   ret i1 %c
3843 ; x <=u 13 || x >=s 17
3845 define i1 @or_ule_sge(i8 %x) {
3846 ; CHECK-LABEL: @or_ule_sge(
3847 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 13
3848 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
3849 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3850 ; CHECK-NEXT:    ret i1 [[C]]
3852   %a = icmp ule i8 %x, 13
3853   %b = icmp sge i8 %x, 17
3854   %c = or i1 %a, %b
3855   ret i1 %c
3858 ; x <=u 13 || x >s 17
3860 define i1 @or_ule_sgt(i8 %x) {
3861 ; CHECK-LABEL: @or_ule_sgt(
3862 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 13
3863 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
3864 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3865 ; CHECK-NEXT:    ret i1 [[C]]
3867   %a = icmp ule i8 %x, 13
3868   %b = icmp sgt i8 %x, 17
3869   %c = or i1 %a, %b
3870   ret i1 %c
3873 ; x <=u 13 || x <=s 17
3875 define i1 @or_ule_sle(i8 %x) {
3876 ; CHECK-LABEL: @or_ule_sle(
3877 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X:%.*]], 17
3878 ; CHECK-NEXT:    ret i1 [[B]]
3880   %a = icmp ule i8 %x, 13
3881   %b = icmp sle i8 %x, 17
3882   %c = or i1 %a, %b
3883   ret i1 %c
3886 ; x <=u 13 || x <s 17
3888 define i1 @or_ule_slt(i8 %x) {
3889 ; CHECK-LABEL: @or_ule_slt(
3890 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X:%.*]], 17
3891 ; CHECK-NEXT:    ret i1 [[B]]
3893   %a = icmp ule i8 %x, 13
3894   %b = icmp slt i8 %x, 17
3895   %c = or i1 %a, %b
3896   ret i1 %c
3899 ; x <=u 13 || x >=u 17
3901 define i1 @or_ule_uge(i8 %x) {
3902 ; CHECK-LABEL: @or_ule_uge(
3903 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 13
3904 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
3905 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3906 ; CHECK-NEXT:    ret i1 [[C]]
3908   %a = icmp ule i8 %x, 13
3909   %b = icmp uge i8 %x, 17
3910   %c = or i1 %a, %b
3911   ret i1 %c
3914 ; x <=u 13 || x >u 17
3916 define i1 @or_ule_ugt(i8 %x) {
3917 ; CHECK-LABEL: @or_ule_ugt(
3918 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 13
3919 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
3920 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3921 ; CHECK-NEXT:    ret i1 [[C]]
3923   %a = icmp ule i8 %x, 13
3924   %b = icmp ugt i8 %x, 17
3925   %c = or i1 %a, %b
3926   ret i1 %c
3929 ; x <=u 13 || x <=u 17
3931 define i1 @or_ule_ule(i8 %x) {
3932 ; CHECK-LABEL: @or_ule_ule(
3933 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X:%.*]], 17
3934 ; CHECK-NEXT:    ret i1 [[B]]
3936   %a = icmp ule i8 %x, 13
3937   %b = icmp ule i8 %x, 17
3938   %c = or i1 %a, %b
3939   ret i1 %c
3942 ; x <=u 13 || x <u 17
3944 define i1 @or_ule_ult(i8 %x) {
3945 ; CHECK-LABEL: @or_ule_ult(
3946 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X:%.*]], 17
3947 ; CHECK-NEXT:    ret i1 [[B]]
3949   %a = icmp ule i8 %x, 13
3950   %b = icmp ult i8 %x, 17
3951   %c = or i1 %a, %b
3952   ret i1 %c
3955 ; ult
3956 ; x <u 13 || x == 17
3958 define i1 @or_ult_eq(i8 %x) {
3959 ; CHECK-LABEL: @or_ult_eq(
3960 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 13
3961 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X]], 17
3962 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3963 ; CHECK-NEXT:    ret i1 [[C]]
3965   %a = icmp ult i8 %x, 13
3966   %b = icmp eq i8 %x, 17
3967   %c = or i1 %a, %b
3968   ret i1 %c
3971 ; x <u 13 || x != 17
3973 define i1 @or_ult_ne(i8 %x) {
3974 ; CHECK-LABEL: @or_ult_ne(
3975 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X:%.*]], 17
3976 ; CHECK-NEXT:    ret i1 [[B]]
3978   %a = icmp ult i8 %x, 13
3979   %b = icmp ne i8 %x, 17
3980   %c = or i1 %a, %b
3981   ret i1 %c
3984 ; x <u 13 || x >=s 17
3986 define i1 @or_ult_sge(i8 %x) {
3987 ; CHECK-LABEL: @or_ult_sge(
3988 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 13
3989 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
3990 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
3991 ; CHECK-NEXT:    ret i1 [[C]]
3993   %a = icmp ult i8 %x, 13
3994   %b = icmp sge i8 %x, 17
3995   %c = or i1 %a, %b
3996   ret i1 %c
3999 ; x <u 13 || x >s 17
4001 define i1 @or_ult_sgt(i8 %x) {
4002 ; CHECK-LABEL: @or_ult_sgt(
4003 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 13
4004 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
4005 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4006 ; CHECK-NEXT:    ret i1 [[C]]
4008   %a = icmp ult i8 %x, 13
4009   %b = icmp sgt i8 %x, 17
4010   %c = or i1 %a, %b
4011   ret i1 %c
4014 ; x <u 13 || x <=s 17
4016 define i1 @or_ult_sle(i8 %x) {
4017 ; CHECK-LABEL: @or_ult_sle(
4018 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X:%.*]], 17
4019 ; CHECK-NEXT:    ret i1 [[B]]
4021   %a = icmp ult i8 %x, 13
4022   %b = icmp sle i8 %x, 17
4023   %c = or i1 %a, %b
4024   ret i1 %c
4027 ; x <u 13 || x <s 17
4029 define i1 @or_ult_slt(i8 %x) {
4030 ; CHECK-LABEL: @or_ult_slt(
4031 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X:%.*]], 17
4032 ; CHECK-NEXT:    ret i1 [[B]]
4034   %a = icmp ult i8 %x, 13
4035   %b = icmp slt i8 %x, 17
4036   %c = or i1 %a, %b
4037   ret i1 %c
4040 ; x <u 13 || x >=u 17
4042 define i1 @or_ult_uge(i8 %x) {
4043 ; CHECK-LABEL: @or_ult_uge(
4044 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 13
4045 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X]], 17
4046 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4047 ; CHECK-NEXT:    ret i1 [[C]]
4049   %a = icmp ult i8 %x, 13
4050   %b = icmp uge i8 %x, 17
4051   %c = or i1 %a, %b
4052   ret i1 %c
4055 ; x <u 13 || x >u 17
4057 define i1 @or_ult_ugt(i8 %x) {
4058 ; CHECK-LABEL: @or_ult_ugt(
4059 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 13
4060 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X]], 17
4061 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4062 ; CHECK-NEXT:    ret i1 [[C]]
4064   %a = icmp ult i8 %x, 13
4065   %b = icmp ugt i8 %x, 17
4066   %c = or i1 %a, %b
4067   ret i1 %c
4070 ; x <u 13 || x <=u 17
4072 define i1 @or_ult_ule(i8 %x) {
4073 ; CHECK-LABEL: @or_ult_ule(
4074 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X:%.*]], 17
4075 ; CHECK-NEXT:    ret i1 [[B]]
4077   %a = icmp ult i8 %x, 13
4078   %b = icmp ule i8 %x, 17
4079   %c = or i1 %a, %b
4080   ret i1 %c
4083 ; x <u 13 || x <u 17
4085 define i1 @or_ult_ult(i8 %x) {
4086 ; CHECK-LABEL: @or_ult_ult(
4087 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X:%.*]], 17
4088 ; CHECK-NEXT:    ret i1 [[B]]
4090   %a = icmp ult i8 %x, 13
4091   %b = icmp ult i8 %x, 17
4092   %c = or i1 %a, %b
4093   ret i1 %c
4096 ; eq
4097 ; x == 23 || x == 17
4099 define i1 @or_eq_eq_swap(i8 %x) {
4100 ; CHECK-LABEL: @or_eq_eq_swap(
4101 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 23
4102 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X]], 17
4103 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4104 ; CHECK-NEXT:    ret i1 [[C]]
4106   %a = icmp eq i8 %x, 23
4107   %b = icmp eq i8 %x, 17
4108   %c = or i1 %a, %b
4109   ret i1 %c
4112 ; x == 23 || x != 17
4114 define i1 @or_eq_ne_swap(i8 %x) {
4115 ; CHECK-LABEL: @or_eq_ne_swap(
4116 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X:%.*]], 17
4117 ; CHECK-NEXT:    ret i1 [[B]]
4119   %a = icmp eq i8 %x, 23
4120   %b = icmp ne i8 %x, 17
4121   %c = or i1 %a, %b
4122   ret i1 %c
4125 ; x == 23 || x >=s 17
4127 define i1 @or_eq_sge_swap(i8 %x) {
4128 ; CHECK-LABEL: @or_eq_sge_swap(
4129 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X:%.*]], 17
4130 ; CHECK-NEXT:    ret i1 [[B]]
4132   %a = icmp eq i8 %x, 23
4133   %b = icmp sge i8 %x, 17
4134   %c = or i1 %a, %b
4135   ret i1 %c
4138 ; x == 23 || x >s 17
4140 define i1 @or_eq_sgt_swap(i8 %x) {
4141 ; CHECK-LABEL: @or_eq_sgt_swap(
4142 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17
4143 ; CHECK-NEXT:    ret i1 [[B]]
4145   %a = icmp eq i8 %x, 23
4146   %b = icmp sgt i8 %x, 17
4147   %c = or i1 %a, %b
4148   ret i1 %c
4151 ; x == 23 || x <=s 17
4153 define i1 @or_eq_sle_swap(i8 %x) {
4154 ; CHECK-LABEL: @or_eq_sle_swap(
4155 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 23
4156 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
4157 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4158 ; CHECK-NEXT:    ret i1 [[C]]
4160   %a = icmp eq i8 %x, 23
4161   %b = icmp sle i8 %x, 17
4162   %c = or i1 %a, %b
4163   ret i1 %c
4166 ; x == 23 || x <s 17
4168 define i1 @or_eq_slt_swap(i8 %x) {
4169 ; CHECK-LABEL: @or_eq_slt_swap(
4170 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 23
4171 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
4172 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4173 ; CHECK-NEXT:    ret i1 [[C]]
4175   %a = icmp eq i8 %x, 23
4176   %b = icmp slt i8 %x, 17
4177   %c = or i1 %a, %b
4178   ret i1 %c
4181 ; x == 23 || x >=u 17
4183 define i1 @or_eq_uge_swap(i8 %x) {
4184 ; CHECK-LABEL: @or_eq_uge_swap(
4185 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X:%.*]], 17
4186 ; CHECK-NEXT:    ret i1 [[B]]
4188   %a = icmp eq i8 %x, 23
4189   %b = icmp uge i8 %x, 17
4190   %c = or i1 %a, %b
4191   ret i1 %c
4194 ; x == 23 || x >u 17
4196 define i1 @or_eq_ugt_swap(i8 %x) {
4197 ; CHECK-LABEL: @or_eq_ugt_swap(
4198 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17
4199 ; CHECK-NEXT:    ret i1 [[B]]
4201   %a = icmp eq i8 %x, 23
4202   %b = icmp ugt i8 %x, 17
4203   %c = or i1 %a, %b
4204   ret i1 %c
4207 ; x == 23 || x <=u 17
4209 define i1 @or_eq_ule_swap(i8 %x) {
4210 ; CHECK-LABEL: @or_eq_ule_swap(
4211 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 23
4212 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
4213 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4214 ; CHECK-NEXT:    ret i1 [[C]]
4216   %a = icmp eq i8 %x, 23
4217   %b = icmp ule i8 %x, 17
4218   %c = or i1 %a, %b
4219   ret i1 %c
4222 ; x == 23 || x <u 17
4224 define i1 @or_eq_ult_swap(i8 %x) {
4225 ; CHECK-LABEL: @or_eq_ult_swap(
4226 ; CHECK-NEXT:    [[A:%.*]] = icmp eq i8 [[X:%.*]], 23
4227 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
4228 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4229 ; CHECK-NEXT:    ret i1 [[C]]
4231   %a = icmp eq i8 %x, 23
4232   %b = icmp ult i8 %x, 17
4233   %c = or i1 %a, %b
4234   ret i1 %c
4237 ; ne
4238 ; x != 23 || x == 17
4240 define i1 @or_ne_eq_swap(i8 %x) {
4241 ; CHECK-LABEL: @or_ne_eq_swap(
4242 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 23
4243 ; CHECK-NEXT:    ret i1 [[A]]
4245   %a = icmp ne i8 %x, 23
4246   %b = icmp eq i8 %x, 17
4247   %c = or i1 %a, %b
4248   ret i1 %c
4251 ; x != 23 || x != 17
4253 define i1 @or_ne_ne_swap(i8 %x) {
4254 ; CHECK-LABEL: @or_ne_ne_swap(
4255 ; CHECK-NEXT:    ret i1 true
4257   %a = icmp ne i8 %x, 23
4258   %b = icmp ne i8 %x, 17
4259   %c = or i1 %a, %b
4260   ret i1 %c
4263 ; x != 23 || x >=s 17
4265 define i1 @or_ne_sge_swap(i8 %x) {
4266 ; CHECK-LABEL: @or_ne_sge_swap(
4267 ; CHECK-NEXT:    ret i1 true
4269   %a = icmp ne i8 %x, 23
4270   %b = icmp sge i8 %x, 17
4271   %c = or i1 %a, %b
4272   ret i1 %c
4275 ; x != 23 || x >s 17
4277 define i1 @or_ne_sgt_swap(i8 %x) {
4278 ; CHECK-LABEL: @or_ne_sgt_swap(
4279 ; CHECK-NEXT:    ret i1 true
4281   %a = icmp ne i8 %x, 23
4282   %b = icmp sgt i8 %x, 17
4283   %c = or i1 %a, %b
4284   ret i1 %c
4287 ; x != 23 || x <=s 17
4289 define i1 @or_ne_sle_swap(i8 %x) {
4290 ; CHECK-LABEL: @or_ne_sle_swap(
4291 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 23
4292 ; CHECK-NEXT:    ret i1 [[A]]
4294   %a = icmp ne i8 %x, 23
4295   %b = icmp sle i8 %x, 17
4296   %c = or i1 %a, %b
4297   ret i1 %c
4300 ; x != 23 || x <s 17
4302 define i1 @or_ne_slt_swap(i8 %x) {
4303 ; CHECK-LABEL: @or_ne_slt_swap(
4304 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 23
4305 ; CHECK-NEXT:    ret i1 [[A]]
4307   %a = icmp ne i8 %x, 23
4308   %b = icmp slt i8 %x, 17
4309   %c = or i1 %a, %b
4310   ret i1 %c
4313 ; x != 23 || x >=u 17
4315 define i1 @or_ne_uge_swap(i8 %x) {
4316 ; CHECK-LABEL: @or_ne_uge_swap(
4317 ; CHECK-NEXT:    ret i1 true
4319   %a = icmp ne i8 %x, 23
4320   %b = icmp uge i8 %x, 17
4321   %c = or i1 %a, %b
4322   ret i1 %c
4325 ; x != 23 || x >u 17
4327 define i1 @or_ne_ugt_swap(i8 %x) {
4328 ; CHECK-LABEL: @or_ne_ugt_swap(
4329 ; CHECK-NEXT:    ret i1 true
4331   %a = icmp ne i8 %x, 23
4332   %b = icmp ugt i8 %x, 17
4333   %c = or i1 %a, %b
4334   ret i1 %c
4337 ; x != 23 || x <=u 17
4339 define i1 @or_ne_ule_swap(i8 %x) {
4340 ; CHECK-LABEL: @or_ne_ule_swap(
4341 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 23
4342 ; CHECK-NEXT:    ret i1 [[A]]
4344   %a = icmp ne i8 %x, 23
4345   %b = icmp ule i8 %x, 17
4346   %c = or i1 %a, %b
4347   ret i1 %c
4350 ; x != 23 || x <u 17
4352 define i1 @or_ne_ult_swap(i8 %x) {
4353 ; CHECK-LABEL: @or_ne_ult_swap(
4354 ; CHECK-NEXT:    [[A:%.*]] = icmp ne i8 [[X:%.*]], 23
4355 ; CHECK-NEXT:    ret i1 [[A]]
4357   %a = icmp ne i8 %x, 23
4358   %b = icmp ult i8 %x, 17
4359   %c = or i1 %a, %b
4360   ret i1 %c
4363 ; sge
4364 ; x >=s 23 || x == 17
4366 define i1 @or_sge_eq_swap(i8 %x) {
4367 ; CHECK-LABEL: @or_sge_eq_swap(
4368 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 23
4369 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X]], 17
4370 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4371 ; CHECK-NEXT:    ret i1 [[C]]
4373   %a = icmp sge i8 %x, 23
4374   %b = icmp eq i8 %x, 17
4375   %c = or i1 %a, %b
4376   ret i1 %c
4379 ; x >=s 23 || x != 17
4381 define i1 @or_sge_ne_swap(i8 %x) {
4382 ; CHECK-LABEL: @or_sge_ne_swap(
4383 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X:%.*]], 17
4384 ; CHECK-NEXT:    ret i1 [[B]]
4386   %a = icmp sge i8 %x, 23
4387   %b = icmp ne i8 %x, 17
4388   %c = or i1 %a, %b
4389   ret i1 %c
4392 ; x >=s 23 || x >=s 17
4394 define i1 @or_sge_sge_swap(i8 %x) {
4395 ; CHECK-LABEL: @or_sge_sge_swap(
4396 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X:%.*]], 17
4397 ; CHECK-NEXT:    ret i1 [[B]]
4399   %a = icmp sge i8 %x, 23
4400   %b = icmp sge i8 %x, 17
4401   %c = or i1 %a, %b
4402   ret i1 %c
4405 ; x >=s 23 || x >s 17
4407 define i1 @or_sge_sgt_swap(i8 %x) {
4408 ; CHECK-LABEL: @or_sge_sgt_swap(
4409 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17
4410 ; CHECK-NEXT:    ret i1 [[B]]
4412   %a = icmp sge i8 %x, 23
4413   %b = icmp sgt i8 %x, 17
4414   %c = or i1 %a, %b
4415   ret i1 %c
4418 ; x >=s 23 || x <=s 17
4420 define i1 @or_sge_sle_swap(i8 %x) {
4421 ; CHECK-LABEL: @or_sge_sle_swap(
4422 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 23
4423 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
4424 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4425 ; CHECK-NEXT:    ret i1 [[C]]
4427   %a = icmp sge i8 %x, 23
4428   %b = icmp sle i8 %x, 17
4429   %c = or i1 %a, %b
4430   ret i1 %c
4433 ; x >=s 23 || x <s 17
4435 define i1 @or_sge_slt_swap(i8 %x) {
4436 ; CHECK-LABEL: @or_sge_slt_swap(
4437 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 23
4438 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
4439 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4440 ; CHECK-NEXT:    ret i1 [[C]]
4442   %a = icmp sge i8 %x, 23
4443   %b = icmp slt i8 %x, 17
4444   %c = or i1 %a, %b
4445   ret i1 %c
4448 ; x >=s 23 || x >=u 17
4450 define i1 @or_sge_uge_swap(i8 %x) {
4451 ; CHECK-LABEL: @or_sge_uge_swap(
4452 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X:%.*]], 17
4453 ; CHECK-NEXT:    ret i1 [[B]]
4455   %a = icmp sge i8 %x, 23
4456   %b = icmp uge i8 %x, 17
4457   %c = or i1 %a, %b
4458   ret i1 %c
4461 ; x >=s 23 || x >u 17
4463 define i1 @or_sge_ugt_swap(i8 %x) {
4464 ; CHECK-LABEL: @or_sge_ugt_swap(
4465 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17
4466 ; CHECK-NEXT:    ret i1 [[B]]
4468   %a = icmp sge i8 %x, 23
4469   %b = icmp ugt i8 %x, 17
4470   %c = or i1 %a, %b
4471   ret i1 %c
4474 ; x >=s 23 || x <=u 17
4476 define i1 @or_sge_ule_swap(i8 %x) {
4477 ; CHECK-LABEL: @or_sge_ule_swap(
4478 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 23
4479 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
4480 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4481 ; CHECK-NEXT:    ret i1 [[C]]
4483   %a = icmp sge i8 %x, 23
4484   %b = icmp ule i8 %x, 17
4485   %c = or i1 %a, %b
4486   ret i1 %c
4489 ; x >=s 23 || x <u 17
4491 define i1 @or_sge_ult_swap(i8 %x) {
4492 ; CHECK-LABEL: @or_sge_ult_swap(
4493 ; CHECK-NEXT:    [[A:%.*]] = icmp sge i8 [[X:%.*]], 23
4494 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
4495 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4496 ; CHECK-NEXT:    ret i1 [[C]]
4498   %a = icmp sge i8 %x, 23
4499   %b = icmp ult i8 %x, 17
4500   %c = or i1 %a, %b
4501   ret i1 %c
4504 ; sgt
4505 ; x >s 23 || x == 17
4507 define i1 @or_sgt_eq_swap(i8 %x) {
4508 ; CHECK-LABEL: @or_sgt_eq_swap(
4509 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23
4510 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X]], 17
4511 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4512 ; CHECK-NEXT:    ret i1 [[C]]
4514   %a = icmp sgt i8 %x, 23
4515   %b = icmp eq i8 %x, 17
4516   %c = or i1 %a, %b
4517   ret i1 %c
4520 ; x >s 23 || x != 17
4522 define i1 @or_sgt_ne_swap(i8 %x) {
4523 ; CHECK-LABEL: @or_sgt_ne_swap(
4524 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X:%.*]], 17
4525 ; CHECK-NEXT:    ret i1 [[B]]
4527   %a = icmp sgt i8 %x, 23
4528   %b = icmp ne i8 %x, 17
4529   %c = or i1 %a, %b
4530   ret i1 %c
4533 ; x >s 23 || x >=s 17
4535 define i1 @or_sgt_sge_swap(i8 %x) {
4536 ; CHECK-LABEL: @or_sgt_sge_swap(
4537 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X:%.*]], 17
4538 ; CHECK-NEXT:    ret i1 [[B]]
4540   %a = icmp sgt i8 %x, 23
4541   %b = icmp sge i8 %x, 17
4542   %c = or i1 %a, %b
4543   ret i1 %c
4546 ; x >s 23 || x >s 17
4548 define i1 @or_sgt_sgt_swap(i8 %x) {
4549 ; CHECK-LABEL: @or_sgt_sgt_swap(
4550 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X:%.*]], 17
4551 ; CHECK-NEXT:    ret i1 [[B]]
4553   %a = icmp sgt i8 %x, 23
4554   %b = icmp sgt i8 %x, 17
4555   %c = or i1 %a, %b
4556   ret i1 %c
4559 ; x >s 23 || x <=s 17
4561 define i1 @or_sgt_sle_swap(i8 %x) {
4562 ; CHECK-LABEL: @or_sgt_sle_swap(
4563 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23
4564 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
4565 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4566 ; CHECK-NEXT:    ret i1 [[C]]
4568   %a = icmp sgt i8 %x, 23
4569   %b = icmp sle i8 %x, 17
4570   %c = or i1 %a, %b
4571   ret i1 %c
4574 ; x >s 23 || x <s 17
4576 define i1 @or_sgt_slt_swap(i8 %x) {
4577 ; CHECK-LABEL: @or_sgt_slt_swap(
4578 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23
4579 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
4580 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4581 ; CHECK-NEXT:    ret i1 [[C]]
4583   %a = icmp sgt i8 %x, 23
4584   %b = icmp slt i8 %x, 17
4585   %c = or i1 %a, %b
4586   ret i1 %c
4589 ; x >s 23 || x >=u 17
4591 define i1 @or_sgt_uge_swap(i8 %x) {
4592 ; CHECK-LABEL: @or_sgt_uge_swap(
4593 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X:%.*]], 17
4594 ; CHECK-NEXT:    ret i1 [[B]]
4596   %a = icmp sgt i8 %x, 23
4597   %b = icmp uge i8 %x, 17
4598   %c = or i1 %a, %b
4599   ret i1 %c
4602 ; x >s 23 || x >u 17
4604 define i1 @or_sgt_ugt_swap(i8 %x) {
4605 ; CHECK-LABEL: @or_sgt_ugt_swap(
4606 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17
4607 ; CHECK-NEXT:    ret i1 [[B]]
4609   %a = icmp sgt i8 %x, 23
4610   %b = icmp ugt i8 %x, 17
4611   %c = or i1 %a, %b
4612   ret i1 %c
4615 ; x >s 23 || x <=u 17
4617 define i1 @or_sgt_ule_swap(i8 %x) {
4618 ; CHECK-LABEL: @or_sgt_ule_swap(
4619 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23
4620 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
4621 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4622 ; CHECK-NEXT:    ret i1 [[C]]
4624   %a = icmp sgt i8 %x, 23
4625   %b = icmp ule i8 %x, 17
4626   %c = or i1 %a, %b
4627   ret i1 %c
4630 ; x >s 23 || x <u 17
4632 define i1 @or_sgt_ult_swap(i8 %x) {
4633 ; CHECK-LABEL: @or_sgt_ult_swap(
4634 ; CHECK-NEXT:    [[A:%.*]] = icmp sgt i8 [[X:%.*]], 23
4635 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
4636 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4637 ; CHECK-NEXT:    ret i1 [[C]]
4639   %a = icmp sgt i8 %x, 23
4640   %b = icmp ult i8 %x, 17
4641   %c = or i1 %a, %b
4642   ret i1 %c
4645 ; sle
4646 ; x <=s 23 || x == 17
4648 define i1 @or_sle_eq_swap(i8 %x) {
4649 ; CHECK-LABEL: @or_sle_eq_swap(
4650 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 23
4651 ; CHECK-NEXT:    ret i1 [[A]]
4653   %a = icmp sle i8 %x, 23
4654   %b = icmp eq i8 %x, 17
4655   %c = or i1 %a, %b
4656   ret i1 %c
4659 ; x <=s 23 || x != 17
4661 define i1 @or_sle_ne_swap(i8 %x) {
4662 ; CHECK-LABEL: @or_sle_ne_swap(
4663 ; CHECK-NEXT:    ret i1 true
4665   %a = icmp sle i8 %x, 23
4666   %b = icmp ne i8 %x, 17
4667   %c = or i1 %a, %b
4668   ret i1 %c
4671 ; x <=s 23 || x >=s 17
4673 define i1 @or_sle_sge_swap(i8 %x) {
4674 ; CHECK-LABEL: @or_sle_sge_swap(
4675 ; CHECK-NEXT:    ret i1 true
4677   %a = icmp sle i8 %x, 23
4678   %b = icmp sge i8 %x, 17
4679   %c = or i1 %a, %b
4680   ret i1 %c
4683 ; x <=s 23 || x >s 17
4685 define i1 @or_sle_sgt_swap(i8 %x) {
4686 ; CHECK-LABEL: @or_sle_sgt_swap(
4687 ; CHECK-NEXT:    ret i1 true
4689   %a = icmp sle i8 %x, 23
4690   %b = icmp sgt i8 %x, 17
4691   %c = or i1 %a, %b
4692   ret i1 %c
4695 ; x <=s 23 || x <=s 17
4697 define i1 @or_sle_sle_swap(i8 %x) {
4698 ; CHECK-LABEL: @or_sle_sle_swap(
4699 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 23
4700 ; CHECK-NEXT:    ret i1 [[A]]
4702   %a = icmp sle i8 %x, 23
4703   %b = icmp sle i8 %x, 17
4704   %c = or i1 %a, %b
4705   ret i1 %c
4708 ; x <=s 23 || x <s 17
4710 define i1 @or_sle_slt_swap(i8 %x) {
4711 ; CHECK-LABEL: @or_sle_slt_swap(
4712 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 23
4713 ; CHECK-NEXT:    ret i1 [[A]]
4715   %a = icmp sle i8 %x, 23
4716   %b = icmp slt i8 %x, 17
4717   %c = or i1 %a, %b
4718   ret i1 %c
4721 ; x <=s 23 || x >=u 17
4723 define i1 @or_sle_uge_swap(i8 %x) {
4724 ; CHECK-LABEL: @or_sle_uge_swap(
4725 ; CHECK-NEXT:    ret i1 true
4727   %a = icmp sle i8 %x, 23
4728   %b = icmp uge i8 %x, 17
4729   %c = or i1 %a, %b
4730   ret i1 %c
4733 ; x <=s 23 || x >u 17
4735 define i1 @or_sle_ugt_swap(i8 %x) {
4736 ; CHECK-LABEL: @or_sle_ugt_swap(
4737 ; CHECK-NEXT:    ret i1 true
4739   %a = icmp sle i8 %x, 23
4740   %b = icmp ugt i8 %x, 17
4741   %c = or i1 %a, %b
4742   ret i1 %c
4745 ; x <=s 23 || x <=u 17
4747 define i1 @or_sle_ule_swap(i8 %x) {
4748 ; CHECK-LABEL: @or_sle_ule_swap(
4749 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 23
4750 ; CHECK-NEXT:    ret i1 [[A]]
4752   %a = icmp sle i8 %x, 23
4753   %b = icmp ule i8 %x, 17
4754   %c = or i1 %a, %b
4755   ret i1 %c
4758 ; x <=s 23 || x <u 17
4760 define i1 @or_sle_ult_swap(i8 %x) {
4761 ; CHECK-LABEL: @or_sle_ult_swap(
4762 ; CHECK-NEXT:    [[A:%.*]] = icmp sle i8 [[X:%.*]], 23
4763 ; CHECK-NEXT:    ret i1 [[A]]
4765   %a = icmp sle i8 %x, 23
4766   %b = icmp ult i8 %x, 17
4767   %c = or i1 %a, %b
4768   ret i1 %c
4771 ; slt
4772 ; x <s 23 || x == 17
4774 define i1 @or_slt_eq_swap(i8 %x) {
4775 ; CHECK-LABEL: @or_slt_eq_swap(
4776 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 23
4777 ; CHECK-NEXT:    ret i1 [[A]]
4779   %a = icmp slt i8 %x, 23
4780   %b = icmp eq i8 %x, 17
4781   %c = or i1 %a, %b
4782   ret i1 %c
4785 ; x <s 23 || x != 17
4787 define i1 @or_slt_ne_swap(i8 %x) {
4788 ; CHECK-LABEL: @or_slt_ne_swap(
4789 ; CHECK-NEXT:    ret i1 true
4791   %a = icmp slt i8 %x, 23
4792   %b = icmp ne i8 %x, 17
4793   %c = or i1 %a, %b
4794   ret i1 %c
4797 ; x <s 23 || x >=s 17
4799 define i1 @or_slt_sge_swap(i8 %x) {
4800 ; CHECK-LABEL: @or_slt_sge_swap(
4801 ; CHECK-NEXT:    ret i1 true
4803   %a = icmp slt i8 %x, 23
4804   %b = icmp sge i8 %x, 17
4805   %c = or i1 %a, %b
4806   ret i1 %c
4809 ; x <s 23 || x >s 17
4811 define i1 @or_slt_sgt_swap(i8 %x) {
4812 ; CHECK-LABEL: @or_slt_sgt_swap(
4813 ; CHECK-NEXT:    ret i1 true
4815   %a = icmp slt i8 %x, 23
4816   %b = icmp sgt i8 %x, 17
4817   %c = or i1 %a, %b
4818   ret i1 %c
4821 ; x <s 23 || x <=s 17
4823 define i1 @or_slt_sle_swap(i8 %x) {
4824 ; CHECK-LABEL: @or_slt_sle_swap(
4825 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 23
4826 ; CHECK-NEXT:    ret i1 [[A]]
4828   %a = icmp slt i8 %x, 23
4829   %b = icmp sle i8 %x, 17
4830   %c = or i1 %a, %b
4831   ret i1 %c
4834 ; x <s 23 || x <s 17
4836 define i1 @or_slt_slt_swap(i8 %x) {
4837 ; CHECK-LABEL: @or_slt_slt_swap(
4838 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 23
4839 ; CHECK-NEXT:    ret i1 [[A]]
4841   %a = icmp slt i8 %x, 23
4842   %b = icmp slt i8 %x, 17
4843   %c = or i1 %a, %b
4844   ret i1 %c
4847 ; x <s 23 || x >=u 17
4849 define i1 @or_slt_uge_swap(i8 %x) {
4850 ; CHECK-LABEL: @or_slt_uge_swap(
4851 ; CHECK-NEXT:    ret i1 true
4853   %a = icmp slt i8 %x, 23
4854   %b = icmp uge i8 %x, 17
4855   %c = or i1 %a, %b
4856   ret i1 %c
4859 ; x <s 23 || x >u 17
4861 define i1 @or_slt_ugt_swap(i8 %x) {
4862 ; CHECK-LABEL: @or_slt_ugt_swap(
4863 ; CHECK-NEXT:    ret i1 true
4865   %a = icmp slt i8 %x, 23
4866   %b = icmp ugt i8 %x, 17
4867   %c = or i1 %a, %b
4868   ret i1 %c
4871 ; x <s 23 || x <=u 17
4873 define i1 @or_slt_ule_swap(i8 %x) {
4874 ; CHECK-LABEL: @or_slt_ule_swap(
4875 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 23
4876 ; CHECK-NEXT:    ret i1 [[A]]
4878   %a = icmp slt i8 %x, 23
4879   %b = icmp ule i8 %x, 17
4880   %c = or i1 %a, %b
4881   ret i1 %c
4884 ; x <s 23 || x <u 17
4886 define i1 @or_slt_ult_swap(i8 %x) {
4887 ; CHECK-LABEL: @or_slt_ult_swap(
4888 ; CHECK-NEXT:    [[A:%.*]] = icmp slt i8 [[X:%.*]], 23
4889 ; CHECK-NEXT:    ret i1 [[A]]
4891   %a = icmp slt i8 %x, 23
4892   %b = icmp ult i8 %x, 17
4893   %c = or i1 %a, %b
4894   ret i1 %c
4897 ; uge
4898 ; x >=u 23 || x == 17
4900 define i1 @or_uge_eq_swap(i8 %x) {
4901 ; CHECK-LABEL: @or_uge_eq_swap(
4902 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
4903 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X]], 17
4904 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4905 ; CHECK-NEXT:    ret i1 [[C]]
4907   %a = icmp uge i8 %x, 23
4908   %b = icmp eq i8 %x, 17
4909   %c = or i1 %a, %b
4910   ret i1 %c
4913 ; x >=u 23 || x != 17
4915 define i1 @or_uge_ne_swap(i8 %x) {
4916 ; CHECK-LABEL: @or_uge_ne_swap(
4917 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X:%.*]], 17
4918 ; CHECK-NEXT:    ret i1 [[B]]
4920   %a = icmp uge i8 %x, 23
4921   %b = icmp ne i8 %x, 17
4922   %c = or i1 %a, %b
4923   ret i1 %c
4926 ; x >=u 23 || x >=s 17
4928 define i1 @or_uge_sge_swap(i8 %x) {
4929 ; CHECK-LABEL: @or_uge_sge_swap(
4930 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
4931 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
4932 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4933 ; CHECK-NEXT:    ret i1 [[C]]
4935   %a = icmp uge i8 %x, 23
4936   %b = icmp sge i8 %x, 17
4937   %c = or i1 %a, %b
4938   ret i1 %c
4941 ; x >=u 23 || x >s 17
4943 define i1 @or_uge_sgt_swap(i8 %x) {
4944 ; CHECK-LABEL: @or_uge_sgt_swap(
4945 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
4946 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
4947 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4948 ; CHECK-NEXT:    ret i1 [[C]]
4950   %a = icmp uge i8 %x, 23
4951   %b = icmp sgt i8 %x, 17
4952   %c = or i1 %a, %b
4953   ret i1 %c
4956 ; x >=u 23 || x <=s 17
4958 define i1 @or_uge_sle_swap(i8 %x) {
4959 ; CHECK-LABEL: @or_uge_sle_swap(
4960 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
4961 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
4962 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4963 ; CHECK-NEXT:    ret i1 [[C]]
4965   %a = icmp uge i8 %x, 23
4966   %b = icmp sle i8 %x, 17
4967   %c = or i1 %a, %b
4968   ret i1 %c
4971 ; x >=u 23 || x <s 17
4973 define i1 @or_uge_slt_swap(i8 %x) {
4974 ; CHECK-LABEL: @or_uge_slt_swap(
4975 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
4976 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
4977 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
4978 ; CHECK-NEXT:    ret i1 [[C]]
4980   %a = icmp uge i8 %x, 23
4981   %b = icmp slt i8 %x, 17
4982   %c = or i1 %a, %b
4983   ret i1 %c
4986 ; x >=u 23 || x >=u 17
4988 define i1 @or_uge_uge_swap(i8 %x) {
4989 ; CHECK-LABEL: @or_uge_uge_swap(
4990 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X:%.*]], 17
4991 ; CHECK-NEXT:    ret i1 [[B]]
4993   %a = icmp uge i8 %x, 23
4994   %b = icmp uge i8 %x, 17
4995   %c = or i1 %a, %b
4996   ret i1 %c
4999 ; x >=u 23 || x >u 17
5001 define i1 @or_uge_ugt_swap(i8 %x) {
5002 ; CHECK-LABEL: @or_uge_ugt_swap(
5003 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17
5004 ; CHECK-NEXT:    ret i1 [[B]]
5006   %a = icmp uge i8 %x, 23
5007   %b = icmp ugt i8 %x, 17
5008   %c = or i1 %a, %b
5009   ret i1 %c
5012 ; x >=u 23 || x <=u 17
5014 define i1 @or_uge_ule_swap(i8 %x) {
5015 ; CHECK-LABEL: @or_uge_ule_swap(
5016 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
5017 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
5018 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5019 ; CHECK-NEXT:    ret i1 [[C]]
5021   %a = icmp uge i8 %x, 23
5022   %b = icmp ule i8 %x, 17
5023   %c = or i1 %a, %b
5024   ret i1 %c
5027 ; x >=u 23 || x <u 17
5029 define i1 @or_uge_ult_swap(i8 %x) {
5030 ; CHECK-LABEL: @or_uge_ult_swap(
5031 ; CHECK-NEXT:    [[A:%.*]] = icmp uge i8 [[X:%.*]], 23
5032 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
5033 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5034 ; CHECK-NEXT:    ret i1 [[C]]
5036   %a = icmp uge i8 %x, 23
5037   %b = icmp ult i8 %x, 17
5038   %c = or i1 %a, %b
5039   ret i1 %c
5042 ; ugt
5043 ; x >u 23 || x == 17
5045 define i1 @or_ugt_eq_swap(i8 %x) {
5046 ; CHECK-LABEL: @or_ugt_eq_swap(
5047 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
5048 ; CHECK-NEXT:    [[B:%.*]] = icmp eq i8 [[X]], 17
5049 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5050 ; CHECK-NEXT:    ret i1 [[C]]
5052   %a = icmp ugt i8 %x, 23
5053   %b = icmp eq i8 %x, 17
5054   %c = or i1 %a, %b
5055   ret i1 %c
5058 ; x >u 23 || x != 17
5060 define i1 @or_ugt_ne_swap(i8 %x) {
5061 ; CHECK-LABEL: @or_ugt_ne_swap(
5062 ; CHECK-NEXT:    [[B:%.*]] = icmp ne i8 [[X:%.*]], 17
5063 ; CHECK-NEXT:    ret i1 [[B]]
5065   %a = icmp ugt i8 %x, 23
5066   %b = icmp ne i8 %x, 17
5067   %c = or i1 %a, %b
5068   ret i1 %c
5071 ; x >u 23 || x >=s 17
5073 define i1 @or_ugt_sge_swap(i8 %x) {
5074 ; CHECK-LABEL: @or_ugt_sge_swap(
5075 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
5076 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
5077 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5078 ; CHECK-NEXT:    ret i1 [[C]]
5080   %a = icmp ugt i8 %x, 23
5081   %b = icmp sge i8 %x, 17
5082   %c = or i1 %a, %b
5083   ret i1 %c
5086 ; x >u 23 || x >s 17
5088 define i1 @or_ugt_sgt_swap(i8 %x) {
5089 ; CHECK-LABEL: @or_ugt_sgt_swap(
5090 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
5091 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
5092 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5093 ; CHECK-NEXT:    ret i1 [[C]]
5095   %a = icmp ugt i8 %x, 23
5096   %b = icmp sgt i8 %x, 17
5097   %c = or i1 %a, %b
5098   ret i1 %c
5101 ; x >u 23 || x <=s 17
5103 define i1 @or_ugt_sle_swap(i8 %x) {
5104 ; CHECK-LABEL: @or_ugt_sle_swap(
5105 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
5106 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
5107 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5108 ; CHECK-NEXT:    ret i1 [[C]]
5110   %a = icmp ugt i8 %x, 23
5111   %b = icmp sle i8 %x, 17
5112   %c = or i1 %a, %b
5113   ret i1 %c
5116 ; x >u 23 || x <s 17
5118 define i1 @or_ugt_slt_swap(i8 %x) {
5119 ; CHECK-LABEL: @or_ugt_slt_swap(
5120 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
5121 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
5122 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5123 ; CHECK-NEXT:    ret i1 [[C]]
5125   %a = icmp ugt i8 %x, 23
5126   %b = icmp slt i8 %x, 17
5127   %c = or i1 %a, %b
5128   ret i1 %c
5131 ; x >u 23 || x >=u 17
5133 define i1 @or_ugt_uge_swap(i8 %x) {
5134 ; CHECK-LABEL: @or_ugt_uge_swap(
5135 ; CHECK-NEXT:    [[B:%.*]] = icmp uge i8 [[X:%.*]], 17
5136 ; CHECK-NEXT:    ret i1 [[B]]
5138   %a = icmp ugt i8 %x, 23
5139   %b = icmp uge i8 %x, 17
5140   %c = or i1 %a, %b
5141   ret i1 %c
5144 ; x >u 23 || x >u 17
5146 define i1 @or_ugt_ugt_swap(i8 %x) {
5147 ; CHECK-LABEL: @or_ugt_ugt_swap(
5148 ; CHECK-NEXT:    [[B:%.*]] = icmp ugt i8 [[X:%.*]], 17
5149 ; CHECK-NEXT:    ret i1 [[B]]
5151   %a = icmp ugt i8 %x, 23
5152   %b = icmp ugt i8 %x, 17
5153   %c = or i1 %a, %b
5154   ret i1 %c
5157 ; x >u 23 || x <=u 17
5159 define i1 @or_ugt_ule_swap(i8 %x) {
5160 ; CHECK-LABEL: @or_ugt_ule_swap(
5161 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
5162 ; CHECK-NEXT:    [[B:%.*]] = icmp ule i8 [[X]], 17
5163 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5164 ; CHECK-NEXT:    ret i1 [[C]]
5166   %a = icmp ugt i8 %x, 23
5167   %b = icmp ule i8 %x, 17
5168   %c = or i1 %a, %b
5169   ret i1 %c
5172 ; x >u 23 || x <u 17
5174 define i1 @or_ugt_ult_swap(i8 %x) {
5175 ; CHECK-LABEL: @or_ugt_ult_swap(
5176 ; CHECK-NEXT:    [[A:%.*]] = icmp ugt i8 [[X:%.*]], 23
5177 ; CHECK-NEXT:    [[B:%.*]] = icmp ult i8 [[X]], 17
5178 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5179 ; CHECK-NEXT:    ret i1 [[C]]
5181   %a = icmp ugt i8 %x, 23
5182   %b = icmp ult i8 %x, 17
5183   %c = or i1 %a, %b
5184   ret i1 %c
5187 ; ule
5188 ; x <=u 23 || x == 17
5190 define i1 @or_ule_eq_swap(i8 %x) {
5191 ; CHECK-LABEL: @or_ule_eq_swap(
5192 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
5193 ; CHECK-NEXT:    ret i1 [[A]]
5195   %a = icmp ule i8 %x, 23
5196   %b = icmp eq i8 %x, 17
5197   %c = or i1 %a, %b
5198   ret i1 %c
5201 ; x <=u 23 || x != 17
5203 define i1 @or_ule_ne_swap(i8 %x) {
5204 ; CHECK-LABEL: @or_ule_ne_swap(
5205 ; CHECK-NEXT:    ret i1 true
5207   %a = icmp ule i8 %x, 23
5208   %b = icmp ne i8 %x, 17
5209   %c = or i1 %a, %b
5210   ret i1 %c
5213 ; x <=u 23 || x >=s 17
5215 define i1 @or_ule_sge_swap(i8 %x) {
5216 ; CHECK-LABEL: @or_ule_sge_swap(
5217 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
5218 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
5219 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5220 ; CHECK-NEXT:    ret i1 [[C]]
5222   %a = icmp ule i8 %x, 23
5223   %b = icmp sge i8 %x, 17
5224   %c = or i1 %a, %b
5225   ret i1 %c
5228 ; x <=u 23 || x >s 17
5230 define i1 @or_ule_sgt_swap(i8 %x) {
5231 ; CHECK-LABEL: @or_ule_sgt_swap(
5232 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
5233 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
5234 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5235 ; CHECK-NEXT:    ret i1 [[C]]
5237   %a = icmp ule i8 %x, 23
5238   %b = icmp sgt i8 %x, 17
5239   %c = or i1 %a, %b
5240   ret i1 %c
5243 ; x <=u 23 || x <=s 17
5245 define i1 @or_ule_sle_swap(i8 %x) {
5246 ; CHECK-LABEL: @or_ule_sle_swap(
5247 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
5248 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
5249 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5250 ; CHECK-NEXT:    ret i1 [[C]]
5252   %a = icmp ule i8 %x, 23
5253   %b = icmp sle i8 %x, 17
5254   %c = or i1 %a, %b
5255   ret i1 %c
5258 ; x <=u 23 || x <s 17
5260 define i1 @or_ule_slt_swap(i8 %x) {
5261 ; CHECK-LABEL: @or_ule_slt_swap(
5262 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
5263 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
5264 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5265 ; CHECK-NEXT:    ret i1 [[C]]
5267   %a = icmp ule i8 %x, 23
5268   %b = icmp slt i8 %x, 17
5269   %c = or i1 %a, %b
5270   ret i1 %c
5273 ; x <=u 23 || x >=u 17
5275 define i1 @or_ule_uge_swap(i8 %x) {
5276 ; CHECK-LABEL: @or_ule_uge_swap(
5277 ; CHECK-NEXT:    ret i1 true
5279   %a = icmp ule i8 %x, 23
5280   %b = icmp uge i8 %x, 17
5281   %c = or i1 %a, %b
5282   ret i1 %c
5285 ; x <=u 23 || x >u 17
5287 define i1 @or_ule_ugt_swap(i8 %x) {
5288 ; CHECK-LABEL: @or_ule_ugt_swap(
5289 ; CHECK-NEXT:    ret i1 true
5291   %a = icmp ule i8 %x, 23
5292   %b = icmp ugt i8 %x, 17
5293   %c = or i1 %a, %b
5294   ret i1 %c
5297 ; x <=u 23 || x <=u 17
5299 define i1 @or_ule_ule_swap(i8 %x) {
5300 ; CHECK-LABEL: @or_ule_ule_swap(
5301 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
5302 ; CHECK-NEXT:    ret i1 [[A]]
5304   %a = icmp ule i8 %x, 23
5305   %b = icmp ule i8 %x, 17
5306   %c = or i1 %a, %b
5307   ret i1 %c
5310 ; x <=u 23 || x <u 17
5312 define i1 @or_ule_ult_swap(i8 %x) {
5313 ; CHECK-LABEL: @or_ule_ult_swap(
5314 ; CHECK-NEXT:    [[A:%.*]] = icmp ule i8 [[X:%.*]], 23
5315 ; CHECK-NEXT:    ret i1 [[A]]
5317   %a = icmp ule i8 %x, 23
5318   %b = icmp ult i8 %x, 17
5319   %c = or i1 %a, %b
5320   ret i1 %c
5323 ; ult
5324 ; x <u 23 || x == 17
5326 define i1 @or_ult_eq_swap(i8 %x) {
5327 ; CHECK-LABEL: @or_ult_eq_swap(
5328 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
5329 ; CHECK-NEXT:    ret i1 [[A]]
5331   %a = icmp ult i8 %x, 23
5332   %b = icmp eq i8 %x, 17
5333   %c = or i1 %a, %b
5334   ret i1 %c
5337 ; x <u 23 || x != 17
5339 define i1 @or_ult_ne_swap(i8 %x) {
5340 ; CHECK-LABEL: @or_ult_ne_swap(
5341 ; CHECK-NEXT:    ret i1 true
5343   %a = icmp ult i8 %x, 23
5344   %b = icmp ne i8 %x, 17
5345   %c = or i1 %a, %b
5346   ret i1 %c
5349 ; x <u 23 || x >=s 17
5351 define i1 @or_ult_sge_swap(i8 %x) {
5352 ; CHECK-LABEL: @or_ult_sge_swap(
5353 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
5354 ; CHECK-NEXT:    [[B:%.*]] = icmp sge i8 [[X]], 17
5355 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5356 ; CHECK-NEXT:    ret i1 [[C]]
5358   %a = icmp ult i8 %x, 23
5359   %b = icmp sge i8 %x, 17
5360   %c = or i1 %a, %b
5361   ret i1 %c
5364 ; x <u 23 || x >s 17
5366 define i1 @or_ult_sgt_swap(i8 %x) {
5367 ; CHECK-LABEL: @or_ult_sgt_swap(
5368 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
5369 ; CHECK-NEXT:    [[B:%.*]] = icmp sgt i8 [[X]], 17
5370 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5371 ; CHECK-NEXT:    ret i1 [[C]]
5373   %a = icmp ult i8 %x, 23
5374   %b = icmp sgt i8 %x, 17
5375   %c = or i1 %a, %b
5376   ret i1 %c
5379 ; x <u 23 || x <=s 17
5381 define i1 @or_ult_sle_swap(i8 %x) {
5382 ; CHECK-LABEL: @or_ult_sle_swap(
5383 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
5384 ; CHECK-NEXT:    [[B:%.*]] = icmp sle i8 [[X]], 17
5385 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5386 ; CHECK-NEXT:    ret i1 [[C]]
5388   %a = icmp ult i8 %x, 23
5389   %b = icmp sle i8 %x, 17
5390   %c = or i1 %a, %b
5391   ret i1 %c
5394 ; x <u 23 || x <s 17
5396 define i1 @or_ult_slt_swap(i8 %x) {
5397 ; CHECK-LABEL: @or_ult_slt_swap(
5398 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
5399 ; CHECK-NEXT:    [[B:%.*]] = icmp slt i8 [[X]], 17
5400 ; CHECK-NEXT:    [[C:%.*]] = or i1 [[A]], [[B]]
5401 ; CHECK-NEXT:    ret i1 [[C]]
5403   %a = icmp ult i8 %x, 23
5404   %b = icmp slt i8 %x, 17
5405   %c = or i1 %a, %b
5406   ret i1 %c
5409 ; x <u 23 || x >=u 17
5411 define i1 @or_ult_uge_swap(i8 %x) {
5412 ; CHECK-LABEL: @or_ult_uge_swap(
5413 ; CHECK-NEXT:    ret i1 true
5415   %a = icmp ult i8 %x, 23
5416   %b = icmp uge i8 %x, 17
5417   %c = or i1 %a, %b
5418   ret i1 %c
5421 ; x <u 23 || x >u 17
5423 define i1 @or_ult_ugt_swap(i8 %x) {
5424 ; CHECK-LABEL: @or_ult_ugt_swap(
5425 ; CHECK-NEXT:    ret i1 true
5427   %a = icmp ult i8 %x, 23
5428   %b = icmp ugt i8 %x, 17
5429   %c = or i1 %a, %b
5430   ret i1 %c
5433 ; x <u 23 || x <=u 17
5435 define i1 @or_ult_ule_swap(i8 %x) {
5436 ; CHECK-LABEL: @or_ult_ule_swap(
5437 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
5438 ; CHECK-NEXT:    ret i1 [[A]]
5440   %a = icmp ult i8 %x, 23
5441   %b = icmp ule i8 %x, 17
5442   %c = or i1 %a, %b
5443   ret i1 %c
5446 ; x <u 23 || x <u 17
5448 define i1 @or_ult_ult_swap(i8 %x) {
5449 ; CHECK-LABEL: @or_ult_ult_swap(
5450 ; CHECK-NEXT:    [[A:%.*]] = icmp ult i8 [[X:%.*]], 23
5451 ; CHECK-NEXT:    ret i1 [[A]]
5453   %a = icmp ult i8 %x, 23
5454   %b = icmp ult i8 %x, 17
5455   %c = or i1 %a, %b
5456   ret i1 %c
5459 ; Special case - slt is uge
5460 ; x <u 31 && x <s 0
5462 define i1 @empty2(i32 %x) {
5463 ; CHECK-LABEL: @empty2(
5464 ; CHECK-NEXT:    ret i1 false
5466   %a = icmp ult i32 %x, 31
5467   %b = icmp slt i32 %x, 0
5468   %c = and i1 %a, %b
5469   ret i1 %c