Lines Matching +full:- +full:c
2 ; RUN: opt < %s -passes=instcombine -S | FileCheck %s
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
11 ret i1 %c
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
21 ret i1 %c
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
31 ret i1 %c
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
41 ret i1 %c
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
51 ret i1 %c
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
61 ret i1 %c
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
71 ret i1 %c
75 ; CHECK-LABEL: @lshrugt_01_07(
76 ; CHECK-NEXT: ret i1 false
79 %c = icmp ugt i4 %s, 7
80 ret i1 %c
84 ; CHECK-LABEL: @lshrugt_01_08(
85 ; CHECK-NEXT: ret i1 false
88 %c = icmp ugt i4 %s, 8
89 ret i1 %c
93 ; CHECK-LABEL: @lshrugt_01_09(
94 ; CHECK-NEXT: ret i1 false
97 %c = icmp ugt i4 %s, 9
98 ret i1 %c
102 ; CHECK-LABEL: @lshrugt_01_10(
103 ; CHECK-NEXT: ret i1 false
106 %c = icmp ugt i4 %s, 10
107 ret i1 %c
111 ; CHECK-LABEL: @lshrugt_01_11(
112 ; CHECK-NEXT: ret i1 false
115 %c = icmp ugt i4 %s, 11
116 ret i1 %c
120 ; CHECK-LABEL: @lshrugt_01_12(
121 ; CHECK-NEXT: ret i1 false
124 %c = icmp ugt i4 %s, 12
125 ret i1 %c
129 ; CHECK-LABEL: @lshrugt_01_13(
130 ; CHECK-NEXT: ret i1 false
133 %c = icmp ugt i4 %s, 13
134 ret i1 %c
138 ; CHECK-LABEL: @lshrugt_01_14(
139 ; CHECK-NEXT: ret i1 false
142 %c = icmp ugt i4 %s, 14
143 ret i1 %c
147 ; CHECK-LABEL: @lshrugt_01_15(
148 ; CHECK-NEXT: ret i1 false
151 %c = icmp ugt i4 %s, 15
152 ret i1 %c
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
162 ret i1 %c
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
172 ret i1 %c
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
182 ret i1 %c
186 ; CHECK-LABEL: @lshrugt_02_03(
187 ; CHECK-NEXT: ret i1 false
190 %c = icmp ugt i4 %s, 3
191 ret i1 %c
195 ; CHECK-LABEL: @lshrugt_02_04(
196 ; CHECK-NEXT: ret i1 false
199 %c = icmp ugt i4 %s, 4
200 ret i1 %c
204 ; CHECK-LABEL: @lshrugt_02_05(
205 ; CHECK-NEXT: ret i1 false
208 %c = icmp ugt i4 %s, 5
209 ret i1 %c
213 ; CHECK-LABEL: @lshrugt_02_06(
214 ; CHECK-NEXT: ret i1 false
217 %c = icmp ugt i4 %s, 6
218 ret i1 %c
222 ; CHECK-LABEL: @lshrugt_02_07(
223 ; CHECK-NEXT: ret i1 false
226 %c = icmp ugt i4 %s, 7
227 ret i1 %c
231 ; CHECK-LABEL: @lshrugt_02_08(
232 ; CHECK-NEXT: ret i1 false
235 %c = icmp ugt i4 %s, 8
236 ret i1 %c
240 ; CHECK-LABEL: @lshrugt_02_09(
241 ; CHECK-NEXT: ret i1 false
244 %c = icmp ugt i4 %s, 9
245 ret i1 %c
249 ; CHECK-LABEL: @lshrugt_02_10(
250 ; CHECK-NEXT: ret i1 false
253 %c = icmp ugt i4 %s, 10
254 ret i1 %c
258 ; CHECK-LABEL: @lshrugt_02_11(
259 ; CHECK-NEXT: ret i1 false
262 %c = icmp ugt i4 %s, 11
263 ret i1 %c
267 ; CHECK-LABEL: @lshrugt_02_12(
268 ; CHECK-NEXT: ret i1 false
271 %c = icmp ugt i4 %s, 12
272 ret i1 %c
276 ; CHECK-LABEL: @lshrugt_02_13(
277 ; CHECK-NEXT: ret i1 false
280 %c = icmp ugt i4 %s, 13
281 ret i1 %c
285 ; CHECK-LABEL: @lshrugt_02_14(
286 ; CHECK-NEXT: ret i1 false
289 %c = icmp ugt i4 %s, 14
290 ret i1 %c
294 ; CHECK-LABEL: @lshrugt_02_15(
295 ; CHECK-NEXT: ret i1 false
298 %c = icmp ugt i4 %s, 15
299 ret i1 %c
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
309 ret i1 %c
313 ; CHECK-LABEL: @lshrugt_03_01(
314 ; CHECK-NEXT: ret i1 false
317 %c = icmp ugt i4 %s, 1
318 ret i1 %c
322 ; CHECK-LABEL: @lshrugt_03_02(
323 ; CHECK-NEXT: ret i1 false
326 %c = icmp ugt i4 %s, 2
327 ret i1 %c
331 ; CHECK-LABEL: @lshrugt_03_03(
332 ; CHECK-NEXT: ret i1 false
335 %c = icmp ugt i4 %s, 3
336 ret i1 %c
340 ; CHECK-LABEL: @lshrugt_03_04(
341 ; CHECK-NEXT: ret i1 false
344 %c = icmp ugt i4 %s, 4
345 ret i1 %c
349 ; CHECK-LABEL: @lshrugt_03_05(
350 ; CHECK-NEXT: ret i1 false
353 %c = icmp ugt i4 %s, 5
354 ret i1 %c
358 ; CHECK-LABEL: @lshrugt_03_06(
359 ; CHECK-NEXT: ret i1 false
362 %c = icmp ugt i4 %s, 6
363 ret i1 %c
367 ; CHECK-LABEL: @lshrugt_03_07(
368 ; CHECK-NEXT: ret i1 false
371 %c = icmp ugt i4 %s, 7
372 ret i1 %c
376 ; CHECK-LABEL: @lshrugt_03_08(
377 ; CHECK-NEXT: ret i1 false
380 %c = icmp ugt i4 %s, 8
381 ret i1 %c
385 ; CHECK-LABEL: @lshrugt_03_09(
386 ; CHECK-NEXT: ret i1 false
389 %c = icmp ugt i4 %s, 9
390 ret i1 %c
394 ; CHECK-LABEL: @lshrugt_03_10(
395 ; CHECK-NEXT: ret i1 false
398 %c = icmp ugt i4 %s, 10
399 ret i1 %c
403 ; CHECK-LABEL: @lshrugt_03_11(
404 ; CHECK-NEXT: ret i1 false
407 %c = icmp ugt i4 %s, 11
408 ret i1 %c
412 ; CHECK-LABEL: @lshrugt_03_12(
413 ; CHECK-NEXT: ret i1 false
416 %c = icmp ugt i4 %s, 12
417 ret i1 %c
421 ; CHECK-LABEL: @lshrugt_03_13(
422 ; CHECK-NEXT: ret i1 false
425 %c = icmp ugt i4 %s, 13
426 ret i1 %c
430 ; CHECK-LABEL: @lshrugt_03_14(
431 ; CHECK-NEXT: ret i1 false
434 %c = icmp ugt i4 %s, 14
435 ret i1 %c
439 ; CHECK-LABEL: @lshrugt_03_15(
440 ; CHECK-NEXT: ret i1 false
443 %c = icmp ugt i4 %s, 15
444 ret i1 %c
448 ; CHECK-LABEL: @lshrult_01_00(
449 ; CHECK-NEXT: ret i1 false
452 %c = icmp ult i4 %s, 0
453 ret i1 %c
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
463 ret i1 %c
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
473 ret i1 %c
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
483 ret i1 %c
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
493 ret i1 %c
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
503 ret i1 %c
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
513 ret i1 %c
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
523 ret i1 %c
527 ; CHECK-LABEL: @lshrult_01_08(
528 ; CHECK-NEXT: ret i1 true
531 %c = icmp ult i4 %s, 8
532 ret i1 %c
536 ; CHECK-LABEL: @lshrult_01_09(
537 ; CHECK-NEXT: ret i1 true
540 %c = icmp ult i4 %s, 9
541 ret i1 %c
545 ; CHECK-LABEL: @lshrult_01_10(
546 ; CHECK-NEXT: ret i1 true
549 %c = icmp ult i4 %s, 10
550 ret i1 %c
554 ; CHECK-LABEL: @lshrult_01_11(
555 ; CHECK-NEXT: ret i1 true
558 %c = icmp ult i4 %s, 11
559 ret i1 %c
563 ; CHECK-LABEL: @lshrult_01_12(
564 ; CHECK-NEXT: ret i1 true
567 %c = icmp ult i4 %s, 12
568 ret i1 %c
572 ; CHECK-LABEL: @lshrult_01_13(
573 ; CHECK-NEXT: ret i1 true
576 %c = icmp ult i4 %s, 13
577 ret i1 %c
581 ; CHECK-LABEL: @lshrult_01_14(
582 ; CHECK-NEXT: ret i1 true
585 %c = icmp ult i4 %s, 14
586 ret i1 %c
590 ; CHECK-LABEL: @lshrult_01_15(
591 ; CHECK-NEXT: ret i1 true
594 %c = icmp ult i4 %s, 15
595 ret i1 %c
599 ; CHECK-LABEL: @lshrult_02_00(
600 ; CHECK-NEXT: ret i1 false
603 %c = icmp ult i4 %s, 0
604 ret i1 %c
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
614 ret i1 %c
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
624 ret i1 %c
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
634 ret i1 %c
638 ; CHECK-LABEL: @lshrult_02_04(
639 ; CHECK-NEXT: ret i1 true
642 %c = icmp ult i4 %s, 4
643 ret i1 %c
647 ; CHECK-LABEL: @lshrult_02_05(
648 ; CHECK-NEXT: ret i1 true
651 %c = icmp ult i4 %s, 5
652 ret i1 %c
656 ; CHECK-LABEL: @lshrult_02_06(
657 ; CHECK-NEXT: ret i1 true
660 %c = icmp ult i4 %s, 6
661 ret i1 %c
665 ; CHECK-LABEL: @lshrult_02_07(
666 ; CHECK-NEXT: ret i1 true
669 %c = icmp ult i4 %s, 7
670 ret i1 %c
674 ; CHECK-LABEL: @lshrult_02_08(
675 ; CHECK-NEXT: ret i1 true
678 %c = icmp ult i4 %s, 8
679 ret i1 %c
683 ; CHECK-LABEL: @lshrult_02_09(
684 ; CHECK-NEXT: ret i1 true
687 %c = icmp ult i4 %s, 9
688 ret i1 %c
692 ; CHECK-LABEL: @lshrult_02_10(
693 ; CHECK-NEXT: ret i1 true
696 %c = icmp ult i4 %s, 10
697 ret i1 %c
701 ; CHECK-LABEL: @lshrult_02_11(
702 ; CHECK-NEXT: ret i1 true
705 %c = icmp ult i4 %s, 11
706 ret i1 %c
710 ; CHECK-LABEL: @lshrult_02_12(
711 ; CHECK-NEXT: ret i1 true
714 %c = icmp ult i4 %s, 12
715 ret i1 %c
719 ; CHECK-LABEL: @lshrult_02_13(
720 ; CHECK-NEXT: ret i1 true
723 %c = icmp ult i4 %s, 13
724 ret i1 %c
728 ; CHECK-LABEL: @lshrult_02_14(
729 ; CHECK-NEXT: ret i1 true
732 %c = icmp ult i4 %s, 14
733 ret i1 %c
737 ; CHECK-LABEL: @lshrult_02_15(
738 ; CHECK-NEXT: ret i1 true
741 %c = icmp ult i4 %s, 15
742 ret i1 %c
746 ; CHECK-LABEL: @lshrult_03_00(
747 ; CHECK-NEXT: ret i1 false
750 %c = icmp ult i4 %s, 0
751 ret i1 %c
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
761 ret i1 %c
765 ; CHECK-LABEL: @lshrult_03_02(
766 ; CHECK-NEXT: ret i1 true
769 %c = icmp ult i4 %s, 2
770 ret i1 %c
774 ; CHECK-LABEL: @lshrult_03_03(
775 ; CHECK-NEXT: ret i1 true
778 %c = icmp ult i4 %s, 3
779 ret i1 %c
783 ; CHECK-LABEL: @lshrult_03_04(
784 ; CHECK-NEXT: ret i1 true
787 %c = icmp ult i4 %s, 4
788 ret i1 %c
792 ; CHECK-LABEL: @lshrult_03_05(
793 ; CHECK-NEXT: ret i1 true
796 %c = icmp ult i4 %s, 5
797 ret i1 %c
801 ; CHECK-LABEL: @lshrult_03_06(
802 ; CHECK-NEXT: ret i1 true
805 %c = icmp ult i4 %s, 6
806 ret i1 %c
810 ; CHECK-LABEL: @lshrult_03_07(
811 ; CHECK-NEXT: ret i1 true
814 %c = icmp ult i4 %s, 7
815 ret i1 %c
819 ; CHECK-LABEL: @lshrult_03_08(
820 ; CHECK-NEXT: ret i1 true
823 %c = icmp ult i4 %s, 8
824 ret i1 %c
828 ; CHECK-LABEL: @lshrult_03_09(
829 ; CHECK-NEXT: ret i1 true
832 %c = icmp ult i4 %s, 9
833 ret i1 %c
837 ; CHECK-LABEL: @lshrult_03_10(
838 ; CHECK-NEXT: ret i1 true
841 %c = icmp ult i4 %s, 10
842 ret i1 %c
846 ; CHECK-LABEL: @lshrult_03_11(
847 ; CHECK-NEXT: ret i1 true
850 %c = icmp ult i4 %s, 11
851 ret i1 %c
855 ; CHECK-LABEL: @lshrult_03_12(
856 ; CHECK-NEXT: ret i1 true
859 %c = icmp ult i4 %s, 12
860 ret i1 %c
864 ; CHECK-LABEL: @lshrult_03_13(
865 ; CHECK-NEXT: ret i1 true
868 %c = icmp ult i4 %s, 13
869 ret i1 %c
873 ; CHECK-LABEL: @lshrult_03_14(
874 ; CHECK-NEXT: ret i1 true
877 %c = icmp ult i4 %s, 14
878 ret i1 %c
882 ; CHECK-LABEL: @lshrult_03_15(
883 ; CHECK-NEXT: ret i1 true
886 %c = icmp ult i4 %s, 15
887 ret i1 %c
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
897 ret i1 %c
901 ; CHECK-LABEL: @ashrsgt_01_00_multiuse(
902 ; CHECK-NEXT: [[S:%.*]] = ashr i4 [[X:%.*]], 1
903 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[S]], 0
904 ; CHECK-NEXT: store i4 [[S]], ptr [[P:%.*]], align 1
905 ; CHECK-NEXT: ret i1 [[C]]
908 %c = icmp sgt i4 %s, 0
910 ret i1 %c
914 ; CHECK-LABEL: @ashrsgt_01_01(
915 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 3
916 ; CHECK-NEXT: ret i1 [[C]]
919 %c = icmp sgt i4 %s, 1
920 ret i1 %c
924 ; CHECK-LABEL: @ashrsgt_01_02(
925 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 5
926 ; CHECK-NEXT: ret i1 [[C]]
929 %c = icmp sgt i4 %s, 2
930 ret i1 %c
934 ; CHECK-LABEL: @ashrsgt_01_03(
935 ; CHECK-NEXT: ret i1 false
938 %c = icmp sgt i4 %s, 3
939 ret i1 %c
943 ; CHECK-LABEL: @ashrsgt_01_04(
944 ; CHECK-NEXT: ret i1 false
947 %c = icmp sgt i4 %s, 4
948 ret i1 %c
952 ; CHECK-LABEL: @ashrsgt_01_05(
953 ; CHECK-NEXT: ret i1 false
956 %c = icmp sgt i4 %s, 5
957 ret i1 %c
961 ; CHECK-LABEL: @ashrsgt_01_06(
962 ; CHECK-NEXT: ret i1 false
965 %c = icmp sgt i4 %s, 6
966 ret i1 %c
970 ; CHECK-LABEL: @ashrsgt_01_07(
971 ; CHECK-NEXT: ret i1 false
974 %c = icmp sgt i4 %s, 7
975 ret i1 %c
979 ; CHECK-LABEL: @ashrsgt_01_08(
980 ; CHECK-NEXT: ret i1 true
983 %c = icmp sgt i4 %s, 8
984 ret i1 %c
988 ; CHECK-LABEL: @ashrsgt_01_09(
989 ; CHECK-NEXT: ret i1 true
992 %c = icmp sgt i4 %s, 9
993 ret i1 %c
997 ; CHECK-LABEL: @ashrsgt_01_10(
998 ; CHECK-NEXT: ret i1 true
1001 %c = icmp sgt i4 %s, 10
1002 ret i1 %c
1006 ; CHECK-LABEL: @ashrsgt_01_11(
1007 ; CHECK-NEXT: ret i1 true
1010 %c = icmp sgt i4 %s, 11
1011 ret i1 %c
1015 ; CHECK-LABEL: @ashrsgt_01_12(
1016 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -7
1017 ; CHECK-NEXT: ret i1 [[C]]
1020 %c = icmp sgt i4 %s, 12
1021 ret i1 %c
1025 ; CHECK-LABEL: @ashrsgt_01_13(
1026 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -5
1027 ; CHECK-NEXT: ret i1 [[C]]
1030 %c = icmp sgt i4 %s, 13
1031 ret i1 %c
1035 ; CHECK-LABEL: @ashrsgt_01_14(
1036 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -3
1037 ; CHECK-NEXT: ret i1 [[C]]
1040 %c = icmp sgt i4 %s, 14
1041 ret i1 %c
1045 ; CHECK-LABEL: @ashrsgt_01_15(
1046 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
1047 ; CHECK-NEXT: ret i1 [[C]]
1050 %c = icmp sgt i4 %s, 15
1051 ret i1 %c
1055 ; CHECK-LABEL: @ashrsgt_02_00(
1056 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 3
1057 ; CHECK-NEXT: ret i1 [[C]]
1060 %c = icmp sgt i4 %s, 0
1061 ret i1 %c
1065 ; CHECK-LABEL: @ashrsgt_02_01(
1066 ; CHECK-NEXT: ret i1 false
1069 %c = icmp sgt i4 %s, 1
1070 ret i1 %c
1074 ; CHECK-LABEL: @ashrsgt_02_02(
1075 ; CHECK-NEXT: ret i1 false
1078 %c = icmp sgt i4 %s, 2
1079 ret i1 %c
1083 ; CHECK-LABEL: @ashrsgt_02_03(
1084 ; CHECK-NEXT: ret i1 false
1087 %c = icmp sgt i4 %s, 3
1088 ret i1 %c
1092 ; CHECK-LABEL: @ashrsgt_02_04(
1093 ; CHECK-NEXT: ret i1 false
1096 %c = icmp sgt i4 %s, 4
1097 ret i1 %c
1101 ; CHECK-LABEL: @ashrsgt_02_05(
1102 ; CHECK-NEXT: ret i1 false
1105 %c = icmp sgt i4 %s, 5
1106 ret i1 %c
1110 ; CHECK-LABEL: @ashrsgt_02_06(
1111 ; CHECK-NEXT: ret i1 false
1114 %c = icmp sgt i4 %s, 6
1115 ret i1 %c
1119 ; CHECK-LABEL: @ashrsgt_02_07(
1120 ; CHECK-NEXT: ret i1 false
1123 %c = icmp sgt i4 %s, 7
1124 ret i1 %c
1128 ; CHECK-LABEL: @ashrsgt_02_08(
1129 ; CHECK-NEXT: ret i1 true
1132 %c = icmp sgt i4 %s, 8
1133 ret i1 %c
1137 ; CHECK-LABEL: @ashrsgt_02_09(
1138 ; CHECK-NEXT: ret i1 true
1141 %c = icmp sgt i4 %s, 9
1142 ret i1 %c
1146 ; CHECK-LABEL: @ashrsgt_02_10(
1147 ; CHECK-NEXT: ret i1 true
1150 %c = icmp sgt i4 %s, 10
1151 ret i1 %c
1155 ; CHECK-LABEL: @ashrsgt_02_11(
1156 ; CHECK-NEXT: ret i1 true
1159 %c = icmp sgt i4 %s, 11
1160 ret i1 %c
1164 ; CHECK-LABEL: @ashrsgt_02_12(
1165 ; CHECK-NEXT: ret i1 true
1168 %c = icmp sgt i4 %s, 12
1169 ret i1 %c
1173 ; CHECK-LABEL: @ashrsgt_02_13(
1174 ; CHECK-NEXT: ret i1 true
1177 %c = icmp sgt i4 %s, 13
1178 ret i1 %c
1182 ; CHECK-LABEL: @ashrsgt_02_14(
1183 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -5
1184 ; CHECK-NEXT: ret i1 [[C]]
1187 %c = icmp sgt i4 %s, 14
1188 ret i1 %c
1192 ; CHECK-LABEL: @ashrsgt_02_15(
1193 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
1194 ; CHECK-NEXT: ret i1 [[C]]
1197 %c = icmp sgt i4 %s, 15
1198 ret i1 %c
1202 ; CHECK-LABEL: @ashrsgt_03_00(
1203 ; CHECK-NEXT: ret i1 false
1206 %c = icmp sgt i4 %s, 0
1207 ret i1 %c
1211 ; CHECK-LABEL: @ashrsgt_03_01(
1212 ; CHECK-NEXT: ret i1 false
1215 %c = icmp sgt i4 %s, 1
1216 ret i1 %c
1220 ; CHECK-LABEL: @ashrsgt_03_02(
1221 ; CHECK-NEXT: ret i1 false
1224 %c = icmp sgt i4 %s, 2
1225 ret i1 %c
1229 ; CHECK-LABEL: @ashrsgt_03_03(
1230 ; CHECK-NEXT: ret i1 false
1233 %c = icmp sgt i4 %s, 3
1234 ret i1 %c
1238 ; CHECK-LABEL: @ashrsgt_03_04(
1239 ; CHECK-NEXT: ret i1 false
1242 %c = icmp sgt i4 %s, 4
1243 ret i1 %c
1247 ; CHECK-LABEL: @ashrsgt_03_05(
1248 ; CHECK-NEXT: ret i1 false
1251 %c = icmp sgt i4 %s, 5
1252 ret i1 %c
1256 ; CHECK-LABEL: @ashrsgt_03_06(
1257 ; CHECK-NEXT: ret i1 false
1260 %c = icmp sgt i4 %s, 6
1261 ret i1 %c
1265 ; CHECK-LABEL: @ashrsgt_03_07(
1266 ; CHECK-NEXT: ret i1 false
1269 %c = icmp sgt i4 %s, 7
1270 ret i1 %c
1274 ; CHECK-LABEL: @ashrsgt_03_08(
1275 ; CHECK-NEXT: ret i1 true
1278 %c = icmp sgt i4 %s, 8
1279 ret i1 %c
1283 ; CHECK-LABEL: @ashrsgt_03_09(
1284 ; CHECK-NEXT: ret i1 true
1287 %c = icmp sgt i4 %s, 9
1288 ret i1 %c
1292 ; CHECK-LABEL: @ashrsgt_03_10(
1293 ; CHECK-NEXT: ret i1 true
1296 %c = icmp sgt i4 %s, 10
1297 ret i1 %c
1301 ; CHECK-LABEL: @ashrsgt_03_11(
1302 ; CHECK-NEXT: ret i1 true
1305 %c = icmp sgt i4 %s, 11
1306 ret i1 %c
1310 ; CHECK-LABEL: @ashrsgt_03_12(
1311 ; CHECK-NEXT: ret i1 true
1314 %c = icmp sgt i4 %s, 12
1315 ret i1 %c
1319 ; CHECK-LABEL: @ashrsgt_03_13(
1320 ; CHECK-NEXT: ret i1 true
1323 %c = icmp sgt i4 %s, 13
1324 ret i1 %c
1328 ; CHECK-LABEL: @ashrsgt_03_14(
1329 ; CHECK-NEXT: ret i1 true
1332 %c = icmp sgt i4 %s, 14
1333 ret i1 %c
1337 ; CHECK-LABEL: @ashrsgt_03_15(
1338 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
1339 ; CHECK-NEXT: ret i1 [[C]]
1342 %c = icmp sgt i4 %s, 15
1343 ret i1 %c
1347 ; CHECK-LABEL: @ashrslt_01_00(
1348 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
1349 ; CHECK-NEXT: ret i1 [[C]]
1352 %c = icmp slt i4 %s, 0
1353 ret i1 %c
1357 ; CHECK-LABEL: @ashrslt_01_01(
1358 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 2
1359 ; CHECK-NEXT: ret i1 [[C]]
1362 %c = icmp slt i4 %s, 1
1363 ret i1 %c
1367 ; CHECK-LABEL: @ashrslt_01_02(
1368 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 4
1369 ; CHECK-NEXT: ret i1 [[C]]
1372 %c = icmp slt i4 %s, 2
1373 ret i1 %c
1377 ; CHECK-LABEL: @ashrslt_01_03(
1378 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 6
1379 ; CHECK-NEXT: ret i1 [[C]]
1382 %c = icmp slt i4 %s, 3
1383 ret i1 %c
1387 ; CHECK-LABEL: @ashrslt_01_04(
1388 ; CHECK-NEXT: ret i1 true
1391 %c = icmp slt i4 %s, 4
1392 ret i1 %c
1396 ; CHECK-LABEL: @ashrslt_01_05(
1397 ; CHECK-NEXT: ret i1 true
1400 %c = icmp slt i4 %s, 5
1401 ret i1 %c
1405 ; CHECK-LABEL: @ashrslt_01_06(
1406 ; CHECK-NEXT: ret i1 true
1409 %c = icmp slt i4 %s, 6
1410 ret i1 %c
1414 ; CHECK-LABEL: @ashrslt_01_07(
1415 ; CHECK-NEXT: ret i1 true
1418 %c = icmp slt i4 %s, 7
1419 ret i1 %c
1423 ; CHECK-LABEL: @ashrslt_01_08(
1424 ; CHECK-NEXT: ret i1 false
1427 %c = icmp slt i4 %s, 8
1428 ret i1 %c
1432 ; CHECK-LABEL: @ashrslt_01_09(
1433 ; CHECK-NEXT: ret i1 false
1436 %c = icmp slt i4 %s, 9
1437 ret i1 %c
1441 ; CHECK-LABEL: @ashrslt_01_10(
1442 ; CHECK-NEXT: ret i1 false
1445 %c = icmp slt i4 %s, 10
1446 ret i1 %c
1450 ; CHECK-LABEL: @ashrslt_01_11(
1451 ; CHECK-NEXT: ret i1 false
1454 %c = icmp slt i4 %s, 11
1455 ret i1 %c
1459 ; CHECK-LABEL: @ashrslt_01_12(
1460 ; CHECK-NEXT: ret i1 false
1463 %c = icmp slt i4 %s, 12
1464 ret i1 %c
1468 ; CHECK-LABEL: @ashrslt_01_13(
1469 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -6
1470 ; CHECK-NEXT: ret i1 [[C]]
1473 %c = icmp slt i4 %s, 13
1474 ret i1 %c
1478 ; CHECK-LABEL: @ashrslt_01_14(
1479 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -4
1480 ; CHECK-NEXT: ret i1 [[C]]
1483 %c = icmp slt i4 %s, 14
1484 ret i1 %c
1488 ; CHECK-LABEL: @ashrslt_01_15(
1489 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -2
1490 ; CHECK-NEXT: ret i1 [[C]]
1493 %c = icmp slt i4 %s, 15
1494 ret i1 %c
1498 ; CHECK-LABEL: @ashrslt_02_00(
1499 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
1500 ; CHECK-NEXT: ret i1 [[C]]
1503 %c = icmp slt i4 %s, 0
1504 ret i1 %c
1508 ; CHECK-LABEL: @ashrslt_02_01(
1509 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 4
1510 ; CHECK-NEXT: ret i1 [[C]]
1513 %c = icmp slt i4 %s, 1
1514 ret i1 %c
1518 ; CHECK-LABEL: @ashrslt_02_02(
1519 ; CHECK-NEXT: ret i1 true
1522 %c = icmp slt i4 %s, 2
1523 ret i1 %c
1527 ; CHECK-LABEL: @ashrslt_02_03(
1528 ; CHECK-NEXT: ret i1 true
1531 %c = icmp slt i4 %s, 3
1532 ret i1 %c
1536 ; CHECK-LABEL: @ashrslt_02_04(
1537 ; CHECK-NEXT: ret i1 true
1540 %c = icmp slt i4 %s, 4
1541 ret i1 %c
1545 ; CHECK-LABEL: @ashrslt_02_05(
1546 ; CHECK-NEXT: ret i1 true
1549 %c = icmp slt i4 %s, 5
1550 ret i1 %c
1554 ; CHECK-LABEL: @ashrslt_02_06(
1555 ; CHECK-NEXT: ret i1 true
1558 %c = icmp slt i4 %s, 6
1559 ret i1 %c
1563 ; CHECK-LABEL: @ashrslt_02_07(
1564 ; CHECK-NEXT: ret i1 true
1567 %c = icmp slt i4 %s, 7
1568 ret i1 %c
1572 ; CHECK-LABEL: @ashrslt_02_08(
1573 ; CHECK-NEXT: ret i1 false
1576 %c = icmp slt i4 %s, 8
1577 ret i1 %c
1581 ; CHECK-LABEL: @ashrslt_02_09(
1582 ; CHECK-NEXT: ret i1 false
1585 %c = icmp slt i4 %s, 9
1586 ret i1 %c
1590 ; CHECK-LABEL: @ashrslt_02_10(
1591 ; CHECK-NEXT: ret i1 false
1594 %c = icmp slt i4 %s, 10
1595 ret i1 %c
1599 ; CHECK-LABEL: @ashrslt_02_11(
1600 ; CHECK-NEXT: ret i1 false
1603 %c = icmp slt i4 %s, 11
1604 ret i1 %c
1608 ; CHECK-LABEL: @ashrslt_02_12(
1609 ; CHECK-NEXT: ret i1 false
1612 %c = icmp slt i4 %s, 12
1613 ret i1 %c
1617 ; CHECK-LABEL: @ashrslt_02_13(
1618 ; CHECK-NEXT: ret i1 false
1621 %c = icmp slt i4 %s, 13
1622 ret i1 %c
1626 ; CHECK-LABEL: @ashrslt_02_14(
1627 ; CHECK-NEXT: ret i1 false
1630 %c = icmp slt i4 %s, 14
1631 ret i1 %c
1635 ; CHECK-LABEL: @ashrslt_02_15(
1636 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -4
1637 ; CHECK-NEXT: ret i1 [[C]]
1640 %c = icmp slt i4 %s, 15
1641 ret i1 %c
1645 ; CHECK-LABEL: @ashrslt_03_00(
1646 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
1647 ; CHECK-NEXT: ret i1 [[C]]
1650 %c = icmp slt i4 %s, 0
1651 ret i1 %c
1655 ; CHECK-LABEL: @ashrslt_03_01(
1656 ; CHECK-NEXT: ret i1 true
1659 %c = icmp slt i4 %s, 1
1660 ret i1 %c
1664 ; CHECK-LABEL: @ashrslt_03_02(
1665 ; CHECK-NEXT: ret i1 true
1668 %c = icmp slt i4 %s, 2
1669 ret i1 %c
1673 ; CHECK-LABEL: @ashrslt_03_03(
1674 ; CHECK-NEXT: ret i1 true
1677 %c = icmp slt i4 %s, 3
1678 ret i1 %c
1682 ; CHECK-LABEL: @ashrslt_03_04(
1683 ; CHECK-NEXT: ret i1 true
1686 %c = icmp slt i4 %s, 4
1687 ret i1 %c
1691 ; CHECK-LABEL: @ashrslt_03_05(
1692 ; CHECK-NEXT: ret i1 true
1695 %c = icmp slt i4 %s, 5
1696 ret i1 %c
1700 ; CHECK-LABEL: @ashrslt_03_06(
1701 ; CHECK-NEXT: ret i1 true
1704 %c = icmp slt i4 %s, 6
1705 ret i1 %c
1709 ; CHECK-LABEL: @ashrslt_03_07(
1710 ; CHECK-NEXT: ret i1 true
1713 %c = icmp slt i4 %s, 7
1714 ret i1 %c
1718 ; CHECK-LABEL: @ashrslt_03_08(
1719 ; CHECK-NEXT: ret i1 false
1722 %c = icmp slt i4 %s, 8
1723 ret i1 %c
1727 ; CHECK-LABEL: @ashrslt_03_09(
1728 ; CHECK-NEXT: ret i1 false
1731 %c = icmp slt i4 %s, 9
1732 ret i1 %c
1736 ; CHECK-LABEL: @ashrslt_03_10(
1737 ; CHECK-NEXT: ret i1 false
1740 %c = icmp slt i4 %s, 10
1741 ret i1 %c
1745 ; CHECK-LABEL: @ashrslt_03_11(
1746 ; CHECK-NEXT: ret i1 false
1749 %c = icmp slt i4 %s, 11
1750 ret i1 %c
1754 ; CHECK-LABEL: @ashrslt_03_12(
1755 ; CHECK-NEXT: ret i1 false
1758 %c = icmp slt i4 %s, 12
1759 ret i1 %c
1763 ; CHECK-LABEL: @ashrslt_03_13(
1764 ; CHECK-NEXT: ret i1 false
1767 %c = icmp slt i4 %s, 13
1768 ret i1 %c
1772 ; CHECK-LABEL: @ashrslt_03_14(
1773 ; CHECK-NEXT: ret i1 false
1776 %c = icmp slt i4 %s, 14
1777 ret i1 %c
1781 ; CHECK-LABEL: @ashrslt_03_15(
1782 ; CHECK-NEXT: ret i1 false
1785 %c = icmp slt i4 %s, 15
1786 ret i1 %c
1790 ; CHECK-LABEL: @lshrugt_01_00_exact(
1791 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], 0
1792 ; CHECK-NEXT: ret i1 [[C]]
1795 %c = icmp ugt i4 %s, 0
1796 ret i1 %c
1800 ; CHECK-LABEL: @lshrugt_01_01_exact(
1801 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 2
1802 ; CHECK-NEXT: ret i1 [[C]]
1805 %c = icmp ugt i4 %s, 1
1806 ret i1 %c
1810 ; CHECK-LABEL: @lshrugt_01_02_exact(
1811 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 4
1812 ; CHECK-NEXT: ret i1 [[C]]
1815 %c = icmp ugt i4 %s, 2
1816 ret i1 %c
1820 ; CHECK-LABEL: @lshrugt_01_03_exact(
1821 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 6
1822 ; CHECK-NEXT: ret i1 [[C]]
1825 %c = icmp ugt i4 %s, 3
1826 ret i1 %c
1830 ; CHECK-LABEL: @lshrugt_01_04_exact(
1831 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], -8
1832 ; CHECK-NEXT: ret i1 [[C]]
1835 %c = icmp ugt i4 %s, 4
1836 ret i1 %c
1840 ; CHECK-LABEL: @lshrugt_01_05_exact(
1841 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], -6
1842 ; CHECK-NEXT: ret i1 [[C]]
1845 %c = icmp ugt i4 %s, 5
1846 ret i1 %c
1850 ; CHECK-LABEL: @lshrugt_01_06_exact(
1851 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], -2
1852 ; CHECK-NEXT: ret i1 [[C]]
1855 %c = icmp ugt i4 %s, 6
1856 ret i1 %c
1860 ; CHECK-LABEL: @lshrugt_01_07_exact(
1861 ; CHECK-NEXT: ret i1 false
1864 %c = icmp ugt i4 %s, 7
1865 ret i1 %c
1869 ; CHECK-LABEL: @lshrugt_01_08_exact(
1870 ; CHECK-NEXT: ret i1 false
1873 %c = icmp ugt i4 %s, 8
1874 ret i1 %c
1878 ; CHECK-LABEL: @lshrugt_01_09_exact(
1879 ; CHECK-NEXT: ret i1 false
1882 %c = icmp ugt i4 %s, 9
1883 ret i1 %c
1887 ; CHECK-LABEL: @lshrugt_01_10_exact(
1888 ; CHECK-NEXT: ret i1 false
1891 %c = icmp ugt i4 %s, 10
1892 ret i1 %c
1896 ; CHECK-LABEL: @lshrugt_01_11_exact(
1897 ; CHECK-NEXT: ret i1 false
1900 %c = icmp ugt i4 %s, 11
1901 ret i1 %c
1905 ; CHECK-LABEL: @lshrugt_01_12_exact(
1906 ; CHECK-NEXT: ret i1 false
1909 %c = icmp ugt i4 %s, 12
1910 ret i1 %c
1914 ; CHECK-LABEL: @lshrugt_01_13_exact(
1915 ; CHECK-NEXT: ret i1 false
1918 %c = icmp ugt i4 %s, 13
1919 ret i1 %c
1923 ; CHECK-LABEL: @lshrugt_01_14_exact(
1924 ; CHECK-NEXT: ret i1 false
1927 %c = icmp ugt i4 %s, 14
1928 ret i1 %c
1932 ; CHECK-LABEL: @lshrugt_01_15_exact(
1933 ; CHECK-NEXT: ret i1 false
1936 %c = icmp ugt i4 %s, 15
1937 ret i1 %c
1941 ; CHECK-LABEL: @lshrugt_02_00_exact(
1942 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], 0
1943 ; CHECK-NEXT: ret i1 [[C]]
1946 %c = icmp ugt i4 %s, 0
1947 ret i1 %c
1951 ; CHECK-LABEL: @lshrugt_02_01_exact(
1952 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 4
1953 ; CHECK-NEXT: ret i1 [[C]]
1956 %c = icmp ugt i4 %s, 1
1957 ret i1 %c
1961 ; CHECK-LABEL: @lshrugt_02_02_exact(
1962 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], -4
1963 ; CHECK-NEXT: ret i1 [[C]]
1966 %c = icmp ugt i4 %s, 2
1967 ret i1 %c
1971 ; CHECK-LABEL: @lshrugt_02_03_exact(
1972 ; CHECK-NEXT: ret i1 false
1975 %c = icmp ugt i4 %s, 3
1976 ret i1 %c
1980 ; CHECK-LABEL: @lshrugt_02_04_exact(
1981 ; CHECK-NEXT: ret i1 false
1984 %c = icmp ugt i4 %s, 4
1985 ret i1 %c
1989 ; CHECK-LABEL: @lshrugt_02_05_exact(
1990 ; CHECK-NEXT: ret i1 false
1993 %c = icmp ugt i4 %s, 5
1994 ret i1 %c
1998 ; CHECK-LABEL: @lshrugt_02_06_exact(
1999 ; CHECK-NEXT: ret i1 false
2002 %c = icmp ugt i4 %s, 6
2003 ret i1 %c
2007 ; CHECK-LABEL: @lshrugt_02_07_exact(
2008 ; CHECK-NEXT: ret i1 false
2011 %c = icmp ugt i4 %s, 7
2012 ret i1 %c
2016 ; CHECK-LABEL: @lshrugt_02_08_exact(
2017 ; CHECK-NEXT: ret i1 false
2020 %c = icmp ugt i4 %s, 8
2021 ret i1 %c
2025 ; CHECK-LABEL: @lshrugt_02_09_exact(
2026 ; CHECK-NEXT: ret i1 false
2029 %c = icmp ugt i4 %s, 9
2030 ret i1 %c
2034 ; CHECK-LABEL: @lshrugt_02_10_exact(
2035 ; CHECK-NEXT: ret i1 false
2038 %c = icmp ugt i4 %s, 10
2039 ret i1 %c
2043 ; CHECK-LABEL: @lshrugt_02_11_exact(
2044 ; CHECK-NEXT: ret i1 false
2047 %c = icmp ugt i4 %s, 11
2048 ret i1 %c
2052 ; CHECK-LABEL: @lshrugt_02_12_exact(
2053 ; CHECK-NEXT: ret i1 false
2056 %c = icmp ugt i4 %s, 12
2057 ret i1 %c
2061 ; CHECK-LABEL: @lshrugt_02_13_exact(
2062 ; CHECK-NEXT: ret i1 false
2065 %c = icmp ugt i4 %s, 13
2066 ret i1 %c
2070 ; CHECK-LABEL: @lshrugt_02_14_exact(
2071 ; CHECK-NEXT: ret i1 false
2074 %c = icmp ugt i4 %s, 14
2075 ret i1 %c
2079 ; CHECK-LABEL: @lshrugt_02_15_exact(
2080 ; CHECK-NEXT: ret i1 false
2083 %c = icmp ugt i4 %s, 15
2084 ret i1 %c
2088 ; CHECK-LABEL: @lshrugt_03_00_exact(
2089 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], 0
2090 ; CHECK-NEXT: ret i1 [[C]]
2093 %c = icmp ugt i4 %s, 0
2094 ret i1 %c
2098 ; CHECK-LABEL: @lshrugt_03_01_exact(
2099 ; CHECK-NEXT: ret i1 false
2102 %c = icmp ugt i4 %s, 1
2103 ret i1 %c
2107 ; CHECK-LABEL: @lshrugt_03_02_exact(
2108 ; CHECK-NEXT: ret i1 false
2111 %c = icmp ugt i4 %s, 2
2112 ret i1 %c
2116 ; CHECK-LABEL: @lshrugt_03_03_exact(
2117 ; CHECK-NEXT: ret i1 false
2120 %c = icmp ugt i4 %s, 3
2121 ret i1 %c
2125 ; CHECK-LABEL: @lshrugt_03_04_exact(
2126 ; CHECK-NEXT: ret i1 false
2129 %c = icmp ugt i4 %s, 4
2130 ret i1 %c
2134 ; CHECK-LABEL: @lshrugt_03_05_exact(
2135 ; CHECK-NEXT: ret i1 false
2138 %c = icmp ugt i4 %s, 5
2139 ret i1 %c
2143 ; CHECK-LABEL: @lshrugt_03_06_exact(
2144 ; CHECK-NEXT: ret i1 false
2147 %c = icmp ugt i4 %s, 6
2148 ret i1 %c
2152 ; CHECK-LABEL: @lshrugt_03_07_exact(
2153 ; CHECK-NEXT: ret i1 false
2156 %c = icmp ugt i4 %s, 7
2157 ret i1 %c
2161 ; CHECK-LABEL: @lshrugt_03_08_exact(
2162 ; CHECK-NEXT: ret i1 false
2165 %c = icmp ugt i4 %s, 8
2166 ret i1 %c
2170 ; CHECK-LABEL: @lshrugt_03_09_exact(
2171 ; CHECK-NEXT: ret i1 false
2174 %c = icmp ugt i4 %s, 9
2175 ret i1 %c
2179 ; CHECK-LABEL: @lshrugt_03_10_exact(
2180 ; CHECK-NEXT: ret i1 false
2183 %c = icmp ugt i4 %s, 10
2184 ret i1 %c
2188 ; CHECK-LABEL: @lshrugt_03_11_exact(
2189 ; CHECK-NEXT: ret i1 false
2192 %c = icmp ugt i4 %s, 11
2193 ret i1 %c
2197 ; CHECK-LABEL: @lshrugt_03_12_exact(
2198 ; CHECK-NEXT: ret i1 false
2201 %c = icmp ugt i4 %s, 12
2202 ret i1 %c
2206 ; CHECK-LABEL: @lshrugt_03_13_exact(
2207 ; CHECK-NEXT: ret i1 false
2210 %c = icmp ugt i4 %s, 13
2211 ret i1 %c
2215 ; CHECK-LABEL: @lshrugt_03_14_exact(
2216 ; CHECK-NEXT: ret i1 false
2219 %c = icmp ugt i4 %s, 14
2220 ret i1 %c
2224 ; CHECK-LABEL: @lshrugt_03_15_exact(
2225 ; CHECK-NEXT: ret i1 false
2228 %c = icmp ugt i4 %s, 15
2229 ret i1 %c
2233 ; CHECK-LABEL: @ashr_eq_exact(
2234 ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[X:%.*]], 80
2235 ; CHECK-NEXT: ret i1 [[C]]
2238 %c = icmp eq i8 %s, 10
2239 ret i1 %c
2243 ; CHECK-LABEL: @ashr_ne_exact(
2244 ; CHECK-NEXT: [[C:%.*]] = icmp ne i8 [[X:%.*]], 80
2245 ; CHECK-NEXT: ret i1 [[C]]
2248 %c = icmp ne i8 %s, 10
2249 ret i1 %c
2253 ; CHECK-LABEL: @ashr_ugt_exact(
2254 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i8 [[X:%.*]], 80
2255 ; CHECK-NEXT: ret i1 [[C]]
2258 %c = icmp ugt i8 %s, 10
2259 ret i1 %c
2264 ; CHECK-LABEL: @ashr_uge_exact(
2265 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i8 [[X:%.*]], 72
2266 ; CHECK-NEXT: ret i1 [[C]]
2269 %c = icmp uge i8 %s, 10
2270 ret i1 %c
2274 ; CHECK-LABEL: @ashr_ult_exact(
2275 ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[X:%.*]], 80
2276 ; CHECK-NEXT: ret i1 [[C]]
2279 %c = icmp ult i8 %s, 10
2280 ret i1 %c
2285 ; CHECK-LABEL: @ashr_ule_exact(
2286 ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[X:%.*]], 88
2287 ; CHECK-NEXT: ret i1 [[C]]
2290 %c = icmp ule i8 %s, 10
2291 ret i1 %c
2296 ; CHECK-LABEL: @ashr_sgt_exact(
2297 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i8 [[X:%.*]], 80
2298 ; CHECK-NEXT: ret i1 [[C]]
2301 %c = icmp sgt i8 %s, 10
2302 ret i1 %c
2307 ; CHECK-LABEL: @ashr_sge_exact(
2308 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i8 [[X:%.*]], 72
2309 ; CHECK-NEXT: ret i1 [[C]]
2312 %c = icmp sge i8 %s, 10
2313 ret i1 %c
2317 ; CHECK-LABEL: @ashr_slt_exact(
2318 ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[X:%.*]], 80
2319 ; CHECK-NEXT: ret i1 [[C]]
2322 %c = icmp slt i8 %s, 10
2323 ret i1 %c
2327 ; CHECK-LABEL: @ashr_sle_exact(
2328 ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[X:%.*]], 88
2329 ; CHECK-NEXT: ret i1 [[C]]
2332 %c = icmp sle i8 %s, 10
2333 ret i1 %c
2337 ; CHECK-LABEL: @ashr_eq_noexact(
2338 ; CHECK-NEXT: [[S_MASK:%.*]] = and i8 [[X:%.*]], -8
2339 ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[S_MASK]], 80
2340 ; CHECK-NEXT: ret i1 [[C]]
2343 %c = icmp eq i8 %s, 10
2344 ret i1 %c
2348 ; CHECK-LABEL: @ashr_ne_noexact(
2349 ; CHECK-NEXT: [[S_MASK:%.*]] = and i8 [[X:%.*]], -8
2350 ; CHECK-NEXT: [[C:%.*]] = icmp ne i8 [[S_MASK]], 80
2351 ; CHECK-NEXT: ret i1 [[C]]
2354 %c = icmp ne i8 %s, 10
2355 ret i1 %c
2359 ; CHECK-LABEL: @ashr_ugt_noexact(
2360 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i8 [[X:%.*]], 87
2361 ; CHECK-NEXT: ret i1 [[C]]
2364 %c = icmp ugt i8 %s, 10
2365 ret i1 %c
2370 ; CHECK-LABEL: @ashr_uge_noexact(
2371 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i8 [[X:%.*]], 79
2372 ; CHECK-NEXT: ret i1 [[C]]
2375 %c = icmp uge i8 %s, 10
2376 ret i1 %c
2380 ; CHECK-LABEL: @ashr_ult_noexact(
2381 ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[X:%.*]], 80
2382 ; CHECK-NEXT: ret i1 [[C]]
2385 %c = icmp ult i8 %s, 10
2386 ret i1 %c
2391 ; CHECK-LABEL: @ashr_ule_noexact(
2392 ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[X:%.*]], 88
2393 ; CHECK-NEXT: ret i1 [[C]]
2396 %c = icmp ule i8 %s, 10
2397 ret i1 %c
2402 ; CHECK-LABEL: @ashr_sgt_noexact(
2403 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i8 [[X:%.*]], 87
2404 ; CHECK-NEXT: ret i1 [[C]]
2407 %c = icmp sgt i8 %s, 10
2408 ret i1 %c
2413 ; CHECK-LABEL: @ashr_sge_noexact(
2414 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i8 [[X:%.*]], 79
2415 ; CHECK-NEXT: ret i1 [[C]]
2418 %c = icmp sge i8 %s, 10
2419 ret i1 %c
2423 ; CHECK-LABEL: @ashr_slt_noexact(
2424 ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[X:%.*]], 80
2425 ; CHECK-NEXT: ret i1 [[C]]
2428 %c = icmp slt i8 %s, 10
2429 ret i1 %c
2433 ; CHECK-LABEL: @ashr_sle_noexact(
2434 ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[X:%.*]], 88
2435 ; CHECK-NEXT: ret i1 [[C]]
2438 %c = icmp sle i8 %s, 10
2439 ret i1 %c
2443 ; CHECK-LABEL: @ashr_00_00_ashr_extra_use(
2444 ; CHECK-NEXT: [[S:%.*]] = ashr exact i8 [[X:%.*]], 3
2445 ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[S]], 11
2446 ; CHECK-NEXT: store i8 [[S]], ptr [[PTR:%.*]], align 1
2447 ; CHECK-NEXT: ret i1 [[C]]
2450 %c = icmp ule i8 %s, 10
2452 ret i1 %c
2456 ; CHECK-LABEL: @ashr_00_00_vec(
2457 ; CHECK-NEXT: [[C:%.*]] = icmp ult <4 x i8> [[X:%.*]], splat (i8 88)
2458 ; CHECK-NEXT: ret <4 x i1> [[C]]
2461 %c = icmp ule <4 x i8> %s, <i8 10,i8 10,i8 10,i8 10>
2462 ret <4 x i1> %c
2466 ; CHECK-LABEL: @ashr_sgt_overflow(
2467 ; CHECK-NEXT: ret i1 false
2470 %c = icmp sgt i8 %s, 63
2471 ret i1 %c
2475 ; CHECK-LABEL: @lshrult_01_00_exact(
2476 ; CHECK-NEXT: ret i1 false
2479 %c = icmp ult i4 %s, 0
2480 ret i1 %c
2484 ; CHECK-LABEL: @lshrult_01_01_exact(
2485 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], 0
2486 ; CHECK-NEXT: ret i1 [[C]]
2489 %c = icmp ult i4 %s, 1
2490 ret i1 %c
2494 ; CHECK-LABEL: @lshrult_01_02_exact(
2495 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], 4
2496 ; CHECK-NEXT: ret i1 [[C]]
2499 %c = icmp ult i4 %s, 2
2500 ret i1 %c
2504 ; CHECK-LABEL: @lshrult_01_03_exact(
2505 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], 6
2506 ; CHECK-NEXT: ret i1 [[C]]
2509 %c = icmp ult i4 %s, 3
2510 ret i1 %c
2514 ; CHECK-LABEL: @lshrult_01_04_exact(
2515 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
2516 ; CHECK-NEXT: ret i1 [[C]]
2519 %c = icmp ult i4 %s, 4
2520 ret i1 %c
2524 ; CHECK-LABEL: @lshrult_01_05_exact(
2525 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], -6
2526 ; CHECK-NEXT: ret i1 [[C]]
2529 %c = icmp ult i4 %s, 5
2530 ret i1 %c
2534 ; CHECK-LABEL: @lshrult_01_06_exact(
2535 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], -4
2536 ; CHECK-NEXT: ret i1 [[C]]
2539 %c = icmp ult i4 %s, 6
2540 ret i1 %c
2544 ; CHECK-LABEL: @lshrult_01_07_exact(
2545 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -2
2546 ; CHECK-NEXT: ret i1 [[C]]
2549 %c = icmp ult i4 %s, 7
2550 ret i1 %c
2554 ; CHECK-LABEL: @lshrult_01_08_exact(
2555 ; CHECK-NEXT: ret i1 true
2558 %c = icmp ult i4 %s, 8
2559 ret i1 %c
2563 ; CHECK-LABEL: @lshrult_01_09_exact(
2564 ; CHECK-NEXT: ret i1 true
2567 %c = icmp ult i4 %s, 9
2568 ret i1 %c
2572 ; CHECK-LABEL: @lshrult_01_10_exact(
2573 ; CHECK-NEXT: ret i1 true
2576 %c = icmp ult i4 %s, 10
2577 ret i1 %c
2581 ; CHECK-LABEL: @lshrult_01_11_exact(
2582 ; CHECK-NEXT: ret i1 true
2585 %c = icmp ult i4 %s, 11
2586 ret i1 %c
2590 ; CHECK-LABEL: @lshrult_01_12_exact(
2591 ; CHECK-NEXT: ret i1 true
2594 %c = icmp ult i4 %s, 12
2595 ret i1 %c
2599 ; CHECK-LABEL: @lshrult_01_13_exact(
2600 ; CHECK-NEXT: ret i1 true
2603 %c = icmp ult i4 %s, 13
2604 ret i1 %c
2608 ; CHECK-LABEL: @lshrult_01_14_exact(
2609 ; CHECK-NEXT: ret i1 true
2612 %c = icmp ult i4 %s, 14
2613 ret i1 %c
2617 ; CHECK-LABEL: @lshrult_01_15_exact(
2618 ; CHECK-NEXT: ret i1 true
2621 %c = icmp ult i4 %s, 15
2622 ret i1 %c
2626 ; CHECK-LABEL: @lshrult_02_00_exact(
2627 ; CHECK-NEXT: ret i1 false
2630 %c = icmp ult i4 %s, 0
2631 ret i1 %c
2635 ; CHECK-LABEL: @lshrult_02_01_exact(
2636 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], 0
2637 ; CHECK-NEXT: ret i1 [[C]]
2640 %c = icmp ult i4 %s, 1
2641 ret i1 %c
2645 ; CHECK-LABEL: @lshrult_02_02_exact(
2646 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
2647 ; CHECK-NEXT: ret i1 [[C]]
2650 %c = icmp ult i4 %s, 2
2651 ret i1 %c
2655 ; CHECK-LABEL: @lshrult_02_03_exact(
2656 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -4
2657 ; CHECK-NEXT: ret i1 [[C]]
2660 %c = icmp ult i4 %s, 3
2661 ret i1 %c
2665 ; CHECK-LABEL: @lshrult_02_04_exact(
2666 ; CHECK-NEXT: ret i1 true
2669 %c = icmp ult i4 %s, 4
2670 ret i1 %c
2674 ; CHECK-LABEL: @lshrult_02_05_exact(
2675 ; CHECK-NEXT: ret i1 true
2678 %c = icmp ult i4 %s, 5
2679 ret i1 %c
2683 ; CHECK-LABEL: @lshrult_02_06_exact(
2684 ; CHECK-NEXT: ret i1 true
2687 %c = icmp ult i4 %s, 6
2688 ret i1 %c
2692 ; CHECK-LABEL: @lshrult_02_07_exact(
2693 ; CHECK-NEXT: ret i1 true
2696 %c = icmp ult i4 %s, 7
2697 ret i1 %c
2701 ; CHECK-LABEL: @lshrult_02_08_exact(
2702 ; CHECK-NEXT: ret i1 true
2705 %c = icmp ult i4 %s, 8
2706 ret i1 %c
2710 ; CHECK-LABEL: @lshrult_02_09_exact(
2711 ; CHECK-NEXT: ret i1 true
2714 %c = icmp ult i4 %s, 9
2715 ret i1 %c
2719 ; CHECK-LABEL: @lshrult_02_10_exact(
2720 ; CHECK-NEXT: ret i1 true
2723 %c = icmp ult i4 %s, 10
2724 ret i1 %c
2728 ; CHECK-LABEL: @lshrult_02_11_exact(
2729 ; CHECK-NEXT: ret i1 true
2732 %c = icmp ult i4 %s, 11
2733 ret i1 %c
2737 ; CHECK-LABEL: @lshrult_02_12_exact(
2738 ; CHECK-NEXT: ret i1 true
2741 %c = icmp ult i4 %s, 12
2742 ret i1 %c
2746 ; CHECK-LABEL: @lshrult_02_13_exact(
2747 ; CHECK-NEXT: ret i1 true
2750 %c = icmp ult i4 %s, 13
2751 ret i1 %c
2755 ; CHECK-LABEL: @lshrult_02_14_exact(
2756 ; CHECK-NEXT: ret i1 true
2759 %c = icmp ult i4 %s, 14
2760 ret i1 %c
2764 ; CHECK-LABEL: @lshrult_02_15_exact(
2765 ; CHECK-NEXT: ret i1 true
2768 %c = icmp ult i4 %s, 15
2769 ret i1 %c
2773 ; CHECK-LABEL: @lshrult_03_00_exact(
2774 ; CHECK-NEXT: ret i1 false
2777 %c = icmp ult i4 %s, 0
2778 ret i1 %c
2782 ; CHECK-LABEL: @lshrult_03_01_exact(
2783 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], 0
2784 ; CHECK-NEXT: ret i1 [[C]]
2787 %c = icmp ult i4 %s, 1
2788 ret i1 %c
2792 ; CHECK-LABEL: @lshrult_03_02_exact(
2793 ; CHECK-NEXT: ret i1 true
2796 %c = icmp ult i4 %s, 2
2797 ret i1 %c
2801 ; CHECK-LABEL: @lshrult_03_03_exact(
2802 ; CHECK-NEXT: ret i1 true
2805 %c = icmp ult i4 %s, 3
2806 ret i1 %c
2810 ; CHECK-LABEL: @lshrult_03_04_exact(
2811 ; CHECK-NEXT: ret i1 true
2814 %c = icmp ult i4 %s, 4
2815 ret i1 %c
2819 ; CHECK-LABEL: @lshrult_03_05_exact(
2820 ; CHECK-NEXT: ret i1 true
2823 %c = icmp ult i4 %s, 5
2824 ret i1 %c
2828 ; CHECK-LABEL: @lshrult_03_06_exact(
2829 ; CHECK-NEXT: ret i1 true
2832 %c = icmp ult i4 %s, 6
2833 ret i1 %c
2837 ; CHECK-LABEL: @lshrult_03_07_exact(
2838 ; CHECK-NEXT: ret i1 true
2841 %c = icmp ult i4 %s, 7
2842 ret i1 %c
2846 ; CHECK-LABEL: @lshrult_03_08_exact(
2847 ; CHECK-NEXT: ret i1 true
2850 %c = icmp ult i4 %s, 8
2851 ret i1 %c
2855 ; CHECK-LABEL: @lshrult_03_09_exact(
2856 ; CHECK-NEXT: ret i1 true
2859 %c = icmp ult i4 %s, 9
2860 ret i1 %c
2864 ; CHECK-LABEL: @lshrult_03_10_exact(
2865 ; CHECK-NEXT: ret i1 true
2868 %c = icmp ult i4 %s, 10
2869 ret i1 %c
2873 ; CHECK-LABEL: @lshrult_03_11_exact(
2874 ; CHECK-NEXT: ret i1 true
2877 %c = icmp ult i4 %s, 11
2878 ret i1 %c
2882 ; CHECK-LABEL: @lshrult_03_12_exact(
2883 ; CHECK-NEXT: ret i1 true
2886 %c = icmp ult i4 %s, 12
2887 ret i1 %c
2891 ; CHECK-LABEL: @lshrult_03_13_exact(
2892 ; CHECK-NEXT: ret i1 true
2895 %c = icmp ult i4 %s, 13
2896 ret i1 %c
2900 ; CHECK-LABEL: @lshrult_03_14_exact(
2901 ; CHECK-NEXT: ret i1 true
2904 %c = icmp ult i4 %s, 14
2905 ret i1 %c
2909 ; CHECK-LABEL: @lshrult_03_15_exact(
2910 ; CHECK-NEXT: ret i1 true
2913 %c = icmp ult i4 %s, 15
2914 ret i1 %c
2918 ; CHECK-LABEL: @ashrsgt_01_00_exact(
2919 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 0
2920 ; CHECK-NEXT: ret i1 [[C]]
2923 %c = icmp sgt i4 %s, 0
2924 ret i1 %c
2928 ; CHECK-LABEL: @ashrsgt_01_01_exact(
2929 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 2
2930 ; CHECK-NEXT: ret i1 [[C]]
2933 %c = icmp sgt i4 %s, 1
2934 ret i1 %c
2938 ; CHECK-LABEL: @ashrsgt_01_02_exact(
2939 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 4
2940 ; CHECK-NEXT: ret i1 [[C]]
2943 %c = icmp sgt i4 %s, 2
2944 ret i1 %c
2948 ; CHECK-LABEL: @ashrsgt_01_03_exact(
2949 ; CHECK-NEXT: ret i1 false
2952 %c = icmp sgt i4 %s, 3
2953 ret i1 %c
2957 ; CHECK-LABEL: @ashrsgt_01_04_exact(
2958 ; CHECK-NEXT: ret i1 false
2961 %c = icmp sgt i4 %s, 4
2962 ret i1 %c
2966 ; CHECK-LABEL: @ashrsgt_01_05_exact(
2967 ; CHECK-NEXT: ret i1 false
2970 %c = icmp sgt i4 %s, 5
2971 ret i1 %c
2975 ; CHECK-LABEL: @ashrsgt_01_06_exact(
2976 ; CHECK-NEXT: ret i1 false
2979 %c = icmp sgt i4 %s, 6
2980 ret i1 %c
2984 ; CHECK-LABEL: @ashrsgt_01_07_exact(
2985 ; CHECK-NEXT: ret i1 false
2988 %c = icmp sgt i4 %s, 7
2989 ret i1 %c
2993 ; CHECK-LABEL: @ashrsgt_01_08_exact(
2994 ; CHECK-NEXT: ret i1 true
2997 %c = icmp sgt i4 %s, 8
2998 ret i1 %c
3002 ; CHECK-LABEL: @ashrsgt_01_09_exact(
3003 ; CHECK-NEXT: ret i1 true
3006 %c = icmp sgt i4 %s, 9
3007 ret i1 %c
3011 ; CHECK-LABEL: @ashrsgt_01_10_exact(
3012 ; CHECK-NEXT: ret i1 true
3015 %c = icmp sgt i4 %s, 10
3016 ret i1 %c
3020 ; CHECK-LABEL: @ashrsgt_01_11_exact(
3021 ; CHECK-NEXT: ret i1 true
3024 %c = icmp sgt i4 %s, 11
3025 ret i1 %c
3029 ; CHECK-LABEL: @ashrsgt_01_12_exact(
3030 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -8
3031 ; CHECK-NEXT: ret i1 [[C]]
3034 %c = icmp sgt i4 %s, 12
3035 ret i1 %c
3039 ; CHECK-LABEL: @ashrsgt_01_13_exact(
3040 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -6
3041 ; CHECK-NEXT: ret i1 [[C]]
3044 %c = icmp sgt i4 %s, 13
3045 ret i1 %c
3049 ; CHECK-LABEL: @ashrsgt_01_14_exact(
3050 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -4
3051 ; CHECK-NEXT: ret i1 [[C]]
3054 %c = icmp sgt i4 %s, 14
3055 ret i1 %c
3059 ; CHECK-LABEL: @ashrsgt_01_15_exact(
3060 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
3061 ; CHECK-NEXT: ret i1 [[C]]
3064 %c = icmp sgt i4 %s, 15
3065 ret i1 %c
3069 ; CHECK-LABEL: @ashrsgt_02_00_exact(
3070 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 0
3071 ; CHECK-NEXT: ret i1 [[C]]
3074 %c = icmp sgt i4 %s, 0
3075 ret i1 %c
3079 ; CHECK-LABEL: @ashrsgt_02_01_exact(
3080 ; CHECK-NEXT: ret i1 false
3083 %c = icmp sgt i4 %s, 1
3084 ret i1 %c
3088 ; CHECK-LABEL: @ashrsgt_02_02_exact(
3089 ; CHECK-NEXT: ret i1 false
3092 %c = icmp sgt i4 %s, 2
3093 ret i1 %c
3097 ; CHECK-LABEL: @ashrsgt_02_03_exact(
3098 ; CHECK-NEXT: ret i1 false
3101 %c = icmp sgt i4 %s, 3
3102 ret i1 %c
3106 ; CHECK-LABEL: @ashrsgt_02_04_exact(
3107 ; CHECK-NEXT: ret i1 false
3110 %c = icmp sgt i4 %s, 4
3111 ret i1 %c
3115 ; CHECK-LABEL: @ashrsgt_02_05_exact(
3116 ; CHECK-NEXT: ret i1 false
3119 %c = icmp sgt i4 %s, 5
3120 ret i1 %c
3124 ; CHECK-LABEL: @ashrsgt_02_06_exact(
3125 ; CHECK-NEXT: ret i1 false
3128 %c = icmp sgt i4 %s, 6
3129 ret i1 %c
3133 ; CHECK-LABEL: @ashrsgt_02_07_exact(
3134 ; CHECK-NEXT: ret i1 false
3137 %c = icmp sgt i4 %s, 7
3138 ret i1 %c
3142 ; CHECK-LABEL: @ashrsgt_02_08_exact(
3143 ; CHECK-NEXT: ret i1 true
3146 %c = icmp sgt i4 %s, 8
3147 ret i1 %c
3151 ; CHECK-LABEL: @ashrsgt_02_09_exact(
3152 ; CHECK-NEXT: ret i1 true
3155 %c = icmp sgt i4 %s, 9
3156 ret i1 %c
3160 ; CHECK-LABEL: @ashrsgt_02_10_exact(
3161 ; CHECK-NEXT: ret i1 true
3164 %c = icmp sgt i4 %s, 10
3165 ret i1 %c
3169 ; CHECK-LABEL: @ashrsgt_02_11_exact(
3170 ; CHECK-NEXT: ret i1 true
3173 %c = icmp sgt i4 %s, 11
3174 ret i1 %c
3178 ; CHECK-LABEL: @ashrsgt_02_12_exact(
3179 ; CHECK-NEXT: ret i1 true
3182 %c = icmp sgt i4 %s, 12
3183 ret i1 %c
3187 ; CHECK-LABEL: @ashrsgt_02_13_exact(
3188 ; CHECK-NEXT: ret i1 true
3191 %c = icmp sgt i4 %s, 13
3192 ret i1 %c
3196 ; CHECK-LABEL: @ashrsgt_02_14_exact(
3197 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -8
3198 ; CHECK-NEXT: ret i1 [[C]]
3201 %c = icmp sgt i4 %s, 14
3202 ret i1 %c
3206 ; CHECK-LABEL: @ashrsgt_02_15_exact(
3207 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
3208 ; CHECK-NEXT: ret i1 [[C]]
3211 %c = icmp sgt i4 %s, 15
3212 ret i1 %c
3216 ; CHECK-LABEL: @ashrsgt_03_00_exact(
3217 ; CHECK-NEXT: ret i1 false
3220 %c = icmp sgt i4 %s, 0
3221 ret i1 %c
3225 ; CHECK-LABEL: @ashrsgt_03_01_exact(
3226 ; CHECK-NEXT: ret i1 false
3229 %c = icmp sgt i4 %s, 1
3230 ret i1 %c
3234 ; CHECK-LABEL: @ashrsgt_03_02_exact(
3235 ; CHECK-NEXT: ret i1 false
3238 %c = icmp sgt i4 %s, 2
3239 ret i1 %c
3243 ; CHECK-LABEL: @ashrsgt_03_03_exact(
3244 ; CHECK-NEXT: ret i1 false
3247 %c = icmp sgt i4 %s, 3
3248 ret i1 %c
3252 ; CHECK-LABEL: @ashrsgt_03_04_exact(
3253 ; CHECK-NEXT: ret i1 false
3256 %c = icmp sgt i4 %s, 4
3257 ret i1 %c
3261 ; CHECK-LABEL: @ashrsgt_03_05_exact(
3262 ; CHECK-NEXT: ret i1 false
3265 %c = icmp sgt i4 %s, 5
3266 ret i1 %c
3270 ; CHECK-LABEL: @ashrsgt_03_06_exact(
3271 ; CHECK-NEXT: ret i1 false
3274 %c = icmp sgt i4 %s, 6
3275 ret i1 %c
3279 ; CHECK-LABEL: @ashrsgt_03_07_exact(
3280 ; CHECK-NEXT: ret i1 false
3283 %c = icmp sgt i4 %s, 7
3284 ret i1 %c
3288 ; CHECK-LABEL: @ashrsgt_03_08_exact(
3289 ; CHECK-NEXT: ret i1 true
3292 %c = icmp sgt i4 %s, 8
3293 ret i1 %c
3297 ; CHECK-LABEL: @ashrsgt_03_09_exact(
3298 ; CHECK-NEXT: ret i1 true
3301 %c = icmp sgt i4 %s, 9
3302 ret i1 %c
3306 ; CHECK-LABEL: @ashrsgt_03_10_exact(
3307 ; CHECK-NEXT: ret i1 true
3310 %c = icmp sgt i4 %s, 10
3311 ret i1 %c
3315 ; CHECK-LABEL: @ashrsgt_03_11_exact(
3316 ; CHECK-NEXT: ret i1 true
3319 %c = icmp sgt i4 %s, 11
3320 ret i1 %c
3324 ; CHECK-LABEL: @ashrsgt_03_12_exact(
3325 ; CHECK-NEXT: ret i1 true
3328 %c = icmp sgt i4 %s, 12
3329 ret i1 %c
3333 ; CHECK-LABEL: @ashrsgt_03_13_exact(
3334 ; CHECK-NEXT: ret i1 true
3337 %c = icmp sgt i4 %s, 13
3338 ret i1 %c
3342 ; CHECK-LABEL: @ashrsgt_03_14_exact(
3343 ; CHECK-NEXT: ret i1 true
3346 %c = icmp sgt i4 %s, 14
3347 ret i1 %c
3351 ; CHECK-LABEL: @ashrsgt_03_15_exact(
3352 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
3353 ; CHECK-NEXT: ret i1 [[C]]
3356 %c = icmp sgt i4 %s, 15
3357 ret i1 %c
3361 ; CHECK-LABEL: @ashrslt_01_00_exact(
3362 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
3363 ; CHECK-NEXT: ret i1 [[C]]
3366 %c = icmp slt i4 %s, 0
3367 ret i1 %c
3371 ; CHECK-LABEL: @ashrslt_01_01_exact(
3372 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 2
3373 ; CHECK-NEXT: ret i1 [[C]]
3376 %c = icmp slt i4 %s, 1
3377 ret i1 %c
3381 ; CHECK-LABEL: @ashrslt_01_02_exact(
3382 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 3
3383 ; CHECK-NEXT: ret i1 [[C]]
3386 %c = icmp slt i4 %s, 2
3387 ret i1 %c
3391 ; CHECK-LABEL: @ashrslt_01_03_exact(
3392 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 5
3393 ; CHECK-NEXT: ret i1 [[C]]
3396 %c = icmp slt i4 %s, 3
3397 ret i1 %c
3401 ; CHECK-LABEL: @ashrslt_01_04_exact(
3402 ; CHECK-NEXT: ret i1 true
3405 %c = icmp slt i4 %s, 4
3406 ret i1 %c
3410 ; CHECK-LABEL: @ashrslt_01_05_exact(
3411 ; CHECK-NEXT: ret i1 true
3414 %c = icmp slt i4 %s, 5
3415 ret i1 %c
3419 ; CHECK-LABEL: @ashrslt_01_06_exact(
3420 ; CHECK-NEXT: ret i1 true
3423 %c = icmp slt i4 %s, 6
3424 ret i1 %c
3428 ; CHECK-LABEL: @ashrslt_01_07_exact(
3429 ; CHECK-NEXT: ret i1 true
3432 %c = icmp slt i4 %s, 7
3433 ret i1 %c
3437 ; CHECK-LABEL: @ashrslt_01_08_exact(
3438 ; CHECK-NEXT: ret i1 false
3441 %c = icmp slt i4 %s, 8
3442 ret i1 %c
3446 ; CHECK-LABEL: @ashrslt_01_09_exact(
3447 ; CHECK-NEXT: ret i1 false
3450 %c = icmp slt i4 %s, 9
3451 ret i1 %c
3455 ; CHECK-LABEL: @ashrslt_01_10_exact(
3456 ; CHECK-NEXT: ret i1 false
3459 %c = icmp slt i4 %s, 10
3460 ret i1 %c
3464 ; CHECK-LABEL: @ashrslt_01_11_exact(
3465 ; CHECK-NEXT: ret i1 false
3468 %c = icmp slt i4 %s, 11
3469 ret i1 %c
3473 ; CHECK-LABEL: @ashrslt_01_12_exact(
3474 ; CHECK-NEXT: ret i1 false
3477 %c = icmp slt i4 %s, 12
3478 ret i1 %c
3482 ; CHECK-LABEL: @ashrslt_01_13_exact(
3483 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -6
3484 ; CHECK-NEXT: ret i1 [[C]]
3487 %c = icmp slt i4 %s, 13
3488 ret i1 %c
3492 ; CHECK-LABEL: @ashrslt_01_14_exact(
3493 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -4
3494 ; CHECK-NEXT: ret i1 [[C]]
3497 %c = icmp slt i4 %s, 14
3498 ret i1 %c
3502 ; CHECK-LABEL: @ashrslt_01_15_exact(
3503 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -2
3504 ; CHECK-NEXT: ret i1 [[C]]
3507 %c = icmp slt i4 %s, 15
3508 ret i1 %c
3512 ; CHECK-LABEL: @ashrslt_02_00_exact(
3513 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
3514 ; CHECK-NEXT: ret i1 [[C]]
3517 %c = icmp slt i4 %s, 0
3518 ret i1 %c
3522 ; CHECK-LABEL: @ashrslt_02_01_exact(
3523 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 4
3524 ; CHECK-NEXT: ret i1 [[C]]
3527 %c = icmp slt i4 %s, 1
3528 ret i1 %c
3532 ; CHECK-LABEL: @ashrslt_02_02_exact(
3533 ; CHECK-NEXT: ret i1 true
3536 %c = icmp slt i4 %s, 2
3537 ret i1 %c
3541 ; CHECK-LABEL: @ashrslt_02_03_exact(
3542 ; CHECK-NEXT: ret i1 true
3545 %c = icmp slt i4 %s, 3
3546 ret i1 %c
3550 ; CHECK-LABEL: @ashrslt_02_04_exact(
3551 ; CHECK-NEXT: ret i1 true
3554 %c = icmp slt i4 %s, 4
3555 ret i1 %c
3559 ; CHECK-LABEL: @ashrslt_02_05_exact(
3560 ; CHECK-NEXT: ret i1 true
3563 %c = icmp slt i4 %s, 5
3564 ret i1 %c
3568 ; CHECK-LABEL: @ashrslt_02_06_exact(
3569 ; CHECK-NEXT: ret i1 true
3572 %c = icmp slt i4 %s, 6
3573 ret i1 %c
3577 ; CHECK-LABEL: @ashrslt_02_07_exact(
3578 ; CHECK-NEXT: ret i1 true
3581 %c = icmp slt i4 %s, 7
3582 ret i1 %c
3586 ; CHECK-LABEL: @ashrslt_02_08_exact(
3587 ; CHECK-NEXT: ret i1 false
3590 %c = icmp slt i4 %s, 8
3591 ret i1 %c
3595 ; CHECK-LABEL: @ashrslt_02_09_exact(
3596 ; CHECK-NEXT: ret i1 false
3599 %c = icmp slt i4 %s, 9
3600 ret i1 %c
3604 ; CHECK-LABEL: @ashrslt_02_10_exact(
3605 ; CHECK-NEXT: ret i1 false
3608 %c = icmp slt i4 %s, 10
3609 ret i1 %c
3613 ; CHECK-LABEL: @ashrslt_02_11_exact(
3614 ; CHECK-NEXT: ret i1 false
3617 %c = icmp slt i4 %s, 11
3618 ret i1 %c
3622 ; CHECK-LABEL: @ashrslt_02_12_exact(
3623 ; CHECK-NEXT: ret i1 false
3626 %c = icmp slt i4 %s, 12
3627 ret i1 %c
3631 ; CHECK-LABEL: @ashrslt_02_13_exact(
3632 ; CHECK-NEXT: ret i1 false
3635 %c = icmp slt i4 %s, 13
3636 ret i1 %c
3640 ; CHECK-LABEL: @ashrslt_02_14_exact(
3641 ; CHECK-NEXT: ret i1 false
3644 %c = icmp slt i4 %s, 14
3645 ret i1 %c
3649 ; CHECK-LABEL: @ashrslt_02_15_exact(
3650 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -4
3651 ; CHECK-NEXT: ret i1 [[C]]
3654 %c = icmp slt i4 %s, 15
3655 ret i1 %c
3659 ; CHECK-LABEL: @ashrslt_03_00_exact(
3660 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
3661 ; CHECK-NEXT: ret i1 [[C]]
3664 %c = icmp slt i4 %s, 0
3665 ret i1 %c
3669 ; CHECK-LABEL: @ashrslt_03_01_exact(
3670 ; CHECK-NEXT: ret i1 true
3673 %c = icmp slt i4 %s, 1
3674 ret i1 %c
3678 ; CHECK-LABEL: @ashrslt_03_02_exact(
3679 ; CHECK-NEXT: ret i1 true
3682 %c = icmp slt i4 %s, 2
3683 ret i1 %c
3687 ; CHECK-LABEL: @ashrslt_03_03_exact(
3688 ; CHECK-NEXT: ret i1 true
3691 %c = icmp slt i4 %s, 3
3692 ret i1 %c
3696 ; CHECK-LABEL: @ashrslt_03_04_exact(
3697 ; CHECK-NEXT: ret i1 true
3700 %c = icmp slt i4 %s, 4
3701 ret i1 %c
3705 ; CHECK-LABEL: @ashrslt_03_05_exact(
3706 ; CHECK-NEXT: ret i1 true
3709 %c = icmp slt i4 %s, 5
3710 ret i1 %c
3714 ; CHECK-LABEL: @ashrslt_03_06_exact(
3715 ; CHECK-NEXT: ret i1 true
3718 %c = icmp slt i4 %s, 6
3719 ret i1 %c
3723 ; CHECK-LABEL: @ashrslt_03_07_exact(
3724 ; CHECK-NEXT: ret i1 true
3727 %c = icmp slt i4 %s, 7
3728 ret i1 %c
3732 ; CHECK-LABEL: @ashrslt_03_08_exact(
3733 ; CHECK-NEXT: ret i1 false
3736 %c = icmp slt i4 %s, 8
3737 ret i1 %c
3741 ; CHECK-LABEL: @ashrslt_03_09_exact(
3742 ; CHECK-NEXT: ret i1 false
3745 %c = icmp slt i4 %s, 9
3746 ret i1 %c
3750 ; CHECK-LABEL: @ashrslt_03_10_exact(
3751 ; CHECK-NEXT: ret i1 false
3754 %c = icmp slt i4 %s, 10
3755 ret i1 %c
3759 ; CHECK-LABEL: @ashrslt_03_11_exact(
3760 ; CHECK-NEXT: ret i1 false
3763 %c = icmp slt i4 %s, 11
3764 ret i1 %c
3768 ; CHECK-LABEL: @ashrslt_03_12_exact(
3769 ; CHECK-NEXT: ret i1 false
3772 %c = icmp slt i4 %s, 12
3773 ret i1 %c
3777 ; CHECK-LABEL: @ashrslt_03_13_exact(
3778 ; CHECK-NEXT: ret i1 false
3781 %c = icmp slt i4 %s, 13
3782 ret i1 %c
3786 ; CHECK-LABEL: @ashrslt_03_14_exact(
3787 ; CHECK-NEXT: ret i1 false
3790 %c = icmp slt i4 %s, 14
3791 ret i1 %c
3795 ; CHECK-LABEL: @ashrslt_03_15_exact(
3796 ; CHECK-NEXT: ret i1 false
3799 %c = icmp slt i4 %s, 15
3800 ret i1 %c
3804 ; CHECK-LABEL: @ashr_slt_exact_near_pow2_cmpval(
3805 ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[X:%.*]], 9
3806 ; CHECK-NEXT: ret i1 [[C]]
3809 %c = icmp slt i8 %s, 5
3810 ret i1 %c
3814 ; CHECK-LABEL: @ashr_ult_exact_near_pow2_cmpval(
3815 ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[X:%.*]], 9
3816 ; CHECK-NEXT: ret i1 [[C]]
3819 %c = icmp ult i8 %s, 5
3820 ret i1 %c
3824 ; CHECK-LABEL: @negtest_near_pow2_cmpval_ashr_slt_noexact(
3825 ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[X:%.*]], 10
3826 ; CHECK-NEXT: ret i1 [[C]]
3829 %c = icmp slt i8 %s, 5
3830 ret i1 %c
3834 ; CHECK-LABEL: @negtest_near_pow2_cmpval_ashr_wrong_cmp_pred(
3835 ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[X:%.*]], 10
3836 ; CHECK-NEXT: ret i1 [[C]]
3839 %c = icmp eq i8 %s, 5
3840 ret i1 %c
3844 ; CHECK-LABEL: @negtest_near_pow2_cmpval_isnt_close_to_pow2(
3845 ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[X:%.*]], 12
3846 ; CHECK-NEXT: ret i1 [[C]]
3849 %c = icmp slt i8 %s, 6
3850 ret i1 %c
3854 ; CHECK-LABEL: @negtest_near_pow2_cmpval_would_overflow_into_signbit(
3855 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i8 [[X:%.*]], -1
3856 ; CHECK-NEXT: ret i1 [[C]]
3859 %c = icmp ult i8 %s, 33
3860 ret i1 %c