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