|
1 | | -; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6 |
2 | | -; RUN: opt < %s -passes=loop-interchange \ |
3 | | -; RUN: -verify-dom-info -verify-loop-info -verify-loop-lcssa -S 2>&1 | FileCheck %s |
| 1 | +; RUN: opt < %s -passes=loop-interchange -pass-remarks-missed='loop-interchange' -pass-remarks-output=%t \ |
| 2 | +; RUN: -verify-dom-info -verify-loop-info -verify-loop-lcssa |
| 3 | +; RUN: FileCheck --input-file=%t %s |
4 | 4 |
|
5 | 5 | ;; The original code: |
6 | 6 | ;; |
|
17 | 17 | ;; We need to treat this as `*`, not `<`. See issue #123920 for details. |
18 | 18 | ;; In conclusion, we must not interchange the loops. |
19 | 19 |
|
| 20 | +; CHECK: --- !Missed |
| 21 | +; CHECK-NEXT: Pass: loop-interchange |
| 22 | +; CHECK-NEXT: Name: Dependence |
| 23 | +; CHECK-NEXT: Function: f |
| 24 | +; CHECK-NEXT: Args: |
| 25 | +; CHECK-NEXT: - String: All loops have dependencies in all directions. |
| 26 | +; CHECK-NEXT: ... |
| 27 | + |
| 28 | + |
20 | 29 | @a = dso_local global [16 x [16 x [16 x i32]]] zeroinitializer, align 4 |
21 | 30 |
|
22 | 31 | define dso_local void @f() { |
23 | | -; CHECK-LABEL: define dso_local void @f() { |
24 | | -; CHECK-NEXT: [[ENTRY:.*]]: |
25 | | -; CHECK-NEXT: br label %[[FOR_COND1_PREHEADER:.*]] |
26 | | -; CHECK: [[FOR_COND1_PREHEADER]]: |
27 | | -; CHECK-NEXT: [[I_039:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[INC26:%.*]], %[[FOR_COND_CLEANUP3:.*]] ] |
28 | | -; CHECK-NEXT: [[SUB:%.*]] = add nuw nsw i32 [[I_039]], 3 |
29 | | -; CHECK-NEXT: [[IDXPROM:%.*]] = zext nneg i32 [[SUB]] to i64 |
30 | | -; CHECK-NEXT: [[MUL:%.*]] = shl nuw nsw i32 [[I_039]], 1 |
31 | | -; CHECK-NEXT: [[IDXPROM13:%.*]] = zext nneg i32 [[MUL]] to i64 |
32 | | -; CHECK-NEXT: br label %[[FOR_COND5_PREHEADER:.*]] |
33 | | -; CHECK: [[FOR_COND_CLEANUP:.*]]: |
34 | | -; CHECK-NEXT: ret void |
35 | | -; CHECK: [[FOR_COND5_PREHEADER]]: |
36 | | -; CHECK-NEXT: [[J_038:%.*]] = phi i32 [ 1, %[[FOR_COND1_PREHEADER]] ], [ [[INC23:%.*]], %[[FOR_COND_CLEANUP7:.*]] ] |
37 | | -; CHECK-NEXT: [[IDXPROM11:%.*]] = zext nneg i32 [[J_038]] to i64 |
38 | | -; CHECK-NEXT: [[SUB18:%.*]] = add nsw i32 [[J_038]], -1 |
39 | | -; CHECK-NEXT: [[IDXPROM19:%.*]] = sext i32 [[SUB18]] to i64 |
40 | | -; CHECK-NEXT: br label %[[FOR_BODY8:.*]] |
41 | | -; CHECK: [[FOR_COND_CLEANUP3]]: |
42 | | -; CHECK-NEXT: [[INC26]] = add nuw nsw i32 [[I_039]], 1 |
43 | | -; CHECK-NEXT: [[CMP:%.*]] = icmp samesign ult i32 [[I_039]], 3 |
44 | | -; CHECK-NEXT: br i1 [[CMP]], label %[[FOR_COND1_PREHEADER]], label %[[FOR_COND_CLEANUP]] |
45 | | -; CHECK: [[FOR_COND_CLEANUP7]]: |
46 | | -; CHECK-NEXT: [[INC23]] = add nuw nsw i32 [[J_038]], 1 |
47 | | -; CHECK-NEXT: [[CMP2:%.*]] = icmp samesign ult i32 [[J_038]], 7 |
48 | | -; CHECK-NEXT: br i1 [[CMP2]], label %[[FOR_COND5_PREHEADER]], label %[[FOR_COND_CLEANUP3]] |
49 | | -; CHECK: [[FOR_BODY8]]: |
50 | | -; CHECK-NEXT: [[K_037:%.*]] = phi i32 [ 1, %[[FOR_COND5_PREHEADER]] ], [ [[ADD15:%.*]], %[[FOR_BODY8]] ] |
51 | | -; CHECK-NEXT: [[IDXPROM9:%.*]] = zext nneg i32 [[K_037]] to i64 |
52 | | -; CHECK-NEXT: [[ARRAYIDX12:%.*]] = getelementptr inbounds nuw [16 x [16 x [16 x i32]]], ptr @a, i64 0, i64 [[IDXPROM]], i64 [[IDXPROM9]], i64 [[IDXPROM11]] |
53 | | -; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[ARRAYIDX12]], align 4 |
54 | | -; CHECK-NEXT: [[ADD15]] = add nuw nsw i32 [[K_037]], 1 |
55 | | -; CHECK-NEXT: [[IDXPROM16:%.*]] = zext nneg i32 [[ADD15]] to i64 |
56 | | -; CHECK-NEXT: [[ARRAYIDX20:%.*]] = getelementptr inbounds [16 x [16 x [16 x i32]]], ptr @a, i64 0, i64 [[IDXPROM13]], i64 [[IDXPROM16]], i64 [[IDXPROM19]] |
57 | | -; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[ARRAYIDX20]], align 4 |
58 | | -; CHECK-NEXT: [[SUB21:%.*]] = sub nsw i32 [[TMP1]], [[TMP0]] |
59 | | -; CHECK-NEXT: store i32 [[SUB21]], ptr [[ARRAYIDX20]], align 4 |
60 | | -; CHECK-NEXT: [[CMP6:%.*]] = icmp samesign ult i32 [[K_037]], 7 |
61 | | -; CHECK-NEXT: br i1 [[CMP6]], label %[[FOR_BODY8]], label %[[FOR_COND_CLEANUP7]] |
62 | | -; |
63 | 32 | entry: |
64 | 33 | br label %for.cond1.preheader |
65 | 34 |
|
|
0 commit comments