Lines Matching full:start
7 define void @slt_mul_nsw_3_known_positive_1(i8 %start, i8 %high) {
10 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], 3
12 ; CHECK-NEXT: [[C_2:%.*]] = icmp sgt i8 [[START]], 0
17 ; CHECK-NEXT: [[START_1:%.*]] = mul nsw i8 [[START]], 1
19 ; CHECK-NEXT: [[START_2:%.*]] = mul nsw i8 [[START]], 2
21 ; CHECK-NEXT: [[START_3:%.*]] = mul nsw i8 [[START]], 3
23 ; CHECK-NEXT: [[START_4:%.*]] = mul nsw i8 [[START]], 4
31 %mul.3 = mul nsw i8 %start, 3
33 %c.2 = icmp sgt i8 %start, 0
38 %t.0 = icmp slt i8 %start, %high
40 %start.1 = mul nsw i8 %start, 1
41 %t.1 = icmp slt i8 %start.1, %high
43 %start.2 = mul nsw i8 %start, 2
44 %t.2 = icmp slt i8 %start.2, %high
46 %start.3 = mul nsw i8 %start, 3
47 %t.3 = icmp slt i8 %start.3, %high
49 %start.4 = mul nsw i8 %start, 4
50 %c.3 = icmp slt i8 %start.4, %high
58 define void @slt_mul_nsw_3_known_positive_2(i8 %start, i8 %high) {
61 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], 3
63 ; CHECK-NEXT: [[C_2:%.*]] = icmp sgt i8 [[START]], 0
69 ; CHECK-NEXT: [[C_4:%.*]] = icmp slt i8 [[START]], [[HIGH]]
71 ; CHECK-NEXT: [[ELSE_START_1:%.*]] = mul nsw i8 [[START]], 1
74 ; CHECK-NEXT: [[ELSE_START_2:%.*]] = mul nsw i8 [[START]], 2
77 ; CHECK-NEXT: [[ELSE_START_3:%.*]] = mul nsw i8 [[START]], 3
80 ; CHECK-NEXT: [[ELSE_START_4:%.*]] = mul nsw i8 [[START]], 4
86 %mul.3 = mul nsw i8 %start, 3
88 %c.2 = icmp sgt i8 %start, 0
96 %c.4 = icmp slt i8 %start, %high
98 %else.start.1 = mul nsw i8 %start, 1
99 %c.5 = icmp slt i8 %else.start.1, %high
101 %else.start.2 = mul nsw i8 %start, 2
102 %c.6 = icmp slt i8 %else.start.2, %high
104 %else.start.3 = mul nsw i8 %start, 3
105 %c.7 = icmp slt i8 %else.start.3, %high
107 %else.start.4 = mul nsw i8 %start, 4
108 %c.8 = icmp slt i8 %else.start.4, %high
113 define void @slt_mul_no_nsw_3_known_positive_1(i8 %start, i8 %high) {
116 ; CHECK-NEXT: [[MUL_3:%.*]] = mul i8 [[START:%.*]], 3
118 ; CHECK-NEXT: [[C_2:%.*]] = icmp sgt i8 [[START]], 0
122 ; CHECK-NEXT: [[C_3:%.*]] = icmp slt i8 [[START]], [[HIGH]]
124 ; CHECK-NEXT: [[START_1:%.*]] = mul nsw i8 [[START]], 1
127 ; CHECK-NEXT: [[START_2:%.*]] = mul nsw i8 [[START]], 2
130 ; CHECK-NEXT: [[START_3:%.*]] = mul nsw i8 [[START]], 3
133 ; CHECK-NEXT: [[START_4:%.*]] = mul nsw i8 [[START]], 4
141 %mul.3 = mul i8 %start, 3
143 %c.2 = icmp sgt i8 %start, 0
148 %c.3 = icmp slt i8 %start, %high
150 %start.1 = mul nsw i8 %start, 1
151 %c.4 = icmp slt i8 %start.1, %high
153 %start.2 = mul nsw i8 %start, 2
154 %c.5 = icmp slt i8 %start.2, %high
156 %start.3 = mul nsw i8 %start, 3
157 %c.6 = icmp slt i8 %start.3, %high
159 %start.4 = mul nsw i8 %start, 4
160 %c.7 = icmp slt i8 %start.4, %high
168 define void @slt_mul_no_nsw_3_known_positive_2(i8 %start, i8 %high) {
171 ; CHECK-NEXT: [[MUL_3:%.*]] = mul i8 [[START:%.*]], 3
173 ; CHECK-NEXT: [[C_2:%.*]] = icmp sgt i8 [[START]], 0
179 ; CHECK-NEXT: [[C_8:%.*]] = icmp slt i8 [[START]], [[HIGH]]
181 ; CHECK-NEXT: [[ELSE_START_1:%.*]] = mul nsw i8 [[START]], 1
184 ; CHECK-NEXT: [[ELSE_START_2:%.*]] = mul nsw i8 [[START]], 2
187 ; CHECK-NEXT: [[ELSE_START_3:%.*]] = mul nsw i8 [[START]], 3
190 ; CHECK-NEXT: [[ELSE_START_4:%.*]] = mul nsw i8 [[START]], 4
196 %mul.3 = mul i8 %start, 3
198 %c.2 = icmp sgt i8 %start, 0
206 %c.8 = icmp slt i8 %start, %high
208 %else.start.1 = mul nsw i8 %start, 1
209 %c.9 = icmp slt i8 %else.start.1, %high
211 %else.start.2 = mul nsw i8 %start, 2
212 %c.10 = icmp slt i8 %else.start.2, %high
214 %else.start.3 = mul nsw i8 %start, 3
215 %c.11 = icmp slt i8 %else.start.3, %high
217 %else.start.4 = mul nsw i8 %start, 4
218 %c.12 = icmp slt i8 %else.start.4, %high
223 define void @slt_mul_nsw_3_not_known_positive_1(i8 %start, i8 %high) {
226 ; CHECK-NEXT: [[MUL_3:%.*]] = mul i8 [[START:%.*]], 3
230 ; CHECK-NEXT: [[C_3:%.*]] = icmp slt i8 [[START]], [[HIGH]]
232 ; CHECK-NEXT: [[START_1:%.*]] = mul nsw i8 [[START]], 1
235 ; CHECK-NEXT: [[START_2:%.*]] = mul nsw i8 [[START]], 2
238 ; CHECK-NEXT: [[START_3:%.*]] = mul nsw i8 [[START]], 3
241 ; CHECK-NEXT: [[START_4:%.*]] = mul nsw i8 [[START]], 4
249 %mul.3 = mul i8 %start, 3
254 %c.3 = icmp slt i8 %start, %high
256 %start.1 = mul nsw i8 %start, 1
257 %c.4 = icmp slt i8 %start.1, %high
259 %start.2 = mul nsw i8 %start, 2
260 %c.5 = icmp slt i8 %start.2, %high
262 %start.3 = mul nsw i8 %start, 3
263 %c.6 = icmp slt i8 %start.3, %high
265 %start.4 = mul nsw i8 %start, 4
266 %c.7 = icmp slt i8 %start.4, %high
274 define void @slt_mul_nsw_3_not_known_positive_2(i8 %start, i8 %high) {
277 ; CHECK-NEXT: [[MUL_3:%.*]] = mul i8 [[START:%.*]], 3
283 ; CHECK-NEXT: [[C_8:%.*]] = icmp slt i8 [[START]], [[HIGH]]
285 ; CHECK-NEXT: [[ELSE_START_1:%.*]] = mul nsw i8 [[START]], 1
288 ; CHECK-NEXT: [[ELSE_START_2:%.*]] = mul nsw i8 [[START]], 2
291 ; CHECK-NEXT: [[ELSE_START_3:%.*]] = mul nsw i8 [[START]], 3
294 ; CHECK-NEXT: [[ELSE_START_4:%.*]] = mul nsw i8 [[START]], 4
300 %mul.3 = mul i8 %start, 3
308 %c.8 = icmp slt i8 %start, %high
310 %else.start.1 = mul nsw i8 %start, 1
311 %c.9 = icmp slt i8 %else.start.1, %high
313 %else.start.2 = mul nsw i8 %start, 2
314 %c.10 = icmp slt i8 %else.start.2, %high
316 %else.start.3 = mul nsw i8 %start, 3
317 %c.11 = icmp slt i8 %else.start.3, %high
319 %else.start.4 = mul nsw i8 %start, 4
320 %c.12 = icmp slt i8 %else.start.4, %high
325 define void @slt_mul_nsw_neg_3_known_negative_1(i8 %start, i8 %high) {
328 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], -3
330 ; CHECK-NEXT: [[C_2:%.*]] = icmp slt i8 [[START]], 0
335 ; CHECK-NEXT: [[START_1:%.*]] = mul nsw i8 [[START]], -1
337 ; CHECK-NEXT: [[START_2:%.*]] = mul nsw i8 [[START]], -2
339 ; CHECK-NEXT: [[START_3:%.*]] = mul nsw i8 [[START]], -3
341 ; CHECK-NEXT: [[START_4:%.*]] = mul nsw i8 [[START]], -4
349 %mul.3 = mul nsw i8 %start, -3
351 %c.2 = icmp slt i8 %start, 0
356 %t.0 = icmp slt i8 %start, %high
358 %start.1 = mul nsw i8 %start, -1
359 %t.1 = icmp slt i8 %start.1, %high
361 %start.2 = mul nsw i8 %start, -2
362 %t.2 = icmp slt i8 %start.2, %high
364 %start.3 = mul nsw i8 %start, -3
365 %t.3 = icmp slt i8 %start.3, %high
367 %start.4 = mul nsw i8 %start, -4
368 %c.3 = icmp slt i8 %start.4, %high
376 define void @slt_mul_nsw_neg_3_known_negative_2(i8 %start, i8 %high) {
379 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], -3
381 ; CHECK-NEXT: [[C_2:%.*]] = icmp slt i8 [[START]], 0
387 ; CHECK-NEXT: [[C_4:%.*]] = icmp slt i8 [[START]], [[HIGH]]
389 ; CHECK-NEXT: [[ELSE_START_1:%.*]] = mul nsw i8 [[START]], -1
392 ; CHECK-NEXT: [[ELSE_START_2:%.*]] = mul nsw i8 [[START]], -2
395 ; CHECK-NEXT: [[ELSE_START_3:%.*]] = mul nsw i8 [[START]], -3
398 ; CHECK-NEXT: [[ELSE_START_4:%.*]] = mul nsw i8 [[START]], -4
404 %mul.3 = mul nsw i8 %start, -3
406 %c.2 = icmp slt i8 %start, 0
414 %c.4 = icmp slt i8 %start, %high
416 %else.start.1 = mul nsw i8 %start, -1
417 %c.5 = icmp slt i8 %else.start.1, %high
419 %else.start.2 = mul nsw i8 %start, -2
420 %c.6 = icmp slt i8 %else.start.2, %high
422 %else.start.3 = mul nsw i8 %start, -3
423 %c.7 = icmp slt i8 %else.start.3, %high
425 %else.start.4 = mul nsw i8 %start, -4
426 %c.8 = icmp slt i8 %else.start.4, %high
431 define void @slt_mul_nsw_3_known_negative_1(i8 %start, i8 %high) {
434 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], 3
436 ; CHECK-NEXT: [[C_2:%.*]] = icmp slt i8 [[START]], 0
440 ; CHECK-NEXT: [[C_3:%.*]] = icmp slt i8 [[START]], [[HIGH]]
442 ; CHECK-NEXT: [[START_1:%.*]] = mul nsw i8 [[START]], 1
445 ; CHECK-NEXT: [[START_2:%.*]] = mul nsw i8 [[START]], 2
448 ; CHECK-NEXT: [[START_3:%.*]] = mul nsw i8 [[START]], 3
450 ; CHECK-NEXT: [[START_4:%.*]] = mul nsw i8 [[START]], 4
457 %mul.3 = mul nsw i8 %start, 3
459 %c.2 = icmp slt i8 %start, 0
464 %c.3 = icmp slt i8 %start, %high
466 %start.1 = mul nsw i8 %start, 1
467 %c.4 = icmp slt i8 %start.1, %high
469 %start.2 = mul nsw i8 %start, 2
470 %c.5 = icmp slt i8 %start.2, %high
472 %start.3 = mul nsw i8 %start, 3
473 %t.0 = icmp slt i8 %start.3, %high
475 %start.4 = mul nsw i8 %start, 4
476 %t.1 = icmp slt i8 %start.4, %high
484 define void @slt_mul_nsw_3_known_negative_2(i8 %start, i8 %high) {
487 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], 3
489 ; CHECK-NEXT: [[C_2:%.*]] = icmp slt i8 [[START]], 0
495 ; CHECK-NEXT: [[C_6:%.*]] = icmp slt i8 [[START]], [[HIGH]]
497 ; CHECK-NEXT: [[ELSE_START_1:%.*]] = mul nsw i8 [[START]], 1
500 ; CHECK-NEXT: [[ELSE_START_2:%.*]] = mul nsw i8 [[START]], 2
503 ; CHECK-NEXT: [[ELSE_START_3:%.*]] = mul nsw i8 [[START]], 3
506 ; CHECK-NEXT: [[ELSE_START_4:%.*]] = mul nsw i8 [[START]], 4
512 %mul.3 = mul nsw i8 %start, 3
514 %c.2 = icmp slt i8 %start, 0
522 %c.6 = icmp slt i8 %start, %high
524 %else.start.1 = mul nsw i8 %start, 1
525 %c.7 = icmp slt i8 %else.start.1, %high
527 %else.start.2 = mul nsw i8 %start, 2
528 %c.8 = icmp slt i8 %else.start.2, %high
530 %else.start.3 = mul nsw i8 %start, 3
531 %c.9 = icmp slt i8 %else.start.3, %high
533 %else.start.4 = mul nsw i8 %start, 4
534 %c.10 = icmp slt i8 %else.start.4, %high
539 define void @slt_mul_nsw_neg_3_known_positive_1(i8 %start, i8 %high) {
542 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], -3
544 ; CHECK-NEXT: [[C_2:%.*]] = icmp sgt i8 [[START]], 0
548 ; CHECK-NEXT: [[C_3:%.*]] = icmp slt i8 [[START]], [[HIGH]]
550 ; CHECK-NEXT: [[START_1:%.*]] = mul nsw i8 [[START]], -1
553 ; CHECK-NEXT: [[START_2:%.*]] = mul nsw i8 [[START]], -2
556 ; CHECK-NEXT: [[START_3:%.*]] = mul nsw i8 [[START]], -3
558 ; CHECK-NEXT: [[START_4:%.*]] = mul nsw i8 [[START]], -4
565 %mul.3 = mul nsw i8 %start, -3
567 %c.2 = icmp sgt i8 %start, 0
572 %c.3 = icmp slt i8 %start, %high
574 %start.1 = mul nsw i8 %start, -1
575 %c.4 = icmp slt i8 %start.1, %high
577 %start.2 = mul nsw i8 %start, -2
578 %c.5 = icmp slt i8 %start.2, %high
580 %start.3 = mul nsw i8 %start, -3
581 %t.0 = icmp slt i8 %start.3, %high
583 %start.4 = mul nsw i8 %start, -4
584 %t.1 = icmp slt i8 %start.4, %high
592 define void @slt_mul_nsw_neg_3_known_positive_2(i8 %start, i8 %high) {
595 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], -3
597 ; CHECK-NEXT: [[C_2:%.*]] = icmp sgt i8 [[START]], 0
603 ; CHECK-NEXT: [[C_6:%.*]] = icmp slt i8 [[START]], [[HIGH]]
605 ; CHECK-NEXT: [[ELSE_START_1:%.*]] = mul nsw i8 [[START]], -1
608 ; CHECK-NEXT: [[ELSE_START_2:%.*]] = mul nsw i8 [[START]], -2
611 ; CHECK-NEXT: [[ELSE_START_3:%.*]] = mul nsw i8 [[START]], -3
614 ; CHECK-NEXT: [[ELSE_START_4:%.*]] = mul nsw i8 [[START]], -4
620 %mul.3 = mul nsw i8 %start, -3
622 %c.2 = icmp sgt i8 %start, 0
630 %c.6 = icmp slt i8 %start, %high
632 %else.start.1 = mul nsw i8 %start, -1
633 %c.7 = icmp slt i8 %else.start.1, %high
635 %else.start.2 = mul nsw i8 %start, -2
636 %c.8 = icmp slt i8 %else.start.2, %high
638 %else.start.3 = mul nsw i8 %start, -3
639 %c.9 = icmp slt i8 %else.start.3, %high
641 %else.start.4 = mul nsw i8 %start, -4
642 %c.10 = icmp slt i8 %else.start.4, %high
647 define void @slt_mul_nsw_3_known_nonnegative_1(i8 %start, i8 %high) {
650 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], 3
652 ; CHECK-NEXT: [[C_2:%.*]] = icmp sge i8 [[START]], 0
657 ; CHECK-NEXT: [[START_1:%.*]] = mul nsw i8 [[START]], 1
659 ; CHECK-NEXT: [[START_2:%.*]] = mul nsw i8 [[START]], 2
661 ; CHECK-NEXT: [[START_3:%.*]] = mul nsw i8 [[START]], 3
663 ; CHECK-NEXT: [[START_4:%.*]] = mul nsw i8 [[START]], 4
671 %mul.3 = mul nsw i8 %start, 3
673 %c.2 = icmp sge i8 %start, 0
678 %t.0 = icmp slt i8 %start, %high
680 %start.1 = mul nsw i8 %start, 1
681 %t.1 = icmp slt i8 %start.1, %high
683 %start.2 = mul nsw i8 %start, 2
684 %t.2 = icmp slt i8 %start.2, %high
686 %start.3 = mul nsw i8 %start, 3
687 %t.3 = icmp slt i8 %start.3, %high
689 %start.4 = mul nsw i8 %start, 4
690 %c.3 = icmp slt i8 %start.4, %high
698 define void @slt_mul_nsw_3_known_nonnegative_2(i8 %start, i8 %high) {
701 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], 3
703 ; CHECK-NEXT: [[C_2:%.*]] = icmp sge i8 [[START]], 0
709 ; CHECK-NEXT: [[C_4:%.*]] = icmp slt i8 [[START]], [[HIGH]]
711 ; CHECK-NEXT: [[ELSE_START_1:%.*]] = mul nsw i8 [[START]], 1
714 ; CHECK-NEXT: [[ELSE_START_2:%.*]] = mul nsw i8 [[START]], 2
717 ; CHECK-NEXT: [[ELSE_START_3:%.*]] = mul nsw i8 [[START]], 3
720 ; CHECK-NEXT: [[ELSE_START_4:%.*]] = mul nsw i8 [[START]], 4
726 %mul.3 = mul nsw i8 %start, 3
728 %c.2 = icmp sge i8 %start, 0
736 %c.4 = icmp slt i8 %start, %high
738 %else.start.1 = mul nsw i8 %start, 1
739 %c.5 = icmp slt i8 %else.start.1, %high
741 %else.start.2 = mul nsw i8 %start, 2
742 %c.6 = icmp slt i8 %else.start.2, %high
744 %else.start.3 = mul nsw i8 %start, 3
745 %c.7 = icmp slt i8 %else.start.3, %high
747 %else.start.4 = mul nsw i8 %start, 4
748 %c.8 = icmp slt i8 %else.start.4, %high
753 define void @slt_mul_nsw_both_var_non_negative_1(i8 %start, i8 %scale, i8 %high) {
756 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], [[SCALE:%.*]]
758 ; CHECK-NEXT: [[C_2:%.*]] = icmp sgt i8 [[START]], 0
766 ; CHECK-NEXT: [[T_0:%.*]] = icmp slt i8 [[START]], [[HIGH]]
768 ; CHECK-NEXT: [[START_1:%.*]] = mul nsw i8 [[START]], 1
771 ; CHECK-NEXT: [[START_2:%.*]] = mul nsw i8 [[START]], 2
774 ; CHECK-NEXT: [[START_3:%.*]] = mul nsw i8 [[START]], 3
777 ; CHECK-NEXT: [[START_4:%.*]] = mul nsw i8 [[START]], 4
782 ; CHECK-NEXT: [[C_4:%.*]] = icmp slt i8 [[START]], [[HIGH]]
784 ; CHECK-NEXT: [[ELSE_START_1:%.*]] = mul nsw i8 [[START]], 1
787 ; CHECK-NEXT: [[ELSE_START_2:%.*]] = mul nsw i8 [[START]], 2
790 ; CHECK-NEXT: [[ELSE_START_3:%.*]] = mul nsw i8 [[START]], 3
793 ; CHECK-NEXT: [[ELSE_START_4:%.*]] = mul nsw i8 [[START]], 4
799 %mul.3 = mul nsw i8 %start, %scale
801 %c.2 = icmp sgt i8 %start, 0
810 %t.0 = icmp slt i8 %start, %high
812 %start.1 = mul nsw i8 %start, 1
813 %t.1 = icmp slt i8 %start.1, %high
815 %start.2 = mul nsw i8 %start, 2
816 %t.2 = icmp slt i8 %start.2, %high
818 %start.3 = mul nsw i8 %start, 3
819 %t.3 = icmp slt i8 %start.3, %high
821 %start.4 = mul nsw i8 %start, 4
822 %c.3 = icmp slt i8 %start.4, %high
827 %c.4 = icmp slt i8 %start, %high
829 %else.start.1 = mul nsw i8 %start, 1
830 %c.5 = icmp slt i8 %else.start.1, %high
832 %else.start.2 = mul nsw i8 %start, 2
833 %c.6 = icmp slt i8 %else.start.2, %high
835 %else.start.3 = mul nsw i8 %start, 3
836 %c.7 = icmp slt i8 %else.start.3, %high
838 %else.start.4 = mul nsw i8 %start, 4
839 %c.8 = icmp slt i8 %else.start.4, %high
844 define void @slt_mul_nsw_both_var_non_negative_2(i8 %start, i8 %scale, i8 %high) {
847 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], [[SCALE:%.*]]
849 ; CHECK-NEXT: [[C_2:%.*]] = icmp sgt i8 [[START]], 0
859 ; CHECK-NEXT: [[C_4:%.*]] = icmp slt i8 [[START]], [[HIGH]]
861 ; CHECK-NEXT: [[ELSE_START_1:%.*]] = mul nsw i8 [[START]], 1
864 ; CHECK-NEXT: [[ELSE_START_2:%.*]] = mul nsw i8 [[START]], 2
867 ; CHECK-NEXT: [[ELSE_START_3:%.*]] = mul nsw i8 [[START]], 3
870 ; CHECK-NEXT: [[ELSE_START_4:%.*]] = mul nsw i8 [[START]], 4
876 %mul.3 = mul nsw i8 %start, %scale
878 %c.2 = icmp sgt i8 %start, 0
890 %c.4 = icmp slt i8 %start, %high
892 %else.start.1 = mul nsw i8 %start, 1
893 %c.5 = icmp slt i8 %else.start.1, %high
895 %else.start.2 = mul nsw i8 %start, 2
896 %c.6 = icmp slt i8 %else.start.2, %high
898 %else.start.3 = mul nsw i8 %start, 3
899 %c.7 = icmp slt i8 %else.start.3, %high
901 %else.start.4 = mul nsw i8 %start, 4
902 %c.8 = icmp slt i8 %else.start.4, %high
907 define void @ult_mul_nsw_3_known_positive_1(i8 %start, i8 %high) {
910 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], 3
912 ; CHECK-NEXT: [[C_2:%.*]] = icmp ugt i8 [[START]], 0
916 ; CHECK-NEXT: [[T_0:%.*]] = icmp ult i8 [[START]], [[HIGH]]
918 ; CHECK-NEXT: [[START_1:%.*]] = mul nsw i8 [[START]], 1
921 ; CHECK-NEXT: [[START_2:%.*]] = mul nsw i8 [[START]], 2
924 ; CHECK-NEXT: [[START_3:%.*]] = mul nsw i8 [[START]], 3
927 ; CHECK-NEXT: [[START_4:%.*]] = mul nsw i8 [[START]], 4
935 %mul.3 = mul nsw i8 %start, 3
937 %c.2 = icmp ugt i8 %start, 0
942 %t.0 = icmp ult i8 %start, %high
944 %start.1 = mul nsw i8 %start, 1
945 %t.1 = icmp ult i8 %start.1, %high
947 %start.2 = mul nsw i8 %start, 2
948 %t.2 = icmp ult i8 %start.2, %high
950 %start.3 = mul nsw i8 %start, 3
951 %t.3 = icmp ult i8 %start.3, %high
953 %start.4 = mul nsw i8 %start, 4
954 %c.3 = icmp slt i8 %start.4, %high
962 define void @ult_mul_nsw_3_known_positive_2(i8 %start, i8 %high) {
965 ; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i8 [[START:%.*]], 3
967 ; CHECK-NEXT: [[C_2:%.*]] = icmp ugt i8 [[START]], 0
973 ; CHECK-NEXT: [[C_4:%.*]] = icmp slt i8 [[START]], [[HIGH]]
975 ; CHECK-NEXT: [[ELSE_START_1:%.*]] = mul nsw i8 [[START]], 1
978 ; CHECK-NEXT: [[ELSE_START_2:%.*]] = mul nsw i8 [[START]], 2
981 ; CHECK-NEXT: [[ELSE_START_3:%.*]] = mul nsw i8 [[START]], 3
984 ; CHECK-NEXT: [[ELSE_START_4:%.*]] = mul nsw i8 [[START]], 4
990 %mul.3 = mul nsw i8 %start, 3
992 %c.2 = icmp ugt i8 %start, 0
1000 %c.4 = icmp slt i8 %start, %high
1002 %else.start.1 = mul nsw i8 %start, 1
1003 %c.5 = icmp slt i8 %else.start.1, %high
1005 %else.start.2 = mul nsw i8 %start, 2
1006 %c.6 = icmp slt i8 %else.start.2, %high
1008 %else.start.3 = mul nsw i8 %start, 3
1009 %c.7 = icmp slt i8 %else.start.3, %high
1011 %else.start.4 = mul nsw i8 %start, 4
1012 %c.8 = icmp slt i8 %else.start.4, %high