1 ; RUN: opt < %s -instsimplify -S | FileCheck %s
3 ; Cycle through all pairs of predicates to test
4 ; simplification of range-intersection or range-union.
9 define i1 @and_eq_eq(i8 %x) {
10 ; CHECK-LABEL: @and_eq_eq(
11 ; CHECK-NEXT: ret i1 false
13 %a = icmp eq i8 %x, 13
14 %b = icmp eq i8 %x, 17
21 define i1 @and_eq_ne(i8 %x) {
22 ; CHECK-LABEL: @and_eq_ne(
23 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 13
24 ; CHECK-NEXT: ret i1 [[A]]
26 %a = icmp eq i8 %x, 13
27 %b = icmp ne i8 %x, 17
34 define i1 @and_eq_sge(i8 %x) {
35 ; CHECK-LABEL: @and_eq_sge(
36 ; CHECK-NEXT: ret i1 false
38 %a = icmp eq i8 %x, 13
39 %b = icmp sge i8 %x, 17
46 define i1 @and_eq_sgt(i8 %x) {
47 ; CHECK-LABEL: @and_eq_sgt(
48 ; CHECK-NEXT: ret i1 false
50 %a = icmp eq i8 %x, 13
51 %b = icmp sgt i8 %x, 17
58 define i1 @and_eq_sle(i8 %x) {
59 ; CHECK-LABEL: @and_eq_sle(
60 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 13
61 ; CHECK-NEXT: ret i1 [[A]]
63 %a = icmp eq i8 %x, 13
64 %b = icmp sle i8 %x, 17
71 define i1 @and_eq_slt(i8 %x) {
72 ; CHECK-LABEL: @and_eq_slt(
73 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 13
74 ; CHECK-NEXT: ret i1 [[A]]
76 %a = icmp eq i8 %x, 13
77 %b = icmp slt i8 %x, 17
84 define i1 @and_eq_uge(i8 %x) {
85 ; CHECK-LABEL: @and_eq_uge(
86 ; CHECK-NEXT: ret i1 false
88 %a = icmp eq i8 %x, 13
89 %b = icmp uge i8 %x, 17
96 define i1 @and_eq_ugt(i8 %x) {
97 ; CHECK-LABEL: @and_eq_ugt(
98 ; CHECK-NEXT: ret i1 false
100 %a = icmp eq i8 %x, 13
101 %b = icmp ugt i8 %x, 17
106 ; x == 13 && x <=u 17
108 define i1 @and_eq_ule(i8 %x) {
109 ; CHECK-LABEL: @and_eq_ule(
110 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 13
111 ; CHECK-NEXT: ret i1 [[A]]
113 %a = icmp eq i8 %x, 13
114 %b = icmp ule i8 %x, 17
121 define i1 @and_eq_ult(i8 %x) {
122 ; CHECK-LABEL: @and_eq_ult(
123 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 13
124 ; CHECK-NEXT: ret i1 [[A]]
126 %a = icmp eq i8 %x, 13
127 %b = icmp ult i8 %x, 17
135 define i1 @and_ne_eq(i8 %x) {
136 ; CHECK-LABEL: @and_ne_eq(
137 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
138 ; CHECK-NEXT: ret i1 [[B]]
140 %a = icmp ne i8 %x, 13
141 %b = icmp eq i8 %x, 17
148 define i1 @and_ne_ne(i8 %x) {
149 ; CHECK-LABEL: @and_ne_ne(
150 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 13
151 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
152 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
153 ; CHECK-NEXT: ret i1 [[C]]
155 %a = icmp ne i8 %x, 13
156 %b = icmp ne i8 %x, 17
161 ; x != 13 && x >=s 17
163 define i1 @and_ne_sge(i8 %x) {
164 ; CHECK-LABEL: @and_ne_sge(
165 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
166 ; CHECK-NEXT: ret i1 [[B]]
168 %a = icmp ne i8 %x, 13
169 %b = icmp sge i8 %x, 17
176 define i1 @and_ne_sgt(i8 %x) {
177 ; CHECK-LABEL: @and_ne_sgt(
178 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
179 ; CHECK-NEXT: ret i1 [[B]]
181 %a = icmp ne i8 %x, 13
182 %b = icmp sgt i8 %x, 17
187 ; x != 13 && x <=s 17
189 define i1 @and_ne_sle(i8 %x) {
190 ; CHECK-LABEL: @and_ne_sle(
191 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 13
192 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
193 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
194 ; CHECK-NEXT: ret i1 [[C]]
196 %a = icmp ne i8 %x, 13
197 %b = icmp sle i8 %x, 17
204 define i1 @and_ne_slt(i8 %x) {
205 ; CHECK-LABEL: @and_ne_slt(
206 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 13
207 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
208 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
209 ; CHECK-NEXT: ret i1 [[C]]
211 %a = icmp ne i8 %x, 13
212 %b = icmp slt i8 %x, 17
217 ; x != 13 && x >=u 17
219 define i1 @and_ne_uge(i8 %x) {
220 ; CHECK-LABEL: @and_ne_uge(
221 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
222 ; CHECK-NEXT: ret i1 [[B]]
224 %a = icmp ne i8 %x, 13
225 %b = icmp uge i8 %x, 17
232 define i1 @and_ne_ugt(i8 %x) {
233 ; CHECK-LABEL: @and_ne_ugt(
234 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
235 ; CHECK-NEXT: ret i1 [[B]]
237 %a = icmp ne i8 %x, 13
238 %b = icmp ugt i8 %x, 17
243 ; x != 13 && x <=u 17
245 define i1 @and_ne_ule(i8 %x) {
246 ; CHECK-LABEL: @and_ne_ule(
247 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 13
248 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
249 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
250 ; CHECK-NEXT: ret i1 [[C]]
252 %a = icmp ne i8 %x, 13
253 %b = icmp ule i8 %x, 17
260 define i1 @and_ne_ult(i8 %x) {
261 ; CHECK-LABEL: @and_ne_ult(
262 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 13
263 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
264 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
265 ; CHECK-NEXT: ret i1 [[C]]
267 %a = icmp ne i8 %x, 13
268 %b = icmp ult i8 %x, 17
274 ; x >=s 13 && x == 17
276 define i1 @and_sge_eq(i8 %x) {
277 ; CHECK-LABEL: @and_sge_eq(
278 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
279 ; CHECK-NEXT: ret i1 [[B]]
281 %a = icmp sge i8 %x, 13
282 %b = icmp eq i8 %x, 17
287 ; x >=s 13 && x != 17
289 define i1 @and_sge_ne(i8 %x) {
290 ; CHECK-LABEL: @and_sge_ne(
291 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
292 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
293 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
294 ; CHECK-NEXT: ret i1 [[C]]
296 %a = icmp sge i8 %x, 13
297 %b = icmp ne i8 %x, 17
302 ; x >=s 13 && x >=s 17
304 define i1 @and_sge_sge(i8 %x) {
305 ; CHECK-LABEL: @and_sge_sge(
306 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
307 ; CHECK-NEXT: ret i1 [[B]]
309 %a = icmp sge i8 %x, 13
310 %b = icmp sge i8 %x, 17
315 ; x >=s 13 && x >s 17
317 define i1 @and_sge_sgt(i8 %x) {
318 ; CHECK-LABEL: @and_sge_sgt(
319 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
320 ; CHECK-NEXT: ret i1 [[B]]
322 %a = icmp sge i8 %x, 13
323 %b = icmp sgt i8 %x, 17
328 ; x >=s 13 && x <=s 17
330 define i1 @and_sge_sle(i8 %x) {
331 ; CHECK-LABEL: @and_sge_sle(
332 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
333 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
334 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
335 ; CHECK-NEXT: ret i1 [[C]]
337 %a = icmp sge i8 %x, 13
338 %b = icmp sle i8 %x, 17
343 ; x >=s 13 && x <s 17
345 define i1 @and_sge_slt(i8 %x) {
346 ; CHECK-LABEL: @and_sge_slt(
347 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
348 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
349 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
350 ; CHECK-NEXT: ret i1 [[C]]
352 %a = icmp sge i8 %x, 13
353 %b = icmp slt i8 %x, 17
358 ; x >=s 13 && x >=u 17
360 define i1 @and_sge_uge(i8 %x) {
361 ; CHECK-LABEL: @and_sge_uge(
362 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
363 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
364 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
365 ; CHECK-NEXT: ret i1 [[C]]
367 %a = icmp sge i8 %x, 13
368 %b = icmp uge i8 %x, 17
373 ; x >=s 13 && x >u 17
375 define i1 @and_sge_ugt(i8 %x) {
376 ; CHECK-LABEL: @and_sge_ugt(
377 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
378 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
379 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
380 ; CHECK-NEXT: ret i1 [[C]]
382 %a = icmp sge i8 %x, 13
383 %b = icmp ugt i8 %x, 17
388 ; x >=s 13 && x <=u 17
390 define i1 @and_sge_ule(i8 %x) {
391 ; CHECK-LABEL: @and_sge_ule(
392 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
393 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
394 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
395 ; CHECK-NEXT: ret i1 [[C]]
397 %a = icmp sge i8 %x, 13
398 %b = icmp ule i8 %x, 17
403 ; x >=s 13 && x <u 17
405 define i1 @and_sge_ult(i8 %x) {
406 ; CHECK-LABEL: @and_sge_ult(
407 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
408 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
409 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
410 ; CHECK-NEXT: ret i1 [[C]]
412 %a = icmp sge i8 %x, 13
413 %b = icmp ult i8 %x, 17
421 define i1 @and_sgt_eq(i8 %x) {
422 ; CHECK-LABEL: @and_sgt_eq(
423 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
424 ; CHECK-NEXT: ret i1 [[B]]
426 %a = icmp sgt i8 %x, 13
427 %b = icmp eq i8 %x, 17
434 define i1 @and_sgt_ne(i8 %x) {
435 ; CHECK-LABEL: @and_sgt_ne(
436 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
437 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
438 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
439 ; CHECK-NEXT: ret i1 [[C]]
441 %a = icmp sgt i8 %x, 13
442 %b = icmp ne i8 %x, 17
447 ; x >s 13 && x >=s 17
449 define i1 @and_sgt_sge(i8 %x) {
450 ; CHECK-LABEL: @and_sgt_sge(
451 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
452 ; CHECK-NEXT: ret i1 [[B]]
454 %a = icmp sgt i8 %x, 13
455 %b = icmp sge i8 %x, 17
462 define i1 @and_sgt_sgt(i8 %x) {
463 ; CHECK-LABEL: @and_sgt_sgt(
464 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
465 ; CHECK-NEXT: ret i1 [[B]]
467 %a = icmp sgt i8 %x, 13
468 %b = icmp sgt i8 %x, 17
473 ; x >s 13 && x <=s 17
475 define i1 @and_sgt_sle(i8 %x) {
476 ; CHECK-LABEL: @and_sgt_sle(
477 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
478 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
479 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
480 ; CHECK-NEXT: ret i1 [[C]]
482 %a = icmp sgt i8 %x, 13
483 %b = icmp sle i8 %x, 17
490 define i1 @and_sgt_slt(i8 %x) {
491 ; CHECK-LABEL: @and_sgt_slt(
492 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
493 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
494 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
495 ; CHECK-NEXT: ret i1 [[C]]
497 %a = icmp sgt i8 %x, 13
498 %b = icmp slt i8 %x, 17
503 ; x >s 13 && x >=u 17
505 define i1 @and_sgt_uge(i8 %x) {
506 ; CHECK-LABEL: @and_sgt_uge(
507 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
508 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
509 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
510 ; CHECK-NEXT: ret i1 [[C]]
512 %a = icmp sgt i8 %x, 13
513 %b = icmp uge i8 %x, 17
520 define i1 @and_sgt_ugt(i8 %x) {
521 ; CHECK-LABEL: @and_sgt_ugt(
522 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
523 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
524 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
525 ; CHECK-NEXT: ret i1 [[C]]
527 %a = icmp sgt i8 %x, 13
528 %b = icmp ugt i8 %x, 17
533 ; x >s 13 && x <=u 17
535 define i1 @and_sgt_ule(i8 %x) {
536 ; CHECK-LABEL: @and_sgt_ule(
537 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
538 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
539 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
540 ; CHECK-NEXT: ret i1 [[C]]
542 %a = icmp sgt i8 %x, 13
543 %b = icmp ule i8 %x, 17
550 define i1 @and_sgt_ult(i8 %x) {
551 ; CHECK-LABEL: @and_sgt_ult(
552 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
553 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
554 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
555 ; CHECK-NEXT: ret i1 [[C]]
557 %a = icmp sgt i8 %x, 13
558 %b = icmp ult i8 %x, 17
564 ; x <=s 13 && x == 17
566 define i1 @and_sle_eq(i8 %x) {
567 ; CHECK-LABEL: @and_sle_eq(
568 ; CHECK-NEXT: ret i1 false
570 %a = icmp sle i8 %x, 13
571 %b = icmp eq i8 %x, 17
576 ; x <=s 13 && x != 17
578 define i1 @and_sle_ne(i8 %x) {
579 ; CHECK-LABEL: @and_sle_ne(
580 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
581 ; CHECK-NEXT: ret i1 [[A]]
583 %a = icmp sle i8 %x, 13
584 %b = icmp ne i8 %x, 17
589 ; x <=s 13 && x >=s 17
591 define i1 @and_sle_sge(i8 %x) {
592 ; CHECK-LABEL: @and_sle_sge(
593 ; CHECK-NEXT: ret i1 false
595 %a = icmp sle i8 %x, 13
596 %b = icmp sge i8 %x, 17
601 ; x <=s 13 && x >s 17
603 define i1 @and_sle_sgt(i8 %x) {
604 ; CHECK-LABEL: @and_sle_sgt(
605 ; CHECK-NEXT: ret i1 false
607 %a = icmp sle i8 %x, 13
608 %b = icmp sgt i8 %x, 17
613 ; x <=s 13 && x <=s 17
615 define i1 @and_sle_sle(i8 %x) {
616 ; CHECK-LABEL: @and_sle_sle(
617 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
618 ; CHECK-NEXT: ret i1 [[A]]
620 %a = icmp sle i8 %x, 13
621 %b = icmp sle i8 %x, 17
626 ; x <=s 13 && x <s 17
628 define i1 @and_sle_slt(i8 %x) {
629 ; CHECK-LABEL: @and_sle_slt(
630 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
631 ; CHECK-NEXT: ret i1 [[A]]
633 %a = icmp sle i8 %x, 13
634 %b = icmp slt i8 %x, 17
639 ; x <=s 13 && x >=u 17
641 define i1 @and_sle_uge(i8 %x) {
642 ; CHECK-LABEL: @and_sle_uge(
643 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
644 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
645 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
646 ; CHECK-NEXT: ret i1 [[C]]
648 %a = icmp sle i8 %x, 13
649 %b = icmp uge i8 %x, 17
654 ; x <=s 13 && x >u 17
656 define i1 @and_sle_ugt(i8 %x) {
657 ; CHECK-LABEL: @and_sle_ugt(
658 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
659 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
660 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
661 ; CHECK-NEXT: ret i1 [[C]]
663 %a = icmp sle i8 %x, 13
664 %b = icmp ugt i8 %x, 17
669 ; x <=s 13 && x <=u 17
671 define i1 @and_sle_ule(i8 %x) {
672 ; CHECK-LABEL: @and_sle_ule(
673 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
674 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
675 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
676 ; CHECK-NEXT: ret i1 [[C]]
678 %a = icmp sle i8 %x, 13
679 %b = icmp ule i8 %x, 17
684 ; x <=s 13 && x <u 17
686 define i1 @and_sle_ult(i8 %x) {
687 ; CHECK-LABEL: @and_sle_ult(
688 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
689 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
690 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
691 ; CHECK-NEXT: ret i1 [[C]]
693 %a = icmp sle i8 %x, 13
694 %b = icmp ult i8 %x, 17
702 define i1 @and_slt_eq(i8 %x) {
703 ; CHECK-LABEL: @and_slt_eq(
704 ; CHECK-NEXT: ret i1 false
706 %a = icmp slt i8 %x, 13
707 %b = icmp eq i8 %x, 17
714 define i1 @and_slt_ne(i8 %x) {
715 ; CHECK-LABEL: @and_slt_ne(
716 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
717 ; CHECK-NEXT: ret i1 [[A]]
719 %a = icmp slt i8 %x, 13
720 %b = icmp ne i8 %x, 17
725 ; x <s 13 && x >=s 17
727 define i1 @and_slt_sge(i8 %x) {
728 ; CHECK-LABEL: @and_slt_sge(
729 ; CHECK-NEXT: ret i1 false
731 %a = icmp slt i8 %x, 13
732 %b = icmp sge i8 %x, 17
739 define i1 @and_slt_sgt(i8 %x) {
740 ; CHECK-LABEL: @and_slt_sgt(
741 ; CHECK-NEXT: ret i1 false
743 %a = icmp slt i8 %x, 13
744 %b = icmp sgt i8 %x, 17
749 ; x <s 13 && x <=s 17
751 define i1 @and_slt_sle(i8 %x) {
752 ; CHECK-LABEL: @and_slt_sle(
753 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
754 ; CHECK-NEXT: ret i1 [[A]]
756 %a = icmp slt i8 %x, 13
757 %b = icmp sle i8 %x, 17
764 define i1 @and_slt_slt(i8 %x) {
765 ; CHECK-LABEL: @and_slt_slt(
766 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
767 ; CHECK-NEXT: ret i1 [[A]]
769 %a = icmp slt i8 %x, 13
770 %b = icmp slt i8 %x, 17
775 ; x <s 13 && x >=u 17
777 define i1 @and_slt_uge(i8 %x) {
778 ; CHECK-LABEL: @and_slt_uge(
779 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
780 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
781 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
782 ; CHECK-NEXT: ret i1 [[C]]
784 %a = icmp slt i8 %x, 13
785 %b = icmp uge i8 %x, 17
792 define i1 @and_slt_ugt(i8 %x) {
793 ; CHECK-LABEL: @and_slt_ugt(
794 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
795 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
796 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
797 ; CHECK-NEXT: ret i1 [[C]]
799 %a = icmp slt i8 %x, 13
800 %b = icmp ugt i8 %x, 17
805 ; x <s 13 && x <=u 17
807 define i1 @and_slt_ule(i8 %x) {
808 ; CHECK-LABEL: @and_slt_ule(
809 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
810 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
811 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
812 ; CHECK-NEXT: ret i1 [[C]]
814 %a = icmp slt i8 %x, 13
815 %b = icmp ule i8 %x, 17
822 define i1 @and_slt_ult(i8 %x) {
823 ; CHECK-LABEL: @and_slt_ult(
824 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
825 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
826 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
827 ; CHECK-NEXT: ret i1 [[C]]
829 %a = icmp slt i8 %x, 13
830 %b = icmp ult i8 %x, 17
836 ; x >=u 13 && x == 17
838 define i1 @and_uge_eq(i8 %x) {
839 ; CHECK-LABEL: @and_uge_eq(
840 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
841 ; CHECK-NEXT: ret i1 [[B]]
843 %a = icmp uge i8 %x, 13
844 %b = icmp eq i8 %x, 17
849 ; x >=u 13 && x != 17
851 define i1 @and_uge_ne(i8 %x) {
852 ; CHECK-LABEL: @and_uge_ne(
853 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 13
854 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
855 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
856 ; CHECK-NEXT: ret i1 [[C]]
858 %a = icmp uge i8 %x, 13
859 %b = icmp ne i8 %x, 17
864 ; x >=u 13 && x >=s 17
866 define i1 @and_uge_sge(i8 %x) {
867 ; CHECK-LABEL: @and_uge_sge(
868 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
869 ; CHECK-NEXT: ret i1 [[B]]
871 %a = icmp uge i8 %x, 13
872 %b = icmp sge i8 %x, 17
877 ; x >=u 13 && x >s 17
879 define i1 @and_uge_sgt(i8 %x) {
880 ; CHECK-LABEL: @and_uge_sgt(
881 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
882 ; CHECK-NEXT: ret i1 [[B]]
884 %a = icmp uge i8 %x, 13
885 %b = icmp sgt i8 %x, 17
890 ; x >=u 13 && x <=s 17
892 define i1 @and_uge_sle(i8 %x) {
893 ; CHECK-LABEL: @and_uge_sle(
894 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 13
895 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
896 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
897 ; CHECK-NEXT: ret i1 [[C]]
899 %a = icmp uge i8 %x, 13
900 %b = icmp sle i8 %x, 17
905 ; x >=u 13 && x <s 17
907 define i1 @and_uge_slt(i8 %x) {
908 ; CHECK-LABEL: @and_uge_slt(
909 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 13
910 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
911 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
912 ; CHECK-NEXT: ret i1 [[C]]
914 %a = icmp uge i8 %x, 13
915 %b = icmp slt i8 %x, 17
920 ; x >=u 13 && x >=u 17
922 define i1 @and_uge_uge(i8 %x) {
923 ; CHECK-LABEL: @and_uge_uge(
924 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
925 ; CHECK-NEXT: ret i1 [[B]]
927 %a = icmp uge i8 %x, 13
928 %b = icmp uge i8 %x, 17
933 ; x >=u 13 && x >u 17
935 define i1 @and_uge_ugt(i8 %x) {
936 ; CHECK-LABEL: @and_uge_ugt(
937 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
938 ; CHECK-NEXT: ret i1 [[B]]
940 %a = icmp uge i8 %x, 13
941 %b = icmp ugt i8 %x, 17
946 ; x >=u 13 && x <=u 17
948 define i1 @and_uge_ule(i8 %x) {
949 ; CHECK-LABEL: @and_uge_ule(
950 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 13
951 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
952 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
953 ; CHECK-NEXT: ret i1 [[C]]
955 %a = icmp uge i8 %x, 13
956 %b = icmp ule i8 %x, 17
961 ; x >=u 13 && x <u 17
963 define i1 @and_uge_ult(i8 %x) {
964 ; CHECK-LABEL: @and_uge_ult(
965 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 13
966 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
967 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
968 ; CHECK-NEXT: ret i1 [[C]]
970 %a = icmp uge i8 %x, 13
971 %b = icmp ult i8 %x, 17
979 define i1 @and_ugt_eq(i8 %x) {
980 ; CHECK-LABEL: @and_ugt_eq(
981 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
982 ; CHECK-NEXT: ret i1 [[B]]
984 %a = icmp ugt i8 %x, 13
985 %b = icmp eq i8 %x, 17
992 define i1 @and_ugt_ne(i8 %x) {
993 ; CHECK-LABEL: @and_ugt_ne(
994 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 13
995 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
996 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
997 ; CHECK-NEXT: ret i1 [[C]]
999 %a = icmp ugt i8 %x, 13
1000 %b = icmp ne i8 %x, 17
1005 ; x >u 13 && x >=s 17
1007 define i1 @and_ugt_sge(i8 %x) {
1008 ; CHECK-LABEL: @and_ugt_sge(
1009 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
1010 ; CHECK-NEXT: ret i1 [[B]]
1012 %a = icmp ugt i8 %x, 13
1013 %b = icmp sge i8 %x, 17
1018 ; x >u 13 && x >s 17
1020 define i1 @and_ugt_sgt(i8 %x) {
1021 ; CHECK-LABEL: @and_ugt_sgt(
1022 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
1023 ; CHECK-NEXT: ret i1 [[B]]
1025 %a = icmp ugt i8 %x, 13
1026 %b = icmp sgt i8 %x, 17
1031 ; x >u 13 && x <=s 17
1033 define i1 @and_ugt_sle(i8 %x) {
1034 ; CHECK-LABEL: @and_ugt_sle(
1035 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 13
1036 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
1037 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1038 ; CHECK-NEXT: ret i1 [[C]]
1040 %a = icmp ugt i8 %x, 13
1041 %b = icmp sle i8 %x, 17
1046 ; x >u 13 && x <s 17
1048 define i1 @and_ugt_slt(i8 %x) {
1049 ; CHECK-LABEL: @and_ugt_slt(
1050 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 13
1051 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
1052 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1053 ; CHECK-NEXT: ret i1 [[C]]
1055 %a = icmp ugt i8 %x, 13
1056 %b = icmp slt i8 %x, 17
1061 ; x >u 13 && x >=u 17
1063 define i1 @and_ugt_uge(i8 %x) {
1064 ; CHECK-LABEL: @and_ugt_uge(
1065 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
1066 ; CHECK-NEXT: ret i1 [[B]]
1068 %a = icmp ugt i8 %x, 13
1069 %b = icmp uge i8 %x, 17
1074 ; x >u 13 && x >u 17
1076 define i1 @and_ugt_ugt(i8 %x) {
1077 ; CHECK-LABEL: @and_ugt_ugt(
1078 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
1079 ; CHECK-NEXT: ret i1 [[B]]
1081 %a = icmp ugt i8 %x, 13
1082 %b = icmp ugt i8 %x, 17
1087 ; x >u 13 && x <=u 17
1089 define i1 @and_ugt_ule(i8 %x) {
1090 ; CHECK-LABEL: @and_ugt_ule(
1091 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 13
1092 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
1093 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1094 ; CHECK-NEXT: ret i1 [[C]]
1096 %a = icmp ugt i8 %x, 13
1097 %b = icmp ule i8 %x, 17
1102 ; x >u 13 && x <u 17
1104 define i1 @and_ugt_ult(i8 %x) {
1105 ; CHECK-LABEL: @and_ugt_ult(
1106 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 13
1107 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
1108 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1109 ; CHECK-NEXT: ret i1 [[C]]
1111 %a = icmp ugt i8 %x, 13
1112 %b = icmp ult i8 %x, 17
1118 ; x <=u 13 && x == 17
1120 define i1 @and_ule_eq(i8 %x) {
1121 ; CHECK-LABEL: @and_ule_eq(
1122 ; CHECK-NEXT: ret i1 false
1124 %a = icmp ule i8 %x, 13
1125 %b = icmp eq i8 %x, 17
1130 ; x <=u 13 && x != 17
1132 define i1 @and_ule_ne(i8 %x) {
1133 ; CHECK-LABEL: @and_ule_ne(
1134 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 13
1135 ; CHECK-NEXT: ret i1 [[A]]
1137 %a = icmp ule i8 %x, 13
1138 %b = icmp ne i8 %x, 17
1143 ; x <=u 13 && x >=s 17
1145 define i1 @and_ule_sge(i8 %x) {
1146 ; CHECK-LABEL: @and_ule_sge(
1147 ; CHECK-NEXT: ret i1 false
1149 %a = icmp ule i8 %x, 13
1150 %b = icmp sge i8 %x, 17
1155 ; x <=u 13 && x >s 17
1157 define i1 @and_ule_sgt(i8 %x) {
1158 ; CHECK-LABEL: @and_ule_sgt(
1159 ; CHECK-NEXT: ret i1 false
1161 %a = icmp ule i8 %x, 13
1162 %b = icmp sgt i8 %x, 17
1167 ; x <=u 13 && x <=s 17
1169 define i1 @and_ule_sle(i8 %x) {
1170 ; CHECK-LABEL: @and_ule_sle(
1171 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 13
1172 ; CHECK-NEXT: ret i1 [[A]]
1174 %a = icmp ule i8 %x, 13
1175 %b = icmp sle i8 %x, 17
1180 ; x <=u 13 && x <s 17
1182 define i1 @and_ule_slt(i8 %x) {
1183 ; CHECK-LABEL: @and_ule_slt(
1184 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 13
1185 ; CHECK-NEXT: ret i1 [[A]]
1187 %a = icmp ule i8 %x, 13
1188 %b = icmp slt i8 %x, 17
1193 ; x <=u 13 && x >=u 17
1195 define i1 @and_ule_uge(i8 %x) {
1196 ; CHECK-LABEL: @and_ule_uge(
1197 ; CHECK-NEXT: ret i1 false
1199 %a = icmp ule i8 %x, 13
1200 %b = icmp uge i8 %x, 17
1205 ; x <=u 13 && x >u 17
1207 define i1 @and_ule_ugt(i8 %x) {
1208 ; CHECK-LABEL: @and_ule_ugt(
1209 ; CHECK-NEXT: ret i1 false
1211 %a = icmp ule i8 %x, 13
1212 %b = icmp ugt i8 %x, 17
1217 ; x <=u 13 && x <=u 17
1219 define i1 @and_ule_ule(i8 %x) {
1220 ; CHECK-LABEL: @and_ule_ule(
1221 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 13
1222 ; CHECK-NEXT: ret i1 [[A]]
1224 %a = icmp ule i8 %x, 13
1225 %b = icmp ule i8 %x, 17
1230 ; x <=u 13 && x <u 17
1232 define i1 @and_ule_ult(i8 %x) {
1233 ; CHECK-LABEL: @and_ule_ult(
1234 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 13
1235 ; CHECK-NEXT: ret i1 [[A]]
1237 %a = icmp ule i8 %x, 13
1238 %b = icmp ult i8 %x, 17
1244 ; x <u 13 && x == 17
1246 define i1 @and_ult_eq(i8 %x) {
1247 ; CHECK-LABEL: @and_ult_eq(
1248 ; CHECK-NEXT: ret i1 false
1250 %a = icmp ult i8 %x, 13
1251 %b = icmp eq i8 %x, 17
1256 ; x <u 13 && x != 17
1258 define i1 @and_ult_ne(i8 %x) {
1259 ; CHECK-LABEL: @and_ult_ne(
1260 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 13
1261 ; CHECK-NEXT: ret i1 [[A]]
1263 %a = icmp ult i8 %x, 13
1264 %b = icmp ne i8 %x, 17
1269 ; x <u 13 && x >=s 17
1271 define i1 @and_ult_sge(i8 %x) {
1272 ; CHECK-LABEL: @and_ult_sge(
1273 ; CHECK-NEXT: ret i1 false
1275 %a = icmp ult i8 %x, 13
1276 %b = icmp sge i8 %x, 17
1281 ; x <u 13 && x >s 17
1283 define i1 @and_ult_sgt(i8 %x) {
1284 ; CHECK-LABEL: @and_ult_sgt(
1285 ; CHECK-NEXT: ret i1 false
1287 %a = icmp ult i8 %x, 13
1288 %b = icmp sgt i8 %x, 17
1293 ; x <u 13 && x <=s 17
1295 define i1 @and_ult_sle(i8 %x) {
1296 ; CHECK-LABEL: @and_ult_sle(
1297 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 13
1298 ; CHECK-NEXT: ret i1 [[A]]
1300 %a = icmp ult i8 %x, 13
1301 %b = icmp sle i8 %x, 17
1306 ; x <u 13 && x <s 17
1308 define i1 @and_ult_slt(i8 %x) {
1309 ; CHECK-LABEL: @and_ult_slt(
1310 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 13
1311 ; CHECK-NEXT: ret i1 [[A]]
1313 %a = icmp ult i8 %x, 13
1314 %b = icmp slt i8 %x, 17
1319 ; x <u 13 && x >=u 17
1321 define i1 @and_ult_uge(i8 %x) {
1322 ; CHECK-LABEL: @and_ult_uge(
1323 ; CHECK-NEXT: ret i1 false
1325 %a = icmp ult i8 %x, 13
1326 %b = icmp uge i8 %x, 17
1331 ; x <u 13 && x >u 17
1333 define i1 @and_ult_ugt(i8 %x) {
1334 ; CHECK-LABEL: @and_ult_ugt(
1335 ; CHECK-NEXT: ret i1 false
1337 %a = icmp ult i8 %x, 13
1338 %b = icmp ugt i8 %x, 17
1343 ; x <u 13 && x <=u 17
1345 define i1 @and_ult_ule(i8 %x) {
1346 ; CHECK-LABEL: @and_ult_ule(
1347 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 13
1348 ; CHECK-NEXT: ret i1 [[A]]
1350 %a = icmp ult i8 %x, 13
1351 %b = icmp ule i8 %x, 17
1356 ; x <u 13 && x <u 17
1358 define i1 @and_ult_ult(i8 %x) {
1359 ; CHECK-LABEL: @and_ult_ult(
1360 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 13
1361 ; CHECK-NEXT: ret i1 [[A]]
1363 %a = icmp ult i8 %x, 13
1364 %b = icmp ult i8 %x, 17
1370 ; x == 23 && x == 17
1372 define i1 @and_eq_eq_swap(i8 %x) {
1373 ; CHECK-LABEL: @and_eq_eq_swap(
1374 ; CHECK-NEXT: ret i1 false
1376 %a = icmp eq i8 %x, 23
1377 %b = icmp eq i8 %x, 17
1382 ; x == 23 && x != 17
1384 define i1 @and_eq_ne_swap(i8 %x) {
1385 ; CHECK-LABEL: @and_eq_ne_swap(
1386 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 23
1387 ; CHECK-NEXT: ret i1 [[A]]
1389 %a = icmp eq i8 %x, 23
1390 %b = icmp ne i8 %x, 17
1395 ; x == 23 && x >=s 17
1397 define i1 @and_eq_sge_swap(i8 %x) {
1398 ; CHECK-LABEL: @and_eq_sge_swap(
1399 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 23
1400 ; CHECK-NEXT: ret i1 [[A]]
1402 %a = icmp eq i8 %x, 23
1403 %b = icmp sge i8 %x, 17
1408 ; x == 23 && x >s 17
1410 define i1 @and_eq_sgt_swap(i8 %x) {
1411 ; CHECK-LABEL: @and_eq_sgt_swap(
1412 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 23
1413 ; CHECK-NEXT: ret i1 [[A]]
1415 %a = icmp eq i8 %x, 23
1416 %b = icmp sgt i8 %x, 17
1421 ; x == 23 && x <=s 17
1423 define i1 @and_eq_sle_swap(i8 %x) {
1424 ; CHECK-LABEL: @and_eq_sle_swap(
1425 ; CHECK-NEXT: ret i1 false
1427 %a = icmp eq i8 %x, 23
1428 %b = icmp sle i8 %x, 17
1433 ; x == 23 && x <s 17
1435 define i1 @and_eq_slt_swap(i8 %x) {
1436 ; CHECK-LABEL: @and_eq_slt_swap(
1437 ; CHECK-NEXT: ret i1 false
1439 %a = icmp eq i8 %x, 23
1440 %b = icmp slt i8 %x, 17
1445 ; x == 23 && x >=u 17
1447 define i1 @and_eq_uge_swap(i8 %x) {
1448 ; CHECK-LABEL: @and_eq_uge_swap(
1449 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 23
1450 ; CHECK-NEXT: ret i1 [[A]]
1452 %a = icmp eq i8 %x, 23
1453 %b = icmp uge i8 %x, 17
1458 ; x == 23 && x >u 17
1460 define i1 @and_eq_ugt_swap(i8 %x) {
1461 ; CHECK-LABEL: @and_eq_ugt_swap(
1462 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 23
1463 ; CHECK-NEXT: ret i1 [[A]]
1465 %a = icmp eq i8 %x, 23
1466 %b = icmp ugt i8 %x, 17
1471 ; x == 23 && x <=u 17
1473 define i1 @and_eq_ule_swap(i8 %x) {
1474 ; CHECK-LABEL: @and_eq_ule_swap(
1475 ; CHECK-NEXT: ret i1 false
1477 %a = icmp eq i8 %x, 23
1478 %b = icmp ule i8 %x, 17
1483 ; x == 23 && x <u 17
1485 define i1 @and_eq_ult_swap(i8 %x) {
1486 ; CHECK-LABEL: @and_eq_ult_swap(
1487 ; CHECK-NEXT: ret i1 false
1489 %a = icmp eq i8 %x, 23
1490 %b = icmp ult i8 %x, 17
1496 ; x != 23 && x == 17
1498 define i1 @and_ne_eq_swap(i8 %x) {
1499 ; CHECK-LABEL: @and_ne_eq_swap(
1500 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
1501 ; CHECK-NEXT: ret i1 [[B]]
1503 %a = icmp ne i8 %x, 23
1504 %b = icmp eq i8 %x, 17
1509 ; x != 23 && x != 17
1511 define i1 @and_ne_ne_swap(i8 %x) {
1512 ; CHECK-LABEL: @and_ne_ne_swap(
1513 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 23
1514 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
1515 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1516 ; CHECK-NEXT: ret i1 [[C]]
1518 %a = icmp ne i8 %x, 23
1519 %b = icmp ne i8 %x, 17
1524 ; x != 23 && x >=s 17
1526 define i1 @and_ne_sge_swap(i8 %x) {
1527 ; CHECK-LABEL: @and_ne_sge_swap(
1528 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 23
1529 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
1530 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1531 ; CHECK-NEXT: ret i1 [[C]]
1533 %a = icmp ne i8 %x, 23
1534 %b = icmp sge i8 %x, 17
1539 ; x != 23 && x >s 17
1541 define i1 @and_ne_sgt_swap(i8 %x) {
1542 ; CHECK-LABEL: @and_ne_sgt_swap(
1543 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 23
1544 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
1545 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1546 ; CHECK-NEXT: ret i1 [[C]]
1548 %a = icmp ne i8 %x, 23
1549 %b = icmp sgt i8 %x, 17
1554 ; x != 23 && x <=s 17
1556 define i1 @and_ne_sle_swap(i8 %x) {
1557 ; CHECK-LABEL: @and_ne_sle_swap(
1558 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
1559 ; CHECK-NEXT: ret i1 [[B]]
1561 %a = icmp ne i8 %x, 23
1562 %b = icmp sle i8 %x, 17
1567 ; x != 23 && x <s 17
1569 define i1 @and_ne_slt_swap(i8 %x) {
1570 ; CHECK-LABEL: @and_ne_slt_swap(
1571 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
1572 ; CHECK-NEXT: ret i1 [[B]]
1574 %a = icmp ne i8 %x, 23
1575 %b = icmp slt i8 %x, 17
1580 ; x != 23 && x >=u 17
1582 define i1 @and_ne_uge_swap(i8 %x) {
1583 ; CHECK-LABEL: @and_ne_uge_swap(
1584 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 23
1585 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
1586 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1587 ; CHECK-NEXT: ret i1 [[C]]
1589 %a = icmp ne i8 %x, 23
1590 %b = icmp uge i8 %x, 17
1595 ; x != 23 && x >u 17
1597 define i1 @and_ne_ugt_swap(i8 %x) {
1598 ; CHECK-LABEL: @and_ne_ugt_swap(
1599 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 23
1600 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
1601 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1602 ; CHECK-NEXT: ret i1 [[C]]
1604 %a = icmp ne i8 %x, 23
1605 %b = icmp ugt i8 %x, 17
1610 ; x != 23 && x <=u 17
1612 define i1 @and_ne_ule_swap(i8 %x) {
1613 ; CHECK-LABEL: @and_ne_ule_swap(
1614 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
1615 ; CHECK-NEXT: ret i1 [[B]]
1617 %a = icmp ne i8 %x, 23
1618 %b = icmp ule i8 %x, 17
1623 ; x != 23 && x <u 17
1625 define i1 @and_ne_ult_swap(i8 %x) {
1626 ; CHECK-LABEL: @and_ne_ult_swap(
1627 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
1628 ; CHECK-NEXT: ret i1 [[B]]
1630 %a = icmp ne i8 %x, 23
1631 %b = icmp ult i8 %x, 17
1637 ; x >=s 23 && x == 17
1639 define i1 @and_sge_eq_swap(i8 %x) {
1640 ; CHECK-LABEL: @and_sge_eq_swap(
1641 ; CHECK-NEXT: ret i1 false
1643 %a = icmp sge i8 %x, 23
1644 %b = icmp eq i8 %x, 17
1649 ; x >=s 23 && x != 17
1651 define i1 @and_sge_ne_swap(i8 %x) {
1652 ; CHECK-LABEL: @and_sge_ne_swap(
1653 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 23
1654 ; CHECK-NEXT: ret i1 [[A]]
1656 %a = icmp sge i8 %x, 23
1657 %b = icmp ne i8 %x, 17
1662 ; x >=s 23 && x >=s 17
1664 define i1 @and_sge_sge_swap(i8 %x) {
1665 ; CHECK-LABEL: @and_sge_sge_swap(
1666 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 23
1667 ; CHECK-NEXT: ret i1 [[A]]
1669 %a = icmp sge i8 %x, 23
1670 %b = icmp sge i8 %x, 17
1675 ; x >=s 23 && x >s 17
1677 define i1 @and_sge_sgt_swap(i8 %x) {
1678 ; CHECK-LABEL: @and_sge_sgt_swap(
1679 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 23
1680 ; CHECK-NEXT: ret i1 [[A]]
1682 %a = icmp sge i8 %x, 23
1683 %b = icmp sgt i8 %x, 17
1688 ; x >=s 23 && x <=s 17
1690 define i1 @and_sge_sle_swap(i8 %x) {
1691 ; CHECK-LABEL: @and_sge_sle_swap(
1692 ; CHECK-NEXT: ret i1 false
1694 %a = icmp sge i8 %x, 23
1695 %b = icmp sle i8 %x, 17
1700 ; x >=s 23 && x <s 17
1702 define i1 @and_sge_slt_swap(i8 %x) {
1703 ; CHECK-LABEL: @and_sge_slt_swap(
1704 ; CHECK-NEXT: ret i1 false
1706 %a = icmp sge i8 %x, 23
1707 %b = icmp slt i8 %x, 17
1712 ; x >=s 23 && x >=u 17
1714 define i1 @and_sge_uge_swap(i8 %x) {
1715 ; CHECK-LABEL: @and_sge_uge_swap(
1716 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 23
1717 ; CHECK-NEXT: ret i1 [[A]]
1719 %a = icmp sge i8 %x, 23
1720 %b = icmp uge i8 %x, 17
1725 ; x >=s 23 && x >u 17
1727 define i1 @and_sge_ugt_swap(i8 %x) {
1728 ; CHECK-LABEL: @and_sge_ugt_swap(
1729 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 23
1730 ; CHECK-NEXT: ret i1 [[A]]
1732 %a = icmp sge i8 %x, 23
1733 %b = icmp ugt i8 %x, 17
1738 ; x >=s 23 && x <=u 17
1740 define i1 @and_sge_ule_swap(i8 %x) {
1741 ; CHECK-LABEL: @and_sge_ule_swap(
1742 ; CHECK-NEXT: ret i1 false
1744 %a = icmp sge i8 %x, 23
1745 %b = icmp ule i8 %x, 17
1750 ; x >=s 23 && x <u 17
1752 define i1 @and_sge_ult_swap(i8 %x) {
1753 ; CHECK-LABEL: @and_sge_ult_swap(
1754 ; CHECK-NEXT: ret i1 false
1756 %a = icmp sge i8 %x, 23
1757 %b = icmp ult i8 %x, 17
1763 ; x >s 23 && x == 17
1765 define i1 @and_sgt_eq_swap(i8 %x) {
1766 ; CHECK-LABEL: @and_sgt_eq_swap(
1767 ; CHECK-NEXT: ret i1 false
1769 %a = icmp sgt i8 %x, 23
1770 %b = icmp eq i8 %x, 17
1775 ; x >s 23 && x != 17
1777 define i1 @and_sgt_ne_swap(i8 %x) {
1778 ; CHECK-LABEL: @and_sgt_ne_swap(
1779 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 23
1780 ; CHECK-NEXT: ret i1 [[A]]
1782 %a = icmp sgt i8 %x, 23
1783 %b = icmp ne i8 %x, 17
1788 ; x >s 23 && x >=s 17
1790 define i1 @and_sgt_sge_swap(i8 %x) {
1791 ; CHECK-LABEL: @and_sgt_sge_swap(
1792 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 23
1793 ; CHECK-NEXT: ret i1 [[A]]
1795 %a = icmp sgt i8 %x, 23
1796 %b = icmp sge i8 %x, 17
1801 ; x >s 23 && x >s 17
1803 define i1 @and_sgt_sgt_swap(i8 %x) {
1804 ; CHECK-LABEL: @and_sgt_sgt_swap(
1805 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 23
1806 ; CHECK-NEXT: ret i1 [[A]]
1808 %a = icmp sgt i8 %x, 23
1809 %b = icmp sgt i8 %x, 17
1814 ; x >s 23 && x <=s 17
1816 define i1 @and_sgt_sle_swap(i8 %x) {
1817 ; CHECK-LABEL: @and_sgt_sle_swap(
1818 ; CHECK-NEXT: ret i1 false
1820 %a = icmp sgt i8 %x, 23
1821 %b = icmp sle i8 %x, 17
1826 ; x >s 23 && x <s 17
1828 define i1 @and_sgt_slt_swap(i8 %x) {
1829 ; CHECK-LABEL: @and_sgt_slt_swap(
1830 ; CHECK-NEXT: ret i1 false
1832 %a = icmp sgt i8 %x, 23
1833 %b = icmp slt i8 %x, 17
1838 ; x >s 23 && x >=u 17
1840 define i1 @and_sgt_uge_swap(i8 %x) {
1841 ; CHECK-LABEL: @and_sgt_uge_swap(
1842 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 23
1843 ; CHECK-NEXT: ret i1 [[A]]
1845 %a = icmp sgt i8 %x, 23
1846 %b = icmp uge i8 %x, 17
1851 ; x >s 23 && x >u 17
1853 define i1 @and_sgt_ugt_swap(i8 %x) {
1854 ; CHECK-LABEL: @and_sgt_ugt_swap(
1855 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 23
1856 ; CHECK-NEXT: ret i1 [[A]]
1858 %a = icmp sgt i8 %x, 23
1859 %b = icmp ugt i8 %x, 17
1864 ; x >s 23 && x <=u 17
1866 define i1 @and_sgt_ule_swap(i8 %x) {
1867 ; CHECK-LABEL: @and_sgt_ule_swap(
1868 ; CHECK-NEXT: ret i1 false
1870 %a = icmp sgt i8 %x, 23
1871 %b = icmp ule i8 %x, 17
1876 ; x >s 23 && x <u 17
1878 define i1 @and_sgt_ult_swap(i8 %x) {
1879 ; CHECK-LABEL: @and_sgt_ult_swap(
1880 ; CHECK-NEXT: ret i1 false
1882 %a = icmp sgt i8 %x, 23
1883 %b = icmp ult i8 %x, 17
1889 ; x <=s 23 && x == 17
1891 define i1 @and_sle_eq_swap(i8 %x) {
1892 ; CHECK-LABEL: @and_sle_eq_swap(
1893 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
1894 ; CHECK-NEXT: ret i1 [[B]]
1896 %a = icmp sle i8 %x, 23
1897 %b = icmp eq i8 %x, 17
1902 ; x <=s 23 && x != 17
1904 define i1 @and_sle_ne_swap(i8 %x) {
1905 ; CHECK-LABEL: @and_sle_ne_swap(
1906 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 23
1907 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
1908 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1909 ; CHECK-NEXT: ret i1 [[C]]
1911 %a = icmp sle i8 %x, 23
1912 %b = icmp ne i8 %x, 17
1917 ; x <=s 23 && x >=s 17
1919 define i1 @and_sle_sge_swap(i8 %x) {
1920 ; CHECK-LABEL: @and_sle_sge_swap(
1921 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 23
1922 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
1923 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1924 ; CHECK-NEXT: ret i1 [[C]]
1926 %a = icmp sle i8 %x, 23
1927 %b = icmp sge i8 %x, 17
1932 ; x <=s 23 && x >s 17
1934 define i1 @and_sle_sgt_swap(i8 %x) {
1935 ; CHECK-LABEL: @and_sle_sgt_swap(
1936 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 23
1937 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
1938 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1939 ; CHECK-NEXT: ret i1 [[C]]
1941 %a = icmp sle i8 %x, 23
1942 %b = icmp sgt i8 %x, 17
1947 ; x <=s 23 && x <=s 17
1949 define i1 @and_sle_sle_swap(i8 %x) {
1950 ; CHECK-LABEL: @and_sle_sle_swap(
1951 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
1952 ; CHECK-NEXT: ret i1 [[B]]
1954 %a = icmp sle i8 %x, 23
1955 %b = icmp sle i8 %x, 17
1960 ; x <=s 23 && x <s 17
1962 define i1 @and_sle_slt_swap(i8 %x) {
1963 ; CHECK-LABEL: @and_sle_slt_swap(
1964 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
1965 ; CHECK-NEXT: ret i1 [[B]]
1967 %a = icmp sle i8 %x, 23
1968 %b = icmp slt i8 %x, 17
1973 ; x <=s 23 && x >=u 17
1975 define i1 @and_sle_uge_swap(i8 %x) {
1976 ; CHECK-LABEL: @and_sle_uge_swap(
1977 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 23
1978 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
1979 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1980 ; CHECK-NEXT: ret i1 [[C]]
1982 %a = icmp sle i8 %x, 23
1983 %b = icmp uge i8 %x, 17
1988 ; x <=s 23 && x >u 17
1990 define i1 @and_sle_ugt_swap(i8 %x) {
1991 ; CHECK-LABEL: @and_sle_ugt_swap(
1992 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 23
1993 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
1994 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
1995 ; CHECK-NEXT: ret i1 [[C]]
1997 %a = icmp sle i8 %x, 23
1998 %b = icmp ugt i8 %x, 17
2003 ; x <=s 23 && x <=u 17
2005 define i1 @and_sle_ule_swap(i8 %x) {
2006 ; CHECK-LABEL: @and_sle_ule_swap(
2007 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
2008 ; CHECK-NEXT: ret i1 [[B]]
2010 %a = icmp sle i8 %x, 23
2011 %b = icmp ule i8 %x, 17
2016 ; x <=s 23 && x <u 17
2018 define i1 @and_sle_ult_swap(i8 %x) {
2019 ; CHECK-LABEL: @and_sle_ult_swap(
2020 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
2021 ; CHECK-NEXT: ret i1 [[B]]
2023 %a = icmp sle i8 %x, 23
2024 %b = icmp ult i8 %x, 17
2030 ; x <s 23 && x == 17
2032 define i1 @and_slt_eq_swap(i8 %x) {
2033 ; CHECK-LABEL: @and_slt_eq_swap(
2034 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
2035 ; CHECK-NEXT: ret i1 [[B]]
2037 %a = icmp slt i8 %x, 23
2038 %b = icmp eq i8 %x, 17
2043 ; x <s 23 && x != 17
2045 define i1 @and_slt_ne_swap(i8 %x) {
2046 ; CHECK-LABEL: @and_slt_ne_swap(
2047 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 23
2048 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
2049 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2050 ; CHECK-NEXT: ret i1 [[C]]
2052 %a = icmp slt i8 %x, 23
2053 %b = icmp ne i8 %x, 17
2058 ; x <s 23 && x >=s 17
2060 define i1 @and_slt_sge_swap(i8 %x) {
2061 ; CHECK-LABEL: @and_slt_sge_swap(
2062 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 23
2063 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
2064 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2065 ; CHECK-NEXT: ret i1 [[C]]
2067 %a = icmp slt i8 %x, 23
2068 %b = icmp sge i8 %x, 17
2073 ; x <s 23 && x >s 17
2075 define i1 @and_slt_sgt_swap(i8 %x) {
2076 ; CHECK-LABEL: @and_slt_sgt_swap(
2077 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 23
2078 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
2079 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2080 ; CHECK-NEXT: ret i1 [[C]]
2082 %a = icmp slt i8 %x, 23
2083 %b = icmp sgt i8 %x, 17
2088 ; x <s 23 && x <=s 17
2090 define i1 @and_slt_sle_swap(i8 %x) {
2091 ; CHECK-LABEL: @and_slt_sle_swap(
2092 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
2093 ; CHECK-NEXT: ret i1 [[B]]
2095 %a = icmp slt i8 %x, 23
2096 %b = icmp sle i8 %x, 17
2101 ; x <s 23 && x <s 17
2103 define i1 @and_slt_slt_swap(i8 %x) {
2104 ; CHECK-LABEL: @and_slt_slt_swap(
2105 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
2106 ; CHECK-NEXT: ret i1 [[B]]
2108 %a = icmp slt i8 %x, 23
2109 %b = icmp slt i8 %x, 17
2114 ; x <s 23 && x >=u 17
2116 define i1 @and_slt_uge_swap(i8 %x) {
2117 ; CHECK-LABEL: @and_slt_uge_swap(
2118 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 23
2119 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
2120 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2121 ; CHECK-NEXT: ret i1 [[C]]
2123 %a = icmp slt i8 %x, 23
2124 %b = icmp uge i8 %x, 17
2129 ; x <s 23 && x >u 17
2131 define i1 @and_slt_ugt_swap(i8 %x) {
2132 ; CHECK-LABEL: @and_slt_ugt_swap(
2133 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 23
2134 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
2135 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2136 ; CHECK-NEXT: ret i1 [[C]]
2138 %a = icmp slt i8 %x, 23
2139 %b = icmp ugt i8 %x, 17
2144 ; x <s 23 && x <=u 17
2146 define i1 @and_slt_ule_swap(i8 %x) {
2147 ; CHECK-LABEL: @and_slt_ule_swap(
2148 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
2149 ; CHECK-NEXT: ret i1 [[B]]
2151 %a = icmp slt i8 %x, 23
2152 %b = icmp ule i8 %x, 17
2157 ; x <s 23 && x <u 17
2159 define i1 @and_slt_ult_swap(i8 %x) {
2160 ; CHECK-LABEL: @and_slt_ult_swap(
2161 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
2162 ; CHECK-NEXT: ret i1 [[B]]
2164 %a = icmp slt i8 %x, 23
2165 %b = icmp ult i8 %x, 17
2171 ; x >=u 23 && x == 17
2173 define i1 @and_uge_eq_swap(i8 %x) {
2174 ; CHECK-LABEL: @and_uge_eq_swap(
2175 ; CHECK-NEXT: ret i1 false
2177 %a = icmp uge i8 %x, 23
2178 %b = icmp eq i8 %x, 17
2183 ; x >=u 23 && x != 17
2185 define i1 @and_uge_ne_swap(i8 %x) {
2186 ; CHECK-LABEL: @and_uge_ne_swap(
2187 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
2188 ; CHECK-NEXT: ret i1 [[A]]
2190 %a = icmp uge i8 %x, 23
2191 %b = icmp ne i8 %x, 17
2196 ; x >=u 23 && x >=s 17
2198 define i1 @and_uge_sge_swap(i8 %x) {
2199 ; CHECK-LABEL: @and_uge_sge_swap(
2200 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
2201 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
2202 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2203 ; CHECK-NEXT: ret i1 [[C]]
2205 %a = icmp uge i8 %x, 23
2206 %b = icmp sge i8 %x, 17
2211 ; x >=u 23 && x >s 17
2213 define i1 @and_uge_sgt_swap(i8 %x) {
2214 ; CHECK-LABEL: @and_uge_sgt_swap(
2215 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
2216 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
2217 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2218 ; CHECK-NEXT: ret i1 [[C]]
2220 %a = icmp uge i8 %x, 23
2221 %b = icmp sgt i8 %x, 17
2226 ; x >=u 23 && x <=s 17
2228 define i1 @and_uge_sle_swap(i8 %x) {
2229 ; CHECK-LABEL: @and_uge_sle_swap(
2230 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
2231 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
2232 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2233 ; CHECK-NEXT: ret i1 [[C]]
2235 %a = icmp uge i8 %x, 23
2236 %b = icmp sle i8 %x, 17
2241 ; x >=u 23 && x <s 17
2243 define i1 @and_uge_slt_swap(i8 %x) {
2244 ; CHECK-LABEL: @and_uge_slt_swap(
2245 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
2246 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
2247 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2248 ; CHECK-NEXT: ret i1 [[C]]
2250 %a = icmp uge i8 %x, 23
2251 %b = icmp slt i8 %x, 17
2256 ; x >=u 23 && x >=u 17
2258 define i1 @and_uge_uge_swap(i8 %x) {
2259 ; CHECK-LABEL: @and_uge_uge_swap(
2260 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
2261 ; CHECK-NEXT: ret i1 [[A]]
2263 %a = icmp uge i8 %x, 23
2264 %b = icmp uge i8 %x, 17
2269 ; x >=u 23 && x >u 17
2271 define i1 @and_uge_ugt_swap(i8 %x) {
2272 ; CHECK-LABEL: @and_uge_ugt_swap(
2273 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
2274 ; CHECK-NEXT: ret i1 [[A]]
2276 %a = icmp uge i8 %x, 23
2277 %b = icmp ugt i8 %x, 17
2282 ; x >=u 23 && x <=u 17
2284 define i1 @and_uge_ule_swap(i8 %x) {
2285 ; CHECK-LABEL: @and_uge_ule_swap(
2286 ; CHECK-NEXT: ret i1 false
2288 %a = icmp uge i8 %x, 23
2289 %b = icmp ule i8 %x, 17
2294 ; x >=u 23 && x <u 17
2296 define i1 @and_uge_ult_swap(i8 %x) {
2297 ; CHECK-LABEL: @and_uge_ult_swap(
2298 ; CHECK-NEXT: ret i1 false
2300 %a = icmp uge i8 %x, 23
2301 %b = icmp ult i8 %x, 17
2307 ; x >u 23 && x == 17
2309 define i1 @and_ugt_eq_swap(i8 %x) {
2310 ; CHECK-LABEL: @and_ugt_eq_swap(
2311 ; CHECK-NEXT: ret i1 false
2313 %a = icmp ugt i8 %x, 23
2314 %b = icmp eq i8 %x, 17
2319 ; x >u 23 && x != 17
2321 define i1 @and_ugt_ne_swap(i8 %x) {
2322 ; CHECK-LABEL: @and_ugt_ne_swap(
2323 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
2324 ; CHECK-NEXT: ret i1 [[A]]
2326 %a = icmp ugt i8 %x, 23
2327 %b = icmp ne i8 %x, 17
2332 ; x >u 23 && x >=s 17
2334 define i1 @and_ugt_sge_swap(i8 %x) {
2335 ; CHECK-LABEL: @and_ugt_sge_swap(
2336 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
2337 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
2338 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2339 ; CHECK-NEXT: ret i1 [[C]]
2341 %a = icmp ugt i8 %x, 23
2342 %b = icmp sge i8 %x, 17
2347 ; x >u 23 && x >s 17
2349 define i1 @and_ugt_sgt_swap(i8 %x) {
2350 ; CHECK-LABEL: @and_ugt_sgt_swap(
2351 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
2352 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
2353 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2354 ; CHECK-NEXT: ret i1 [[C]]
2356 %a = icmp ugt i8 %x, 23
2357 %b = icmp sgt i8 %x, 17
2362 ; x >u 23 && x <=s 17
2364 define i1 @and_ugt_sle_swap(i8 %x) {
2365 ; CHECK-LABEL: @and_ugt_sle_swap(
2366 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
2367 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
2368 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2369 ; CHECK-NEXT: ret i1 [[C]]
2371 %a = icmp ugt i8 %x, 23
2372 %b = icmp sle i8 %x, 17
2377 ; x >u 23 && x <s 17
2379 define i1 @and_ugt_slt_swap(i8 %x) {
2380 ; CHECK-LABEL: @and_ugt_slt_swap(
2381 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
2382 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
2383 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2384 ; CHECK-NEXT: ret i1 [[C]]
2386 %a = icmp ugt i8 %x, 23
2387 %b = icmp slt i8 %x, 17
2392 ; x >u 23 && x >=u 17
2394 define i1 @and_ugt_uge_swap(i8 %x) {
2395 ; CHECK-LABEL: @and_ugt_uge_swap(
2396 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
2397 ; CHECK-NEXT: ret i1 [[A]]
2399 %a = icmp ugt i8 %x, 23
2400 %b = icmp uge i8 %x, 17
2405 ; x >u 23 && x >u 17
2407 define i1 @and_ugt_ugt_swap(i8 %x) {
2408 ; CHECK-LABEL: @and_ugt_ugt_swap(
2409 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
2410 ; CHECK-NEXT: ret i1 [[A]]
2412 %a = icmp ugt i8 %x, 23
2413 %b = icmp ugt i8 %x, 17
2418 ; x >u 23 && x <=u 17
2420 define i1 @and_ugt_ule_swap(i8 %x) {
2421 ; CHECK-LABEL: @and_ugt_ule_swap(
2422 ; CHECK-NEXT: ret i1 false
2424 %a = icmp ugt i8 %x, 23
2425 %b = icmp ule i8 %x, 17
2430 ; x >u 23 && x <u 17
2432 define i1 @and_ugt_ult_swap(i8 %x) {
2433 ; CHECK-LABEL: @and_ugt_ult_swap(
2434 ; CHECK-NEXT: ret i1 false
2436 %a = icmp ugt i8 %x, 23
2437 %b = icmp ult i8 %x, 17
2443 ; x <=u 23 && x == 17
2445 define i1 @and_ule_eq_swap(i8 %x) {
2446 ; CHECK-LABEL: @and_ule_eq_swap(
2447 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
2448 ; CHECK-NEXT: ret i1 [[B]]
2450 %a = icmp ule i8 %x, 23
2451 %b = icmp eq i8 %x, 17
2456 ; x <=u 23 && x != 17
2458 define i1 @and_ule_ne_swap(i8 %x) {
2459 ; CHECK-LABEL: @and_ule_ne_swap(
2460 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
2461 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
2462 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2463 ; CHECK-NEXT: ret i1 [[C]]
2465 %a = icmp ule i8 %x, 23
2466 %b = icmp ne i8 %x, 17
2471 ; x <=u 23 && x >=s 17
2473 define i1 @and_ule_sge_swap(i8 %x) {
2474 ; CHECK-LABEL: @and_ule_sge_swap(
2475 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
2476 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
2477 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2478 ; CHECK-NEXT: ret i1 [[C]]
2480 %a = icmp ule i8 %x, 23
2481 %b = icmp sge i8 %x, 17
2486 ; x <=u 23 && x >s 17
2488 define i1 @and_ule_sgt_swap(i8 %x) {
2489 ; CHECK-LABEL: @and_ule_sgt_swap(
2490 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
2491 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
2492 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2493 ; CHECK-NEXT: ret i1 [[C]]
2495 %a = icmp ule i8 %x, 23
2496 %b = icmp sgt i8 %x, 17
2501 ; x <=u 23 && x <=s 17
2503 define i1 @and_ule_sle_swap(i8 %x) {
2504 ; CHECK-LABEL: @and_ule_sle_swap(
2505 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
2506 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
2507 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2508 ; CHECK-NEXT: ret i1 [[C]]
2510 %a = icmp ule i8 %x, 23
2511 %b = icmp sle i8 %x, 17
2516 ; x <=u 23 && x <s 17
2518 define i1 @and_ule_slt_swap(i8 %x) {
2519 ; CHECK-LABEL: @and_ule_slt_swap(
2520 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
2521 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
2522 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2523 ; CHECK-NEXT: ret i1 [[C]]
2525 %a = icmp ule i8 %x, 23
2526 %b = icmp slt i8 %x, 17
2531 ; x <=u 23 && x >=u 17
2533 define i1 @and_ule_uge_swap(i8 %x) {
2534 ; CHECK-LABEL: @and_ule_uge_swap(
2535 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
2536 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
2537 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2538 ; CHECK-NEXT: ret i1 [[C]]
2540 %a = icmp ule i8 %x, 23
2541 %b = icmp uge i8 %x, 17
2546 ; x <=u 23 && x >u 17
2548 define i1 @and_ule_ugt_swap(i8 %x) {
2549 ; CHECK-LABEL: @and_ule_ugt_swap(
2550 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
2551 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
2552 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2553 ; CHECK-NEXT: ret i1 [[C]]
2555 %a = icmp ule i8 %x, 23
2556 %b = icmp ugt i8 %x, 17
2561 ; x <=u 23 && x <=u 17
2563 define i1 @and_ule_ule_swap(i8 %x) {
2564 ; CHECK-LABEL: @and_ule_ule_swap(
2565 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
2566 ; CHECK-NEXT: ret i1 [[B]]
2568 %a = icmp ule i8 %x, 23
2569 %b = icmp ule i8 %x, 17
2574 ; x <=u 23 && x <u 17
2576 define i1 @and_ule_ult_swap(i8 %x) {
2577 ; CHECK-LABEL: @and_ule_ult_swap(
2578 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
2579 ; CHECK-NEXT: ret i1 [[B]]
2581 %a = icmp ule i8 %x, 23
2582 %b = icmp ult i8 %x, 17
2588 ; x <u 23 && x == 17
2590 define i1 @and_ult_eq_swap(i8 %x) {
2591 ; CHECK-LABEL: @and_ult_eq_swap(
2592 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
2593 ; CHECK-NEXT: ret i1 [[B]]
2595 %a = icmp ult i8 %x, 23
2596 %b = icmp eq i8 %x, 17
2601 ; x <u 23 && x != 17
2603 define i1 @and_ult_ne_swap(i8 %x) {
2604 ; CHECK-LABEL: @and_ult_ne_swap(
2605 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
2606 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
2607 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2608 ; CHECK-NEXT: ret i1 [[C]]
2610 %a = icmp ult i8 %x, 23
2611 %b = icmp ne i8 %x, 17
2616 ; x <u 23 && x >=s 17
2618 define i1 @and_ult_sge_swap(i8 %x) {
2619 ; CHECK-LABEL: @and_ult_sge_swap(
2620 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
2621 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
2622 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2623 ; CHECK-NEXT: ret i1 [[C]]
2625 %a = icmp ult i8 %x, 23
2626 %b = icmp sge i8 %x, 17
2631 ; x <u 23 && x >s 17
2633 define i1 @and_ult_sgt_swap(i8 %x) {
2634 ; CHECK-LABEL: @and_ult_sgt_swap(
2635 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
2636 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
2637 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2638 ; CHECK-NEXT: ret i1 [[C]]
2640 %a = icmp ult i8 %x, 23
2641 %b = icmp sgt i8 %x, 17
2646 ; x <u 23 && x <=s 17
2648 define i1 @and_ult_sle_swap(i8 %x) {
2649 ; CHECK-LABEL: @and_ult_sle_swap(
2650 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
2651 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
2652 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2653 ; CHECK-NEXT: ret i1 [[C]]
2655 %a = icmp ult i8 %x, 23
2656 %b = icmp sle i8 %x, 17
2661 ; x <u 23 && x <s 17
2663 define i1 @and_ult_slt_swap(i8 %x) {
2664 ; CHECK-LABEL: @and_ult_slt_swap(
2665 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
2666 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
2667 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2668 ; CHECK-NEXT: ret i1 [[C]]
2670 %a = icmp ult i8 %x, 23
2671 %b = icmp slt i8 %x, 17
2676 ; x <u 23 && x >=u 17
2678 define i1 @and_ult_uge_swap(i8 %x) {
2679 ; CHECK-LABEL: @and_ult_uge_swap(
2680 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
2681 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
2682 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2683 ; CHECK-NEXT: ret i1 [[C]]
2685 %a = icmp ult i8 %x, 23
2686 %b = icmp uge i8 %x, 17
2691 ; x <u 23 && x >u 17
2693 define i1 @and_ult_ugt_swap(i8 %x) {
2694 ; CHECK-LABEL: @and_ult_ugt_swap(
2695 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
2696 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
2697 ; CHECK-NEXT: [[C:%.*]] = and i1 [[A]], [[B]]
2698 ; CHECK-NEXT: ret i1 [[C]]
2700 %a = icmp ult i8 %x, 23
2701 %b = icmp ugt i8 %x, 17
2706 ; x <u 23 && x <=u 17
2708 define i1 @and_ult_ule_swap(i8 %x) {
2709 ; CHECK-LABEL: @and_ult_ule_swap(
2710 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
2711 ; CHECK-NEXT: ret i1 [[B]]
2713 %a = icmp ult i8 %x, 23
2714 %b = icmp ule i8 %x, 17
2719 ; x <u 23 && x <u 17
2721 define i1 @and_ult_ult_swap(i8 %x) {
2722 ; CHECK-LABEL: @and_ult_ult_swap(
2723 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
2724 ; CHECK-NEXT: ret i1 [[B]]
2726 %a = icmp ult i8 %x, 23
2727 %b = icmp ult i8 %x, 17
2733 ; x == 13 || x == 17
2735 define i1 @or_eq_eq(i8 %x) {
2736 ; CHECK-LABEL: @or_eq_eq(
2737 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 13
2738 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
2739 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
2740 ; CHECK-NEXT: ret i1 [[C]]
2742 %a = icmp eq i8 %x, 13
2743 %b = icmp eq i8 %x, 17
2748 ; x == 13 || x != 17
2750 define i1 @or_eq_ne(i8 %x) {
2751 ; CHECK-LABEL: @or_eq_ne(
2752 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
2753 ; CHECK-NEXT: ret i1 [[B]]
2755 %a = icmp eq i8 %x, 13
2756 %b = icmp ne i8 %x, 17
2761 ; x == 13 || x >=s 17
2763 define i1 @or_eq_sge(i8 %x) {
2764 ; CHECK-LABEL: @or_eq_sge(
2765 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 13
2766 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
2767 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
2768 ; CHECK-NEXT: ret i1 [[C]]
2770 %a = icmp eq i8 %x, 13
2771 %b = icmp sge i8 %x, 17
2776 ; x == 13 || x >s 17
2778 define i1 @or_eq_sgt(i8 %x) {
2779 ; CHECK-LABEL: @or_eq_sgt(
2780 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 13
2781 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
2782 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
2783 ; CHECK-NEXT: ret i1 [[C]]
2785 %a = icmp eq i8 %x, 13
2786 %b = icmp sgt i8 %x, 17
2791 ; x == 13 || x <=s 17
2793 define i1 @or_eq_sle(i8 %x) {
2794 ; CHECK-LABEL: @or_eq_sle(
2795 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
2796 ; CHECK-NEXT: ret i1 [[B]]
2798 %a = icmp eq i8 %x, 13
2799 %b = icmp sle i8 %x, 17
2804 ; x == 13 || x <s 17
2806 define i1 @or_eq_slt(i8 %x) {
2807 ; CHECK-LABEL: @or_eq_slt(
2808 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
2809 ; CHECK-NEXT: ret i1 [[B]]
2811 %a = icmp eq i8 %x, 13
2812 %b = icmp slt i8 %x, 17
2817 ; x == 13 || x >=u 17
2819 define i1 @or_eq_uge(i8 %x) {
2820 ; CHECK-LABEL: @or_eq_uge(
2821 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 13
2822 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
2823 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
2824 ; CHECK-NEXT: ret i1 [[C]]
2826 %a = icmp eq i8 %x, 13
2827 %b = icmp uge i8 %x, 17
2832 ; x == 13 || x >u 17
2834 define i1 @or_eq_ugt(i8 %x) {
2835 ; CHECK-LABEL: @or_eq_ugt(
2836 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 13
2837 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
2838 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
2839 ; CHECK-NEXT: ret i1 [[C]]
2841 %a = icmp eq i8 %x, 13
2842 %b = icmp ugt i8 %x, 17
2847 ; x == 13 || x <=u 17
2849 define i1 @or_eq_ule(i8 %x) {
2850 ; CHECK-LABEL: @or_eq_ule(
2851 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
2852 ; CHECK-NEXT: ret i1 [[B]]
2854 %a = icmp eq i8 %x, 13
2855 %b = icmp ule i8 %x, 17
2860 ; x == 13 || x <u 17
2862 define i1 @or_eq_ult(i8 %x) {
2863 ; CHECK-LABEL: @or_eq_ult(
2864 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
2865 ; CHECK-NEXT: ret i1 [[B]]
2867 %a = icmp eq i8 %x, 13
2868 %b = icmp ult i8 %x, 17
2874 ; x != 13 || x == 17
2876 define i1 @or_ne_eq(i8 %x) {
2877 ; CHECK-LABEL: @or_ne_eq(
2878 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 13
2879 ; CHECK-NEXT: ret i1 [[A]]
2881 %a = icmp ne i8 %x, 13
2882 %b = icmp eq i8 %x, 17
2887 ; x != 13 || x != 17
2889 define i1 @or_ne_ne(i8 %x) {
2890 ; CHECK-LABEL: @or_ne_ne(
2891 ; CHECK-NEXT: ret i1 true
2893 %a = icmp ne i8 %x, 13
2894 %b = icmp ne i8 %x, 17
2899 ; x != 13 || x >=s 17
2901 define i1 @or_ne_sge(i8 %x) {
2902 ; CHECK-LABEL: @or_ne_sge(
2903 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 13
2904 ; CHECK-NEXT: ret i1 [[A]]
2906 %a = icmp ne i8 %x, 13
2907 %b = icmp sge i8 %x, 17
2912 ; x != 13 || x >s 17
2914 define i1 @or_ne_sgt(i8 %x) {
2915 ; CHECK-LABEL: @or_ne_sgt(
2916 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 13
2917 ; CHECK-NEXT: ret i1 [[A]]
2919 %a = icmp ne i8 %x, 13
2920 %b = icmp sgt i8 %x, 17
2925 ; x != 13 || x <=s 17
2927 define i1 @or_ne_sle(i8 %x) {
2928 ; CHECK-LABEL: @or_ne_sle(
2929 ; CHECK-NEXT: ret i1 true
2931 %a = icmp ne i8 %x, 13
2932 %b = icmp sle i8 %x, 17
2937 ; x != 13 || x <s 17
2939 define i1 @or_ne_slt(i8 %x) {
2940 ; CHECK-LABEL: @or_ne_slt(
2941 ; CHECK-NEXT: ret i1 true
2943 %a = icmp ne i8 %x, 13
2944 %b = icmp slt i8 %x, 17
2949 ; x != 13 || x >=u 17
2951 define i1 @or_ne_uge(i8 %x) {
2952 ; CHECK-LABEL: @or_ne_uge(
2953 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 13
2954 ; CHECK-NEXT: ret i1 [[A]]
2956 %a = icmp ne i8 %x, 13
2957 %b = icmp uge i8 %x, 17
2962 ; x != 13 || x >u 17
2964 define i1 @or_ne_ugt(i8 %x) {
2965 ; CHECK-LABEL: @or_ne_ugt(
2966 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 13
2967 ; CHECK-NEXT: ret i1 [[A]]
2969 %a = icmp ne i8 %x, 13
2970 %b = icmp ugt i8 %x, 17
2975 ; x != 13 || x <=u 17
2977 define i1 @or_ne_ule(i8 %x) {
2978 ; CHECK-LABEL: @or_ne_ule(
2979 ; CHECK-NEXT: ret i1 true
2981 %a = icmp ne i8 %x, 13
2982 %b = icmp ule i8 %x, 17
2987 ; x != 13 || x <u 17
2989 define i1 @or_ne_ult(i8 %x) {
2990 ; CHECK-LABEL: @or_ne_ult(
2991 ; CHECK-NEXT: ret i1 true
2993 %a = icmp ne i8 %x, 13
2994 %b = icmp ult i8 %x, 17
3000 ; x >=s 13 || x == 17
3002 define i1 @or_sge_eq(i8 %x) {
3003 ; CHECK-LABEL: @or_sge_eq(
3004 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
3005 ; CHECK-NEXT: ret i1 [[A]]
3007 %a = icmp sge i8 %x, 13
3008 %b = icmp eq i8 %x, 17
3013 ; x >=s 13 || x != 17
3015 define i1 @or_sge_ne(i8 %x) {
3016 ; CHECK-LABEL: @or_sge_ne(
3017 ; CHECK-NEXT: ret i1 true
3019 %a = icmp sge i8 %x, 13
3020 %b = icmp ne i8 %x, 17
3025 ; x >=s 13 || x >=s 17
3027 define i1 @or_sge_sge(i8 %x) {
3028 ; CHECK-LABEL: @or_sge_sge(
3029 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
3030 ; CHECK-NEXT: ret i1 [[A]]
3032 %a = icmp sge i8 %x, 13
3033 %b = icmp sge i8 %x, 17
3038 ; x >=s 13 || x >s 17
3040 define i1 @or_sge_sgt(i8 %x) {
3041 ; CHECK-LABEL: @or_sge_sgt(
3042 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
3043 ; CHECK-NEXT: ret i1 [[A]]
3045 %a = icmp sge i8 %x, 13
3046 %b = icmp sgt i8 %x, 17
3051 ; x >=s 13 || x <=s 17
3053 define i1 @or_sge_sle(i8 %x) {
3054 ; CHECK-LABEL: @or_sge_sle(
3055 ; CHECK-NEXT: ret i1 true
3057 %a = icmp sge i8 %x, 13
3058 %b = icmp sle i8 %x, 17
3063 ; x >=s 13 || x <s 17
3065 define i1 @or_sge_slt(i8 %x) {
3066 ; CHECK-LABEL: @or_sge_slt(
3067 ; CHECK-NEXT: ret i1 true
3069 %a = icmp sge i8 %x, 13
3070 %b = icmp slt i8 %x, 17
3075 ; x >=s 13 || x >=u 17
3077 define i1 @or_sge_uge(i8 %x) {
3078 ; CHECK-LABEL: @or_sge_uge(
3079 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
3080 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
3081 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3082 ; CHECK-NEXT: ret i1 [[C]]
3084 %a = icmp sge i8 %x, 13
3085 %b = icmp uge i8 %x, 17
3090 ; x >=s 13 || x >u 17
3092 define i1 @or_sge_ugt(i8 %x) {
3093 ; CHECK-LABEL: @or_sge_ugt(
3094 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
3095 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
3096 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3097 ; CHECK-NEXT: ret i1 [[C]]
3099 %a = icmp sge i8 %x, 13
3100 %b = icmp ugt i8 %x, 17
3105 ; x >=s 13 || x <=u 17
3107 define i1 @or_sge_ule(i8 %x) {
3108 ; CHECK-LABEL: @or_sge_ule(
3109 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
3110 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
3111 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3112 ; CHECK-NEXT: ret i1 [[C]]
3114 %a = icmp sge i8 %x, 13
3115 %b = icmp ule i8 %x, 17
3120 ; x >=s 13 || x <u 17
3122 define i1 @or_sge_ult(i8 %x) {
3123 ; CHECK-LABEL: @or_sge_ult(
3124 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 13
3125 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
3126 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3127 ; CHECK-NEXT: ret i1 [[C]]
3129 %a = icmp sge i8 %x, 13
3130 %b = icmp ult i8 %x, 17
3136 ; x >s 13 || x == 17
3138 define i1 @or_sgt_eq(i8 %x) {
3139 ; CHECK-LABEL: @or_sgt_eq(
3140 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
3141 ; CHECK-NEXT: ret i1 [[A]]
3143 %a = icmp sgt i8 %x, 13
3144 %b = icmp eq i8 %x, 17
3149 ; x >s 13 || x != 17
3151 define i1 @or_sgt_ne(i8 %x) {
3152 ; CHECK-LABEL: @or_sgt_ne(
3153 ; CHECK-NEXT: ret i1 true
3155 %a = icmp sgt i8 %x, 13
3156 %b = icmp ne i8 %x, 17
3161 ; x >s 13 || x >=s 17
3163 define i1 @or_sgt_sge(i8 %x) {
3164 ; CHECK-LABEL: @or_sgt_sge(
3165 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
3166 ; CHECK-NEXT: ret i1 [[A]]
3168 %a = icmp sgt i8 %x, 13
3169 %b = icmp sge i8 %x, 17
3174 ; x >s 13 || x >s 17
3176 define i1 @or_sgt_sgt(i8 %x) {
3177 ; CHECK-LABEL: @or_sgt_sgt(
3178 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
3179 ; CHECK-NEXT: ret i1 [[A]]
3181 %a = icmp sgt i8 %x, 13
3182 %b = icmp sgt i8 %x, 17
3187 ; x >s 13 || x <=s 17
3189 define i1 @or_sgt_sle(i8 %x) {
3190 ; CHECK-LABEL: @or_sgt_sle(
3191 ; CHECK-NEXT: ret i1 true
3193 %a = icmp sgt i8 %x, 13
3194 %b = icmp sle i8 %x, 17
3199 ; x >s 13 || x <s 17
3201 define i1 @or_sgt_slt(i8 %x) {
3202 ; CHECK-LABEL: @or_sgt_slt(
3203 ; CHECK-NEXT: ret i1 true
3205 %a = icmp sgt i8 %x, 13
3206 %b = icmp slt i8 %x, 17
3211 ; x >s 13 || x >=u 17
3213 define i1 @or_sgt_uge(i8 %x) {
3214 ; CHECK-LABEL: @or_sgt_uge(
3215 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
3216 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
3217 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3218 ; CHECK-NEXT: ret i1 [[C]]
3220 %a = icmp sgt i8 %x, 13
3221 %b = icmp uge i8 %x, 17
3226 ; x >s 13 || x >u 17
3228 define i1 @or_sgt_ugt(i8 %x) {
3229 ; CHECK-LABEL: @or_sgt_ugt(
3230 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
3231 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
3232 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3233 ; CHECK-NEXT: ret i1 [[C]]
3235 %a = icmp sgt i8 %x, 13
3236 %b = icmp ugt i8 %x, 17
3241 ; x >s 13 || x <=u 17
3243 define i1 @or_sgt_ule(i8 %x) {
3244 ; CHECK-LABEL: @or_sgt_ule(
3245 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
3246 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
3247 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3248 ; CHECK-NEXT: ret i1 [[C]]
3250 %a = icmp sgt i8 %x, 13
3251 %b = icmp ule i8 %x, 17
3256 ; x >s 13 || x <u 17
3258 define i1 @or_sgt_ult(i8 %x) {
3259 ; CHECK-LABEL: @or_sgt_ult(
3260 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 13
3261 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
3262 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3263 ; CHECK-NEXT: ret i1 [[C]]
3265 %a = icmp sgt i8 %x, 13
3266 %b = icmp ult i8 %x, 17
3272 ; x <=s 13 || x == 17
3274 define i1 @or_sle_eq(i8 %x) {
3275 ; CHECK-LABEL: @or_sle_eq(
3276 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
3277 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
3278 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3279 ; CHECK-NEXT: ret i1 [[C]]
3281 %a = icmp sle i8 %x, 13
3282 %b = icmp eq i8 %x, 17
3287 ; x <=s 13 || x != 17
3289 define i1 @or_sle_ne(i8 %x) {
3290 ; CHECK-LABEL: @or_sle_ne(
3291 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
3292 ; CHECK-NEXT: ret i1 [[B]]
3294 %a = icmp sle i8 %x, 13
3295 %b = icmp ne i8 %x, 17
3300 ; x <=s 13 || x >=s 17
3302 define i1 @or_sle_sge(i8 %x) {
3303 ; CHECK-LABEL: @or_sle_sge(
3304 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
3305 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
3306 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3307 ; CHECK-NEXT: ret i1 [[C]]
3309 %a = icmp sle i8 %x, 13
3310 %b = icmp sge i8 %x, 17
3315 ; x <=s 13 || x >s 17
3317 define i1 @or_sle_sgt(i8 %x) {
3318 ; CHECK-LABEL: @or_sle_sgt(
3319 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
3320 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
3321 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3322 ; CHECK-NEXT: ret i1 [[C]]
3324 %a = icmp sle i8 %x, 13
3325 %b = icmp sgt i8 %x, 17
3330 ; x <=s 13 || x <=s 17
3332 define i1 @or_sle_sle(i8 %x) {
3333 ; CHECK-LABEL: @or_sle_sle(
3334 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
3335 ; CHECK-NEXT: ret i1 [[B]]
3337 %a = icmp sle i8 %x, 13
3338 %b = icmp sle i8 %x, 17
3343 ; x <=s 13 || x <s 17
3345 define i1 @or_sle_slt(i8 %x) {
3346 ; CHECK-LABEL: @or_sle_slt(
3347 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
3348 ; CHECK-NEXT: ret i1 [[B]]
3350 %a = icmp sle i8 %x, 13
3351 %b = icmp slt i8 %x, 17
3356 ; x <=s 13 || x >=u 17
3358 define i1 @or_sle_uge(i8 %x) {
3359 ; CHECK-LABEL: @or_sle_uge(
3360 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
3361 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
3362 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3363 ; CHECK-NEXT: ret i1 [[C]]
3365 %a = icmp sle i8 %x, 13
3366 %b = icmp uge i8 %x, 17
3371 ; x <=s 13 || x >u 17
3373 define i1 @or_sle_ugt(i8 %x) {
3374 ; CHECK-LABEL: @or_sle_ugt(
3375 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
3376 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
3377 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3378 ; CHECK-NEXT: ret i1 [[C]]
3380 %a = icmp sle i8 %x, 13
3381 %b = icmp ugt i8 %x, 17
3386 ; x <=s 13 || x <=u 17
3388 define i1 @or_sle_ule(i8 %x) {
3389 ; CHECK-LABEL: @or_sle_ule(
3390 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
3391 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
3392 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3393 ; CHECK-NEXT: ret i1 [[C]]
3395 %a = icmp sle i8 %x, 13
3396 %b = icmp ule i8 %x, 17
3401 ; x <=s 13 || x <u 17
3403 define i1 @or_sle_ult(i8 %x) {
3404 ; CHECK-LABEL: @or_sle_ult(
3405 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 13
3406 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
3407 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3408 ; CHECK-NEXT: ret i1 [[C]]
3410 %a = icmp sle i8 %x, 13
3411 %b = icmp ult i8 %x, 17
3417 ; x <s 13 || x == 17
3419 define i1 @or_slt_eq(i8 %x) {
3420 ; CHECK-LABEL: @or_slt_eq(
3421 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
3422 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
3423 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3424 ; CHECK-NEXT: ret i1 [[C]]
3426 %a = icmp slt i8 %x, 13
3427 %b = icmp eq i8 %x, 17
3432 ; x <s 13 || x != 17
3434 define i1 @or_slt_ne(i8 %x) {
3435 ; CHECK-LABEL: @or_slt_ne(
3436 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
3437 ; CHECK-NEXT: ret i1 [[B]]
3439 %a = icmp slt i8 %x, 13
3440 %b = icmp ne i8 %x, 17
3445 ; x <s 13 || x >=s 17
3447 define i1 @or_slt_sge(i8 %x) {
3448 ; CHECK-LABEL: @or_slt_sge(
3449 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
3450 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
3451 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3452 ; CHECK-NEXT: ret i1 [[C]]
3454 %a = icmp slt i8 %x, 13
3455 %b = icmp sge i8 %x, 17
3460 ; x <s 13 || x >s 17
3462 define i1 @or_slt_sgt(i8 %x) {
3463 ; CHECK-LABEL: @or_slt_sgt(
3464 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
3465 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
3466 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3467 ; CHECK-NEXT: ret i1 [[C]]
3469 %a = icmp slt i8 %x, 13
3470 %b = icmp sgt i8 %x, 17
3475 ; x <s 13 || x <=s 17
3477 define i1 @or_slt_sle(i8 %x) {
3478 ; CHECK-LABEL: @or_slt_sle(
3479 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
3480 ; CHECK-NEXT: ret i1 [[B]]
3482 %a = icmp slt i8 %x, 13
3483 %b = icmp sle i8 %x, 17
3488 ; x <s 13 || x <s 17
3490 define i1 @or_slt_slt(i8 %x) {
3491 ; CHECK-LABEL: @or_slt_slt(
3492 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
3493 ; CHECK-NEXT: ret i1 [[B]]
3495 %a = icmp slt i8 %x, 13
3496 %b = icmp slt i8 %x, 17
3501 ; x <s 13 || x >=u 17
3503 define i1 @or_slt_uge(i8 %x) {
3504 ; CHECK-LABEL: @or_slt_uge(
3505 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
3506 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
3507 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3508 ; CHECK-NEXT: ret i1 [[C]]
3510 %a = icmp slt i8 %x, 13
3511 %b = icmp uge i8 %x, 17
3516 ; x <s 13 || x >u 17
3518 define i1 @or_slt_ugt(i8 %x) {
3519 ; CHECK-LABEL: @or_slt_ugt(
3520 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
3521 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
3522 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3523 ; CHECK-NEXT: ret i1 [[C]]
3525 %a = icmp slt i8 %x, 13
3526 %b = icmp ugt i8 %x, 17
3531 ; x <s 13 || x <=u 17
3533 define i1 @or_slt_ule(i8 %x) {
3534 ; CHECK-LABEL: @or_slt_ule(
3535 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
3536 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
3537 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3538 ; CHECK-NEXT: ret i1 [[C]]
3540 %a = icmp slt i8 %x, 13
3541 %b = icmp ule i8 %x, 17
3546 ; x <s 13 || x <u 17
3548 define i1 @or_slt_ult(i8 %x) {
3549 ; CHECK-LABEL: @or_slt_ult(
3550 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 13
3551 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
3552 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3553 ; CHECK-NEXT: ret i1 [[C]]
3555 %a = icmp slt i8 %x, 13
3556 %b = icmp ult i8 %x, 17
3562 ; x >=u 13 || x == 17
3564 define i1 @or_uge_eq(i8 %x) {
3565 ; CHECK-LABEL: @or_uge_eq(
3566 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 13
3567 ; CHECK-NEXT: ret i1 [[A]]
3569 %a = icmp uge i8 %x, 13
3570 %b = icmp eq i8 %x, 17
3575 ; x >=u 13 || x != 17
3577 define i1 @or_uge_ne(i8 %x) {
3578 ; CHECK-LABEL: @or_uge_ne(
3579 ; CHECK-NEXT: ret i1 true
3581 %a = icmp uge i8 %x, 13
3582 %b = icmp ne i8 %x, 17
3587 ; x >=u 13 || x >=s 17
3589 define i1 @or_uge_sge(i8 %x) {
3590 ; CHECK-LABEL: @or_uge_sge(
3591 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 13
3592 ; CHECK-NEXT: ret i1 [[A]]
3594 %a = icmp uge i8 %x, 13
3595 %b = icmp sge i8 %x, 17
3600 ; x >=u 13 || x >s 17
3602 define i1 @or_uge_sgt(i8 %x) {
3603 ; CHECK-LABEL: @or_uge_sgt(
3604 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 13
3605 ; CHECK-NEXT: ret i1 [[A]]
3607 %a = icmp uge i8 %x, 13
3608 %b = icmp sgt i8 %x, 17
3613 ; x >=u 13 || x <=s 17
3615 define i1 @or_uge_sle(i8 %x) {
3616 ; CHECK-LABEL: @or_uge_sle(
3617 ; CHECK-NEXT: ret i1 true
3619 %a = icmp uge i8 %x, 13
3620 %b = icmp sle i8 %x, 17
3625 ; x >=u 13 || x <s 17
3627 define i1 @or_uge_slt(i8 %x) {
3628 ; CHECK-LABEL: @or_uge_slt(
3629 ; CHECK-NEXT: ret i1 true
3631 %a = icmp uge i8 %x, 13
3632 %b = icmp slt i8 %x, 17
3637 ; x >=u 13 || x >=u 17
3639 define i1 @or_uge_uge(i8 %x) {
3640 ; CHECK-LABEL: @or_uge_uge(
3641 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 13
3642 ; CHECK-NEXT: ret i1 [[A]]
3644 %a = icmp uge i8 %x, 13
3645 %b = icmp uge i8 %x, 17
3650 ; x >=u 13 || x >u 17
3652 define i1 @or_uge_ugt(i8 %x) {
3653 ; CHECK-LABEL: @or_uge_ugt(
3654 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 13
3655 ; CHECK-NEXT: ret i1 [[A]]
3657 %a = icmp uge i8 %x, 13
3658 %b = icmp ugt i8 %x, 17
3663 ; x >=u 13 || x <=u 17
3665 define i1 @or_uge_ule(i8 %x) {
3666 ; CHECK-LABEL: @or_uge_ule(
3667 ; CHECK-NEXT: ret i1 true
3669 %a = icmp uge i8 %x, 13
3670 %b = icmp ule i8 %x, 17
3675 ; x >=u 13 || x <u 17
3677 define i1 @or_uge_ult(i8 %x) {
3678 ; CHECK-LABEL: @or_uge_ult(
3679 ; CHECK-NEXT: ret i1 true
3681 %a = icmp uge i8 %x, 13
3682 %b = icmp ult i8 %x, 17
3688 ; x >u 13 || x == 17
3690 define i1 @or_ugt_eq(i8 %x) {
3691 ; CHECK-LABEL: @or_ugt_eq(
3692 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 13
3693 ; CHECK-NEXT: ret i1 [[A]]
3695 %a = icmp ugt i8 %x, 13
3696 %b = icmp eq i8 %x, 17
3701 ; x >u 13 || x != 17
3703 define i1 @or_ugt_ne(i8 %x) {
3704 ; CHECK-LABEL: @or_ugt_ne(
3705 ; CHECK-NEXT: ret i1 true
3707 %a = icmp ugt i8 %x, 13
3708 %b = icmp ne i8 %x, 17
3713 ; x >u 13 || x >=s 17
3715 define i1 @or_ugt_sge(i8 %x) {
3716 ; CHECK-LABEL: @or_ugt_sge(
3717 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 13
3718 ; CHECK-NEXT: ret i1 [[A]]
3720 %a = icmp ugt i8 %x, 13
3721 %b = icmp sge i8 %x, 17
3726 ; x >u 13 || x >s 17
3728 define i1 @or_ugt_sgt(i8 %x) {
3729 ; CHECK-LABEL: @or_ugt_sgt(
3730 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 13
3731 ; CHECK-NEXT: ret i1 [[A]]
3733 %a = icmp ugt i8 %x, 13
3734 %b = icmp sgt i8 %x, 17
3739 ; x >u 13 || x <=s 17
3741 define i1 @or_ugt_sle(i8 %x) {
3742 ; CHECK-LABEL: @or_ugt_sle(
3743 ; CHECK-NEXT: ret i1 true
3745 %a = icmp ugt i8 %x, 13
3746 %b = icmp sle i8 %x, 17
3751 ; x >u 13 || x <s 17
3753 define i1 @or_ugt_slt(i8 %x) {
3754 ; CHECK-LABEL: @or_ugt_slt(
3755 ; CHECK-NEXT: ret i1 true
3757 %a = icmp ugt i8 %x, 13
3758 %b = icmp slt i8 %x, 17
3763 ; x >u 13 || x >=u 17
3765 define i1 @or_ugt_uge(i8 %x) {
3766 ; CHECK-LABEL: @or_ugt_uge(
3767 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 13
3768 ; CHECK-NEXT: ret i1 [[A]]
3770 %a = icmp ugt i8 %x, 13
3771 %b = icmp uge i8 %x, 17
3776 ; x >u 13 || x >u 17
3778 define i1 @or_ugt_ugt(i8 %x) {
3779 ; CHECK-LABEL: @or_ugt_ugt(
3780 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 13
3781 ; CHECK-NEXT: ret i1 [[A]]
3783 %a = icmp ugt i8 %x, 13
3784 %b = icmp ugt i8 %x, 17
3789 ; x >u 13 || x <=u 17
3791 define i1 @or_ugt_ule(i8 %x) {
3792 ; CHECK-LABEL: @or_ugt_ule(
3793 ; CHECK-NEXT: ret i1 true
3795 %a = icmp ugt i8 %x, 13
3796 %b = icmp ule i8 %x, 17
3801 ; x >u 13 || x <u 17
3803 define i1 @or_ugt_ult(i8 %x) {
3804 ; CHECK-LABEL: @or_ugt_ult(
3805 ; CHECK-NEXT: ret i1 true
3807 %a = icmp ugt i8 %x, 13
3808 %b = icmp ult i8 %x, 17
3814 ; x <=u 13 || x == 17
3816 define i1 @or_ule_eq(i8 %x) {
3817 ; CHECK-LABEL: @or_ule_eq(
3818 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 13
3819 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
3820 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3821 ; CHECK-NEXT: ret i1 [[C]]
3823 %a = icmp ule i8 %x, 13
3824 %b = icmp eq i8 %x, 17
3829 ; x <=u 13 || x != 17
3831 define i1 @or_ule_ne(i8 %x) {
3832 ; CHECK-LABEL: @or_ule_ne(
3833 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
3834 ; CHECK-NEXT: ret i1 [[B]]
3836 %a = icmp ule i8 %x, 13
3837 %b = icmp ne i8 %x, 17
3842 ; x <=u 13 || x >=s 17
3844 define i1 @or_ule_sge(i8 %x) {
3845 ; CHECK-LABEL: @or_ule_sge(
3846 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 13
3847 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
3848 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3849 ; CHECK-NEXT: ret i1 [[C]]
3851 %a = icmp ule i8 %x, 13
3852 %b = icmp sge i8 %x, 17
3857 ; x <=u 13 || x >s 17
3859 define i1 @or_ule_sgt(i8 %x) {
3860 ; CHECK-LABEL: @or_ule_sgt(
3861 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 13
3862 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
3863 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3864 ; CHECK-NEXT: ret i1 [[C]]
3866 %a = icmp ule i8 %x, 13
3867 %b = icmp sgt i8 %x, 17
3872 ; x <=u 13 || x <=s 17
3874 define i1 @or_ule_sle(i8 %x) {
3875 ; CHECK-LABEL: @or_ule_sle(
3876 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
3877 ; CHECK-NEXT: ret i1 [[B]]
3879 %a = icmp ule i8 %x, 13
3880 %b = icmp sle i8 %x, 17
3885 ; x <=u 13 || x <s 17
3887 define i1 @or_ule_slt(i8 %x) {
3888 ; CHECK-LABEL: @or_ule_slt(
3889 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
3890 ; CHECK-NEXT: ret i1 [[B]]
3892 %a = icmp ule i8 %x, 13
3893 %b = icmp slt i8 %x, 17
3898 ; x <=u 13 || x >=u 17
3900 define i1 @or_ule_uge(i8 %x) {
3901 ; CHECK-LABEL: @or_ule_uge(
3902 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 13
3903 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
3904 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3905 ; CHECK-NEXT: ret i1 [[C]]
3907 %a = icmp ule i8 %x, 13
3908 %b = icmp uge i8 %x, 17
3913 ; x <=u 13 || x >u 17
3915 define i1 @or_ule_ugt(i8 %x) {
3916 ; CHECK-LABEL: @or_ule_ugt(
3917 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 13
3918 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
3919 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3920 ; CHECK-NEXT: ret i1 [[C]]
3922 %a = icmp ule i8 %x, 13
3923 %b = icmp ugt i8 %x, 17
3928 ; x <=u 13 || x <=u 17
3930 define i1 @or_ule_ule(i8 %x) {
3931 ; CHECK-LABEL: @or_ule_ule(
3932 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
3933 ; CHECK-NEXT: ret i1 [[B]]
3935 %a = icmp ule i8 %x, 13
3936 %b = icmp ule i8 %x, 17
3941 ; x <=u 13 || x <u 17
3943 define i1 @or_ule_ult(i8 %x) {
3944 ; CHECK-LABEL: @or_ule_ult(
3945 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
3946 ; CHECK-NEXT: ret i1 [[B]]
3948 %a = icmp ule i8 %x, 13
3949 %b = icmp ult i8 %x, 17
3955 ; x <u 13 || x == 17
3957 define i1 @or_ult_eq(i8 %x) {
3958 ; CHECK-LABEL: @or_ult_eq(
3959 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 13
3960 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
3961 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3962 ; CHECK-NEXT: ret i1 [[C]]
3964 %a = icmp ult i8 %x, 13
3965 %b = icmp eq i8 %x, 17
3970 ; x <u 13 || x != 17
3972 define i1 @or_ult_ne(i8 %x) {
3973 ; CHECK-LABEL: @or_ult_ne(
3974 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
3975 ; CHECK-NEXT: ret i1 [[B]]
3977 %a = icmp ult i8 %x, 13
3978 %b = icmp ne i8 %x, 17
3983 ; x <u 13 || x >=s 17
3985 define i1 @or_ult_sge(i8 %x) {
3986 ; CHECK-LABEL: @or_ult_sge(
3987 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 13
3988 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
3989 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
3990 ; CHECK-NEXT: ret i1 [[C]]
3992 %a = icmp ult i8 %x, 13
3993 %b = icmp sge i8 %x, 17
3998 ; x <u 13 || x >s 17
4000 define i1 @or_ult_sgt(i8 %x) {
4001 ; CHECK-LABEL: @or_ult_sgt(
4002 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 13
4003 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
4004 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4005 ; CHECK-NEXT: ret i1 [[C]]
4007 %a = icmp ult i8 %x, 13
4008 %b = icmp sgt i8 %x, 17
4013 ; x <u 13 || x <=s 17
4015 define i1 @or_ult_sle(i8 %x) {
4016 ; CHECK-LABEL: @or_ult_sle(
4017 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
4018 ; CHECK-NEXT: ret i1 [[B]]
4020 %a = icmp ult i8 %x, 13
4021 %b = icmp sle i8 %x, 17
4026 ; x <u 13 || x <s 17
4028 define i1 @or_ult_slt(i8 %x) {
4029 ; CHECK-LABEL: @or_ult_slt(
4030 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
4031 ; CHECK-NEXT: ret i1 [[B]]
4033 %a = icmp ult i8 %x, 13
4034 %b = icmp slt i8 %x, 17
4039 ; x <u 13 || x >=u 17
4041 define i1 @or_ult_uge(i8 %x) {
4042 ; CHECK-LABEL: @or_ult_uge(
4043 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 13
4044 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
4045 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4046 ; CHECK-NEXT: ret i1 [[C]]
4048 %a = icmp ult i8 %x, 13
4049 %b = icmp uge i8 %x, 17
4054 ; x <u 13 || x >u 17
4056 define i1 @or_ult_ugt(i8 %x) {
4057 ; CHECK-LABEL: @or_ult_ugt(
4058 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 13
4059 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
4060 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4061 ; CHECK-NEXT: ret i1 [[C]]
4063 %a = icmp ult i8 %x, 13
4064 %b = icmp ugt i8 %x, 17
4069 ; x <u 13 || x <=u 17
4071 define i1 @or_ult_ule(i8 %x) {
4072 ; CHECK-LABEL: @or_ult_ule(
4073 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
4074 ; CHECK-NEXT: ret i1 [[B]]
4076 %a = icmp ult i8 %x, 13
4077 %b = icmp ule i8 %x, 17
4082 ; x <u 13 || x <u 17
4084 define i1 @or_ult_ult(i8 %x) {
4085 ; CHECK-LABEL: @or_ult_ult(
4086 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
4087 ; CHECK-NEXT: ret i1 [[B]]
4089 %a = icmp ult i8 %x, 13
4090 %b = icmp ult i8 %x, 17
4096 ; x == 23 || x == 17
4098 define i1 @or_eq_eq_swap(i8 %x) {
4099 ; CHECK-LABEL: @or_eq_eq_swap(
4100 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 23
4101 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
4102 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4103 ; CHECK-NEXT: ret i1 [[C]]
4105 %a = icmp eq i8 %x, 23
4106 %b = icmp eq i8 %x, 17
4111 ; x == 23 || x != 17
4113 define i1 @or_eq_ne_swap(i8 %x) {
4114 ; CHECK-LABEL: @or_eq_ne_swap(
4115 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
4116 ; CHECK-NEXT: ret i1 [[B]]
4118 %a = icmp eq i8 %x, 23
4119 %b = icmp ne i8 %x, 17
4124 ; x == 23 || x >=s 17
4126 define i1 @or_eq_sge_swap(i8 %x) {
4127 ; CHECK-LABEL: @or_eq_sge_swap(
4128 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
4129 ; CHECK-NEXT: ret i1 [[B]]
4131 %a = icmp eq i8 %x, 23
4132 %b = icmp sge i8 %x, 17
4137 ; x == 23 || x >s 17
4139 define i1 @or_eq_sgt_swap(i8 %x) {
4140 ; CHECK-LABEL: @or_eq_sgt_swap(
4141 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
4142 ; CHECK-NEXT: ret i1 [[B]]
4144 %a = icmp eq i8 %x, 23
4145 %b = icmp sgt i8 %x, 17
4150 ; x == 23 || x <=s 17
4152 define i1 @or_eq_sle_swap(i8 %x) {
4153 ; CHECK-LABEL: @or_eq_sle_swap(
4154 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 23
4155 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
4156 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4157 ; CHECK-NEXT: ret i1 [[C]]
4159 %a = icmp eq i8 %x, 23
4160 %b = icmp sle i8 %x, 17
4165 ; x == 23 || x <s 17
4167 define i1 @or_eq_slt_swap(i8 %x) {
4168 ; CHECK-LABEL: @or_eq_slt_swap(
4169 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 23
4170 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
4171 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4172 ; CHECK-NEXT: ret i1 [[C]]
4174 %a = icmp eq i8 %x, 23
4175 %b = icmp slt i8 %x, 17
4180 ; x == 23 || x >=u 17
4182 define i1 @or_eq_uge_swap(i8 %x) {
4183 ; CHECK-LABEL: @or_eq_uge_swap(
4184 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
4185 ; CHECK-NEXT: ret i1 [[B]]
4187 %a = icmp eq i8 %x, 23
4188 %b = icmp uge i8 %x, 17
4193 ; x == 23 || x >u 17
4195 define i1 @or_eq_ugt_swap(i8 %x) {
4196 ; CHECK-LABEL: @or_eq_ugt_swap(
4197 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
4198 ; CHECK-NEXT: ret i1 [[B]]
4200 %a = icmp eq i8 %x, 23
4201 %b = icmp ugt i8 %x, 17
4206 ; x == 23 || x <=u 17
4208 define i1 @or_eq_ule_swap(i8 %x) {
4209 ; CHECK-LABEL: @or_eq_ule_swap(
4210 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 23
4211 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
4212 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4213 ; CHECK-NEXT: ret i1 [[C]]
4215 %a = icmp eq i8 %x, 23
4216 %b = icmp ule i8 %x, 17
4221 ; x == 23 || x <u 17
4223 define i1 @or_eq_ult_swap(i8 %x) {
4224 ; CHECK-LABEL: @or_eq_ult_swap(
4225 ; CHECK-NEXT: [[A:%.*]] = icmp eq i8 %x, 23
4226 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
4227 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4228 ; CHECK-NEXT: ret i1 [[C]]
4230 %a = icmp eq i8 %x, 23
4231 %b = icmp ult i8 %x, 17
4237 ; x != 23 || x == 17
4239 define i1 @or_ne_eq_swap(i8 %x) {
4240 ; CHECK-LABEL: @or_ne_eq_swap(
4241 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 23
4242 ; CHECK-NEXT: ret i1 [[A]]
4244 %a = icmp ne i8 %x, 23
4245 %b = icmp eq i8 %x, 17
4250 ; x != 23 || x != 17
4252 define i1 @or_ne_ne_swap(i8 %x) {
4253 ; CHECK-LABEL: @or_ne_ne_swap(
4254 ; CHECK-NEXT: ret i1 true
4256 %a = icmp ne i8 %x, 23
4257 %b = icmp ne i8 %x, 17
4262 ; x != 23 || x >=s 17
4264 define i1 @or_ne_sge_swap(i8 %x) {
4265 ; CHECK-LABEL: @or_ne_sge_swap(
4266 ; CHECK-NEXT: ret i1 true
4268 %a = icmp ne i8 %x, 23
4269 %b = icmp sge i8 %x, 17
4274 ; x != 23 || x >s 17
4276 define i1 @or_ne_sgt_swap(i8 %x) {
4277 ; CHECK-LABEL: @or_ne_sgt_swap(
4278 ; CHECK-NEXT: ret i1 true
4280 %a = icmp ne i8 %x, 23
4281 %b = icmp sgt i8 %x, 17
4286 ; x != 23 || x <=s 17
4288 define i1 @or_ne_sle_swap(i8 %x) {
4289 ; CHECK-LABEL: @or_ne_sle_swap(
4290 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 23
4291 ; CHECK-NEXT: ret i1 [[A]]
4293 %a = icmp ne i8 %x, 23
4294 %b = icmp sle i8 %x, 17
4299 ; x != 23 || x <s 17
4301 define i1 @or_ne_slt_swap(i8 %x) {
4302 ; CHECK-LABEL: @or_ne_slt_swap(
4303 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 23
4304 ; CHECK-NEXT: ret i1 [[A]]
4306 %a = icmp ne i8 %x, 23
4307 %b = icmp slt i8 %x, 17
4312 ; x != 23 || x >=u 17
4314 define i1 @or_ne_uge_swap(i8 %x) {
4315 ; CHECK-LABEL: @or_ne_uge_swap(
4316 ; CHECK-NEXT: ret i1 true
4318 %a = icmp ne i8 %x, 23
4319 %b = icmp uge i8 %x, 17
4324 ; x != 23 || x >u 17
4326 define i1 @or_ne_ugt_swap(i8 %x) {
4327 ; CHECK-LABEL: @or_ne_ugt_swap(
4328 ; CHECK-NEXT: ret i1 true
4330 %a = icmp ne i8 %x, 23
4331 %b = icmp ugt i8 %x, 17
4336 ; x != 23 || x <=u 17
4338 define i1 @or_ne_ule_swap(i8 %x) {
4339 ; CHECK-LABEL: @or_ne_ule_swap(
4340 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 23
4341 ; CHECK-NEXT: ret i1 [[A]]
4343 %a = icmp ne i8 %x, 23
4344 %b = icmp ule i8 %x, 17
4349 ; x != 23 || x <u 17
4351 define i1 @or_ne_ult_swap(i8 %x) {
4352 ; CHECK-LABEL: @or_ne_ult_swap(
4353 ; CHECK-NEXT: [[A:%.*]] = icmp ne i8 %x, 23
4354 ; CHECK-NEXT: ret i1 [[A]]
4356 %a = icmp ne i8 %x, 23
4357 %b = icmp ult i8 %x, 17
4363 ; x >=s 23 || x == 17
4365 define i1 @or_sge_eq_swap(i8 %x) {
4366 ; CHECK-LABEL: @or_sge_eq_swap(
4367 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 23
4368 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
4369 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4370 ; CHECK-NEXT: ret i1 [[C]]
4372 %a = icmp sge i8 %x, 23
4373 %b = icmp eq i8 %x, 17
4378 ; x >=s 23 || x != 17
4380 define i1 @or_sge_ne_swap(i8 %x) {
4381 ; CHECK-LABEL: @or_sge_ne_swap(
4382 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
4383 ; CHECK-NEXT: ret i1 [[B]]
4385 %a = icmp sge i8 %x, 23
4386 %b = icmp ne i8 %x, 17
4391 ; x >=s 23 || x >=s 17
4393 define i1 @or_sge_sge_swap(i8 %x) {
4394 ; CHECK-LABEL: @or_sge_sge_swap(
4395 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
4396 ; CHECK-NEXT: ret i1 [[B]]
4398 %a = icmp sge i8 %x, 23
4399 %b = icmp sge i8 %x, 17
4404 ; x >=s 23 || x >s 17
4406 define i1 @or_sge_sgt_swap(i8 %x) {
4407 ; CHECK-LABEL: @or_sge_sgt_swap(
4408 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
4409 ; CHECK-NEXT: ret i1 [[B]]
4411 %a = icmp sge i8 %x, 23
4412 %b = icmp sgt i8 %x, 17
4417 ; x >=s 23 || x <=s 17
4419 define i1 @or_sge_sle_swap(i8 %x) {
4420 ; CHECK-LABEL: @or_sge_sle_swap(
4421 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 23
4422 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
4423 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4424 ; CHECK-NEXT: ret i1 [[C]]
4426 %a = icmp sge i8 %x, 23
4427 %b = icmp sle i8 %x, 17
4432 ; x >=s 23 || x <s 17
4434 define i1 @or_sge_slt_swap(i8 %x) {
4435 ; CHECK-LABEL: @or_sge_slt_swap(
4436 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 23
4437 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
4438 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4439 ; CHECK-NEXT: ret i1 [[C]]
4441 %a = icmp sge i8 %x, 23
4442 %b = icmp slt i8 %x, 17
4447 ; x >=s 23 || x >=u 17
4449 define i1 @or_sge_uge_swap(i8 %x) {
4450 ; CHECK-LABEL: @or_sge_uge_swap(
4451 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
4452 ; CHECK-NEXT: ret i1 [[B]]
4454 %a = icmp sge i8 %x, 23
4455 %b = icmp uge i8 %x, 17
4460 ; x >=s 23 || x >u 17
4462 define i1 @or_sge_ugt_swap(i8 %x) {
4463 ; CHECK-LABEL: @or_sge_ugt_swap(
4464 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
4465 ; CHECK-NEXT: ret i1 [[B]]
4467 %a = icmp sge i8 %x, 23
4468 %b = icmp ugt i8 %x, 17
4473 ; x >=s 23 || x <=u 17
4475 define i1 @or_sge_ule_swap(i8 %x) {
4476 ; CHECK-LABEL: @or_sge_ule_swap(
4477 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 23
4478 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
4479 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4480 ; CHECK-NEXT: ret i1 [[C]]
4482 %a = icmp sge i8 %x, 23
4483 %b = icmp ule i8 %x, 17
4488 ; x >=s 23 || x <u 17
4490 define i1 @or_sge_ult_swap(i8 %x) {
4491 ; CHECK-LABEL: @or_sge_ult_swap(
4492 ; CHECK-NEXT: [[A:%.*]] = icmp sge i8 %x, 23
4493 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
4494 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4495 ; CHECK-NEXT: ret i1 [[C]]
4497 %a = icmp sge i8 %x, 23
4498 %b = icmp ult i8 %x, 17
4504 ; x >s 23 || x == 17
4506 define i1 @or_sgt_eq_swap(i8 %x) {
4507 ; CHECK-LABEL: @or_sgt_eq_swap(
4508 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 23
4509 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
4510 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4511 ; CHECK-NEXT: ret i1 [[C]]
4513 %a = icmp sgt i8 %x, 23
4514 %b = icmp eq i8 %x, 17
4519 ; x >s 23 || x != 17
4521 define i1 @or_sgt_ne_swap(i8 %x) {
4522 ; CHECK-LABEL: @or_sgt_ne_swap(
4523 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
4524 ; CHECK-NEXT: ret i1 [[B]]
4526 %a = icmp sgt i8 %x, 23
4527 %b = icmp ne i8 %x, 17
4532 ; x >s 23 || x >=s 17
4534 define i1 @or_sgt_sge_swap(i8 %x) {
4535 ; CHECK-LABEL: @or_sgt_sge_swap(
4536 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
4537 ; CHECK-NEXT: ret i1 [[B]]
4539 %a = icmp sgt i8 %x, 23
4540 %b = icmp sge i8 %x, 17
4545 ; x >s 23 || x >s 17
4547 define i1 @or_sgt_sgt_swap(i8 %x) {
4548 ; CHECK-LABEL: @or_sgt_sgt_swap(
4549 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
4550 ; CHECK-NEXT: ret i1 [[B]]
4552 %a = icmp sgt i8 %x, 23
4553 %b = icmp sgt i8 %x, 17
4558 ; x >s 23 || x <=s 17
4560 define i1 @or_sgt_sle_swap(i8 %x) {
4561 ; CHECK-LABEL: @or_sgt_sle_swap(
4562 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 23
4563 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
4564 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4565 ; CHECK-NEXT: ret i1 [[C]]
4567 %a = icmp sgt i8 %x, 23
4568 %b = icmp sle i8 %x, 17
4573 ; x >s 23 || x <s 17
4575 define i1 @or_sgt_slt_swap(i8 %x) {
4576 ; CHECK-LABEL: @or_sgt_slt_swap(
4577 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 23
4578 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
4579 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4580 ; CHECK-NEXT: ret i1 [[C]]
4582 %a = icmp sgt i8 %x, 23
4583 %b = icmp slt i8 %x, 17
4588 ; x >s 23 || x >=u 17
4590 define i1 @or_sgt_uge_swap(i8 %x) {
4591 ; CHECK-LABEL: @or_sgt_uge_swap(
4592 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
4593 ; CHECK-NEXT: ret i1 [[B]]
4595 %a = icmp sgt i8 %x, 23
4596 %b = icmp uge i8 %x, 17
4601 ; x >s 23 || x >u 17
4603 define i1 @or_sgt_ugt_swap(i8 %x) {
4604 ; CHECK-LABEL: @or_sgt_ugt_swap(
4605 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
4606 ; CHECK-NEXT: ret i1 [[B]]
4608 %a = icmp sgt i8 %x, 23
4609 %b = icmp ugt i8 %x, 17
4614 ; x >s 23 || x <=u 17
4616 define i1 @or_sgt_ule_swap(i8 %x) {
4617 ; CHECK-LABEL: @or_sgt_ule_swap(
4618 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 23
4619 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
4620 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4621 ; CHECK-NEXT: ret i1 [[C]]
4623 %a = icmp sgt i8 %x, 23
4624 %b = icmp ule i8 %x, 17
4629 ; x >s 23 || x <u 17
4631 define i1 @or_sgt_ult_swap(i8 %x) {
4632 ; CHECK-LABEL: @or_sgt_ult_swap(
4633 ; CHECK-NEXT: [[A:%.*]] = icmp sgt i8 %x, 23
4634 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
4635 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4636 ; CHECK-NEXT: ret i1 [[C]]
4638 %a = icmp sgt i8 %x, 23
4639 %b = icmp ult i8 %x, 17
4645 ; x <=s 23 || x == 17
4647 define i1 @or_sle_eq_swap(i8 %x) {
4648 ; CHECK-LABEL: @or_sle_eq_swap(
4649 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 23
4650 ; CHECK-NEXT: ret i1 [[A]]
4652 %a = icmp sle i8 %x, 23
4653 %b = icmp eq i8 %x, 17
4658 ; x <=s 23 || x != 17
4660 define i1 @or_sle_ne_swap(i8 %x) {
4661 ; CHECK-LABEL: @or_sle_ne_swap(
4662 ; CHECK-NEXT: ret i1 true
4664 %a = icmp sle i8 %x, 23
4665 %b = icmp ne i8 %x, 17
4670 ; x <=s 23 || x >=s 17
4672 define i1 @or_sle_sge_swap(i8 %x) {
4673 ; CHECK-LABEL: @or_sle_sge_swap(
4674 ; CHECK-NEXT: ret i1 true
4676 %a = icmp sle i8 %x, 23
4677 %b = icmp sge i8 %x, 17
4682 ; x <=s 23 || x >s 17
4684 define i1 @or_sle_sgt_swap(i8 %x) {
4685 ; CHECK-LABEL: @or_sle_sgt_swap(
4686 ; CHECK-NEXT: ret i1 true
4688 %a = icmp sle i8 %x, 23
4689 %b = icmp sgt i8 %x, 17
4694 ; x <=s 23 || x <=s 17
4696 define i1 @or_sle_sle_swap(i8 %x) {
4697 ; CHECK-LABEL: @or_sle_sle_swap(
4698 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 23
4699 ; CHECK-NEXT: ret i1 [[A]]
4701 %a = icmp sle i8 %x, 23
4702 %b = icmp sle i8 %x, 17
4707 ; x <=s 23 || x <s 17
4709 define i1 @or_sle_slt_swap(i8 %x) {
4710 ; CHECK-LABEL: @or_sle_slt_swap(
4711 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 23
4712 ; CHECK-NEXT: ret i1 [[A]]
4714 %a = icmp sle i8 %x, 23
4715 %b = icmp slt i8 %x, 17
4720 ; x <=s 23 || x >=u 17
4722 define i1 @or_sle_uge_swap(i8 %x) {
4723 ; CHECK-LABEL: @or_sle_uge_swap(
4724 ; CHECK-NEXT: ret i1 true
4726 %a = icmp sle i8 %x, 23
4727 %b = icmp uge i8 %x, 17
4732 ; x <=s 23 || x >u 17
4734 define i1 @or_sle_ugt_swap(i8 %x) {
4735 ; CHECK-LABEL: @or_sle_ugt_swap(
4736 ; CHECK-NEXT: ret i1 true
4738 %a = icmp sle i8 %x, 23
4739 %b = icmp ugt i8 %x, 17
4744 ; x <=s 23 || x <=u 17
4746 define i1 @or_sle_ule_swap(i8 %x) {
4747 ; CHECK-LABEL: @or_sle_ule_swap(
4748 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 23
4749 ; CHECK-NEXT: ret i1 [[A]]
4751 %a = icmp sle i8 %x, 23
4752 %b = icmp ule i8 %x, 17
4757 ; x <=s 23 || x <u 17
4759 define i1 @or_sle_ult_swap(i8 %x) {
4760 ; CHECK-LABEL: @or_sle_ult_swap(
4761 ; CHECK-NEXT: [[A:%.*]] = icmp sle i8 %x, 23
4762 ; CHECK-NEXT: ret i1 [[A]]
4764 %a = icmp sle i8 %x, 23
4765 %b = icmp ult i8 %x, 17
4771 ; x <s 23 || x == 17
4773 define i1 @or_slt_eq_swap(i8 %x) {
4774 ; CHECK-LABEL: @or_slt_eq_swap(
4775 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 23
4776 ; CHECK-NEXT: ret i1 [[A]]
4778 %a = icmp slt i8 %x, 23
4779 %b = icmp eq i8 %x, 17
4784 ; x <s 23 || x != 17
4786 define i1 @or_slt_ne_swap(i8 %x) {
4787 ; CHECK-LABEL: @or_slt_ne_swap(
4788 ; CHECK-NEXT: ret i1 true
4790 %a = icmp slt i8 %x, 23
4791 %b = icmp ne i8 %x, 17
4796 ; x <s 23 || x >=s 17
4798 define i1 @or_slt_sge_swap(i8 %x) {
4799 ; CHECK-LABEL: @or_slt_sge_swap(
4800 ; CHECK-NEXT: ret i1 true
4802 %a = icmp slt i8 %x, 23
4803 %b = icmp sge i8 %x, 17
4808 ; x <s 23 || x >s 17
4810 define i1 @or_slt_sgt_swap(i8 %x) {
4811 ; CHECK-LABEL: @or_slt_sgt_swap(
4812 ; CHECK-NEXT: ret i1 true
4814 %a = icmp slt i8 %x, 23
4815 %b = icmp sgt i8 %x, 17
4820 ; x <s 23 || x <=s 17
4822 define i1 @or_slt_sle_swap(i8 %x) {
4823 ; CHECK-LABEL: @or_slt_sle_swap(
4824 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 23
4825 ; CHECK-NEXT: ret i1 [[A]]
4827 %a = icmp slt i8 %x, 23
4828 %b = icmp sle i8 %x, 17
4833 ; x <s 23 || x <s 17
4835 define i1 @or_slt_slt_swap(i8 %x) {
4836 ; CHECK-LABEL: @or_slt_slt_swap(
4837 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 23
4838 ; CHECK-NEXT: ret i1 [[A]]
4840 %a = icmp slt i8 %x, 23
4841 %b = icmp slt i8 %x, 17
4846 ; x <s 23 || x >=u 17
4848 define i1 @or_slt_uge_swap(i8 %x) {
4849 ; CHECK-LABEL: @or_slt_uge_swap(
4850 ; CHECK-NEXT: ret i1 true
4852 %a = icmp slt i8 %x, 23
4853 %b = icmp uge i8 %x, 17
4858 ; x <s 23 || x >u 17
4860 define i1 @or_slt_ugt_swap(i8 %x) {
4861 ; CHECK-LABEL: @or_slt_ugt_swap(
4862 ; CHECK-NEXT: ret i1 true
4864 %a = icmp slt i8 %x, 23
4865 %b = icmp ugt i8 %x, 17
4870 ; x <s 23 || x <=u 17
4872 define i1 @or_slt_ule_swap(i8 %x) {
4873 ; CHECK-LABEL: @or_slt_ule_swap(
4874 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 23
4875 ; CHECK-NEXT: ret i1 [[A]]
4877 %a = icmp slt i8 %x, 23
4878 %b = icmp ule i8 %x, 17
4883 ; x <s 23 || x <u 17
4885 define i1 @or_slt_ult_swap(i8 %x) {
4886 ; CHECK-LABEL: @or_slt_ult_swap(
4887 ; CHECK-NEXT: [[A:%.*]] = icmp slt i8 %x, 23
4888 ; CHECK-NEXT: ret i1 [[A]]
4890 %a = icmp slt i8 %x, 23
4891 %b = icmp ult i8 %x, 17
4897 ; x >=u 23 || x == 17
4899 define i1 @or_uge_eq_swap(i8 %x) {
4900 ; CHECK-LABEL: @or_uge_eq_swap(
4901 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
4902 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
4903 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4904 ; CHECK-NEXT: ret i1 [[C]]
4906 %a = icmp uge i8 %x, 23
4907 %b = icmp eq i8 %x, 17
4912 ; x >=u 23 || x != 17
4914 define i1 @or_uge_ne_swap(i8 %x) {
4915 ; CHECK-LABEL: @or_uge_ne_swap(
4916 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
4917 ; CHECK-NEXT: ret i1 [[B]]
4919 %a = icmp uge i8 %x, 23
4920 %b = icmp ne i8 %x, 17
4925 ; x >=u 23 || x >=s 17
4927 define i1 @or_uge_sge_swap(i8 %x) {
4928 ; CHECK-LABEL: @or_uge_sge_swap(
4929 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
4930 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
4931 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4932 ; CHECK-NEXT: ret i1 [[C]]
4934 %a = icmp uge i8 %x, 23
4935 %b = icmp sge i8 %x, 17
4940 ; x >=u 23 || x >s 17
4942 define i1 @or_uge_sgt_swap(i8 %x) {
4943 ; CHECK-LABEL: @or_uge_sgt_swap(
4944 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
4945 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
4946 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4947 ; CHECK-NEXT: ret i1 [[C]]
4949 %a = icmp uge i8 %x, 23
4950 %b = icmp sgt i8 %x, 17
4955 ; x >=u 23 || x <=s 17
4957 define i1 @or_uge_sle_swap(i8 %x) {
4958 ; CHECK-LABEL: @or_uge_sle_swap(
4959 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
4960 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
4961 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4962 ; CHECK-NEXT: ret i1 [[C]]
4964 %a = icmp uge i8 %x, 23
4965 %b = icmp sle i8 %x, 17
4970 ; x >=u 23 || x <s 17
4972 define i1 @or_uge_slt_swap(i8 %x) {
4973 ; CHECK-LABEL: @or_uge_slt_swap(
4974 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
4975 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
4976 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
4977 ; CHECK-NEXT: ret i1 [[C]]
4979 %a = icmp uge i8 %x, 23
4980 %b = icmp slt i8 %x, 17
4985 ; x >=u 23 || x >=u 17
4987 define i1 @or_uge_uge_swap(i8 %x) {
4988 ; CHECK-LABEL: @or_uge_uge_swap(
4989 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
4990 ; CHECK-NEXT: ret i1 [[B]]
4992 %a = icmp uge i8 %x, 23
4993 %b = icmp uge i8 %x, 17
4998 ; x >=u 23 || x >u 17
5000 define i1 @or_uge_ugt_swap(i8 %x) {
5001 ; CHECK-LABEL: @or_uge_ugt_swap(
5002 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
5003 ; CHECK-NEXT: ret i1 [[B]]
5005 %a = icmp uge i8 %x, 23
5006 %b = icmp ugt i8 %x, 17
5011 ; x >=u 23 || x <=u 17
5013 define i1 @or_uge_ule_swap(i8 %x) {
5014 ; CHECK-LABEL: @or_uge_ule_swap(
5015 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
5016 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
5017 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5018 ; CHECK-NEXT: ret i1 [[C]]
5020 %a = icmp uge i8 %x, 23
5021 %b = icmp ule i8 %x, 17
5026 ; x >=u 23 || x <u 17
5028 define i1 @or_uge_ult_swap(i8 %x) {
5029 ; CHECK-LABEL: @or_uge_ult_swap(
5030 ; CHECK-NEXT: [[A:%.*]] = icmp uge i8 %x, 23
5031 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
5032 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5033 ; CHECK-NEXT: ret i1 [[C]]
5035 %a = icmp uge i8 %x, 23
5036 %b = icmp ult i8 %x, 17
5042 ; x >u 23 || x == 17
5044 define i1 @or_ugt_eq_swap(i8 %x) {
5045 ; CHECK-LABEL: @or_ugt_eq_swap(
5046 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
5047 ; CHECK-NEXT: [[B:%.*]] = icmp eq i8 %x, 17
5048 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5049 ; CHECK-NEXT: ret i1 [[C]]
5051 %a = icmp ugt i8 %x, 23
5052 %b = icmp eq i8 %x, 17
5057 ; x >u 23 || x != 17
5059 define i1 @or_ugt_ne_swap(i8 %x) {
5060 ; CHECK-LABEL: @or_ugt_ne_swap(
5061 ; CHECK-NEXT: [[B:%.*]] = icmp ne i8 %x, 17
5062 ; CHECK-NEXT: ret i1 [[B]]
5064 %a = icmp ugt i8 %x, 23
5065 %b = icmp ne i8 %x, 17
5070 ; x >u 23 || x >=s 17
5072 define i1 @or_ugt_sge_swap(i8 %x) {
5073 ; CHECK-LABEL: @or_ugt_sge_swap(
5074 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
5075 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
5076 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5077 ; CHECK-NEXT: ret i1 [[C]]
5079 %a = icmp ugt i8 %x, 23
5080 %b = icmp sge i8 %x, 17
5085 ; x >u 23 || x >s 17
5087 define i1 @or_ugt_sgt_swap(i8 %x) {
5088 ; CHECK-LABEL: @or_ugt_sgt_swap(
5089 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
5090 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
5091 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5092 ; CHECK-NEXT: ret i1 [[C]]
5094 %a = icmp ugt i8 %x, 23
5095 %b = icmp sgt i8 %x, 17
5100 ; x >u 23 || x <=s 17
5102 define i1 @or_ugt_sle_swap(i8 %x) {
5103 ; CHECK-LABEL: @or_ugt_sle_swap(
5104 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
5105 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
5106 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5107 ; CHECK-NEXT: ret i1 [[C]]
5109 %a = icmp ugt i8 %x, 23
5110 %b = icmp sle i8 %x, 17
5115 ; x >u 23 || x <s 17
5117 define i1 @or_ugt_slt_swap(i8 %x) {
5118 ; CHECK-LABEL: @or_ugt_slt_swap(
5119 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
5120 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
5121 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5122 ; CHECK-NEXT: ret i1 [[C]]
5124 %a = icmp ugt i8 %x, 23
5125 %b = icmp slt i8 %x, 17
5130 ; x >u 23 || x >=u 17
5132 define i1 @or_ugt_uge_swap(i8 %x) {
5133 ; CHECK-LABEL: @or_ugt_uge_swap(
5134 ; CHECK-NEXT: [[B:%.*]] = icmp uge i8 %x, 17
5135 ; CHECK-NEXT: ret i1 [[B]]
5137 %a = icmp ugt i8 %x, 23
5138 %b = icmp uge i8 %x, 17
5143 ; x >u 23 || x >u 17
5145 define i1 @or_ugt_ugt_swap(i8 %x) {
5146 ; CHECK-LABEL: @or_ugt_ugt_swap(
5147 ; CHECK-NEXT: [[B:%.*]] = icmp ugt i8 %x, 17
5148 ; CHECK-NEXT: ret i1 [[B]]
5150 %a = icmp ugt i8 %x, 23
5151 %b = icmp ugt i8 %x, 17
5156 ; x >u 23 || x <=u 17
5158 define i1 @or_ugt_ule_swap(i8 %x) {
5159 ; CHECK-LABEL: @or_ugt_ule_swap(
5160 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
5161 ; CHECK-NEXT: [[B:%.*]] = icmp ule i8 %x, 17
5162 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5163 ; CHECK-NEXT: ret i1 [[C]]
5165 %a = icmp ugt i8 %x, 23
5166 %b = icmp ule i8 %x, 17
5171 ; x >u 23 || x <u 17
5173 define i1 @or_ugt_ult_swap(i8 %x) {
5174 ; CHECK-LABEL: @or_ugt_ult_swap(
5175 ; CHECK-NEXT: [[A:%.*]] = icmp ugt i8 %x, 23
5176 ; CHECK-NEXT: [[B:%.*]] = icmp ult i8 %x, 17
5177 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5178 ; CHECK-NEXT: ret i1 [[C]]
5180 %a = icmp ugt i8 %x, 23
5181 %b = icmp ult i8 %x, 17
5187 ; x <=u 23 || x == 17
5189 define i1 @or_ule_eq_swap(i8 %x) {
5190 ; CHECK-LABEL: @or_ule_eq_swap(
5191 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
5192 ; CHECK-NEXT: ret i1 [[A]]
5194 %a = icmp ule i8 %x, 23
5195 %b = icmp eq i8 %x, 17
5200 ; x <=u 23 || x != 17
5202 define i1 @or_ule_ne_swap(i8 %x) {
5203 ; CHECK-LABEL: @or_ule_ne_swap(
5204 ; CHECK-NEXT: ret i1 true
5206 %a = icmp ule i8 %x, 23
5207 %b = icmp ne i8 %x, 17
5212 ; x <=u 23 || x >=s 17
5214 define i1 @or_ule_sge_swap(i8 %x) {
5215 ; CHECK-LABEL: @or_ule_sge_swap(
5216 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
5217 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
5218 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5219 ; CHECK-NEXT: ret i1 [[C]]
5221 %a = icmp ule i8 %x, 23
5222 %b = icmp sge i8 %x, 17
5227 ; x <=u 23 || x >s 17
5229 define i1 @or_ule_sgt_swap(i8 %x) {
5230 ; CHECK-LABEL: @or_ule_sgt_swap(
5231 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
5232 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
5233 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5234 ; CHECK-NEXT: ret i1 [[C]]
5236 %a = icmp ule i8 %x, 23
5237 %b = icmp sgt i8 %x, 17
5242 ; x <=u 23 || x <=s 17
5244 define i1 @or_ule_sle_swap(i8 %x) {
5245 ; CHECK-LABEL: @or_ule_sle_swap(
5246 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
5247 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
5248 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5249 ; CHECK-NEXT: ret i1 [[C]]
5251 %a = icmp ule i8 %x, 23
5252 %b = icmp sle i8 %x, 17
5257 ; x <=u 23 || x <s 17
5259 define i1 @or_ule_slt_swap(i8 %x) {
5260 ; CHECK-LABEL: @or_ule_slt_swap(
5261 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
5262 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
5263 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5264 ; CHECK-NEXT: ret i1 [[C]]
5266 %a = icmp ule i8 %x, 23
5267 %b = icmp slt i8 %x, 17
5272 ; x <=u 23 || x >=u 17
5274 define i1 @or_ule_uge_swap(i8 %x) {
5275 ; CHECK-LABEL: @or_ule_uge_swap(
5276 ; CHECK-NEXT: ret i1 true
5278 %a = icmp ule i8 %x, 23
5279 %b = icmp uge i8 %x, 17
5284 ; x <=u 23 || x >u 17
5286 define i1 @or_ule_ugt_swap(i8 %x) {
5287 ; CHECK-LABEL: @or_ule_ugt_swap(
5288 ; CHECK-NEXT: ret i1 true
5290 %a = icmp ule i8 %x, 23
5291 %b = icmp ugt i8 %x, 17
5296 ; x <=u 23 || x <=u 17
5298 define i1 @or_ule_ule_swap(i8 %x) {
5299 ; CHECK-LABEL: @or_ule_ule_swap(
5300 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
5301 ; CHECK-NEXT: ret i1 [[A]]
5303 %a = icmp ule i8 %x, 23
5304 %b = icmp ule i8 %x, 17
5309 ; x <=u 23 || x <u 17
5311 define i1 @or_ule_ult_swap(i8 %x) {
5312 ; CHECK-LABEL: @or_ule_ult_swap(
5313 ; CHECK-NEXT: [[A:%.*]] = icmp ule i8 %x, 23
5314 ; CHECK-NEXT: ret i1 [[A]]
5316 %a = icmp ule i8 %x, 23
5317 %b = icmp ult i8 %x, 17
5323 ; x <u 23 || x == 17
5325 define i1 @or_ult_eq_swap(i8 %x) {
5326 ; CHECK-LABEL: @or_ult_eq_swap(
5327 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
5328 ; CHECK-NEXT: ret i1 [[A]]
5330 %a = icmp ult i8 %x, 23
5331 %b = icmp eq i8 %x, 17
5336 ; x <u 23 || x != 17
5338 define i1 @or_ult_ne_swap(i8 %x) {
5339 ; CHECK-LABEL: @or_ult_ne_swap(
5340 ; CHECK-NEXT: ret i1 true
5342 %a = icmp ult i8 %x, 23
5343 %b = icmp ne i8 %x, 17
5348 ; x <u 23 || x >=s 17
5350 define i1 @or_ult_sge_swap(i8 %x) {
5351 ; CHECK-LABEL: @or_ult_sge_swap(
5352 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
5353 ; CHECK-NEXT: [[B:%.*]] = icmp sge i8 %x, 17
5354 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5355 ; CHECK-NEXT: ret i1 [[C]]
5357 %a = icmp ult i8 %x, 23
5358 %b = icmp sge i8 %x, 17
5363 ; x <u 23 || x >s 17
5365 define i1 @or_ult_sgt_swap(i8 %x) {
5366 ; CHECK-LABEL: @or_ult_sgt_swap(
5367 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
5368 ; CHECK-NEXT: [[B:%.*]] = icmp sgt i8 %x, 17
5369 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5370 ; CHECK-NEXT: ret i1 [[C]]
5372 %a = icmp ult i8 %x, 23
5373 %b = icmp sgt i8 %x, 17
5378 ; x <u 23 || x <=s 17
5380 define i1 @or_ult_sle_swap(i8 %x) {
5381 ; CHECK-LABEL: @or_ult_sle_swap(
5382 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
5383 ; CHECK-NEXT: [[B:%.*]] = icmp sle i8 %x, 17
5384 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5385 ; CHECK-NEXT: ret i1 [[C]]
5387 %a = icmp ult i8 %x, 23
5388 %b = icmp sle i8 %x, 17
5393 ; x <u 23 || x <s 17
5395 define i1 @or_ult_slt_swap(i8 %x) {
5396 ; CHECK-LABEL: @or_ult_slt_swap(
5397 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
5398 ; CHECK-NEXT: [[B:%.*]] = icmp slt i8 %x, 17
5399 ; CHECK-NEXT: [[C:%.*]] = or i1 [[A]], [[B]]
5400 ; CHECK-NEXT: ret i1 [[C]]
5402 %a = icmp ult i8 %x, 23
5403 %b = icmp slt i8 %x, 17
5408 ; x <u 23 || x >=u 17
5410 define i1 @or_ult_uge_swap(i8 %x) {
5411 ; CHECK-LABEL: @or_ult_uge_swap(
5412 ; CHECK-NEXT: ret i1 true
5414 %a = icmp ult i8 %x, 23
5415 %b = icmp uge i8 %x, 17
5420 ; x <u 23 || x >u 17
5422 define i1 @or_ult_ugt_swap(i8 %x) {
5423 ; CHECK-LABEL: @or_ult_ugt_swap(
5424 ; CHECK-NEXT: ret i1 true
5426 %a = icmp ult i8 %x, 23
5427 %b = icmp ugt i8 %x, 17
5432 ; x <u 23 || x <=u 17
5434 define i1 @or_ult_ule_swap(i8 %x) {
5435 ; CHECK-LABEL: @or_ult_ule_swap(
5436 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
5437 ; CHECK-NEXT: ret i1 [[A]]
5439 %a = icmp ult i8 %x, 23
5440 %b = icmp ule i8 %x, 17
5445 ; x <u 23 || x <u 17
5447 define i1 @or_ult_ult_swap(i8 %x) {
5448 ; CHECK-LABEL: @or_ult_ult_swap(
5449 ; CHECK-NEXT: [[A:%.*]] = icmp ult i8 %x, 23
5450 ; CHECK-NEXT: ret i1 [[A]]
5452 %a = icmp ult i8 %x, 23
5453 %b = icmp ult i8 %x, 17
5458 ; Special case - slt is uge
5461 define i1 @empty2(i32 %x) {
5462 ; CHECK-LABEL: @empty2(
5463 ; CHECK-NEXT: ret i1 false
5465 %a = icmp ult i32 %x, 31
5466 %b = icmp slt i32 %x, 0