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