Lines Matching full:start

6 define i1 @test_mul_const_nuw_unsigned_1(i8 %start, i8 %high) {
9 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nuw i8 [[START:%.*]], 4
15 %start.mul.4 = mul nuw i8 %start, 4
16 %c.1 = icmp ult i8 %start.mul.4, %high
19 %t.1 = icmp ult i8 %start, %high
23 define i1 @test_mul_const_nuw_unsigned_2(i8 %start, i8 %high) {
26 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nuw i8 [[START:%.*]], 4
29 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nuw i8 [[START]], 2
33 %start.mul.4 = mul nuw i8 %start, 4
34 %c.1 = icmp ult i8 %start.mul.4, %high
37 %start.mul.2 = mul nuw i8 %start, 2
38 %t = icmp ult i8 %start.mul.2, %high
42 define i1 @test_mul_const_nuw_unsigned_3(i8 %start, i8 %high) {
45 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nuw i8 [[START:%.*]], 4
48 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nuw i8 [[START]], 2
49 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nuw i8 [[START]], [[START]]
53 %start.mul.4 = mul nuw i8 %start, 4
54 %c.1 = icmp ult i8 %start.mul.4, %high
57 %start.mul.2 = mul nuw i8 %start, 2
58 %start.add.1 = add nuw i8 %start, %start
59 %t = icmp ule i8 %start.add.1, %start.mul.2
64 define i1 @test_mul_const_nuw_unsigned_4(i8 %start, i8 %high) {
67 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nuw i8 [[START:%.*]], 4
70 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nuw i8 [[START]], 2
71 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nuw i8 [[START]], [[START]]
75 %start.mul.4 = mul nuw i8 %start, 4
76 %c.1 = icmp ult i8 %start.mul.4, %high
79 %start.mul.2 = mul nuw i8 %start, 2
80 %start.add.1 = add nuw i8 %start, %start
81 %f = icmp ult i8 %start.add.1, %start.mul.2
86 define i1 @test_mul_const_nuw_unsigned_5(i8 %start, i8 %high) {
89 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nuw i8 [[START:%.*]], 4
92 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nuw i8 [[START]], [[START]]
97 %start.mul.4 = mul nuw i8 %start, 4
98 %c.1 = icmp ult i8 %start.mul.4, %high
101 %start.add.1 = add nuw i8 %start, %start
102 %start.add.2 = add nuw i8 %start.add.1, %start.add.1
103 %t.4 = icmp ule i8 %start.add.2, %start.mul.4
107 define i1 @test_mul_const_nuw_unsigned_6(i8 %start, i8 %high) {
110 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nuw i8 [[START:%.*]], 4
113 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nuw i8 [[START]], [[START]]
118 %start.mul.4 = mul nuw i8 %start, 4
119 %c.1 = icmp ult i8 %start.mul.4, %high
122 %start.add.1 = add nuw i8 %start, %start
123 %start.add.2 = add nuw i8 %start.add.1, %start.add.1
124 %f.2 = icmp ult i8 %start.add.2, %start.mul.4
128 define i1 @test_mul_const_nuw_unsigned_7(i8 %start, i8 %high) {
131 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nuw i8 [[START:%.*]], 4
134 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nuw i8 [[START]], 2
135 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nuw i8 [[START]], [[START]]
141 %start.mul.4 = mul nuw i8 %start, 4
142 %c.1 = icmp ult i8 %start.mul.4, %high
145 %start.mul.2 = mul nuw i8 %start, 2
146 %start.add.1 = add nuw i8 %start, %start
147 %start.add.2 = add nuw i8 %start.add.1, %start.add.1
148 %start.add.2.1 = add nuw i8 %start.add.2, 1
149 %f.3 = icmp ule i8 %start.add.2.1, %start.mul.4
153 define i1 @test_mul_const_nuw_unsigned_8(i8 %start, i8 %high) {
156 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nuw i8 [[START:%.*]], 4
159 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nuw i8 [[START]], 2
160 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nuw i8 [[START]], [[START]]
163 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nuw i8 [[START]], 3
167 %start.mul.4 = mul nuw i8 %start, 4
168 %c.1 = icmp ult i8 %start.mul.4, %high
171 %start.mul.2 = mul nuw i8 %start, 2
172 %start.add.1 = add nuw i8 %start, %start
173 %start.add.2 = add nuw i8 %start.add.1, %start.add.1
174 %start.add.2.1 = add nuw i8 %start.add.2, 1
175 %start.mul.3 = mul nuw i8 %start, 3
176 %t.5 = icmp ule i8 %start.add.1, %start.mul.3
180 define i1 @test_mul_const_nuw_unsigned_9(i8 %start, i8 %high) {
183 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nuw i8 [[START:%.*]], 4
186 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nuw i8 [[START]], 2
187 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nuw i8 [[START]], [[START]]
190 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nuw i8 [[START]], 3
194 %start.mul.4 = mul nuw i8 %start, 4
195 %c.1 = icmp ult i8 %start.mul.4, %high
198 %start.mul.2 = mul nuw i8 %start, 2
199 %start.add.1 = add nuw i8 %start, %start
200 %start.add.2 = add nuw i8 %start.add.1, %start.add.1
201 %start.add.2.1 = add nuw i8 %start.add.2, 1
202 %start.mul.3 = mul nuw i8 %start, 3
203 %f.5 = icmp ult i8 %start.add.2, %start.mul.3
207 define i1 @test_mul_const_nuw_unsigned_10(i8 %start, i8 %high) {
210 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nuw i8 [[START:%.*]], 5
211 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
213 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nuw i8 [[START]], 3
217 %start.mul.5 = mul nuw i8 %start, 5
218 %c.0 = icmp ult i8 %start, %start.mul.5
221 %start.mul.3 = mul nuw i8 %start, 3
222 %t.1 = icmp ule i8 %start.mul.3, %start.mul.5
226 define i1 @test_mul_const_nuw_unsigned_11(i8 %start, i8 %high) {
229 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nuw i8 [[START:%.*]], 5
230 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
232 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nuw i8 [[START]], 3
236 %start.mul.5 = mul nuw i8 %start, 5
237 %c.0 = icmp ult i8 %start, %start.mul.5
240 %start.mul.3 = mul nuw i8 %start, 3
241 %c.1 = icmp ule i8 %start.mul.5, %start.mul.3
245 define i1 @test_mul_const_nuw_unsigned_12(i8 %start) {
248 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nuw i8 [[START:%.*]], 3
249 ; CHECK-NEXT: [[C_1:%.*]] = icmp ult i8 [[START]], [[START_MUL_3]]
251 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nuw i8 [[START]], 5
255 %start.mul.3 = mul nuw i8 %start, 3
256 %c.1 = icmp ult i8 %start, %start.mul.3
259 %start.mul.5 = mul nuw i8 %start, 5
260 %t.1 = icmp ule i8 %start.mul.3, %start.mul.5
264 define i1 @test_mul_const_nuw_unsigned_13(i8 %start) {
267 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nuw i8 [[START:%.*]], 3
268 ; CHECK-NEXT: [[C_1:%.*]] = icmp ult i8 [[START]], [[START_MUL_3]]
270 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nuw i8 [[START]], 5
274 %start.mul.3 = mul nuw i8 %start, 3
275 %c.1 = icmp ult i8 %start, %start.mul.3
278 %start.mul.5 = mul nuw i8 %start, 5
279 %f.1 = icmp ule i8 %start.mul.5, %start.mul.3
283 define i1 @test_mul_const_nuw_unsigned_14(i8 %start) {
286 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nuw i8 [[START:%.*]], -5
287 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
289 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nuw i8 [[START]], -3
294 %start.mul.5 = mul nuw i8 %start, -5
295 %c.0 = icmp ult i8 %start, %start.mul.5
298 %start.mul.3 = mul nuw i8 %start, -3
299 %t.1 = icmp ule i8 %start.mul.3, %start.mul.5
303 define i1 @test_mul_const_nuw_unsigned_15(i8 %start) {
306 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nuw i8 [[START:%.*]], -5
307 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
309 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nuw i8 [[START]], -3
314 %start.mul.5 = mul nuw i8 %start, -5
315 %c.0 = icmp ult i8 %start, %start.mul.5
318 %start.mul.3 = mul nuw i8 %start, -3
319 %c.1 = icmp ule i8 %start.mul.5, %start.mul.3
323 define i1 @test_mul_const_nuw_nsw_unsigned_16(i8 %start) {
326 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nuw nsw i8 [[START:%.*]], -5
327 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
329 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nuw nsw i8 [[START]], -3
334 %start.mul.5 = mul nuw nsw i8 %start, -5
335 %c.0 = icmp ult i8 %start, %start.mul.5
338 %start.mul.3 = mul nuw nsw i8 %start, -3
339 %t.1 = icmp ule i8 %start.mul.3, %start.mul.5
343 define i1 @test_mul_const_nuw_nsw_unsigned_17(i8 %start) {
346 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nuw nsw i8 [[START:%.*]], -5
347 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
349 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nuw nsw i8 [[START]], -3
354 %start.mul.5 = mul nuw nsw i8 %start, -5
355 %c.0 = icmp ult i8 %start, %start.mul.5
358 %start.mul.3 = mul nuw nsw i8 %start, -3
359 %c.1 = icmp ule i8 %start.mul.5, %start.mul.3
363 define i1 @test_mul_add_const_nuw_unsigned_1(i8 %start, i8 %high) {
366 ; CHECK-NEXT: [[ADD:%.*]] = add nuw i8 [[START:%.*]], 3
373 %add = add nuw i8 %start, 3
374 %start.mul.4 = mul nuw i8 %add, 4
375 %c.1 = icmp ult i8 %start.mul.4, %high
378 %t.1 = icmp ult i8 %start, %high
382 define i1 @test_mul_add_const_nuw_unsigned_2(i8 %start, i8 %high) {
385 ; CHECK-NEXT: [[ADD:%.*]] = add nuw i8 [[START:%.*]], 3
389 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nuw i8 [[START]], 2
393 %add = add nuw i8 %start, 3
394 %start.mul.4 = mul nuw i8 %add, 4
395 %c.1 = icmp ult i8 %start.mul.4, %high
398 %start.mul.2 = mul nuw i8 %start, 2
399 %t.2 = icmp ult i8 %start.mul.2, %high
403 define i1 @test_mul_add_const_nuw_unsigned_3(i8 %start, i8 %high) {
406 ; CHECK-NEXT: [[ADD:%.*]] = add nuw i8 [[START:%.*]], 3
410 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nuw i8 [[START]], [[START]]
415 %add = add nuw i8 %start, 3
416 %start.mul.4 = mul nuw i8 %add, 4
417 %c.1 = icmp ult i8 %start.mul.4, %high
420 %start.add.1 = add nuw i8 %start, %start
421 %start.add.2 = add nuw i8 %start.add.1, %start.add.1
422 %t.3 = icmp ule i8 %start.add.2, %start.mul.4
426 define i1 @test_mul_add_const_nuw_unsigned_4(i8 %start, i8 %high) {
429 ; CHECK-NEXT: [[ADD:%.*]] = add nuw i8 [[START:%.*]], 3
433 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nuw i8 [[START]], 2
434 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nuw i8 [[START]], [[START]]
439 %add = add nuw i8 %start, 3
440 %start.mul.4 = mul nuw i8 %add, 4
441 %c.1 = icmp ult i8 %start.mul.4, %high
444 %start.mul.2 = mul nuw i8 %start, 2
445 %start.add.1 = add nuw i8 %start, %start
446 %start.add.2 = add nuw i8 %start.add.1, %start.add.1
447 %t.4 = icmp ult i8 %start.add.2, %start.mul.4
451 define i1 @test_mul_add_const_nuw_unsigned_5(i8 %start, i8 %high) {
454 ; CHECK-NEXT: [[ADD:%.*]] = add nuw i8 [[START:%.*]], 3
458 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nuw i8 [[START]], [[START]]
464 %add = add nuw i8 %start, 3
465 %start.mul.4 = mul nuw i8 %add, 4
466 %c.1 = icmp ult i8 %start.mul.4, %high
469 %start.add.1 = add nuw i8 %start, %start
470 %start.add.2 = add nuw i8 %start.add.1, %start.add.1
471 %start.add.2.12 = add nuw i8 %start.add.2, 12
472 %t.5 = icmp ule i8 %start.add.2.12, %start.mul.4
476 define i1 @test_mul_add_const_nuw_unsigned_6(i8 %start, i8 %high) {
479 ; CHECK-NEXT: [[ADD:%.*]] = add nuw i8 [[START:%.*]], 3
483 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nuw i8 [[START]], [[START]]
489 %add = add nuw i8 %start, 3
490 %start.mul.4 = mul nuw i8 %add, 4
491 %c.1 = icmp ult i8 %start.mul.4, %high
494 %start.add.1 = add nuw i8 %start, %start
495 %start.add.2 = add nuw i8 %start.add.1, %start.add.1
496 %start.add.2.13 = add nuw i8 %start.add.2, 13
497 %f.1 = icmp ule i8 %start.add.2.13, %start.mul.4
501 define i1 @test_mul_const_nsw_unsigned_1(i8 %start, i8 %high) {
504 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nsw i8 [[START:%.*]], 4
507 ; CHECK-NEXT: [[T_1:%.*]] = icmp ult i8 [[START]], [[HIGH]]
511 %start.mul.4 = mul nsw i8 %start, 4
512 %c.1 = icmp ult i8 %start.mul.4, %high
515 %t.1 = icmp ult i8 %start, %high
519 define i1 @test_mul_const_nsw_unsigned_2(i8 %start, i8 %high) {
522 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nsw i8 [[START:%.*]], 4
525 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nsw i8 [[START]], 2
530 %start.mul.4 = mul nsw i8 %start, 4
531 %c.1 = icmp ult i8 %start.mul.4, %high
534 %start.mul.2 = mul nsw i8 %start, 2
535 %t = icmp ult i8 %start.mul.2, %high
539 define i1 @test_mul_const_nsw_unsigned_3(i8 %start, i8 %high) {
542 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nsw i8 [[START:%.*]], 4
545 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nsw i8 [[START]], 2
546 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nsw i8 [[START]], [[START]]
551 %start.mul.4 = mul nsw i8 %start, 4
552 %c.1 = icmp ult i8 %start.mul.4, %high
555 %start.mul.2 = mul nsw i8 %start, 2
556 %start.add.1 = add nsw i8 %start, %start
557 %t = icmp ule i8 %start.add.1, %start.mul.2
562 define i1 @test_mul_const_nsw_unsigned_4(i8 %start, i8 %high) {
565 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nsw i8 [[START:%.*]], 4
568 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nsw i8 [[START]], 2
569 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nsw i8 [[START]], [[START]]
574 %start.mul.4 = mul nsw i8 %start, 4
575 %c.1 = icmp ult i8 %start.mul.4, %high
578 %start.mul.2 = mul nsw i8 %start, 2
579 %start.add.1 = add nsw i8 %start, %start
580 %f = icmp ult i8 %start.add.1, %start.mul.2
585 define i1 @test_mul_const_nsw_unsigned_5(i8 %start, i8 %high) {
588 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nsw i8 [[START:%.*]], 4
591 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nsw i8 [[START]], [[START]]
597 %start.mul.4 = mul nsw i8 %start, 4
598 %c.1 = icmp ult i8 %start.mul.4, %high
601 %start.add.1 = add nsw i8 %start, %start
602 %start.add.2 = add nsw i8 %start.add.1, %start.add.1
603 %t.4 = icmp ule i8 %start.add.2, %start.mul.4
607 define i1 @test_mul_const_nsw_unsigned_6(i8 %start, i8 %high) {
610 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nsw i8 [[START:%.*]], 4
613 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nsw i8 [[START]], [[START]]
619 %start.mul.4 = mul nsw i8 %start, 4
620 %c.1 = icmp ult i8 %start.mul.4, %high
623 %start.add.1 = add nsw i8 %start, %start
624 %start.add.2 = add nsw i8 %start.add.1, %start.add.1
625 %f.2 = icmp ult i8 %start.add.2, %start.mul.4
629 define i1 @test_mul_const_nsw_unsigned_7(i8 %start, i8 %high) {
632 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nsw i8 [[START:%.*]], 4
635 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nsw i8 [[START]], 2
636 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nsw i8 [[START]], [[START]]
643 %start.mul.4 = mul nsw i8 %start, 4
644 %c.1 = icmp ult i8 %start.mul.4, %high
647 %start.mul.2 = mul nsw i8 %start, 2
648 %start.add.1 = add nsw i8 %start, %start
649 %start.add.2 = add nsw i8 %start.add.1, %start.add.1
650 %start.add.2.1 = add nsw i8 %start.add.2, 1
651 %f.3 = icmp ule i8 %start.add.2.1, %start.mul.4
655 define i1 @test_mul_const_nsw_unsigned_8(i8 %start, i8 %high) {
658 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nsw i8 [[START:%.*]], 4
661 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nsw i8 [[START]], 2
662 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nsw i8 [[START]], [[START]]
665 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nsw i8 [[START]], 3
670 %start.mul.4 = mul nsw i8 %start, 4
671 %c.1 = icmp ult i8 %start.mul.4, %high
674 %start.mul.2 = mul nsw i8 %start, 2
675 %start.add.1 = add nsw i8 %start, %start
676 %start.add.2 = add nsw i8 %start.add.1, %start.add.1
677 %start.add.2.1 = add nsw i8 %start.add.2, 1
678 %start.mul.3 = mul nsw i8 %start, 3
679 %t.5 = icmp ule i8 %start.add.1, %start.mul.3
683 define i1 @test_mul_const_nsw_unsigned_9(i8 %start, i8 %high) {
686 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul nsw i8 [[START:%.*]], 4
689 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nsw i8 [[START]], 2
690 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nsw i8 [[START]], [[START]]
693 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nsw i8 [[START]], 3
698 %start.mul.4 = mul nsw i8 %start, 4
699 %c.1 = icmp ult i8 %start.mul.4, %high
702 %start.mul.2 = mul nsw i8 %start, 2
703 %start.add.1 = add nsw i8 %start, %start
704 %start.add.2 = add nsw i8 %start.add.1, %start.add.1
705 %start.add.2.1 = add nsw i8 %start.add.2, 1
706 %start.mul.3 = mul nsw i8 %start, 3
707 %f.5 = icmp ult i8 %start.add.2, %start.mul.3
711 define i1 @test_mul_const_nsw_unsigned_10(i8 %start, i8 %high) {
714 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nsw i8 [[START:%.*]], 5
715 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
717 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nsw i8 [[START]], 3
722 %start.mul.5 = mul nsw i8 %start, 5
723 %c.0 = icmp ult i8 %start, %start.mul.5
726 %start.mul.3 = mul nsw i8 %start, 3
727 %t.1 = icmp ule i8 %start.mul.3, %start.mul.5
731 define i1 @test_mul_const_nsw_unsigned_11(i8 %start, i8 %high) {
734 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nsw i8 [[START:%.*]], 5
735 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
737 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nsw i8 [[START]], 3
742 %start.mul.5 = mul nsw i8 %start, 5
743 %c.0 = icmp ult i8 %start, %start.mul.5
746 %start.mul.3 = mul nsw i8 %start, 3
747 %c.1 = icmp ule i8 %start.mul.5, %start.mul.3
751 define i1 @test_mul_const_nsw_unsigned_12(i8 %start) {
754 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nsw i8 [[START:%.*]], -5
755 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
757 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nsw i8 [[START]], -3
762 %start.mul.5 = mul nsw i8 %start, -5
763 %c.0 = icmp ult i8 %start, %start.mul.5
766 %start.mul.3 = mul nsw i8 %start, -3
767 %t.1 = icmp ule i8 %start.mul.3, %start.mul.5
771 define i1 @test_mul_const_nsw_unsigned_13(i8 %start) {
774 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul nsw i8 [[START:%.*]], -5
775 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
777 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul nsw i8 [[START]], -3
782 %start.mul.5 = mul nsw i8 %start, -5
783 %c.0 = icmp ult i8 %start, %start.mul.5
786 %start.mul.3 = mul nsw i8 %start, -3
787 %c.1 = icmp ule i8 %start.mul.5, %start.mul.3
791 define i1 @test_mul_add_const_nsw_unsigned_1(i8 %start, i8 %high) {
794 ; CHECK-NEXT: [[ADD:%.*]] = add nsw i8 [[START:%.*]], 3
798 ; CHECK-NEXT: [[T_1:%.*]] = icmp ult i8 [[START]], [[HIGH]]
802 %add = add nsw i8 %start, 3
803 %start.mul.4 = mul nsw i8 %add, 4
804 %c.1 = icmp ult i8 %start.mul.4, %high
807 %t.1 = icmp ult i8 %start, %high
811 define i1 @test_mul_add_const_nsw_unsigned_2(i8 %start, i8 %high) {
814 ; CHECK-NEXT: [[ADD:%.*]] = add nsw i8 [[START:%.*]], 3
818 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nsw i8 [[START]], 2
823 %add = add nsw i8 %start, 3
824 %start.mul.4 = mul nsw i8 %add, 4
825 %c.1 = icmp ult i8 %start.mul.4, %high
828 %start.mul.2 = mul nsw i8 %start, 2
829 %t.2 = icmp ult i8 %start.mul.2, %high
833 define i1 @test_mul_add_const_nsw_unsigned_3(i8 %start, i8 %high) {
836 ; CHECK-NEXT: [[ADD:%.*]] = add nsw i8 [[START:%.*]], 3
840 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nsw i8 [[START]], [[START]]
846 %add = add nsw i8 %start, 3
847 %start.mul.4 = mul nsw i8 %add, 4
848 %c.1 = icmp ult i8 %start.mul.4, %high
851 %start.add.1 = add nsw i8 %start, %start
852 %start.add.2 = add nsw i8 %start.add.1, %start.add.1
853 %t.3 = icmp ule i8 %start.add.2, %start.mul.4
857 define i1 @test_mul_add_const_nsw_unsigned_4(i8 %start, i8 %high) {
860 ; CHECK-NEXT: [[ADD:%.*]] = add nsw i8 [[START:%.*]], 3
864 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul nsw i8 [[START]], 2
865 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nsw i8 [[START]], [[START]]
871 %add = add nsw i8 %start, 3
872 %start.mul.4 = mul nsw i8 %add, 4
873 %c.1 = icmp ult i8 %start.mul.4, %high
876 %start.mul.2 = mul nsw i8 %start, 2
877 %start.add.1 = add nsw i8 %start, %start
878 %start.add.2 = add nsw i8 %start.add.1, %start.add.1
879 %t.4 = icmp ult i8 %start.add.2, %start.mul.4
883 define i1 @test_mul_add_const_nsw_unsigned_5(i8 %start, i8 %high) {
886 ; CHECK-NEXT: [[ADD:%.*]] = add nsw i8 [[START:%.*]], 3
890 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nsw i8 [[START]], [[START]]
897 %add = add nsw i8 %start, 3
898 %start.mul.4 = mul nsw i8 %add, 4
899 %c.1 = icmp ult i8 %start.mul.4, %high
902 %start.add.1 = add nsw i8 %start, %start
903 %start.add.2 = add nsw i8 %start.add.1, %start.add.1
904 %start.add.2.12 = add nsw i8 %start.add.2, 12
905 %t.5 = icmp ule i8 %start.add.2.12, %start.mul.4
909 define i1 @test_mul_add_const_nsw_unsigned_6(i8 %start, i8 %high) {
912 ; CHECK-NEXT: [[ADD:%.*]] = add nsw i8 [[START:%.*]], 3
916 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add nsw i8 [[START]], [[START]]
923 %add = add nsw i8 %start, 3
924 %start.mul.4 = mul nsw i8 %add, 4
925 %c.1 = icmp ult i8 %start.mul.4, %high
928 %start.add.1 = add nsw i8 %start, %start
929 %start.add.2 = add nsw i8 %start.add.1, %start.add.1
930 %start.add.2.13 = add nsw i8 %start.add.2, 13
931 %f.1 = icmp ule i8 %start.add.2.13, %start.mul.4
935 define i1 @test_mul_const_no_nuw_unsigned_1(i8 %start, i8 %high) {
938 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul i8 [[START:%.*]], 4
941 ; CHECK-NEXT: [[T_1:%.*]] = icmp ult i8 [[START]], [[HIGH]]
945 %start.mul.4 = mul i8 %start, 4
946 %c.1 = icmp ult i8 %start.mul.4, %high
949 %t.1 = icmp ult i8 %start, %high
953 define i1 @test_mul_const_no_nuw_unsigned_2(i8 %start, i8 %high) {
956 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul i8 [[START:%.*]], 4
959 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul i8 [[START]], 2
964 %start.mul.4 = mul i8 %start, 4
965 %c.1 = icmp ult i8 %start.mul.4, %high
968 %start.mul.2 = mul i8 %start, 2
969 %t = icmp ult i8 %start.mul.2, %high
973 define i1 @test_mul_const_no_nuw_unsigned_3(i8 %start, i8 %high) {
976 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul i8 [[START:%.*]], 4
979 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul i8 [[START]], 2
980 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add i8 [[START]], [[START]]
985 %start.mul.4 = mul i8 %start, 4
986 %c.1 = icmp ult i8 %start.mul.4, %high
989 %start.mul.2 = mul i8 %start, 2
990 %start.add.1 = add i8 %start, %start
991 %t = icmp ule i8 %start.add.1, %start.mul.2
996 define i1 @test_mul_const_no_nuw_unsigned_4(i8 %start, i8 %high) {
999 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul i8 [[START:%.*]], 4
1002 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul i8 [[START]], 2
1003 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add i8 [[START]], [[START]]
1008 %start.mul.4 = mul i8 %start, 4
1009 %c.1 = icmp ult i8 %start.mul.4, %high
1012 %start.mul.2 = mul i8 %start, 2
1013 %start.add.1 = add i8 %start, %start
1014 %f = icmp ult i8 %start.add.1, %start.mul.2
1019 define i1 @test_mul_const_no_nuw_unsigned_5(i8 %start, i8 %high) {
1022 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul i8 [[START:%.*]], 4
1025 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add i8 [[START]], [[START]]
1031 %start.mul.4 = mul i8 %start, 4
1032 %c.1 = icmp ult i8 %start.mul.4, %high
1035 %start.add.1 = add i8 %start, %start
1036 %start.add.2 = add i8 %start.add.1, %start.add.1
1037 %t.4 = icmp ule i8 %start.add.2, %start.mul.4
1041 define i1 @test_mul_const_no_nuw_unsigned_6(i8 %start, i8 %high) {
1044 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul i8 [[START:%.*]], 4
1047 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add i8 [[START]], [[START]]
1053 %start.mul.4 = mul i8 %start, 4
1054 %c.1 = icmp ult i8 %start.mul.4, %high
1057 %start.add.1 = add i8 %start, %start
1058 %start.add.2 = add i8 %start.add.1, %start.add.1
1059 %f.2 = icmp ult i8 %start.add.2, %start.mul.4
1063 define i1 @test_mul_const_no_nuw_unsigned_7(i8 %start, i8 %high) {
1066 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul i8 [[START:%.*]], 4
1069 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul i8 [[START]], 2
1070 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add i8 [[START]], [[START]]
1077 %start.mul.4 = mul i8 %start, 4
1078 %c.1 = icmp ult i8 %start.mul.4, %high
1081 %start.mul.2 = mul i8 %start, 2
1082 %start.add.1 = add i8 %start, %start
1083 %start.add.2 = add i8 %start.add.1, %start.add.1
1084 %start.add.2.1 = add i8 %start.add.2, 1
1085 %f.3 = icmp ule i8 %start.add.2.1, %start.mul.4
1089 define i1 @test_mul_const_no_nuw_unsigned_8(i8 %start, i8 %high) {
1092 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul i8 [[START:%.*]], 4
1095 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul i8 [[START]], 2
1096 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add i8 [[START]], [[START]]
1099 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul i8 [[START]], 3
1104 %start.mul.4 = mul i8 %start, 4
1105 %c.1 = icmp ult i8 %start.mul.4, %high
1108 %start.mul.2 = mul i8 %start, 2
1109 %start.add.1 = add i8 %start, %start
1110 %start.add.2 = add i8 %start.add.1, %start.add.1
1111 %start.add.2.1 = add i8 %start.add.2, 1
1112 %start.mul.3 = mul i8 %start, 3
1113 %t.5 = icmp ule i8 %start.add.1, %start.mul.3
1117 define i1 @test_mul_const_no_nuw_unsigned_9(i8 %start, i8 %high) {
1120 ; CHECK-NEXT: [[START_MUL_4:%.*]] = mul i8 [[START:%.*]], 4
1123 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul i8 [[START]], 2
1124 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add i8 [[START]], [[START]]
1127 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul i8 [[START]], 3
1132 %start.mul.4 = mul i8 %start, 4
1133 %c.1 = icmp ult i8 %start.mul.4, %high
1136 %start.mul.2 = mul i8 %start, 2
1137 %start.add.1 = add i8 %start, %start
1138 %start.add.2 = add i8 %start.add.1, %start.add.1
1139 %start.add.2.1 = add i8 %start.add.2, 1
1140 %start.mul.3 = mul i8 %start, 3
1141 %f.5 = icmp ult i8 %start.add.2, %start.mul.3
1145 define i1 @test_mul_const_no_nuw_unsigned_10(i8 %start, i8 %high) {
1148 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul i8 [[START:%.*]], 5
1149 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
1151 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul i8 [[START]], 3
1156 %start.mul.5 = mul i8 %start, 5
1157 %c.0 = icmp ult i8 %start, %start.mul.5
1160 %start.mul.3 = mul i8 %start, 3
1161 %t.1 = icmp ule i8 %start.mul.3, %start.mul.5
1165 define i1 @test_mul_const_no_nuw_unsigned_11(i8 %start, i8 %high) {
1168 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul i8 [[START:%.*]], 5
1169 ; CHECK-NEXT: [[C_0:%.*]] = icmp ult i8 [[START]], [[START_MUL_5]]
1171 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul i8 [[START]], 3
1176 %start.mul.5 = mul i8 %start, 5
1177 %c.0 = icmp ult i8 %start, %start.mul.5
1180 %start.mul.3 = mul i8 %start, 3
1181 %c.1 = icmp ule i8 %start.mul.5, %start.mul.3
1185 define i1 @test_mul_const_no_nuw_unsigned_12(i8 %start) {
1188 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul i8 [[START:%.*]], 3
1189 ; CHECK-NEXT: [[C_1:%.*]] = icmp ult i8 [[START]], [[START_MUL_3]]
1191 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul i8 [[START]], 5
1196 %start.mul.3 = mul i8 %start, 3
1197 %c.1 = icmp ult i8 %start, %start.mul.3
1200 %start.mul.5 = mul i8 %start, 5
1201 %t.1 = icmp ule i8 %start.mul.3, %start.mul.5
1205 define i1 @test_mul_const_no_nuw_unsigned_13(i8 %start) {
1208 ; CHECK-NEXT: [[START_MUL_3:%.*]] = mul i8 [[START:%.*]], 3
1209 ; CHECK-NEXT: [[C_1:%.*]] = icmp ult i8 [[START]], [[START_MUL_3]]
1211 ; CHECK-NEXT: [[START_MUL_5:%.*]] = mul i8 [[START]], 5
1216 %start.mul.3 = mul i8 %start, 3
1217 %c.1 = icmp ult i8 %start, %start.mul.3
1220 %start.mul.5 = mul i8 %start, 5
1221 %f.1 = icmp ule i8 %start.mul.5, %start.mul.3
1225 define i1 @test_mul_add_const_no_nuw_unsigned_1(i8 %start, i8 %high) {
1228 ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[START:%.*]], 3
1232 ; CHECK-NEXT: [[T_1:%.*]] = icmp ult i8 [[START]], [[HIGH]]
1236 %add = add i8 %start, 3
1237 %start.mul.4 = mul i8 %add, 4
1238 %c.1 = icmp ult i8 %start.mul.4, %high
1241 %t.1 = icmp ult i8 %start, %high
1245 define i1 @test_mul_add_const_no_nuw_unsigned_2(i8 %start, i8 %high) {
1248 ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[START:%.*]], 3
1252 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul i8 [[START]], 2
1257 %add = add i8 %start, 3
1258 %start.mul.4 = mul i8 %add, 4
1259 %c.1 = icmp ult i8 %start.mul.4, %high
1262 %start.mul.2 = mul i8 %start, 2
1263 %t.2 = icmp ult i8 %start.mul.2, %high
1267 define i1 @test_mul_add_const_no_nuw_unsigned_3(i8 %start, i8 %high) {
1270 ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[START:%.*]], 3
1274 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add i8 [[START]], [[START]]
1280 %add = add i8 %start, 3
1281 %start.mul.4 = mul i8 %add, 4
1282 %c.1 = icmp ult i8 %start.mul.4, %high
1285 %start.add.1 = add i8 %start, %start
1286 %start.add.2 = add i8 %start.add.1, %start.add.1
1287 %t.3 = icmp ule i8 %start.add.2, %start.mul.4
1291 define i1 @test_mul_add_const_no_nuw_unsigned_4(i8 %start, i8 %high) {
1294 ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[START:%.*]], 3
1298 ; CHECK-NEXT: [[START_MUL_2:%.*]] = mul i8 [[START]], 2
1299 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add i8 [[START]], [[START]]
1305 %add = add i8 %start, 3
1306 %start.mul.4 = mul i8 %add, 4
1307 %c.1 = icmp ult i8 %start.mul.4, %high
1310 %start.mul.2 = mul i8 %start, 2
1311 %start.add.1 = add i8 %start, %start
1312 %start.add.2 = add i8 %start.add.1, %start.add.1
1313 %t.4 = icmp ult i8 %start.add.2, %start.mul.4
1317 define i1 @test_mul_add_const_no_nuw_unsigned_5(i8 %start, i8 %high) {
1320 ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[START:%.*]], 3
1324 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add i8 [[START]], [[START]]
1331 %add = add i8 %start, 3
1332 %start.mul.4 = mul i8 %add, 4
1333 %c.1 = icmp ult i8 %start.mul.4, %high
1336 %start.add.1 = add i8 %start, %start
1337 %start.add.2 = add i8 %start.add.1, %start.add.1
1338 %start.add.2.12 = add i8 %start.add.2, 12
1339 %t.5 = icmp ule i8 %start.add.2.12, %start.mul.4
1343 define i1 @test_mul_add_const_no_nuw_unsigned_6(i8 %start, i8 %high) {
1346 ; CHECK-NEXT: [[ADD:%.*]] = add i8 [[START:%.*]], 3
1350 ; CHECK-NEXT: [[START_ADD_1:%.*]] = add i8 [[START]], [[START]]
1357 %add = add i8 %start, 3
1358 %start.mul.4 = mul i8 %add, 4
1359 %c.1 = icmp ult i8 %start.mul.4, %high
1362 %start.add.1 = add i8 %start, %start
1363 %start.add.2 = add i8 %start.add.1, %start.add.1
1364 %start.add.2.13 = add i8 %start.add.2, 13
1365 %f.1 = icmp ule i8 %start.add.2.13, %start.mul.4