[ARM] Better OR's for MVE compares
[llvm-core.git] / test / Transforms / InstCombine / icmp-shr-lt-gt.ll
blobbf1a031a412493f703a3e1ccc1ee6cfa1aef4019
1 ; RUN: opt < %s -instcombine -S | FileCheck %s
3 define i1 @lshrugt_01_00(i4 %x) {
4 ; CHECK-LABEL: @lshrugt_01_00(
5 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, 1
6 ; CHECK-NEXT:    ret i1 [[C]]
8   %s = lshr i4 %x, 1
9   %c = icmp ugt i4 %s, 0
10   ret i1 %c
13 define i1 @lshrugt_01_01(i4 %x) {
14 ; CHECK-LABEL: @lshrugt_01_01(
15 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, 3
16 ; CHECK-NEXT:    ret i1 [[C]]
18   %s = lshr i4 %x, 1
19   %c = icmp ugt i4 %s, 1
20   ret i1 %c
23 define i1 @lshrugt_01_02(i4 %x) {
24 ; CHECK-LABEL: @lshrugt_01_02(
25 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, 5
26 ; CHECK-NEXT:    ret i1 [[C]]
28   %s = lshr i4 %x, 1
29   %c = icmp ugt i4 %s, 2
30   ret i1 %c
33 define i1 @lshrugt_01_03(i4 %x) {
34 ; CHECK-LABEL: @lshrugt_01_03(
35 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 0
36 ; CHECK-NEXT:    ret i1 [[C]]
38   %s = lshr i4 %x, 1
39   %c = icmp ugt i4 %s, 3
40   ret i1 %c
43 define i1 @lshrugt_01_04(i4 %x) {
44 ; CHECK-LABEL: @lshrugt_01_04(
45 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, -7
46 ; CHECK-NEXT:    ret i1 [[C]]
48   %s = lshr i4 %x, 1
49   %c = icmp ugt i4 %s, 4
50   ret i1 %c
53 define i1 @lshrugt_01_05(i4 %x) {
54 ; CHECK-LABEL: @lshrugt_01_05(
55 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, -5
56 ; CHECK-NEXT:    ret i1 [[C]]
58   %s = lshr i4 %x, 1
59   %c = icmp ugt i4 %s, 5
60   ret i1 %c
63 define i1 @lshrugt_01_06(i4 %x) {
64 ; CHECK-LABEL: @lshrugt_01_06(
65 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, -3
66 ; CHECK-NEXT:    ret i1 [[C]]
68   %s = lshr i4 %x, 1
69   %c = icmp ugt i4 %s, 6
70   ret i1 %c
73 define i1 @lshrugt_01_07(i4 %x) {
74 ; CHECK-LABEL: @lshrugt_01_07(
75 ; CHECK-NEXT:    ret i1 false
77   %s = lshr i4 %x, 1
78   %c = icmp ugt i4 %s, 7
79   ret i1 %c
82 define i1 @lshrugt_01_08(i4 %x) {
83 ; CHECK-LABEL: @lshrugt_01_08(
84 ; CHECK-NEXT:    ret i1 false
86   %s = lshr i4 %x, 1
87   %c = icmp ugt i4 %s, 8
88   ret i1 %c
91 define i1 @lshrugt_01_09(i4 %x) {
92 ; CHECK-LABEL: @lshrugt_01_09(
93 ; CHECK-NEXT:    ret i1 false
95   %s = lshr i4 %x, 1
96   %c = icmp ugt i4 %s, 9
97   ret i1 %c
100 define i1 @lshrugt_01_10(i4 %x) {
101 ; CHECK-LABEL: @lshrugt_01_10(
102 ; CHECK-NEXT:    ret i1 false
104   %s = lshr i4 %x, 1
105   %c = icmp ugt i4 %s, 10
106   ret i1 %c
109 define i1 @lshrugt_01_11(i4 %x) {
110 ; CHECK-LABEL: @lshrugt_01_11(
111 ; CHECK-NEXT:    ret i1 false
113   %s = lshr i4 %x, 1
114   %c = icmp ugt i4 %s, 11
115   ret i1 %c
118 define i1 @lshrugt_01_12(i4 %x) {
119 ; CHECK-LABEL: @lshrugt_01_12(
120 ; CHECK-NEXT:    ret i1 false
122   %s = lshr i4 %x, 1
123   %c = icmp ugt i4 %s, 12
124   ret i1 %c
127 define i1 @lshrugt_01_13(i4 %x) {
128 ; CHECK-LABEL: @lshrugt_01_13(
129 ; CHECK-NEXT:    ret i1 false
131   %s = lshr i4 %x, 1
132   %c = icmp ugt i4 %s, 13
133   ret i1 %c
136 define i1 @lshrugt_01_14(i4 %x) {
137 ; CHECK-LABEL: @lshrugt_01_14(
138 ; CHECK-NEXT:    ret i1 false
140   %s = lshr i4 %x, 1
141   %c = icmp ugt i4 %s, 14
142   ret i1 %c
145 define i1 @lshrugt_01_15(i4 %x) {
146 ; CHECK-LABEL: @lshrugt_01_15(
147 ; CHECK-NEXT:    ret i1 false
149   %s = lshr i4 %x, 1
150   %c = icmp ugt i4 %s, 15
151   ret i1 %c
154 define i1 @lshrugt_02_00(i4 %x) {
155 ; CHECK-LABEL: @lshrugt_02_00(
156 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, 3
157 ; CHECK-NEXT:    ret i1 [[C]]
159   %s = lshr i4 %x, 2
160   %c = icmp ugt i4 %s, 0
161   ret i1 %c
164 define i1 @lshrugt_02_01(i4 %x) {
165 ; CHECK-LABEL: @lshrugt_02_01(
166 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 0
167 ; CHECK-NEXT:    ret i1 [[C]]
169   %s = lshr i4 %x, 2
170   %c = icmp ugt i4 %s, 1
171   ret i1 %c
174 define i1 @lshrugt_02_02(i4 %x) {
175 ; CHECK-LABEL: @lshrugt_02_02(
176 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, -5
177 ; CHECK-NEXT:    ret i1 [[C]]
179   %s = lshr i4 %x, 2
180   %c = icmp ugt i4 %s, 2
181   ret i1 %c
184 define i1 @lshrugt_02_03(i4 %x) {
185 ; CHECK-LABEL: @lshrugt_02_03(
186 ; CHECK-NEXT:    ret i1 false
188   %s = lshr i4 %x, 2
189   %c = icmp ugt i4 %s, 3
190   ret i1 %c
193 define i1 @lshrugt_02_04(i4 %x) {
194 ; CHECK-LABEL: @lshrugt_02_04(
195 ; CHECK-NEXT:    ret i1 false
197   %s = lshr i4 %x, 2
198   %c = icmp ugt i4 %s, 4
199   ret i1 %c
202 define i1 @lshrugt_02_05(i4 %x) {
203 ; CHECK-LABEL: @lshrugt_02_05(
204 ; CHECK-NEXT:    ret i1 false
206   %s = lshr i4 %x, 2
207   %c = icmp ugt i4 %s, 5
208   ret i1 %c
211 define i1 @lshrugt_02_06(i4 %x) {
212 ; CHECK-LABEL: @lshrugt_02_06(
213 ; CHECK-NEXT:    ret i1 false
215   %s = lshr i4 %x, 2
216   %c = icmp ugt i4 %s, 6
217   ret i1 %c
220 define i1 @lshrugt_02_07(i4 %x) {
221 ; CHECK-LABEL: @lshrugt_02_07(
222 ; CHECK-NEXT:    ret i1 false
224   %s = lshr i4 %x, 2
225   %c = icmp ugt i4 %s, 7
226   ret i1 %c
229 define i1 @lshrugt_02_08(i4 %x) {
230 ; CHECK-LABEL: @lshrugt_02_08(
231 ; CHECK-NEXT:    ret i1 false
233   %s = lshr i4 %x, 2
234   %c = icmp ugt i4 %s, 8
235   ret i1 %c
238 define i1 @lshrugt_02_09(i4 %x) {
239 ; CHECK-LABEL: @lshrugt_02_09(
240 ; CHECK-NEXT:    ret i1 false
242   %s = lshr i4 %x, 2
243   %c = icmp ugt i4 %s, 9
244   ret i1 %c
247 define i1 @lshrugt_02_10(i4 %x) {
248 ; CHECK-LABEL: @lshrugt_02_10(
249 ; CHECK-NEXT:    ret i1 false
251   %s = lshr i4 %x, 2
252   %c = icmp ugt i4 %s, 10
253   ret i1 %c
256 define i1 @lshrugt_02_11(i4 %x) {
257 ; CHECK-LABEL: @lshrugt_02_11(
258 ; CHECK-NEXT:    ret i1 false
260   %s = lshr i4 %x, 2
261   %c = icmp ugt i4 %s, 11
262   ret i1 %c
265 define i1 @lshrugt_02_12(i4 %x) {
266 ; CHECK-LABEL: @lshrugt_02_12(
267 ; CHECK-NEXT:    ret i1 false
269   %s = lshr i4 %x, 2
270   %c = icmp ugt i4 %s, 12
271   ret i1 %c
274 define i1 @lshrugt_02_13(i4 %x) {
275 ; CHECK-LABEL: @lshrugt_02_13(
276 ; CHECK-NEXT:    ret i1 false
278   %s = lshr i4 %x, 2
279   %c = icmp ugt i4 %s, 13
280   ret i1 %c
283 define i1 @lshrugt_02_14(i4 %x) {
284 ; CHECK-LABEL: @lshrugt_02_14(
285 ; CHECK-NEXT:    ret i1 false
287   %s = lshr i4 %x, 2
288   %c = icmp ugt i4 %s, 14
289   ret i1 %c
292 define i1 @lshrugt_02_15(i4 %x) {
293 ; CHECK-LABEL: @lshrugt_02_15(
294 ; CHECK-NEXT:    ret i1 false
296   %s = lshr i4 %x, 2
297   %c = icmp ugt i4 %s, 15
298   ret i1 %c
301 define i1 @lshrugt_03_00(i4 %x) {
302 ; CHECK-LABEL: @lshrugt_03_00(
303 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 0
304 ; CHECK-NEXT:    ret i1 [[C]]
306   %s = lshr i4 %x, 3
307   %c = icmp ugt i4 %s, 0
308   ret i1 %c
311 define i1 @lshrugt_03_01(i4 %x) {
312 ; CHECK-LABEL: @lshrugt_03_01(
313 ; CHECK-NEXT:    ret i1 false
315   %s = lshr i4 %x, 3
316   %c = icmp ugt i4 %s, 1
317   ret i1 %c
320 define i1 @lshrugt_03_02(i4 %x) {
321 ; CHECK-LABEL: @lshrugt_03_02(
322 ; CHECK-NEXT:    ret i1 false
324   %s = lshr i4 %x, 3
325   %c = icmp ugt i4 %s, 2
326   ret i1 %c
329 define i1 @lshrugt_03_03(i4 %x) {
330 ; CHECK-LABEL: @lshrugt_03_03(
331 ; CHECK-NEXT:    ret i1 false
333   %s = lshr i4 %x, 3
334   %c = icmp ugt i4 %s, 3
335   ret i1 %c
338 define i1 @lshrugt_03_04(i4 %x) {
339 ; CHECK-LABEL: @lshrugt_03_04(
340 ; CHECK-NEXT:    ret i1 false
342   %s = lshr i4 %x, 3
343   %c = icmp ugt i4 %s, 4
344   ret i1 %c
347 define i1 @lshrugt_03_05(i4 %x) {
348 ; CHECK-LABEL: @lshrugt_03_05(
349 ; CHECK-NEXT:    ret i1 false
351   %s = lshr i4 %x, 3
352   %c = icmp ugt i4 %s, 5
353   ret i1 %c
356 define i1 @lshrugt_03_06(i4 %x) {
357 ; CHECK-LABEL: @lshrugt_03_06(
358 ; CHECK-NEXT:    ret i1 false
360   %s = lshr i4 %x, 3
361   %c = icmp ugt i4 %s, 6
362   ret i1 %c
365 define i1 @lshrugt_03_07(i4 %x) {
366 ; CHECK-LABEL: @lshrugt_03_07(
367 ; CHECK-NEXT:    ret i1 false
369   %s = lshr i4 %x, 3
370   %c = icmp ugt i4 %s, 7
371   ret i1 %c
374 define i1 @lshrugt_03_08(i4 %x) {
375 ; CHECK-LABEL: @lshrugt_03_08(
376 ; CHECK-NEXT:    ret i1 false
378   %s = lshr i4 %x, 3
379   %c = icmp ugt i4 %s, 8
380   ret i1 %c
383 define i1 @lshrugt_03_09(i4 %x) {
384 ; CHECK-LABEL: @lshrugt_03_09(
385 ; CHECK-NEXT:    ret i1 false
387   %s = lshr i4 %x, 3
388   %c = icmp ugt i4 %s, 9
389   ret i1 %c
392 define i1 @lshrugt_03_10(i4 %x) {
393 ; CHECK-LABEL: @lshrugt_03_10(
394 ; CHECK-NEXT:    ret i1 false
396   %s = lshr i4 %x, 3
397   %c = icmp ugt i4 %s, 10
398   ret i1 %c
401 define i1 @lshrugt_03_11(i4 %x) {
402 ; CHECK-LABEL: @lshrugt_03_11(
403 ; CHECK-NEXT:    ret i1 false
405   %s = lshr i4 %x, 3
406   %c = icmp ugt i4 %s, 11
407   ret i1 %c
410 define i1 @lshrugt_03_12(i4 %x) {
411 ; CHECK-LABEL: @lshrugt_03_12(
412 ; CHECK-NEXT:    ret i1 false
414   %s = lshr i4 %x, 3
415   %c = icmp ugt i4 %s, 12
416   ret i1 %c
419 define i1 @lshrugt_03_13(i4 %x) {
420 ; CHECK-LABEL: @lshrugt_03_13(
421 ; CHECK-NEXT:    ret i1 false
423   %s = lshr i4 %x, 3
424   %c = icmp ugt i4 %s, 13
425   ret i1 %c
428 define i1 @lshrugt_03_14(i4 %x) {
429 ; CHECK-LABEL: @lshrugt_03_14(
430 ; CHECK-NEXT:    ret i1 false
432   %s = lshr i4 %x, 3
433   %c = icmp ugt i4 %s, 14
434   ret i1 %c
437 define i1 @lshrugt_03_15(i4 %x) {
438 ; CHECK-LABEL: @lshrugt_03_15(
439 ; CHECK-NEXT:    ret i1 false
441   %s = lshr i4 %x, 3
442   %c = icmp ugt i4 %s, 15
443   ret i1 %c
446 define i1 @lshrult_01_00(i4 %x) {
447 ; CHECK-LABEL: @lshrult_01_00(
448 ; CHECK-NEXT:    ret i1 false
450   %s = lshr i4 %x, 1
451   %c = icmp ult i4 %s, 0
452   ret i1 %c
455 define i1 @lshrult_01_01(i4 %x) {
456 ; CHECK-LABEL: @lshrult_01_01(
457 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, 2
458 ; CHECK-NEXT:    ret i1 [[C]]
460   %s = lshr i4 %x, 1
461   %c = icmp ult i4 %s, 1
462   ret i1 %c
465 define i1 @lshrult_01_02(i4 %x) {
466 ; CHECK-LABEL: @lshrult_01_02(
467 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, 4
468 ; CHECK-NEXT:    ret i1 [[C]]
470   %s = lshr i4 %x, 1
471   %c = icmp ult i4 %s, 2
472   ret i1 %c
475 define i1 @lshrult_01_03(i4 %x) {
476 ; CHECK-LABEL: @lshrult_01_03(
477 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, 6
478 ; CHECK-NEXT:    ret i1 [[C]]
480   %s = lshr i4 %x, 1
481   %c = icmp ult i4 %s, 3
482   ret i1 %c
485 define i1 @lshrult_01_04(i4 %x) {
486 ; CHECK-LABEL: @lshrult_01_04(
487 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -1
488 ; CHECK-NEXT:    ret i1 [[C]]
490   %s = lshr i4 %x, 1
491   %c = icmp ult i4 %s, 4
492   ret i1 %c
495 define i1 @lshrult_01_05(i4 %x) {
496 ; CHECK-LABEL: @lshrult_01_05(
497 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, -6
498 ; CHECK-NEXT:    ret i1 [[C]]
500   %s = lshr i4 %x, 1
501   %c = icmp ult i4 %s, 5
502   ret i1 %c
505 define i1 @lshrult_01_06(i4 %x) {
506 ; CHECK-LABEL: @lshrult_01_06(
507 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, -4
508 ; CHECK-NEXT:    ret i1 [[C]]
510   %s = lshr i4 %x, 1
511   %c = icmp ult i4 %s, 6
512   ret i1 %c
515 define i1 @lshrult_01_07(i4 %x) {
516 ; CHECK-LABEL: @lshrult_01_07(
517 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, -2
518 ; CHECK-NEXT:    ret i1 [[C]]
520   %s = lshr i4 %x, 1
521   %c = icmp ult i4 %s, 7
522   ret i1 %c
525 define i1 @lshrult_01_08(i4 %x) {
526 ; CHECK-LABEL: @lshrult_01_08(
527 ; CHECK-NEXT:    ret i1 true
529   %s = lshr i4 %x, 1
530   %c = icmp ult i4 %s, 8
531   ret i1 %c
534 define i1 @lshrult_01_09(i4 %x) {
535 ; CHECK-LABEL: @lshrult_01_09(
536 ; CHECK-NEXT:    ret i1 true
538   %s = lshr i4 %x, 1
539   %c = icmp ult i4 %s, 9
540   ret i1 %c
543 define i1 @lshrult_01_10(i4 %x) {
544 ; CHECK-LABEL: @lshrult_01_10(
545 ; CHECK-NEXT:    ret i1 true
547   %s = lshr i4 %x, 1
548   %c = icmp ult i4 %s, 10
549   ret i1 %c
552 define i1 @lshrult_01_11(i4 %x) {
553 ; CHECK-LABEL: @lshrult_01_11(
554 ; CHECK-NEXT:    ret i1 true
556   %s = lshr i4 %x, 1
557   %c = icmp ult i4 %s, 11
558   ret i1 %c
561 define i1 @lshrult_01_12(i4 %x) {
562 ; CHECK-LABEL: @lshrult_01_12(
563 ; CHECK-NEXT:    ret i1 true
565   %s = lshr i4 %x, 1
566   %c = icmp ult i4 %s, 12
567   ret i1 %c
570 define i1 @lshrult_01_13(i4 %x) {
571 ; CHECK-LABEL: @lshrult_01_13(
572 ; CHECK-NEXT:    ret i1 true
574   %s = lshr i4 %x, 1
575   %c = icmp ult i4 %s, 13
576   ret i1 %c
579 define i1 @lshrult_01_14(i4 %x) {
580 ; CHECK-LABEL: @lshrult_01_14(
581 ; CHECK-NEXT:    ret i1 true
583   %s = lshr i4 %x, 1
584   %c = icmp ult i4 %s, 14
585   ret i1 %c
588 define i1 @lshrult_01_15(i4 %x) {
589 ; CHECK-LABEL: @lshrult_01_15(
590 ; CHECK-NEXT:    ret i1 true
592   %s = lshr i4 %x, 1
593   %c = icmp ult i4 %s, 15
594   ret i1 %c
597 define i1 @lshrult_02_00(i4 %x) {
598 ; CHECK-LABEL: @lshrult_02_00(
599 ; CHECK-NEXT:    ret i1 false
601   %s = lshr i4 %x, 2
602   %c = icmp ult i4 %s, 0
603   ret i1 %c
606 define i1 @lshrult_02_01(i4 %x) {
607 ; CHECK-LABEL: @lshrult_02_01(
608 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, 4
609 ; CHECK-NEXT:    ret i1 [[C]]
611   %s = lshr i4 %x, 2
612   %c = icmp ult i4 %s, 1
613   ret i1 %c
616 define i1 @lshrult_02_02(i4 %x) {
617 ; CHECK-LABEL: @lshrult_02_02(
618 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -1
619 ; CHECK-NEXT:    ret i1 [[C]]
621   %s = lshr i4 %x, 2
622   %c = icmp ult i4 %s, 2
623   ret i1 %c
626 define i1 @lshrult_02_03(i4 %x) {
627 ; CHECK-LABEL: @lshrult_02_03(
628 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, -4
629 ; CHECK-NEXT:    ret i1 [[C]]
631   %s = lshr i4 %x, 2
632   %c = icmp ult i4 %s, 3
633   ret i1 %c
636 define i1 @lshrult_02_04(i4 %x) {
637 ; CHECK-LABEL: @lshrult_02_04(
638 ; CHECK-NEXT:    ret i1 true
640   %s = lshr i4 %x, 2
641   %c = icmp ult i4 %s, 4
642   ret i1 %c
645 define i1 @lshrult_02_05(i4 %x) {
646 ; CHECK-LABEL: @lshrult_02_05(
647 ; CHECK-NEXT:    ret i1 true
649   %s = lshr i4 %x, 2
650   %c = icmp ult i4 %s, 5
651   ret i1 %c
654 define i1 @lshrult_02_06(i4 %x) {
655 ; CHECK-LABEL: @lshrult_02_06(
656 ; CHECK-NEXT:    ret i1 true
658   %s = lshr i4 %x, 2
659   %c = icmp ult i4 %s, 6
660   ret i1 %c
663 define i1 @lshrult_02_07(i4 %x) {
664 ; CHECK-LABEL: @lshrult_02_07(
665 ; CHECK-NEXT:    ret i1 true
667   %s = lshr i4 %x, 2
668   %c = icmp ult i4 %s, 7
669   ret i1 %c
672 define i1 @lshrult_02_08(i4 %x) {
673 ; CHECK-LABEL: @lshrult_02_08(
674 ; CHECK-NEXT:    ret i1 true
676   %s = lshr i4 %x, 2
677   %c = icmp ult i4 %s, 8
678   ret i1 %c
681 define i1 @lshrult_02_09(i4 %x) {
682 ; CHECK-LABEL: @lshrult_02_09(
683 ; CHECK-NEXT:    ret i1 true
685   %s = lshr i4 %x, 2
686   %c = icmp ult i4 %s, 9
687   ret i1 %c
690 define i1 @lshrult_02_10(i4 %x) {
691 ; CHECK-LABEL: @lshrult_02_10(
692 ; CHECK-NEXT:    ret i1 true
694   %s = lshr i4 %x, 2
695   %c = icmp ult i4 %s, 10
696   ret i1 %c
699 define i1 @lshrult_02_11(i4 %x) {
700 ; CHECK-LABEL: @lshrult_02_11(
701 ; CHECK-NEXT:    ret i1 true
703   %s = lshr i4 %x, 2
704   %c = icmp ult i4 %s, 11
705   ret i1 %c
708 define i1 @lshrult_02_12(i4 %x) {
709 ; CHECK-LABEL: @lshrult_02_12(
710 ; CHECK-NEXT:    ret i1 true
712   %s = lshr i4 %x, 2
713   %c = icmp ult i4 %s, 12
714   ret i1 %c
717 define i1 @lshrult_02_13(i4 %x) {
718 ; CHECK-LABEL: @lshrult_02_13(
719 ; CHECK-NEXT:    ret i1 true
721   %s = lshr i4 %x, 2
722   %c = icmp ult i4 %s, 13
723   ret i1 %c
726 define i1 @lshrult_02_14(i4 %x) {
727 ; CHECK-LABEL: @lshrult_02_14(
728 ; CHECK-NEXT:    ret i1 true
730   %s = lshr i4 %x, 2
731   %c = icmp ult i4 %s, 14
732   ret i1 %c
735 define i1 @lshrult_02_15(i4 %x) {
736 ; CHECK-LABEL: @lshrult_02_15(
737 ; CHECK-NEXT:    ret i1 true
739   %s = lshr i4 %x, 2
740   %c = icmp ult i4 %s, 15
741   ret i1 %c
744 define i1 @lshrult_03_00(i4 %x) {
745 ; CHECK-LABEL: @lshrult_03_00(
746 ; CHECK-NEXT:    ret i1 false
748   %s = lshr i4 %x, 3
749   %c = icmp ult i4 %s, 0
750   ret i1 %c
753 define i1 @lshrult_03_01(i4 %x) {
754 ; CHECK-LABEL: @lshrult_03_01(
755 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -1
756 ; CHECK-NEXT:    ret i1 [[C]]
758   %s = lshr i4 %x, 3
759   %c = icmp ult i4 %s, 1
760   ret i1 %c
763 define i1 @lshrult_03_02(i4 %x) {
764 ; CHECK-LABEL: @lshrult_03_02(
765 ; CHECK-NEXT:    ret i1 true
767   %s = lshr i4 %x, 3
768   %c = icmp ult i4 %s, 2
769   ret i1 %c
772 define i1 @lshrult_03_03(i4 %x) {
773 ; CHECK-LABEL: @lshrult_03_03(
774 ; CHECK-NEXT:    ret i1 true
776   %s = lshr i4 %x, 3
777   %c = icmp ult i4 %s, 3
778   ret i1 %c
781 define i1 @lshrult_03_04(i4 %x) {
782 ; CHECK-LABEL: @lshrult_03_04(
783 ; CHECK-NEXT:    ret i1 true
785   %s = lshr i4 %x, 3
786   %c = icmp ult i4 %s, 4
787   ret i1 %c
790 define i1 @lshrult_03_05(i4 %x) {
791 ; CHECK-LABEL: @lshrult_03_05(
792 ; CHECK-NEXT:    ret i1 true
794   %s = lshr i4 %x, 3
795   %c = icmp ult i4 %s, 5
796   ret i1 %c
799 define i1 @lshrult_03_06(i4 %x) {
800 ; CHECK-LABEL: @lshrult_03_06(
801 ; CHECK-NEXT:    ret i1 true
803   %s = lshr i4 %x, 3
804   %c = icmp ult i4 %s, 6
805   ret i1 %c
808 define i1 @lshrult_03_07(i4 %x) {
809 ; CHECK-LABEL: @lshrult_03_07(
810 ; CHECK-NEXT:    ret i1 true
812   %s = lshr i4 %x, 3
813   %c = icmp ult i4 %s, 7
814   ret i1 %c
817 define i1 @lshrult_03_08(i4 %x) {
818 ; CHECK-LABEL: @lshrult_03_08(
819 ; CHECK-NEXT:    ret i1 true
821   %s = lshr i4 %x, 3
822   %c = icmp ult i4 %s, 8
823   ret i1 %c
826 define i1 @lshrult_03_09(i4 %x) {
827 ; CHECK-LABEL: @lshrult_03_09(
828 ; CHECK-NEXT:    ret i1 true
830   %s = lshr i4 %x, 3
831   %c = icmp ult i4 %s, 9
832   ret i1 %c
835 define i1 @lshrult_03_10(i4 %x) {
836 ; CHECK-LABEL: @lshrult_03_10(
837 ; CHECK-NEXT:    ret i1 true
839   %s = lshr i4 %x, 3
840   %c = icmp ult i4 %s, 10
841   ret i1 %c
844 define i1 @lshrult_03_11(i4 %x) {
845 ; CHECK-LABEL: @lshrult_03_11(
846 ; CHECK-NEXT:    ret i1 true
848   %s = lshr i4 %x, 3
849   %c = icmp ult i4 %s, 11
850   ret i1 %c
853 define i1 @lshrult_03_12(i4 %x) {
854 ; CHECK-LABEL: @lshrult_03_12(
855 ; CHECK-NEXT:    ret i1 true
857   %s = lshr i4 %x, 3
858   %c = icmp ult i4 %s, 12
859   ret i1 %c
862 define i1 @lshrult_03_13(i4 %x) {
863 ; CHECK-LABEL: @lshrult_03_13(
864 ; CHECK-NEXT:    ret i1 true
866   %s = lshr i4 %x, 3
867   %c = icmp ult i4 %s, 13
868   ret i1 %c
871 define i1 @lshrult_03_14(i4 %x) {
872 ; CHECK-LABEL: @lshrult_03_14(
873 ; CHECK-NEXT:    ret i1 true
875   %s = lshr i4 %x, 3
876   %c = icmp ult i4 %s, 14
877   ret i1 %c
880 define i1 @lshrult_03_15(i4 %x) {
881 ; CHECK-LABEL: @lshrult_03_15(
882 ; CHECK-NEXT:    ret i1 true
884   %s = lshr i4 %x, 3
885   %c = icmp ult i4 %s, 15
886   ret i1 %c
889 define i1 @ashrsgt_01_00(i4 %x) {
890 ; CHECK-LABEL: @ashrsgt_01_00(
891 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, 1
892 ; CHECK-NEXT:    ret i1 [[C]]
894   %s = ashr i4 %x, 1
895   %c = icmp sgt i4 %s, 0
896   ret i1 %c
899 define i1 @ashrsgt_01_01(i4 %x) {
900 ; CHECK-LABEL: @ashrsgt_01_01(
901 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, 3
902 ; CHECK-NEXT:    ret i1 [[C]]
904   %s = ashr i4 %x, 1
905   %c = icmp sgt i4 %s, 1
906   ret i1 %c
909 define i1 @ashrsgt_01_02(i4 %x) {
910 ; CHECK-LABEL: @ashrsgt_01_02(
911 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, 5
912 ; CHECK-NEXT:    ret i1 [[C]]
914   %s = ashr i4 %x, 1
915   %c = icmp sgt i4 %s, 2
916   ret i1 %c
919 define i1 @ashrsgt_01_03(i4 %x) {
920 ; CHECK-LABEL: @ashrsgt_01_03(
921 ; CHECK-NEXT:    ret i1 false
923   %s = ashr i4 %x, 1
924   %c = icmp sgt i4 %s, 3
925   ret i1 %c
928 define i1 @ashrsgt_01_04(i4 %x) {
929 ; CHECK-LABEL: @ashrsgt_01_04(
930 ; CHECK-NEXT:    ret i1 false
932   %s = ashr i4 %x, 1
933   %c = icmp sgt i4 %s, 4
934   ret i1 %c
937 define i1 @ashrsgt_01_05(i4 %x) {
938 ; CHECK-LABEL: @ashrsgt_01_05(
939 ; CHECK-NEXT:    ret i1 false
941   %s = ashr i4 %x, 1
942   %c = icmp sgt i4 %s, 5
943   ret i1 %c
946 define i1 @ashrsgt_01_06(i4 %x) {
947 ; CHECK-LABEL: @ashrsgt_01_06(
948 ; CHECK-NEXT:    ret i1 false
950   %s = ashr i4 %x, 1
951   %c = icmp sgt i4 %s, 6
952   ret i1 %c
955 define i1 @ashrsgt_01_07(i4 %x) {
956 ; CHECK-LABEL: @ashrsgt_01_07(
957 ; CHECK-NEXT:    ret i1 false
959   %s = ashr i4 %x, 1
960   %c = icmp sgt i4 %s, 7
961   ret i1 %c
964 define i1 @ashrsgt_01_08(i4 %x) {
965 ; CHECK-LABEL: @ashrsgt_01_08(
966 ; CHECK-NEXT:    ret i1 true
968   %s = ashr i4 %x, 1
969   %c = icmp sgt i4 %s, 8
970   ret i1 %c
973 define i1 @ashrsgt_01_09(i4 %x) {
974 ; CHECK-LABEL: @ashrsgt_01_09(
975 ; CHECK-NEXT:    ret i1 true
977   %s = ashr i4 %x, 1
978   %c = icmp sgt i4 %s, 9
979   ret i1 %c
982 define i1 @ashrsgt_01_10(i4 %x) {
983 ; CHECK-LABEL: @ashrsgt_01_10(
984 ; CHECK-NEXT:    ret i1 true
986   %s = ashr i4 %x, 1
987   %c = icmp sgt i4 %s, 10
988   ret i1 %c
991 define i1 @ashrsgt_01_11(i4 %x) {
992 ; CHECK-LABEL: @ashrsgt_01_11(
993 ; CHECK-NEXT:    ret i1 true
995   %s = ashr i4 %x, 1
996   %c = icmp sgt i4 %s, 11
997   ret i1 %c
1000 define i1 @ashrsgt_01_12(i4 %x) {
1001 ; CHECK-LABEL: @ashrsgt_01_12(
1002 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -7
1003 ; CHECK-NEXT:    ret i1 [[C]]
1005   %s = ashr i4 %x, 1
1006   %c = icmp sgt i4 %s, 12
1007   ret i1 %c
1010 define i1 @ashrsgt_01_13(i4 %x) {
1011 ; CHECK-LABEL: @ashrsgt_01_13(
1012 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -5
1013 ; CHECK-NEXT:    ret i1 [[C]]
1015   %s = ashr i4 %x, 1
1016   %c = icmp sgt i4 %s, 13
1017   ret i1 %c
1020 define i1 @ashrsgt_01_14(i4 %x) {
1021 ; CHECK-LABEL: @ashrsgt_01_14(
1022 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -3
1023 ; CHECK-NEXT:    ret i1 [[C]]
1025   %s = ashr i4 %x, 1
1026   %c = icmp sgt i4 %s, 14
1027   ret i1 %c
1030 define i1 @ashrsgt_01_15(i4 %x) {
1031 ; CHECK-LABEL: @ashrsgt_01_15(
1032 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -1
1033 ; CHECK-NEXT:    ret i1 [[C]]
1035   %s = ashr i4 %x, 1
1036   %c = icmp sgt i4 %s, 15
1037   ret i1 %c
1040 define i1 @ashrsgt_02_00(i4 %x) {
1041 ; CHECK-LABEL: @ashrsgt_02_00(
1042 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, 3
1043 ; CHECK-NEXT:    ret i1 [[C]]
1045   %s = ashr i4 %x, 2
1046   %c = icmp sgt i4 %s, 0
1047   ret i1 %c
1050 define i1 @ashrsgt_02_01(i4 %x) {
1051 ; CHECK-LABEL: @ashrsgt_02_01(
1052 ; CHECK-NEXT:    ret i1 false
1054   %s = ashr i4 %x, 2
1055   %c = icmp sgt i4 %s, 1
1056   ret i1 %c
1059 define i1 @ashrsgt_02_02(i4 %x) {
1060 ; CHECK-LABEL: @ashrsgt_02_02(
1061 ; CHECK-NEXT:    ret i1 false
1063   %s = ashr i4 %x, 2
1064   %c = icmp sgt i4 %s, 2
1065   ret i1 %c
1068 define i1 @ashrsgt_02_03(i4 %x) {
1069 ; CHECK-LABEL: @ashrsgt_02_03(
1070 ; CHECK-NEXT:    ret i1 false
1072   %s = ashr i4 %x, 2
1073   %c = icmp sgt i4 %s, 3
1074   ret i1 %c
1077 define i1 @ashrsgt_02_04(i4 %x) {
1078 ; CHECK-LABEL: @ashrsgt_02_04(
1079 ; CHECK-NEXT:    ret i1 false
1081   %s = ashr i4 %x, 2
1082   %c = icmp sgt i4 %s, 4
1083   ret i1 %c
1086 define i1 @ashrsgt_02_05(i4 %x) {
1087 ; CHECK-LABEL: @ashrsgt_02_05(
1088 ; CHECK-NEXT:    ret i1 false
1090   %s = ashr i4 %x, 2
1091   %c = icmp sgt i4 %s, 5
1092   ret i1 %c
1095 define i1 @ashrsgt_02_06(i4 %x) {
1096 ; CHECK-LABEL: @ashrsgt_02_06(
1097 ; CHECK-NEXT:    ret i1 false
1099   %s = ashr i4 %x, 2
1100   %c = icmp sgt i4 %s, 6
1101   ret i1 %c
1104 define i1 @ashrsgt_02_07(i4 %x) {
1105 ; CHECK-LABEL: @ashrsgt_02_07(
1106 ; CHECK-NEXT:    ret i1 false
1108   %s = ashr i4 %x, 2
1109   %c = icmp sgt i4 %s, 7
1110   ret i1 %c
1113 define i1 @ashrsgt_02_08(i4 %x) {
1114 ; CHECK-LABEL: @ashrsgt_02_08(
1115 ; CHECK-NEXT:    ret i1 true
1117   %s = ashr i4 %x, 2
1118   %c = icmp sgt i4 %s, 8
1119   ret i1 %c
1122 define i1 @ashrsgt_02_09(i4 %x) {
1123 ; CHECK-LABEL: @ashrsgt_02_09(
1124 ; CHECK-NEXT:    ret i1 true
1126   %s = ashr i4 %x, 2
1127   %c = icmp sgt i4 %s, 9
1128   ret i1 %c
1131 define i1 @ashrsgt_02_10(i4 %x) {
1132 ; CHECK-LABEL: @ashrsgt_02_10(
1133 ; CHECK-NEXT:    ret i1 true
1135   %s = ashr i4 %x, 2
1136   %c = icmp sgt i4 %s, 10
1137   ret i1 %c
1140 define i1 @ashrsgt_02_11(i4 %x) {
1141 ; CHECK-LABEL: @ashrsgt_02_11(
1142 ; CHECK-NEXT:    ret i1 true
1144   %s = ashr i4 %x, 2
1145   %c = icmp sgt i4 %s, 11
1146   ret i1 %c
1149 define i1 @ashrsgt_02_12(i4 %x) {
1150 ; CHECK-LABEL: @ashrsgt_02_12(
1151 ; CHECK-NEXT:    ret i1 true
1153   %s = ashr i4 %x, 2
1154   %c = icmp sgt i4 %s, 12
1155   ret i1 %c
1158 define i1 @ashrsgt_02_13(i4 %x) {
1159 ; CHECK-LABEL: @ashrsgt_02_13(
1160 ; CHECK-NEXT:    ret i1 true
1162   %s = ashr i4 %x, 2
1163   %c = icmp sgt i4 %s, 13
1164   ret i1 %c
1167 define i1 @ashrsgt_02_14(i4 %x) {
1168 ; CHECK-LABEL: @ashrsgt_02_14(
1169 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -5
1170 ; CHECK-NEXT:    ret i1 [[C]]
1172   %s = ashr i4 %x, 2
1173   %c = icmp sgt i4 %s, 14
1174   ret i1 %c
1177 define i1 @ashrsgt_02_15(i4 %x) {
1178 ; CHECK-LABEL: @ashrsgt_02_15(
1179 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -1
1180 ; CHECK-NEXT:    ret i1 [[C]]
1182   %s = ashr i4 %x, 2
1183   %c = icmp sgt i4 %s, 15
1184   ret i1 %c
1187 define i1 @ashrsgt_03_00(i4 %x) {
1188 ; CHECK-LABEL: @ashrsgt_03_00(
1189 ; CHECK-NEXT:    ret i1 false
1191   %s = ashr i4 %x, 3
1192   %c = icmp sgt i4 %s, 0
1193   ret i1 %c
1196 define i1 @ashrsgt_03_01(i4 %x) {
1197 ; CHECK-LABEL: @ashrsgt_03_01(
1198 ; CHECK-NEXT:    ret i1 false
1200   %s = ashr i4 %x, 3
1201   %c = icmp sgt i4 %s, 1
1202   ret i1 %c
1205 define i1 @ashrsgt_03_02(i4 %x) {
1206 ; CHECK-LABEL: @ashrsgt_03_02(
1207 ; CHECK-NEXT:    ret i1 false
1209   %s = ashr i4 %x, 3
1210   %c = icmp sgt i4 %s, 2
1211   ret i1 %c
1214 define i1 @ashrsgt_03_03(i4 %x) {
1215 ; CHECK-LABEL: @ashrsgt_03_03(
1216 ; CHECK-NEXT:    ret i1 false
1218   %s = ashr i4 %x, 3
1219   %c = icmp sgt i4 %s, 3
1220   ret i1 %c
1223 define i1 @ashrsgt_03_04(i4 %x) {
1224 ; CHECK-LABEL: @ashrsgt_03_04(
1225 ; CHECK-NEXT:    ret i1 false
1227   %s = ashr i4 %x, 3
1228   %c = icmp sgt i4 %s, 4
1229   ret i1 %c
1232 define i1 @ashrsgt_03_05(i4 %x) {
1233 ; CHECK-LABEL: @ashrsgt_03_05(
1234 ; CHECK-NEXT:    ret i1 false
1236   %s = ashr i4 %x, 3
1237   %c = icmp sgt i4 %s, 5
1238   ret i1 %c
1241 define i1 @ashrsgt_03_06(i4 %x) {
1242 ; CHECK-LABEL: @ashrsgt_03_06(
1243 ; CHECK-NEXT:    ret i1 false
1245   %s = ashr i4 %x, 3
1246   %c = icmp sgt i4 %s, 6
1247   ret i1 %c
1250 define i1 @ashrsgt_03_07(i4 %x) {
1251 ; CHECK-LABEL: @ashrsgt_03_07(
1252 ; CHECK-NEXT:    ret i1 false
1254   %s = ashr i4 %x, 3
1255   %c = icmp sgt i4 %s, 7
1256   ret i1 %c
1259 define i1 @ashrsgt_03_08(i4 %x) {
1260 ; CHECK-LABEL: @ashrsgt_03_08(
1261 ; CHECK-NEXT:    ret i1 true
1263   %s = ashr i4 %x, 3
1264   %c = icmp sgt i4 %s, 8
1265   ret i1 %c
1268 define i1 @ashrsgt_03_09(i4 %x) {
1269 ; CHECK-LABEL: @ashrsgt_03_09(
1270 ; CHECK-NEXT:    ret i1 true
1272   %s = ashr i4 %x, 3
1273   %c = icmp sgt i4 %s, 9
1274   ret i1 %c
1277 define i1 @ashrsgt_03_10(i4 %x) {
1278 ; CHECK-LABEL: @ashrsgt_03_10(
1279 ; CHECK-NEXT:    ret i1 true
1281   %s = ashr i4 %x, 3
1282   %c = icmp sgt i4 %s, 10
1283   ret i1 %c
1286 define i1 @ashrsgt_03_11(i4 %x) {
1287 ; CHECK-LABEL: @ashrsgt_03_11(
1288 ; CHECK-NEXT:    ret i1 true
1290   %s = ashr i4 %x, 3
1291   %c = icmp sgt i4 %s, 11
1292   ret i1 %c
1295 define i1 @ashrsgt_03_12(i4 %x) {
1296 ; CHECK-LABEL: @ashrsgt_03_12(
1297 ; CHECK-NEXT:    ret i1 true
1299   %s = ashr i4 %x, 3
1300   %c = icmp sgt i4 %s, 12
1301   ret i1 %c
1304 define i1 @ashrsgt_03_13(i4 %x) {
1305 ; CHECK-LABEL: @ashrsgt_03_13(
1306 ; CHECK-NEXT:    ret i1 true
1308   %s = ashr i4 %x, 3
1309   %c = icmp sgt i4 %s, 13
1310   ret i1 %c
1313 define i1 @ashrsgt_03_14(i4 %x) {
1314 ; CHECK-LABEL: @ashrsgt_03_14(
1315 ; CHECK-NEXT:    ret i1 true
1317   %s = ashr i4 %x, 3
1318   %c = icmp sgt i4 %s, 14
1319   ret i1 %c
1322 define i1 @ashrsgt_03_15(i4 %x) {
1323 ; CHECK-LABEL: @ashrsgt_03_15(
1324 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -1
1325 ; CHECK-NEXT:    ret i1 [[C]]
1327   %s = ashr i4 %x, 3
1328   %c = icmp sgt i4 %s, 15
1329   ret i1 %c
1332 define i1 @ashrslt_01_00(i4 %x) {
1333 ; CHECK-LABEL: @ashrslt_01_00(
1334 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 0
1335 ; CHECK-NEXT:    ret i1 [[C]]
1337   %s = ashr i4 %x, 1
1338   %c = icmp slt i4 %s, 0
1339   ret i1 %c
1342 define i1 @ashrslt_01_01(i4 %x) {
1343 ; CHECK-LABEL: @ashrslt_01_01(
1344 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 2
1345 ; CHECK-NEXT:    ret i1 [[C]]
1347   %s = ashr i4 %x, 1
1348   %c = icmp slt i4 %s, 1
1349   ret i1 %c
1352 define i1 @ashrslt_01_02(i4 %x) {
1353 ; CHECK-LABEL: @ashrslt_01_02(
1354 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 4
1355 ; CHECK-NEXT:    ret i1 [[C]]
1357   %s = ashr i4 %x, 1
1358   %c = icmp slt i4 %s, 2
1359   ret i1 %c
1362 define i1 @ashrslt_01_03(i4 %x) {
1363 ; CHECK-LABEL: @ashrslt_01_03(
1364 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 6
1365 ; CHECK-NEXT:    ret i1 [[C]]
1367   %s = ashr i4 %x, 1
1368   %c = icmp slt i4 %s, 3
1369   ret i1 %c
1372 define i1 @ashrslt_01_04(i4 %x) {
1373 ; CHECK-LABEL: @ashrslt_01_04(
1374 ; CHECK-NEXT:    ret i1 true
1376   %s = ashr i4 %x, 1
1377   %c = icmp slt i4 %s, 4
1378   ret i1 %c
1381 define i1 @ashrslt_01_05(i4 %x) {
1382 ; CHECK-LABEL: @ashrslt_01_05(
1383 ; CHECK-NEXT:    ret i1 true
1385   %s = ashr i4 %x, 1
1386   %c = icmp slt i4 %s, 5
1387   ret i1 %c
1390 define i1 @ashrslt_01_06(i4 %x) {
1391 ; CHECK-LABEL: @ashrslt_01_06(
1392 ; CHECK-NEXT:    ret i1 true
1394   %s = ashr i4 %x, 1
1395   %c = icmp slt i4 %s, 6
1396   ret i1 %c
1399 define i1 @ashrslt_01_07(i4 %x) {
1400 ; CHECK-LABEL: @ashrslt_01_07(
1401 ; CHECK-NEXT:    ret i1 true
1403   %s = ashr i4 %x, 1
1404   %c = icmp slt i4 %s, 7
1405   ret i1 %c
1408 define i1 @ashrslt_01_08(i4 %x) {
1409 ; CHECK-LABEL: @ashrslt_01_08(
1410 ; CHECK-NEXT:    ret i1 false
1412   %s = ashr i4 %x, 1
1413   %c = icmp slt i4 %s, 8
1414   ret i1 %c
1417 define i1 @ashrslt_01_09(i4 %x) {
1418 ; CHECK-LABEL: @ashrslt_01_09(
1419 ; CHECK-NEXT:    ret i1 false
1421   %s = ashr i4 %x, 1
1422   %c = icmp slt i4 %s, 9
1423   ret i1 %c
1426 define i1 @ashrslt_01_10(i4 %x) {
1427 ; CHECK-LABEL: @ashrslt_01_10(
1428 ; CHECK-NEXT:    ret i1 false
1430   %s = ashr i4 %x, 1
1431   %c = icmp slt i4 %s, 10
1432   ret i1 %c
1435 define i1 @ashrslt_01_11(i4 %x) {
1436 ; CHECK-LABEL: @ashrslt_01_11(
1437 ; CHECK-NEXT:    ret i1 false
1439   %s = ashr i4 %x, 1
1440   %c = icmp slt i4 %s, 11
1441   ret i1 %c
1444 define i1 @ashrslt_01_12(i4 %x) {
1445 ; CHECK-LABEL: @ashrslt_01_12(
1446 ; CHECK-NEXT:    ret i1 false
1448   %s = ashr i4 %x, 1
1449   %c = icmp slt i4 %s, 12
1450   ret i1 %c
1453 define i1 @ashrslt_01_13(i4 %x) {
1454 ; CHECK-LABEL: @ashrslt_01_13(
1455 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, -6
1456 ; CHECK-NEXT:    ret i1 [[C]]
1458   %s = ashr i4 %x, 1
1459   %c = icmp slt i4 %s, 13
1460   ret i1 %c
1463 define i1 @ashrslt_01_14(i4 %x) {
1464 ; CHECK-LABEL: @ashrslt_01_14(
1465 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, -4
1466 ; CHECK-NEXT:    ret i1 [[C]]
1468   %s = ashr i4 %x, 1
1469   %c = icmp slt i4 %s, 14
1470   ret i1 %c
1473 define i1 @ashrslt_01_15(i4 %x) {
1474 ; CHECK-LABEL: @ashrslt_01_15(
1475 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, -2
1476 ; CHECK-NEXT:    ret i1 [[C]]
1478   %s = ashr i4 %x, 1
1479   %c = icmp slt i4 %s, 15
1480   ret i1 %c
1483 define i1 @ashrslt_02_00(i4 %x) {
1484 ; CHECK-LABEL: @ashrslt_02_00(
1485 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 0
1486 ; CHECK-NEXT:    ret i1 [[C]]
1488   %s = ashr i4 %x, 2
1489   %c = icmp slt i4 %s, 0
1490   ret i1 %c
1493 define i1 @ashrslt_02_01(i4 %x) {
1494 ; CHECK-LABEL: @ashrslt_02_01(
1495 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 4
1496 ; CHECK-NEXT:    ret i1 [[C]]
1498   %s = ashr i4 %x, 2
1499   %c = icmp slt i4 %s, 1
1500   ret i1 %c
1503 define i1 @ashrslt_02_02(i4 %x) {
1504 ; CHECK-LABEL: @ashrslt_02_02(
1505 ; CHECK-NEXT:    ret i1 true
1507   %s = ashr i4 %x, 2
1508   %c = icmp slt i4 %s, 2
1509   ret i1 %c
1512 define i1 @ashrslt_02_03(i4 %x) {
1513 ; CHECK-LABEL: @ashrslt_02_03(
1514 ; CHECK-NEXT:    ret i1 true
1516   %s = ashr i4 %x, 2
1517   %c = icmp slt i4 %s, 3
1518   ret i1 %c
1521 define i1 @ashrslt_02_04(i4 %x) {
1522 ; CHECK-LABEL: @ashrslt_02_04(
1523 ; CHECK-NEXT:    ret i1 true
1525   %s = ashr i4 %x, 2
1526   %c = icmp slt i4 %s, 4
1527   ret i1 %c
1530 define i1 @ashrslt_02_05(i4 %x) {
1531 ; CHECK-LABEL: @ashrslt_02_05(
1532 ; CHECK-NEXT:    ret i1 true
1534   %s = ashr i4 %x, 2
1535   %c = icmp slt i4 %s, 5
1536   ret i1 %c
1539 define i1 @ashrslt_02_06(i4 %x) {
1540 ; CHECK-LABEL: @ashrslt_02_06(
1541 ; CHECK-NEXT:    ret i1 true
1543   %s = ashr i4 %x, 2
1544   %c = icmp slt i4 %s, 6
1545   ret i1 %c
1548 define i1 @ashrslt_02_07(i4 %x) {
1549 ; CHECK-LABEL: @ashrslt_02_07(
1550 ; CHECK-NEXT:    ret i1 true
1552   %s = ashr i4 %x, 2
1553   %c = icmp slt i4 %s, 7
1554   ret i1 %c
1557 define i1 @ashrslt_02_08(i4 %x) {
1558 ; CHECK-LABEL: @ashrslt_02_08(
1559 ; CHECK-NEXT:    ret i1 false
1561   %s = ashr i4 %x, 2
1562   %c = icmp slt i4 %s, 8
1563   ret i1 %c
1566 define i1 @ashrslt_02_09(i4 %x) {
1567 ; CHECK-LABEL: @ashrslt_02_09(
1568 ; CHECK-NEXT:    ret i1 false
1570   %s = ashr i4 %x, 2
1571   %c = icmp slt i4 %s, 9
1572   ret i1 %c
1575 define i1 @ashrslt_02_10(i4 %x) {
1576 ; CHECK-LABEL: @ashrslt_02_10(
1577 ; CHECK-NEXT:    ret i1 false
1579   %s = ashr i4 %x, 2
1580   %c = icmp slt i4 %s, 10
1581   ret i1 %c
1584 define i1 @ashrslt_02_11(i4 %x) {
1585 ; CHECK-LABEL: @ashrslt_02_11(
1586 ; CHECK-NEXT:    ret i1 false
1588   %s = ashr i4 %x, 2
1589   %c = icmp slt i4 %s, 11
1590   ret i1 %c
1593 define i1 @ashrslt_02_12(i4 %x) {
1594 ; CHECK-LABEL: @ashrslt_02_12(
1595 ; CHECK-NEXT:    ret i1 false
1597   %s = ashr i4 %x, 2
1598   %c = icmp slt i4 %s, 12
1599   ret i1 %c
1602 define i1 @ashrslt_02_13(i4 %x) {
1603 ; CHECK-LABEL: @ashrslt_02_13(
1604 ; CHECK-NEXT:    ret i1 false
1606   %s = ashr i4 %x, 2
1607   %c = icmp slt i4 %s, 13
1608   ret i1 %c
1611 define i1 @ashrslt_02_14(i4 %x) {
1612 ; CHECK-LABEL: @ashrslt_02_14(
1613 ; CHECK-NEXT:    ret i1 false
1615   %s = ashr i4 %x, 2
1616   %c = icmp slt i4 %s, 14
1617   ret i1 %c
1620 define i1 @ashrslt_02_15(i4 %x) {
1621 ; CHECK-LABEL: @ashrslt_02_15(
1622 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, -4
1623 ; CHECK-NEXT:    ret i1 [[C]]
1625   %s = ashr i4 %x, 2
1626   %c = icmp slt i4 %s, 15
1627   ret i1 %c
1630 define i1 @ashrslt_03_00(i4 %x) {
1631 ; CHECK-LABEL: @ashrslt_03_00(
1632 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 0
1633 ; CHECK-NEXT:    ret i1 [[C]]
1635   %s = ashr i4 %x, 3
1636   %c = icmp slt i4 %s, 0
1637   ret i1 %c
1640 define i1 @ashrslt_03_01(i4 %x) {
1641 ; CHECK-LABEL: @ashrslt_03_01(
1642 ; CHECK-NEXT:    ret i1 true
1644   %s = ashr i4 %x, 3
1645   %c = icmp slt i4 %s, 1
1646   ret i1 %c
1649 define i1 @ashrslt_03_02(i4 %x) {
1650 ; CHECK-LABEL: @ashrslt_03_02(
1651 ; CHECK-NEXT:    ret i1 true
1653   %s = ashr i4 %x, 3
1654   %c = icmp slt i4 %s, 2
1655   ret i1 %c
1658 define i1 @ashrslt_03_03(i4 %x) {
1659 ; CHECK-LABEL: @ashrslt_03_03(
1660 ; CHECK-NEXT:    ret i1 true
1662   %s = ashr i4 %x, 3
1663   %c = icmp slt i4 %s, 3
1664   ret i1 %c
1667 define i1 @ashrslt_03_04(i4 %x) {
1668 ; CHECK-LABEL: @ashrslt_03_04(
1669 ; CHECK-NEXT:    ret i1 true
1671   %s = ashr i4 %x, 3
1672   %c = icmp slt i4 %s, 4
1673   ret i1 %c
1676 define i1 @ashrslt_03_05(i4 %x) {
1677 ; CHECK-LABEL: @ashrslt_03_05(
1678 ; CHECK-NEXT:    ret i1 true
1680   %s = ashr i4 %x, 3
1681   %c = icmp slt i4 %s, 5
1682   ret i1 %c
1685 define i1 @ashrslt_03_06(i4 %x) {
1686 ; CHECK-LABEL: @ashrslt_03_06(
1687 ; CHECK-NEXT:    ret i1 true
1689   %s = ashr i4 %x, 3
1690   %c = icmp slt i4 %s, 6
1691   ret i1 %c
1694 define i1 @ashrslt_03_07(i4 %x) {
1695 ; CHECK-LABEL: @ashrslt_03_07(
1696 ; CHECK-NEXT:    ret i1 true
1698   %s = ashr i4 %x, 3
1699   %c = icmp slt i4 %s, 7
1700   ret i1 %c
1703 define i1 @ashrslt_03_08(i4 %x) {
1704 ; CHECK-LABEL: @ashrslt_03_08(
1705 ; CHECK-NEXT:    ret i1 false
1707   %s = ashr i4 %x, 3
1708   %c = icmp slt i4 %s, 8
1709   ret i1 %c
1712 define i1 @ashrslt_03_09(i4 %x) {
1713 ; CHECK-LABEL: @ashrslt_03_09(
1714 ; CHECK-NEXT:    ret i1 false
1716   %s = ashr i4 %x, 3
1717   %c = icmp slt i4 %s, 9
1718   ret i1 %c
1721 define i1 @ashrslt_03_10(i4 %x) {
1722 ; CHECK-LABEL: @ashrslt_03_10(
1723 ; CHECK-NEXT:    ret i1 false
1725   %s = ashr i4 %x, 3
1726   %c = icmp slt i4 %s, 10
1727   ret i1 %c
1730 define i1 @ashrslt_03_11(i4 %x) {
1731 ; CHECK-LABEL: @ashrslt_03_11(
1732 ; CHECK-NEXT:    ret i1 false
1734   %s = ashr i4 %x, 3
1735   %c = icmp slt i4 %s, 11
1736   ret i1 %c
1739 define i1 @ashrslt_03_12(i4 %x) {
1740 ; CHECK-LABEL: @ashrslt_03_12(
1741 ; CHECK-NEXT:    ret i1 false
1743   %s = ashr i4 %x, 3
1744   %c = icmp slt i4 %s, 12
1745   ret i1 %c
1748 define i1 @ashrslt_03_13(i4 %x) {
1749 ; CHECK-LABEL: @ashrslt_03_13(
1750 ; CHECK-NEXT:    ret i1 false
1752   %s = ashr i4 %x, 3
1753   %c = icmp slt i4 %s, 13
1754   ret i1 %c
1757 define i1 @ashrslt_03_14(i4 %x) {
1758 ; CHECK-LABEL: @ashrslt_03_14(
1759 ; CHECK-NEXT:    ret i1 false
1761   %s = ashr i4 %x, 3
1762   %c = icmp slt i4 %s, 14
1763   ret i1 %c
1766 define i1 @ashrslt_03_15(i4 %x) {
1767 ; CHECK-LABEL: @ashrslt_03_15(
1768 ; CHECK-NEXT:    ret i1 false
1770   %s = ashr i4 %x, 3
1771   %c = icmp slt i4 %s, 15
1772   ret i1 %c
1775 define i1 @lshrugt_01_00_exact(i4 %x) {
1776 ; CHECK-LABEL: @lshrugt_01_00_exact(
1777 ; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 %x, 0
1778 ; CHECK-NEXT:    ret i1 [[C]]
1780   %s = lshr exact i4 %x, 1
1781   %c = icmp ugt i4 %s, 0
1782   ret i1 %c
1785 define i1 @lshrugt_01_01_exact(i4 %x) {
1786 ; CHECK-LABEL: @lshrugt_01_01_exact(
1787 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, 2
1788 ; CHECK-NEXT:    ret i1 [[C]]
1790   %s = lshr exact i4 %x, 1
1791   %c = icmp ugt i4 %s, 1
1792   ret i1 %c
1795 define i1 @lshrugt_01_02_exact(i4 %x) {
1796 ; CHECK-LABEL: @lshrugt_01_02_exact(
1797 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, 4
1798 ; CHECK-NEXT:    ret i1 [[C]]
1800   %s = lshr exact i4 %x, 1
1801   %c = icmp ugt i4 %s, 2
1802   ret i1 %c
1805 define i1 @lshrugt_01_03_exact(i4 %x) {
1806 ; CHECK-LABEL: @lshrugt_01_03_exact(
1807 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, 6
1808 ; CHECK-NEXT:    ret i1 [[C]]
1810   %s = lshr exact i4 %x, 1
1811   %c = icmp ugt i4 %s, 3
1812   ret i1 %c
1815 define i1 @lshrugt_01_04_exact(i4 %x) {
1816 ; CHECK-LABEL: @lshrugt_01_04_exact(
1817 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, -8
1818 ; CHECK-NEXT:    ret i1 [[C]]
1820   %s = lshr exact i4 %x, 1
1821   %c = icmp ugt i4 %s, 4
1822   ret i1 %c
1825 define i1 @lshrugt_01_05_exact(i4 %x) {
1826 ; CHECK-LABEL: @lshrugt_01_05_exact(
1827 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, -6
1828 ; CHECK-NEXT:    ret i1 [[C]]
1830   %s = lshr exact i4 %x, 1
1831   %c = icmp ugt i4 %s, 5
1832   ret i1 %c
1835 define i1 @lshrugt_01_06_exact(i4 %x) {
1836 ; CHECK-LABEL: @lshrugt_01_06_exact(
1837 ; CHECK-NEXT:    [[C:%.*]] = icmp eq i4 %x, -2
1838 ; CHECK-NEXT:    ret i1 [[C]]
1840   %s = lshr exact i4 %x, 1
1841   %c = icmp ugt i4 %s, 6
1842   ret i1 %c
1845 define i1 @lshrugt_01_07_exact(i4 %x) {
1846 ; CHECK-LABEL: @lshrugt_01_07_exact(
1847 ; CHECK-NEXT:    ret i1 false
1849   %s = lshr exact i4 %x, 1
1850   %c = icmp ugt i4 %s, 7
1851   ret i1 %c
1854 define i1 @lshrugt_01_08_exact(i4 %x) {
1855 ; CHECK-LABEL: @lshrugt_01_08_exact(
1856 ; CHECK-NEXT:    ret i1 false
1858   %s = lshr exact i4 %x, 1
1859   %c = icmp ugt i4 %s, 8
1860   ret i1 %c
1863 define i1 @lshrugt_01_09_exact(i4 %x) {
1864 ; CHECK-LABEL: @lshrugt_01_09_exact(
1865 ; CHECK-NEXT:    ret i1 false
1867   %s = lshr exact i4 %x, 1
1868   %c = icmp ugt i4 %s, 9
1869   ret i1 %c
1872 define i1 @lshrugt_01_10_exact(i4 %x) {
1873 ; CHECK-LABEL: @lshrugt_01_10_exact(
1874 ; CHECK-NEXT:    ret i1 false
1876   %s = lshr exact i4 %x, 1
1877   %c = icmp ugt i4 %s, 10
1878   ret i1 %c
1881 define i1 @lshrugt_01_11_exact(i4 %x) {
1882 ; CHECK-LABEL: @lshrugt_01_11_exact(
1883 ; CHECK-NEXT:    ret i1 false
1885   %s = lshr exact i4 %x, 1
1886   %c = icmp ugt i4 %s, 11
1887   ret i1 %c
1890 define i1 @lshrugt_01_12_exact(i4 %x) {
1891 ; CHECK-LABEL: @lshrugt_01_12_exact(
1892 ; CHECK-NEXT:    ret i1 false
1894   %s = lshr exact i4 %x, 1
1895   %c = icmp ugt i4 %s, 12
1896   ret i1 %c
1899 define i1 @lshrugt_01_13_exact(i4 %x) {
1900 ; CHECK-LABEL: @lshrugt_01_13_exact(
1901 ; CHECK-NEXT:    ret i1 false
1903   %s = lshr exact i4 %x, 1
1904   %c = icmp ugt i4 %s, 13
1905   ret i1 %c
1908 define i1 @lshrugt_01_14_exact(i4 %x) {
1909 ; CHECK-LABEL: @lshrugt_01_14_exact(
1910 ; CHECK-NEXT:    ret i1 false
1912   %s = lshr exact i4 %x, 1
1913   %c = icmp ugt i4 %s, 14
1914   ret i1 %c
1917 define i1 @lshrugt_01_15_exact(i4 %x) {
1918 ; CHECK-LABEL: @lshrugt_01_15_exact(
1919 ; CHECK-NEXT:    ret i1 false
1921   %s = lshr exact i4 %x, 1
1922   %c = icmp ugt i4 %s, 15
1923   ret i1 %c
1926 define i1 @lshrugt_02_00_exact(i4 %x) {
1927 ; CHECK-LABEL: @lshrugt_02_00_exact(
1928 ; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 %x, 0
1929 ; CHECK-NEXT:    ret i1 [[C]]
1931   %s = lshr exact i4 %x, 2
1932   %c = icmp ugt i4 %s, 0
1933   ret i1 %c
1936 define i1 @lshrugt_02_01_exact(i4 %x) {
1937 ; CHECK-LABEL: @lshrugt_02_01_exact(
1938 ; CHECK-NEXT:    [[C:%.*]] = icmp ugt i4 %x, 4
1939 ; CHECK-NEXT:    ret i1 [[C]]
1941   %s = lshr exact i4 %x, 2
1942   %c = icmp ugt i4 %s, 1
1943   ret i1 %c
1946 define i1 @lshrugt_02_02_exact(i4 %x) {
1947 ; CHECK-LABEL: @lshrugt_02_02_exact(
1948 ; CHECK-NEXT:    [[C:%.*]] = icmp eq i4 %x, -4
1949 ; CHECK-NEXT:    ret i1 [[C]]
1951   %s = lshr exact i4 %x, 2
1952   %c = icmp ugt i4 %s, 2
1953   ret i1 %c
1956 define i1 @lshrugt_02_03_exact(i4 %x) {
1957 ; CHECK-LABEL: @lshrugt_02_03_exact(
1958 ; CHECK-NEXT:    ret i1 false
1960   %s = lshr exact i4 %x, 2
1961   %c = icmp ugt i4 %s, 3
1962   ret i1 %c
1965 define i1 @lshrugt_02_04_exact(i4 %x) {
1966 ; CHECK-LABEL: @lshrugt_02_04_exact(
1967 ; CHECK-NEXT:    ret i1 false
1969   %s = lshr exact i4 %x, 2
1970   %c = icmp ugt i4 %s, 4
1971   ret i1 %c
1974 define i1 @lshrugt_02_05_exact(i4 %x) {
1975 ; CHECK-LABEL: @lshrugt_02_05_exact(
1976 ; CHECK-NEXT:    ret i1 false
1978   %s = lshr exact i4 %x, 2
1979   %c = icmp ugt i4 %s, 5
1980   ret i1 %c
1983 define i1 @lshrugt_02_06_exact(i4 %x) {
1984 ; CHECK-LABEL: @lshrugt_02_06_exact(
1985 ; CHECK-NEXT:    ret i1 false
1987   %s = lshr exact i4 %x, 2
1988   %c = icmp ugt i4 %s, 6
1989   ret i1 %c
1992 define i1 @lshrugt_02_07_exact(i4 %x) {
1993 ; CHECK-LABEL: @lshrugt_02_07_exact(
1994 ; CHECK-NEXT:    ret i1 false
1996   %s = lshr exact i4 %x, 2
1997   %c = icmp ugt i4 %s, 7
1998   ret i1 %c
2001 define i1 @lshrugt_02_08_exact(i4 %x) {
2002 ; CHECK-LABEL: @lshrugt_02_08_exact(
2003 ; CHECK-NEXT:    ret i1 false
2005   %s = lshr exact i4 %x, 2
2006   %c = icmp ugt i4 %s, 8
2007   ret i1 %c
2010 define i1 @lshrugt_02_09_exact(i4 %x) {
2011 ; CHECK-LABEL: @lshrugt_02_09_exact(
2012 ; CHECK-NEXT:    ret i1 false
2014   %s = lshr exact i4 %x, 2
2015   %c = icmp ugt i4 %s, 9
2016   ret i1 %c
2019 define i1 @lshrugt_02_10_exact(i4 %x) {
2020 ; CHECK-LABEL: @lshrugt_02_10_exact(
2021 ; CHECK-NEXT:    ret i1 false
2023   %s = lshr exact i4 %x, 2
2024   %c = icmp ugt i4 %s, 10
2025   ret i1 %c
2028 define i1 @lshrugt_02_11_exact(i4 %x) {
2029 ; CHECK-LABEL: @lshrugt_02_11_exact(
2030 ; CHECK-NEXT:    ret i1 false
2032   %s = lshr exact i4 %x, 2
2033   %c = icmp ugt i4 %s, 11
2034   ret i1 %c
2037 define i1 @lshrugt_02_12_exact(i4 %x) {
2038 ; CHECK-LABEL: @lshrugt_02_12_exact(
2039 ; CHECK-NEXT:    ret i1 false
2041   %s = lshr exact i4 %x, 2
2042   %c = icmp ugt i4 %s, 12
2043   ret i1 %c
2046 define i1 @lshrugt_02_13_exact(i4 %x) {
2047 ; CHECK-LABEL: @lshrugt_02_13_exact(
2048 ; CHECK-NEXT:    ret i1 false
2050   %s = lshr exact i4 %x, 2
2051   %c = icmp ugt i4 %s, 13
2052   ret i1 %c
2055 define i1 @lshrugt_02_14_exact(i4 %x) {
2056 ; CHECK-LABEL: @lshrugt_02_14_exact(
2057 ; CHECK-NEXT:    ret i1 false
2059   %s = lshr exact i4 %x, 2
2060   %c = icmp ugt i4 %s, 14
2061   ret i1 %c
2064 define i1 @lshrugt_02_15_exact(i4 %x) {
2065 ; CHECK-LABEL: @lshrugt_02_15_exact(
2066 ; CHECK-NEXT:    ret i1 false
2068   %s = lshr exact i4 %x, 2
2069   %c = icmp ugt i4 %s, 15
2070   ret i1 %c
2073 define i1 @lshrugt_03_00_exact(i4 %x) {
2074 ; CHECK-LABEL: @lshrugt_03_00_exact(
2075 ; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 %x, 0
2076 ; CHECK-NEXT:    ret i1 [[C]]
2078   %s = lshr exact i4 %x, 3
2079   %c = icmp ugt i4 %s, 0
2080   ret i1 %c
2083 define i1 @lshrugt_03_01_exact(i4 %x) {
2084 ; CHECK-LABEL: @lshrugt_03_01_exact(
2085 ; CHECK-NEXT:    ret i1 false
2087   %s = lshr exact i4 %x, 3
2088   %c = icmp ugt i4 %s, 1
2089   ret i1 %c
2092 define i1 @lshrugt_03_02_exact(i4 %x) {
2093 ; CHECK-LABEL: @lshrugt_03_02_exact(
2094 ; CHECK-NEXT:    ret i1 false
2096   %s = lshr exact i4 %x, 3
2097   %c = icmp ugt i4 %s, 2
2098   ret i1 %c
2101 define i1 @lshrugt_03_03_exact(i4 %x) {
2102 ; CHECK-LABEL: @lshrugt_03_03_exact(
2103 ; CHECK-NEXT:    ret i1 false
2105   %s = lshr exact i4 %x, 3
2106   %c = icmp ugt i4 %s, 3
2107   ret i1 %c
2110 define i1 @lshrugt_03_04_exact(i4 %x) {
2111 ; CHECK-LABEL: @lshrugt_03_04_exact(
2112 ; CHECK-NEXT:    ret i1 false
2114   %s = lshr exact i4 %x, 3
2115   %c = icmp ugt i4 %s, 4
2116   ret i1 %c
2119 define i1 @lshrugt_03_05_exact(i4 %x) {
2120 ; CHECK-LABEL: @lshrugt_03_05_exact(
2121 ; CHECK-NEXT:    ret i1 false
2123   %s = lshr exact i4 %x, 3
2124   %c = icmp ugt i4 %s, 5
2125   ret i1 %c
2128 define i1 @lshrugt_03_06_exact(i4 %x) {
2129 ; CHECK-LABEL: @lshrugt_03_06_exact(
2130 ; CHECK-NEXT:    ret i1 false
2132   %s = lshr exact i4 %x, 3
2133   %c = icmp ugt i4 %s, 6
2134   ret i1 %c
2137 define i1 @lshrugt_03_07_exact(i4 %x) {
2138 ; CHECK-LABEL: @lshrugt_03_07_exact(
2139 ; CHECK-NEXT:    ret i1 false
2141   %s = lshr exact i4 %x, 3
2142   %c = icmp ugt i4 %s, 7
2143   ret i1 %c
2146 define i1 @lshrugt_03_08_exact(i4 %x) {
2147 ; CHECK-LABEL: @lshrugt_03_08_exact(
2148 ; CHECK-NEXT:    ret i1 false
2150   %s = lshr exact i4 %x, 3
2151   %c = icmp ugt i4 %s, 8
2152   ret i1 %c
2155 define i1 @lshrugt_03_09_exact(i4 %x) {
2156 ; CHECK-LABEL: @lshrugt_03_09_exact(
2157 ; CHECK-NEXT:    ret i1 false
2159   %s = lshr exact i4 %x, 3
2160   %c = icmp ugt i4 %s, 9
2161   ret i1 %c
2164 define i1 @lshrugt_03_10_exact(i4 %x) {
2165 ; CHECK-LABEL: @lshrugt_03_10_exact(
2166 ; CHECK-NEXT:    ret i1 false
2168   %s = lshr exact i4 %x, 3
2169   %c = icmp ugt i4 %s, 10
2170   ret i1 %c
2173 define i1 @lshrugt_03_11_exact(i4 %x) {
2174 ; CHECK-LABEL: @lshrugt_03_11_exact(
2175 ; CHECK-NEXT:    ret i1 false
2177   %s = lshr exact i4 %x, 3
2178   %c = icmp ugt i4 %s, 11
2179   ret i1 %c
2182 define i1 @lshrugt_03_12_exact(i4 %x) {
2183 ; CHECK-LABEL: @lshrugt_03_12_exact(
2184 ; CHECK-NEXT:    ret i1 false
2186   %s = lshr exact i4 %x, 3
2187   %c = icmp ugt i4 %s, 12
2188   ret i1 %c
2191 define i1 @lshrugt_03_13_exact(i4 %x) {
2192 ; CHECK-LABEL: @lshrugt_03_13_exact(
2193 ; CHECK-NEXT:    ret i1 false
2195   %s = lshr exact i4 %x, 3
2196   %c = icmp ugt i4 %s, 13
2197   ret i1 %c
2200 define i1 @lshrugt_03_14_exact(i4 %x) {
2201 ; CHECK-LABEL: @lshrugt_03_14_exact(
2202 ; CHECK-NEXT:    ret i1 false
2204   %s = lshr exact i4 %x, 3
2205   %c = icmp ugt i4 %s, 14
2206   ret i1 %c
2209 define i1 @lshrugt_03_15_exact(i4 %x) {
2210 ; CHECK-LABEL: @lshrugt_03_15_exact(
2211 ; CHECK-NEXT:    ret i1 false
2213   %s = lshr exact i4 %x, 3
2214   %c = icmp ugt i4 %s, 15
2215   ret i1 %c
2218 define i1 @lshrult_01_00_exact(i4 %x) {
2219 ; CHECK-LABEL: @lshrult_01_00_exact(
2220 ; CHECK-NEXT:    ret i1 false
2222   %s = lshr exact i4 %x, 1
2223   %c = icmp ult i4 %s, 0
2224   ret i1 %c
2227 define i1 @lshrult_01_01_exact(i4 %x) {
2228 ; CHECK-LABEL: @lshrult_01_01_exact(
2229 ; CHECK-NEXT:    [[C:%.*]] = icmp eq i4 %x, 0
2230 ; CHECK-NEXT:    ret i1 [[C]]
2232   %s = lshr exact i4 %x, 1
2233   %c = icmp ult i4 %s, 1
2234   ret i1 %c
2237 define i1 @lshrult_01_02_exact(i4 %x) {
2238 ; CHECK-LABEL: @lshrult_01_02_exact(
2239 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, 4
2240 ; CHECK-NEXT:    ret i1 [[C]]
2242   %s = lshr exact i4 %x, 1
2243   %c = icmp ult i4 %s, 2
2244   ret i1 %c
2247 define i1 @lshrult_01_03_exact(i4 %x) {
2248 ; CHECK-LABEL: @lshrult_01_03_exact(
2249 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, 6
2250 ; CHECK-NEXT:    ret i1 [[C]]
2252   %s = lshr exact i4 %x, 1
2253   %c = icmp ult i4 %s, 3
2254   ret i1 %c
2257 define i1 @lshrult_01_04_exact(i4 %x) {
2258 ; CHECK-LABEL: @lshrult_01_04_exact(
2259 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -1
2260 ; CHECK-NEXT:    ret i1 [[C]]
2262   %s = lshr exact i4 %x, 1
2263   %c = icmp ult i4 %s, 4
2264   ret i1 %c
2267 define i1 @lshrult_01_05_exact(i4 %x) {
2268 ; CHECK-LABEL: @lshrult_01_05_exact(
2269 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, -6
2270 ; CHECK-NEXT:    ret i1 [[C]]
2272   %s = lshr exact i4 %x, 1
2273   %c = icmp ult i4 %s, 5
2274   ret i1 %c
2277 define i1 @lshrult_01_06_exact(i4 %x) {
2278 ; CHECK-LABEL: @lshrult_01_06_exact(
2279 ; CHECK-NEXT:    [[C:%.*]] = icmp ult i4 %x, -4
2280 ; CHECK-NEXT:    ret i1 [[C]]
2282   %s = lshr exact i4 %x, 1
2283   %c = icmp ult i4 %s, 6
2284   ret i1 %c
2287 define i1 @lshrult_01_07_exact(i4 %x) {
2288 ; CHECK-LABEL: @lshrult_01_07_exact(
2289 ; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 %x, -2
2290 ; CHECK-NEXT:    ret i1 [[C]]
2292   %s = lshr exact i4 %x, 1
2293   %c = icmp ult i4 %s, 7
2294   ret i1 %c
2297 define i1 @lshrult_01_08_exact(i4 %x) {
2298 ; CHECK-LABEL: @lshrult_01_08_exact(
2299 ; CHECK-NEXT:    ret i1 true
2301   %s = lshr exact i4 %x, 1
2302   %c = icmp ult i4 %s, 8
2303   ret i1 %c
2306 define i1 @lshrult_01_09_exact(i4 %x) {
2307 ; CHECK-LABEL: @lshrult_01_09_exact(
2308 ; CHECK-NEXT:    ret i1 true
2310   %s = lshr exact i4 %x, 1
2311   %c = icmp ult i4 %s, 9
2312   ret i1 %c
2315 define i1 @lshrult_01_10_exact(i4 %x) {
2316 ; CHECK-LABEL: @lshrult_01_10_exact(
2317 ; CHECK-NEXT:    ret i1 true
2319   %s = lshr exact i4 %x, 1
2320   %c = icmp ult i4 %s, 10
2321   ret i1 %c
2324 define i1 @lshrult_01_11_exact(i4 %x) {
2325 ; CHECK-LABEL: @lshrult_01_11_exact(
2326 ; CHECK-NEXT:    ret i1 true
2328   %s = lshr exact i4 %x, 1
2329   %c = icmp ult i4 %s, 11
2330   ret i1 %c
2333 define i1 @lshrult_01_12_exact(i4 %x) {
2334 ; CHECK-LABEL: @lshrult_01_12_exact(
2335 ; CHECK-NEXT:    ret i1 true
2337   %s = lshr exact i4 %x, 1
2338   %c = icmp ult i4 %s, 12
2339   ret i1 %c
2342 define i1 @lshrult_01_13_exact(i4 %x) {
2343 ; CHECK-LABEL: @lshrult_01_13_exact(
2344 ; CHECK-NEXT:    ret i1 true
2346   %s = lshr exact i4 %x, 1
2347   %c = icmp ult i4 %s, 13
2348   ret i1 %c
2351 define i1 @lshrult_01_14_exact(i4 %x) {
2352 ; CHECK-LABEL: @lshrult_01_14_exact(
2353 ; CHECK-NEXT:    ret i1 true
2355   %s = lshr exact i4 %x, 1
2356   %c = icmp ult i4 %s, 14
2357   ret i1 %c
2360 define i1 @lshrult_01_15_exact(i4 %x) {
2361 ; CHECK-LABEL: @lshrult_01_15_exact(
2362 ; CHECK-NEXT:    ret i1 true
2364   %s = lshr exact i4 %x, 1
2365   %c = icmp ult i4 %s, 15
2366   ret i1 %c
2369 define i1 @lshrult_02_00_exact(i4 %x) {
2370 ; CHECK-LABEL: @lshrult_02_00_exact(
2371 ; CHECK-NEXT:    ret i1 false
2373   %s = lshr exact i4 %x, 2
2374   %c = icmp ult i4 %s, 0
2375   ret i1 %c
2378 define i1 @lshrult_02_01_exact(i4 %x) {
2379 ; CHECK-LABEL: @lshrult_02_01_exact(
2380 ; CHECK-NEXT:    [[C:%.*]] = icmp eq i4 %x, 0
2381 ; CHECK-NEXT:    ret i1 [[C]]
2383   %s = lshr exact i4 %x, 2
2384   %c = icmp ult i4 %s, 1
2385   ret i1 %c
2388 define i1 @lshrult_02_02_exact(i4 %x) {
2389 ; CHECK-LABEL: @lshrult_02_02_exact(
2390 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -1
2391 ; CHECK-NEXT:    ret i1 [[C]]
2393   %s = lshr exact i4 %x, 2
2394   %c = icmp ult i4 %s, 2
2395   ret i1 %c
2398 define i1 @lshrult_02_03_exact(i4 %x) {
2399 ; CHECK-LABEL: @lshrult_02_03_exact(
2400 ; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 %x, -4
2401 ; CHECK-NEXT:    ret i1 [[C]]
2403   %s = lshr exact i4 %x, 2
2404   %c = icmp ult i4 %s, 3
2405   ret i1 %c
2408 define i1 @lshrult_02_04_exact(i4 %x) {
2409 ; CHECK-LABEL: @lshrult_02_04_exact(
2410 ; CHECK-NEXT:    ret i1 true
2412   %s = lshr exact i4 %x, 2
2413   %c = icmp ult i4 %s, 4
2414   ret i1 %c
2417 define i1 @lshrult_02_05_exact(i4 %x) {
2418 ; CHECK-LABEL: @lshrult_02_05_exact(
2419 ; CHECK-NEXT:    ret i1 true
2421   %s = lshr exact i4 %x, 2
2422   %c = icmp ult i4 %s, 5
2423   ret i1 %c
2426 define i1 @lshrult_02_06_exact(i4 %x) {
2427 ; CHECK-LABEL: @lshrult_02_06_exact(
2428 ; CHECK-NEXT:    ret i1 true
2430   %s = lshr exact i4 %x, 2
2431   %c = icmp ult i4 %s, 6
2432   ret i1 %c
2435 define i1 @lshrult_02_07_exact(i4 %x) {
2436 ; CHECK-LABEL: @lshrult_02_07_exact(
2437 ; CHECK-NEXT:    ret i1 true
2439   %s = lshr exact i4 %x, 2
2440   %c = icmp ult i4 %s, 7
2441   ret i1 %c
2444 define i1 @lshrult_02_08_exact(i4 %x) {
2445 ; CHECK-LABEL: @lshrult_02_08_exact(
2446 ; CHECK-NEXT:    ret i1 true
2448   %s = lshr exact i4 %x, 2
2449   %c = icmp ult i4 %s, 8
2450   ret i1 %c
2453 define i1 @lshrult_02_09_exact(i4 %x) {
2454 ; CHECK-LABEL: @lshrult_02_09_exact(
2455 ; CHECK-NEXT:    ret i1 true
2457   %s = lshr exact i4 %x, 2
2458   %c = icmp ult i4 %s, 9
2459   ret i1 %c
2462 define i1 @lshrult_02_10_exact(i4 %x) {
2463 ; CHECK-LABEL: @lshrult_02_10_exact(
2464 ; CHECK-NEXT:    ret i1 true
2466   %s = lshr exact i4 %x, 2
2467   %c = icmp ult i4 %s, 10
2468   ret i1 %c
2471 define i1 @lshrult_02_11_exact(i4 %x) {
2472 ; CHECK-LABEL: @lshrult_02_11_exact(
2473 ; CHECK-NEXT:    ret i1 true
2475   %s = lshr exact i4 %x, 2
2476   %c = icmp ult i4 %s, 11
2477   ret i1 %c
2480 define i1 @lshrult_02_12_exact(i4 %x) {
2481 ; CHECK-LABEL: @lshrult_02_12_exact(
2482 ; CHECK-NEXT:    ret i1 true
2484   %s = lshr exact i4 %x, 2
2485   %c = icmp ult i4 %s, 12
2486   ret i1 %c
2489 define i1 @lshrult_02_13_exact(i4 %x) {
2490 ; CHECK-LABEL: @lshrult_02_13_exact(
2491 ; CHECK-NEXT:    ret i1 true
2493   %s = lshr exact i4 %x, 2
2494   %c = icmp ult i4 %s, 13
2495   ret i1 %c
2498 define i1 @lshrult_02_14_exact(i4 %x) {
2499 ; CHECK-LABEL: @lshrult_02_14_exact(
2500 ; CHECK-NEXT:    ret i1 true
2502   %s = lshr exact i4 %x, 2
2503   %c = icmp ult i4 %s, 14
2504   ret i1 %c
2507 define i1 @lshrult_02_15_exact(i4 %x) {
2508 ; CHECK-LABEL: @lshrult_02_15_exact(
2509 ; CHECK-NEXT:    ret i1 true
2511   %s = lshr exact i4 %x, 2
2512   %c = icmp ult i4 %s, 15
2513   ret i1 %c
2516 define i1 @lshrult_03_00_exact(i4 %x) {
2517 ; CHECK-LABEL: @lshrult_03_00_exact(
2518 ; CHECK-NEXT:    ret i1 false
2520   %s = lshr exact i4 %x, 3
2521   %c = icmp ult i4 %s, 0
2522   ret i1 %c
2525 define i1 @lshrult_03_01_exact(i4 %x) {
2526 ; CHECK-LABEL: @lshrult_03_01_exact(
2527 ; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 %x, -8
2528 ; CHECK-NEXT:    ret i1 [[C]]
2530   %s = lshr exact i4 %x, 3
2531   %c = icmp ult i4 %s, 1
2532   ret i1 %c
2535 define i1 @lshrult_03_02_exact(i4 %x) {
2536 ; CHECK-LABEL: @lshrult_03_02_exact(
2537 ; CHECK-NEXT:    ret i1 true
2539   %s = lshr exact i4 %x, 3
2540   %c = icmp ult i4 %s, 2
2541   ret i1 %c
2544 define i1 @lshrult_03_03_exact(i4 %x) {
2545 ; CHECK-LABEL: @lshrult_03_03_exact(
2546 ; CHECK-NEXT:    ret i1 true
2548   %s = lshr exact i4 %x, 3
2549   %c = icmp ult i4 %s, 3
2550   ret i1 %c
2553 define i1 @lshrult_03_04_exact(i4 %x) {
2554 ; CHECK-LABEL: @lshrult_03_04_exact(
2555 ; CHECK-NEXT:    ret i1 true
2557   %s = lshr exact i4 %x, 3
2558   %c = icmp ult i4 %s, 4
2559   ret i1 %c
2562 define i1 @lshrult_03_05_exact(i4 %x) {
2563 ; CHECK-LABEL: @lshrult_03_05_exact(
2564 ; CHECK-NEXT:    ret i1 true
2566   %s = lshr exact i4 %x, 3
2567   %c = icmp ult i4 %s, 5
2568   ret i1 %c
2571 define i1 @lshrult_03_06_exact(i4 %x) {
2572 ; CHECK-LABEL: @lshrult_03_06_exact(
2573 ; CHECK-NEXT:    ret i1 true
2575   %s = lshr exact i4 %x, 3
2576   %c = icmp ult i4 %s, 6
2577   ret i1 %c
2580 define i1 @lshrult_03_07_exact(i4 %x) {
2581 ; CHECK-LABEL: @lshrult_03_07_exact(
2582 ; CHECK-NEXT:    ret i1 true
2584   %s = lshr exact i4 %x, 3
2585   %c = icmp ult i4 %s, 7
2586   ret i1 %c
2589 define i1 @lshrult_03_08_exact(i4 %x) {
2590 ; CHECK-LABEL: @lshrult_03_08_exact(
2591 ; CHECK-NEXT:    ret i1 true
2593   %s = lshr exact i4 %x, 3
2594   %c = icmp ult i4 %s, 8
2595   ret i1 %c
2598 define i1 @lshrult_03_09_exact(i4 %x) {
2599 ; CHECK-LABEL: @lshrult_03_09_exact(
2600 ; CHECK-NEXT:    ret i1 true
2602   %s = lshr exact i4 %x, 3
2603   %c = icmp ult i4 %s, 9
2604   ret i1 %c
2607 define i1 @lshrult_03_10_exact(i4 %x) {
2608 ; CHECK-LABEL: @lshrult_03_10_exact(
2609 ; CHECK-NEXT:    ret i1 true
2611   %s = lshr exact i4 %x, 3
2612   %c = icmp ult i4 %s, 10
2613   ret i1 %c
2616 define i1 @lshrult_03_11_exact(i4 %x) {
2617 ; CHECK-LABEL: @lshrult_03_11_exact(
2618 ; CHECK-NEXT:    ret i1 true
2620   %s = lshr exact i4 %x, 3
2621   %c = icmp ult i4 %s, 11
2622   ret i1 %c
2625 define i1 @lshrult_03_12_exact(i4 %x) {
2626 ; CHECK-LABEL: @lshrult_03_12_exact(
2627 ; CHECK-NEXT:    ret i1 true
2629   %s = lshr exact i4 %x, 3
2630   %c = icmp ult i4 %s, 12
2631   ret i1 %c
2634 define i1 @lshrult_03_13_exact(i4 %x) {
2635 ; CHECK-LABEL: @lshrult_03_13_exact(
2636 ; CHECK-NEXT:    ret i1 true
2638   %s = lshr exact i4 %x, 3
2639   %c = icmp ult i4 %s, 13
2640   ret i1 %c
2643 define i1 @lshrult_03_14_exact(i4 %x) {
2644 ; CHECK-LABEL: @lshrult_03_14_exact(
2645 ; CHECK-NEXT:    ret i1 true
2647   %s = lshr exact i4 %x, 3
2648   %c = icmp ult i4 %s, 14
2649   ret i1 %c
2652 define i1 @lshrult_03_15_exact(i4 %x) {
2653 ; CHECK-LABEL: @lshrult_03_15_exact(
2654 ; CHECK-NEXT:    ret i1 true
2656   %s = lshr exact i4 %x, 3
2657   %c = icmp ult i4 %s, 15
2658   ret i1 %c
2661 define i1 @ashrsgt_01_00_exact(i4 %x) {
2662 ; CHECK-LABEL: @ashrsgt_01_00_exact(
2663 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, 0
2664 ; CHECK-NEXT:    ret i1 [[C]]
2666   %s = ashr exact i4 %x, 1
2667   %c = icmp sgt i4 %s, 0
2668   ret i1 %c
2671 define i1 @ashrsgt_01_01_exact(i4 %x) {
2672 ; CHECK-LABEL: @ashrsgt_01_01_exact(
2673 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, 2
2674 ; CHECK-NEXT:    ret i1 [[C]]
2676   %s = ashr exact i4 %x, 1
2677   %c = icmp sgt i4 %s, 1
2678   ret i1 %c
2681 define i1 @ashrsgt_01_02_exact(i4 %x) {
2682 ; CHECK-LABEL: @ashrsgt_01_02_exact(
2683 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, 4
2684 ; CHECK-NEXT:    ret i1 [[C]]
2686   %s = ashr exact i4 %x, 1
2687   %c = icmp sgt i4 %s, 2
2688   ret i1 %c
2691 define i1 @ashrsgt_01_03_exact(i4 %x) {
2692 ; CHECK-LABEL: @ashrsgt_01_03_exact(
2693 ; CHECK-NEXT:    ret i1 false
2695   %s = ashr exact i4 %x, 1
2696   %c = icmp sgt i4 %s, 3
2697   ret i1 %c
2700 define i1 @ashrsgt_01_04_exact(i4 %x) {
2701 ; CHECK-LABEL: @ashrsgt_01_04_exact(
2702 ; CHECK-NEXT:    ret i1 false
2704   %s = ashr exact i4 %x, 1
2705   %c = icmp sgt i4 %s, 4
2706   ret i1 %c
2709 define i1 @ashrsgt_01_05_exact(i4 %x) {
2710 ; CHECK-LABEL: @ashrsgt_01_05_exact(
2711 ; CHECK-NEXT:    ret i1 false
2713   %s = ashr exact i4 %x, 1
2714   %c = icmp sgt i4 %s, 5
2715   ret i1 %c
2718 define i1 @ashrsgt_01_06_exact(i4 %x) {
2719 ; CHECK-LABEL: @ashrsgt_01_06_exact(
2720 ; CHECK-NEXT:    ret i1 false
2722   %s = ashr exact i4 %x, 1
2723   %c = icmp sgt i4 %s, 6
2724   ret i1 %c
2727 define i1 @ashrsgt_01_07_exact(i4 %x) {
2728 ; CHECK-LABEL: @ashrsgt_01_07_exact(
2729 ; CHECK-NEXT:    ret i1 false
2731   %s = ashr exact i4 %x, 1
2732   %c = icmp sgt i4 %s, 7
2733   ret i1 %c
2736 define i1 @ashrsgt_01_08_exact(i4 %x) {
2737 ; CHECK-LABEL: @ashrsgt_01_08_exact(
2738 ; CHECK-NEXT:    ret i1 true
2740   %s = ashr exact i4 %x, 1
2741   %c = icmp sgt i4 %s, 8
2742   ret i1 %c
2745 define i1 @ashrsgt_01_09_exact(i4 %x) {
2746 ; CHECK-LABEL: @ashrsgt_01_09_exact(
2747 ; CHECK-NEXT:    ret i1 true
2749   %s = ashr exact i4 %x, 1
2750   %c = icmp sgt i4 %s, 9
2751   ret i1 %c
2754 define i1 @ashrsgt_01_10_exact(i4 %x) {
2755 ; CHECK-LABEL: @ashrsgt_01_10_exact(
2756 ; CHECK-NEXT:    ret i1 true
2758   %s = ashr exact i4 %x, 1
2759   %c = icmp sgt i4 %s, 10
2760   ret i1 %c
2763 define i1 @ashrsgt_01_11_exact(i4 %x) {
2764 ; CHECK-LABEL: @ashrsgt_01_11_exact(
2765 ; CHECK-NEXT:    ret i1 true
2767   %s = ashr exact i4 %x, 1
2768   %c = icmp sgt i4 %s, 11
2769   ret i1 %c
2772 define i1 @ashrsgt_01_12_exact(i4 %x) {
2773 ; CHECK-LABEL: @ashrsgt_01_12_exact(
2774 ; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 %x, -8
2775 ; CHECK-NEXT:    ret i1 [[C]]
2777   %s = ashr exact i4 %x, 1
2778   %c = icmp sgt i4 %s, 12
2779   ret i1 %c
2782 define i1 @ashrsgt_01_13_exact(i4 %x) {
2783 ; CHECK-LABEL: @ashrsgt_01_13_exact(
2784 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -6
2785 ; CHECK-NEXT:    ret i1 [[C]]
2787   %s = ashr exact i4 %x, 1
2788   %c = icmp sgt i4 %s, 13
2789   ret i1 %c
2792 define i1 @ashrsgt_01_14_exact(i4 %x) {
2793 ; CHECK-LABEL: @ashrsgt_01_14_exact(
2794 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -4
2795 ; CHECK-NEXT:    ret i1 [[C]]
2797   %s = ashr exact i4 %x, 1
2798   %c = icmp sgt i4 %s, 14
2799   ret i1 %c
2802 define i1 @ashrsgt_01_15_exact(i4 %x) {
2803 ; CHECK-LABEL: @ashrsgt_01_15_exact(
2804 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -1
2805 ; CHECK-NEXT:    ret i1 [[C]]
2807   %s = ashr exact i4 %x, 1
2808   %c = icmp sgt i4 %s, 15
2809   ret i1 %c
2812 define i1 @ashrsgt_02_00_exact(i4 %x) {
2813 ; CHECK-LABEL: @ashrsgt_02_00_exact(
2814 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, 0
2815 ; CHECK-NEXT:    ret i1 [[C]]
2817   %s = ashr exact i4 %x, 2
2818   %c = icmp sgt i4 %s, 0
2819   ret i1 %c
2822 define i1 @ashrsgt_02_01_exact(i4 %x) {
2823 ; CHECK-LABEL: @ashrsgt_02_01_exact(
2824 ; CHECK-NEXT:    ret i1 false
2826   %s = ashr exact i4 %x, 2
2827   %c = icmp sgt i4 %s, 1
2828   ret i1 %c
2831 define i1 @ashrsgt_02_02_exact(i4 %x) {
2832 ; CHECK-LABEL: @ashrsgt_02_02_exact(
2833 ; CHECK-NEXT:    ret i1 false
2835   %s = ashr exact i4 %x, 2
2836   %c = icmp sgt i4 %s, 2
2837   ret i1 %c
2840 define i1 @ashrsgt_02_03_exact(i4 %x) {
2841 ; CHECK-LABEL: @ashrsgt_02_03_exact(
2842 ; CHECK-NEXT:    ret i1 false
2844   %s = ashr exact i4 %x, 2
2845   %c = icmp sgt i4 %s, 3
2846   ret i1 %c
2849 define i1 @ashrsgt_02_04_exact(i4 %x) {
2850 ; CHECK-LABEL: @ashrsgt_02_04_exact(
2851 ; CHECK-NEXT:    ret i1 false
2853   %s = ashr exact i4 %x, 2
2854   %c = icmp sgt i4 %s, 4
2855   ret i1 %c
2858 define i1 @ashrsgt_02_05_exact(i4 %x) {
2859 ; CHECK-LABEL: @ashrsgt_02_05_exact(
2860 ; CHECK-NEXT:    ret i1 false
2862   %s = ashr exact i4 %x, 2
2863   %c = icmp sgt i4 %s, 5
2864   ret i1 %c
2867 define i1 @ashrsgt_02_06_exact(i4 %x) {
2868 ; CHECK-LABEL: @ashrsgt_02_06_exact(
2869 ; CHECK-NEXT:    ret i1 false
2871   %s = ashr exact i4 %x, 2
2872   %c = icmp sgt i4 %s, 6
2873   ret i1 %c
2876 define i1 @ashrsgt_02_07_exact(i4 %x) {
2877 ; CHECK-LABEL: @ashrsgt_02_07_exact(
2878 ; CHECK-NEXT:    ret i1 false
2880   %s = ashr exact i4 %x, 2
2881   %c = icmp sgt i4 %s, 7
2882   ret i1 %c
2885 define i1 @ashrsgt_02_08_exact(i4 %x) {
2886 ; CHECK-LABEL: @ashrsgt_02_08_exact(
2887 ; CHECK-NEXT:    ret i1 true
2889   %s = ashr exact i4 %x, 2
2890   %c = icmp sgt i4 %s, 8
2891   ret i1 %c
2894 define i1 @ashrsgt_02_09_exact(i4 %x) {
2895 ; CHECK-LABEL: @ashrsgt_02_09_exact(
2896 ; CHECK-NEXT:    ret i1 true
2898   %s = ashr exact i4 %x, 2
2899   %c = icmp sgt i4 %s, 9
2900   ret i1 %c
2903 define i1 @ashrsgt_02_10_exact(i4 %x) {
2904 ; CHECK-LABEL: @ashrsgt_02_10_exact(
2905 ; CHECK-NEXT:    ret i1 true
2907   %s = ashr exact i4 %x, 2
2908   %c = icmp sgt i4 %s, 10
2909   ret i1 %c
2912 define i1 @ashrsgt_02_11_exact(i4 %x) {
2913 ; CHECK-LABEL: @ashrsgt_02_11_exact(
2914 ; CHECK-NEXT:    ret i1 true
2916   %s = ashr exact i4 %x, 2
2917   %c = icmp sgt i4 %s, 11
2918   ret i1 %c
2921 define i1 @ashrsgt_02_12_exact(i4 %x) {
2922 ; CHECK-LABEL: @ashrsgt_02_12_exact(
2923 ; CHECK-NEXT:    ret i1 true
2925   %s = ashr exact i4 %x, 2
2926   %c = icmp sgt i4 %s, 12
2927   ret i1 %c
2930 define i1 @ashrsgt_02_13_exact(i4 %x) {
2931 ; CHECK-LABEL: @ashrsgt_02_13_exact(
2932 ; CHECK-NEXT:    ret i1 true
2934   %s = ashr exact i4 %x, 2
2935   %c = icmp sgt i4 %s, 13
2936   ret i1 %c
2939 define i1 @ashrsgt_02_14_exact(i4 %x) {
2940 ; CHECK-LABEL: @ashrsgt_02_14_exact(
2941 ; CHECK-NEXT:    [[C:%.*]] = icmp ne i4 %x, -8
2942 ; CHECK-NEXT:    ret i1 [[C]]
2944   %s = ashr exact i4 %x, 2
2945   %c = icmp sgt i4 %s, 14
2946   ret i1 %c
2949 define i1 @ashrsgt_02_15_exact(i4 %x) {
2950 ; CHECK-LABEL: @ashrsgt_02_15_exact(
2951 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -1
2952 ; CHECK-NEXT:    ret i1 [[C]]
2954   %s = ashr exact i4 %x, 2
2955   %c = icmp sgt i4 %s, 15
2956   ret i1 %c
2959 define i1 @ashrsgt_03_00_exact(i4 %x) {
2960 ; CHECK-LABEL: @ashrsgt_03_00_exact(
2961 ; CHECK-NEXT:    ret i1 false
2963   %s = ashr exact i4 %x, 3
2964   %c = icmp sgt i4 %s, 0
2965   ret i1 %c
2968 define i1 @ashrsgt_03_01_exact(i4 %x) {
2969 ; CHECK-LABEL: @ashrsgt_03_01_exact(
2970 ; CHECK-NEXT:    ret i1 false
2972   %s = ashr exact i4 %x, 3
2973   %c = icmp sgt i4 %s, 1
2974   ret i1 %c
2977 define i1 @ashrsgt_03_02_exact(i4 %x) {
2978 ; CHECK-LABEL: @ashrsgt_03_02_exact(
2979 ; CHECK-NEXT:    ret i1 false
2981   %s = ashr exact i4 %x, 3
2982   %c = icmp sgt i4 %s, 2
2983   ret i1 %c
2986 define i1 @ashrsgt_03_03_exact(i4 %x) {
2987 ; CHECK-LABEL: @ashrsgt_03_03_exact(
2988 ; CHECK-NEXT:    ret i1 false
2990   %s = ashr exact i4 %x, 3
2991   %c = icmp sgt i4 %s, 3
2992   ret i1 %c
2995 define i1 @ashrsgt_03_04_exact(i4 %x) {
2996 ; CHECK-LABEL: @ashrsgt_03_04_exact(
2997 ; CHECK-NEXT:    ret i1 false
2999   %s = ashr exact i4 %x, 3
3000   %c = icmp sgt i4 %s, 4
3001   ret i1 %c
3004 define i1 @ashrsgt_03_05_exact(i4 %x) {
3005 ; CHECK-LABEL: @ashrsgt_03_05_exact(
3006 ; CHECK-NEXT:    ret i1 false
3008   %s = ashr exact i4 %x, 3
3009   %c = icmp sgt i4 %s, 5
3010   ret i1 %c
3013 define i1 @ashrsgt_03_06_exact(i4 %x) {
3014 ; CHECK-LABEL: @ashrsgt_03_06_exact(
3015 ; CHECK-NEXT:    ret i1 false
3017   %s = ashr exact i4 %x, 3
3018   %c = icmp sgt i4 %s, 6
3019   ret i1 %c
3022 define i1 @ashrsgt_03_07_exact(i4 %x) {
3023 ; CHECK-LABEL: @ashrsgt_03_07_exact(
3024 ; CHECK-NEXT:    ret i1 false
3026   %s = ashr exact i4 %x, 3
3027   %c = icmp sgt i4 %s, 7
3028   ret i1 %c
3031 define i1 @ashrsgt_03_08_exact(i4 %x) {
3032 ; CHECK-LABEL: @ashrsgt_03_08_exact(
3033 ; CHECK-NEXT:    ret i1 true
3035   %s = ashr exact i4 %x, 3
3036   %c = icmp sgt i4 %s, 8
3037   ret i1 %c
3040 define i1 @ashrsgt_03_09_exact(i4 %x) {
3041 ; CHECK-LABEL: @ashrsgt_03_09_exact(
3042 ; CHECK-NEXT:    ret i1 true
3044   %s = ashr exact i4 %x, 3
3045   %c = icmp sgt i4 %s, 9
3046   ret i1 %c
3049 define i1 @ashrsgt_03_10_exact(i4 %x) {
3050 ; CHECK-LABEL: @ashrsgt_03_10_exact(
3051 ; CHECK-NEXT:    ret i1 true
3053   %s = ashr exact i4 %x, 3
3054   %c = icmp sgt i4 %s, 10
3055   ret i1 %c
3058 define i1 @ashrsgt_03_11_exact(i4 %x) {
3059 ; CHECK-LABEL: @ashrsgt_03_11_exact(
3060 ; CHECK-NEXT:    ret i1 true
3062   %s = ashr exact i4 %x, 3
3063   %c = icmp sgt i4 %s, 11
3064   ret i1 %c
3067 define i1 @ashrsgt_03_12_exact(i4 %x) {
3068 ; CHECK-LABEL: @ashrsgt_03_12_exact(
3069 ; CHECK-NEXT:    ret i1 true
3071   %s = ashr exact i4 %x, 3
3072   %c = icmp sgt i4 %s, 12
3073   ret i1 %c
3076 define i1 @ashrsgt_03_13_exact(i4 %x) {
3077 ; CHECK-LABEL: @ashrsgt_03_13_exact(
3078 ; CHECK-NEXT:    ret i1 true
3080   %s = ashr exact i4 %x, 3
3081   %c = icmp sgt i4 %s, 13
3082   ret i1 %c
3085 define i1 @ashrsgt_03_14_exact(i4 %x) {
3086 ; CHECK-LABEL: @ashrsgt_03_14_exact(
3087 ; CHECK-NEXT:    ret i1 true
3089   %s = ashr exact i4 %x, 3
3090   %c = icmp sgt i4 %s, 14
3091   ret i1 %c
3094 define i1 @ashrsgt_03_15_exact(i4 %x) {
3095 ; CHECK-LABEL: @ashrsgt_03_15_exact(
3096 ; CHECK-NEXT:    [[C:%.*]] = icmp sgt i4 %x, -1
3097 ; CHECK-NEXT:    ret i1 [[C]]
3099   %s = ashr exact i4 %x, 3
3100   %c = icmp sgt i4 %s, 15
3101   ret i1 %c
3104 define i1 @ashrslt_01_00_exact(i4 %x) {
3105 ; CHECK-LABEL: @ashrslt_01_00_exact(
3106 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 0
3107 ; CHECK-NEXT:    ret i1 [[C]]
3109   %s = ashr exact i4 %x, 1
3110   %c = icmp slt i4 %s, 0
3111   ret i1 %c
3114 define i1 @ashrslt_01_01_exact(i4 %x) {
3115 ; CHECK-LABEL: @ashrslt_01_01_exact(
3116 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 2
3117 ; CHECK-NEXT:    ret i1 [[C]]
3119   %s = ashr exact i4 %x, 1
3120   %c = icmp slt i4 %s, 1
3121   ret i1 %c
3124 define i1 @ashrslt_01_02_exact(i4 %x) {
3125 ; CHECK-LABEL: @ashrslt_01_02_exact(
3126 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 4
3127 ; CHECK-NEXT:    ret i1 [[C]]
3129   %s = ashr exact i4 %x, 1
3130   %c = icmp slt i4 %s, 2
3131   ret i1 %c
3134 define i1 @ashrslt_01_03_exact(i4 %x) {
3135 ; CHECK-LABEL: @ashrslt_01_03_exact(
3136 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 6
3137 ; CHECK-NEXT:    ret i1 [[C]]
3139   %s = ashr exact i4 %x, 1
3140   %c = icmp slt i4 %s, 3
3141   ret i1 %c
3144 define i1 @ashrslt_01_04_exact(i4 %x) {
3145 ; CHECK-LABEL: @ashrslt_01_04_exact(
3146 ; CHECK-NEXT:    ret i1 true
3148   %s = ashr exact i4 %x, 1
3149   %c = icmp slt i4 %s, 4
3150   ret i1 %c
3153 define i1 @ashrslt_01_05_exact(i4 %x) {
3154 ; CHECK-LABEL: @ashrslt_01_05_exact(
3155 ; CHECK-NEXT:    ret i1 true
3157   %s = ashr exact i4 %x, 1
3158   %c = icmp slt i4 %s, 5
3159   ret i1 %c
3162 define i1 @ashrslt_01_06_exact(i4 %x) {
3163 ; CHECK-LABEL: @ashrslt_01_06_exact(
3164 ; CHECK-NEXT:    ret i1 true
3166   %s = ashr exact i4 %x, 1
3167   %c = icmp slt i4 %s, 6
3168   ret i1 %c
3171 define i1 @ashrslt_01_07_exact(i4 %x) {
3172 ; CHECK-LABEL: @ashrslt_01_07_exact(
3173 ; CHECK-NEXT:    ret i1 true
3175   %s = ashr exact i4 %x, 1
3176   %c = icmp slt i4 %s, 7
3177   ret i1 %c
3180 define i1 @ashrslt_01_08_exact(i4 %x) {
3181 ; CHECK-LABEL: @ashrslt_01_08_exact(
3182 ; CHECK-NEXT:    ret i1 false
3184   %s = ashr exact i4 %x, 1
3185   %c = icmp slt i4 %s, 8
3186   ret i1 %c
3189 define i1 @ashrslt_01_09_exact(i4 %x) {
3190 ; CHECK-LABEL: @ashrslt_01_09_exact(
3191 ; CHECK-NEXT:    ret i1 false
3193   %s = ashr exact i4 %x, 1
3194   %c = icmp slt i4 %s, 9
3195   ret i1 %c
3198 define i1 @ashrslt_01_10_exact(i4 %x) {
3199 ; CHECK-LABEL: @ashrslt_01_10_exact(
3200 ; CHECK-NEXT:    ret i1 false
3202   %s = ashr exact i4 %x, 1
3203   %c = icmp slt i4 %s, 10
3204   ret i1 %c
3207 define i1 @ashrslt_01_11_exact(i4 %x) {
3208 ; CHECK-LABEL: @ashrslt_01_11_exact(
3209 ; CHECK-NEXT:    ret i1 false
3211   %s = ashr exact i4 %x, 1
3212   %c = icmp slt i4 %s, 11
3213   ret i1 %c
3216 define i1 @ashrslt_01_12_exact(i4 %x) {
3217 ; CHECK-LABEL: @ashrslt_01_12_exact(
3218 ; CHECK-NEXT:    ret i1 false
3220   %s = ashr exact i4 %x, 1
3221   %c = icmp slt i4 %s, 12
3222   ret i1 %c
3225 define i1 @ashrslt_01_13_exact(i4 %x) {
3226 ; CHECK-LABEL: @ashrslt_01_13_exact(
3227 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, -6
3228 ; CHECK-NEXT:    ret i1 [[C]]
3230   %s = ashr exact i4 %x, 1
3231   %c = icmp slt i4 %s, 13
3232   ret i1 %c
3235 define i1 @ashrslt_01_14_exact(i4 %x) {
3236 ; CHECK-LABEL: @ashrslt_01_14_exact(
3237 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, -4
3238 ; CHECK-NEXT:    ret i1 [[C]]
3240   %s = ashr exact i4 %x, 1
3241   %c = icmp slt i4 %s, 14
3242   ret i1 %c
3245 define i1 @ashrslt_01_15_exact(i4 %x) {
3246 ; CHECK-LABEL: @ashrslt_01_15_exact(
3247 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, -2
3248 ; CHECK-NEXT:    ret i1 [[C]]
3250   %s = ashr exact i4 %x, 1
3251   %c = icmp slt i4 %s, 15
3252   ret i1 %c
3255 define i1 @ashrslt_02_00_exact(i4 %x) {
3256 ; CHECK-LABEL: @ashrslt_02_00_exact(
3257 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 0
3258 ; CHECK-NEXT:    ret i1 [[C]]
3260   %s = ashr exact i4 %x, 2
3261   %c = icmp slt i4 %s, 0
3262   ret i1 %c
3265 define i1 @ashrslt_02_01_exact(i4 %x) {
3266 ; CHECK-LABEL: @ashrslt_02_01_exact(
3267 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 4
3268 ; CHECK-NEXT:    ret i1 [[C]]
3270   %s = ashr exact i4 %x, 2
3271   %c = icmp slt i4 %s, 1
3272   ret i1 %c
3275 define i1 @ashrslt_02_02_exact(i4 %x) {
3276 ; CHECK-LABEL: @ashrslt_02_02_exact(
3277 ; CHECK-NEXT:    ret i1 true
3279   %s = ashr exact i4 %x, 2
3280   %c = icmp slt i4 %s, 2
3281   ret i1 %c
3284 define i1 @ashrslt_02_03_exact(i4 %x) {
3285 ; CHECK-LABEL: @ashrslt_02_03_exact(
3286 ; CHECK-NEXT:    ret i1 true
3288   %s = ashr exact i4 %x, 2
3289   %c = icmp slt i4 %s, 3
3290   ret i1 %c
3293 define i1 @ashrslt_02_04_exact(i4 %x) {
3294 ; CHECK-LABEL: @ashrslt_02_04_exact(
3295 ; CHECK-NEXT:    ret i1 true
3297   %s = ashr exact i4 %x, 2
3298   %c = icmp slt i4 %s, 4
3299   ret i1 %c
3302 define i1 @ashrslt_02_05_exact(i4 %x) {
3303 ; CHECK-LABEL: @ashrslt_02_05_exact(
3304 ; CHECK-NEXT:    ret i1 true
3306   %s = ashr exact i4 %x, 2
3307   %c = icmp slt i4 %s, 5
3308   ret i1 %c
3311 define i1 @ashrslt_02_06_exact(i4 %x) {
3312 ; CHECK-LABEL: @ashrslt_02_06_exact(
3313 ; CHECK-NEXT:    ret i1 true
3315   %s = ashr exact i4 %x, 2
3316   %c = icmp slt i4 %s, 6
3317   ret i1 %c
3320 define i1 @ashrslt_02_07_exact(i4 %x) {
3321 ; CHECK-LABEL: @ashrslt_02_07_exact(
3322 ; CHECK-NEXT:    ret i1 true
3324   %s = ashr exact i4 %x, 2
3325   %c = icmp slt i4 %s, 7
3326   ret i1 %c
3329 define i1 @ashrslt_02_08_exact(i4 %x) {
3330 ; CHECK-LABEL: @ashrslt_02_08_exact(
3331 ; CHECK-NEXT:    ret i1 false
3333   %s = ashr exact i4 %x, 2
3334   %c = icmp slt i4 %s, 8
3335   ret i1 %c
3338 define i1 @ashrslt_02_09_exact(i4 %x) {
3339 ; CHECK-LABEL: @ashrslt_02_09_exact(
3340 ; CHECK-NEXT:    ret i1 false
3342   %s = ashr exact i4 %x, 2
3343   %c = icmp slt i4 %s, 9
3344   ret i1 %c
3347 define i1 @ashrslt_02_10_exact(i4 %x) {
3348 ; CHECK-LABEL: @ashrslt_02_10_exact(
3349 ; CHECK-NEXT:    ret i1 false
3351   %s = ashr exact i4 %x, 2
3352   %c = icmp slt i4 %s, 10
3353   ret i1 %c
3356 define i1 @ashrslt_02_11_exact(i4 %x) {
3357 ; CHECK-LABEL: @ashrslt_02_11_exact(
3358 ; CHECK-NEXT:    ret i1 false
3360   %s = ashr exact i4 %x, 2
3361   %c = icmp slt i4 %s, 11
3362   ret i1 %c
3365 define i1 @ashrslt_02_12_exact(i4 %x) {
3366 ; CHECK-LABEL: @ashrslt_02_12_exact(
3367 ; CHECK-NEXT:    ret i1 false
3369   %s = ashr exact i4 %x, 2
3370   %c = icmp slt i4 %s, 12
3371   ret i1 %c
3374 define i1 @ashrslt_02_13_exact(i4 %x) {
3375 ; CHECK-LABEL: @ashrslt_02_13_exact(
3376 ; CHECK-NEXT:    ret i1 false
3378   %s = ashr exact i4 %x, 2
3379   %c = icmp slt i4 %s, 13
3380   ret i1 %c
3383 define i1 @ashrslt_02_14_exact(i4 %x) {
3384 ; CHECK-LABEL: @ashrslt_02_14_exact(
3385 ; CHECK-NEXT:    ret i1 false
3387   %s = ashr exact i4 %x, 2
3388   %c = icmp slt i4 %s, 14
3389   ret i1 %c
3392 define i1 @ashrslt_02_15_exact(i4 %x) {
3393 ; CHECK-LABEL: @ashrslt_02_15_exact(
3394 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, -4
3395 ; CHECK-NEXT:    ret i1 [[C]]
3397   %s = ashr exact i4 %x, 2
3398   %c = icmp slt i4 %s, 15
3399   ret i1 %c
3402 define i1 @ashrslt_03_00_exact(i4 %x) {
3403 ; CHECK-LABEL: @ashrslt_03_00_exact(
3404 ; CHECK-NEXT:    [[C:%.*]] = icmp slt i4 %x, 0
3405 ; CHECK-NEXT:    ret i1 [[C]]
3407   %s = ashr exact i4 %x, 3
3408   %c = icmp slt i4 %s, 0
3409   ret i1 %c
3412 define i1 @ashrslt_03_01_exact(i4 %x) {
3413 ; CHECK-LABEL: @ashrslt_03_01_exact(
3414 ; CHECK-NEXT:    ret i1 true
3416   %s = ashr exact i4 %x, 3
3417   %c = icmp slt i4 %s, 1
3418   ret i1 %c
3421 define i1 @ashrslt_03_02_exact(i4 %x) {
3422 ; CHECK-LABEL: @ashrslt_03_02_exact(
3423 ; CHECK-NEXT:    ret i1 true
3425   %s = ashr exact i4 %x, 3
3426   %c = icmp slt i4 %s, 2
3427   ret i1 %c
3430 define i1 @ashrslt_03_03_exact(i4 %x) {
3431 ; CHECK-LABEL: @ashrslt_03_03_exact(
3432 ; CHECK-NEXT:    ret i1 true
3434   %s = ashr exact i4 %x, 3
3435   %c = icmp slt i4 %s, 3
3436   ret i1 %c
3439 define i1 @ashrslt_03_04_exact(i4 %x) {
3440 ; CHECK-LABEL: @ashrslt_03_04_exact(
3441 ; CHECK-NEXT:    ret i1 true
3443   %s = ashr exact i4 %x, 3
3444   %c = icmp slt i4 %s, 4
3445   ret i1 %c
3448 define i1 @ashrslt_03_05_exact(i4 %x) {
3449 ; CHECK-LABEL: @ashrslt_03_05_exact(
3450 ; CHECK-NEXT:    ret i1 true
3452   %s = ashr exact i4 %x, 3
3453   %c = icmp slt i4 %s, 5
3454   ret i1 %c
3457 define i1 @ashrslt_03_06_exact(i4 %x) {
3458 ; CHECK-LABEL: @ashrslt_03_06_exact(
3459 ; CHECK-NEXT:    ret i1 true
3461   %s = ashr exact i4 %x, 3
3462   %c = icmp slt i4 %s, 6
3463   ret i1 %c
3466 define i1 @ashrslt_03_07_exact(i4 %x) {
3467 ; CHECK-LABEL: @ashrslt_03_07_exact(
3468 ; CHECK-NEXT:    ret i1 true
3470   %s = ashr exact i4 %x, 3
3471   %c = icmp slt i4 %s, 7
3472   ret i1 %c
3475 define i1 @ashrslt_03_08_exact(i4 %x) {
3476 ; CHECK-LABEL: @ashrslt_03_08_exact(
3477 ; CHECK-NEXT:    ret i1 false
3479   %s = ashr exact i4 %x, 3
3480   %c = icmp slt i4 %s, 8
3481   ret i1 %c
3484 define i1 @ashrslt_03_09_exact(i4 %x) {
3485 ; CHECK-LABEL: @ashrslt_03_09_exact(
3486 ; CHECK-NEXT:    ret i1 false
3488   %s = ashr exact i4 %x, 3
3489   %c = icmp slt i4 %s, 9
3490   ret i1 %c
3493 define i1 @ashrslt_03_10_exact(i4 %x) {
3494 ; CHECK-LABEL: @ashrslt_03_10_exact(
3495 ; CHECK-NEXT:    ret i1 false
3497   %s = ashr exact i4 %x, 3
3498   %c = icmp slt i4 %s, 10
3499   ret i1 %c
3502 define i1 @ashrslt_03_11_exact(i4 %x) {
3503 ; CHECK-LABEL: @ashrslt_03_11_exact(
3504 ; CHECK-NEXT:    ret i1 false
3506   %s = ashr exact i4 %x, 3
3507   %c = icmp slt i4 %s, 11
3508   ret i1 %c
3511 define i1 @ashrslt_03_12_exact(i4 %x) {
3512 ; CHECK-LABEL: @ashrslt_03_12_exact(
3513 ; CHECK-NEXT:    ret i1 false
3515   %s = ashr exact i4 %x, 3
3516   %c = icmp slt i4 %s, 12
3517   ret i1 %c
3520 define i1 @ashrslt_03_13_exact(i4 %x) {
3521 ; CHECK-LABEL: @ashrslt_03_13_exact(
3522 ; CHECK-NEXT:    ret i1 false
3524   %s = ashr exact i4 %x, 3
3525   %c = icmp slt i4 %s, 13
3526   ret i1 %c
3529 define i1 @ashrslt_03_14_exact(i4 %x) {
3530 ; CHECK-LABEL: @ashrslt_03_14_exact(
3531 ; CHECK-NEXT:    ret i1 false
3533   %s = ashr exact i4 %x, 3
3534   %c = icmp slt i4 %s, 14
3535   ret i1 %c
3538 define i1 @ashrslt_03_15_exact(i4 %x) {
3539 ; CHECK-LABEL: @ashrslt_03_15_exact(
3540 ; CHECK-NEXT:    ret i1 false
3542   %s = ashr exact i4 %x, 3
3543   %c = icmp slt i4 %s, 15
3544   ret i1 %c