replace pet_expr_foreach_access by pet_expr_foreach_access_expr
[pet.git] / tests / data_dependent.scop
blob129d1c297202b6fc291169792fd5d844620ef496
1 context: '[N, M] -> {  : M >= 10 and M <= 1000 and N >= 10 and N <= 1000 }'
2 arrays:
3 - context: '[M, N] -> {  : N >= 0 and M >= 0 }'
4   extent: '[N, M] -> { in1[i0, i1] : i0 >= 0 and i1 >= 0 and i0 <= -1 + N and i1 <=
5     -1 + M }'
6   element_type: int
7 - context: '[N] -> {  : N >= 0 }'
8   extent: '[N] -> { in2[i0] : i0 >= 0 and i0 <= -1 + N }'
9   value_bounds: '{ [i0] : i0 >= -1 and i0 <= 1 }'
10   element_type: int
11 - context: '[N] -> {  : N >= 0 }'
12   extent: '[N] -> { A[i0, i1] : i0 >= 0 and i1 >= 0 and i0 <= -1 + N and i1 <= 9 }'
13   element_type: int
14 - context: '[N] -> {  : N >= 0 }'
15   extent: '[N] -> { C[i0] : i0 >= 0 and i0 <= -1 + N }'
16   element_type: int
17 - context: '{  :  }'
18   extent: '{ m[] }'
19   element_type: int
20 statements:
21 - line: 23
22   domain: '[N] -> { S_0[i] : i >= 0 and i <= -1 + N }'
23   schedule: '[N] -> { S_0[i] -> [0, i, 0] }'
24   body:
25     type: binary
26     operation: =
27     arguments:
28     - type: access
29       relation: '[N] -> { S_0[i] -> m[] }'
30       read: 0
31       write: 1
32     - type: binary
33       operation: +
34       arguments:
35       - type: access
36         relation: '[N] -> { S_0[i] -> [i] }'
37         read: 1
38         write: 0
39       - type: access
40         relation: '[N] -> { S_0[i] -> [1] }'
41         read: 1
42         write: 0
43 - line: 25
44   domain: '[M, N] -> { S_1[i, j] : i >= 0 and i <= -1 + N and j >= 0 and j <= -1 +
45     M }'
46   schedule: '[M, N] -> { S_1[i, j] -> [0, i, 1, j] }'
47   body:
48     type: binary
49     operation: =
50     arguments:
51     - type: access
52       relation: '[M, N] -> { S_1[i, j] -> m[] }'
53       read: 0
54       write: 1
55     - type: call
56       name: g
57       arguments:
58       - type: call
59         name: h
60         arguments:
61         - type: access
62           relation: '[M, N] -> { S_1[i, j] -> m[] }'
63           read: 1
64           write: 0
65       - type: access
66         relation: '[M, N] -> { S_1[i, j] -> in1[i, j] }'
67         read: 1
68         write: 0
69 - line: 26
70   domain: '[N] -> { S_2[i] : i >= 0 and i <= -1 + N }'
71   schedule: '[N] -> { S_2[i] -> [0, i, 2] }'
72   body:
73     type: call
74     name: compute_row
75     arguments:
76     - type: call
77       name: h
78       arguments:
79       - type: access
80         relation: '[N] -> { S_2[i] -> m[] }'
81         read: 1
82         write: 0
83     - type: access
84       relation: '[N] -> { S_2[i] -> A[i, o1] }'
85       read: 0
86       write: 1
87 - line: 28
88   domain: '{ S_3[] }'
89   schedule: '{ S_3[] -> [1] }'
90   body:
91     type: binary
92     operation: =
93     arguments:
94     - type: access
95       relation: '{ S_3[] -> A[5, 6] }'
96       read: 0
97       write: 1
98     - type: access
99       relation: '{ S_3[] -> [0] }'
100       read: 1
101       write: 0
102 - line: 30
103   domain: '[N] -> { S_4[i] : i >= 0 and i <= -3 + N }'
104   schedule: '[N] -> { S_4[i] -> [2, i] }'
105   body:
106     type: binary
107     operation: =
108     arguments:
109     - type: access
110       relation: '[N] -> { S_4[i] -> C[i] }'
111       read: 0
112       write: 1
113     - type: call
114       name: f
115       arguments:
116       - type: access
117         relation: '[N] -> { [S_4[i] -> [i1]] -> A[1 + i + i1, o1] }'
118         read: 1
119         write: 0
120         arguments:
121         - type: access
122           relation: '[N] -> { S_4[i] -> in2[i] }'
123           read: 1
124           write: 0