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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
5459 ; Special case - slt is uge
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