|
2 | 2 | ; RUN: opt < %s --data-layout="p:64:64:64:64" -S -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck --check-prefixes=PTR64_IDX64 %s
|
3 | 3 | ; RUN: opt < %s --data-layout="p:64:64:64:32" -S -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck --check-prefixes=PTR64_IDX32 %s
|
4 | 4 | ; RUN: opt < %s --data-layout="p:16:16:16:16" -S -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck --check-prefixes=PTR16_IDX16 %s
|
5 |
| -; RUN: opt < %s --data-layout="p:16:16:16:32" -S -disable-output "-passes=print<scalar-evolution>" 2>&1 | FileCheck --check-prefixes=PTR16_IDX32 %s |
6 | 5 |
|
7 | 6 | @global = external hidden global [0 x i8]
|
8 | 7 |
|
@@ -63,24 +62,6 @@ define hidden ptr @trunc_ptr_to_i64(ptr %arg, ptr %arg10) {
|
63 | 62 | ; PTR16_IDX16-NEXT: Loop %bb11: Unpredictable symbolic max backedge-taken count.
|
64 | 63 | ; PTR16_IDX16-NEXT: Loop %bb11: Unpredictable predicated backedge-taken count.
|
65 | 64 | ;
|
66 |
| -; PTR16_IDX32-LABEL: 'trunc_ptr_to_i64' |
67 |
| -; PTR16_IDX32-NEXT: Classifying expressions for: @trunc_ptr_to_i64 |
68 |
| -; PTR16_IDX32-NEXT: %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ] |
69 |
| -; PTR16_IDX32-NEXT: --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable } |
70 |
| -; PTR16_IDX32-NEXT: %tmp12 = getelementptr i8, ptr %arg, i64 ptrtoint (ptr @global to i64) |
71 |
| -; PTR16_IDX32-NEXT: --> ((trunc i64 ptrtoint (ptr @global to i64) to i32) + %arg) U: [0,131071) S: [0,131071) Exits: ((trunc i64 ptrtoint (ptr @global to i64) to i32) + %arg) LoopDispositions: { %bb11: Invariant } |
72 |
| -; PTR16_IDX32-NEXT: %tmp13 = bitcast ptr %tmp12 to ptr |
73 |
| -; PTR16_IDX32-NEXT: --> ((trunc i64 ptrtoint (ptr @global to i64) to i32) + %arg) U: [0,131071) S: [0,131071) Exits: ((trunc i64 ptrtoint (ptr @global to i64) to i32) + %arg) LoopDispositions: { %bb11: Invariant } |
74 |
| -; PTR16_IDX32-NEXT: %tmp14 = load i32, ptr %tmp13, align 4 |
75 |
| -; PTR16_IDX32-NEXT: --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant } |
76 |
| -; PTR16_IDX32-NEXT: %tmp18 = add i32 %tmp, 2 |
77 |
| -; PTR16_IDX32-NEXT: --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable } |
78 |
| -; PTR16_IDX32-NEXT: Determining loop execution counts for: @trunc_ptr_to_i64 |
79 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable backedge-taken count. |
80 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable constant max backedge-taken count. |
81 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable symbolic max backedge-taken count. |
82 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable predicated backedge-taken count. |
83 |
| -; |
84 | 65 | bb:
|
85 | 66 | br label %bb11
|
86 | 67 |
|
@@ -154,24 +135,6 @@ define hidden ptr @trunc_ptr_to_i32(ptr %arg, ptr %arg10) {
|
154 | 135 | ; PTR16_IDX16-NEXT: Loop %bb11: Unpredictable symbolic max backedge-taken count.
|
155 | 136 | ; PTR16_IDX16-NEXT: Loop %bb11: Unpredictable predicated backedge-taken count.
|
156 | 137 | ;
|
157 |
| -; PTR16_IDX32-LABEL: 'trunc_ptr_to_i32' |
158 |
| -; PTR16_IDX32-NEXT: Classifying expressions for: @trunc_ptr_to_i32 |
159 |
| -; PTR16_IDX32-NEXT: %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ] |
160 |
| -; PTR16_IDX32-NEXT: --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable } |
161 |
| -; PTR16_IDX32-NEXT: %tmp12 = getelementptr i8, ptr %arg, i32 ptrtoint (ptr @global to i32) |
162 |
| -; PTR16_IDX32-NEXT: --> (ptrtoint (ptr @global to i32) + %arg) U: [0,131071) S: [0,131071) Exits: (ptrtoint (ptr @global to i32) + %arg) LoopDispositions: { %bb11: Invariant } |
163 |
| -; PTR16_IDX32-NEXT: %tmp13 = bitcast ptr %tmp12 to ptr |
164 |
| -; PTR16_IDX32-NEXT: --> (ptrtoint (ptr @global to i32) + %arg) U: [0,131071) S: [0,131071) Exits: (ptrtoint (ptr @global to i32) + %arg) LoopDispositions: { %bb11: Invariant } |
165 |
| -; PTR16_IDX32-NEXT: %tmp14 = load i32, ptr %tmp13, align 4 |
166 |
| -; PTR16_IDX32-NEXT: --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant } |
167 |
| -; PTR16_IDX32-NEXT: %tmp18 = add i32 %tmp, 2 |
168 |
| -; PTR16_IDX32-NEXT: --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable } |
169 |
| -; PTR16_IDX32-NEXT: Determining loop execution counts for: @trunc_ptr_to_i32 |
170 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable backedge-taken count. |
171 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable constant max backedge-taken count. |
172 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable symbolic max backedge-taken count. |
173 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable predicated backedge-taken count. |
174 |
| -; |
175 | 138 | bb:
|
176 | 139 | br label %bb11
|
177 | 140 |
|
@@ -245,24 +208,6 @@ define hidden ptr @trunc_ptr_to_i128(ptr %arg, ptr %arg10) {
|
245 | 208 | ; PTR16_IDX16-NEXT: Loop %bb11: Unpredictable symbolic max backedge-taken count.
|
246 | 209 | ; PTR16_IDX16-NEXT: Loop %bb11: Unpredictable predicated backedge-taken count.
|
247 | 210 | ;
|
248 |
| -; PTR16_IDX32-LABEL: 'trunc_ptr_to_i128' |
249 |
| -; PTR16_IDX32-NEXT: Classifying expressions for: @trunc_ptr_to_i128 |
250 |
| -; PTR16_IDX32-NEXT: %tmp = phi i32 [ 0, %bb ], [ %tmp18, %bb17 ] |
251 |
| -; PTR16_IDX32-NEXT: --> {0,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable } |
252 |
| -; PTR16_IDX32-NEXT: %tmp12 = getelementptr i8, ptr %arg, i128 ptrtoint (ptr @global to i128) |
253 |
| -; PTR16_IDX32-NEXT: --> ((trunc i128 ptrtoint (ptr @global to i128) to i32) + %arg) U: [0,131071) S: [0,131071) Exits: ((trunc i128 ptrtoint (ptr @global to i128) to i32) + %arg) LoopDispositions: { %bb11: Invariant } |
254 |
| -; PTR16_IDX32-NEXT: %tmp13 = bitcast ptr %tmp12 to ptr |
255 |
| -; PTR16_IDX32-NEXT: --> ((trunc i128 ptrtoint (ptr @global to i128) to i32) + %arg) U: [0,131071) S: [0,131071) Exits: ((trunc i128 ptrtoint (ptr @global to i128) to i32) + %arg) LoopDispositions: { %bb11: Invariant } |
256 |
| -; PTR16_IDX32-NEXT: %tmp14 = load i32, ptr %tmp13, align 4 |
257 |
| -; PTR16_IDX32-NEXT: --> %tmp14 U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %bb11: Variant } |
258 |
| -; PTR16_IDX32-NEXT: %tmp18 = add i32 %tmp, 2 |
259 |
| -; PTR16_IDX32-NEXT: --> {2,+,2}<%bb11> U: [0,-1) S: [-2147483648,2147483647) Exits: <<Unknown>> LoopDispositions: { %bb11: Computable } |
260 |
| -; PTR16_IDX32-NEXT: Determining loop execution counts for: @trunc_ptr_to_i128 |
261 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable backedge-taken count. |
262 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable constant max backedge-taken count. |
263 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable symbolic max backedge-taken count. |
264 |
| -; PTR16_IDX32-NEXT: Loop %bb11: Unpredictable predicated backedge-taken count. |
265 |
| -; |
266 | 211 | bb:
|
267 | 212 | br label %bb11
|
268 | 213 |
|
@@ -319,18 +264,6 @@ define void @zext_ptr_to_i32(i32 %arg, i32 %arg6) {
|
319 | 264 | ; PTR16_IDX16-NEXT: Loop %bb7: Unpredictable symbolic max backedge-taken count.
|
320 | 265 | ; PTR16_IDX16-NEXT: Loop %bb7: Unpredictable predicated backedge-taken count.
|
321 | 266 | ;
|
322 |
| -; PTR16_IDX32-LABEL: 'zext_ptr_to_i32' |
323 |
| -; PTR16_IDX32-NEXT: Classifying expressions for: @zext_ptr_to_i32 |
324 |
| -; PTR16_IDX32-NEXT: %tmp = sub i32 %arg, ptrtoint (ptr @global to i32) |
325 |
| -; PTR16_IDX32-NEXT: --> ((-1 * ptrtoint (ptr @global to i32))<nsw> + %arg) U: full-set S: full-set Exits: ((-1 * ptrtoint (ptr @global to i32))<nsw> + %arg) LoopDispositions: { %bb7: Invariant } |
326 |
| -; PTR16_IDX32-NEXT: %tmp9 = select i1 %tmp8, i16 0, i16 1 |
327 |
| -; PTR16_IDX32-NEXT: --> %tmp9 U: [0,2) S: [0,2) Exits: <<Unknown>> LoopDispositions: { %bb7: Variant } |
328 |
| -; PTR16_IDX32-NEXT: Determining loop execution counts for: @zext_ptr_to_i32 |
329 |
| -; PTR16_IDX32-NEXT: Loop %bb7: Unpredictable backedge-taken count. |
330 |
| -; PTR16_IDX32-NEXT: Loop %bb7: Unpredictable constant max backedge-taken count. |
331 |
| -; PTR16_IDX32-NEXT: Loop %bb7: Unpredictable symbolic max backedge-taken count. |
332 |
| -; PTR16_IDX32-NEXT: Loop %bb7: Unpredictable predicated backedge-taken count. |
333 |
| -; |
334 | 267 | bb:
|
335 | 268 | br label %bb7
|
336 | 269 |
|
@@ -382,18 +315,6 @@ define void @sext_to_i32(i32 %arg, i32 %arg6) {
|
382 | 315 | ; PTR16_IDX16-NEXT: Loop %bb7: Unpredictable symbolic max backedge-taken count.
|
383 | 316 | ; PTR16_IDX16-NEXT: Loop %bb7: Unpredictable predicated backedge-taken count.
|
384 | 317 | ;
|
385 |
| -; PTR16_IDX32-LABEL: 'sext_to_i32' |
386 |
| -; PTR16_IDX32-NEXT: Classifying expressions for: @sext_to_i32 |
387 |
| -; PTR16_IDX32-NEXT: %tmp = sub i32 %arg, sext (i16 ptrtoint (ptr @global to i16) to i32) |
388 |
| -; PTR16_IDX32-NEXT: --> ((-1 * (sext i16 ptrtoint (ptr @global to i16) to i32))<nsw> + %arg) U: full-set S: full-set Exits: ((-1 * (sext i16 ptrtoint (ptr @global to i16) to i32))<nsw> + %arg) LoopDispositions: { %bb7: Invariant } |
389 |
| -; PTR16_IDX32-NEXT: %tmp9 = select i1 %tmp8, i16 0, i16 1 |
390 |
| -; PTR16_IDX32-NEXT: --> %tmp9 U: [0,2) S: [0,2) Exits: <<Unknown>> LoopDispositions: { %bb7: Variant } |
391 |
| -; PTR16_IDX32-NEXT: Determining loop execution counts for: @sext_to_i32 |
392 |
| -; PTR16_IDX32-NEXT: Loop %bb7: Unpredictable backedge-taken count. |
393 |
| -; PTR16_IDX32-NEXT: Loop %bb7: Unpredictable constant max backedge-taken count. |
394 |
| -; PTR16_IDX32-NEXT: Loop %bb7: Unpredictable symbolic max backedge-taken count. |
395 |
| -; PTR16_IDX32-NEXT: Loop %bb7: Unpredictable predicated backedge-taken count. |
396 |
| -; |
397 | 318 | bb:
|
398 | 319 | br label %bb7
|
399 | 320 |
|
@@ -463,24 +384,6 @@ define i64 @sext_like_noop(i32 %n) {
|
463 | 384 | ; PTR16_IDX16-NEXT: Predicates:
|
464 | 385 | ; PTR16_IDX16: Loop %for.body: Trip multiple is 1
|
465 | 386 | ;
|
466 |
| -; PTR16_IDX32-LABEL: 'sext_like_noop' |
467 |
| -; PTR16_IDX32-NEXT: Classifying expressions for: @sext_like_noop |
468 |
| -; PTR16_IDX32-NEXT: %ii = sext i32 %i to i64 |
469 |
| -; PTR16_IDX32-NEXT: --> (sext i32 {1,+,1}<nuw><%for.body> to i64) U: [-2147483648,2147483648) S: [-2147483648,2147483648) --> (-1 + (zext i32 ptrtoint (ptr @sext_like_noop to i32) to i64))<nsw> U: [-1,65535) S: [-1,65535) |
470 |
| -; PTR16_IDX32-NEXT: %div = sdiv i64 55555, %ii |
471 |
| -; PTR16_IDX32-NEXT: --> %div U: full-set S: full-set |
472 |
| -; PTR16_IDX32-NEXT: %i = phi i32 [ %inc, %for.body ], [ 1, %entry ] |
473 |
| -; PTR16_IDX32-NEXT: --> {1,+,1}<nuw><%for.body> U: [1,0) S: [1,0) Exits: (-1 + ptrtoint (ptr @sext_like_noop to i32))<nsw> LoopDispositions: { %for.body: Computable } |
474 |
| -; PTR16_IDX32-NEXT: %inc = add nuw i32 %i, 1 |
475 |
| -; PTR16_IDX32-NEXT: --> {2,+,1}<nuw><%for.body> U: [2,0) S: [2,0) Exits: ptrtoint (ptr @sext_like_noop to i32) LoopDispositions: { %for.body: Computable } |
476 |
| -; PTR16_IDX32-NEXT: Determining loop execution counts for: @sext_like_noop |
477 |
| -; PTR16_IDX32-NEXT: Loop %for.body: backedge-taken count is (-2 + ptrtoint (ptr @sext_like_noop to i32))<nsw> |
478 |
| -; PTR16_IDX32-NEXT: Loop %for.body: constant max backedge-taken count is -1 |
479 |
| -; PTR16_IDX32-NEXT: Loop %for.body: symbolic max backedge-taken count is (-2 + ptrtoint (ptr @sext_like_noop to i32))<nsw> |
480 |
| -; PTR16_IDX32-NEXT: Loop %for.body: Predicated backedge-taken count is (-2 + ptrtoint (ptr @sext_like_noop to i32))<nsw> |
481 |
| -; PTR16_IDX32-NEXT: Predicates: |
482 |
| -; PTR16_IDX32: Loop %for.body: Trip multiple is 1 |
483 |
| -; |
484 | 387 | entry:
|
485 | 388 | %cmp6 = icmp sgt i32 %n, 1
|
486 | 389 | br label %for.body
|
|
0 commit comments