use an isl_multi_pw_aff to represent a skip condition
[pet.git] / tests / conditional_assignment2.scop
blob735428b84cbf1176eb29995c0ea382e572277455
1 start: 225
2 end: 507
3 context: '[N, M] -> {  : N >= 0 and M >= 0 and N <= 2147483647 and M <= 2147483647
4   }'
5 arrays:
6 - context: '[M, N] -> {  : N >= 0 and M >= 0 }'
7   extent: '[N, M] -> { in1[i0, i1] : i1 <= -1 + M and i1 >= 0 and i0 <= -1 + N and
8     i0 >= 0 }'
9   element_type: int
10   element_size: 4
11 - context: '{  :  }'
12   extent: '[N, M] -> { in2[] }'
13   value_bounds: '{ [i0] : i0 >= -1 and i0 <= 1 }'
14   element_type: int
15   element_size: 4
16 - context: '[N] -> {  : N >= 0 }'
17   extent: '[N, M] -> { A[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <=
18     9 }'
19   element_type: int
20   element_size: 4
21 - context: '[N] -> {  : N >= 0 }'
22   extent: '[N, M] -> { C[i0] : i0 <= -1 + N and i0 >= 0 }'
23   element_type: int
24   element_size: 4
25 - context: '{  :  }'
26   extent: '[N, M] -> { m[] }'
27   element_type: int
28   element_size: 4
29 statements:
30 - line: 21
31   domain: '[N, M] -> { S_0[] }'
32   schedule: '{ S_0[] -> [0] }'
33   body:
34     type: binary
35     operation: =
36     arguments:
37     - type: access
38       relation: '[N, M] -> { S_0[] -> in2[] }'
39       reference: __pet_ref_0
40       read: 0
41       write: 1
42     - type: call
43       name: g2
44 - line: 23
45   domain: '[N, M] -> { S_1[i] : i <= -1 + N and i >= 0 }'
46   schedule: '[N] -> { S_1[i] -> [1, i, 0] }'
47   body:
48     type: binary
49     operation: =
50     arguments:
51     - type: access
52       relation: '[N, M] -> { S_1[i] -> m[] }'
53       reference: __pet_ref_1
54       read: 0
55       write: 1
56     - type: binary
57       operation: +
58       arguments:
59       - type: access
60         relation: '[N, M] -> { S_1[i] -> [i] }'
61         reference: __pet_ref_2
62         read: 1
63         write: 0
64       - type: access
65         relation: '[N, M] -> { S_1[i] -> [1] }'
66         reference: __pet_ref_3
67         read: 1
68         write: 0
69 - line: 25
70   domain: '[N, M] -> { S_2[i, j] : j <= -1 + M and j >= 0 and i <= -1 + N and i >=
71     0 }'
72   schedule: '[M, N] -> { S_2[i, j] -> [1, i, 1, j] }'
73   body:
74     type: binary
75     operation: =
76     arguments:
77     - type: access
78       relation: '[N, M] -> { S_2[i, j] -> m[] }'
79       reference: __pet_ref_4
80       read: 0
81       write: 1
82     - type: call
83       name: g
84       arguments:
85       - type: call
86         name: h
87         arguments:
88         - type: access
89           relation: '[N, M] -> { S_2[i, j] -> m[] }'
90           reference: __pet_ref_5
91           read: 1
92           write: 0
93       - type: access
94         relation: '[N, M] -> { S_2[i, j] -> in1[i, j] }'
95         reference: __pet_ref_6
96         read: 1
97         write: 0
98 - line: 26
99   domain: '[N, M] -> { S_3[i] : i <= -1 + N and i >= 0 }'
100   schedule: '[N] -> { S_3[i] -> [1, i, 2] }'
101   body:
102     type: call
103     name: compute_row
104     arguments:
105     - type: call
106       name: h
107       arguments:
108       - type: access
109         relation: '[N, M] -> { S_3[i] -> m[] }'
110         reference: __pet_ref_7
111         read: 1
112         write: 0
113     - type: access
114       relation: '[N, M] -> { S_3[i] -> A[i, o1] }'
115       reference: __pet_ref_8
116       read: 0
117       write: 1
118 - line: 28
119   domain: '[N, M] -> { S_4[] }'
120   schedule: '{ S_4[] -> [2] }'
121   body:
122     type: binary
123     operation: =
124     arguments:
125     - type: access
126       relation: '[N, M] -> { S_4[] -> A[5, 6] }'
127       reference: __pet_ref_9
128       read: 0
129       write: 1
130     - type: access
131       relation: '[N, M] -> { S_4[] -> [0] }'
132       reference: __pet_ref_10
133       read: 1
134       write: 0
135 - line: 30
136   domain: '[N, M] -> { S_5[i] : i <= -1 + N and i >= 0 }'
137   schedule: '[N] -> { S_5[i] -> [3, i] }'
138   body:
139     type: binary
140     operation: =
141     arguments:
142     - type: access
143       relation: '[N, M] -> { S_5[i] -> C[i] }'
144       reference: __pet_ref_11
145       read: 0
146       write: 1
147     - type: ternary
148       arguments:
149       - type: access
150         relation: '[N, M] -> { [S_5[i] -> [i1]] -> [1] : i1 >= -i and i1 <= -1 + N
151           - i; [S_5[-1 + N] -> [1]] -> [0]; [S_5[0] -> [-1]] -> [0] }'
152         reference: __pet_ref_13
153         read: 1
154         write: 0
155         arguments:
156         - type: access
157           relation: '[N, M] -> { S_5[i] -> in2[] }'
158           reference: __pet_ref_12
159           read: 1
160           write: 0
161       - type: call
162         name: f
163         arguments:
164         - type: access
165           relation: '[N, M] -> { [S_5[i] -> [i1]] -> A[i + i1, o1] : i1 >= -i and
166             i1 <= -1 + N - i }'
167           reference: __pet_ref_15
168           read: 1
169           write: 0
170           arguments:
171           - type: access
172             relation: '[N, M] -> { S_5[i] -> in2[] }'
173             reference: __pet_ref_14
174             read: 1
175             write: 0
176       - type: access
177         relation: '[N, M] -> { [S_5[-1 + N] -> [1]] -> [0]; [S_5[0] -> [-1]] -> [0]
178           }'
179         reference: __pet_ref_17
180         read: 1
181         write: 0
182         arguments:
183         - type: access
184           relation: '[N, M] -> { S_5[i] -> in2[] }'
185           reference: __pet_ref_16
186           read: 1
187           write: 0