keep track of assignments to parameters
[pet.git] / tests / QR.scop
blob3e4a07ba60e75e2d943b687d689709adcf6f45d3
1 context: '[N, K] -> {  : N >= 8 and N <= 16 and K >= 100 and K <= 1000 }'
2 context_value: '[K] -> {  : K = 256 }'
3 arrays:
4 - context: '[N] -> {  : N >= 0 }'
5   extent: '[N] -> { R[i0, i1] : i0 >= 0 and i1 >= 0 and i0 <= -1 + N and i1 <= -1
6     + N }'
7   element_type: int
8 - context: '[N, K] -> {  : K >= 0 and N >= 0 }'
9   extent: '[K, N] -> { X[i0, i1] : i0 >= 0 and i1 >= 0 and i0 <= -1 + K and i1 <=
10     -1 + N }'
11   element_type: int
12 - context: '{  :  }'
13   extent: '{ t[] }'
14   element_type: int
15 statements:
16 - line: 19
17   domain: '[N] -> { S_0[j, i] : j >= 0 and j <= -1 + N and i >= j and i <= -1 + N
18     }'
19   schedule: '[N] -> { S_0[j, i] -> [0, j, i] }'
20   body:
21     type: binary
22     operation: =
23     arguments:
24     - type: access
25       relation: '[N] -> { S_0[j, i] -> R[j, i] }'
26       read: 0
27       write: 1
28     - type: call
29       name: Zero
30 - line: 23
31   domain: '[N, K] -> { S_1[k, j] : k >= 0 and k <= -1 + K and j >= 0 and j <= -1 +
32     N }'
33   schedule: '[N, K] -> { S_1[k, j] -> [1, k, j] }'
34   body:
35     type: binary
36     operation: =
37     arguments:
38     - type: access
39       relation: '[N, K] -> { S_1[k, j] -> X[k, j] }'
40       read: 0
41       write: 1
42     - type: call
43       name: ReadMatrix
44 - line: 27
45   domain: '[N, K] -> { S_2[k, j] : k >= 0 and k <= -1 + K and j >= 0 and j <= -1 +
46     N }'
47   schedule: '[N, K] -> { S_2[k, j] -> [2, k, j, 0] }'
48   body:
49     type: call
50     name: Vectorize
51     arguments:
52     - type: access
53       relation: '[N, K] -> { S_2[k, j] -> R[j, j] }'
54       read: 1
55       write: 0
56     - type: access
57       relation: '[N, K] -> { S_2[k, j] -> X[k, j] }'
58       read: 1
59       write: 0
60     - type: access
61       relation: '[N, K] -> { S_2[k, j] -> R[j, j] }'
62       read: 0
63       write: 1
64     - type: access
65       relation: '[N, K] -> { S_2[k, j] -> X[k, j] }'
66       read: 0
67       write: 1
68     - type: access
69       relation: '[N, K] -> { S_2[k, j] -> t[] }'
70       read: 0
71       write: 1
72 - line: 29
73   domain: '[N, K] -> { S_3[k, j, i] : k >= 0 and k <= -1 + K and j >= 0 and j <= -1
74     + N and i >= 1 + j and i <= -1 + N }'
75   schedule: '[N, K] -> { S_3[k, j, i] -> [2, k, j, 1, i] }'
76   body:
77     type: call
78     name: Rotate
79     arguments:
80     - type: access
81       relation: '[N, K] -> { S_3[k, j, i] -> R[j, i] }'
82       read: 1
83       write: 0
84     - type: access
85       relation: '[N, K] -> { S_3[k, j, i] -> X[k, i] }'
86       read: 1
87       write: 0
88     - type: access
89       relation: '[N, K] -> { S_3[k, j, i] -> t[] }'
90       read: 1
91       write: 0
92     - type: access
93       relation: '[N, K] -> { S_3[k, j, i] -> R[j, i] }'
94       read: 0
95       write: 1
96     - type: access
97       relation: '[N, K] -> { S_3[k, j, i] -> X[k, i] }'
98       read: 0
99       write: 1
100     - type: access
101       relation: '[N, K] -> { S_3[k, j, i] -> t[] }'
102       read: 0
103       write: 1
104 - line: 34
105   domain: '[N] -> { S_4[j, i] : j >= 0 and j <= -1 + N and i >= j and i <= -1 + N
106     }'
107   schedule: '[N] -> { S_4[j, i] -> [3, j, i] }'
108   body:
109     type: call
110     name: WriteMatrix
111     arguments:
112     - type: access
113       relation: '[N] -> { S_4[j, i] -> R[j, i] }'
114       read: 1
115       write: 0