|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
|
2 | 2 | ; RUN: opt -S -passes=correlated-propagation < %s | FileCheck %s
|
3 | 3 |
|
4 |
| -; TODO: Add support for this. |
5 | 4 | define <2 x i1> @cmp1(<2 x i8> %a) {
|
6 | 5 | ; CHECK-LABEL: define <2 x i1> @cmp1(
|
7 | 6 | ; CHECK-SAME: <2 x i8> [[A:%.*]]) {
|
8 | 7 | ; CHECK-NEXT: [[ADD:%.*]] = add nuw <2 x i8> [[A]], <i8 1, i8 1>
|
9 |
| -; CHECK-NEXT: [[CMP:%.*]] = icmp ne <2 x i8> [[ADD]], zeroinitializer |
10 |
| -; CHECK-NEXT: ret <2 x i1> [[CMP]] |
| 8 | +; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> |
11 | 9 | ;
|
12 | 10 | %add = add nuw <2 x i8> %a, splat (i8 1)
|
13 | 11 | %cmp = icmp ne <2 x i8> %add, zeroinitializer
|
14 | 12 | ret <2 x i1> %cmp
|
15 | 13 | }
|
16 | 14 |
|
17 |
| -; TODO: Add support for this. |
18 | 15 | define <2 x i1> @cmp2(<2 x i8> %a) {
|
19 | 16 | ; CHECK-LABEL: define <2 x i1> @cmp2(
|
20 | 17 | ; CHECK-SAME: <2 x i8> [[A:%.*]]) {
|
21 | 18 | ; CHECK-NEXT: [[ADD:%.*]] = add nuw <2 x i8> [[A]], <i8 5, i8 5>
|
22 |
| -; CHECK-NEXT: [[CMP:%.*]] = icmp ugt <2 x i8> [[ADD]], <i8 2, i8 2> |
23 |
| -; CHECK-NEXT: ret <2 x i1> [[CMP]] |
| 19 | +; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> |
24 | 20 | ;
|
25 | 21 | %add = add nuw <2 x i8> %a, splat (i8 5)
|
26 | 22 | %cmp = icmp ugt <2 x i8> %add, splat (i8 2)
|
27 | 23 | ret <2 x i1> %cmp
|
28 | 24 | }
|
29 | 25 |
|
| 26 | +define <2 x i1> @cmp_nonsplat(<2 x i8> %a) { |
| 27 | +; CHECK-LABEL: define <2 x i1> @cmp_nonsplat( |
| 28 | +; CHECK-SAME: <2 x i8> [[A:%.*]]) { |
| 29 | +; CHECK-NEXT: [[ADD:%.*]] = add nuw <2 x i8> [[A]], <i8 4, i8 5> |
| 30 | +; CHECK-NEXT: ret <2 x i1> <i1 true, i1 true> |
| 31 | +; |
| 32 | + %add = add nuw <2 x i8> %a, <i8 4, i8 5> |
| 33 | + %cmp = icmp ugt <2 x i8> %add, <i8 2, i8 3> |
| 34 | + ret <2 x i1> %cmp |
| 35 | +} |
| 36 | + |
| 37 | +; Handling this would require keeping track of ranges on a per-element basis. |
| 38 | +define <2 x i1> @cmp_nonsplat_fail(<2 x i8> %a) { |
| 39 | +; CHECK-LABEL: define <2 x i1> @cmp_nonsplat_fail( |
| 40 | +; CHECK-SAME: <2 x i8> [[A:%.*]]) { |
| 41 | +; CHECK-NEXT: [[ADD:%.*]] = add nuw <2 x i8> [[A]], <i8 3, i8 4> |
| 42 | +; CHECK-NEXT: [[CMP:%.*]] = icmp ugt <2 x i8> [[ADD]], <i8 2, i8 3> |
| 43 | +; CHECK-NEXT: ret <2 x i1> [[CMP]] |
| 44 | +; |
| 45 | + %add = add nuw <2 x i8> %a, <i8 3, i8 4> |
| 46 | + %cmp = icmp ugt <2 x i8> %add, <i8 2, i8 3> |
| 47 | + ret <2 x i1> %cmp |
| 48 | +} |
| 49 | + |
30 | 50 | define <2 x i1> @cmp_signedness(<2 x i8> %a) {
|
31 | 51 | ; CHECK-LABEL: define <2 x i1> @cmp_signedness(
|
32 | 52 | ; CHECK-SAME: <2 x i8> [[A:%.*]]) {
|
|
0 commit comments