xref: /llvm-project/polly/test/ScopInfo/process_added_dimensions.ll (revision e1f056f692d869708c1898d9d65a69ac5584a0ed)
1; RUN: opt %loadNPMPolly -polly-stmt-granularity=bb '-passes=print<polly-function-scops>' -disable-output < %s 2>&1 | FileCheck %s
2
3; CHECK:      Context:
4; CHECK-NEXT: {  :  }
5; CHECK:      Assumed Context:
6; CHECK-NEXT: {  :  }
7; CHECK:      Invalid Context:
8; CHECK-NEXT: {  : false }
9; CHECK:      Statements {
10; CHECK-NEXT:     Stmt_for_cond40_preheader_4
11; CHECK-NEXT:         Domain :=
12; CHECK-NEXT:             { Stmt_for_cond40_preheader_4[i0] : 0 <= i0 <= 1 };
13; CHECK-NEXT:         Schedule :=
14; CHECK-NEXT:             { Stmt_for_cond40_preheader_4[i0] -> [i0, 0] };
15; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 0]
16; CHECK-NEXT:             { Stmt_for_cond40_preheader_4[i0] -> MemRef_call[5, 5, 0] };
17; CHECK-NEXT:     Stmt_for_cond40_preheader_5
18; CHECK-NEXT:         Domain :=
19; CHECK-NEXT:             { Stmt_for_cond40_preheader_5[i0] : 0 <= i0 <= 1 };
20; CHECK-NEXT:         Schedule :=
21; CHECK-NEXT:             { Stmt_for_cond40_preheader_5[i0] -> [i0, 1] };
22; CHECK-NEXT:         ReadAccess :=    [Reduction Type: NONE] [Scalar: 0]
23; CHECK-NEXT:             { Stmt_for_cond40_preheader_5[i0] -> MemRef_call[5, 5, 0] };
24; CHECK-NEXT:         MustWriteAccess :=    [Reduction Type: NONE] [Scalar: 1]
25; CHECK-NEXT:             { Stmt_for_cond40_preheader_5[i0] -> MemRef__pre160[] };
26; CHECK-NEXT: }
27
28target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
29target triple = "x86_64-unknown-linux-gnu"
30
31declare noalias ptr @malloc()
32
33define i32 @main() {
34entry:
35  %call = tail call noalias ptr @malloc()
36  %arrayidx51.5.phi.trans.insert = getelementptr inbounds i8, ptr %call, i64 8960
37  br label %for.cond40.preheader.4
38
39for.end76:                                        ; preds = %for.inc71.5
40  ret i32 %.pre160
41
42for.cond40.preheader.4:                           ; preds = %for.inc71.5, %entry
43  %t.0131 = phi i32 [ 0, %entry ], [ %inc75, %for.inc71.5 ]
44  %indvars.iv.next135 = add nuw nsw i64 0, 1
45  %0 = trunc i64 %indvars.iv.next135 to i32
46  %indvars.iv.next = add nuw nsw i64 0, 1
47  %exitcond = icmp eq i64 %indvars.iv.next, 64
48  %exitcond137 = icmp eq i32 %0, 6
49  %indvars.iv.next135.1 = add nuw nsw i64 1, 1
50  %indvars.iv.next.1 = add nuw nsw i64 0, 1
51  %exitcond.1 = icmp eq i64 %indvars.iv.next.1, 64
52  %lftr.wideiv.1 = trunc i64 %indvars.iv.next135.1 to i32
53  %exitcond137.1 = icmp eq i32 %lftr.wideiv.1, 6
54  %indvars.iv.next135.2 = add nuw nsw i64 2, 1
55  %indvars.iv.next.2 = add nuw nsw i64 0, 1
56  %exitcond.2 = icmp eq i64 %indvars.iv.next.2, 64
57  %lftr.wideiv.2 = trunc i64 %indvars.iv.next135.2 to i32
58  %exitcond137.2 = icmp eq i32 %lftr.wideiv.2, 6
59  %indvars.iv.next135.3 = add nuw nsw i64 3, 1
60  %indvars.iv.next.3 = add nuw nsw i64 0, 1
61  %exitcond.3 = icmp eq i64 %indvars.iv.next.3, 64
62  %lftr.wideiv.3 = trunc i64 %indvars.iv.next135.3 to i32
63  %exitcond137.3 = icmp eq i32 %lftr.wideiv.3, 6
64  %indvars.iv.next135.4 = add nuw nsw i64 4, 1
65  %indvars.iv.next.4 = add nuw nsw i64 0, 1
66  %exitcond.4 = icmp eq i64 %indvars.iv.next.4, 64
67  %lftr.wideiv.4 = trunc i64 %indvars.iv.next135.4 to i32
68  %exitcond137.4 = icmp eq i32 %lftr.wideiv.4, 6
69  %arrayidx23.5 = getelementptr inbounds [6 x [6 x [64 x i32]]], ptr %call, i64 0, i64 5, i64 5, i64 0
70  store i32 36, ptr %arrayidx23.5, align 4
71  %indvars.iv.next.5 = add nuw nsw i64 0, 1
72  %exitcond.5 = icmp eq i64 %indvars.iv.next.5, 64
73  %indvars.iv.next143 = add nuw nsw i64 1, 1
74  %exitcond145 = icmp eq i64 %indvars.iv.next143, 64
75  %indvars.iv.next149 = add nuw nsw i64 0, 1
76  %lftr.wideiv150 = trunc i64 %indvars.iv.next149 to i32
77  %exitcond151 = icmp eq i32 %lftr.wideiv150, 6
78  %indvars.iv.next143.1 = add nuw nsw i64 1, 1
79  %exitcond145.1 = icmp eq i64 %indvars.iv.next143.1, 64
80  %indvars.iv.next149.1 = add nuw nsw i64 1, 1
81  %lftr.wideiv150.1 = trunc i64 %indvars.iv.next149.1 to i32
82  %exitcond151.1 = icmp eq i32 %lftr.wideiv150.1, 6
83  %indvars.iv.next143.2 = add nuw nsw i64 1, 1
84  %exitcond145.2 = icmp eq i64 %indvars.iv.next143.2, 64
85  %indvars.iv.next149.2 = add nuw nsw i64 2, 1
86  %lftr.wideiv150.2 = trunc i64 %indvars.iv.next149.2 to i32
87  %exitcond151.2 = icmp eq i32 %lftr.wideiv150.2, 6
88  %indvars.iv.next143.3 = add nuw nsw i64 1, 1
89  %exitcond145.3 = icmp eq i64 %indvars.iv.next143.3, 64
90  %indvars.iv.next149.3 = add nuw nsw i64 3, 1
91  %lftr.wideiv150.3 = trunc i64 %indvars.iv.next149.3 to i32
92  %exitcond151.3 = icmp eq i32 %lftr.wideiv150.3, 6
93  br label %for.body44.4
94
95for.body44.4:                                     ; preds = %for.body44.4, %for.cond40.preheader.4
96  %indvars.iv142.4 = phi i64 [ 1, %for.cond40.preheader.4 ], [ %indvars.iv.next143.4, %for.body44.4 ]
97  %indvars.iv.next143.4 = add nuw nsw i64 %indvars.iv142.4, 1
98  %exitcond145.4 = icmp eq i64 %indvars.iv.next143.4, 64
99  br i1 %exitcond145.4, label %for.cond40.preheader.5, label %for.body44.4
100
101for.cond40.preheader.5:                           ; preds = %for.body44.4
102  %indvars.iv.next149.4 = add nuw nsw i64 4, 1
103  %lftr.wideiv150.4 = trunc i64 %indvars.iv.next149.4 to i32
104  %exitcond151.4 = icmp eq i32 %lftr.wideiv150.4, 6
105  %.pre160 = load i32, ptr %arrayidx51.5.phi.trans.insert, align 4
106  br label %for.body44.5
107
108for.body44.5:                                     ; preds = %for.body44.5, %for.cond40.preheader.5
109  %indvars.iv142.5 = phi i64 [ 1, %for.cond40.preheader.5 ], [ %indvars.iv.next143.5, %for.body44.5 ]
110  %indvars.iv.next143.5 = add nuw nsw i64 %indvars.iv142.5, 1
111  %exitcond145.5 = icmp eq i64 %indvars.iv.next143.5, 64
112  br i1 %exitcond145.5, label %for.inc71.5, label %for.body44.5
113
114for.inc71.5:                                      ; preds = %for.body44.5
115  %inc75 = add nuw nsw i32 %t.0131, 1
116  %exitcond155 = icmp eq i32 %inc75, 2
117  br i1 %exitcond155, label %for.end76, label %for.cond40.preheader.4
118}
119