1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=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_00_multiuse(i4 %x, ptr %p) {
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
913 define i1 @ashrsgt_01_01(i4 %x) {
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
923 define i1 @ashrsgt_01_02(i4 %x) {
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
933 define i1 @ashrsgt_01_03(i4 %x) {
934 ; CHECK-LABEL: @ashrsgt_01_03(
935 ; CHECK-NEXT: ret i1 false
938 %c = icmp sgt i4 %s, 3
942 define i1 @ashrsgt_01_04(i4 %x) {
943 ; CHECK-LABEL: @ashrsgt_01_04(
944 ; CHECK-NEXT: ret i1 false
947 %c = icmp sgt i4 %s, 4
951 define i1 @ashrsgt_01_05(i4 %x) {
952 ; CHECK-LABEL: @ashrsgt_01_05(
953 ; CHECK-NEXT: ret i1 false
956 %c = icmp sgt i4 %s, 5
960 define i1 @ashrsgt_01_06(i4 %x) {
961 ; CHECK-LABEL: @ashrsgt_01_06(
962 ; CHECK-NEXT: ret i1 false
965 %c = icmp sgt i4 %s, 6
969 define i1 @ashrsgt_01_07(i4 %x) {
970 ; CHECK-LABEL: @ashrsgt_01_07(
971 ; CHECK-NEXT: ret i1 false
974 %c = icmp sgt i4 %s, 7
978 define i1 @ashrsgt_01_08(i4 %x) {
979 ; CHECK-LABEL: @ashrsgt_01_08(
980 ; CHECK-NEXT: ret i1 true
983 %c = icmp sgt i4 %s, 8
987 define i1 @ashrsgt_01_09(i4 %x) {
988 ; CHECK-LABEL: @ashrsgt_01_09(
989 ; CHECK-NEXT: ret i1 true
992 %c = icmp sgt i4 %s, 9
996 define i1 @ashrsgt_01_10(i4 %x) {
997 ; CHECK-LABEL: @ashrsgt_01_10(
998 ; CHECK-NEXT: ret i1 true
1001 %c = icmp sgt i4 %s, 10
1005 define i1 @ashrsgt_01_11(i4 %x) {
1006 ; CHECK-LABEL: @ashrsgt_01_11(
1007 ; CHECK-NEXT: ret i1 true
1010 %c = icmp sgt i4 %s, 11
1014 define i1 @ashrsgt_01_12(i4 %x) {
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
1024 define i1 @ashrsgt_01_13(i4 %x) {
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
1034 define i1 @ashrsgt_01_14(i4 %x) {
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
1044 define i1 @ashrsgt_01_15(i4 %x) {
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
1054 define i1 @ashrsgt_02_00(i4 %x) {
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
1064 define i1 @ashrsgt_02_01(i4 %x) {
1065 ; CHECK-LABEL: @ashrsgt_02_01(
1066 ; CHECK-NEXT: ret i1 false
1069 %c = icmp sgt i4 %s, 1
1073 define i1 @ashrsgt_02_02(i4 %x) {
1074 ; CHECK-LABEL: @ashrsgt_02_02(
1075 ; CHECK-NEXT: ret i1 false
1078 %c = icmp sgt i4 %s, 2
1082 define i1 @ashrsgt_02_03(i4 %x) {
1083 ; CHECK-LABEL: @ashrsgt_02_03(
1084 ; CHECK-NEXT: ret i1 false
1087 %c = icmp sgt i4 %s, 3
1091 define i1 @ashrsgt_02_04(i4 %x) {
1092 ; CHECK-LABEL: @ashrsgt_02_04(
1093 ; CHECK-NEXT: ret i1 false
1096 %c = icmp sgt i4 %s, 4
1100 define i1 @ashrsgt_02_05(i4 %x) {
1101 ; CHECK-LABEL: @ashrsgt_02_05(
1102 ; CHECK-NEXT: ret i1 false
1105 %c = icmp sgt i4 %s, 5
1109 define i1 @ashrsgt_02_06(i4 %x) {
1110 ; CHECK-LABEL: @ashrsgt_02_06(
1111 ; CHECK-NEXT: ret i1 false
1114 %c = icmp sgt i4 %s, 6
1118 define i1 @ashrsgt_02_07(i4 %x) {
1119 ; CHECK-LABEL: @ashrsgt_02_07(
1120 ; CHECK-NEXT: ret i1 false
1123 %c = icmp sgt i4 %s, 7
1127 define i1 @ashrsgt_02_08(i4 %x) {
1128 ; CHECK-LABEL: @ashrsgt_02_08(
1129 ; CHECK-NEXT: ret i1 true
1132 %c = icmp sgt i4 %s, 8
1136 define i1 @ashrsgt_02_09(i4 %x) {
1137 ; CHECK-LABEL: @ashrsgt_02_09(
1138 ; CHECK-NEXT: ret i1 true
1141 %c = icmp sgt i4 %s, 9
1145 define i1 @ashrsgt_02_10(i4 %x) {
1146 ; CHECK-LABEL: @ashrsgt_02_10(
1147 ; CHECK-NEXT: ret i1 true
1150 %c = icmp sgt i4 %s, 10
1154 define i1 @ashrsgt_02_11(i4 %x) {
1155 ; CHECK-LABEL: @ashrsgt_02_11(
1156 ; CHECK-NEXT: ret i1 true
1159 %c = icmp sgt i4 %s, 11
1163 define i1 @ashrsgt_02_12(i4 %x) {
1164 ; CHECK-LABEL: @ashrsgt_02_12(
1165 ; CHECK-NEXT: ret i1 true
1168 %c = icmp sgt i4 %s, 12
1172 define i1 @ashrsgt_02_13(i4 %x) {
1173 ; CHECK-LABEL: @ashrsgt_02_13(
1174 ; CHECK-NEXT: ret i1 true
1177 %c = icmp sgt i4 %s, 13
1181 define i1 @ashrsgt_02_14(i4 %x) {
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
1191 define i1 @ashrsgt_02_15(i4 %x) {
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
1201 define i1 @ashrsgt_03_00(i4 %x) {
1202 ; CHECK-LABEL: @ashrsgt_03_00(
1203 ; CHECK-NEXT: ret i1 false
1206 %c = icmp sgt i4 %s, 0
1210 define i1 @ashrsgt_03_01(i4 %x) {
1211 ; CHECK-LABEL: @ashrsgt_03_01(
1212 ; CHECK-NEXT: ret i1 false
1215 %c = icmp sgt i4 %s, 1
1219 define i1 @ashrsgt_03_02(i4 %x) {
1220 ; CHECK-LABEL: @ashrsgt_03_02(
1221 ; CHECK-NEXT: ret i1 false
1224 %c = icmp sgt i4 %s, 2
1228 define i1 @ashrsgt_03_03(i4 %x) {
1229 ; CHECK-LABEL: @ashrsgt_03_03(
1230 ; CHECK-NEXT: ret i1 false
1233 %c = icmp sgt i4 %s, 3
1237 define i1 @ashrsgt_03_04(i4 %x) {
1238 ; CHECK-LABEL: @ashrsgt_03_04(
1239 ; CHECK-NEXT: ret i1 false
1242 %c = icmp sgt i4 %s, 4
1246 define i1 @ashrsgt_03_05(i4 %x) {
1247 ; CHECK-LABEL: @ashrsgt_03_05(
1248 ; CHECK-NEXT: ret i1 false
1251 %c = icmp sgt i4 %s, 5
1255 define i1 @ashrsgt_03_06(i4 %x) {
1256 ; CHECK-LABEL: @ashrsgt_03_06(
1257 ; CHECK-NEXT: ret i1 false
1260 %c = icmp sgt i4 %s, 6
1264 define i1 @ashrsgt_03_07(i4 %x) {
1265 ; CHECK-LABEL: @ashrsgt_03_07(
1266 ; CHECK-NEXT: ret i1 false
1269 %c = icmp sgt i4 %s, 7
1273 define i1 @ashrsgt_03_08(i4 %x) {
1274 ; CHECK-LABEL: @ashrsgt_03_08(
1275 ; CHECK-NEXT: ret i1 true
1278 %c = icmp sgt i4 %s, 8
1282 define i1 @ashrsgt_03_09(i4 %x) {
1283 ; CHECK-LABEL: @ashrsgt_03_09(
1284 ; CHECK-NEXT: ret i1 true
1287 %c = icmp sgt i4 %s, 9
1291 define i1 @ashrsgt_03_10(i4 %x) {
1292 ; CHECK-LABEL: @ashrsgt_03_10(
1293 ; CHECK-NEXT: ret i1 true
1296 %c = icmp sgt i4 %s, 10
1300 define i1 @ashrsgt_03_11(i4 %x) {
1301 ; CHECK-LABEL: @ashrsgt_03_11(
1302 ; CHECK-NEXT: ret i1 true
1305 %c = icmp sgt i4 %s, 11
1309 define i1 @ashrsgt_03_12(i4 %x) {
1310 ; CHECK-LABEL: @ashrsgt_03_12(
1311 ; CHECK-NEXT: ret i1 true
1314 %c = icmp sgt i4 %s, 12
1318 define i1 @ashrsgt_03_13(i4 %x) {
1319 ; CHECK-LABEL: @ashrsgt_03_13(
1320 ; CHECK-NEXT: ret i1 true
1323 %c = icmp sgt i4 %s, 13
1327 define i1 @ashrsgt_03_14(i4 %x) {
1328 ; CHECK-LABEL: @ashrsgt_03_14(
1329 ; CHECK-NEXT: ret i1 true
1332 %c = icmp sgt i4 %s, 14
1336 define i1 @ashrsgt_03_15(i4 %x) {
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
1346 define i1 @ashrslt_01_00(i4 %x) {
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
1356 define i1 @ashrslt_01_01(i4 %x) {
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
1366 define i1 @ashrslt_01_02(i4 %x) {
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
1376 define i1 @ashrslt_01_03(i4 %x) {
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
1386 define i1 @ashrslt_01_04(i4 %x) {
1387 ; CHECK-LABEL: @ashrslt_01_04(
1388 ; CHECK-NEXT: ret i1 true
1391 %c = icmp slt i4 %s, 4
1395 define i1 @ashrslt_01_05(i4 %x) {
1396 ; CHECK-LABEL: @ashrslt_01_05(
1397 ; CHECK-NEXT: ret i1 true
1400 %c = icmp slt i4 %s, 5
1404 define i1 @ashrslt_01_06(i4 %x) {
1405 ; CHECK-LABEL: @ashrslt_01_06(
1406 ; CHECK-NEXT: ret i1 true
1409 %c = icmp slt i4 %s, 6
1413 define i1 @ashrslt_01_07(i4 %x) {
1414 ; CHECK-LABEL: @ashrslt_01_07(
1415 ; CHECK-NEXT: ret i1 true
1418 %c = icmp slt i4 %s, 7
1422 define i1 @ashrslt_01_08(i4 %x) {
1423 ; CHECK-LABEL: @ashrslt_01_08(
1424 ; CHECK-NEXT: ret i1 false
1427 %c = icmp slt i4 %s, 8
1431 define i1 @ashrslt_01_09(i4 %x) {
1432 ; CHECK-LABEL: @ashrslt_01_09(
1433 ; CHECK-NEXT: ret i1 false
1436 %c = icmp slt i4 %s, 9
1440 define i1 @ashrslt_01_10(i4 %x) {
1441 ; CHECK-LABEL: @ashrslt_01_10(
1442 ; CHECK-NEXT: ret i1 false
1445 %c = icmp slt i4 %s, 10
1449 define i1 @ashrslt_01_11(i4 %x) {
1450 ; CHECK-LABEL: @ashrslt_01_11(
1451 ; CHECK-NEXT: ret i1 false
1454 %c = icmp slt i4 %s, 11
1458 define i1 @ashrslt_01_12(i4 %x) {
1459 ; CHECK-LABEL: @ashrslt_01_12(
1460 ; CHECK-NEXT: ret i1 false
1463 %c = icmp slt i4 %s, 12
1467 define i1 @ashrslt_01_13(i4 %x) {
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
1477 define i1 @ashrslt_01_14(i4 %x) {
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
1487 define i1 @ashrslt_01_15(i4 %x) {
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
1497 define i1 @ashrslt_02_00(i4 %x) {
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
1507 define i1 @ashrslt_02_01(i4 %x) {
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
1517 define i1 @ashrslt_02_02(i4 %x) {
1518 ; CHECK-LABEL: @ashrslt_02_02(
1519 ; CHECK-NEXT: ret i1 true
1522 %c = icmp slt i4 %s, 2
1526 define i1 @ashrslt_02_03(i4 %x) {
1527 ; CHECK-LABEL: @ashrslt_02_03(
1528 ; CHECK-NEXT: ret i1 true
1531 %c = icmp slt i4 %s, 3
1535 define i1 @ashrslt_02_04(i4 %x) {
1536 ; CHECK-LABEL: @ashrslt_02_04(
1537 ; CHECK-NEXT: ret i1 true
1540 %c = icmp slt i4 %s, 4
1544 define i1 @ashrslt_02_05(i4 %x) {
1545 ; CHECK-LABEL: @ashrslt_02_05(
1546 ; CHECK-NEXT: ret i1 true
1549 %c = icmp slt i4 %s, 5
1553 define i1 @ashrslt_02_06(i4 %x) {
1554 ; CHECK-LABEL: @ashrslt_02_06(
1555 ; CHECK-NEXT: ret i1 true
1558 %c = icmp slt i4 %s, 6
1562 define i1 @ashrslt_02_07(i4 %x) {
1563 ; CHECK-LABEL: @ashrslt_02_07(
1564 ; CHECK-NEXT: ret i1 true
1567 %c = icmp slt i4 %s, 7
1571 define i1 @ashrslt_02_08(i4 %x) {
1572 ; CHECK-LABEL: @ashrslt_02_08(
1573 ; CHECK-NEXT: ret i1 false
1576 %c = icmp slt i4 %s, 8
1580 define i1 @ashrslt_02_09(i4 %x) {
1581 ; CHECK-LABEL: @ashrslt_02_09(
1582 ; CHECK-NEXT: ret i1 false
1585 %c = icmp slt i4 %s, 9
1589 define i1 @ashrslt_02_10(i4 %x) {
1590 ; CHECK-LABEL: @ashrslt_02_10(
1591 ; CHECK-NEXT: ret i1 false
1594 %c = icmp slt i4 %s, 10
1598 define i1 @ashrslt_02_11(i4 %x) {
1599 ; CHECK-LABEL: @ashrslt_02_11(
1600 ; CHECK-NEXT: ret i1 false
1603 %c = icmp slt i4 %s, 11
1607 define i1 @ashrslt_02_12(i4 %x) {
1608 ; CHECK-LABEL: @ashrslt_02_12(
1609 ; CHECK-NEXT: ret i1 false
1612 %c = icmp slt i4 %s, 12
1616 define i1 @ashrslt_02_13(i4 %x) {
1617 ; CHECK-LABEL: @ashrslt_02_13(
1618 ; CHECK-NEXT: ret i1 false
1621 %c = icmp slt i4 %s, 13
1625 define i1 @ashrslt_02_14(i4 %x) {
1626 ; CHECK-LABEL: @ashrslt_02_14(
1627 ; CHECK-NEXT: ret i1 false
1630 %c = icmp slt i4 %s, 14
1634 define i1 @ashrslt_02_15(i4 %x) {
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
1644 define i1 @ashrslt_03_00(i4 %x) {
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
1654 define i1 @ashrslt_03_01(i4 %x) {
1655 ; CHECK-LABEL: @ashrslt_03_01(
1656 ; CHECK-NEXT: ret i1 true
1659 %c = icmp slt i4 %s, 1
1663 define i1 @ashrslt_03_02(i4 %x) {
1664 ; CHECK-LABEL: @ashrslt_03_02(
1665 ; CHECK-NEXT: ret i1 true
1668 %c = icmp slt i4 %s, 2
1672 define i1 @ashrslt_03_03(i4 %x) {
1673 ; CHECK-LABEL: @ashrslt_03_03(
1674 ; CHECK-NEXT: ret i1 true
1677 %c = icmp slt i4 %s, 3
1681 define i1 @ashrslt_03_04(i4 %x) {
1682 ; CHECK-LABEL: @ashrslt_03_04(
1683 ; CHECK-NEXT: ret i1 true
1686 %c = icmp slt i4 %s, 4
1690 define i1 @ashrslt_03_05(i4 %x) {
1691 ; CHECK-LABEL: @ashrslt_03_05(
1692 ; CHECK-NEXT: ret i1 true
1695 %c = icmp slt i4 %s, 5
1699 define i1 @ashrslt_03_06(i4 %x) {
1700 ; CHECK-LABEL: @ashrslt_03_06(
1701 ; CHECK-NEXT: ret i1 true
1704 %c = icmp slt i4 %s, 6
1708 define i1 @ashrslt_03_07(i4 %x) {
1709 ; CHECK-LABEL: @ashrslt_03_07(
1710 ; CHECK-NEXT: ret i1 true
1713 %c = icmp slt i4 %s, 7
1717 define i1 @ashrslt_03_08(i4 %x) {
1718 ; CHECK-LABEL: @ashrslt_03_08(
1719 ; CHECK-NEXT: ret i1 false
1722 %c = icmp slt i4 %s, 8
1726 define i1 @ashrslt_03_09(i4 %x) {
1727 ; CHECK-LABEL: @ashrslt_03_09(
1728 ; CHECK-NEXT: ret i1 false
1731 %c = icmp slt i4 %s, 9
1735 define i1 @ashrslt_03_10(i4 %x) {
1736 ; CHECK-LABEL: @ashrslt_03_10(
1737 ; CHECK-NEXT: ret i1 false
1740 %c = icmp slt i4 %s, 10
1744 define i1 @ashrslt_03_11(i4 %x) {
1745 ; CHECK-LABEL: @ashrslt_03_11(
1746 ; CHECK-NEXT: ret i1 false
1749 %c = icmp slt i4 %s, 11
1753 define i1 @ashrslt_03_12(i4 %x) {
1754 ; CHECK-LABEL: @ashrslt_03_12(
1755 ; CHECK-NEXT: ret i1 false
1758 %c = icmp slt i4 %s, 12
1762 define i1 @ashrslt_03_13(i4 %x) {
1763 ; CHECK-LABEL: @ashrslt_03_13(
1764 ; CHECK-NEXT: ret i1 false
1767 %c = icmp slt i4 %s, 13
1771 define i1 @ashrslt_03_14(i4 %x) {
1772 ; CHECK-LABEL: @ashrslt_03_14(
1773 ; CHECK-NEXT: ret i1 false
1776 %c = icmp slt i4 %s, 14
1780 define i1 @ashrslt_03_15(i4 %x) {
1781 ; CHECK-LABEL: @ashrslt_03_15(
1782 ; CHECK-NEXT: ret i1 false
1785 %c = icmp slt i4 %s, 15
1789 define i1 @lshrugt_01_00_exact(i4 %x) {
1790 ; CHECK-LABEL: @lshrugt_01_00_exact(
1791 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], 0
1792 ; CHECK-NEXT: ret i1 [[C]]
1794 %s = lshr exact i4 %x, 1
1795 %c = icmp ugt i4 %s, 0
1799 define i1 @lshrugt_01_01_exact(i4 %x) {
1800 ; CHECK-LABEL: @lshrugt_01_01_exact(
1801 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 2
1802 ; CHECK-NEXT: ret i1 [[C]]
1804 %s = lshr exact i4 %x, 1
1805 %c = icmp ugt i4 %s, 1
1809 define i1 @lshrugt_01_02_exact(i4 %x) {
1810 ; CHECK-LABEL: @lshrugt_01_02_exact(
1811 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 4
1812 ; CHECK-NEXT: ret i1 [[C]]
1814 %s = lshr exact i4 %x, 1
1815 %c = icmp ugt i4 %s, 2
1819 define i1 @lshrugt_01_03_exact(i4 %x) {
1820 ; CHECK-LABEL: @lshrugt_01_03_exact(
1821 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 6
1822 ; CHECK-NEXT: ret i1 [[C]]
1824 %s = lshr exact i4 %x, 1
1825 %c = icmp ugt i4 %s, 3
1829 define i1 @lshrugt_01_04_exact(i4 %x) {
1830 ; CHECK-LABEL: @lshrugt_01_04_exact(
1831 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], -8
1832 ; CHECK-NEXT: ret i1 [[C]]
1834 %s = lshr exact i4 %x, 1
1835 %c = icmp ugt i4 %s, 4
1839 define i1 @lshrugt_01_05_exact(i4 %x) {
1840 ; CHECK-LABEL: @lshrugt_01_05_exact(
1841 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], -6
1842 ; CHECK-NEXT: ret i1 [[C]]
1844 %s = lshr exact i4 %x, 1
1845 %c = icmp ugt i4 %s, 5
1849 define i1 @lshrugt_01_06_exact(i4 %x) {
1850 ; CHECK-LABEL: @lshrugt_01_06_exact(
1851 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], -2
1852 ; CHECK-NEXT: ret i1 [[C]]
1854 %s = lshr exact i4 %x, 1
1855 %c = icmp ugt i4 %s, 6
1859 define i1 @lshrugt_01_07_exact(i4 %x) {
1860 ; CHECK-LABEL: @lshrugt_01_07_exact(
1861 ; CHECK-NEXT: ret i1 false
1863 %s = lshr exact i4 %x, 1
1864 %c = icmp ugt i4 %s, 7
1868 define i1 @lshrugt_01_08_exact(i4 %x) {
1869 ; CHECK-LABEL: @lshrugt_01_08_exact(
1870 ; CHECK-NEXT: ret i1 false
1872 %s = lshr exact i4 %x, 1
1873 %c = icmp ugt i4 %s, 8
1877 define i1 @lshrugt_01_09_exact(i4 %x) {
1878 ; CHECK-LABEL: @lshrugt_01_09_exact(
1879 ; CHECK-NEXT: ret i1 false
1881 %s = lshr exact i4 %x, 1
1882 %c = icmp ugt i4 %s, 9
1886 define i1 @lshrugt_01_10_exact(i4 %x) {
1887 ; CHECK-LABEL: @lshrugt_01_10_exact(
1888 ; CHECK-NEXT: ret i1 false
1890 %s = lshr exact i4 %x, 1
1891 %c = icmp ugt i4 %s, 10
1895 define i1 @lshrugt_01_11_exact(i4 %x) {
1896 ; CHECK-LABEL: @lshrugt_01_11_exact(
1897 ; CHECK-NEXT: ret i1 false
1899 %s = lshr exact i4 %x, 1
1900 %c = icmp ugt i4 %s, 11
1904 define i1 @lshrugt_01_12_exact(i4 %x) {
1905 ; CHECK-LABEL: @lshrugt_01_12_exact(
1906 ; CHECK-NEXT: ret i1 false
1908 %s = lshr exact i4 %x, 1
1909 %c = icmp ugt i4 %s, 12
1913 define i1 @lshrugt_01_13_exact(i4 %x) {
1914 ; CHECK-LABEL: @lshrugt_01_13_exact(
1915 ; CHECK-NEXT: ret i1 false
1917 %s = lshr exact i4 %x, 1
1918 %c = icmp ugt i4 %s, 13
1922 define i1 @lshrugt_01_14_exact(i4 %x) {
1923 ; CHECK-LABEL: @lshrugt_01_14_exact(
1924 ; CHECK-NEXT: ret i1 false
1926 %s = lshr exact i4 %x, 1
1927 %c = icmp ugt i4 %s, 14
1931 define i1 @lshrugt_01_15_exact(i4 %x) {
1932 ; CHECK-LABEL: @lshrugt_01_15_exact(
1933 ; CHECK-NEXT: ret i1 false
1935 %s = lshr exact i4 %x, 1
1936 %c = icmp ugt i4 %s, 15
1940 define i1 @lshrugt_02_00_exact(i4 %x) {
1941 ; CHECK-LABEL: @lshrugt_02_00_exact(
1942 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], 0
1943 ; CHECK-NEXT: ret i1 [[C]]
1945 %s = lshr exact i4 %x, 2
1946 %c = icmp ugt i4 %s, 0
1950 define i1 @lshrugt_02_01_exact(i4 %x) {
1951 ; CHECK-LABEL: @lshrugt_02_01_exact(
1952 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i4 [[X:%.*]], 4
1953 ; CHECK-NEXT: ret i1 [[C]]
1955 %s = lshr exact i4 %x, 2
1956 %c = icmp ugt i4 %s, 1
1960 define i1 @lshrugt_02_02_exact(i4 %x) {
1961 ; CHECK-LABEL: @lshrugt_02_02_exact(
1962 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], -4
1963 ; CHECK-NEXT: ret i1 [[C]]
1965 %s = lshr exact i4 %x, 2
1966 %c = icmp ugt i4 %s, 2
1970 define i1 @lshrugt_02_03_exact(i4 %x) {
1971 ; CHECK-LABEL: @lshrugt_02_03_exact(
1972 ; CHECK-NEXT: ret i1 false
1974 %s = lshr exact i4 %x, 2
1975 %c = icmp ugt i4 %s, 3
1979 define i1 @lshrugt_02_04_exact(i4 %x) {
1980 ; CHECK-LABEL: @lshrugt_02_04_exact(
1981 ; CHECK-NEXT: ret i1 false
1983 %s = lshr exact i4 %x, 2
1984 %c = icmp ugt i4 %s, 4
1988 define i1 @lshrugt_02_05_exact(i4 %x) {
1989 ; CHECK-LABEL: @lshrugt_02_05_exact(
1990 ; CHECK-NEXT: ret i1 false
1992 %s = lshr exact i4 %x, 2
1993 %c = icmp ugt i4 %s, 5
1997 define i1 @lshrugt_02_06_exact(i4 %x) {
1998 ; CHECK-LABEL: @lshrugt_02_06_exact(
1999 ; CHECK-NEXT: ret i1 false
2001 %s = lshr exact i4 %x, 2
2002 %c = icmp ugt i4 %s, 6
2006 define i1 @lshrugt_02_07_exact(i4 %x) {
2007 ; CHECK-LABEL: @lshrugt_02_07_exact(
2008 ; CHECK-NEXT: ret i1 false
2010 %s = lshr exact i4 %x, 2
2011 %c = icmp ugt i4 %s, 7
2015 define i1 @lshrugt_02_08_exact(i4 %x) {
2016 ; CHECK-LABEL: @lshrugt_02_08_exact(
2017 ; CHECK-NEXT: ret i1 false
2019 %s = lshr exact i4 %x, 2
2020 %c = icmp ugt i4 %s, 8
2024 define i1 @lshrugt_02_09_exact(i4 %x) {
2025 ; CHECK-LABEL: @lshrugt_02_09_exact(
2026 ; CHECK-NEXT: ret i1 false
2028 %s = lshr exact i4 %x, 2
2029 %c = icmp ugt i4 %s, 9
2033 define i1 @lshrugt_02_10_exact(i4 %x) {
2034 ; CHECK-LABEL: @lshrugt_02_10_exact(
2035 ; CHECK-NEXT: ret i1 false
2037 %s = lshr exact i4 %x, 2
2038 %c = icmp ugt i4 %s, 10
2042 define i1 @lshrugt_02_11_exact(i4 %x) {
2043 ; CHECK-LABEL: @lshrugt_02_11_exact(
2044 ; CHECK-NEXT: ret i1 false
2046 %s = lshr exact i4 %x, 2
2047 %c = icmp ugt i4 %s, 11
2051 define i1 @lshrugt_02_12_exact(i4 %x) {
2052 ; CHECK-LABEL: @lshrugt_02_12_exact(
2053 ; CHECK-NEXT: ret i1 false
2055 %s = lshr exact i4 %x, 2
2056 %c = icmp ugt i4 %s, 12
2060 define i1 @lshrugt_02_13_exact(i4 %x) {
2061 ; CHECK-LABEL: @lshrugt_02_13_exact(
2062 ; CHECK-NEXT: ret i1 false
2064 %s = lshr exact i4 %x, 2
2065 %c = icmp ugt i4 %s, 13
2069 define i1 @lshrugt_02_14_exact(i4 %x) {
2070 ; CHECK-LABEL: @lshrugt_02_14_exact(
2071 ; CHECK-NEXT: ret i1 false
2073 %s = lshr exact i4 %x, 2
2074 %c = icmp ugt i4 %s, 14
2078 define i1 @lshrugt_02_15_exact(i4 %x) {
2079 ; CHECK-LABEL: @lshrugt_02_15_exact(
2080 ; CHECK-NEXT: ret i1 false
2082 %s = lshr exact i4 %x, 2
2083 %c = icmp ugt i4 %s, 15
2087 define i1 @lshrugt_03_00_exact(i4 %x) {
2088 ; CHECK-LABEL: @lshrugt_03_00_exact(
2089 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], 0
2090 ; CHECK-NEXT: ret i1 [[C]]
2092 %s = lshr exact i4 %x, 3
2093 %c = icmp ugt i4 %s, 0
2097 define i1 @lshrugt_03_01_exact(i4 %x) {
2098 ; CHECK-LABEL: @lshrugt_03_01_exact(
2099 ; CHECK-NEXT: ret i1 false
2101 %s = lshr exact i4 %x, 3
2102 %c = icmp ugt i4 %s, 1
2106 define i1 @lshrugt_03_02_exact(i4 %x) {
2107 ; CHECK-LABEL: @lshrugt_03_02_exact(
2108 ; CHECK-NEXT: ret i1 false
2110 %s = lshr exact i4 %x, 3
2111 %c = icmp ugt i4 %s, 2
2115 define i1 @lshrugt_03_03_exact(i4 %x) {
2116 ; CHECK-LABEL: @lshrugt_03_03_exact(
2117 ; CHECK-NEXT: ret i1 false
2119 %s = lshr exact i4 %x, 3
2120 %c = icmp ugt i4 %s, 3
2124 define i1 @lshrugt_03_04_exact(i4 %x) {
2125 ; CHECK-LABEL: @lshrugt_03_04_exact(
2126 ; CHECK-NEXT: ret i1 false
2128 %s = lshr exact i4 %x, 3
2129 %c = icmp ugt i4 %s, 4
2133 define i1 @lshrugt_03_05_exact(i4 %x) {
2134 ; CHECK-LABEL: @lshrugt_03_05_exact(
2135 ; CHECK-NEXT: ret i1 false
2137 %s = lshr exact i4 %x, 3
2138 %c = icmp ugt i4 %s, 5
2142 define i1 @lshrugt_03_06_exact(i4 %x) {
2143 ; CHECK-LABEL: @lshrugt_03_06_exact(
2144 ; CHECK-NEXT: ret i1 false
2146 %s = lshr exact i4 %x, 3
2147 %c = icmp ugt i4 %s, 6
2151 define i1 @lshrugt_03_07_exact(i4 %x) {
2152 ; CHECK-LABEL: @lshrugt_03_07_exact(
2153 ; CHECK-NEXT: ret i1 false
2155 %s = lshr exact i4 %x, 3
2156 %c = icmp ugt i4 %s, 7
2160 define i1 @lshrugt_03_08_exact(i4 %x) {
2161 ; CHECK-LABEL: @lshrugt_03_08_exact(
2162 ; CHECK-NEXT: ret i1 false
2164 %s = lshr exact i4 %x, 3
2165 %c = icmp ugt i4 %s, 8
2169 define i1 @lshrugt_03_09_exact(i4 %x) {
2170 ; CHECK-LABEL: @lshrugt_03_09_exact(
2171 ; CHECK-NEXT: ret i1 false
2173 %s = lshr exact i4 %x, 3
2174 %c = icmp ugt i4 %s, 9
2178 define i1 @lshrugt_03_10_exact(i4 %x) {
2179 ; CHECK-LABEL: @lshrugt_03_10_exact(
2180 ; CHECK-NEXT: ret i1 false
2182 %s = lshr exact i4 %x, 3
2183 %c = icmp ugt i4 %s, 10
2187 define i1 @lshrugt_03_11_exact(i4 %x) {
2188 ; CHECK-LABEL: @lshrugt_03_11_exact(
2189 ; CHECK-NEXT: ret i1 false
2191 %s = lshr exact i4 %x, 3
2192 %c = icmp ugt i4 %s, 11
2196 define i1 @lshrugt_03_12_exact(i4 %x) {
2197 ; CHECK-LABEL: @lshrugt_03_12_exact(
2198 ; CHECK-NEXT: ret i1 false
2200 %s = lshr exact i4 %x, 3
2201 %c = icmp ugt i4 %s, 12
2205 define i1 @lshrugt_03_13_exact(i4 %x) {
2206 ; CHECK-LABEL: @lshrugt_03_13_exact(
2207 ; CHECK-NEXT: ret i1 false
2209 %s = lshr exact i4 %x, 3
2210 %c = icmp ugt i4 %s, 13
2214 define i1 @lshrugt_03_14_exact(i4 %x) {
2215 ; CHECK-LABEL: @lshrugt_03_14_exact(
2216 ; CHECK-NEXT: ret i1 false
2218 %s = lshr exact i4 %x, 3
2219 %c = icmp ugt i4 %s, 14
2223 define i1 @lshrugt_03_15_exact(i4 %x) {
2224 ; CHECK-LABEL: @lshrugt_03_15_exact(
2225 ; CHECK-NEXT: ret i1 false
2227 %s = lshr exact i4 %x, 3
2228 %c = icmp ugt i4 %s, 15
2232 define i1 @ashr_eq_exact(i8 %x) {
2233 ; CHECK-LABEL: @ashr_eq_exact(
2234 ; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[X:%.*]], 80
2235 ; CHECK-NEXT: ret i1 [[C]]
2237 %s = ashr exact i8 %x, 3
2238 %c = icmp eq i8 %s, 10
2242 define i1 @ashr_ne_exact(i8 %x) {
2243 ; CHECK-LABEL: @ashr_ne_exact(
2244 ; CHECK-NEXT: [[C:%.*]] = icmp ne i8 [[X:%.*]], 80
2245 ; CHECK-NEXT: ret i1 [[C]]
2247 %s = ashr exact i8 %x, 3
2248 %c = icmp ne i8 %s, 10
2252 define i1 @ashr_ugt_exact(i8 %x) {
2253 ; CHECK-LABEL: @ashr_ugt_exact(
2254 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i8 [[X:%.*]], 80
2255 ; CHECK-NEXT: ret i1 [[C]]
2257 %s = ashr exact i8 %x, 3
2258 %c = icmp ugt i8 %s, 10
2263 define i1 @ashr_uge_exact(i8 %x) {
2264 ; CHECK-LABEL: @ashr_uge_exact(
2265 ; CHECK-NEXT: [[C:%.*]] = icmp ugt i8 [[X:%.*]], 72
2266 ; CHECK-NEXT: ret i1 [[C]]
2268 %s = ashr exact i8 %x, 3
2269 %c = icmp uge i8 %s, 10
2273 define i1 @ashr_ult_exact(i8 %x) {
2274 ; CHECK-LABEL: @ashr_ult_exact(
2275 ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[X:%.*]], 80
2276 ; CHECK-NEXT: ret i1 [[C]]
2278 %s = ashr exact i8 %x, 3
2279 %c = icmp ult i8 %s, 10
2284 define i1 @ashr_ule_exact(i8 %x) {
2285 ; CHECK-LABEL: @ashr_ule_exact(
2286 ; CHECK-NEXT: [[C:%.*]] = icmp ult i8 [[X:%.*]], 88
2287 ; CHECK-NEXT: ret i1 [[C]]
2289 %s = ashr exact i8 %x, 3
2290 %c = icmp ule i8 %s, 10
2295 define i1 @ashr_sgt_exact(i8 %x) {
2296 ; CHECK-LABEL: @ashr_sgt_exact(
2297 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i8 [[X:%.*]], 80
2298 ; CHECK-NEXT: ret i1 [[C]]
2300 %s = ashr exact i8 %x, 3
2301 %c = icmp sgt i8 %s, 10
2306 define i1 @ashr_sge_exact(i8 %x) {
2307 ; CHECK-LABEL: @ashr_sge_exact(
2308 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i8 [[X:%.*]], 72
2309 ; CHECK-NEXT: ret i1 [[C]]
2311 %s = ashr exact i8 %x, 3
2312 %c = icmp sge i8 %s, 10
2316 define i1 @ashr_slt_exact(i8 %x) {
2317 ; CHECK-LABEL: @ashr_slt_exact(
2318 ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[X:%.*]], 80
2319 ; CHECK-NEXT: ret i1 [[C]]
2321 %s = ashr exact i8 %x, 3
2322 %c = icmp slt i8 %s, 10
2326 define i1 @ashr_sle_exact(i8 %x) {
2327 ; CHECK-LABEL: @ashr_sle_exact(
2328 ; CHECK-NEXT: [[C:%.*]] = icmp slt i8 [[X:%.*]], 88
2329 ; CHECK-NEXT: ret i1 [[C]]
2331 %s = ashr exact i8 %x, 3
2332 %c = icmp sle i8 %s, 10
2336 define i1 @ashr_eq_noexact(i8 %x) {
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
2347 define i1 @ashr_ne_noexact(i8 %x) {
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
2358 define i1 @ashr_ugt_noexact(i8 %x) {
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
2369 define i1 @ashr_uge_noexact(i8 %x) {
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
2379 define i1 @ashr_ult_noexact(i8 %x) {
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
2390 define i1 @ashr_ule_noexact(i8 %x) {
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
2401 define i1 @ashr_sgt_noexact(i8 %x) {
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
2412 define i1 @ashr_sge_noexact(i8 %x) {
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
2422 define i1 @ashr_slt_noexact(i8 %x) {
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
2432 define i1 @ashr_sle_noexact(i8 %x) {
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
2442 define i1 @ashr_00_00_ashr_extra_use(i8 %x, ptr %ptr) {
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]]
2449 %s = ashr exact i8 %x, 3
2450 %c = icmp ule i8 %s, 10
2451 store i8 %s, ptr %ptr
2455 define <4 x i1> @ashr_00_00_vec(<4 x i8> %x) {
2456 ; CHECK-LABEL: @ashr_00_00_vec(
2457 ; CHECK-NEXT: [[C:%.*]] = icmp ult <4 x i8> [[X:%.*]], <i8 88, i8 88, i8 88, i8 88>
2458 ; CHECK-NEXT: ret <4 x i1> [[C]]
2460 %s = ashr exact <4 x i8> %x, <i8 3,i8 3, i8 3, i8 3>
2461 %c = icmp ule <4 x i8> %s, <i8 10,i8 10,i8 10,i8 10>
2465 define i1 @ashr_sgt_overflow(i8 %x) {
2466 ; CHECK-LABEL: @ashr_sgt_overflow(
2467 ; CHECK-NEXT: ret i1 false
2470 %c = icmp sgt i8 %s, 63
2474 define i1 @lshrult_01_00_exact(i4 %x) {
2475 ; CHECK-LABEL: @lshrult_01_00_exact(
2476 ; CHECK-NEXT: ret i1 false
2478 %s = lshr exact i4 %x, 1
2479 %c = icmp ult i4 %s, 0
2483 define i1 @lshrult_01_01_exact(i4 %x) {
2484 ; CHECK-LABEL: @lshrult_01_01_exact(
2485 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], 0
2486 ; CHECK-NEXT: ret i1 [[C]]
2488 %s = lshr exact i4 %x, 1
2489 %c = icmp ult i4 %s, 1
2493 define i1 @lshrult_01_02_exact(i4 %x) {
2494 ; CHECK-LABEL: @lshrult_01_02_exact(
2495 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], 4
2496 ; CHECK-NEXT: ret i1 [[C]]
2498 %s = lshr exact i4 %x, 1
2499 %c = icmp ult i4 %s, 2
2503 define i1 @lshrult_01_03_exact(i4 %x) {
2504 ; CHECK-LABEL: @lshrult_01_03_exact(
2505 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], 6
2506 ; CHECK-NEXT: ret i1 [[C]]
2508 %s = lshr exact i4 %x, 1
2509 %c = icmp ult i4 %s, 3
2513 define i1 @lshrult_01_04_exact(i4 %x) {
2514 ; CHECK-LABEL: @lshrult_01_04_exact(
2515 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
2516 ; CHECK-NEXT: ret i1 [[C]]
2518 %s = lshr exact i4 %x, 1
2519 %c = icmp ult i4 %s, 4
2523 define i1 @lshrult_01_05_exact(i4 %x) {
2524 ; CHECK-LABEL: @lshrult_01_05_exact(
2525 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], -6
2526 ; CHECK-NEXT: ret i1 [[C]]
2528 %s = lshr exact i4 %x, 1
2529 %c = icmp ult i4 %s, 5
2533 define i1 @lshrult_01_06_exact(i4 %x) {
2534 ; CHECK-LABEL: @lshrult_01_06_exact(
2535 ; CHECK-NEXT: [[C:%.*]] = icmp ult i4 [[X:%.*]], -4
2536 ; CHECK-NEXT: ret i1 [[C]]
2538 %s = lshr exact i4 %x, 1
2539 %c = icmp ult i4 %s, 6
2543 define i1 @lshrult_01_07_exact(i4 %x) {
2544 ; CHECK-LABEL: @lshrult_01_07_exact(
2545 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -2
2546 ; CHECK-NEXT: ret i1 [[C]]
2548 %s = lshr exact i4 %x, 1
2549 %c = icmp ult i4 %s, 7
2553 define i1 @lshrult_01_08_exact(i4 %x) {
2554 ; CHECK-LABEL: @lshrult_01_08_exact(
2555 ; CHECK-NEXT: ret i1 true
2557 %s = lshr exact i4 %x, 1
2558 %c = icmp ult i4 %s, 8
2562 define i1 @lshrult_01_09_exact(i4 %x) {
2563 ; CHECK-LABEL: @lshrult_01_09_exact(
2564 ; CHECK-NEXT: ret i1 true
2566 %s = lshr exact i4 %x, 1
2567 %c = icmp ult i4 %s, 9
2571 define i1 @lshrult_01_10_exact(i4 %x) {
2572 ; CHECK-LABEL: @lshrult_01_10_exact(
2573 ; CHECK-NEXT: ret i1 true
2575 %s = lshr exact i4 %x, 1
2576 %c = icmp ult i4 %s, 10
2580 define i1 @lshrult_01_11_exact(i4 %x) {
2581 ; CHECK-LABEL: @lshrult_01_11_exact(
2582 ; CHECK-NEXT: ret i1 true
2584 %s = lshr exact i4 %x, 1
2585 %c = icmp ult i4 %s, 11
2589 define i1 @lshrult_01_12_exact(i4 %x) {
2590 ; CHECK-LABEL: @lshrult_01_12_exact(
2591 ; CHECK-NEXT: ret i1 true
2593 %s = lshr exact i4 %x, 1
2594 %c = icmp ult i4 %s, 12
2598 define i1 @lshrult_01_13_exact(i4 %x) {
2599 ; CHECK-LABEL: @lshrult_01_13_exact(
2600 ; CHECK-NEXT: ret i1 true
2602 %s = lshr exact i4 %x, 1
2603 %c = icmp ult i4 %s, 13
2607 define i1 @lshrult_01_14_exact(i4 %x) {
2608 ; CHECK-LABEL: @lshrult_01_14_exact(
2609 ; CHECK-NEXT: ret i1 true
2611 %s = lshr exact i4 %x, 1
2612 %c = icmp ult i4 %s, 14
2616 define i1 @lshrult_01_15_exact(i4 %x) {
2617 ; CHECK-LABEL: @lshrult_01_15_exact(
2618 ; CHECK-NEXT: ret i1 true
2620 %s = lshr exact i4 %x, 1
2621 %c = icmp ult i4 %s, 15
2625 define i1 @lshrult_02_00_exact(i4 %x) {
2626 ; CHECK-LABEL: @lshrult_02_00_exact(
2627 ; CHECK-NEXT: ret i1 false
2629 %s = lshr exact i4 %x, 2
2630 %c = icmp ult i4 %s, 0
2634 define i1 @lshrult_02_01_exact(i4 %x) {
2635 ; CHECK-LABEL: @lshrult_02_01_exact(
2636 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], 0
2637 ; CHECK-NEXT: ret i1 [[C]]
2639 %s = lshr exact i4 %x, 2
2640 %c = icmp ult i4 %s, 1
2644 define i1 @lshrult_02_02_exact(i4 %x) {
2645 ; CHECK-LABEL: @lshrult_02_02_exact(
2646 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
2647 ; CHECK-NEXT: ret i1 [[C]]
2649 %s = lshr exact i4 %x, 2
2650 %c = icmp ult i4 %s, 2
2654 define i1 @lshrult_02_03_exact(i4 %x) {
2655 ; CHECK-LABEL: @lshrult_02_03_exact(
2656 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -4
2657 ; CHECK-NEXT: ret i1 [[C]]
2659 %s = lshr exact i4 %x, 2
2660 %c = icmp ult i4 %s, 3
2664 define i1 @lshrult_02_04_exact(i4 %x) {
2665 ; CHECK-LABEL: @lshrult_02_04_exact(
2666 ; CHECK-NEXT: ret i1 true
2668 %s = lshr exact i4 %x, 2
2669 %c = icmp ult i4 %s, 4
2673 define i1 @lshrult_02_05_exact(i4 %x) {
2674 ; CHECK-LABEL: @lshrult_02_05_exact(
2675 ; CHECK-NEXT: ret i1 true
2677 %s = lshr exact i4 %x, 2
2678 %c = icmp ult i4 %s, 5
2682 define i1 @lshrult_02_06_exact(i4 %x) {
2683 ; CHECK-LABEL: @lshrult_02_06_exact(
2684 ; CHECK-NEXT: ret i1 true
2686 %s = lshr exact i4 %x, 2
2687 %c = icmp ult i4 %s, 6
2691 define i1 @lshrult_02_07_exact(i4 %x) {
2692 ; CHECK-LABEL: @lshrult_02_07_exact(
2693 ; CHECK-NEXT: ret i1 true
2695 %s = lshr exact i4 %x, 2
2696 %c = icmp ult i4 %s, 7
2700 define i1 @lshrult_02_08_exact(i4 %x) {
2701 ; CHECK-LABEL: @lshrult_02_08_exact(
2702 ; CHECK-NEXT: ret i1 true
2704 %s = lshr exact i4 %x, 2
2705 %c = icmp ult i4 %s, 8
2709 define i1 @lshrult_02_09_exact(i4 %x) {
2710 ; CHECK-LABEL: @lshrult_02_09_exact(
2711 ; CHECK-NEXT: ret i1 true
2713 %s = lshr exact i4 %x, 2
2714 %c = icmp ult i4 %s, 9
2718 define i1 @lshrult_02_10_exact(i4 %x) {
2719 ; CHECK-LABEL: @lshrult_02_10_exact(
2720 ; CHECK-NEXT: ret i1 true
2722 %s = lshr exact i4 %x, 2
2723 %c = icmp ult i4 %s, 10
2727 define i1 @lshrult_02_11_exact(i4 %x) {
2728 ; CHECK-LABEL: @lshrult_02_11_exact(
2729 ; CHECK-NEXT: ret i1 true
2731 %s = lshr exact i4 %x, 2
2732 %c = icmp ult i4 %s, 11
2736 define i1 @lshrult_02_12_exact(i4 %x) {
2737 ; CHECK-LABEL: @lshrult_02_12_exact(
2738 ; CHECK-NEXT: ret i1 true
2740 %s = lshr exact i4 %x, 2
2741 %c = icmp ult i4 %s, 12
2745 define i1 @lshrult_02_13_exact(i4 %x) {
2746 ; CHECK-LABEL: @lshrult_02_13_exact(
2747 ; CHECK-NEXT: ret i1 true
2749 %s = lshr exact i4 %x, 2
2750 %c = icmp ult i4 %s, 13
2754 define i1 @lshrult_02_14_exact(i4 %x) {
2755 ; CHECK-LABEL: @lshrult_02_14_exact(
2756 ; CHECK-NEXT: ret i1 true
2758 %s = lshr exact i4 %x, 2
2759 %c = icmp ult i4 %s, 14
2763 define i1 @lshrult_02_15_exact(i4 %x) {
2764 ; CHECK-LABEL: @lshrult_02_15_exact(
2765 ; CHECK-NEXT: ret i1 true
2767 %s = lshr exact i4 %x, 2
2768 %c = icmp ult i4 %s, 15
2772 define i1 @lshrult_03_00_exact(i4 %x) {
2773 ; CHECK-LABEL: @lshrult_03_00_exact(
2774 ; CHECK-NEXT: ret i1 false
2776 %s = lshr exact i4 %x, 3
2777 %c = icmp ult i4 %s, 0
2781 define i1 @lshrult_03_01_exact(i4 %x) {
2782 ; CHECK-LABEL: @lshrult_03_01_exact(
2783 ; CHECK-NEXT: [[C:%.*]] = icmp eq i4 [[X:%.*]], 0
2784 ; CHECK-NEXT: ret i1 [[C]]
2786 %s = lshr exact i4 %x, 3
2787 %c = icmp ult i4 %s, 1
2791 define i1 @lshrult_03_02_exact(i4 %x) {
2792 ; CHECK-LABEL: @lshrult_03_02_exact(
2793 ; CHECK-NEXT: ret i1 true
2795 %s = lshr exact i4 %x, 3
2796 %c = icmp ult i4 %s, 2
2800 define i1 @lshrult_03_03_exact(i4 %x) {
2801 ; CHECK-LABEL: @lshrult_03_03_exact(
2802 ; CHECK-NEXT: ret i1 true
2804 %s = lshr exact i4 %x, 3
2805 %c = icmp ult i4 %s, 3
2809 define i1 @lshrult_03_04_exact(i4 %x) {
2810 ; CHECK-LABEL: @lshrult_03_04_exact(
2811 ; CHECK-NEXT: ret i1 true
2813 %s = lshr exact i4 %x, 3
2814 %c = icmp ult i4 %s, 4
2818 define i1 @lshrult_03_05_exact(i4 %x) {
2819 ; CHECK-LABEL: @lshrult_03_05_exact(
2820 ; CHECK-NEXT: ret i1 true
2822 %s = lshr exact i4 %x, 3
2823 %c = icmp ult i4 %s, 5
2827 define i1 @lshrult_03_06_exact(i4 %x) {
2828 ; CHECK-LABEL: @lshrult_03_06_exact(
2829 ; CHECK-NEXT: ret i1 true
2831 %s = lshr exact i4 %x, 3
2832 %c = icmp ult i4 %s, 6
2836 define i1 @lshrult_03_07_exact(i4 %x) {
2837 ; CHECK-LABEL: @lshrult_03_07_exact(
2838 ; CHECK-NEXT: ret i1 true
2840 %s = lshr exact i4 %x, 3
2841 %c = icmp ult i4 %s, 7
2845 define i1 @lshrult_03_08_exact(i4 %x) {
2846 ; CHECK-LABEL: @lshrult_03_08_exact(
2847 ; CHECK-NEXT: ret i1 true
2849 %s = lshr exact i4 %x, 3
2850 %c = icmp ult i4 %s, 8
2854 define i1 @lshrult_03_09_exact(i4 %x) {
2855 ; CHECK-LABEL: @lshrult_03_09_exact(
2856 ; CHECK-NEXT: ret i1 true
2858 %s = lshr exact i4 %x, 3
2859 %c = icmp ult i4 %s, 9
2863 define i1 @lshrult_03_10_exact(i4 %x) {
2864 ; CHECK-LABEL: @lshrult_03_10_exact(
2865 ; CHECK-NEXT: ret i1 true
2867 %s = lshr exact i4 %x, 3
2868 %c = icmp ult i4 %s, 10
2872 define i1 @lshrult_03_11_exact(i4 %x) {
2873 ; CHECK-LABEL: @lshrult_03_11_exact(
2874 ; CHECK-NEXT: ret i1 true
2876 %s = lshr exact i4 %x, 3
2877 %c = icmp ult i4 %s, 11
2881 define i1 @lshrult_03_12_exact(i4 %x) {
2882 ; CHECK-LABEL: @lshrult_03_12_exact(
2883 ; CHECK-NEXT: ret i1 true
2885 %s = lshr exact i4 %x, 3
2886 %c = icmp ult i4 %s, 12
2890 define i1 @lshrult_03_13_exact(i4 %x) {
2891 ; CHECK-LABEL: @lshrult_03_13_exact(
2892 ; CHECK-NEXT: ret i1 true
2894 %s = lshr exact i4 %x, 3
2895 %c = icmp ult i4 %s, 13
2899 define i1 @lshrult_03_14_exact(i4 %x) {
2900 ; CHECK-LABEL: @lshrult_03_14_exact(
2901 ; CHECK-NEXT: ret i1 true
2903 %s = lshr exact i4 %x, 3
2904 %c = icmp ult i4 %s, 14
2908 define i1 @lshrult_03_15_exact(i4 %x) {
2909 ; CHECK-LABEL: @lshrult_03_15_exact(
2910 ; CHECK-NEXT: ret i1 true
2912 %s = lshr exact i4 %x, 3
2913 %c = icmp ult i4 %s, 15
2917 define i1 @ashrsgt_01_00_exact(i4 %x) {
2918 ; CHECK-LABEL: @ashrsgt_01_00_exact(
2919 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 0
2920 ; CHECK-NEXT: ret i1 [[C]]
2922 %s = ashr exact i4 %x, 1
2923 %c = icmp sgt i4 %s, 0
2927 define i1 @ashrsgt_01_01_exact(i4 %x) {
2928 ; CHECK-LABEL: @ashrsgt_01_01_exact(
2929 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 2
2930 ; CHECK-NEXT: ret i1 [[C]]
2932 %s = ashr exact i4 %x, 1
2933 %c = icmp sgt i4 %s, 1
2937 define i1 @ashrsgt_01_02_exact(i4 %x) {
2938 ; CHECK-LABEL: @ashrsgt_01_02_exact(
2939 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 4
2940 ; CHECK-NEXT: ret i1 [[C]]
2942 %s = ashr exact i4 %x, 1
2943 %c = icmp sgt i4 %s, 2
2947 define i1 @ashrsgt_01_03_exact(i4 %x) {
2948 ; CHECK-LABEL: @ashrsgt_01_03_exact(
2949 ; CHECK-NEXT: ret i1 false
2951 %s = ashr exact i4 %x, 1
2952 %c = icmp sgt i4 %s, 3
2956 define i1 @ashrsgt_01_04_exact(i4 %x) {
2957 ; CHECK-LABEL: @ashrsgt_01_04_exact(
2958 ; CHECK-NEXT: ret i1 false
2960 %s = ashr exact i4 %x, 1
2961 %c = icmp sgt i4 %s, 4
2965 define i1 @ashrsgt_01_05_exact(i4 %x) {
2966 ; CHECK-LABEL: @ashrsgt_01_05_exact(
2967 ; CHECK-NEXT: ret i1 false
2969 %s = ashr exact i4 %x, 1
2970 %c = icmp sgt i4 %s, 5
2974 define i1 @ashrsgt_01_06_exact(i4 %x) {
2975 ; CHECK-LABEL: @ashrsgt_01_06_exact(
2976 ; CHECK-NEXT: ret i1 false
2978 %s = ashr exact i4 %x, 1
2979 %c = icmp sgt i4 %s, 6
2983 define i1 @ashrsgt_01_07_exact(i4 %x) {
2984 ; CHECK-LABEL: @ashrsgt_01_07_exact(
2985 ; CHECK-NEXT: ret i1 false
2987 %s = ashr exact i4 %x, 1
2988 %c = icmp sgt i4 %s, 7
2992 define i1 @ashrsgt_01_08_exact(i4 %x) {
2993 ; CHECK-LABEL: @ashrsgt_01_08_exact(
2994 ; CHECK-NEXT: ret i1 true
2996 %s = ashr exact i4 %x, 1
2997 %c = icmp sgt i4 %s, 8
3001 define i1 @ashrsgt_01_09_exact(i4 %x) {
3002 ; CHECK-LABEL: @ashrsgt_01_09_exact(
3003 ; CHECK-NEXT: ret i1 true
3005 %s = ashr exact i4 %x, 1
3006 %c = icmp sgt i4 %s, 9
3010 define i1 @ashrsgt_01_10_exact(i4 %x) {
3011 ; CHECK-LABEL: @ashrsgt_01_10_exact(
3012 ; CHECK-NEXT: ret i1 true
3014 %s = ashr exact i4 %x, 1
3015 %c = icmp sgt i4 %s, 10
3019 define i1 @ashrsgt_01_11_exact(i4 %x) {
3020 ; CHECK-LABEL: @ashrsgt_01_11_exact(
3021 ; CHECK-NEXT: ret i1 true
3023 %s = ashr exact i4 %x, 1
3024 %c = icmp sgt i4 %s, 11
3028 define i1 @ashrsgt_01_12_exact(i4 %x) {
3029 ; CHECK-LABEL: @ashrsgt_01_12_exact(
3030 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -8
3031 ; CHECK-NEXT: ret i1 [[C]]
3033 %s = ashr exact i4 %x, 1
3034 %c = icmp sgt i4 %s, 12
3038 define i1 @ashrsgt_01_13_exact(i4 %x) {
3039 ; CHECK-LABEL: @ashrsgt_01_13_exact(
3040 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -6
3041 ; CHECK-NEXT: ret i1 [[C]]
3043 %s = ashr exact i4 %x, 1
3044 %c = icmp sgt i4 %s, 13
3048 define i1 @ashrsgt_01_14_exact(i4 %x) {
3049 ; CHECK-LABEL: @ashrsgt_01_14_exact(
3050 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -4
3051 ; CHECK-NEXT: ret i1 [[C]]
3053 %s = ashr exact i4 %x, 1
3054 %c = icmp sgt i4 %s, 14
3058 define i1 @ashrsgt_01_15_exact(i4 %x) {
3059 ; CHECK-LABEL: @ashrsgt_01_15_exact(
3060 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
3061 ; CHECK-NEXT: ret i1 [[C]]
3063 %s = ashr exact i4 %x, 1
3064 %c = icmp sgt i4 %s, 15
3068 define i1 @ashrsgt_02_00_exact(i4 %x) {
3069 ; CHECK-LABEL: @ashrsgt_02_00_exact(
3070 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], 0
3071 ; CHECK-NEXT: ret i1 [[C]]
3073 %s = ashr exact i4 %x, 2
3074 %c = icmp sgt i4 %s, 0
3078 define i1 @ashrsgt_02_01_exact(i4 %x) {
3079 ; CHECK-LABEL: @ashrsgt_02_01_exact(
3080 ; CHECK-NEXT: ret i1 false
3082 %s = ashr exact i4 %x, 2
3083 %c = icmp sgt i4 %s, 1
3087 define i1 @ashrsgt_02_02_exact(i4 %x) {
3088 ; CHECK-LABEL: @ashrsgt_02_02_exact(
3089 ; CHECK-NEXT: ret i1 false
3091 %s = ashr exact i4 %x, 2
3092 %c = icmp sgt i4 %s, 2
3096 define i1 @ashrsgt_02_03_exact(i4 %x) {
3097 ; CHECK-LABEL: @ashrsgt_02_03_exact(
3098 ; CHECK-NEXT: ret i1 false
3100 %s = ashr exact i4 %x, 2
3101 %c = icmp sgt i4 %s, 3
3105 define i1 @ashrsgt_02_04_exact(i4 %x) {
3106 ; CHECK-LABEL: @ashrsgt_02_04_exact(
3107 ; CHECK-NEXT: ret i1 false
3109 %s = ashr exact i4 %x, 2
3110 %c = icmp sgt i4 %s, 4
3114 define i1 @ashrsgt_02_05_exact(i4 %x) {
3115 ; CHECK-LABEL: @ashrsgt_02_05_exact(
3116 ; CHECK-NEXT: ret i1 false
3118 %s = ashr exact i4 %x, 2
3119 %c = icmp sgt i4 %s, 5
3123 define i1 @ashrsgt_02_06_exact(i4 %x) {
3124 ; CHECK-LABEL: @ashrsgt_02_06_exact(
3125 ; CHECK-NEXT: ret i1 false
3127 %s = ashr exact i4 %x, 2
3128 %c = icmp sgt i4 %s, 6
3132 define i1 @ashrsgt_02_07_exact(i4 %x) {
3133 ; CHECK-LABEL: @ashrsgt_02_07_exact(
3134 ; CHECK-NEXT: ret i1 false
3136 %s = ashr exact i4 %x, 2
3137 %c = icmp sgt i4 %s, 7
3141 define i1 @ashrsgt_02_08_exact(i4 %x) {
3142 ; CHECK-LABEL: @ashrsgt_02_08_exact(
3143 ; CHECK-NEXT: ret i1 true
3145 %s = ashr exact i4 %x, 2
3146 %c = icmp sgt i4 %s, 8
3150 define i1 @ashrsgt_02_09_exact(i4 %x) {
3151 ; CHECK-LABEL: @ashrsgt_02_09_exact(
3152 ; CHECK-NEXT: ret i1 true
3154 %s = ashr exact i4 %x, 2
3155 %c = icmp sgt i4 %s, 9
3159 define i1 @ashrsgt_02_10_exact(i4 %x) {
3160 ; CHECK-LABEL: @ashrsgt_02_10_exact(
3161 ; CHECK-NEXT: ret i1 true
3163 %s = ashr exact i4 %x, 2
3164 %c = icmp sgt i4 %s, 10
3168 define i1 @ashrsgt_02_11_exact(i4 %x) {
3169 ; CHECK-LABEL: @ashrsgt_02_11_exact(
3170 ; CHECK-NEXT: ret i1 true
3172 %s = ashr exact i4 %x, 2
3173 %c = icmp sgt i4 %s, 11
3177 define i1 @ashrsgt_02_12_exact(i4 %x) {
3178 ; CHECK-LABEL: @ashrsgt_02_12_exact(
3179 ; CHECK-NEXT: ret i1 true
3181 %s = ashr exact i4 %x, 2
3182 %c = icmp sgt i4 %s, 12
3186 define i1 @ashrsgt_02_13_exact(i4 %x) {
3187 ; CHECK-LABEL: @ashrsgt_02_13_exact(
3188 ; CHECK-NEXT: ret i1 true
3190 %s = ashr exact i4 %x, 2
3191 %c = icmp sgt i4 %s, 13
3195 define i1 @ashrsgt_02_14_exact(i4 %x) {
3196 ; CHECK-LABEL: @ashrsgt_02_14_exact(
3197 ; CHECK-NEXT: [[C:%.*]] = icmp ne i4 [[X:%.*]], -8
3198 ; CHECK-NEXT: ret i1 [[C]]
3200 %s = ashr exact i4 %x, 2
3201 %c = icmp sgt i4 %s, 14
3205 define i1 @ashrsgt_02_15_exact(i4 %x) {
3206 ; CHECK-LABEL: @ashrsgt_02_15_exact(
3207 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
3208 ; CHECK-NEXT: ret i1 [[C]]
3210 %s = ashr exact i4 %x, 2
3211 %c = icmp sgt i4 %s, 15
3215 define i1 @ashrsgt_03_00_exact(i4 %x) {
3216 ; CHECK-LABEL: @ashrsgt_03_00_exact(
3217 ; CHECK-NEXT: ret i1 false
3219 %s = ashr exact i4 %x, 3
3220 %c = icmp sgt i4 %s, 0
3224 define i1 @ashrsgt_03_01_exact(i4 %x) {
3225 ; CHECK-LABEL: @ashrsgt_03_01_exact(
3226 ; CHECK-NEXT: ret i1 false
3228 %s = ashr exact i4 %x, 3
3229 %c = icmp sgt i4 %s, 1
3233 define i1 @ashrsgt_03_02_exact(i4 %x) {
3234 ; CHECK-LABEL: @ashrsgt_03_02_exact(
3235 ; CHECK-NEXT: ret i1 false
3237 %s = ashr exact i4 %x, 3
3238 %c = icmp sgt i4 %s, 2
3242 define i1 @ashrsgt_03_03_exact(i4 %x) {
3243 ; CHECK-LABEL: @ashrsgt_03_03_exact(
3244 ; CHECK-NEXT: ret i1 false
3246 %s = ashr exact i4 %x, 3
3247 %c = icmp sgt i4 %s, 3
3251 define i1 @ashrsgt_03_04_exact(i4 %x) {
3252 ; CHECK-LABEL: @ashrsgt_03_04_exact(
3253 ; CHECK-NEXT: ret i1 false
3255 %s = ashr exact i4 %x, 3
3256 %c = icmp sgt i4 %s, 4
3260 define i1 @ashrsgt_03_05_exact(i4 %x) {
3261 ; CHECK-LABEL: @ashrsgt_03_05_exact(
3262 ; CHECK-NEXT: ret i1 false
3264 %s = ashr exact i4 %x, 3
3265 %c = icmp sgt i4 %s, 5
3269 define i1 @ashrsgt_03_06_exact(i4 %x) {
3270 ; CHECK-LABEL: @ashrsgt_03_06_exact(
3271 ; CHECK-NEXT: ret i1 false
3273 %s = ashr exact i4 %x, 3
3274 %c = icmp sgt i4 %s, 6
3278 define i1 @ashrsgt_03_07_exact(i4 %x) {
3279 ; CHECK-LABEL: @ashrsgt_03_07_exact(
3280 ; CHECK-NEXT: ret i1 false
3282 %s = ashr exact i4 %x, 3
3283 %c = icmp sgt i4 %s, 7
3287 define i1 @ashrsgt_03_08_exact(i4 %x) {
3288 ; CHECK-LABEL: @ashrsgt_03_08_exact(
3289 ; CHECK-NEXT: ret i1 true
3291 %s = ashr exact i4 %x, 3
3292 %c = icmp sgt i4 %s, 8
3296 define i1 @ashrsgt_03_09_exact(i4 %x) {
3297 ; CHECK-LABEL: @ashrsgt_03_09_exact(
3298 ; CHECK-NEXT: ret i1 true
3300 %s = ashr exact i4 %x, 3
3301 %c = icmp sgt i4 %s, 9
3305 define i1 @ashrsgt_03_10_exact(i4 %x) {
3306 ; CHECK-LABEL: @ashrsgt_03_10_exact(
3307 ; CHECK-NEXT: ret i1 true
3309 %s = ashr exact i4 %x, 3
3310 %c = icmp sgt i4 %s, 10
3314 define i1 @ashrsgt_03_11_exact(i4 %x) {
3315 ; CHECK-LABEL: @ashrsgt_03_11_exact(
3316 ; CHECK-NEXT: ret i1 true
3318 %s = ashr exact i4 %x, 3
3319 %c = icmp sgt i4 %s, 11
3323 define i1 @ashrsgt_03_12_exact(i4 %x) {
3324 ; CHECK-LABEL: @ashrsgt_03_12_exact(
3325 ; CHECK-NEXT: ret i1 true
3327 %s = ashr exact i4 %x, 3
3328 %c = icmp sgt i4 %s, 12
3332 define i1 @ashrsgt_03_13_exact(i4 %x) {
3333 ; CHECK-LABEL: @ashrsgt_03_13_exact(
3334 ; CHECK-NEXT: ret i1 true
3336 %s = ashr exact i4 %x, 3
3337 %c = icmp sgt i4 %s, 13
3341 define i1 @ashrsgt_03_14_exact(i4 %x) {
3342 ; CHECK-LABEL: @ashrsgt_03_14_exact(
3343 ; CHECK-NEXT: ret i1 true
3345 %s = ashr exact i4 %x, 3
3346 %c = icmp sgt i4 %s, 14
3350 define i1 @ashrsgt_03_15_exact(i4 %x) {
3351 ; CHECK-LABEL: @ashrsgt_03_15_exact(
3352 ; CHECK-NEXT: [[C:%.*]] = icmp sgt i4 [[X:%.*]], -1
3353 ; CHECK-NEXT: ret i1 [[C]]
3355 %s = ashr exact i4 %x, 3
3356 %c = icmp sgt i4 %s, 15
3360 define i1 @ashrslt_01_00_exact(i4 %x) {
3361 ; CHECK-LABEL: @ashrslt_01_00_exact(
3362 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
3363 ; CHECK-NEXT: ret i1 [[C]]
3365 %s = ashr exact i4 %x, 1
3366 %c = icmp slt i4 %s, 0
3370 define i1 @ashrslt_01_01_exact(i4 %x) {
3371 ; CHECK-LABEL: @ashrslt_01_01_exact(
3372 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 2
3373 ; CHECK-NEXT: ret i1 [[C]]
3375 %s = ashr exact i4 %x, 1
3376 %c = icmp slt i4 %s, 1
3380 define i1 @ashrslt_01_02_exact(i4 %x) {
3381 ; CHECK-LABEL: @ashrslt_01_02_exact(
3382 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 4
3383 ; CHECK-NEXT: ret i1 [[C]]
3385 %s = ashr exact i4 %x, 1
3386 %c = icmp slt i4 %s, 2
3390 define i1 @ashrslt_01_03_exact(i4 %x) {
3391 ; CHECK-LABEL: @ashrslt_01_03_exact(
3392 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 6
3393 ; CHECK-NEXT: ret i1 [[C]]
3395 %s = ashr exact i4 %x, 1
3396 %c = icmp slt i4 %s, 3
3400 define i1 @ashrslt_01_04_exact(i4 %x) {
3401 ; CHECK-LABEL: @ashrslt_01_04_exact(
3402 ; CHECK-NEXT: ret i1 true
3404 %s = ashr exact i4 %x, 1
3405 %c = icmp slt i4 %s, 4
3409 define i1 @ashrslt_01_05_exact(i4 %x) {
3410 ; CHECK-LABEL: @ashrslt_01_05_exact(
3411 ; CHECK-NEXT: ret i1 true
3413 %s = ashr exact i4 %x, 1
3414 %c = icmp slt i4 %s, 5
3418 define i1 @ashrslt_01_06_exact(i4 %x) {
3419 ; CHECK-LABEL: @ashrslt_01_06_exact(
3420 ; CHECK-NEXT: ret i1 true
3422 %s = ashr exact i4 %x, 1
3423 %c = icmp slt i4 %s, 6
3427 define i1 @ashrslt_01_07_exact(i4 %x) {
3428 ; CHECK-LABEL: @ashrslt_01_07_exact(
3429 ; CHECK-NEXT: ret i1 true
3431 %s = ashr exact i4 %x, 1
3432 %c = icmp slt i4 %s, 7
3436 define i1 @ashrslt_01_08_exact(i4 %x) {
3437 ; CHECK-LABEL: @ashrslt_01_08_exact(
3438 ; CHECK-NEXT: ret i1 false
3440 %s = ashr exact i4 %x, 1
3441 %c = icmp slt i4 %s, 8
3445 define i1 @ashrslt_01_09_exact(i4 %x) {
3446 ; CHECK-LABEL: @ashrslt_01_09_exact(
3447 ; CHECK-NEXT: ret i1 false
3449 %s = ashr exact i4 %x, 1
3450 %c = icmp slt i4 %s, 9
3454 define i1 @ashrslt_01_10_exact(i4 %x) {
3455 ; CHECK-LABEL: @ashrslt_01_10_exact(
3456 ; CHECK-NEXT: ret i1 false
3458 %s = ashr exact i4 %x, 1
3459 %c = icmp slt i4 %s, 10
3463 define i1 @ashrslt_01_11_exact(i4 %x) {
3464 ; CHECK-LABEL: @ashrslt_01_11_exact(
3465 ; CHECK-NEXT: ret i1 false
3467 %s = ashr exact i4 %x, 1
3468 %c = icmp slt i4 %s, 11
3472 define i1 @ashrslt_01_12_exact(i4 %x) {
3473 ; CHECK-LABEL: @ashrslt_01_12_exact(
3474 ; CHECK-NEXT: ret i1 false
3476 %s = ashr exact i4 %x, 1
3477 %c = icmp slt i4 %s, 12
3481 define i1 @ashrslt_01_13_exact(i4 %x) {
3482 ; CHECK-LABEL: @ashrslt_01_13_exact(
3483 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -6
3484 ; CHECK-NEXT: ret i1 [[C]]
3486 %s = ashr exact i4 %x, 1
3487 %c = icmp slt i4 %s, 13
3491 define i1 @ashrslt_01_14_exact(i4 %x) {
3492 ; CHECK-LABEL: @ashrslt_01_14_exact(
3493 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -4
3494 ; CHECK-NEXT: ret i1 [[C]]
3496 %s = ashr exact i4 %x, 1
3497 %c = icmp slt i4 %s, 14
3501 define i1 @ashrslt_01_15_exact(i4 %x) {
3502 ; CHECK-LABEL: @ashrslt_01_15_exact(
3503 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -2
3504 ; CHECK-NEXT: ret i1 [[C]]
3506 %s = ashr exact i4 %x, 1
3507 %c = icmp slt i4 %s, 15
3511 define i1 @ashrslt_02_00_exact(i4 %x) {
3512 ; CHECK-LABEL: @ashrslt_02_00_exact(
3513 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
3514 ; CHECK-NEXT: ret i1 [[C]]
3516 %s = ashr exact i4 %x, 2
3517 %c = icmp slt i4 %s, 0
3521 define i1 @ashrslt_02_01_exact(i4 %x) {
3522 ; CHECK-LABEL: @ashrslt_02_01_exact(
3523 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 4
3524 ; CHECK-NEXT: ret i1 [[C]]
3526 %s = ashr exact i4 %x, 2
3527 %c = icmp slt i4 %s, 1
3531 define i1 @ashrslt_02_02_exact(i4 %x) {
3532 ; CHECK-LABEL: @ashrslt_02_02_exact(
3533 ; CHECK-NEXT: ret i1 true
3535 %s = ashr exact i4 %x, 2
3536 %c = icmp slt i4 %s, 2
3540 define i1 @ashrslt_02_03_exact(i4 %x) {
3541 ; CHECK-LABEL: @ashrslt_02_03_exact(
3542 ; CHECK-NEXT: ret i1 true
3544 %s = ashr exact i4 %x, 2
3545 %c = icmp slt i4 %s, 3
3549 define i1 @ashrslt_02_04_exact(i4 %x) {
3550 ; CHECK-LABEL: @ashrslt_02_04_exact(
3551 ; CHECK-NEXT: ret i1 true
3553 %s = ashr exact i4 %x, 2
3554 %c = icmp slt i4 %s, 4
3558 define i1 @ashrslt_02_05_exact(i4 %x) {
3559 ; CHECK-LABEL: @ashrslt_02_05_exact(
3560 ; CHECK-NEXT: ret i1 true
3562 %s = ashr exact i4 %x, 2
3563 %c = icmp slt i4 %s, 5
3567 define i1 @ashrslt_02_06_exact(i4 %x) {
3568 ; CHECK-LABEL: @ashrslt_02_06_exact(
3569 ; CHECK-NEXT: ret i1 true
3571 %s = ashr exact i4 %x, 2
3572 %c = icmp slt i4 %s, 6
3576 define i1 @ashrslt_02_07_exact(i4 %x) {
3577 ; CHECK-LABEL: @ashrslt_02_07_exact(
3578 ; CHECK-NEXT: ret i1 true
3580 %s = ashr exact i4 %x, 2
3581 %c = icmp slt i4 %s, 7
3585 define i1 @ashrslt_02_08_exact(i4 %x) {
3586 ; CHECK-LABEL: @ashrslt_02_08_exact(
3587 ; CHECK-NEXT: ret i1 false
3589 %s = ashr exact i4 %x, 2
3590 %c = icmp slt i4 %s, 8
3594 define i1 @ashrslt_02_09_exact(i4 %x) {
3595 ; CHECK-LABEL: @ashrslt_02_09_exact(
3596 ; CHECK-NEXT: ret i1 false
3598 %s = ashr exact i4 %x, 2
3599 %c = icmp slt i4 %s, 9
3603 define i1 @ashrslt_02_10_exact(i4 %x) {
3604 ; CHECK-LABEL: @ashrslt_02_10_exact(
3605 ; CHECK-NEXT: ret i1 false
3607 %s = ashr exact i4 %x, 2
3608 %c = icmp slt i4 %s, 10
3612 define i1 @ashrslt_02_11_exact(i4 %x) {
3613 ; CHECK-LABEL: @ashrslt_02_11_exact(
3614 ; CHECK-NEXT: ret i1 false
3616 %s = ashr exact i4 %x, 2
3617 %c = icmp slt i4 %s, 11
3621 define i1 @ashrslt_02_12_exact(i4 %x) {
3622 ; CHECK-LABEL: @ashrslt_02_12_exact(
3623 ; CHECK-NEXT: ret i1 false
3625 %s = ashr exact i4 %x, 2
3626 %c = icmp slt i4 %s, 12
3630 define i1 @ashrslt_02_13_exact(i4 %x) {
3631 ; CHECK-LABEL: @ashrslt_02_13_exact(
3632 ; CHECK-NEXT: ret i1 false
3634 %s = ashr exact i4 %x, 2
3635 %c = icmp slt i4 %s, 13
3639 define i1 @ashrslt_02_14_exact(i4 %x) {
3640 ; CHECK-LABEL: @ashrslt_02_14_exact(
3641 ; CHECK-NEXT: ret i1 false
3643 %s = ashr exact i4 %x, 2
3644 %c = icmp slt i4 %s, 14
3648 define i1 @ashrslt_02_15_exact(i4 %x) {
3649 ; CHECK-LABEL: @ashrslt_02_15_exact(
3650 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], -4
3651 ; CHECK-NEXT: ret i1 [[C]]
3653 %s = ashr exact i4 %x, 2
3654 %c = icmp slt i4 %s, 15
3658 define i1 @ashrslt_03_00_exact(i4 %x) {
3659 ; CHECK-LABEL: @ashrslt_03_00_exact(
3660 ; CHECK-NEXT: [[C:%.*]] = icmp slt i4 [[X:%.*]], 0
3661 ; CHECK-NEXT: ret i1 [[C]]
3663 %s = ashr exact i4 %x, 3
3664 %c = icmp slt i4 %s, 0
3668 define i1 @ashrslt_03_01_exact(i4 %x) {
3669 ; CHECK-LABEL: @ashrslt_03_01_exact(
3670 ; CHECK-NEXT: ret i1 true
3672 %s = ashr exact i4 %x, 3
3673 %c = icmp slt i4 %s, 1
3677 define i1 @ashrslt_03_02_exact(i4 %x) {
3678 ; CHECK-LABEL: @ashrslt_03_02_exact(
3679 ; CHECK-NEXT: ret i1 true
3681 %s = ashr exact i4 %x, 3
3682 %c = icmp slt i4 %s, 2
3686 define i1 @ashrslt_03_03_exact(i4 %x) {
3687 ; CHECK-LABEL: @ashrslt_03_03_exact(
3688 ; CHECK-NEXT: ret i1 true
3690 %s = ashr exact i4 %x, 3
3691 %c = icmp slt i4 %s, 3
3695 define i1 @ashrslt_03_04_exact(i4 %x) {
3696 ; CHECK-LABEL: @ashrslt_03_04_exact(
3697 ; CHECK-NEXT: ret i1 true
3699 %s = ashr exact i4 %x, 3
3700 %c = icmp slt i4 %s, 4
3704 define i1 @ashrslt_03_05_exact(i4 %x) {
3705 ; CHECK-LABEL: @ashrslt_03_05_exact(
3706 ; CHECK-NEXT: ret i1 true
3708 %s = ashr exact i4 %x, 3
3709 %c = icmp slt i4 %s, 5
3713 define i1 @ashrslt_03_06_exact(i4 %x) {
3714 ; CHECK-LABEL: @ashrslt_03_06_exact(
3715 ; CHECK-NEXT: ret i1 true
3717 %s = ashr exact i4 %x, 3
3718 %c = icmp slt i4 %s, 6
3722 define i1 @ashrslt_03_07_exact(i4 %x) {
3723 ; CHECK-LABEL: @ashrslt_03_07_exact(
3724 ; CHECK-NEXT: ret i1 true
3726 %s = ashr exact i4 %x, 3
3727 %c = icmp slt i4 %s, 7
3731 define i1 @ashrslt_03_08_exact(i4 %x) {
3732 ; CHECK-LABEL: @ashrslt_03_08_exact(
3733 ; CHECK-NEXT: ret i1 false
3735 %s = ashr exact i4 %x, 3
3736 %c = icmp slt i4 %s, 8
3740 define i1 @ashrslt_03_09_exact(i4 %x) {
3741 ; CHECK-LABEL: @ashrslt_03_09_exact(
3742 ; CHECK-NEXT: ret i1 false
3744 %s = ashr exact i4 %x, 3
3745 %c = icmp slt i4 %s, 9
3749 define i1 @ashrslt_03_10_exact(i4 %x) {
3750 ; CHECK-LABEL: @ashrslt_03_10_exact(
3751 ; CHECK-NEXT: ret i1 false
3753 %s = ashr exact i4 %x, 3
3754 %c = icmp slt i4 %s, 10
3758 define i1 @ashrslt_03_11_exact(i4 %x) {
3759 ; CHECK-LABEL: @ashrslt_03_11_exact(
3760 ; CHECK-NEXT: ret i1 false
3762 %s = ashr exact i4 %x, 3
3763 %c = icmp slt i4 %s, 11
3767 define i1 @ashrslt_03_12_exact(i4 %x) {
3768 ; CHECK-LABEL: @ashrslt_03_12_exact(
3769 ; CHECK-NEXT: ret i1 false
3771 %s = ashr exact i4 %x, 3
3772 %c = icmp slt i4 %s, 12
3776 define i1 @ashrslt_03_13_exact(i4 %x) {
3777 ; CHECK-LABEL: @ashrslt_03_13_exact(
3778 ; CHECK-NEXT: ret i1 false
3780 %s = ashr exact i4 %x, 3
3781 %c = icmp slt i4 %s, 13
3785 define i1 @ashrslt_03_14_exact(i4 %x) {
3786 ; CHECK-LABEL: @ashrslt_03_14_exact(
3787 ; CHECK-NEXT: ret i1 false
3789 %s = ashr exact i4 %x, 3
3790 %c = icmp slt i4 %s, 14
3794 define i1 @ashrslt_03_15_exact(i4 %x) {
3795 ; CHECK-LABEL: @ashrslt_03_15_exact(
3796 ; CHECK-NEXT: ret i1 false
3798 %s = ashr exact i4 %x, 3
3799 %c = icmp slt i4 %s, 15