pet 0.11.8
[pet.git] / tests / QR.scop
bloba95b1c7c942dde3040f96773dea56894e277726e
1 start: 285
2 end: 840
3 indent: '    '
4 context: '[K, N] -> {  : 100 <= K <= 1000 and 8 <= N <= 16 }'
5 context_value: '[K, N] -> {  : K = 256 }'
6 schedule: '{ domain: "[N, K] -> { S_23[]; S_10[]; S_2[j, i] : j >= 0 and j <= i <
7   N; S_19[j] : 0 <= j < N; S_9[k] : 0 <= k < K; S_17[k] : 0 <= k < K; S_5[]; S_22[j]
8   : 0 <= j < N; S_6[k] : 0 <= k < K; S_3[j, i] : j >= 0 and j <= i < N; S_1[j] : 0
9   <= j < N; S_0[]; S_11[k] : 0 <= k < K; S_12[k, j] : 0 <= k < K and 0 <= j < N; S_20[j,
10   i] : j >= 0 and j <= i < N; S_25[]; S_24[]; S_16[k, j] : 0 <= k < K and 0 <= j <
11   N; S_15[k, j, i] : 0 <= k < K and j >= 0 and j < i < N; S_8[k, j] : 0 <= k < K and
12   0 <= j < N; S_4[j] : 0 <= j < N; S_21[j, i] : j >= 0 and j <= i < N; S_7[k, j] :
13   0 <= k < K and 0 <= j < N; S_13[k, j] : 0 <= k < K and 0 <= j < N; S_18[]; S_14[k,
14   j, i] : 0 <= k < K and j >= 0 and j < i < N }", child: { sequence: [ { filter: "[N,
15   K] -> { S_0[] }" }, { filter: "[N, K] -> { S_2[j, i]; S_1[j]; S_4[j]; S_3[j, i]
16   }", child: { schedule: "[N] -> L_0[{ S_2[j, i] -> [(j)]; S_3[j, i] -> [(j)]; S_4[j]
17   -> [(j)]; S_1[j] -> [(j)] }]", child: { sequence: [ { filter: "[N] -> { S_1[j] }"
18   }, { filter: "[N] -> { S_3[j, i]; S_2[j, i] }", child: { schedule: "[N] -> L_1[{
19   S_3[j, i] -> [(i)]; S_2[j, i] -> [(i)] }]", child: { sequence: [ { filter: "[N]
20   -> { S_2[j, i] }" }, { filter: "[N] -> { S_3[j, i] }" } ] } } }, { filter: "[N]
21   -> { S_4[j] }" } ] } } }, { filter: "[N, K] -> { S_5[] }" }, { filter: "[N, K] ->
22   { S_7[k, j]; S_8[k, j]; S_6[k]; S_9[k] }", child: { schedule: "[K, N] -> L_2[{ S_6[k]
23   -> [(k)]; S_9[k] -> [(k)]; S_8[k, j] -> [(k)]; S_7[k, j] -> [(k)] }]", child: {
24   sequence: [ { filter: "[K, N] -> { S_6[k] }" }, { filter: "[K, N] -> { S_8[k, j];
25   S_7[k, j] }", child: { schedule: "[K, N] -> L_3[{ S_8[k, j] -> [(j)]; S_7[k, j]
26   -> [(j)] }]", child: { sequence: [ { filter: "[K, N] -> { S_7[k, j] }" }, { filter:
27   "[K, N] -> { S_8[k, j] }" } ] } } }, { filter: "[K, N] -> { S_9[k] }" } ] } } },
28   { filter: "[N, K] -> { S_10[] }" }, { filter: "[N, K] -> { S_11[k]; S_17[k]; S_14[k,
29   j, i]; S_15[k, j, i]; S_13[k, j]; S_12[k, j]; S_16[k, j] }", child: { schedule:
30   "[K, N] -> L_4[{ S_12[k, j] -> [(k)]; S_17[k] -> [(k)]; S_16[k, j] -> [(k)]; S_15[k,
31   j, i] -> [(k)]; S_11[k] -> [(k)]; S_13[k, j] -> [(k)]; S_14[k, j, i] -> [(k)] }]",
32   child: { sequence: [ { filter: "[K, N] -> { S_11[k] }" }, { filter: "[K, N] -> {
33   S_12[k, j]; S_16[k, j]; S_15[k, j, i]; S_13[k, j]; S_14[k, j, i] }", child: { schedule:
34   "[K, N] -> L_5[{ S_12[k, j] -> [(j)]; S_16[k, j] -> [(j)]; S_15[k, j, i] -> [(j)];
35   S_13[k, j] -> [(j)]; S_14[k, j, i] -> [(j)] }]", child: { sequence: [ { filter:
36   "[K, N] -> { S_12[k, j] }" }, { filter: "[K, N] -> { S_13[k, j] }" }, { filter:
37   "[K, N] -> { S_15[k, j, i]; S_14[k, j, i] }", child: { schedule: "[K, N] -> L_6[{
38   S_15[k, j, i] -> [(i)]; S_14[k, j, i] -> [(i)] }]", child: { sequence: [ { filter:
39   "[K, N] -> { S_14[k, j, i] }" }, { filter: "[K, N] -> { S_15[k, j, i] }" } ] } }
40   }, { filter: "[K, N] -> { S_16[k, j] }" } ] } } }, { filter: "[K, N] -> { S_17[k]
41   }" } ] } } }, { filter: "[N, K] -> { S_18[] }" }, { filter: "[N, K] -> { S_20[j,
42   i]; S_22[j]; S_21[j, i]; S_19[j] }", child: { schedule: "[N] -> L_7[{ S_21[j, i]
43   -> [(j)]; S_22[j] -> [(j)]; S_20[j, i] -> [(j)]; S_19[j] -> [(j)] }]", child: {
44   sequence: [ { filter: "[N] -> { S_19[j] }" }, { filter: "[N] -> { S_21[j, i]; S_20[j,
45   i] }", child: { schedule: "[N] -> L_8[{ S_21[j, i] -> [(i)]; S_20[j, i] -> [(i)]
46   }]", child: { sequence: [ { filter: "[N] -> { S_20[j, i] }" }, { filter: "[N] ->
47   { S_21[j, i] }" } ] } } }, { filter: "[N] -> { S_22[j] }" } ] } } }, { filter: "[N,
48   K] -> { S_23[]; S_25[]; S_24[] }", child: { set: [ { filter: "{ S_23[] }" }, { filter:
49   "{ S_24[] }" }, { filter: "{ S_25[] }" } ] } } ] } }'
50 arrays:
51 - context: '[N] -> {  : N >= 0 }'
52   extent: '[N, K] -> { R[i0, i1] : 0 <= i0 < N and 0 <= i1 < N }'
53   element_type: int
54   element_size: 4
55 - context: '[N, K] -> {  : N >= 0 and K >= 0 }'
56   extent: '[N, K] -> { X[i0, i1] : 0 <= i0 < K and 0 <= i1 < N }'
57   element_type: int
58   element_size: 4
59 - context: '{  :  }'
60   extent: '[N, K] -> { i[] }'
61   element_type: int
62   element_size: 4
63 - context: '{  :  }'
64   extent: '[N, K] -> { j[] }'
65   element_type: int
66   element_size: 4
67 - context: '{  :  }'
68   extent: '[N, K] -> { k[] }'
69   element_type: int
70   element_size: 4
71 - context: '{  :  }'
72   extent: '[N, K] -> { t[] }'
73   element_type: int
74   element_size: 4
75 statements:
76 - line: 17
77   domain: '[N, K] -> { S_0[] }'
78   body:
79     type: expression
80     expr:
81       type: op
82       operation: =
83       arguments:
84       - type: access
85         index: '[N, K] -> { S_0[] -> j[] }'
86         reference: __pet_ref_0
87         read: 0
88         write: 1
89       - type: int
90         value: 0
91 - line: 18
92   domain: '[N, K] -> { S_1[j] : 0 <= j < N }'
93   body:
94     type: expression
95     expr:
96       type: op
97       operation: =
98       arguments:
99       - type: access
100         index: '[N, K] -> { S_1[j] -> i[] }'
101         reference: __pet_ref_1
102         read: 0
103         write: 1
104       - type: access
105         index: '[N, K] -> { S_1[j] -> [(j)] }'
106         reference: __pet_ref_2
107         read: 1
108         write: 0
109 - line: 19
110   domain: '[N, K] -> { S_2[j, i] : j >= 0 and j <= i < N }'
111   body:
112     type: expression
113     expr:
114       type: op
115       operation: =
116       arguments:
117       - type: access
118         index: '[N, K] -> { S_2[j, i] -> R[(j), (i)] }'
119         reference: __pet_ref_3
120         read: 0
121         write: 1
122       - type: call
123         name: Zero
124 - line: 18
125   domain: '[N, K] -> { S_3[j, i] : j >= 0 and j <= i < N }'
126   body:
127     type: expression
128     expr:
129       type: op
130       operation: =
131       arguments:
132       - type: access
133         index: '[N, K] -> { S_3[j, i] -> i[] }'
134         reference: __pet_ref_4
135         read: 0
136         write: 1
137       - type: access
138         index: '[N, K] -> { S_3[j, i] -> [(1 + i)] }'
139         reference: __pet_ref_5
140         read: 1
141         write: 0
142 - line: 17
143   domain: '[N, K] -> { S_4[j] : 0 <= j < N }'
144   body:
145     type: expression
146     expr:
147       type: op
148       operation: =
149       arguments:
150       - type: access
151         index: '[N, K] -> { S_4[j] -> j[] }'
152         reference: __pet_ref_6
153         read: 0
154         write: 1
155       - type: access
156         index: '[N, K] -> { S_4[j] -> [(1 + j)] }'
157         reference: __pet_ref_7
158         read: 1
159         write: 0
160 - line: 21
161   domain: '[N, K] -> { S_5[] }'
162   body:
163     type: expression
164     expr:
165       type: op
166       operation: =
167       arguments:
168       - type: access
169         index: '[N, K] -> { S_5[] -> k[] }'
170         reference: __pet_ref_8
171         read: 0
172         write: 1
173       - type: int
174         value: 0
175 - line: 22
176   domain: '[N, K] -> { S_6[k] : 0 <= k < K }'
177   body:
178     type: expression
179     expr:
180       type: op
181       operation: =
182       arguments:
183       - type: access
184         index: '[N, K] -> { S_6[k] -> j[] }'
185         reference: __pet_ref_9
186         read: 0
187         write: 1
188       - type: int
189         value: 0
190 - line: 23
191   domain: '[N, K] -> { S_7[k, j] : 0 <= k < K and 0 <= j < N }'
192   body:
193     type: expression
194     expr:
195       type: op
196       operation: =
197       arguments:
198       - type: access
199         index: '[N, K] -> { S_7[k, j] -> X[(k), (j)] }'
200         reference: __pet_ref_10
201         read: 0
202         write: 1
203       - type: call
204         name: ReadMatrix
205 - line: 22
206   domain: '[N, K] -> { S_8[k, j] : 0 <= k < K and 0 <= j < N }'
207   body:
208     type: expression
209     expr:
210       type: op
211       operation: =
212       arguments:
213       - type: access
214         index: '[N, K] -> { S_8[k, j] -> j[] }'
215         reference: __pet_ref_11
216         read: 0
217         write: 1
218       - type: access
219         index: '[N, K] -> { S_8[k, j] -> [(1 + j)] }'
220         reference: __pet_ref_12
221         read: 1
222         write: 0
223 - line: 21
224   domain: '[N, K] -> { S_9[k] : 0 <= k < K }'
225   body:
226     type: expression
227     expr:
228       type: op
229       operation: =
230       arguments:
231       - type: access
232         index: '[N, K] -> { S_9[k] -> k[] }'
233         reference: __pet_ref_13
234         read: 0
235         write: 1
236       - type: access
237         index: '[N, K] -> { S_9[k] -> [(1 + k)] }'
238         reference: __pet_ref_14
239         read: 1
240         write: 0
241 - line: 25
242   domain: '[N, K] -> { S_10[] }'
243   body:
244     type: expression
245     expr:
246       type: op
247       operation: =
248       arguments:
249       - type: access
250         index: '[N, K] -> { S_10[] -> k[] }'
251         reference: __pet_ref_15
252         read: 0
253         write: 1
254       - type: int
255         value: 0
256 - line: 26
257   domain: '[N, K] -> { S_11[k] : 0 <= k < K }'
258   body:
259     type: expression
260     expr:
261       type: op
262       operation: =
263       arguments:
264       - type: access
265         index: '[N, K] -> { S_11[k] -> j[] }'
266         reference: __pet_ref_16
267         read: 0
268         write: 1
269       - type: int
270         value: 0
271 - line: 27
272   domain: '[N, K] -> { S_12[k, j] : 0 <= k < K and 0 <= j < N }'
273   body:
274     type: expression
275     expr:
276       type: call
277       name: Vectorize
278       arguments:
279       - type: access
280         index: '[N, K] -> { S_12[k, j] -> R[(j), (j)] }'
281         reference: __pet_ref_17
282         read: 1
283         write: 0
284       - type: access
285         index: '[N, K] -> { S_12[k, j] -> X[(k), (j)] }'
286         reference: __pet_ref_18
287         read: 1
288         write: 0
289       - type: op
290         operation: '&'
291         arguments:
292         - type: access
293           may_read: '[N, K] -> { S_12[k, j] -> R[j, j] }'
294           may_write: '[N, K] -> { S_12[k, j] -> R[j, j] }'
295           must_write: '[N, K] -> {  }'
296           index: '[N, K] -> { S_12[k, j] -> R[(j), (j)] }'
297           reference: __pet_ref_19
298           read: 1
299           write: 1
300       - type: op
301         operation: '&'
302         arguments:
303         - type: access
304           may_read: '[N, K] -> { S_12[k, j] -> X[k, j] }'
305           may_write: '[N, K] -> { S_12[k, j] -> X[k, j] }'
306           must_write: '[N, K] -> {  }'
307           index: '[N, K] -> { S_12[k, j] -> X[(k), (j)] }'
308           reference: __pet_ref_20
309           read: 1
310           write: 1
311       - type: op
312         operation: '&'
313         arguments:
314         - type: access
315           may_read: '[N, K] -> { S_12[k, j] -> t[] }'
316           may_write: '[N, K] -> { S_12[k, j] -> t[] }'
317           must_write: '[N, K] -> {  }'
318           index: '[N, K] -> { S_12[k, j] -> t[] }'
319           reference: __pet_ref_21
320           read: 1
321           write: 1
322 - line: 28
323   domain: '[N, K] -> { S_13[k, j] : 0 <= k < K and 0 <= j < N }'
324   body:
325     type: expression
326     expr:
327       type: op
328       operation: =
329       arguments:
330       - type: access
331         index: '[N, K] -> { S_13[k, j] -> i[] }'
332         reference: __pet_ref_22
333         read: 0
334         write: 1
335       - type: access
336         index: '[N, K] -> { S_13[k, j] -> [(1 + j)] }'
337         reference: __pet_ref_23
338         read: 1
339         write: 0
340 - line: 29
341   domain: '[N, K] -> { S_14[k, j, i] : 0 <= k < K and j >= 0 and j < i < N }'
342   body:
343     type: expression
344     expr:
345       type: call
346       name: Rotate
347       arguments:
348       - type: access
349         index: '[N, K] -> { S_14[k, j, i] -> R[(j), (i)] }'
350         reference: __pet_ref_24
351         read: 1
352         write: 0
353       - type: access
354         index: '[N, K] -> { S_14[k, j, i] -> X[(k), (i)] }'
355         reference: __pet_ref_25
356         read: 1
357         write: 0
358       - type: access
359         index: '[N, K] -> { S_14[k, j, i] -> t[] }'
360         reference: __pet_ref_26
361         read: 1
362         write: 0
363       - type: op
364         operation: '&'
365         arguments:
366         - type: access
367           may_read: '[N, K] -> { S_14[k, j, i] -> R[j, i] }'
368           may_write: '[N, K] -> { S_14[k, j, i] -> R[j, i] }'
369           must_write: '[N, K] -> {  }'
370           index: '[N, K] -> { S_14[k, j, i] -> R[(j), (i)] }'
371           reference: __pet_ref_27
372           read: 1
373           write: 1
374       - type: op
375         operation: '&'
376         arguments:
377         - type: access
378           may_read: '[N, K] -> { S_14[k, j, i] -> X[k, i] }'
379           may_write: '[N, K] -> { S_14[k, j, i] -> X[k, i] }'
380           must_write: '[N, K] -> {  }'
381           index: '[N, K] -> { S_14[k, j, i] -> X[(k), (i)] }'
382           reference: __pet_ref_28
383           read: 1
384           write: 1
385       - type: op
386         operation: '&'
387         arguments:
388         - type: access
389           may_read: '[N, K] -> { S_14[k, j, i] -> t[] }'
390           may_write: '[N, K] -> { S_14[k, j, i] -> t[] }'
391           must_write: '[N, K] -> {  }'
392           index: '[N, K] -> { S_14[k, j, i] -> t[] }'
393           reference: __pet_ref_29
394           read: 1
395           write: 1
396 - line: 28
397   domain: '[N, K] -> { S_15[k, j, i] : 0 <= k < K and j >= 0 and j < i < N }'
398   body:
399     type: expression
400     expr:
401       type: op
402       operation: =
403       arguments:
404       - type: access
405         index: '[N, K] -> { S_15[k, j, i] -> i[] }'
406         reference: __pet_ref_30
407         read: 0
408         write: 1
409       - type: access
410         index: '[N, K] -> { S_15[k, j, i] -> [(1 + i)] }'
411         reference: __pet_ref_31
412         read: 1
413         write: 0
414 - line: 26
415   domain: '[N, K] -> { S_16[k, j] : 0 <= k < K and 0 <= j < N }'
416   body:
417     type: expression
418     expr:
419       type: op
420       operation: =
421       arguments:
422       - type: access
423         index: '[N, K] -> { S_16[k, j] -> j[] }'
424         reference: __pet_ref_32
425         read: 0
426         write: 1
427       - type: access
428         index: '[N, K] -> { S_16[k, j] -> [(1 + j)] }'
429         reference: __pet_ref_33
430         read: 1
431         write: 0
432 - line: 25
433   domain: '[N, K] -> { S_17[k] : 0 <= k < K }'
434   body:
435     type: expression
436     expr:
437       type: op
438       operation: =
439       arguments:
440       - type: access
441         index: '[N, K] -> { S_17[k] -> k[] }'
442         reference: __pet_ref_34
443         read: 0
444         write: 1
445       - type: access
446         index: '[N, K] -> { S_17[k] -> [(1 + k)] }'
447         reference: __pet_ref_35
448         read: 1
449         write: 0
450 - line: 32
451   domain: '[N, K] -> { S_18[] }'
452   body:
453     type: expression
454     expr:
455       type: op
456       operation: =
457       arguments:
458       - type: access
459         index: '[N, K] -> { S_18[] -> j[] }'
460         reference: __pet_ref_36
461         read: 0
462         write: 1
463       - type: int
464         value: 0
465 - line: 33
466   domain: '[N, K] -> { S_19[j] : 0 <= j < N }'
467   body:
468     type: expression
469     expr:
470       type: op
471       operation: =
472       arguments:
473       - type: access
474         index: '[N, K] -> { S_19[j] -> i[] }'
475         reference: __pet_ref_37
476         read: 0
477         write: 1
478       - type: access
479         index: '[N, K] -> { S_19[j] -> [(j)] }'
480         reference: __pet_ref_38
481         read: 1
482         write: 0
483 - line: 34
484   domain: '[N, K] -> { S_20[j, i] : j >= 0 and j <= i < N }'
485   body:
486     type: expression
487     expr:
488       type: call
489       name: WriteMatrix
490       arguments:
491       - type: access
492         index: '[N, K] -> { S_20[j, i] -> R[(j), (i)] }'
493         reference: __pet_ref_39
494         read: 1
495         write: 0
496 - line: 33
497   domain: '[N, K] -> { S_21[j, i] : j >= 0 and j <= i < N }'
498   body:
499     type: expression
500     expr:
501       type: op
502       operation: =
503       arguments:
504       - type: access
505         index: '[N, K] -> { S_21[j, i] -> i[] }'
506         reference: __pet_ref_40
507         read: 0
508         write: 1
509       - type: access
510         index: '[N, K] -> { S_21[j, i] -> [(1 + i)] }'
511         reference: __pet_ref_41
512         read: 1
513         write: 0
514 - line: 32
515   domain: '[N, K] -> { S_22[j] : 0 <= j < N }'
516   body:
517     type: expression
518     expr:
519       type: op
520       operation: =
521       arguments:
522       - type: access
523         index: '[N, K] -> { S_22[j] -> j[] }'
524         reference: __pet_ref_42
525         read: 0
526         write: 1
527       - type: access
528         index: '[N, K] -> { S_22[j] -> [(1 + j)] }'
529         reference: __pet_ref_43
530         read: 1
531         write: 0
532 - line: -1
533   domain: '[N, K] -> { S_23[] }'
534   body:
535     type: expression
536     expr:
537       type: op
538       operation: kill
539       arguments:
540       - type: access
541         killed: '[N, K] -> { S_23[] -> j[] }'
542         index: '[N, K] -> { S_23[] -> j[] }'
543         reference: __pet_ref_44
544         kill: 1
545 - line: -1
546   domain: '[N, K] -> { S_24[] }'
547   body:
548     type: expression
549     expr:
550       type: op
551       operation: kill
552       arguments:
553       - type: access
554         killed: '[N, K] -> { S_24[] -> i[] }'
555         index: '[N, K] -> { S_24[] -> i[] }'
556         reference: __pet_ref_45
557         kill: 1
558 - line: -1
559   domain: '[N, K] -> { S_25[] }'
560   body:
561     type: expression
562     expr:
563       type: op
564       operation: kill
565       arguments:
566       - type: access
567         killed: '[N, K] -> { S_25[] -> k[] }'
568         index: '[N, K] -> { S_25[] -> k[] }'
569         reference: __pet_ref_46
570         kill: 1