1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -instcombine -S | FileCheck %s
4 define i1 @lshrugt_01_00(i4 %x) {
5 ; CHECK-LABEL: @lshrugt_01_00(
6 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 1
7 ; CHECK-NEXT: ret i1 [[C]]
10 %c = icmp ugt i4 %s, 0
14 define i1 @lshrugt_01_01(i4 %x) {
15 ; CHECK-LABEL: @lshrugt_01_01(
16 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 3
17 ; CHECK-NEXT: ret i1 [[C]]
20 %c = icmp ugt i4 %s, 1
24 define i1 @lshrugt_01_02(i4 %x) {
25 ; CHECK-LABEL: @lshrugt_01_02(
26 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 5
27 ; CHECK-NEXT: ret i1 [[C]]
30 %c = icmp ugt i4 %s, 2
34 define i1 @lshrugt_01_03(i4 %x) {
35 ; CHECK-LABEL: @lshrugt_01_03(
36 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
37 ; CHECK-NEXT: ret i1 [[C]]
40 %c = icmp ugt i4 %s, 3
44 define i1 @lshrugt_01_04(i4 %x) {
45 ; CHECK-LABEL: @lshrugt_01_04(
46 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], -7
47 ; CHECK-NEXT: ret i1 [[C]]
50 %c = icmp ugt i4 %s, 4
54 define i1 @lshrugt_01_05(i4 %x) {
55 ; CHECK-LABEL: @lshrugt_01_05(
56 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], -5
57 ; CHECK-NEXT: ret i1 [[C]]
60 %c = icmp ugt i4 %s, 5
64 define i1 @lshrugt_01_06(i4 %x) {
65 ; CHECK-LABEL: @lshrugt_01_06(
66 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], -3
67 ; CHECK-NEXT: ret i1 [[C]]
70 %c = icmp ugt i4 %s, 6
74 define i1 @lshrugt_01_07(i4 %x) {
75 ; CHECK-LABEL: @lshrugt_01_07(
76 ; CHECK-NEXT: ret i1 false
79 %c = icmp ugt i4 %s, 7
83 define i1 @lshrugt_01_08(i4 %x) {
84 ; CHECK-LABEL: @lshrugt_01_08(
85 ; CHECK-NEXT: ret i1 false
88 %c = icmp ugt i4 %s, 8
92 define i1 @lshrugt_01_09(i4 %x) {
93 ; CHECK-LABEL: @lshrugt_01_09(
94 ; CHECK-NEXT: ret i1 false
97 %c = icmp ugt i4 %s, 9
101 define i1 @lshrugt_01_10(i4 %x) {
102 ; CHECK-LABEL: @lshrugt_01_10(
103 ; CHECK-NEXT: ret i1 false
106 %c = icmp ugt i4 %s, 10
110 define i1 @lshrugt_01_11(i4 %x) {
111 ; CHECK-LABEL: @lshrugt_01_11(
112 ; CHECK-NEXT: ret i1 false
115 %c = icmp ugt i4 %s, 11
119 define i1 @lshrugt_01_12(i4 %x) {
120 ; CHECK-LABEL: @lshrugt_01_12(
121 ; CHECK-NEXT: ret i1 false
124 %c = icmp ugt i4 %s, 12
128 define i1 @lshrugt_01_13(i4 %x) {
129 ; CHECK-LABEL: @lshrugt_01_13(
130 ; CHECK-NEXT: ret i1 false
133 %c = icmp ugt i4 %s, 13
137 define i1 @lshrugt_01_14(i4 %x) {
138 ; CHECK-LABEL: @lshrugt_01_14(
139 ; CHECK-NEXT: ret i1 false
142 %c = icmp ugt i4 %s, 14
146 define i1 @lshrugt_01_15(i4 %x) {
147 ; CHECK-LABEL: @lshrugt_01_15(
148 ; CHECK-NEXT: ret i1 false
151 %c = icmp ugt i4 %s, 15
155 define i1 @lshrugt_02_00(i4 %x) {
156 ; CHECK-LABEL: @lshrugt_02_00(
157 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 3
158 ; CHECK-NEXT: ret i1 [[C]]
161 %c = icmp ugt i4 %s, 0
165 define i1 @lshrugt_02_01(i4 %x) {
166 ; CHECK-LABEL: @lshrugt_02_01(
167 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
168 ; CHECK-NEXT: ret i1 [[C]]
171 %c = icmp ugt i4 %s, 1
175 define i1 @lshrugt_02_02(i4 %x) {
176 ; CHECK-LABEL: @lshrugt_02_02(
177 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], -5
178 ; CHECK-NEXT: ret i1 [[C]]
181 %c = icmp ugt i4 %s, 2
185 define i1 @lshrugt_02_03(i4 %x) {
186 ; CHECK-LABEL: @lshrugt_02_03(
187 ; CHECK-NEXT: ret i1 false
190 %c = icmp ugt i4 %s, 3
194 define i1 @lshrugt_02_04(i4 %x) {
195 ; CHECK-LABEL: @lshrugt_02_04(
196 ; CHECK-NEXT: ret i1 false
199 %c = icmp ugt i4 %s, 4
203 define i1 @lshrugt_02_05(i4 %x) {
204 ; CHECK-LABEL: @lshrugt_02_05(
205 ; CHECK-NEXT: ret i1 false
208 %c = icmp ugt i4 %s, 5
212 define i1 @lshrugt_02_06(i4 %x) {
213 ; CHECK-LABEL: @lshrugt_02_06(
214 ; CHECK-NEXT: ret i1 false
217 %c = icmp ugt i4 %s, 6
221 define i1 @lshrugt_02_07(i4 %x) {
222 ; CHECK-LABEL: @lshrugt_02_07(
223 ; CHECK-NEXT: ret i1 false
226 %c = icmp ugt i4 %s, 7
230 define i1 @lshrugt_02_08(i4 %x) {
231 ; CHECK-LABEL: @lshrugt_02_08(
232 ; CHECK-NEXT: ret i1 false
235 %c = icmp ugt i4 %s, 8
239 define i1 @lshrugt_02_09(i4 %x) {
240 ; CHECK-LABEL: @lshrugt_02_09(
241 ; CHECK-NEXT: ret i1 false
244 %c = icmp ugt i4 %s, 9
248 define i1 @lshrugt_02_10(i4 %x) {
249 ; CHECK-LABEL: @lshrugt_02_10(
250 ; CHECK-NEXT: ret i1 false
253 %c = icmp ugt i4 %s, 10
257 define i1 @lshrugt_02_11(i4 %x) {
258 ; CHECK-LABEL: @lshrugt_02_11(
259 ; CHECK-NEXT: ret i1 false
262 %c = icmp ugt i4 %s, 11
266 define i1 @lshrugt_02_12(i4 %x) {
267 ; CHECK-LABEL: @lshrugt_02_12(
268 ; CHECK-NEXT: ret i1 false
271 %c = icmp ugt i4 %s, 12
275 define i1 @lshrugt_02_13(i4 %x) {
276 ; CHECK-LABEL: @lshrugt_02_13(
277 ; CHECK-NEXT: ret i1 false
280 %c = icmp ugt i4 %s, 13
284 define i1 @lshrugt_02_14(i4 %x) {
285 ; CHECK-LABEL: @lshrugt_02_14(
286 ; CHECK-NEXT: ret i1 false
289 %c = icmp ugt i4 %s, 14
293 define i1 @lshrugt_02_15(i4 %x) {
294 ; CHECK-LABEL: @lshrugt_02_15(
295 ; CHECK-NEXT: ret i1 false
298 %c = icmp ugt i4 %s, 15
302 define i1 @lshrugt_03_00(i4 %x) {
303 ; CHECK-LABEL: @lshrugt_03_00(
304 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
305 ; CHECK-NEXT: ret i1 [[C]]
308 %c = icmp ugt i4 %s, 0
312 define i1 @lshrugt_03_01(i4 %x) {
313 ; CHECK-LABEL: @lshrugt_03_01(
314 ; CHECK-NEXT: ret i1 false
317 %c = icmp ugt i4 %s, 1
321 define i1 @lshrugt_03_02(i4 %x) {
322 ; CHECK-LABEL: @lshrugt_03_02(
323 ; CHECK-NEXT: ret i1 false
326 %c = icmp ugt i4 %s, 2
330 define i1 @lshrugt_03_03(i4 %x) {
331 ; CHECK-LABEL: @lshrugt_03_03(
332 ; CHECK-NEXT: ret i1 false
335 %c = icmp ugt i4 %s, 3
339 define i1 @lshrugt_03_04(i4 %x) {
340 ; CHECK-LABEL: @lshrugt_03_04(
341 ; CHECK-NEXT: ret i1 false
344 %c = icmp ugt i4 %s, 4
348 define i1 @lshrugt_03_05(i4 %x) {
349 ; CHECK-LABEL: @lshrugt_03_05(
350 ; CHECK-NEXT: ret i1 false
353 %c = icmp ugt i4 %s, 5
357 define i1 @lshrugt_03_06(i4 %x) {
358 ; CHECK-LABEL: @lshrugt_03_06(
359 ; CHECK-NEXT: ret i1 false
362 %c = icmp ugt i4 %s, 6
366 define i1 @lshrugt_03_07(i4 %x) {
367 ; CHECK-LABEL: @lshrugt_03_07(
368 ; CHECK-NEXT: ret i1 false
371 %c = icmp ugt i4 %s, 7
375 define i1 @lshrugt_03_08(i4 %x) {
376 ; CHECK-LABEL: @lshrugt_03_08(
377 ; CHECK-NEXT: ret i1 false
380 %c = icmp ugt i4 %s, 8
384 define i1 @lshrugt_03_09(i4 %x) {
385 ; CHECK-LABEL: @lshrugt_03_09(
386 ; CHECK-NEXT: ret i1 false
389 %c = icmp ugt i4 %s, 9
393 define i1 @lshrugt_03_10(i4 %x) {
394 ; CHECK-LABEL: @lshrugt_03_10(
395 ; CHECK-NEXT: ret i1 false
398 %c = icmp ugt i4 %s, 10
402 define i1 @lshrugt_03_11(i4 %x) {
403 ; CHECK-LABEL: @lshrugt_03_11(
404 ; CHECK-NEXT: ret i1 false
407 %c = icmp ugt i4 %s, 11
411 define i1 @lshrugt_03_12(i4 %x) {
412 ; CHECK-LABEL: @lshrugt_03_12(
413 ; CHECK-NEXT: ret i1 false
416 %c = icmp ugt i4 %s, 12
420 define i1 @lshrugt_03_13(i4 %x) {
421 ; CHECK-LABEL: @lshrugt_03_13(
422 ; CHECK-NEXT: ret i1 false
425 %c = icmp ugt i4 %s, 13
429 define i1 @lshrugt_03_14(i4 %x) {
430 ; CHECK-LABEL: @lshrugt_03_14(
431 ; CHECK-NEXT: ret i1 false
434 %c = icmp ugt i4 %s, 14
438 define i1 @lshrugt_03_15(i4 %x) {
439 ; CHECK-LABEL: @lshrugt_03_15(
440 ; CHECK-NEXT: ret i1 false
443 %c = icmp ugt i4 %s, 15
447 define i1 @lshrult_01_00(i4 %x) {
448 ; CHECK-LABEL: @lshrult_01_00(
449 ; CHECK-NEXT: ret i1 false
452 %c = icmp ult i4 %s, 0
456 define i1 @lshrult_01_01(i4 %x) {
457 ; CHECK-LABEL: @lshrult_01_01(
458 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], 2
459 ; CHECK-NEXT: ret i1 [[C]]
462 %c = icmp ult i4 %s, 1
466 define i1 @lshrult_01_02(i4 %x) {
467 ; CHECK-LABEL: @lshrult_01_02(
468 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], 4
469 ; CHECK-NEXT: ret i1 [[C]]
472 %c = icmp ult i4 %s, 2
476 define i1 @lshrult_01_03(i4 %x) {
477 ; CHECK-LABEL: @lshrult_01_03(
478 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], 6
479 ; CHECK-NEXT: ret i1 [[C]]
482 %c = icmp ult i4 %s, 3
486 define i1 @lshrult_01_04(i4 %x) {
487 ; CHECK-LABEL: @lshrult_01_04(
488 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
489 ; CHECK-NEXT: ret i1 [[C]]
492 %c = icmp ult i4 %s, 4
496 define i1 @lshrult_01_05(i4 %x) {
497 ; CHECK-LABEL: @lshrult_01_05(
498 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], -6
499 ; CHECK-NEXT: ret i1 [[C]]
502 %c = icmp ult i4 %s, 5
506 define i1 @lshrult_01_06(i4 %x) {
507 ; CHECK-LABEL: @lshrult_01_06(
508 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], -4
509 ; CHECK-NEXT: ret i1 [[C]]
512 %c = icmp ult i4 %s, 6
516 define i1 @lshrult_01_07(i4 %x) {
517 ; CHECK-LABEL: @lshrult_01_07(
518 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], -2
519 ; CHECK-NEXT: ret i1 [[C]]
522 %c = icmp ult i4 %s, 7
526 define i1 @lshrult_01_08(i4 %x) {
527 ; CHECK-LABEL: @lshrult_01_08(
528 ; CHECK-NEXT: ret i1 true
531 %c = icmp ult i4 %s, 8
535 define i1 @lshrult_01_09(i4 %x) {
536 ; CHECK-LABEL: @lshrult_01_09(
537 ; CHECK-NEXT: ret i1 true
540 %c = icmp ult i4 %s, 9
544 define i1 @lshrult_01_10(i4 %x) {
545 ; CHECK-LABEL: @lshrult_01_10(
546 ; CHECK-NEXT: ret i1 true
549 %c = icmp ult i4 %s, 10
553 define i1 @lshrult_01_11(i4 %x) {
554 ; CHECK-LABEL: @lshrult_01_11(
555 ; CHECK-NEXT: ret i1 true
558 %c = icmp ult i4 %s, 11
562 define i1 @lshrult_01_12(i4 %x) {
563 ; CHECK-LABEL: @lshrult_01_12(
564 ; CHECK-NEXT: ret i1 true
567 %c = icmp ult i4 %s, 12
571 define i1 @lshrult_01_13(i4 %x) {
572 ; CHECK-LABEL: @lshrult_01_13(
573 ; CHECK-NEXT: ret i1 true
576 %c = icmp ult i4 %s, 13
580 define i1 @lshrult_01_14(i4 %x) {
581 ; CHECK-LABEL: @lshrult_01_14(
582 ; CHECK-NEXT: ret i1 true
585 %c = icmp ult i4 %s, 14
589 define i1 @lshrult_01_15(i4 %x) {
590 ; CHECK-LABEL: @lshrult_01_15(
591 ; CHECK-NEXT: ret i1 true
594 %c = icmp ult i4 %s, 15
598 define i1 @lshrult_02_00(i4 %x) {
599 ; CHECK-LABEL: @lshrult_02_00(
600 ; CHECK-NEXT: ret i1 false
603 %c = icmp ult i4 %s, 0
607 define i1 @lshrult_02_01(i4 %x) {
608 ; CHECK-LABEL: @lshrult_02_01(
609 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], 4
610 ; CHECK-NEXT: ret i1 [[C]]
613 %c = icmp ult i4 %s, 1
617 define i1 @lshrult_02_02(i4 %x) {
618 ; CHECK-LABEL: @lshrult_02_02(
619 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
620 ; CHECK-NEXT: ret i1 [[C]]
623 %c = icmp ult i4 %s, 2
627 define i1 @lshrult_02_03(i4 %x) {
628 ; CHECK-LABEL: @lshrult_02_03(
629 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], -4
630 ; CHECK-NEXT: ret i1 [[C]]
633 %c = icmp ult i4 %s, 3
637 define i1 @lshrult_02_04(i4 %x) {
638 ; CHECK-LABEL: @lshrult_02_04(
639 ; CHECK-NEXT: ret i1 true
642 %c = icmp ult i4 %s, 4
646 define i1 @lshrult_02_05(i4 %x) {
647 ; CHECK-LABEL: @lshrult_02_05(
648 ; CHECK-NEXT: ret i1 true
651 %c = icmp ult i4 %s, 5
655 define i1 @lshrult_02_06(i4 %x) {
656 ; CHECK-LABEL: @lshrult_02_06(
657 ; CHECK-NEXT: ret i1 true
660 %c = icmp ult i4 %s, 6
664 define i1 @lshrult_02_07(i4 %x) {
665 ; CHECK-LABEL: @lshrult_02_07(
666 ; CHECK-NEXT: ret i1 true
669 %c = icmp ult i4 %s, 7
673 define i1 @lshrult_02_08(i4 %x) {
674 ; CHECK-LABEL: @lshrult_02_08(
675 ; CHECK-NEXT: ret i1 true
678 %c = icmp ult i4 %s, 8
682 define i1 @lshrult_02_09(i4 %x) {
683 ; CHECK-LABEL: @lshrult_02_09(
684 ; CHECK-NEXT: ret i1 true
687 %c = icmp ult i4 %s, 9
691 define i1 @lshrult_02_10(i4 %x) {
692 ; CHECK-LABEL: @lshrult_02_10(
693 ; CHECK-NEXT: ret i1 true
696 %c = icmp ult i4 %s, 10
700 define i1 @lshrult_02_11(i4 %x) {
701 ; CHECK-LABEL: @lshrult_02_11(
702 ; CHECK-NEXT: ret i1 true
705 %c = icmp ult i4 %s, 11
709 define i1 @lshrult_02_12(i4 %x) {
710 ; CHECK-LABEL: @lshrult_02_12(
711 ; CHECK-NEXT: ret i1 true
714 %c = icmp ult i4 %s, 12
718 define i1 @lshrult_02_13(i4 %x) {
719 ; CHECK-LABEL: @lshrult_02_13(
720 ; CHECK-NEXT: ret i1 true
723 %c = icmp ult i4 %s, 13
727 define i1 @lshrult_02_14(i4 %x) {
728 ; CHECK-LABEL: @lshrult_02_14(
729 ; CHECK-NEXT: ret i1 true
732 %c = icmp ult i4 %s, 14
736 define i1 @lshrult_02_15(i4 %x) {
737 ; CHECK-LABEL: @lshrult_02_15(
738 ; CHECK-NEXT: ret i1 true
741 %c = icmp ult i4 %s, 15
745 define i1 @lshrult_03_00(i4 %x) {
746 ; CHECK-LABEL: @lshrult_03_00(
747 ; CHECK-NEXT: ret i1 false
750 %c = icmp ult i4 %s, 0
754 define i1 @lshrult_03_01(i4 %x) {
755 ; CHECK-LABEL: @lshrult_03_01(
756 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
757 ; CHECK-NEXT: ret i1 [[C]]
760 %c = icmp ult i4 %s, 1
764 define i1 @lshrult_03_02(i4 %x) {
765 ; CHECK-LABEL: @lshrult_03_02(
766 ; CHECK-NEXT: ret i1 true
769 %c = icmp ult i4 %s, 2
773 define i1 @lshrult_03_03(i4 %x) {
774 ; CHECK-LABEL: @lshrult_03_03(
775 ; CHECK-NEXT: ret i1 true
778 %c = icmp ult i4 %s, 3
782 define i1 @lshrult_03_04(i4 %x) {
783 ; CHECK-LABEL: @lshrult_03_04(
784 ; CHECK-NEXT: ret i1 true
787 %c = icmp ult i4 %s, 4
791 define i1 @lshrult_03_05(i4 %x) {
792 ; CHECK-LABEL: @lshrult_03_05(
793 ; CHECK-NEXT: ret i1 true
796 %c = icmp ult i4 %s, 5
800 define i1 @lshrult_03_06(i4 %x) {
801 ; CHECK-LABEL: @lshrult_03_06(
802 ; CHECK-NEXT: ret i1 true
805 %c = icmp ult i4 %s, 6
809 define i1 @lshrult_03_07(i4 %x) {
810 ; CHECK-LABEL: @lshrult_03_07(
811 ; CHECK-NEXT: ret i1 true
814 %c = icmp ult i4 %s, 7
818 define i1 @lshrult_03_08(i4 %x) {
819 ; CHECK-LABEL: @lshrult_03_08(
820 ; CHECK-NEXT: ret i1 true
823 %c = icmp ult i4 %s, 8
827 define i1 @lshrult_03_09(i4 %x) {
828 ; CHECK-LABEL: @lshrult_03_09(
829 ; CHECK-NEXT: ret i1 true
832 %c = icmp ult i4 %s, 9
836 define i1 @lshrult_03_10(i4 %x) {
837 ; CHECK-LABEL: @lshrult_03_10(
838 ; CHECK-NEXT: ret i1 true
841 %c = icmp ult i4 %s, 10
845 define i1 @lshrult_03_11(i4 %x) {
846 ; CHECK-LABEL: @lshrult_03_11(
847 ; CHECK-NEXT: ret i1 true
850 %c = icmp ult i4 %s, 11
854 define i1 @lshrult_03_12(i4 %x) {
855 ; CHECK-LABEL: @lshrult_03_12(
856 ; CHECK-NEXT: ret i1 true
859 %c = icmp ult i4 %s, 12
863 define i1 @lshrult_03_13(i4 %x) {
864 ; CHECK-LABEL: @lshrult_03_13(
865 ; CHECK-NEXT: ret i1 true
868 %c = icmp ult i4 %s, 13
872 define i1 @lshrult_03_14(i4 %x) {
873 ; CHECK-LABEL: @lshrult_03_14(
874 ; CHECK-NEXT: ret i1 true
877 %c = icmp ult i4 %s, 14
881 define i1 @lshrult_03_15(i4 %x) {
882 ; CHECK-LABEL: @lshrult_03_15(
883 ; CHECK-NEXT: ret i1 true
886 %c = icmp ult i4 %s, 15
890 define i1 @ashrsgt_01_00(i4 %x) {
891 ; CHECK-LABEL: @ashrsgt_01_00(
892 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 1
893 ; CHECK-NEXT: ret i1 [[C]]
896 %c = icmp sgt i4 %s, 0
900 define i1 @ashrsgt_01_01(i4 %x) {
901 ; CHECK-LABEL: @ashrsgt_01_01(
902 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 3
903 ; CHECK-NEXT: ret i1 [[C]]
906 %c = icmp sgt i4 %s, 1
910 define i1 @ashrsgt_01_02(i4 %x) {
911 ; CHECK-LABEL: @ashrsgt_01_02(
912 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 5
913 ; CHECK-NEXT: ret i1 [[C]]
916 %c = icmp sgt i4 %s, 2
920 define i1 @ashrsgt_01_03(i4 %x) {
921 ; CHECK-LABEL: @ashrsgt_01_03(
922 ; CHECK-NEXT: ret i1 false
925 %c = icmp sgt i4 %s, 3
929 define i1 @ashrsgt_01_04(i4 %x) {
930 ; CHECK-LABEL: @ashrsgt_01_04(
931 ; CHECK-NEXT: ret i1 false
934 %c = icmp sgt i4 %s, 4
938 define i1 @ashrsgt_01_05(i4 %x) {
939 ; CHECK-LABEL: @ashrsgt_01_05(
940 ; CHECK-NEXT: ret i1 false
943 %c = icmp sgt i4 %s, 5
947 define i1 @ashrsgt_01_06(i4 %x) {
948 ; CHECK-LABEL: @ashrsgt_01_06(
949 ; CHECK-NEXT: ret i1 false
952 %c = icmp sgt i4 %s, 6
956 define i1 @ashrsgt_01_07(i4 %x) {
957 ; CHECK-LABEL: @ashrsgt_01_07(
958 ; CHECK-NEXT: ret i1 false
961 %c = icmp sgt i4 %s, 7
965 define i1 @ashrsgt_01_08(i4 %x) {
966 ; CHECK-LABEL: @ashrsgt_01_08(
967 ; CHECK-NEXT: ret i1 true
970 %c = icmp sgt i4 %s, 8
974 define i1 @ashrsgt_01_09(i4 %x) {
975 ; CHECK-LABEL: @ashrsgt_01_09(
976 ; CHECK-NEXT: ret i1 true
979 %c = icmp sgt i4 %s, 9
983 define i1 @ashrsgt_01_10(i4 %x) {
984 ; CHECK-LABEL: @ashrsgt_01_10(
985 ; CHECK-NEXT: ret i1 true
988 %c = icmp sgt i4 %s, 10
992 define i1 @ashrsgt_01_11(i4 %x) {
993 ; CHECK-LABEL: @ashrsgt_01_11(
994 ; CHECK-NEXT: ret i1 true
997 %c = icmp sgt i4 %s, 11
1001 define i1 @ashrsgt_01_12(i4 %x) {
1002 ; CHECK-LABEL: @ashrsgt_01_12(
1003 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -7
1004 ; CHECK-NEXT: ret i1 [[C]]
1007 %c = icmp sgt i4 %s, 12
1011 define i1 @ashrsgt_01_13(i4 %x) {
1012 ; CHECK-LABEL: @ashrsgt_01_13(
1013 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -5
1014 ; CHECK-NEXT: ret i1 [[C]]
1017 %c = icmp sgt i4 %s, 13
1021 define i1 @ashrsgt_01_14(i4 %x) {
1022 ; CHECK-LABEL: @ashrsgt_01_14(
1023 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -3
1024 ; CHECK-NEXT: ret i1 [[C]]
1027 %c = icmp sgt i4 %s, 14
1031 define i1 @ashrsgt_01_15(i4 %x) {
1032 ; CHECK-LABEL: @ashrsgt_01_15(
1033 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
1034 ; CHECK-NEXT: ret i1 [[C]]
1037 %c = icmp sgt i4 %s, 15
1041 define i1 @ashrsgt_02_00(i4 %x) {
1042 ; CHECK-LABEL: @ashrsgt_02_00(
1043 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 3
1044 ; CHECK-NEXT: ret i1 [[C]]
1047 %c = icmp sgt i4 %s, 0
1051 define i1 @ashrsgt_02_01(i4 %x) {
1052 ; CHECK-LABEL: @ashrsgt_02_01(
1053 ; CHECK-NEXT: ret i1 false
1056 %c = icmp sgt i4 %s, 1
1060 define i1 @ashrsgt_02_02(i4 %x) {
1061 ; CHECK-LABEL: @ashrsgt_02_02(
1062 ; CHECK-NEXT: ret i1 false
1065 %c = icmp sgt i4 %s, 2
1069 define i1 @ashrsgt_02_03(i4 %x) {
1070 ; CHECK-LABEL: @ashrsgt_02_03(
1071 ; CHECK-NEXT: ret i1 false
1074 %c = icmp sgt i4 %s, 3
1078 define i1 @ashrsgt_02_04(i4 %x) {
1079 ; CHECK-LABEL: @ashrsgt_02_04(
1080 ; CHECK-NEXT: ret i1 false
1083 %c = icmp sgt i4 %s, 4
1087 define i1 @ashrsgt_02_05(i4 %x) {
1088 ; CHECK-LABEL: @ashrsgt_02_05(
1089 ; CHECK-NEXT: ret i1 false
1092 %c = icmp sgt i4 %s, 5
1096 define i1 @ashrsgt_02_06(i4 %x) {
1097 ; CHECK-LABEL: @ashrsgt_02_06(
1098 ; CHECK-NEXT: ret i1 false
1101 %c = icmp sgt i4 %s, 6
1105 define i1 @ashrsgt_02_07(i4 %x) {
1106 ; CHECK-LABEL: @ashrsgt_02_07(
1107 ; CHECK-NEXT: ret i1 false
1110 %c = icmp sgt i4 %s, 7
1114 define i1 @ashrsgt_02_08(i4 %x) {
1115 ; CHECK-LABEL: @ashrsgt_02_08(
1116 ; CHECK-NEXT: ret i1 true
1119 %c = icmp sgt i4 %s, 8
1123 define i1 @ashrsgt_02_09(i4 %x) {
1124 ; CHECK-LABEL: @ashrsgt_02_09(
1125 ; CHECK-NEXT: ret i1 true
1128 %c = icmp sgt i4 %s, 9
1132 define i1 @ashrsgt_02_10(i4 %x) {
1133 ; CHECK-LABEL: @ashrsgt_02_10(
1134 ; CHECK-NEXT: ret i1 true
1137 %c = icmp sgt i4 %s, 10
1141 define i1 @ashrsgt_02_11(i4 %x) {
1142 ; CHECK-LABEL: @ashrsgt_02_11(
1143 ; CHECK-NEXT: ret i1 true
1146 %c = icmp sgt i4 %s, 11
1150 define i1 @ashrsgt_02_12(i4 %x) {
1151 ; CHECK-LABEL: @ashrsgt_02_12(
1152 ; CHECK-NEXT: ret i1 true
1155 %c = icmp sgt i4 %s, 12
1159 define i1 @ashrsgt_02_13(i4 %x) {
1160 ; CHECK-LABEL: @ashrsgt_02_13(
1161 ; CHECK-NEXT: ret i1 true
1164 %c = icmp sgt i4 %s, 13
1168 define i1 @ashrsgt_02_14(i4 %x) {
1169 ; CHECK-LABEL: @ashrsgt_02_14(
1170 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -5
1171 ; CHECK-NEXT: ret i1 [[C]]
1174 %c = icmp sgt i4 %s, 14
1178 define i1 @ashrsgt_02_15(i4 %x) {
1179 ; CHECK-LABEL: @ashrsgt_02_15(
1180 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
1181 ; CHECK-NEXT: ret i1 [[C]]
1184 %c = icmp sgt i4 %s, 15
1188 define i1 @ashrsgt_03_00(i4 %x) {
1189 ; CHECK-LABEL: @ashrsgt_03_00(
1190 ; CHECK-NEXT: ret i1 false
1193 %c = icmp sgt i4 %s, 0
1197 define i1 @ashrsgt_03_01(i4 %x) {
1198 ; CHECK-LABEL: @ashrsgt_03_01(
1199 ; CHECK-NEXT: ret i1 false
1202 %c = icmp sgt i4 %s, 1
1206 define i1 @ashrsgt_03_02(i4 %x) {
1207 ; CHECK-LABEL: @ashrsgt_03_02(
1208 ; CHECK-NEXT: ret i1 false
1211 %c = icmp sgt i4 %s, 2
1215 define i1 @ashrsgt_03_03(i4 %x) {
1216 ; CHECK-LABEL: @ashrsgt_03_03(
1217 ; CHECK-NEXT: ret i1 false
1220 %c = icmp sgt i4 %s, 3
1224 define i1 @ashrsgt_03_04(i4 %x) {
1225 ; CHECK-LABEL: @ashrsgt_03_04(
1226 ; CHECK-NEXT: ret i1 false
1229 %c = icmp sgt i4 %s, 4
1233 define i1 @ashrsgt_03_05(i4 %x) {
1234 ; CHECK-LABEL: @ashrsgt_03_05(
1235 ; CHECK-NEXT: ret i1 false
1238 %c = icmp sgt i4 %s, 5
1242 define i1 @ashrsgt_03_06(i4 %x) {
1243 ; CHECK-LABEL: @ashrsgt_03_06(
1244 ; CHECK-NEXT: ret i1 false
1247 %c = icmp sgt i4 %s, 6
1251 define i1 @ashrsgt_03_07(i4 %x) {
1252 ; CHECK-LABEL: @ashrsgt_03_07(
1253 ; CHECK-NEXT: ret i1 false
1256 %c = icmp sgt i4 %s, 7
1260 define i1 @ashrsgt_03_08(i4 %x) {
1261 ; CHECK-LABEL: @ashrsgt_03_08(
1262 ; CHECK-NEXT: ret i1 true
1265 %c = icmp sgt i4 %s, 8
1269 define i1 @ashrsgt_03_09(i4 %x) {
1270 ; CHECK-LABEL: @ashrsgt_03_09(
1271 ; CHECK-NEXT: ret i1 true
1274 %c = icmp sgt i4 %s, 9
1278 define i1 @ashrsgt_03_10(i4 %x) {
1279 ; CHECK-LABEL: @ashrsgt_03_10(
1280 ; CHECK-NEXT: ret i1 true
1283 %c = icmp sgt i4 %s, 10
1287 define i1 @ashrsgt_03_11(i4 %x) {
1288 ; CHECK-LABEL: @ashrsgt_03_11(
1289 ; CHECK-NEXT: ret i1 true
1292 %c = icmp sgt i4 %s, 11
1296 define i1 @ashrsgt_03_12(i4 %x) {
1297 ; CHECK-LABEL: @ashrsgt_03_12(
1298 ; CHECK-NEXT: ret i1 true
1301 %c = icmp sgt i4 %s, 12
1305 define i1 @ashrsgt_03_13(i4 %x) {
1306 ; CHECK-LABEL: @ashrsgt_03_13(
1307 ; CHECK-NEXT: ret i1 true
1310 %c = icmp sgt i4 %s, 13
1314 define i1 @ashrsgt_03_14(i4 %x) {
1315 ; CHECK-LABEL: @ashrsgt_03_14(
1316 ; CHECK-NEXT: ret i1 true
1319 %c = icmp sgt i4 %s, 14
1323 define i1 @ashrsgt_03_15(i4 %x) {
1324 ; CHECK-LABEL: @ashrsgt_03_15(
1325 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
1326 ; CHECK-NEXT: ret i1 [[C]]
1329 %c = icmp sgt i4 %s, 15
1333 define i1 @ashrslt_01_00(i4 %x) {
1334 ; CHECK-LABEL: @ashrslt_01_00(
1335 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
1336 ; CHECK-NEXT: ret i1 [[C]]
1339 %c = icmp slt i4 %s, 0
1343 define i1 @ashrslt_01_01(i4 %x) {
1344 ; CHECK-LABEL: @ashrslt_01_01(
1345 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 2
1346 ; CHECK-NEXT: ret i1 [[C]]
1349 %c = icmp slt i4 %s, 1
1353 define i1 @ashrslt_01_02(i4 %x) {
1354 ; CHECK-LABEL: @ashrslt_01_02(
1355 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 4
1356 ; CHECK-NEXT: ret i1 [[C]]
1359 %c = icmp slt i4 %s, 2
1363 define i1 @ashrslt_01_03(i4 %x) {
1364 ; CHECK-LABEL: @ashrslt_01_03(
1365 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 6
1366 ; CHECK-NEXT: ret i1 [[C]]
1369 %c = icmp slt i4 %s, 3
1373 define i1 @ashrslt_01_04(i4 %x) {
1374 ; CHECK-LABEL: @ashrslt_01_04(
1375 ; CHECK-NEXT: ret i1 true
1378 %c = icmp slt i4 %s, 4
1382 define i1 @ashrslt_01_05(i4 %x) {
1383 ; CHECK-LABEL: @ashrslt_01_05(
1384 ; CHECK-NEXT: ret i1 true
1387 %c = icmp slt i4 %s, 5
1391 define i1 @ashrslt_01_06(i4 %x) {
1392 ; CHECK-LABEL: @ashrslt_01_06(
1393 ; CHECK-NEXT: ret i1 true
1396 %c = icmp slt i4 %s, 6
1400 define i1 @ashrslt_01_07(i4 %x) {
1401 ; CHECK-LABEL: @ashrslt_01_07(
1402 ; CHECK-NEXT: ret i1 true
1405 %c = icmp slt i4 %s, 7
1409 define i1 @ashrslt_01_08(i4 %x) {
1410 ; CHECK-LABEL: @ashrslt_01_08(
1411 ; CHECK-NEXT: ret i1 false
1414 %c = icmp slt i4 %s, 8
1418 define i1 @ashrslt_01_09(i4 %x) {
1419 ; CHECK-LABEL: @ashrslt_01_09(
1420 ; CHECK-NEXT: ret i1 false
1423 %c = icmp slt i4 %s, 9
1427 define i1 @ashrslt_01_10(i4 %x) {
1428 ; CHECK-LABEL: @ashrslt_01_10(
1429 ; CHECK-NEXT: ret i1 false
1432 %c = icmp slt i4 %s, 10
1436 define i1 @ashrslt_01_11(i4 %x) {
1437 ; CHECK-LABEL: @ashrslt_01_11(
1438 ; CHECK-NEXT: ret i1 false
1441 %c = icmp slt i4 %s, 11
1445 define i1 @ashrslt_01_12(i4 %x) {
1446 ; CHECK-LABEL: @ashrslt_01_12(
1447 ; CHECK-NEXT: ret i1 false
1450 %c = icmp slt i4 %s, 12
1454 define i1 @ashrslt_01_13(i4 %x) {
1455 ; CHECK-LABEL: @ashrslt_01_13(
1456 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -6
1457 ; CHECK-NEXT: ret i1 [[C]]
1460 %c = icmp slt i4 %s, 13
1464 define i1 @ashrslt_01_14(i4 %x) {
1465 ; CHECK-LABEL: @ashrslt_01_14(
1466 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -4
1467 ; CHECK-NEXT: ret i1 [[C]]
1470 %c = icmp slt i4 %s, 14
1474 define i1 @ashrslt_01_15(i4 %x) {
1475 ; CHECK-LABEL: @ashrslt_01_15(
1476 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -2
1477 ; CHECK-NEXT: ret i1 [[C]]
1480 %c = icmp slt i4 %s, 15
1484 define i1 @ashrslt_02_00(i4 %x) {
1485 ; CHECK-LABEL: @ashrslt_02_00(
1486 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
1487 ; CHECK-NEXT: ret i1 [[C]]
1490 %c = icmp slt i4 %s, 0
1494 define i1 @ashrslt_02_01(i4 %x) {
1495 ; CHECK-LABEL: @ashrslt_02_01(
1496 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 4
1497 ; CHECK-NEXT: ret i1 [[C]]
1500 %c = icmp slt i4 %s, 1
1504 define i1 @ashrslt_02_02(i4 %x) {
1505 ; CHECK-LABEL: @ashrslt_02_02(
1506 ; CHECK-NEXT: ret i1 true
1509 %c = icmp slt i4 %s, 2
1513 define i1 @ashrslt_02_03(i4 %x) {
1514 ; CHECK-LABEL: @ashrslt_02_03(
1515 ; CHECK-NEXT: ret i1 true
1518 %c = icmp slt i4 %s, 3
1522 define i1 @ashrslt_02_04(i4 %x) {
1523 ; CHECK-LABEL: @ashrslt_02_04(
1524 ; CHECK-NEXT: ret i1 true
1527 %c = icmp slt i4 %s, 4
1531 define i1 @ashrslt_02_05(i4 %x) {
1532 ; CHECK-LABEL: @ashrslt_02_05(
1533 ; CHECK-NEXT: ret i1 true
1536 %c = icmp slt i4 %s, 5
1540 define i1 @ashrslt_02_06(i4 %x) {
1541 ; CHECK-LABEL: @ashrslt_02_06(
1542 ; CHECK-NEXT: ret i1 true
1545 %c = icmp slt i4 %s, 6
1549 define i1 @ashrslt_02_07(i4 %x) {
1550 ; CHECK-LABEL: @ashrslt_02_07(
1551 ; CHECK-NEXT: ret i1 true
1554 %c = icmp slt i4 %s, 7
1558 define i1 @ashrslt_02_08(i4 %x) {
1559 ; CHECK-LABEL: @ashrslt_02_08(
1560 ; CHECK-NEXT: ret i1 false
1563 %c = icmp slt i4 %s, 8
1567 define i1 @ashrslt_02_09(i4 %x) {
1568 ; CHECK-LABEL: @ashrslt_02_09(
1569 ; CHECK-NEXT: ret i1 false
1572 %c = icmp slt i4 %s, 9
1576 define i1 @ashrslt_02_10(i4 %x) {
1577 ; CHECK-LABEL: @ashrslt_02_10(
1578 ; CHECK-NEXT: ret i1 false
1581 %c = icmp slt i4 %s, 10
1585 define i1 @ashrslt_02_11(i4 %x) {
1586 ; CHECK-LABEL: @ashrslt_02_11(
1587 ; CHECK-NEXT: ret i1 false
1590 %c = icmp slt i4 %s, 11
1594 define i1 @ashrslt_02_12(i4 %x) {
1595 ; CHECK-LABEL: @ashrslt_02_12(
1596 ; CHECK-NEXT: ret i1 false
1599 %c = icmp slt i4 %s, 12
1603 define i1 @ashrslt_02_13(i4 %x) {
1604 ; CHECK-LABEL: @ashrslt_02_13(
1605 ; CHECK-NEXT: ret i1 false
1608 %c = icmp slt i4 %s, 13
1612 define i1 @ashrslt_02_14(i4 %x) {
1613 ; CHECK-LABEL: @ashrslt_02_14(
1614 ; CHECK-NEXT: ret i1 false
1617 %c = icmp slt i4 %s, 14
1621 define i1 @ashrslt_02_15(i4 %x) {
1622 ; CHECK-LABEL: @ashrslt_02_15(
1623 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -4
1624 ; CHECK-NEXT: ret i1 [[C]]
1627 %c = icmp slt i4 %s, 15
1631 define i1 @ashrslt_03_00(i4 %x) {
1632 ; CHECK-LABEL: @ashrslt_03_00(
1633 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
1634 ; CHECK-NEXT: ret i1 [[C]]
1637 %c = icmp slt i4 %s, 0
1641 define i1 @ashrslt_03_01(i4 %x) {
1642 ; CHECK-LABEL: @ashrslt_03_01(
1643 ; CHECK-NEXT: ret i1 true
1646 %c = icmp slt i4 %s, 1
1650 define i1 @ashrslt_03_02(i4 %x) {
1651 ; CHECK-LABEL: @ashrslt_03_02(
1652 ; CHECK-NEXT: ret i1 true
1655 %c = icmp slt i4 %s, 2
1659 define i1 @ashrslt_03_03(i4 %x) {
1660 ; CHECK-LABEL: @ashrslt_03_03(
1661 ; CHECK-NEXT: ret i1 true
1664 %c = icmp slt i4 %s, 3
1668 define i1 @ashrslt_03_04(i4 %x) {
1669 ; CHECK-LABEL: @ashrslt_03_04(
1670 ; CHECK-NEXT: ret i1 true
1673 %c = icmp slt i4 %s, 4
1677 define i1 @ashrslt_03_05(i4 %x) {
1678 ; CHECK-LABEL: @ashrslt_03_05(
1679 ; CHECK-NEXT: ret i1 true
1682 %c = icmp slt i4 %s, 5
1686 define i1 @ashrslt_03_06(i4 %x) {
1687 ; CHECK-LABEL: @ashrslt_03_06(
1688 ; CHECK-NEXT: ret i1 true
1691 %c = icmp slt i4 %s, 6
1695 define i1 @ashrslt_03_07(i4 %x) {
1696 ; CHECK-LABEL: @ashrslt_03_07(
1697 ; CHECK-NEXT: ret i1 true
1700 %c = icmp slt i4 %s, 7
1704 define i1 @ashrslt_03_08(i4 %x) {
1705 ; CHECK-LABEL: @ashrslt_03_08(
1706 ; CHECK-NEXT: ret i1 false
1709 %c = icmp slt i4 %s, 8
1713 define i1 @ashrslt_03_09(i4 %x) {
1714 ; CHECK-LABEL: @ashrslt_03_09(
1715 ; CHECK-NEXT: ret i1 false
1718 %c = icmp slt i4 %s, 9
1722 define i1 @ashrslt_03_10(i4 %x) {
1723 ; CHECK-LABEL: @ashrslt_03_10(
1724 ; CHECK-NEXT: ret i1 false
1727 %c = icmp slt i4 %s, 10
1731 define i1 @ashrslt_03_11(i4 %x) {
1732 ; CHECK-LABEL: @ashrslt_03_11(
1733 ; CHECK-NEXT: ret i1 false
1736 %c = icmp slt i4 %s, 11
1740 define i1 @ashrslt_03_12(i4 %x) {
1741 ; CHECK-LABEL: @ashrslt_03_12(
1742 ; CHECK-NEXT: ret i1 false
1745 %c = icmp slt i4 %s, 12
1749 define i1 @ashrslt_03_13(i4 %x) {
1750 ; CHECK-LABEL: @ashrslt_03_13(
1751 ; CHECK-NEXT: ret i1 false
1754 %c = icmp slt i4 %s, 13
1758 define i1 @ashrslt_03_14(i4 %x) {
1759 ; CHECK-LABEL: @ashrslt_03_14(
1760 ; CHECK-NEXT: ret i1 false
1763 %c = icmp slt i4 %s, 14
1767 define i1 @ashrslt_03_15(i4 %x) {
1768 ; CHECK-LABEL: @ashrslt_03_15(
1769 ; CHECK-NEXT: ret i1 false
1772 %c = icmp slt i4 %s, 15
1776 define i1 @lshrugt_01_00_exact(i4 %x) {
1777 ; CHECK-LABEL: @lshrugt_01_00_exact(
1778 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], 0
1779 ; CHECK-NEXT: ret i1 [[C]]
1781 %s = lshr exact i4 %x, 1
1782 %c = icmp ugt i4 %s, 0
1786 define i1 @lshrugt_01_01_exact(i4 %x) {
1787 ; CHECK-LABEL: @lshrugt_01_01_exact(
1788 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 2
1789 ; CHECK-NEXT: ret i1 [[C]]
1791 %s = lshr exact i4 %x, 1
1792 %c = icmp ugt i4 %s, 1
1796 define i1 @lshrugt_01_02_exact(i4 %x) {
1797 ; CHECK-LABEL: @lshrugt_01_02_exact(
1798 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 4
1799 ; CHECK-NEXT: ret i1 [[C]]
1801 %s = lshr exact i4 %x, 1
1802 %c = icmp ugt i4 %s, 2
1806 define i1 @lshrugt_01_03_exact(i4 %x) {
1807 ; CHECK-LABEL: @lshrugt_01_03_exact(
1808 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 6
1809 ; CHECK-NEXT: ret i1 [[C]]
1811 %s = lshr exact i4 %x, 1
1812 %c = icmp ugt i4 %s, 3
1816 define i1 @lshrugt_01_04_exact(i4 %x) {
1817 ; CHECK-LABEL: @lshrugt_01_04_exact(
1818 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], -8
1819 ; CHECK-NEXT: ret i1 [[C]]
1821 %s = lshr exact i4 %x, 1
1822 %c = icmp ugt i4 %s, 4
1826 define i1 @lshrugt_01_05_exact(i4 %x) {
1827 ; CHECK-LABEL: @lshrugt_01_05_exact(
1828 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], -6
1829 ; CHECK-NEXT: ret i1 [[C]]
1831 %s = lshr exact i4 %x, 1
1832 %c = icmp ugt i4 %s, 5
1836 define i1 @lshrugt_01_06_exact(i4 %x) {
1837 ; CHECK-LABEL: @lshrugt_01_06_exact(
1838 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], -2
1839 ; CHECK-NEXT: ret i1 [[C]]
1841 %s = lshr exact i4 %x, 1
1842 %c = icmp ugt i4 %s, 6
1846 define i1 @lshrugt_01_07_exact(i4 %x) {
1847 ; CHECK-LABEL: @lshrugt_01_07_exact(
1848 ; CHECK-NEXT: ret i1 false
1850 %s = lshr exact i4 %x, 1
1851 %c = icmp ugt i4 %s, 7
1855 define i1 @lshrugt_01_08_exact(i4 %x) {
1856 ; CHECK-LABEL: @lshrugt_01_08_exact(
1857 ; CHECK-NEXT: ret i1 false
1859 %s = lshr exact i4 %x, 1
1860 %c = icmp ugt i4 %s, 8
1864 define i1 @lshrugt_01_09_exact(i4 %x) {
1865 ; CHECK-LABEL: @lshrugt_01_09_exact(
1866 ; CHECK-NEXT: ret i1 false
1868 %s = lshr exact i4 %x, 1
1869 %c = icmp ugt i4 %s, 9
1873 define i1 @lshrugt_01_10_exact(i4 %x) {
1874 ; CHECK-LABEL: @lshrugt_01_10_exact(
1875 ; CHECK-NEXT: ret i1 false
1877 %s = lshr exact i4 %x, 1
1878 %c = icmp ugt i4 %s, 10
1882 define i1 @lshrugt_01_11_exact(i4 %x) {
1883 ; CHECK-LABEL: @lshrugt_01_11_exact(
1884 ; CHECK-NEXT: ret i1 false
1886 %s = lshr exact i4 %x, 1
1887 %c = icmp ugt i4 %s, 11
1891 define i1 @lshrugt_01_12_exact(i4 %x) {
1892 ; CHECK-LABEL: @lshrugt_01_12_exact(
1893 ; CHECK-NEXT: ret i1 false
1895 %s = lshr exact i4 %x, 1
1896 %c = icmp ugt i4 %s, 12
1900 define i1 @lshrugt_01_13_exact(i4 %x) {
1901 ; CHECK-LABEL: @lshrugt_01_13_exact(
1902 ; CHECK-NEXT: ret i1 false
1904 %s = lshr exact i4 %x, 1
1905 %c = icmp ugt i4 %s, 13
1909 define i1 @lshrugt_01_14_exact(i4 %x) {
1910 ; CHECK-LABEL: @lshrugt_01_14_exact(
1911 ; CHECK-NEXT: ret i1 false
1913 %s = lshr exact i4 %x, 1
1914 %c = icmp ugt i4 %s, 14
1918 define i1 @lshrugt_01_15_exact(i4 %x) {
1919 ; CHECK-LABEL: @lshrugt_01_15_exact(
1920 ; CHECK-NEXT: ret i1 false
1922 %s = lshr exact i4 %x, 1
1923 %c = icmp ugt i4 %s, 15
1927 define i1 @lshrugt_02_00_exact(i4 %x) {
1928 ; CHECK-LABEL: @lshrugt_02_00_exact(
1929 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], 0
1930 ; CHECK-NEXT: ret i1 [[C]]
1932 %s = lshr exact i4 %x, 2
1933 %c = icmp ugt i4 %s, 0
1937 define i1 @lshrugt_02_01_exact(i4 %x) {
1938 ; CHECK-LABEL: @lshrugt_02_01_exact(
1939 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 4
1940 ; CHECK-NEXT: ret i1 [[C]]
1942 %s = lshr exact i4 %x, 2
1943 %c = icmp ugt i4 %s, 1
1947 define i1 @lshrugt_02_02_exact(i4 %x) {
1948 ; CHECK-LABEL: @lshrugt_02_02_exact(
1949 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], -4
1950 ; CHECK-NEXT: ret i1 [[C]]
1952 %s = lshr exact i4 %x, 2
1953 %c = icmp ugt i4 %s, 2
1957 define i1 @lshrugt_02_03_exact(i4 %x) {
1958 ; CHECK-LABEL: @lshrugt_02_03_exact(
1959 ; CHECK-NEXT: ret i1 false
1961 %s = lshr exact i4 %x, 2
1962 %c = icmp ugt i4 %s, 3
1966 define i1 @lshrugt_02_04_exact(i4 %x) {
1967 ; CHECK-LABEL: @lshrugt_02_04_exact(
1968 ; CHECK-NEXT: ret i1 false
1970 %s = lshr exact i4 %x, 2
1971 %c = icmp ugt i4 %s, 4
1975 define i1 @lshrugt_02_05_exact(i4 %x) {
1976 ; CHECK-LABEL: @lshrugt_02_05_exact(
1977 ; CHECK-NEXT: ret i1 false
1979 %s = lshr exact i4 %x, 2
1980 %c = icmp ugt i4 %s, 5
1984 define i1 @lshrugt_02_06_exact(i4 %x) {
1985 ; CHECK-LABEL: @lshrugt_02_06_exact(
1986 ; CHECK-NEXT: ret i1 false
1988 %s = lshr exact i4 %x, 2
1989 %c = icmp ugt i4 %s, 6
1993 define i1 @lshrugt_02_07_exact(i4 %x) {
1994 ; CHECK-LABEL: @lshrugt_02_07_exact(
1995 ; CHECK-NEXT: ret i1 false
1997 %s = lshr exact i4 %x, 2
1998 %c = icmp ugt i4 %s, 7
2002 define i1 @lshrugt_02_08_exact(i4 %x) {
2003 ; CHECK-LABEL: @lshrugt_02_08_exact(
2004 ; CHECK-NEXT: ret i1 false
2006 %s = lshr exact i4 %x, 2
2007 %c = icmp ugt i4 %s, 8
2011 define i1 @lshrugt_02_09_exact(i4 %x) {
2012 ; CHECK-LABEL: @lshrugt_02_09_exact(
2013 ; CHECK-NEXT: ret i1 false
2015 %s = lshr exact i4 %x, 2
2016 %c = icmp ugt i4 %s, 9
2020 define i1 @lshrugt_02_10_exact(i4 %x) {
2021 ; CHECK-LABEL: @lshrugt_02_10_exact(
2022 ; CHECK-NEXT: ret i1 false
2024 %s = lshr exact i4 %x, 2
2025 %c = icmp ugt i4 %s, 10
2029 define i1 @lshrugt_02_11_exact(i4 %x) {
2030 ; CHECK-LABEL: @lshrugt_02_11_exact(
2031 ; CHECK-NEXT: ret i1 false
2033 %s = lshr exact i4 %x, 2
2034 %c = icmp ugt i4 %s, 11
2038 define i1 @lshrugt_02_12_exact(i4 %x) {
2039 ; CHECK-LABEL: @lshrugt_02_12_exact(
2040 ; CHECK-NEXT: ret i1 false
2042 %s = lshr exact i4 %x, 2
2043 %c = icmp ugt i4 %s, 12
2047 define i1 @lshrugt_02_13_exact(i4 %x) {
2048 ; CHECK-LABEL: @lshrugt_02_13_exact(
2049 ; CHECK-NEXT: ret i1 false
2051 %s = lshr exact i4 %x, 2
2052 %c = icmp ugt i4 %s, 13
2056 define i1 @lshrugt_02_14_exact(i4 %x) {
2057 ; CHECK-LABEL: @lshrugt_02_14_exact(
2058 ; CHECK-NEXT: ret i1 false
2060 %s = lshr exact i4 %x, 2
2061 %c = icmp ugt i4 %s, 14
2065 define i1 @lshrugt_02_15_exact(i4 %x) {
2066 ; CHECK-LABEL: @lshrugt_02_15_exact(
2067 ; CHECK-NEXT: ret i1 false
2069 %s = lshr exact i4 %x, 2
2070 %c = icmp ugt i4 %s, 15
2074 define i1 @lshrugt_03_00_exact(i4 %x) {
2075 ; CHECK-LABEL: @lshrugt_03_00_exact(
2076 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], 0
2077 ; CHECK-NEXT: ret i1 [[C]]
2079 %s = lshr exact i4 %x, 3
2080 %c = icmp ugt i4 %s, 0
2084 define i1 @lshrugt_03_01_exact(i4 %x) {
2085 ; CHECK-LABEL: @lshrugt_03_01_exact(
2086 ; CHECK-NEXT: ret i1 false
2088 %s = lshr exact i4 %x, 3
2089 %c = icmp ugt i4 %s, 1
2093 define i1 @lshrugt_03_02_exact(i4 %x) {
2094 ; CHECK-LABEL: @lshrugt_03_02_exact(
2095 ; CHECK-NEXT: ret i1 false
2097 %s = lshr exact i4 %x, 3
2098 %c = icmp ugt i4 %s, 2
2102 define i1 @lshrugt_03_03_exact(i4 %x) {
2103 ; CHECK-LABEL: @lshrugt_03_03_exact(
2104 ; CHECK-NEXT: ret i1 false
2106 %s = lshr exact i4 %x, 3
2107 %c = icmp ugt i4 %s, 3
2111 define i1 @lshrugt_03_04_exact(i4 %x) {
2112 ; CHECK-LABEL: @lshrugt_03_04_exact(
2113 ; CHECK-NEXT: ret i1 false
2115 %s = lshr exact i4 %x, 3
2116 %c = icmp ugt i4 %s, 4
2120 define i1 @lshrugt_03_05_exact(i4 %x) {
2121 ; CHECK-LABEL: @lshrugt_03_05_exact(
2122 ; CHECK-NEXT: ret i1 false
2124 %s = lshr exact i4 %x, 3
2125 %c = icmp ugt i4 %s, 5
2129 define i1 @lshrugt_03_06_exact(i4 %x) {
2130 ; CHECK-LABEL: @lshrugt_03_06_exact(
2131 ; CHECK-NEXT: ret i1 false
2133 %s = lshr exact i4 %x, 3
2134 %c = icmp ugt i4 %s, 6
2138 define i1 @lshrugt_03_07_exact(i4 %x) {
2139 ; CHECK-LABEL: @lshrugt_03_07_exact(
2140 ; CHECK-NEXT: ret i1 false
2142 %s = lshr exact i4 %x, 3
2143 %c = icmp ugt i4 %s, 7
2147 define i1 @lshrugt_03_08_exact(i4 %x) {
2148 ; CHECK-LABEL: @lshrugt_03_08_exact(
2149 ; CHECK-NEXT: ret i1 false
2151 %s = lshr exact i4 %x, 3
2152 %c = icmp ugt i4 %s, 8
2156 define i1 @lshrugt_03_09_exact(i4 %x) {
2157 ; CHECK-LABEL: @lshrugt_03_09_exact(
2158 ; CHECK-NEXT: ret i1 false
2160 %s = lshr exact i4 %x, 3
2161 %c = icmp ugt i4 %s, 9
2165 define i1 @lshrugt_03_10_exact(i4 %x) {
2166 ; CHECK-LABEL: @lshrugt_03_10_exact(
2167 ; CHECK-NEXT: ret i1 false
2169 %s = lshr exact i4 %x, 3
2170 %c = icmp ugt i4 %s, 10
2174 define i1 @lshrugt_03_11_exact(i4 %x) {
2175 ; CHECK-LABEL: @lshrugt_03_11_exact(
2176 ; CHECK-NEXT: ret i1 false
2178 %s = lshr exact i4 %x, 3
2179 %c = icmp ugt i4 %s, 11
2183 define i1 @lshrugt_03_12_exact(i4 %x) {
2184 ; CHECK-LABEL: @lshrugt_03_12_exact(
2185 ; CHECK-NEXT: ret i1 false
2187 %s = lshr exact i4 %x, 3
2188 %c = icmp ugt i4 %s, 12
2192 define i1 @lshrugt_03_13_exact(i4 %x) {
2193 ; CHECK-LABEL: @lshrugt_03_13_exact(
2194 ; CHECK-NEXT: ret i1 false
2196 %s = lshr exact i4 %x, 3
2197 %c = icmp ugt i4 %s, 13
2201 define i1 @lshrugt_03_14_exact(i4 %x) {
2202 ; CHECK-LABEL: @lshrugt_03_14_exact(
2203 ; CHECK-NEXT: ret i1 false
2205 %s = lshr exact i4 %x, 3
2206 %c = icmp ugt i4 %s, 14
2210 define i1 @lshrugt_03_15_exact(i4 %x) {
2211 ; CHECK-LABEL: @lshrugt_03_15_exact(
2212 ; CHECK-NEXT: ret i1 false
2214 %s = lshr exact i4 %x, 3
2215 %c = icmp ugt i4 %s, 15
2219 define i1 @lshrult_01_00_exact(i4 %x) {
2220 ; CHECK-LABEL: @lshrult_01_00_exact(
2221 ; CHECK-NEXT: ret i1 false
2223 %s = lshr exact i4 %x, 1
2224 %c = icmp ult i4 %s, 0
2228 define i1 @lshrult_01_01_exact(i4 %x) {
2229 ; CHECK-LABEL: @lshrult_01_01_exact(
2230 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], 0
2231 ; CHECK-NEXT: ret i1 [[C]]
2233 %s = lshr exact i4 %x, 1
2234 %c = icmp ult i4 %s, 1
2238 define i1 @lshrult_01_02_exact(i4 %x) {
2239 ; CHECK-LABEL: @lshrult_01_02_exact(
2240 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], 4
2241 ; CHECK-NEXT: ret i1 [[C]]
2243 %s = lshr exact i4 %x, 1
2244 %c = icmp ult i4 %s, 2
2248 define i1 @lshrult_01_03_exact(i4 %x) {
2249 ; CHECK-LABEL: @lshrult_01_03_exact(
2250 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], 6
2251 ; CHECK-NEXT: ret i1 [[C]]
2253 %s = lshr exact i4 %x, 1
2254 %c = icmp ult i4 %s, 3
2258 define i1 @lshrult_01_04_exact(i4 %x) {
2259 ; CHECK-LABEL: @lshrult_01_04_exact(
2260 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
2261 ; CHECK-NEXT: ret i1 [[C]]
2263 %s = lshr exact i4 %x, 1
2264 %c = icmp ult i4 %s, 4
2268 define i1 @lshrult_01_05_exact(i4 %x) {
2269 ; CHECK-LABEL: @lshrult_01_05_exact(
2270 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], -6
2271 ; CHECK-NEXT: ret i1 [[C]]
2273 %s = lshr exact i4 %x, 1
2274 %c = icmp ult i4 %s, 5
2278 define i1 @lshrult_01_06_exact(i4 %x) {
2279 ; CHECK-LABEL: @lshrult_01_06_exact(
2280 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], -4
2281 ; CHECK-NEXT: ret i1 [[C]]
2283 %s = lshr exact i4 %x, 1
2284 %c = icmp ult i4 %s, 6
2288 define i1 @lshrult_01_07_exact(i4 %x) {
2289 ; CHECK-LABEL: @lshrult_01_07_exact(
2290 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -2
2291 ; CHECK-NEXT: ret i1 [[C]]
2293 %s = lshr exact i4 %x, 1
2294 %c = icmp ult i4 %s, 7
2298 define i1 @lshrult_01_08_exact(i4 %x) {
2299 ; CHECK-LABEL: @lshrult_01_08_exact(
2300 ; CHECK-NEXT: ret i1 true
2302 %s = lshr exact i4 %x, 1
2303 %c = icmp ult i4 %s, 8
2307 define i1 @lshrult_01_09_exact(i4 %x) {
2308 ; CHECK-LABEL: @lshrult_01_09_exact(
2309 ; CHECK-NEXT: ret i1 true
2311 %s = lshr exact i4 %x, 1
2312 %c = icmp ult i4 %s, 9
2316 define i1 @lshrult_01_10_exact(i4 %x) {
2317 ; CHECK-LABEL: @lshrult_01_10_exact(
2318 ; CHECK-NEXT: ret i1 true
2320 %s = lshr exact i4 %x, 1
2321 %c = icmp ult i4 %s, 10
2325 define i1 @lshrult_01_11_exact(i4 %x) {
2326 ; CHECK-LABEL: @lshrult_01_11_exact(
2327 ; CHECK-NEXT: ret i1 true
2329 %s = lshr exact i4 %x, 1
2330 %c = icmp ult i4 %s, 11
2334 define i1 @lshrult_01_12_exact(i4 %x) {
2335 ; CHECK-LABEL: @lshrult_01_12_exact(
2336 ; CHECK-NEXT: ret i1 true
2338 %s = lshr exact i4 %x, 1
2339 %c = icmp ult i4 %s, 12
2343 define i1 @lshrult_01_13_exact(i4 %x) {
2344 ; CHECK-LABEL: @lshrult_01_13_exact(
2345 ; CHECK-NEXT: ret i1 true
2347 %s = lshr exact i4 %x, 1
2348 %c = icmp ult i4 %s, 13
2352 define i1 @lshrult_01_14_exact(i4 %x) {
2353 ; CHECK-LABEL: @lshrult_01_14_exact(
2354 ; CHECK-NEXT: ret i1 true
2356 %s = lshr exact i4 %x, 1
2357 %c = icmp ult i4 %s, 14
2361 define i1 @lshrult_01_15_exact(i4 %x) {
2362 ; CHECK-LABEL: @lshrult_01_15_exact(
2363 ; CHECK-NEXT: ret i1 true
2365 %s = lshr exact i4 %x, 1
2366 %c = icmp ult i4 %s, 15
2370 define i1 @lshrult_02_00_exact(i4 %x) {
2371 ; CHECK-LABEL: @lshrult_02_00_exact(
2372 ; CHECK-NEXT: ret i1 false
2374 %s = lshr exact i4 %x, 2
2375 %c = icmp ult i4 %s, 0
2379 define i1 @lshrult_02_01_exact(i4 %x) {
2380 ; CHECK-LABEL: @lshrult_02_01_exact(
2381 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], 0
2382 ; CHECK-NEXT: ret i1 [[C]]
2384 %s = lshr exact i4 %x, 2
2385 %c = icmp ult i4 %s, 1
2389 define i1 @lshrult_02_02_exact(i4 %x) {
2390 ; CHECK-LABEL: @lshrult_02_02_exact(
2391 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
2392 ; CHECK-NEXT: ret i1 [[C]]
2394 %s = lshr exact i4 %x, 2
2395 %c = icmp ult i4 %s, 2
2399 define i1 @lshrult_02_03_exact(i4 %x) {
2400 ; CHECK-LABEL: @lshrult_02_03_exact(
2401 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -4
2402 ; CHECK-NEXT: ret i1 [[C]]
2404 %s = lshr exact i4 %x, 2
2405 %c = icmp ult i4 %s, 3
2409 define i1 @lshrult_02_04_exact(i4 %x) {
2410 ; CHECK-LABEL: @lshrult_02_04_exact(
2411 ; CHECK-NEXT: ret i1 true
2413 %s = lshr exact i4 %x, 2
2414 %c = icmp ult i4 %s, 4
2418 define i1 @lshrult_02_05_exact(i4 %x) {
2419 ; CHECK-LABEL: @lshrult_02_05_exact(
2420 ; CHECK-NEXT: ret i1 true
2422 %s = lshr exact i4 %x, 2
2423 %c = icmp ult i4 %s, 5
2427 define i1 @lshrult_02_06_exact(i4 %x) {
2428 ; CHECK-LABEL: @lshrult_02_06_exact(
2429 ; CHECK-NEXT: ret i1 true
2431 %s = lshr exact i4 %x, 2
2432 %c = icmp ult i4 %s, 6
2436 define i1 @lshrult_02_07_exact(i4 %x) {
2437 ; CHECK-LABEL: @lshrult_02_07_exact(
2438 ; CHECK-NEXT: ret i1 true
2440 %s = lshr exact i4 %x, 2
2441 %c = icmp ult i4 %s, 7
2445 define i1 @lshrult_02_08_exact(i4 %x) {
2446 ; CHECK-LABEL: @lshrult_02_08_exact(
2447 ; CHECK-NEXT: ret i1 true
2449 %s = lshr exact i4 %x, 2
2450 %c = icmp ult i4 %s, 8
2454 define i1 @lshrult_02_09_exact(i4 %x) {
2455 ; CHECK-LABEL: @lshrult_02_09_exact(
2456 ; CHECK-NEXT: ret i1 true
2458 %s = lshr exact i4 %x, 2
2459 %c = icmp ult i4 %s, 9
2463 define i1 @lshrult_02_10_exact(i4 %x) {
2464 ; CHECK-LABEL: @lshrult_02_10_exact(
2465 ; CHECK-NEXT: ret i1 true
2467 %s = lshr exact i4 %x, 2
2468 %c = icmp ult i4 %s, 10
2472 define i1 @lshrult_02_11_exact(i4 %x) {
2473 ; CHECK-LABEL: @lshrult_02_11_exact(
2474 ; CHECK-NEXT: ret i1 true
2476 %s = lshr exact i4 %x, 2
2477 %c = icmp ult i4 %s, 11
2481 define i1 @lshrult_02_12_exact(i4 %x) {
2482 ; CHECK-LABEL: @lshrult_02_12_exact(
2483 ; CHECK-NEXT: ret i1 true
2485 %s = lshr exact i4 %x, 2
2486 %c = icmp ult i4 %s, 12
2490 define i1 @lshrult_02_13_exact(i4 %x) {
2491 ; CHECK-LABEL: @lshrult_02_13_exact(
2492 ; CHECK-NEXT: ret i1 true
2494 %s = lshr exact i4 %x, 2
2495 %c = icmp ult i4 %s, 13
2499 define i1 @lshrult_02_14_exact(i4 %x) {
2500 ; CHECK-LABEL: @lshrult_02_14_exact(
2501 ; CHECK-NEXT: ret i1 true
2503 %s = lshr exact i4 %x, 2
2504 %c = icmp ult i4 %s, 14
2508 define i1 @lshrult_02_15_exact(i4 %x) {
2509 ; CHECK-LABEL: @lshrult_02_15_exact(
2510 ; CHECK-NEXT: ret i1 true
2512 %s = lshr exact i4 %x, 2
2513 %c = icmp ult i4 %s, 15
2517 define i1 @lshrult_03_00_exact(i4 %x) {
2518 ; CHECK-LABEL: @lshrult_03_00_exact(
2519 ; CHECK-NEXT: ret i1 false
2521 %s = lshr exact i4 %x, 3
2522 %c = icmp ult i4 %s, 0
2526 define i1 @lshrult_03_01_exact(i4 %x) {
2527 ; CHECK-LABEL: @lshrult_03_01_exact(
2528 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -8
2529 ; CHECK-NEXT: ret i1 [[C]]
2531 %s = lshr exact i4 %x, 3
2532 %c = icmp ult i4 %s, 1
2536 define i1 @lshrult_03_02_exact(i4 %x) {
2537 ; CHECK-LABEL: @lshrult_03_02_exact(
2538 ; CHECK-NEXT: ret i1 true
2540 %s = lshr exact i4 %x, 3
2541 %c = icmp ult i4 %s, 2
2545 define i1 @lshrult_03_03_exact(i4 %x) {
2546 ; CHECK-LABEL: @lshrult_03_03_exact(
2547 ; CHECK-NEXT: ret i1 true
2549 %s = lshr exact i4 %x, 3
2550 %c = icmp ult i4 %s, 3
2554 define i1 @lshrult_03_04_exact(i4 %x) {
2555 ; CHECK-LABEL: @lshrult_03_04_exact(
2556 ; CHECK-NEXT: ret i1 true
2558 %s = lshr exact i4 %x, 3
2559 %c = icmp ult i4 %s, 4
2563 define i1 @lshrult_03_05_exact(i4 %x) {
2564 ; CHECK-LABEL: @lshrult_03_05_exact(
2565 ; CHECK-NEXT: ret i1 true
2567 %s = lshr exact i4 %x, 3
2568 %c = icmp ult i4 %s, 5
2572 define i1 @lshrult_03_06_exact(i4 %x) {
2573 ; CHECK-LABEL: @lshrult_03_06_exact(
2574 ; CHECK-NEXT: ret i1 true
2576 %s = lshr exact i4 %x, 3
2577 %c = icmp ult i4 %s, 6
2581 define i1 @lshrult_03_07_exact(i4 %x) {
2582 ; CHECK-LABEL: @lshrult_03_07_exact(
2583 ; CHECK-NEXT: ret i1 true
2585 %s = lshr exact i4 %x, 3
2586 %c = icmp ult i4 %s, 7
2590 define i1 @lshrult_03_08_exact(i4 %x) {
2591 ; CHECK-LABEL: @lshrult_03_08_exact(
2592 ; CHECK-NEXT: ret i1 true
2594 %s = lshr exact i4 %x, 3
2595 %c = icmp ult i4 %s, 8
2599 define i1 @lshrult_03_09_exact(i4 %x) {
2600 ; CHECK-LABEL: @lshrult_03_09_exact(
2601 ; CHECK-NEXT: ret i1 true
2603 %s = lshr exact i4 %x, 3
2604 %c = icmp ult i4 %s, 9
2608 define i1 @lshrult_03_10_exact(i4 %x) {
2609 ; CHECK-LABEL: @lshrult_03_10_exact(
2610 ; CHECK-NEXT: ret i1 true
2612 %s = lshr exact i4 %x, 3
2613 %c = icmp ult i4 %s, 10
2617 define i1 @lshrult_03_11_exact(i4 %x) {
2618 ; CHECK-LABEL: @lshrult_03_11_exact(
2619 ; CHECK-NEXT: ret i1 true
2621 %s = lshr exact i4 %x, 3
2622 %c = icmp ult i4 %s, 11
2626 define i1 @lshrult_03_12_exact(i4 %x) {
2627 ; CHECK-LABEL: @lshrult_03_12_exact(
2628 ; CHECK-NEXT: ret i1 true
2630 %s = lshr exact i4 %x, 3
2631 %c = icmp ult i4 %s, 12
2635 define i1 @lshrult_03_13_exact(i4 %x) {
2636 ; CHECK-LABEL: @lshrult_03_13_exact(
2637 ; CHECK-NEXT: ret i1 true
2639 %s = lshr exact i4 %x, 3
2640 %c = icmp ult i4 %s, 13
2644 define i1 @lshrult_03_14_exact(i4 %x) {
2645 ; CHECK-LABEL: @lshrult_03_14_exact(
2646 ; CHECK-NEXT: ret i1 true
2648 %s = lshr exact i4 %x, 3
2649 %c = icmp ult i4 %s, 14
2653 define i1 @lshrult_03_15_exact(i4 %x) {
2654 ; CHECK-LABEL: @lshrult_03_15_exact(
2655 ; CHECK-NEXT: ret i1 true
2657 %s = lshr exact i4 %x, 3
2658 %c = icmp ult i4 %s, 15
2662 define i1 @ashrsgt_01_00_exact(i4 %x) {
2663 ; CHECK-LABEL: @ashrsgt_01_00_exact(
2664 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 0
2665 ; CHECK-NEXT: ret i1 [[C]]
2667 %s = ashr exact i4 %x, 1
2668 %c = icmp sgt i4 %s, 0
2672 define i1 @ashrsgt_01_01_exact(i4 %x) {
2673 ; CHECK-LABEL: @ashrsgt_01_01_exact(
2674 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 2
2675 ; CHECK-NEXT: ret i1 [[C]]
2677 %s = ashr exact i4 %x, 1
2678 %c = icmp sgt i4 %s, 1
2682 define i1 @ashrsgt_01_02_exact(i4 %x) {
2683 ; CHECK-LABEL: @ashrsgt_01_02_exact(
2684 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 4
2685 ; CHECK-NEXT: ret i1 [[C]]
2687 %s = ashr exact i4 %x, 1
2688 %c = icmp sgt i4 %s, 2
2692 define i1 @ashrsgt_01_03_exact(i4 %x) {
2693 ; CHECK-LABEL: @ashrsgt_01_03_exact(
2694 ; CHECK-NEXT: ret i1 false
2696 %s = ashr exact i4 %x, 1
2697 %c = icmp sgt i4 %s, 3
2701 define i1 @ashrsgt_01_04_exact(i4 %x) {
2702 ; CHECK-LABEL: @ashrsgt_01_04_exact(
2703 ; CHECK-NEXT: ret i1 false
2705 %s = ashr exact i4 %x, 1
2706 %c = icmp sgt i4 %s, 4
2710 define i1 @ashrsgt_01_05_exact(i4 %x) {
2711 ; CHECK-LABEL: @ashrsgt_01_05_exact(
2712 ; CHECK-NEXT: ret i1 false
2714 %s = ashr exact i4 %x, 1
2715 %c = icmp sgt i4 %s, 5
2719 define i1 @ashrsgt_01_06_exact(i4 %x) {
2720 ; CHECK-LABEL: @ashrsgt_01_06_exact(
2721 ; CHECK-NEXT: ret i1 false
2723 %s = ashr exact i4 %x, 1
2724 %c = icmp sgt i4 %s, 6
2728 define i1 @ashrsgt_01_07_exact(i4 %x) {
2729 ; CHECK-LABEL: @ashrsgt_01_07_exact(
2730 ; CHECK-NEXT: ret i1 false
2732 %s = ashr exact i4 %x, 1
2733 %c = icmp sgt i4 %s, 7
2737 define i1 @ashrsgt_01_08_exact(i4 %x) {
2738 ; CHECK-LABEL: @ashrsgt_01_08_exact(
2739 ; CHECK-NEXT: ret i1 true
2741 %s = ashr exact i4 %x, 1
2742 %c = icmp sgt i4 %s, 8
2746 define i1 @ashrsgt_01_09_exact(i4 %x) {
2747 ; CHECK-LABEL: @ashrsgt_01_09_exact(
2748 ; CHECK-NEXT: ret i1 true
2750 %s = ashr exact i4 %x, 1
2751 %c = icmp sgt i4 %s, 9
2755 define i1 @ashrsgt_01_10_exact(i4 %x) {
2756 ; CHECK-LABEL: @ashrsgt_01_10_exact(
2757 ; CHECK-NEXT: ret i1 true
2759 %s = ashr exact i4 %x, 1
2760 %c = icmp sgt i4 %s, 10
2764 define i1 @ashrsgt_01_11_exact(i4 %x) {
2765 ; CHECK-LABEL: @ashrsgt_01_11_exact(
2766 ; CHECK-NEXT: ret i1 true
2768 %s = ashr exact i4 %x, 1
2769 %c = icmp sgt i4 %s, 11
2773 define i1 @ashrsgt_01_12_exact(i4 %x) {
2774 ; CHECK-LABEL: @ashrsgt_01_12_exact(
2775 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -8
2776 ; CHECK-NEXT: ret i1 [[C]]
2778 %s = ashr exact i4 %x, 1
2779 %c = icmp sgt i4 %s, 12
2783 define i1 @ashrsgt_01_13_exact(i4 %x) {
2784 ; CHECK-LABEL: @ashrsgt_01_13_exact(
2785 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -6
2786 ; CHECK-NEXT: ret i1 [[C]]
2788 %s = ashr exact i4 %x, 1
2789 %c = icmp sgt i4 %s, 13
2793 define i1 @ashrsgt_01_14_exact(i4 %x) {
2794 ; CHECK-LABEL: @ashrsgt_01_14_exact(
2795 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -4
2796 ; CHECK-NEXT: ret i1 [[C]]
2798 %s = ashr exact i4 %x, 1
2799 %c = icmp sgt i4 %s, 14
2803 define i1 @ashrsgt_01_15_exact(i4 %x) {
2804 ; CHECK-LABEL: @ashrsgt_01_15_exact(
2805 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
2806 ; CHECK-NEXT: ret i1 [[C]]
2808 %s = ashr exact i4 %x, 1
2809 %c = icmp sgt i4 %s, 15
2813 define i1 @ashrsgt_02_00_exact(i4 %x) {
2814 ; CHECK-LABEL: @ashrsgt_02_00_exact(
2815 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 0
2816 ; CHECK-NEXT: ret i1 [[C]]
2818 %s = ashr exact i4 %x, 2
2819 %c = icmp sgt i4 %s, 0
2823 define i1 @ashrsgt_02_01_exact(i4 %x) {
2824 ; CHECK-LABEL: @ashrsgt_02_01_exact(
2825 ; CHECK-NEXT: ret i1 false
2827 %s = ashr exact i4 %x, 2
2828 %c = icmp sgt i4 %s, 1
2832 define i1 @ashrsgt_02_02_exact(i4 %x) {
2833 ; CHECK-LABEL: @ashrsgt_02_02_exact(
2834 ; CHECK-NEXT: ret i1 false
2836 %s = ashr exact i4 %x, 2
2837 %c = icmp sgt i4 %s, 2
2841 define i1 @ashrsgt_02_03_exact(i4 %x) {
2842 ; CHECK-LABEL: @ashrsgt_02_03_exact(
2843 ; CHECK-NEXT: ret i1 false
2845 %s = ashr exact i4 %x, 2
2846 %c = icmp sgt i4 %s, 3
2850 define i1 @ashrsgt_02_04_exact(i4 %x) {
2851 ; CHECK-LABEL: @ashrsgt_02_04_exact(
2852 ; CHECK-NEXT: ret i1 false
2854 %s = ashr exact i4 %x, 2
2855 %c = icmp sgt i4 %s, 4
2859 define i1 @ashrsgt_02_05_exact(i4 %x) {
2860 ; CHECK-LABEL: @ashrsgt_02_05_exact(
2861 ; CHECK-NEXT: ret i1 false
2863 %s = ashr exact i4 %x, 2
2864 %c = icmp sgt i4 %s, 5
2868 define i1 @ashrsgt_02_06_exact(i4 %x) {
2869 ; CHECK-LABEL: @ashrsgt_02_06_exact(
2870 ; CHECK-NEXT: ret i1 false
2872 %s = ashr exact i4 %x, 2
2873 %c = icmp sgt i4 %s, 6
2877 define i1 @ashrsgt_02_07_exact(i4 %x) {
2878 ; CHECK-LABEL: @ashrsgt_02_07_exact(
2879 ; CHECK-NEXT: ret i1 false
2881 %s = ashr exact i4 %x, 2
2882 %c = icmp sgt i4 %s, 7
2886 define i1 @ashrsgt_02_08_exact(i4 %x) {
2887 ; CHECK-LABEL: @ashrsgt_02_08_exact(
2888 ; CHECK-NEXT: ret i1 true
2890 %s = ashr exact i4 %x, 2
2891 %c = icmp sgt i4 %s, 8
2895 define i1 @ashrsgt_02_09_exact(i4 %x) {
2896 ; CHECK-LABEL: @ashrsgt_02_09_exact(
2897 ; CHECK-NEXT: ret i1 true
2899 %s = ashr exact i4 %x, 2
2900 %c = icmp sgt i4 %s, 9
2904 define i1 @ashrsgt_02_10_exact(i4 %x) {
2905 ; CHECK-LABEL: @ashrsgt_02_10_exact(
2906 ; CHECK-NEXT: ret i1 true
2908 %s = ashr exact i4 %x, 2
2909 %c = icmp sgt i4 %s, 10
2913 define i1 @ashrsgt_02_11_exact(i4 %x) {
2914 ; CHECK-LABEL: @ashrsgt_02_11_exact(
2915 ; CHECK-NEXT: ret i1 true
2917 %s = ashr exact i4 %x, 2
2918 %c = icmp sgt i4 %s, 11
2922 define i1 @ashrsgt_02_12_exact(i4 %x) {
2923 ; CHECK-LABEL: @ashrsgt_02_12_exact(
2924 ; CHECK-NEXT: ret i1 true
2926 %s = ashr exact i4 %x, 2
2927 %c = icmp sgt i4 %s, 12
2931 define i1 @ashrsgt_02_13_exact(i4 %x) {
2932 ; CHECK-LABEL: @ashrsgt_02_13_exact(
2933 ; CHECK-NEXT: ret i1 true
2935 %s = ashr exact i4 %x, 2
2936 %c = icmp sgt i4 %s, 13
2940 define i1 @ashrsgt_02_14_exact(i4 %x) {
2941 ; CHECK-LABEL: @ashrsgt_02_14_exact(
2942 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -8
2943 ; CHECK-NEXT: ret i1 [[C]]
2945 %s = ashr exact i4 %x, 2
2946 %c = icmp sgt i4 %s, 14
2950 define i1 @ashrsgt_02_15_exact(i4 %x) {
2951 ; CHECK-LABEL: @ashrsgt_02_15_exact(
2952 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
2953 ; CHECK-NEXT: ret i1 [[C]]
2955 %s = ashr exact i4 %x, 2
2956 %c = icmp sgt i4 %s, 15
2960 define i1 @ashrsgt_03_00_exact(i4 %x) {
2961 ; CHECK-LABEL: @ashrsgt_03_00_exact(
2962 ; CHECK-NEXT: ret i1 false
2964 %s = ashr exact i4 %x, 3
2965 %c = icmp sgt i4 %s, 0
2969 define i1 @ashrsgt_03_01_exact(i4 %x) {
2970 ; CHECK-LABEL: @ashrsgt_03_01_exact(
2971 ; CHECK-NEXT: ret i1 false
2973 %s = ashr exact i4 %x, 3
2974 %c = icmp sgt i4 %s, 1
2978 define i1 @ashrsgt_03_02_exact(i4 %x) {
2979 ; CHECK-LABEL: @ashrsgt_03_02_exact(
2980 ; CHECK-NEXT: ret i1 false
2982 %s = ashr exact i4 %x, 3
2983 %c = icmp sgt i4 %s, 2
2987 define i1 @ashrsgt_03_03_exact(i4 %x) {
2988 ; CHECK-LABEL: @ashrsgt_03_03_exact(
2989 ; CHECK-NEXT: ret i1 false
2991 %s = ashr exact i4 %x, 3
2992 %c = icmp sgt i4 %s, 3
2996 define i1 @ashrsgt_03_04_exact(i4 %x) {
2997 ; CHECK-LABEL: @ashrsgt_03_04_exact(
2998 ; CHECK-NEXT: ret i1 false
3000 %s = ashr exact i4 %x, 3
3001 %c = icmp sgt i4 %s, 4
3005 define i1 @ashrsgt_03_05_exact(i4 %x) {
3006 ; CHECK-LABEL: @ashrsgt_03_05_exact(
3007 ; CHECK-NEXT: ret i1 false
3009 %s = ashr exact i4 %x, 3
3010 %c = icmp sgt i4 %s, 5
3014 define i1 @ashrsgt_03_06_exact(i4 %x) {
3015 ; CHECK-LABEL: @ashrsgt_03_06_exact(
3016 ; CHECK-NEXT: ret i1 false
3018 %s = ashr exact i4 %x, 3
3019 %c = icmp sgt i4 %s, 6
3023 define i1 @ashrsgt_03_07_exact(i4 %x) {
3024 ; CHECK-LABEL: @ashrsgt_03_07_exact(
3025 ; CHECK-NEXT: ret i1 false
3027 %s = ashr exact i4 %x, 3
3028 %c = icmp sgt i4 %s, 7
3032 define i1 @ashrsgt_03_08_exact(i4 %x) {
3033 ; CHECK-LABEL: @ashrsgt_03_08_exact(
3034 ; CHECK-NEXT: ret i1 true
3036 %s = ashr exact i4 %x, 3
3037 %c = icmp sgt i4 %s, 8
3041 define i1 @ashrsgt_03_09_exact(i4 %x) {
3042 ; CHECK-LABEL: @ashrsgt_03_09_exact(
3043 ; CHECK-NEXT: ret i1 true
3045 %s = ashr exact i4 %x, 3
3046 %c = icmp sgt i4 %s, 9
3050 define i1 @ashrsgt_03_10_exact(i4 %x) {
3051 ; CHECK-LABEL: @ashrsgt_03_10_exact(
3052 ; CHECK-NEXT: ret i1 true
3054 %s = ashr exact i4 %x, 3
3055 %c = icmp sgt i4 %s, 10
3059 define i1 @ashrsgt_03_11_exact(i4 %x) {
3060 ; CHECK-LABEL: @ashrsgt_03_11_exact(
3061 ; CHECK-NEXT: ret i1 true
3063 %s = ashr exact i4 %x, 3
3064 %c = icmp sgt i4 %s, 11
3068 define i1 @ashrsgt_03_12_exact(i4 %x) {
3069 ; CHECK-LABEL: @ashrsgt_03_12_exact(
3070 ; CHECK-NEXT: ret i1 true
3072 %s = ashr exact i4 %x, 3
3073 %c = icmp sgt i4 %s, 12
3077 define i1 @ashrsgt_03_13_exact(i4 %x) {
3078 ; CHECK-LABEL: @ashrsgt_03_13_exact(
3079 ; CHECK-NEXT: ret i1 true
3081 %s = ashr exact i4 %x, 3
3082 %c = icmp sgt i4 %s, 13
3086 define i1 @ashrsgt_03_14_exact(i4 %x) {
3087 ; CHECK-LABEL: @ashrsgt_03_14_exact(
3088 ; CHECK-NEXT: ret i1 true
3090 %s = ashr exact i4 %x, 3
3091 %c = icmp sgt i4 %s, 14
3095 define i1 @ashrsgt_03_15_exact(i4 %x) {
3096 ; CHECK-LABEL: @ashrsgt_03_15_exact(
3097 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
3098 ; CHECK-NEXT: ret i1 [[C]]
3100 %s = ashr exact i4 %x, 3
3101 %c = icmp sgt i4 %s, 15
3105 define i1 @ashrslt_01_00_exact(i4 %x) {
3106 ; CHECK-LABEL: @ashrslt_01_00_exact(
3107 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
3108 ; CHECK-NEXT: ret i1 [[C]]
3110 %s = ashr exact i4 %x, 1
3111 %c = icmp slt i4 %s, 0
3115 define i1 @ashrslt_01_01_exact(i4 %x) {
3116 ; CHECK-LABEL: @ashrslt_01_01_exact(
3117 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 2
3118 ; CHECK-NEXT: ret i1 [[C]]
3120 %s = ashr exact i4 %x, 1
3121 %c = icmp slt i4 %s, 1
3125 define i1 @ashrslt_01_02_exact(i4 %x) {
3126 ; CHECK-LABEL: @ashrslt_01_02_exact(
3127 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 4
3128 ; CHECK-NEXT: ret i1 [[C]]
3130 %s = ashr exact i4 %x, 1
3131 %c = icmp slt i4 %s, 2
3135 define i1 @ashrslt_01_03_exact(i4 %x) {
3136 ; CHECK-LABEL: @ashrslt_01_03_exact(
3137 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 6
3138 ; CHECK-NEXT: ret i1 [[C]]
3140 %s = ashr exact i4 %x, 1
3141 %c = icmp slt i4 %s, 3
3145 define i1 @ashrslt_01_04_exact(i4 %x) {
3146 ; CHECK-LABEL: @ashrslt_01_04_exact(
3147 ; CHECK-NEXT: ret i1 true
3149 %s = ashr exact i4 %x, 1
3150 %c = icmp slt i4 %s, 4
3154 define i1 @ashrslt_01_05_exact(i4 %x) {
3155 ; CHECK-LABEL: @ashrslt_01_05_exact(
3156 ; CHECK-NEXT: ret i1 true
3158 %s = ashr exact i4 %x, 1
3159 %c = icmp slt i4 %s, 5
3163 define i1 @ashrslt_01_06_exact(i4 %x) {
3164 ; CHECK-LABEL: @ashrslt_01_06_exact(
3165 ; CHECK-NEXT: ret i1 true
3167 %s = ashr exact i4 %x, 1
3168 %c = icmp slt i4 %s, 6
3172 define i1 @ashrslt_01_07_exact(i4 %x) {
3173 ; CHECK-LABEL: @ashrslt_01_07_exact(
3174 ; CHECK-NEXT: ret i1 true
3176 %s = ashr exact i4 %x, 1
3177 %c = icmp slt i4 %s, 7
3181 define i1 @ashrslt_01_08_exact(i4 %x) {
3182 ; CHECK-LABEL: @ashrslt_01_08_exact(
3183 ; CHECK-NEXT: ret i1 false
3185 %s = ashr exact i4 %x, 1
3186 %c = icmp slt i4 %s, 8
3190 define i1 @ashrslt_01_09_exact(i4 %x) {
3191 ; CHECK-LABEL: @ashrslt_01_09_exact(
3192 ; CHECK-NEXT: ret i1 false
3194 %s = ashr exact i4 %x, 1
3195 %c = icmp slt i4 %s, 9
3199 define i1 @ashrslt_01_10_exact(i4 %x) {
3200 ; CHECK-LABEL: @ashrslt_01_10_exact(
3201 ; CHECK-NEXT: ret i1 false
3203 %s = ashr exact i4 %x, 1
3204 %c = icmp slt i4 %s, 10
3208 define i1 @ashrslt_01_11_exact(i4 %x) {
3209 ; CHECK-LABEL: @ashrslt_01_11_exact(
3210 ; CHECK-NEXT: ret i1 false
3212 %s = ashr exact i4 %x, 1
3213 %c = icmp slt i4 %s, 11
3217 define i1 @ashrslt_01_12_exact(i4 %x) {
3218 ; CHECK-LABEL: @ashrslt_01_12_exact(
3219 ; CHECK-NEXT: ret i1 false
3221 %s = ashr exact i4 %x, 1
3222 %c = icmp slt i4 %s, 12
3226 define i1 @ashrslt_01_13_exact(i4 %x) {
3227 ; CHECK-LABEL: @ashrslt_01_13_exact(
3228 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -6
3229 ; CHECK-NEXT: ret i1 [[C]]
3231 %s = ashr exact i4 %x, 1
3232 %c = icmp slt i4 %s, 13
3236 define i1 @ashrslt_01_14_exact(i4 %x) {
3237 ; CHECK-LABEL: @ashrslt_01_14_exact(
3238 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -4
3239 ; CHECK-NEXT: ret i1 [[C]]
3241 %s = ashr exact i4 %x, 1
3242 %c = icmp slt i4 %s, 14
3246 define i1 @ashrslt_01_15_exact(i4 %x) {
3247 ; CHECK-LABEL: @ashrslt_01_15_exact(
3248 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -2
3249 ; CHECK-NEXT: ret i1 [[C]]
3251 %s = ashr exact i4 %x, 1
3252 %c = icmp slt i4 %s, 15
3256 define i1 @ashrslt_02_00_exact(i4 %x) {
3257 ; CHECK-LABEL: @ashrslt_02_00_exact(
3258 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
3259 ; CHECK-NEXT: ret i1 [[C]]
3261 %s = ashr exact i4 %x, 2
3262 %c = icmp slt i4 %s, 0
3266 define i1 @ashrslt_02_01_exact(i4 %x) {
3267 ; CHECK-LABEL: @ashrslt_02_01_exact(
3268 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 4
3269 ; CHECK-NEXT: ret i1 [[C]]
3271 %s = ashr exact i4 %x, 2
3272 %c = icmp slt i4 %s, 1
3276 define i1 @ashrslt_02_02_exact(i4 %x) {
3277 ; CHECK-LABEL: @ashrslt_02_02_exact(
3278 ; CHECK-NEXT: ret i1 true
3280 %s = ashr exact i4 %x, 2
3281 %c = icmp slt i4 %s, 2
3285 define i1 @ashrslt_02_03_exact(i4 %x) {
3286 ; CHECK-LABEL: @ashrslt_02_03_exact(
3287 ; CHECK-NEXT: ret i1 true
3289 %s = ashr exact i4 %x, 2
3290 %c = icmp slt i4 %s, 3
3294 define i1 @ashrslt_02_04_exact(i4 %x) {
3295 ; CHECK-LABEL: @ashrslt_02_04_exact(
3296 ; CHECK-NEXT: ret i1 true
3298 %s = ashr exact i4 %x, 2
3299 %c = icmp slt i4 %s, 4
3303 define i1 @ashrslt_02_05_exact(i4 %x) {
3304 ; CHECK-LABEL: @ashrslt_02_05_exact(
3305 ; CHECK-NEXT: ret i1 true
3307 %s = ashr exact i4 %x, 2
3308 %c = icmp slt i4 %s, 5
3312 define i1 @ashrslt_02_06_exact(i4 %x) {
3313 ; CHECK-LABEL: @ashrslt_02_06_exact(
3314 ; CHECK-NEXT: ret i1 true
3316 %s = ashr exact i4 %x, 2
3317 %c = icmp slt i4 %s, 6
3321 define i1 @ashrslt_02_07_exact(i4 %x) {
3322 ; CHECK-LABEL: @ashrslt_02_07_exact(
3323 ; CHECK-NEXT: ret i1 true
3325 %s = ashr exact i4 %x, 2
3326 %c = icmp slt i4 %s, 7
3330 define i1 @ashrslt_02_08_exact(i4 %x) {
3331 ; CHECK-LABEL: @ashrslt_02_08_exact(
3332 ; CHECK-NEXT: ret i1 false
3334 %s = ashr exact i4 %x, 2
3335 %c = icmp slt i4 %s, 8
3339 define i1 @ashrslt_02_09_exact(i4 %x) {
3340 ; CHECK-LABEL: @ashrslt_02_09_exact(
3341 ; CHECK-NEXT: ret i1 false
3343 %s = ashr exact i4 %x, 2
3344 %c = icmp slt i4 %s, 9
3348 define i1 @ashrslt_02_10_exact(i4 %x) {
3349 ; CHECK-LABEL: @ashrslt_02_10_exact(
3350 ; CHECK-NEXT: ret i1 false
3352 %s = ashr exact i4 %x, 2
3353 %c = icmp slt i4 %s, 10
3357 define i1 @ashrslt_02_11_exact(i4 %x) {
3358 ; CHECK-LABEL: @ashrslt_02_11_exact(
3359 ; CHECK-NEXT: ret i1 false
3361 %s = ashr exact i4 %x, 2
3362 %c = icmp slt i4 %s, 11
3366 define i1 @ashrslt_02_12_exact(i4 %x) {
3367 ; CHECK-LABEL: @ashrslt_02_12_exact(
3368 ; CHECK-NEXT: ret i1 false
3370 %s = ashr exact i4 %x, 2
3371 %c = icmp slt i4 %s, 12
3375 define i1 @ashrslt_02_13_exact(i4 %x) {
3376 ; CHECK-LABEL: @ashrslt_02_13_exact(
3377 ; CHECK-NEXT: ret i1 false
3379 %s = ashr exact i4 %x, 2
3380 %c = icmp slt i4 %s, 13
3384 define i1 @ashrslt_02_14_exact(i4 %x) {
3385 ; CHECK-LABEL: @ashrslt_02_14_exact(
3386 ; CHECK-NEXT: ret i1 false
3388 %s = ashr exact i4 %x, 2
3389 %c = icmp slt i4 %s, 14
3393 define i1 @ashrslt_02_15_exact(i4 %x) {
3394 ; CHECK-LABEL: @ashrslt_02_15_exact(
3395 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -4
3396 ; CHECK-NEXT: ret i1 [[C]]
3398 %s = ashr exact i4 %x, 2
3399 %c = icmp slt i4 %s, 15
3403 define i1 @ashrslt_03_00_exact(i4 %x) {
3404 ; CHECK-LABEL: @ashrslt_03_00_exact(
3405 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
3406 ; CHECK-NEXT: ret i1 [[C]]
3408 %s = ashr exact i4 %x, 3
3409 %c = icmp slt i4 %s, 0
3413 define i1 @ashrslt_03_01_exact(i4 %x) {
3414 ; CHECK-LABEL: @ashrslt_03_01_exact(
3415 ; CHECK-NEXT: ret i1 true
3417 %s = ashr exact i4 %x, 3
3418 %c = icmp slt i4 %s, 1
3422 define i1 @ashrslt_03_02_exact(i4 %x) {
3423 ; CHECK-LABEL: @ashrslt_03_02_exact(
3424 ; CHECK-NEXT: ret i1 true
3426 %s = ashr exact i4 %x, 3
3427 %c = icmp slt i4 %s, 2
3431 define i1 @ashrslt_03_03_exact(i4 %x) {
3432 ; CHECK-LABEL: @ashrslt_03_03_exact(
3433 ; CHECK-NEXT: ret i1 true
3435 %s = ashr exact i4 %x, 3
3436 %c = icmp slt i4 %s, 3
3440 define i1 @ashrslt_03_04_exact(i4 %x) {
3441 ; CHECK-LABEL: @ashrslt_03_04_exact(
3442 ; CHECK-NEXT: ret i1 true
3444 %s = ashr exact i4 %x, 3
3445 %c = icmp slt i4 %s, 4
3449 define i1 @ashrslt_03_05_exact(i4 %x) {
3450 ; CHECK-LABEL: @ashrslt_03_05_exact(
3451 ; CHECK-NEXT: ret i1 true
3453 %s = ashr exact i4 %x, 3
3454 %c = icmp slt i4 %s, 5
3458 define i1 @ashrslt_03_06_exact(i4 %x) {
3459 ; CHECK-LABEL: @ashrslt_03_06_exact(
3460 ; CHECK-NEXT: ret i1 true
3462 %s = ashr exact i4 %x, 3
3463 %c = icmp slt i4 %s, 6
3467 define i1 @ashrslt_03_07_exact(i4 %x) {
3468 ; CHECK-LABEL: @ashrslt_03_07_exact(
3469 ; CHECK-NEXT: ret i1 true
3471 %s = ashr exact i4 %x, 3
3472 %c = icmp slt i4 %s, 7
3476 define i1 @ashrslt_03_08_exact(i4 %x) {
3477 ; CHECK-LABEL: @ashrslt_03_08_exact(
3478 ; CHECK-NEXT: ret i1 false
3480 %s = ashr exact i4 %x, 3
3481 %c = icmp slt i4 %s, 8
3485 define i1 @ashrslt_03_09_exact(i4 %x) {
3486 ; CHECK-LABEL: @ashrslt_03_09_exact(
3487 ; CHECK-NEXT: ret i1 false
3489 %s = ashr exact i4 %x, 3
3490 %c = icmp slt i4 %s, 9
3494 define i1 @ashrslt_03_10_exact(i4 %x) {
3495 ; CHECK-LABEL: @ashrslt_03_10_exact(
3496 ; CHECK-NEXT: ret i1 false
3498 %s = ashr exact i4 %x, 3
3499 %c = icmp slt i4 %s, 10
3503 define i1 @ashrslt_03_11_exact(i4 %x) {
3504 ; CHECK-LABEL: @ashrslt_03_11_exact(
3505 ; CHECK-NEXT: ret i1 false
3507 %s = ashr exact i4 %x, 3
3508 %c = icmp slt i4 %s, 11
3512 define i1 @ashrslt_03_12_exact(i4 %x) {
3513 ; CHECK-LABEL: @ashrslt_03_12_exact(
3514 ; CHECK-NEXT: ret i1 false
3516 %s = ashr exact i4 %x, 3
3517 %c = icmp slt i4 %s, 12
3521 define i1 @ashrslt_03_13_exact(i4 %x) {
3522 ; CHECK-LABEL: @ashrslt_03_13_exact(
3523 ; CHECK-NEXT: ret i1 false
3525 %s = ashr exact i4 %x, 3
3526 %c = icmp slt i4 %s, 13
3530 define i1 @ashrslt_03_14_exact(i4 %x) {
3531 ; CHECK-LABEL: @ashrslt_03_14_exact(
3532 ; CHECK-NEXT: ret i1 false
3534 %s = ashr exact i4 %x, 3
3535 %c = icmp slt i4 %s, 14
3539 define i1 @ashrslt_03_15_exact(i4 %x) {
3540 ; CHECK-LABEL: @ashrslt_03_15_exact(
3541 ; CHECK-NEXT: ret i1 false
3543 %s = ashr exact i4 %x, 3
3544 %c = icmp slt i4 %s, 15