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