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