blob: 12e03bbb108cc95a8bf723fdad3fdda84ffa860b [file] [log] [blame]
Sebastian Popf05ba892014-02-21 18:15:18 +00001; RUN: opt < %s -analyze -basicaa -da -da-delinearize=false | FileCheck %s
2; RUN: opt < %s -analyze -basicaa -da -da-delinearize | FileCheck %s -check-prefix=DELIN
Sebastian Pop59b61b92012-10-11 07:32:34 +00003
4; ModuleID = 'Banerjee.bc'
5target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
6target triple = "x86_64-apple-macosx10.6.0"
7
8
9;; for (long int i = 1; i <= 10; i++)
10;; for (long int j = 1; j <= 10; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +000011;; A[10*i + j] = 0;
12;; *B++ = A[10*i + j - 1];
Sebastian Pop59b61b92012-10-11 07:32:34 +000013
14define void @banerjee0(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
15entry:
16 br label %for.cond1.preheader
Sebastian Popa1cc34b2013-11-12 22:47:30 +000017; CHECK: 'Dependence Analysis' for function 'banerjee0':
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000018; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000019; CHECK: da analyze - flow [<= <>]!
20; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000021; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000022; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +000023; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000024
Sebastian Popf05ba892014-02-21 18:15:18 +000025; DELIN: 'Dependence Analysis' for function 'banerjee0':
26; DELIN: da analyze - none!
Sebastian Pop448712b2014-05-07 18:01:20 +000027; DELIN: da analyze - flow [<= <>]!
Sebastian Popf05ba892014-02-21 18:15:18 +000028; DELIN: da analyze - confused!
29; DELIN: da analyze - none!
30; DELIN: da analyze - confused!
31; DELIN: da analyze - none!
32
Sebastian Pop59b61b92012-10-11 07:32:34 +000033for.cond1.preheader: ; preds = %entry, %for.inc7
34 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc7 ]
35 %i.03 = phi i64 [ 1, %entry ], [ %inc8, %for.inc7 ]
36 br label %for.body3
37
38for.body3: ; preds = %for.cond1.preheader, %for.body3
39 %j.02 = phi i64 [ 1, %for.cond1.preheader ], [ %inc, %for.body3 ]
40 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
41 %mul = mul nsw i64 %i.03, 10
42 %add = add nsw i64 %mul, %j.02
David Blaikie79e6c742015-02-27 19:29:02 +000043 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +000044 store i64 0, i64* %arrayidx, align 8
45 %mul4 = mul nsw i64 %i.03, 10
46 %add5 = add nsw i64 %mul4, %j.02
47 %sub = add nsw i64 %add5, -1
David Blaikie79e6c742015-02-27 19:29:02 +000048 %arrayidx6 = getelementptr inbounds i64, i64* %A, i64 %sub
Sebastian Pop59b61b92012-10-11 07:32:34 +000049 %0 = load i64* %arrayidx6, align 8
David Blaikie79e6c742015-02-27 19:29:02 +000050 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +000051 store i64 %0, i64* %B.addr.11, align 8
52 %inc = add nsw i64 %j.02, 1
53 %exitcond = icmp ne i64 %inc, 11
54 br i1 %exitcond, label %for.body3, label %for.inc7
55
56for.inc7: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +000057 %scevgep = getelementptr i64, i64* %B.addr.04, i64 10
Sebastian Pop59b61b92012-10-11 07:32:34 +000058 %inc8 = add nsw i64 %i.03, 1
59 %exitcond5 = icmp ne i64 %inc8, 11
60 br i1 %exitcond5, label %for.cond1.preheader, label %for.end9
61
62for.end9: ; preds = %for.inc7
63 ret void
64}
65
66
67;; for (long int i = 1; i <= n; i++)
68;; for (long int j = 1; j <= m; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +000069;; A[10*i + j] = 0;
70;; *B++ = A[10*i + j - 1];
Sebastian Pop59b61b92012-10-11 07:32:34 +000071
72define void @banerjee1(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
73entry:
74 %cmp4 = icmp sgt i64 %n, 0
75 br i1 %cmp4, label %for.cond1.preheader.preheader, label %for.end9
76
Sebastian Popa1cc34b2013-11-12 22:47:30 +000077; CHECK: 'Dependence Analysis' for function 'banerjee1':
Preston Briggs1084fa22012-11-27 06:41:46 +000078; CHECK: da analyze - output [* *]!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000079; CHECK: da analyze - flow [* <>]!
80; CHECK: da analyze - confused!
Preston Briggs1084fa22012-11-27 06:41:46 +000081; CHECK: da analyze - input [* *]!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000082; CHECK: da analyze - confused!
Preston Briggs1084fa22012-11-27 06:41:46 +000083; CHECK: da analyze - output [* *]!
Benjamin Kramer3eb15632012-11-13 12:12:02 +000084
Sebastian Popf05ba892014-02-21 18:15:18 +000085; DELIN: 'Dependence Analysis' for function 'banerjee1':
Sebastian Pop448712b2014-05-07 18:01:20 +000086; DELIN: da analyze - output [* *]!
87; DELIN: da analyze - flow [* <>]!
Sebastian Popf05ba892014-02-21 18:15:18 +000088; DELIN: da analyze - confused!
Sebastian Pop448712b2014-05-07 18:01:20 +000089; DELIN: da analyze - input [* *]!
Sebastian Popf05ba892014-02-21 18:15:18 +000090; DELIN: da analyze - confused!
91; DELIN: da analyze - output [* *]!
92
Sebastian Pop59b61b92012-10-11 07:32:34 +000093for.cond1.preheader.preheader: ; preds = %entry
94 %0 = add i64 %n, 1
95 br label %for.cond1.preheader
96
97for.cond1.preheader: ; preds = %for.cond1.preheader.preheader, %for.inc7
98 %B.addr.06 = phi i64* [ %B.addr.1.lcssa, %for.inc7 ], [ %B, %for.cond1.preheader.preheader ]
99 %i.05 = phi i64 [ %inc8, %for.inc7 ], [ 1, %for.cond1.preheader.preheader ]
100 %1 = add i64 %m, 1
101 %cmp21 = icmp sgt i64 %m, 0
102 br i1 %cmp21, label %for.body3.preheader, label %for.inc7
103
104for.body3.preheader: ; preds = %for.cond1.preheader
105 br label %for.body3
106
107for.body3: ; preds = %for.body3.preheader, %for.body3
108 %j.03 = phi i64 [ %inc, %for.body3 ], [ 1, %for.body3.preheader ]
109 %B.addr.12 = phi i64* [ %incdec.ptr, %for.body3 ], [ %B.addr.06, %for.body3.preheader ]
110 %mul = mul nsw i64 %i.05, 10
111 %add = add nsw i64 %mul, %j.03
David Blaikie79e6c742015-02-27 19:29:02 +0000112 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000113 store i64 0, i64* %arrayidx, align 8
114 %mul4 = mul nsw i64 %i.05, 10
115 %add5 = add nsw i64 %mul4, %j.03
116 %sub = add nsw i64 %add5, -1
David Blaikie79e6c742015-02-27 19:29:02 +0000117 %arrayidx6 = getelementptr inbounds i64, i64* %A, i64 %sub
Sebastian Pop59b61b92012-10-11 07:32:34 +0000118 %2 = load i64* %arrayidx6, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000119 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.12, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000120 store i64 %2, i64* %B.addr.12, align 8
121 %inc = add nsw i64 %j.03, 1
122 %exitcond = icmp eq i64 %inc, %1
123 br i1 %exitcond, label %for.inc7.loopexit, label %for.body3
124
125for.inc7.loopexit: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000126 %scevgep = getelementptr i64, i64* %B.addr.06, i64 %m
Sebastian Pop59b61b92012-10-11 07:32:34 +0000127 br label %for.inc7
128
129for.inc7: ; preds = %for.inc7.loopexit, %for.cond1.preheader
130 %B.addr.1.lcssa = phi i64* [ %B.addr.06, %for.cond1.preheader ], [ %scevgep, %for.inc7.loopexit ]
131 %inc8 = add nsw i64 %i.05, 1
132 %exitcond7 = icmp eq i64 %inc8, %0
133 br i1 %exitcond7, label %for.end9.loopexit, label %for.cond1.preheader
134
135for.end9.loopexit: ; preds = %for.inc7
136 br label %for.end9
137
138for.end9: ; preds = %for.end9.loopexit, %entry
139 ret void
140}
141
142
143;; for (long int i = 0; i < 10; i++)
144;; for (long int j = 0; j < 10; j++) {
145;; A[10*i + j] = 0;
146;; *B++ = A[10*i + j + 100];
147
148define void @banerjee2(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
149entry:
150 br label %for.cond1.preheader
151
Sebastian Popa1cc34b2013-11-12 22:47:30 +0000152; CHECK: 'Dependence Analysis' for function 'banerjee2':
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000153; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000154; CHECK: da analyze - none!
155; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000156; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000157; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000158; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000159
Sebastian Popf05ba892014-02-21 18:15:18 +0000160; DELIN: 'Dependence Analysis' for function 'banerjee2':
161; DELIN: da analyze - none!
162; DELIN: da analyze - none!
163; DELIN: da analyze - confused!
164; DELIN: da analyze - none!
165; DELIN: da analyze - confused!
166; DELIN: da analyze - none!
167
Sebastian Pop59b61b92012-10-11 07:32:34 +0000168for.cond1.preheader: ; preds = %entry, %for.inc8
169 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc8 ]
170 %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]
171 br label %for.body3
172
173for.body3: ; preds = %for.cond1.preheader, %for.body3
174 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
175 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
176 %mul = mul nsw i64 %i.03, 10
177 %add = add nsw i64 %mul, %j.02
David Blaikie79e6c742015-02-27 19:29:02 +0000178 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000179 store i64 0, i64* %arrayidx, align 8
180 %mul4 = mul nsw i64 %i.03, 10
181 %add5 = add nsw i64 %mul4, %j.02
182 %add6 = add nsw i64 %add5, 100
David Blaikie79e6c742015-02-27 19:29:02 +0000183 %arrayidx7 = getelementptr inbounds i64, i64* %A, i64 %add6
Sebastian Pop59b61b92012-10-11 07:32:34 +0000184 %0 = load i64* %arrayidx7, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000185 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000186 store i64 %0, i64* %B.addr.11, align 8
187 %inc = add nsw i64 %j.02, 1
188 %exitcond = icmp ne i64 %inc, 10
189 br i1 %exitcond, label %for.body3, label %for.inc8
190
191for.inc8: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000192 %scevgep = getelementptr i64, i64* %B.addr.04, i64 10
Sebastian Pop59b61b92012-10-11 07:32:34 +0000193 %inc9 = add nsw i64 %i.03, 1
194 %exitcond5 = icmp ne i64 %inc9, 10
195 br i1 %exitcond5, label %for.cond1.preheader, label %for.end10
196
197for.end10: ; preds = %for.inc8
198 ret void
199}
200
201
202;; for (long int i = 0; i < 10; i++)
203;; for (long int j = 0; j < 10; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000204;; A[10*i + j] = 0;
205;; *B++ = A[10*i + j + 99];
Sebastian Pop59b61b92012-10-11 07:32:34 +0000206
207define void @banerjee3(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
208entry:
209 br label %for.cond1.preheader
210
Sebastian Popa1cc34b2013-11-12 22:47:30 +0000211; CHECK: 'Dependence Analysis' for function 'banerjee3':
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000212; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000213; CHECK: da analyze - flow [> >]!
214; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000215; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000216; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000217; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000218
Sebastian Popf05ba892014-02-21 18:15:18 +0000219; DELIN: 'Dependence Analysis' for function 'banerjee3':
220; DELIN: da analyze - none!
Sebastian Pop448712b2014-05-07 18:01:20 +0000221; DELIN: da analyze - flow [> >]!
Sebastian Popf05ba892014-02-21 18:15:18 +0000222; DELIN: da analyze - confused!
223; DELIN: da analyze - none!
224; DELIN: da analyze - confused!
225; DELIN: da analyze - none!
226
Sebastian Pop59b61b92012-10-11 07:32:34 +0000227for.cond1.preheader: ; preds = %entry, %for.inc8
228 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc8 ]
229 %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]
230 br label %for.body3
231
232for.body3: ; preds = %for.cond1.preheader, %for.body3
233 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
234 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
235 %mul = mul nsw i64 %i.03, 10
236 %add = add nsw i64 %mul, %j.02
David Blaikie79e6c742015-02-27 19:29:02 +0000237 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000238 store i64 0, i64* %arrayidx, align 8
239 %mul4 = mul nsw i64 %i.03, 10
240 %add5 = add nsw i64 %mul4, %j.02
241 %add6 = add nsw i64 %add5, 99
David Blaikie79e6c742015-02-27 19:29:02 +0000242 %arrayidx7 = getelementptr inbounds i64, i64* %A, i64 %add6
Sebastian Pop59b61b92012-10-11 07:32:34 +0000243 %0 = load i64* %arrayidx7, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000244 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000245 store i64 %0, i64* %B.addr.11, align 8
246 %inc = add nsw i64 %j.02, 1
247 %exitcond = icmp ne i64 %inc, 10
248 br i1 %exitcond, label %for.body3, label %for.inc8
249
250for.inc8: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000251 %scevgep = getelementptr i64, i64* %B.addr.04, i64 10
Sebastian Pop59b61b92012-10-11 07:32:34 +0000252 %inc9 = add nsw i64 %i.03, 1
253 %exitcond5 = icmp ne i64 %inc9, 10
254 br i1 %exitcond5, label %for.cond1.preheader, label %for.end10
255
256for.end10: ; preds = %for.inc8
257 ret void
258}
259
260
261;; for (long int i = 0; i < 10; i++)
262;; for (long int j = 0; j < 10; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000263;; A[10*i + j] = 0;
264;; *B++ = A[10*i + j - 100];
Sebastian Pop59b61b92012-10-11 07:32:34 +0000265
266define void @banerjee4(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
267entry:
268 br label %for.cond1.preheader
269
Sebastian Popa1cc34b2013-11-12 22:47:30 +0000270; CHECK: 'Dependence Analysis' for function 'banerjee4':
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000271; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000272; CHECK: da analyze - none!
273; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000274; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000275; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000276; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000277
Sebastian Popf05ba892014-02-21 18:15:18 +0000278; DELIN: 'Dependence Analysis' for function 'banerjee4':
279; DELIN: da analyze - none!
280; DELIN: da analyze - none!
281; DELIN: da analyze - confused!
282; DELIN: da analyze - none!
283; DELIN: da analyze - confused!
284; DELIN: da analyze - none!
285
Sebastian Pop59b61b92012-10-11 07:32:34 +0000286for.cond1.preheader: ; preds = %entry, %for.inc7
287 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc7 ]
288 %i.03 = phi i64 [ 0, %entry ], [ %inc8, %for.inc7 ]
289 br label %for.body3
290
291for.body3: ; preds = %for.cond1.preheader, %for.body3
292 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
293 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
294 %mul = mul nsw i64 %i.03, 10
295 %add = add nsw i64 %mul, %j.02
David Blaikie79e6c742015-02-27 19:29:02 +0000296 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000297 store i64 0, i64* %arrayidx, align 8
298 %mul4 = mul nsw i64 %i.03, 10
299 %add5 = add nsw i64 %mul4, %j.02
300 %sub = add nsw i64 %add5, -100
David Blaikie79e6c742015-02-27 19:29:02 +0000301 %arrayidx6 = getelementptr inbounds i64, i64* %A, i64 %sub
Sebastian Pop59b61b92012-10-11 07:32:34 +0000302 %0 = load i64* %arrayidx6, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000303 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000304 store i64 %0, i64* %B.addr.11, align 8
305 %inc = add nsw i64 %j.02, 1
306 %exitcond = icmp ne i64 %inc, 10
307 br i1 %exitcond, label %for.body3, label %for.inc7
308
309for.inc7: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000310 %scevgep = getelementptr i64, i64* %B.addr.04, i64 10
Sebastian Pop59b61b92012-10-11 07:32:34 +0000311 %inc8 = add nsw i64 %i.03, 1
312 %exitcond5 = icmp ne i64 %inc8, 10
313 br i1 %exitcond5, label %for.cond1.preheader, label %for.end9
314
315for.end9: ; preds = %for.inc7
316 ret void
317}
318
319
320;; for (long int i = 0; i < 10; i++)
321;; for (long int j = 0; j < 10; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000322;; A[10*i + j] = 0;
323;; *B++ = A[10*i + j - 99];
Sebastian Pop59b61b92012-10-11 07:32:34 +0000324
325define void @banerjee5(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
326entry:
327 br label %for.cond1.preheader
328
Sebastian Popa1cc34b2013-11-12 22:47:30 +0000329; CHECK: 'Dependence Analysis' for function 'banerjee5':
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000330; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000331; CHECK: da analyze - flow [< <]!
332; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000333; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000334; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000335; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000336
Sebastian Popf05ba892014-02-21 18:15:18 +0000337; DELIN: 'Dependence Analysis' for function 'banerjee5':
338; DELIN: da analyze - none!
Sebastian Pop448712b2014-05-07 18:01:20 +0000339; DELIN: da analyze - flow [< <]!
Sebastian Popf05ba892014-02-21 18:15:18 +0000340; DELIN: da analyze - confused!
341; DELIN: da analyze - none!
342; DELIN: da analyze - confused!
343; DELIN: da analyze - none!
344
Sebastian Pop59b61b92012-10-11 07:32:34 +0000345for.cond1.preheader: ; preds = %entry, %for.inc7
346 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc7 ]
347 %i.03 = phi i64 [ 0, %entry ], [ %inc8, %for.inc7 ]
348 br label %for.body3
349
350for.body3: ; preds = %for.cond1.preheader, %for.body3
351 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
352 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
353 %mul = mul nsw i64 %i.03, 10
354 %add = add nsw i64 %mul, %j.02
David Blaikie79e6c742015-02-27 19:29:02 +0000355 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000356 store i64 0, i64* %arrayidx, align 8
357 %mul4 = mul nsw i64 %i.03, 10
358 %add5 = add nsw i64 %mul4, %j.02
359 %sub = add nsw i64 %add5, -99
David Blaikie79e6c742015-02-27 19:29:02 +0000360 %arrayidx6 = getelementptr inbounds i64, i64* %A, i64 %sub
Sebastian Pop59b61b92012-10-11 07:32:34 +0000361 %0 = load i64* %arrayidx6, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000362 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000363 store i64 %0, i64* %B.addr.11, align 8
364 %inc = add nsw i64 %j.02, 1
365 %exitcond = icmp ne i64 %inc, 10
366 br i1 %exitcond, label %for.body3, label %for.inc7
367
368for.inc7: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000369 %scevgep = getelementptr i64, i64* %B.addr.04, i64 10
Sebastian Pop59b61b92012-10-11 07:32:34 +0000370 %inc8 = add nsw i64 %i.03, 1
371 %exitcond5 = icmp ne i64 %inc8, 10
372 br i1 %exitcond5, label %for.cond1.preheader, label %for.end9
373
374for.end9: ; preds = %for.inc7
375 ret void
376}
377
378
379;; for (long int i = 0; i < 10; i++)
380;; for (long int j = 0; j < 10; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000381;; A[10*i + j] = 0;
382;; *B++ = A[10*i + j + 9];
Sebastian Pop59b61b92012-10-11 07:32:34 +0000383
384define void @banerjee6(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
385entry:
386 br label %for.cond1.preheader
387
Sebastian Popa1cc34b2013-11-12 22:47:30 +0000388; CHECK: 'Dependence Analysis' for function 'banerjee6':
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000389; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000390; CHECK: da analyze - flow [=> <>]!
391; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000392; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000393; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000394; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000395
Sebastian Popf05ba892014-02-21 18:15:18 +0000396; DELIN: 'Dependence Analysis' for function 'banerjee6':
397; DELIN: da analyze - none!
Sebastian Pop448712b2014-05-07 18:01:20 +0000398; DELIN: da analyze - flow [=> <>]!
Sebastian Popf05ba892014-02-21 18:15:18 +0000399; DELIN: da analyze - confused!
400; DELIN: da analyze - none!
401; DELIN: da analyze - confused!
402; DELIN: da analyze - none!
403
Sebastian Pop59b61b92012-10-11 07:32:34 +0000404for.cond1.preheader: ; preds = %entry, %for.inc8
405 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc8 ]
406 %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]
407 br label %for.body3
408
409for.body3: ; preds = %for.cond1.preheader, %for.body3
410 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
411 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
412 %mul = mul nsw i64 %i.03, 10
413 %add = add nsw i64 %mul, %j.02
David Blaikie79e6c742015-02-27 19:29:02 +0000414 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000415 store i64 0, i64* %arrayidx, align 8
416 %mul4 = mul nsw i64 %i.03, 10
417 %add5 = add nsw i64 %mul4, %j.02
418 %add6 = add nsw i64 %add5, 9
David Blaikie79e6c742015-02-27 19:29:02 +0000419 %arrayidx7 = getelementptr inbounds i64, i64* %A, i64 %add6
Sebastian Pop59b61b92012-10-11 07:32:34 +0000420 %0 = load i64* %arrayidx7, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000421 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000422 store i64 %0, i64* %B.addr.11, align 8
423 %inc = add nsw i64 %j.02, 1
424 %exitcond = icmp ne i64 %inc, 10
425 br i1 %exitcond, label %for.body3, label %for.inc8
426
427for.inc8: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000428 %scevgep = getelementptr i64, i64* %B.addr.04, i64 10
Sebastian Pop59b61b92012-10-11 07:32:34 +0000429 %inc9 = add nsw i64 %i.03, 1
430 %exitcond5 = icmp ne i64 %inc9, 10
431 br i1 %exitcond5, label %for.cond1.preheader, label %for.end10
432
433for.end10: ; preds = %for.inc8
434 ret void
435}
436
437
438;; for (long int i = 0; i < 10; i++)
439;; for (long int j = 0; j < 10; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000440;; A[10*i + j] = 0;
441;; *B++ = A[10*i + j + 10];
Sebastian Pop59b61b92012-10-11 07:32:34 +0000442
443define void @banerjee7(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
444entry:
445 br label %for.cond1.preheader
446
Sebastian Popa1cc34b2013-11-12 22:47:30 +0000447; CHECK: 'Dependence Analysis' for function 'banerjee7':
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000448; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000449; CHECK: da analyze - flow [> <=]!
450; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000451; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000452; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000453; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000454
Sebastian Popf05ba892014-02-21 18:15:18 +0000455; DELIN: 'Dependence Analysis' for function 'banerjee7':
456; DELIN: da analyze - none!
Sebastian Pop448712b2014-05-07 18:01:20 +0000457; DELIN: da analyze - flow [> <=]!
Sebastian Popf05ba892014-02-21 18:15:18 +0000458; DELIN: da analyze - confused!
459; DELIN: da analyze - none!
460; DELIN: da analyze - confused!
461; DELIN: da analyze - none!
462
Sebastian Pop59b61b92012-10-11 07:32:34 +0000463for.cond1.preheader: ; preds = %entry, %for.inc8
464 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc8 ]
465 %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]
466 br label %for.body3
467
468for.body3: ; preds = %for.cond1.preheader, %for.body3
469 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
470 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
471 %mul = mul nsw i64 %i.03, 10
472 %add = add nsw i64 %mul, %j.02
David Blaikie79e6c742015-02-27 19:29:02 +0000473 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000474 store i64 0, i64* %arrayidx, align 8
475 %mul4 = mul nsw i64 %i.03, 10
476 %add5 = add nsw i64 %mul4, %j.02
477 %add6 = add nsw i64 %add5, 10
David Blaikie79e6c742015-02-27 19:29:02 +0000478 %arrayidx7 = getelementptr inbounds i64, i64* %A, i64 %add6
Sebastian Pop59b61b92012-10-11 07:32:34 +0000479 %0 = load i64* %arrayidx7, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000480 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000481 store i64 %0, i64* %B.addr.11, align 8
482 %inc = add nsw i64 %j.02, 1
483 %exitcond = icmp ne i64 %inc, 10
484 br i1 %exitcond, label %for.body3, label %for.inc8
485
486for.inc8: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000487 %scevgep = getelementptr i64, i64* %B.addr.04, i64 10
Sebastian Pop59b61b92012-10-11 07:32:34 +0000488 %inc9 = add nsw i64 %i.03, 1
489 %exitcond5 = icmp ne i64 %inc9, 10
490 br i1 %exitcond5, label %for.cond1.preheader, label %for.end10
491
492for.end10: ; preds = %for.inc8
493 ret void
494}
495
496
497;; for (long int i = 0; i < 10; i++)
498;; for (long int j = 0; j < 10; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000499;; A[10*i + j] = 0;
500;; *B++ = A[10*i + j + 11];
Sebastian Pop59b61b92012-10-11 07:32:34 +0000501
502define void @banerjee8(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
503entry:
504 br label %for.cond1.preheader
505
Sebastian Popa1cc34b2013-11-12 22:47:30 +0000506; CHECK: 'Dependence Analysis' for function 'banerjee8':
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000507; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000508; CHECK: da analyze - flow [> <>]!
509; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000510; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000511; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000512; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000513
Sebastian Popf05ba892014-02-21 18:15:18 +0000514; DELIN: 'Dependence Analysis' for function 'banerjee8':
515; DELIN: da analyze - none!
Sebastian Pop448712b2014-05-07 18:01:20 +0000516; DELIN: da analyze - flow [> <>]!
Sebastian Popf05ba892014-02-21 18:15:18 +0000517; DELIN: da analyze - confused!
518; DELIN: da analyze - none!
519; DELIN: da analyze - confused!
520; DELIN: da analyze - none!
521
Sebastian Pop59b61b92012-10-11 07:32:34 +0000522for.cond1.preheader: ; preds = %entry, %for.inc8
523 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc8 ]
524 %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]
525 br label %for.body3
526
527for.body3: ; preds = %for.cond1.preheader, %for.body3
528 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
529 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
530 %mul = mul nsw i64 %i.03, 10
531 %add = add nsw i64 %mul, %j.02
David Blaikie79e6c742015-02-27 19:29:02 +0000532 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000533 store i64 0, i64* %arrayidx, align 8
534 %mul4 = mul nsw i64 %i.03, 10
535 %add5 = add nsw i64 %mul4, %j.02
536 %add6 = add nsw i64 %add5, 11
David Blaikie79e6c742015-02-27 19:29:02 +0000537 %arrayidx7 = getelementptr inbounds i64, i64* %A, i64 %add6
Sebastian Pop59b61b92012-10-11 07:32:34 +0000538 %0 = load i64* %arrayidx7, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000539 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000540 store i64 %0, i64* %B.addr.11, align 8
541 %inc = add nsw i64 %j.02, 1
542 %exitcond = icmp ne i64 %inc, 10
543 br i1 %exitcond, label %for.body3, label %for.inc8
544
545for.inc8: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000546 %scevgep = getelementptr i64, i64* %B.addr.04, i64 10
Sebastian Pop59b61b92012-10-11 07:32:34 +0000547 %inc9 = add nsw i64 %i.03, 1
548 %exitcond5 = icmp ne i64 %inc9, 10
549 br i1 %exitcond5, label %for.cond1.preheader, label %for.end10
550
551for.end10: ; preds = %for.inc8
552 ret void
553}
554
555
556;; for (long int i = 0; i < 20; i++)
557;; for (long int j = 0; j < 20; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000558;; A[30*i + 500*j] = 0;
559;; *B++ = A[i - 500*j + 11];
Sebastian Pop59b61b92012-10-11 07:32:34 +0000560
561define void @banerjee9(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
562entry:
563 br label %for.cond1.preheader
564
Sebastian Popa1cc34b2013-11-12 22:47:30 +0000565; CHECK: 'Dependence Analysis' for function 'banerjee9':
Preston Briggs1084fa22012-11-27 06:41:46 +0000566; CHECK: da analyze - output [* *]!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000567; CHECK: da analyze - flow [<= =|<]!
568; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000569; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000570; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000571; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000572
Sebastian Popf05ba892014-02-21 18:15:18 +0000573; DELIN: 'Dependence Analysis' for function 'banerjee9':
Sebastian Pop448712b2014-05-07 18:01:20 +0000574; DELIN: da analyze - output [* *]!
Sebastian Popf05ba892014-02-21 18:15:18 +0000575; DELIN: da analyze - flow [<= =|<]!
576; DELIN: da analyze - confused!
577; DELIN: da analyze - none!
578; DELIN: da analyze - confused!
579; DELIN: da analyze - none!
580
Sebastian Pop59b61b92012-10-11 07:32:34 +0000581for.cond1.preheader: ; preds = %entry, %for.inc8
582 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc8 ]
583 %i.03 = phi i64 [ 0, %entry ], [ %inc9, %for.inc8 ]
584 br label %for.body3
585
586for.body3: ; preds = %for.cond1.preheader, %for.body3
587 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
588 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
589 %mul = mul nsw i64 %i.03, 30
590 %mul4 = mul nsw i64 %j.02, 500
591 %add = add nsw i64 %mul, %mul4
David Blaikie79e6c742015-02-27 19:29:02 +0000592 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000593 store i64 0, i64* %arrayidx, align 8
594 %0 = mul i64 %j.02, -500
595 %sub = add i64 %i.03, %0
596 %add6 = add nsw i64 %sub, 11
David Blaikie79e6c742015-02-27 19:29:02 +0000597 %arrayidx7 = getelementptr inbounds i64, i64* %A, i64 %add6
Sebastian Pop59b61b92012-10-11 07:32:34 +0000598 %1 = load i64* %arrayidx7, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000599 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000600 store i64 %1, i64* %B.addr.11, align 8
601 %inc = add nsw i64 %j.02, 1
602 %exitcond = icmp ne i64 %inc, 20
603 br i1 %exitcond, label %for.body3, label %for.inc8
604
605for.inc8: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000606 %scevgep = getelementptr i64, i64* %B.addr.04, i64 20
Sebastian Pop59b61b92012-10-11 07:32:34 +0000607 %inc9 = add nsw i64 %i.03, 1
608 %exitcond5 = icmp ne i64 %inc9, 20
609 br i1 %exitcond5, label %for.cond1.preheader, label %for.end10
610
611for.end10: ; preds = %for.inc8
612 ret void
613}
614
615
616;; for (long int i = 0; i < 20; i++)
617;; for (long int j = 0; j < 20; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000618;; A[i + 500*j] = 0;
619;; *B++ = A[i - 500*j + 11];
Sebastian Pop59b61b92012-10-11 07:32:34 +0000620
621define void @banerjee10(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
622entry:
623 br label %for.cond1.preheader
624
Sebastian Popa1cc34b2013-11-12 22:47:30 +0000625; CHECK: 'Dependence Analysis' for function 'banerjee10':
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000626; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000627; CHECK: da analyze - flow [<> =]!
628; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000629; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000630; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000631; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000632
Sebastian Popf05ba892014-02-21 18:15:18 +0000633; DELIN: 'Dependence Analysis' for function 'banerjee10':
634; DELIN: da analyze - none!
635; DELIN: da analyze - flow [<> =]!
636; DELIN: da analyze - confused!
637; DELIN: da analyze - none!
638; DELIN: da analyze - confused!
639; DELIN: da analyze - none!
640
Sebastian Pop59b61b92012-10-11 07:32:34 +0000641for.cond1.preheader: ; preds = %entry, %for.inc7
642 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc7 ]
643 %i.03 = phi i64 [ 0, %entry ], [ %inc8, %for.inc7 ]
644 br label %for.body3
645
646for.body3: ; preds = %for.cond1.preheader, %for.body3
647 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
648 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
649 %mul = mul nsw i64 %j.02, 500
650 %add = add nsw i64 %i.03, %mul
David Blaikie79e6c742015-02-27 19:29:02 +0000651 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000652 store i64 0, i64* %arrayidx, align 8
653 %0 = mul i64 %j.02, -500
654 %sub = add i64 %i.03, %0
655 %add5 = add nsw i64 %sub, 11
David Blaikie79e6c742015-02-27 19:29:02 +0000656 %arrayidx6 = getelementptr inbounds i64, i64* %A, i64 %add5
Sebastian Pop59b61b92012-10-11 07:32:34 +0000657 %1 = load i64* %arrayidx6, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000658 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000659 store i64 %1, i64* %B.addr.11, align 8
660 %inc = add nsw i64 %j.02, 1
661 %exitcond = icmp ne i64 %inc, 20
662 br i1 %exitcond, label %for.body3, label %for.inc7
663
664for.inc7: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000665 %scevgep = getelementptr i64, i64* %B.addr.04, i64 20
Sebastian Pop59b61b92012-10-11 07:32:34 +0000666 %inc8 = add nsw i64 %i.03, 1
667 %exitcond5 = icmp ne i64 %inc8, 20
668 br i1 %exitcond5, label %for.cond1.preheader, label %for.end9
669
670for.end9: ; preds = %for.inc7
671 ret void
672}
673
674
675;; for (long int i = 0; i < 20; i++)
676;; for (long int j = 0; j < 20; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000677;; A[300*i + j] = 0;
678;; *B++ = A[250*i - j + 11];
Sebastian Pop59b61b92012-10-11 07:32:34 +0000679
680define void @banerjee11(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
681entry:
682 br label %for.cond1.preheader
683
Sebastian Popa1cc34b2013-11-12 22:47:30 +0000684; CHECK: 'Dependence Analysis' for function 'banerjee11':
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000685; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000686; CHECK: da analyze - flow [<= <>]!
687; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000688; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000689; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000690; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000691
Sebastian Popf05ba892014-02-21 18:15:18 +0000692; DELIN: 'Dependence Analysis' for function 'banerjee11':
693; DELIN: da analyze - none!
694; DELIN: da analyze - flow [<= <>]!
695; DELIN: da analyze - confused!
696; DELIN: da analyze - none!
697; DELIN: da analyze - confused!
698; DELIN: da analyze - none!
699
Sebastian Pop59b61b92012-10-11 07:32:34 +0000700for.cond1.preheader: ; preds = %entry, %for.inc7
701 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc7 ]
702 %i.03 = phi i64 [ 0, %entry ], [ %inc8, %for.inc7 ]
703 br label %for.body3
704
705for.body3: ; preds = %for.cond1.preheader, %for.body3
706 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
707 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
708 %mul = mul nsw i64 %i.03, 300
709 %add = add nsw i64 %mul, %j.02
David Blaikie79e6c742015-02-27 19:29:02 +0000710 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000711 store i64 0, i64* %arrayidx, align 8
712 %mul4 = mul nsw i64 %i.03, 250
713 %sub = sub nsw i64 %mul4, %j.02
714 %add5 = add nsw i64 %sub, 11
David Blaikie79e6c742015-02-27 19:29:02 +0000715 %arrayidx6 = getelementptr inbounds i64, i64* %A, i64 %add5
Sebastian Pop59b61b92012-10-11 07:32:34 +0000716 %0 = load i64* %arrayidx6, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000717 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000718 store i64 %0, i64* %B.addr.11, align 8
719 %inc = add nsw i64 %j.02, 1
720 %exitcond = icmp ne i64 %inc, 20
721 br i1 %exitcond, label %for.body3, label %for.inc7
722
723for.inc7: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000724 %scevgep = getelementptr i64, i64* %B.addr.04, i64 20
Sebastian Pop59b61b92012-10-11 07:32:34 +0000725 %inc8 = add nsw i64 %i.03, 1
726 %exitcond5 = icmp ne i64 %inc8, 20
727 br i1 %exitcond5, label %for.cond1.preheader, label %for.end9
728
729for.end9: ; preds = %for.inc7
730 ret void
731}
732
733
734;; for (long int i = 0; i < 20; i++)
735;; for (long int j = 0; j < 20; j++) {
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000736;; A[100*i + j] = 0;
737;; *B++ = A[100*i - j + 11];
Sebastian Pop59b61b92012-10-11 07:32:34 +0000738
739define void @banerjee12(i64* %A, i64* %B, i64 %m, i64 %n) nounwind uwtable ssp {
740entry:
741 br label %for.cond1.preheader
742
Sebastian Popa1cc34b2013-11-12 22:47:30 +0000743; CHECK: 'Dependence Analysis' for function 'banerjee12':
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000744; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000745; CHECK: da analyze - flow [= <>]!
746; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000747; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000748; CHECK: da analyze - confused!
Preston Briggs5cb8cfa2012-11-27 19:12:26 +0000749; CHECK: da analyze - none!
Benjamin Kramer3eb15632012-11-13 12:12:02 +0000750
Sebastian Popf05ba892014-02-21 18:15:18 +0000751; DELIN: 'Dependence Analysis' for function 'banerjee12':
752; DELIN: da analyze - none!
Sebastian Pop448712b2014-05-07 18:01:20 +0000753; DELIN: da analyze - flow [= <>]!
Sebastian Popf05ba892014-02-21 18:15:18 +0000754; DELIN: da analyze - confused!
755; DELIN: da analyze - none!
756; DELIN: da analyze - confused!
757; DELIN: da analyze - none!
758
Sebastian Pop59b61b92012-10-11 07:32:34 +0000759for.cond1.preheader: ; preds = %entry, %for.inc7
760 %B.addr.04 = phi i64* [ %B, %entry ], [ %scevgep, %for.inc7 ]
761 %i.03 = phi i64 [ 0, %entry ], [ %inc8, %for.inc7 ]
762 br label %for.body3
763
764for.body3: ; preds = %for.cond1.preheader, %for.body3
765 %j.02 = phi i64 [ 0, %for.cond1.preheader ], [ %inc, %for.body3 ]
766 %B.addr.11 = phi i64* [ %B.addr.04, %for.cond1.preheader ], [ %incdec.ptr, %for.body3 ]
767 %mul = mul nsw i64 %i.03, 100
768 %add = add nsw i64 %mul, %j.02
David Blaikie79e6c742015-02-27 19:29:02 +0000769 %arrayidx = getelementptr inbounds i64, i64* %A, i64 %add
Sebastian Pop59b61b92012-10-11 07:32:34 +0000770 store i64 0, i64* %arrayidx, align 8
771 %mul4 = mul nsw i64 %i.03, 100
772 %sub = sub nsw i64 %mul4, %j.02
773 %add5 = add nsw i64 %sub, 11
David Blaikie79e6c742015-02-27 19:29:02 +0000774 %arrayidx6 = getelementptr inbounds i64, i64* %A, i64 %add5
Sebastian Pop59b61b92012-10-11 07:32:34 +0000775 %0 = load i64* %arrayidx6, align 8
David Blaikie79e6c742015-02-27 19:29:02 +0000776 %incdec.ptr = getelementptr inbounds i64, i64* %B.addr.11, i64 1
Sebastian Pop59b61b92012-10-11 07:32:34 +0000777 store i64 %0, i64* %B.addr.11, align 8
778 %inc = add nsw i64 %j.02, 1
779 %exitcond = icmp ne i64 %inc, 20
780 br i1 %exitcond, label %for.body3, label %for.inc7
781
782for.inc7: ; preds = %for.body3
David Blaikie79e6c742015-02-27 19:29:02 +0000783 %scevgep = getelementptr i64, i64* %B.addr.04, i64 20
Sebastian Pop59b61b92012-10-11 07:32:34 +0000784 %inc8 = add nsw i64 %i.03, 1
785 %exitcond5 = icmp ne i64 %inc8, 20
786 br i1 %exitcond5, label %for.cond1.preheader, label %for.end9
787
788for.end9: ; preds = %for.inc7
789 ret void
790}