extract_affine_from_call: extract out is_affine_builtin
[pet.git] / tests / matmul.scop
blob7b2c4dfed89636598d98ad1a244c984ef33aedaf
1 start: 95
2 end: 277
3 indent: "\t"
4 context: '[N, K, M] -> {  : K >= 0 and N >= 0 and N <= 2147483647 and K <= 2147483647
5   and M <= 2147483647 and M >= -2147483648 }'
6 schedule: '{ domain: "[M, N, K] -> { S_0[i, j] : i >= 0 and i <= -1 + M and j >= 0
7   and j <= -1 + N; S_1[i, j, k] : i >= 0 and i <= -1 + M and j >= 0 and j <= -1 +
8   N and k >= 0 and k <= -1 + K }", child: { schedule: "[M, N, K] -> L_0[{ S_0[i, j]
9   -> [(i)]; S_1[i, j, k] -> [(i)] }]", child: { schedule: "[M, N, K] -> L_1[{ S_0[i,
10   j] -> [(j)]; S_1[i, j, k] -> [(j)] }]", child: { sequence: [ { filter: "[M, N, K]
11   -> { S_0[i, j] }" }, { filter: "[M, N, K] -> { S_1[i, j, k] }", child: { schedule:
12   "[M, N, K] -> L_2[{ S_1[i, j, k] -> [(k)] }]" } } ] } } } }'
13 arrays:
14 - context: '[K] -> {  : K >= 0 }'
15   extent: '[N, K, M] -> { A[i0, i1] : i1 >= 0 and i1 <= -1 + K and i0 >= 0 }'
16   element_type: float
17   element_size: 4
18 - context: '[N] -> {  : N >= 0 }'
19   extent: '[N, K, M] -> { B[i0, i1] : i1 >= 0 and i1 <= -1 + N and i0 >= 0 }'
20   element_type: float
21   element_size: 4
22 - context: '[N] -> {  : N >= 0 }'
23   extent: '[N, K, M] -> { C[i0, i1] : i1 >= 0 and i1 <= -1 + N and i0 >= 0 }'
24   element_type: float
25   element_size: 4
26   live_out: 1
27 statements:
28 - line: 9
29   domain: '[N, K, M] -> { S_0[i, j] : i >= 0 and i <= -1 + M and j >= 0 and j <= -1
30     + N }'
31   body:
32     type: expression
33     expr:
34       type: op
35       operation: =
36       arguments:
37       - type: access
38         index: '[N, K, M] -> { S_0[i, j] -> C[(i), (j)] }'
39         reference: __pet_ref_0
40         read: 0
41         write: 1
42       - type: int
43         value: 0
44 - line: 11
45   domain: '[N, K, M] -> { S_1[i, j, k] : i >= 0 and i <= -1 + M and j >= 0 and j <=
46     -1 + N and k >= 0 and k <= -1 + K }'
47   body:
48     type: expression
49     expr:
50       type: op
51       operation: +=
52       arguments:
53       - type: access
54         index: '[N, K, M] -> { S_1[i, j, k] -> C[(i), (j)] }'
55         reference: __pet_ref_1
56         read: 1
57         write: 1
58       - type: op
59         operation: '*'
60         arguments:
61         - type: access
62           index: '[N, K, M] -> { S_1[i, j, k] -> A[(i), (k)] }'
63           reference: __pet_ref_2
64           read: 1
65           write: 0
66         - type: access
67           index: '[N, K, M] -> { S_1[i, j, k] -> B[(k), (j)] }'
68           reference: __pet_ref_3
69           read: 1
70           write: 0