change return type of pet_expr_*_is_* to isl_bool
[pet.git] / tests / conditional_assignment2.scop
blob611bbeaf0779a7b262f9539b5e43e3e6209d7679
1 start: 225
2 end: 507
3 indent: "\t"
4 context: '[M, N] -> {  : N >= 0 and M >= 0 and M <= 2147483647 and N <= 2147483647
5   }'
6 schedule: '{ domain: "[M, N] -> { S_3[i] : i >= 0 and i <= -1 + N; S_7[]; S_11[];
7   S_1[i] : i >= 0 and i <= -1 + N; S_5[i] : i >= 0 and i <= -1 + N; S_10[]; S_0[];
8   S_9[]; S_2[i, j] : i >= 0 and i <= -1 + N and j >= 0 and j <= -1 + M; S_6[]; S_4[];
9   S_8[] }", child: { sequence: [ { filter: "[N, M] -> { S_0[] }" }, { filter: "[N,
10   M] -> { S_2[i, j]; S_3[i]; S_1[i] }", child: { schedule: "[N, M] -> L_0[{ S_2[i,
11   j] -> [(i)]; S_3[i] -> [(i)]; S_1[i] -> [(i)] }]", child: { sequence: [ { filter:
12   "[N, M] -> { S_1[i] }" }, { filter: "[N, M] -> { S_2[i, j] }", child: { schedule:
13   "[N, M] -> L_1[{ S_2[i, j] -> [(j)] }]" } }, { filter: "[N, M] -> { S_3[i] }" }
14   ] } } }, { filter: "[N, M] -> { S_4[] }" }, { filter: "[N, M] -> { S_5[i] }", child:
15   { schedule: "[N] -> L_2[{ S_5[i] -> [(i)] }]" } }, { filter: "[N, M] -> { S_8[];
16   S_6[]; S_7[]; S_10[]; S_11[]; S_9[] }", child: { set: [ { filter: "{ S_6[] }" },
17   { filter: "{ S_7[] }" }, { filter: "{ S_8[] }" }, { filter: "{ S_9[] }" }, { filter:
18   "{ S_10[] }" }, { filter: "{ S_11[] }" } ] } } ] } }'
19 arrays:
20 - context: '[N] -> {  : N >= 0 }'
21   extent: '[M, N] -> { A[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 <= 9 and i1 >=
22     0 }'
23   element_type: int
24   element_size: 4
25 - context: '[N] -> {  : N >= 0 }'
26   extent: '[M, N] -> { C[i0] : i0 >= 0 and i0 <= -1 + N }'
27   element_type: int
28   element_size: 4
29 - context: '{  :  }'
30   extent: '[M, N] -> { i[] }'
31   element_type: int
32   element_size: 4
33 - context: '[M, N] -> {  : N >= 0 and M >= 0 }'
34   extent: '[M, N] -> { in1[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <=
35     -1 + M }'
36   element_type: int
37   element_size: 4
38 - context: '{  :  }'
39   extent: '[M, N] -> { in2[] }'
40   value_bounds: '{ [i0] : i0 >= -1 and i0 <= 1 }'
41   element_type: int
42   element_size: 4
43 - context: '{  :  }'
44   extent: '[M, N] -> { j[] }'
45   element_type: int
46   element_size: 4
47 - context: '{  :  }'
48   extent: '[M, N] -> { m[] }'
49   element_type: int
50   element_size: 4
51 statements:
52 - line: 21
53   domain: '[M, N] -> { S_0[] }'
54   body:
55     type: expression
56     expr:
57       type: op
58       operation: =
59       arguments:
60       - type: access
61         index: '[M, N] -> { S_0[] -> in2[] }'
62         reference: __pet_ref_0
63         read: 0
64         write: 1
65       - type: call
66         name: g2
67 - line: 23
68   domain: '[M, N] -> { S_1[i] : i >= 0 and i <= -1 + N }'
69   body:
70     type: expression
71     expr:
72       type: op
73       operation: =
74       arguments:
75       - type: access
76         index: '[M, N] -> { S_1[i] -> m[] }'
77         reference: __pet_ref_1
78         read: 0
79         write: 1
80       - type: op
81         operation: +
82         arguments:
83         - type: access
84           index: '[M, N] -> { S_1[i] -> [(i)] }'
85           reference: __pet_ref_2
86           read: 1
87           write: 0
88         - type: int
89           value: 1
90 - line: 25
91   domain: '[M, N] -> { S_2[i, j] : i >= 0 and i <= -1 + N and j >= 0 and j <= -1 +
92     M }'
93   body:
94     type: expression
95     expr:
96       type: op
97       operation: =
98       arguments:
99       - type: access
100         index: '[M, N] -> { S_2[i, j] -> m[] }'
101         reference: __pet_ref_3
102         read: 0
103         write: 1
104       - type: call
105         name: g
106         arguments:
107         - type: call
108           name: h
109           arguments:
110           - type: access
111             index: '[M, N] -> { S_2[i, j] -> m[] }'
112             reference: __pet_ref_4
113             read: 1
114             write: 0
115         - type: access
116           index: '[M, N] -> { S_2[i, j] -> in1[(i), (j)] }'
117           reference: __pet_ref_5
118           read: 1
119           write: 0
120 - line: 26
121   domain: '[M, N] -> { S_3[i] : i >= 0 and i <= -1 + N }'
122   body:
123     type: expression
124     expr:
125       type: call
126       name: compute_row
127       arguments:
128       - type: call
129         name: h
130         arguments:
131         - type: access
132           index: '[M, N] -> { S_3[i] -> m[] }'
133           reference: __pet_ref_6
134           read: 1
135           write: 0
136       - type: access
137         may_read: '[M, N] -> { S_3[i] -> A[i, o1] }'
138         may_write: '[M, N] -> { S_3[i] -> A[i, o1] }'
139         must_write: '[M, N] -> {  }'
140         index: '[M, N] -> { S_3[i] -> A[(i)] }'
141         depth: 2
142         reference: __pet_ref_7
143         read: 1
144         write: 1
145 - line: 28
146   domain: '[M, N] -> { S_4[] }'
147   body:
148     type: expression
149     expr:
150       type: op
151       operation: =
152       arguments:
153       - type: access
154         index: '[M, N] -> { S_4[] -> A[(5), (6)] }'
155         reference: __pet_ref_8
156         read: 0
157         write: 1
158       - type: int
159         value: 0
160 - line: 30
161   domain: '[M, N] -> { S_5[i] : i >= 0 and i <= -1 + N }'
162   body:
163     type: expression
164     expr:
165       type: op
166       operation: =
167       arguments:
168       - type: access
169         index: '[M, N] -> { S_5[i] -> C[(i)] }'
170         reference: __pet_ref_9
171         read: 0
172         write: 1
173       - type: op
174         operation: '?:'
175         arguments:
176         - type: access
177           index: '[M, N] -> { [S_5[i] -> [i1]] -> [((1) : i1 <= -1 + N - i and i1
178             >= -i; (0) : i1 = N - i; (0) : i1 = -1 - i)] }'
179           reference: __pet_ref_11
180           read: 1
181           write: 0
182           arguments:
183           - type: access
184             index: '[M, N] -> { S_5[i] -> in2[] }'
185             reference: __pet_ref_10
186             read: 1
187             write: 0
188         - type: call
189           name: f
190           arguments:
191           - type: access
192             may_read: '[M, N] -> { [S_5[i] -> [i1]] -> A[i + i1, o1] : i1 <= -1 +
193               N - i and i1 >= -i }'
194             index: '[M, N] -> { [S_5[i] -> [i1]] -> A[((i + i1) : i1 >= -i)] }'
195             depth: 2
196             reference: __pet_ref_13
197             read: 1
198             write: 0
199             arguments:
200             - type: access
201               may_read: '[M, N] -> { S_5[i] -> in2[] }'
202               index: '[M, N] -> { S_5[i] -> in2[] }'
203               reference: __pet_ref_12
204               read: 1
205               write: 0
206         - type: int
207           value: 0
208 - line: -1
209   domain: '[M, N] -> { S_6[] }'
210   body:
211     type: expression
212     expr:
213       type: op
214       operation: kill
215       arguments:
216       - type: access
217         killed: '[M, N] -> { S_6[] -> i[] }'
218         index: '[M, N] -> { S_6[] -> i[] }'
219         reference: __pet_ref_14
220         kill: 1
221 - line: -1
222   domain: '[M, N] -> { S_7[] }'
223   body:
224     type: expression
225     expr:
226       type: op
227       operation: kill
228       arguments:
229       - type: access
230         killed: '[M, N] -> { S_7[] -> j[] }'
231         index: '[M, N] -> { S_7[] -> j[] }'
232         reference: __pet_ref_15
233         kill: 1
234 - line: -1
235   domain: '[M, N] -> { S_8[] }'
236   body:
237     type: expression
238     expr:
239       type: op
240       operation: kill
241       arguments:
242       - type: access
243         killed: '[M, N] -> { S_8[] -> in1[o0, o1] : o0 >= 0 and o0 <= -1 + N and o1
244           >= 0 and o1 <= -1 + M }'
245         index: '[M, N] -> { S_8[] -> in1[] }'
246         depth: 2
247         reference: __pet_ref_16
248         kill: 1
249 - line: -1
250   domain: '[M, N] -> { S_9[] }'
251   body:
252     type: expression
253     expr:
254       type: op
255       operation: kill
256       arguments:
257       - type: access
258         killed: '[M, N] -> { S_9[] -> in2[] }'
259         index: '[M, N] -> { S_9[] -> in2[] }'
260         reference: __pet_ref_17
261         kill: 1
262 - line: -1
263   domain: '[M, N] -> { S_10[] }'
264   body:
265     type: expression
266     expr:
267       type: op
268       operation: kill
269       arguments:
270       - type: access
271         killed: '[M, N] -> { S_10[] -> C[o0] : o0 >= 0 and o0 <= -1 + N }'
272         index: '[M, N] -> { S_10[] -> C[] }'
273         depth: 1
274         reference: __pet_ref_18
275         kill: 1
276 - line: -1
277   domain: '[M, N] -> { S_11[] }'
278   body:
279     type: expression
280     expr:
281       type: op
282       operation: kill
283       arguments:
284       - type: access
285         killed: '[M, N] -> { S_11[] -> m[] }'
286         index: '[M, N] -> { S_11[] -> m[] }'
287         reference: __pet_ref_19
288         kill: 1