pet_scop: keep track of schedule tree
[pet.git] / tests / data_dependent.scop
blobc4e4fb11bd56f500fe7a2f1ca93d5b500df81700
1 start: 274
2 end: 498
3 indent: "\t"
4 context: '[N, M] -> {  : N <= 1000 and N >= 10 and M >= 10 and M <= 1000 }'
5 schedule: '{ domain: "[N, M] -> { S_0[i] : i >= 0 and i <= -1 + N; S_1[i, j] : i >=
6   0 and i <= -1 + N and j >= 0 and j <= -1 + M; S_3[]; S_4[i] : N <= 2147483649 and
7   i >= 0 and i <= -3 + N; S_2[i] : i >= 0 and i <= -1 + N }", child: { sequence: [
8   { filter: "[N, M] -> { S_0[i]; S_1[i, j]; S_2[i] }", child: { schedule: "[N, M]
9   -> L_0[{ S_2[i] -> [(i)]; S_0[i] -> [(i)]; S_1[i, j] -> [(i)] }]", child: { sequence:
10   [ { filter: "[N, M] -> { S_0[i] }" }, { filter: "[N, M] -> { S_1[i, j] }", child:
11   { schedule: "[N, M] -> L_1[{ S_1[i, j] -> [(j)] }]" } }, { filter: "[N, M] -> {
12   S_2[i] }" } ] } } }, { filter: "[N, M] -> { S_3[] }" }, { filter: "[N, M] -> { S_4[i]
13   }", child: { schedule: "[N] -> L_2[{ S_4[i] -> [(i)] }]" } } ] } }'
14 arrays:
15 - context: '[N] -> {  : N >= 0 }'
16   extent: '[N, M] -> { A[i0, i1] : i1 <= 9 and i1 >= 0 and i0 >= 0 and i0 <= -1 +
17     N }'
18   element_type: int
19   element_size: 4
20 - context: '[N] -> {  : N >= 0 }'
21   extent: '[N, M] -> { C[i0] : i0 >= 0 and i0 <= -1 + N }'
22   element_type: int
23   element_size: 4
24 - context: '[M, N] -> {  : N >= 0 and M >= 0 }'
25   extent: '[N, M] -> { in1[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <=
26     -1 + M }'
27   element_type: int
28   element_size: 4
29 - context: '[N] -> {  : N >= 0 }'
30   extent: '[N, M] -> { in2[i0] : i0 >= 0 and i0 <= -1 + N }'
31   value_bounds: '{ [i0] : i0 >= -1 and i0 <= 1 }'
32   element_type: int
33   element_size: 4
34 - context: '{  :  }'
35   extent: '[N, M] -> { m[] }'
36   element_type: int
37   element_size: 4
38 statements:
39 - line: 23
40   domain: '[N, M] -> { S_0[i] : i >= 0 and i <= -1 + N }'
41   schedule: '[N] -> { S_0[i] -> [0, i, 0] }'
42   body:
43     type: expression
44     expr:
45       type: op
46       operation: =
47       arguments:
48       - type: access
49         index: '[N, M] -> { S_0[i] -> m[] }'
50         reference: __pet_ref_0
51         read: 0
52         write: 1
53       - type: op
54         operation: +
55         arguments:
56         - type: access
57           index: '[N, M] -> { S_0[i] -> [(i)] }'
58           reference: __pet_ref_1
59           read: 1
60           write: 0
61         - type: int
62           value: 1
63 - line: 25
64   domain: '[N, M] -> { S_1[i, j] : i >= 0 and i <= -1 + N and j >= 0 and j <= -1 +
65     M }'
66   schedule: '[N, M] -> { S_1[i, j] -> [0, i, 1, j] }'
67   body:
68     type: expression
69     expr:
70       type: op
71       operation: =
72       arguments:
73       - type: access
74         index: '[N, M] -> { S_1[i, j] -> m[] }'
75         reference: __pet_ref_2
76         read: 0
77         write: 1
78       - type: call
79         name: g
80         arguments:
81         - type: call
82           name: h
83           arguments:
84           - type: access
85             index: '[N, M] -> { S_1[i, j] -> m[] }'
86             reference: __pet_ref_3
87             read: 1
88             write: 0
89         - type: access
90           index: '[N, M] -> { S_1[i, j] -> in1[(i), (j)] }'
91           reference: __pet_ref_4
92           read: 1
93           write: 0
94 - line: 26
95   domain: '[N, M] -> { S_2[i] : i >= 0 and i <= -1 + N }'
96   schedule: '[N] -> { S_2[i] -> [0, i, 2] }'
97   body:
98     type: expression
99     expr:
100       type: call
101       name: compute_row
102       arguments:
103       - type: call
104         name: h
105         arguments:
106         - type: access
107           index: '[N, M] -> { S_2[i] -> m[] }'
108           reference: __pet_ref_5
109           read: 1
110           write: 0
111       - type: access
112         index: '[N, M] -> { S_2[i] -> A[(i)] }'
113         depth: 2
114         reference: __pet_ref_6
115         read: 0
116         write: 1
117 - line: 28
118   domain: '[N, M] -> { S_3[] }'
119   schedule: '{ S_3[] -> [1] }'
120   body:
121     type: expression
122     expr:
123       type: op
124       operation: =
125       arguments:
126       - type: access
127         index: '[N, M] -> { S_3[] -> A[(5), (6)] }'
128         reference: __pet_ref_7
129         read: 0
130         write: 1
131       - type: int
132         value: 0
133 - line: 30
134   domain: '[N, M] -> { S_4[i] : i <= -3 + N and i >= 0 }'
135   schedule: '[N] -> { S_4[i] -> [2, i] }'
136   body:
137     type: expression
138     expr:
139       type: op
140       operation: =
141       arguments:
142       - type: access
143         index: '[N, M] -> { S_4[i] -> C[(i)] }'
144         reference: __pet_ref_8
145         read: 0
146         write: 1
147       - type: call
148         name: f
149         arguments:
150         - type: access
151           index: '[N, M] -> { [S_4[i] -> [i1]] -> A[(1 + i + i1)] }'
152           depth: 2
153           reference: __pet_ref_10
154           read: 1
155           write: 0
156           arguments:
157           - type: access
158             index: '[N, M] -> { S_4[i] -> in2[(i)] }'
159             reference: __pet_ref_9
160             read: 1
161             write: 0