pet_scop: keep track of schedule tree
[pet.git] / tests / decl.scop
blobd35653bc1b3bef60aec431ad6fdca2a28c504ab8
1 start: 95
2 end: 282
3 indent: "\t"
4 context: '[N, K, M] -> {  : K >= 0 and N >= 0 and N <= 2147483647 and K <= 2147483647
5   and M <= 2147483647 and M >= -2147483648 }'
6 schedule: '{ domain: "[M, N, K] -> { S_4[i, j, k] : i >= 0 and i <= -1 + M and j >=
7   0 and j <= -1 + N and k >= 0 and k <= -1 + K; S_0[i, j] : i >= 0 and i <= -1 + M
8   and j >= 0 and j <= -1 + N; S_1[i, j, k] : i >= 0 and i <= -1 + M and j >= 0 and
9   j <= -1 + N and k >= 0 and k <= -1 + K; S_2[i, j, k] : i >= 0 and i <= -1 + M and
10   j >= 0 and j <= -1 + N and k >= 0 and k <= -1 + K; S_3[i, j, k] : i >= 0 and i <=
11   -1 + M and j >= 0 and j <= -1 + N and k >= 0 and k <= -1 + K }", child: { schedule:
12   "[M, N, K] -> L_0[{ S_4[i, j, k] -> [(i)]; S_0[i, j] -> [(i)]; S_2[i, j, k] -> [(i)];
13   S_3[i, j, k] -> [(i)]; S_1[i, j, k] -> [(i)] }]", child: { schedule: "[M, N, K]
14   -> L_1[{ S_4[i, j, k] -> [(j)]; S_0[i, j] -> [(j)]; S_2[i, j, k] -> [(j)]; S_3[i,
15   j, k] -> [(j)]; S_1[i, j, k] -> [(j)] }]", child: { sequence: [ { filter: "[M, N,
16   K] -> { S_0[i, j] }" }, { filter: "[M, N, K] -> { S_4[i, j, k]; S_1[i, j, k]; S_2[i,
17   j, k]; S_3[i, j, k] }", child: { schedule: "[M, N, K] -> L_2[{ S_4[i, j, k] -> [(k)];
18   S_2[i, j, k] -> [(k)]; S_3[i, j, k] -> [(k)]; S_1[i, j, k] -> [(k)] }]", child:
19   { sequence: [ { filter: "[M, N, K] -> { S_1[i, j, k] }" }, { filter: "[M, N, K]
20   -> { S_2[i, j, k] }" }, { filter: "[M, N, K] -> { S_4[i, j, k] }" }, { filter: "[M,
21   N, K] -> { S_3[i, j, k] }" } ] } } } ] } } } }'
22 arrays:
23 - context: '{  :  }'
24   extent: '[N, K, M] -> { t[] }'
25   element_type: float
26   element_size: 4
27   declared: 1
28 - context: '[K] -> {  : K >= 0 }'
29   extent: '[N, K, M] -> { A[i0, i1] : i1 >= 0 and i1 <= -1 + K and i0 >= 0 }'
30   element_type: float
31   element_size: 4
32 - context: '[N] -> {  : N >= 0 }'
33   extent: '[N, K, M] -> { B[i0, i1] : i1 >= 0 and i1 <= -1 + N and i0 >= 0 }'
34   element_type: float
35   element_size: 4
36 - context: '[N] -> {  : N >= 0 }'
37   extent: '[N, K, M] -> { C[i0, i1] : i1 >= 0 and i1 <= -1 + N and i0 >= 0 }'
38   element_type: float
39   element_size: 4
40 statements:
41 - line: 8
42   domain: '[N, K, M] -> { S_0[i, j] : i >= 0 and i <= -1 + M and j >= 0 and j <= -1
43     + N }'
44   schedule: '[M, N] -> { S_0[i, j] -> [0, i, j, 0] }'
45   body:
46     type: expression
47     expr:
48       type: op
49       operation: =
50       arguments:
51       - type: access
52         index: '[N, K, M] -> { S_0[i, j] -> C[(i), (j)] }'
53         reference: __pet_ref_0
54         read: 0
55         write: 1
56       - type: int
57         value: 0
58 - line: 10
59   domain: '[N, K, M] -> { S_1[i, j, k] : i >= 0 and i <= -1 + M and j >= 0 and j <=
60     -1 + N and k >= 0 and k <= -1 + K }'
61   schedule: '[M, N, K] -> { S_1[i, j, k] -> [0, i, j, 1, k, 0, 0] }'
62   body:
63     type: expression
64     expr:
65       type: op
66       operation: kill
67       arguments:
68       - type: access
69         killed: '[N, K, M] -> { S_1[i, j, k] -> t[] }'
70         index: '[N, K, M] -> { S_1[i, j, k] -> t[] }'
71         reference: __pet_ref_1
72         kill: 1
73 - line: 10
74   domain: '[N, K, M] -> { S_2[i, j, k] : i >= 0 and i <= -1 + M and j >= 0 and j <=
75     -1 + N and k >= 0 and k <= -1 + K }'
76   schedule: '[M, N, K] -> { S_2[i, j, k] -> [0, i, j, 1, k, 0, 1] }'
77   body:
78     type: expression
79     expr:
80       type: op
81       operation: =
82       arguments:
83       - type: access
84         index: '[N, K, M] -> { S_2[i, j, k] -> t[] }'
85         reference: __pet_ref_2
86         read: 0
87         write: 1
88       - type: op
89         operation: '*'
90         arguments:
91         - type: access
92           index: '[N, K, M] -> { S_2[i, j, k] -> A[(i), (k)] }'
93           reference: __pet_ref_3
94           read: 1
95           write: 0
96         - type: access
97           index: '[N, K, M] -> { S_2[i, j, k] -> B[(k), (j)] }'
98           reference: __pet_ref_4
99           read: 1
100           write: 0
101 - line: 11
102   domain: '[N, K, M] -> { S_4[i, j, k] : i >= 0 and i <= -1 + M and j >= 0 and j <=
103     -1 + N and k >= 0 and k <= -1 + K }'
104   schedule: '[M, N, K] -> { S_4[i, j, k] -> [0, i, j, 1, k, 1] }'
105   body:
106     type: expression
107     expr:
108       type: op
109       operation: +=
110       arguments:
111       - type: access
112         index: '[N, K, M] -> { S_4[i, j, k] -> C[(i), (j)] }'
113         reference: __pet_ref_5
114         read: 1
115         write: 1
116       - type: access
117         index: '[N, K, M] -> { S_4[i, j, k] -> t[] }'
118         reference: __pet_ref_6
119         read: 1
120         write: 0
121 - line: 10
122   domain: '[N, K, M] -> { S_3[i, j, k] : i >= 0 and i <= -1 + M and j >= 0 and j <=
123     -1 + N and k >= 0 and k <= -1 + K }'
124   schedule: '[M, N, K] -> { S_3[i, j, k] -> [0, i, j, 1, k, 2] }'
125   body:
126     type: expression
127     expr:
128       type: op
129       operation: kill
130       arguments:
131       - type: access
132         killed: '[N, K, M] -> { S_3[i, j, k] -> t[] }'
133         index: '[N, K, M] -> { S_3[i, j, k] -> t[] }'
134         reference: __pet_ref_7
135         kill: 1