|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5
|
2 | 2 | ; RUN: opt -passes='print<access-info>' -disable-output %s 2>&1 | FileCheck %s
|
3 | 3 |
|
4 |
| -target datalayout = "p:16:16" |
| 4 | +target datalayout = "p:16:16-p3:32:32" |
5 | 5 |
|
6 | 6 | define void @int_and_pointer_predicate(ptr %v, i32 %N) {
|
7 | 7 | ; CHECK-LABEL: 'int_and_pointer_predicate'
|
@@ -124,3 +124,37 @@ loop:
|
124 | 124 | exit:
|
125 | 125 | ret void
|
126 | 126 | }
|
| 127 | + |
| 128 | +define void @pointers_to_different_aspace_predicates(ptr %v, ptr addrspace(3) %w, i32 %N) { |
| 129 | +; CHECK-LABEL: 'pointers_to_different_aspace_predicates' |
| 130 | +; CHECK-NEXT: loop: |
| 131 | +; CHECK-NEXT: Report: cannot identify array bounds |
| 132 | +; CHECK-NEXT: Dependences: |
| 133 | +; CHECK-NEXT: Run-time memory checks: |
| 134 | +; CHECK-NEXT: Grouped accesses: |
| 135 | +; CHECK-EMPTY: |
| 136 | +; CHECK-NEXT: Non vectorizable stores to invariant address were not found in loop. |
| 137 | +; CHECK-NEXT: SCEV assumptions: |
| 138 | +; CHECK-NEXT: {0,+,1}<%loop> Added Flags: <nusw> |
| 139 | +; CHECK-NEXT: {%v,+,4}<%loop> Added Flags: <nusw> |
| 140 | +; CHECK-NEXT: {%w,+,4}<%loop> Added Flags: <nusw> |
| 141 | +; CHECK-EMPTY: |
| 142 | +; CHECK-NEXT: Expressions re-written: |
| 143 | +; |
| 144 | +entry: |
| 145 | + br label %loop |
| 146 | + |
| 147 | +loop: |
| 148 | + %iv = phi i64 [ 0, %entry ], [ %iv.next, %loop ] |
| 149 | + %gep.v = getelementptr {i16, i16}, ptr %v, i64 %iv |
| 150 | + store i16 0, ptr %gep.v, align 1 |
| 151 | + %gep.w = getelementptr i32, ptr addrspace(3) %w, i64 %iv |
| 152 | + store i32 0, ptr addrspace(3) %gep.w, align 1 |
| 153 | + %iv.next = add i64 %iv, 1 |
| 154 | + %iv.i32 = trunc i64 %iv to i32 |
| 155 | + %.not = icmp ult i32 %N, %iv.i32 |
| 156 | + br i1 %.not, label %exit, label %loop |
| 157 | + |
| 158 | + exit: |
| 159 | + ret void |
| 160 | + } |
0 commit comments