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