push affine conditions into index expressions
[pet.git] / tests / matmul.scop
blob8c4ab5e6ff0d154e64ad7147ba39c91f8c298f3a
1 start: 95
2 end: 277
3 indent: "\t"
4 context: '[N, K, M] -> {  : 0 <= N <= 2147483647 and 0 <= K <= 2147483647 and -2147483648
5   <= M <= 2147483647 }'
6 schedule: '{ domain: "[N, K, M] -> { S_1[i, j, k] : 0 <= i < M and 0 <= j < N and
7   0 <= k < K; S_3[]; S_0[i, j] : 0 <= i < M and 0 <= j < N; S_2[]; S_4[] }", child:
8   { sequence: [ { filter: "[M, N, K] -> { S_0[i, j]; S_1[i, j, k] }", child: { schedule:
9   "[M, N, K] -> L_0[{ S_0[i, j] -> [(i)]; S_1[i, j, k] -> [(i)] }]", child: { schedule:
10   "[M, N, K] -> L_1[{ S_0[i, j] -> [(j)]; S_1[i, j, k] -> [(j)] }]", child: { sequence:
11   [ { filter: "[M, N, K] -> { S_0[i, j] }" }, { filter: "[M, N, K] -> { S_1[i, j,
12   k] }", child: { schedule: "[M, N, K] -> L_2[{ S_1[i, j, k] -> [(k)] }]" } } ] }
13   } } }, { filter: "[M, N, K] -> { S_3[]; S_2[]; S_4[] }", child: { set: [ { filter:
14   "{ S_2[] }" }, { filter: "{ S_3[] }" }, { filter: "{ S_4[] }" } ] } } ] } }'
15 arrays:
16 - context: '[K] -> {  : K >= 0 }'
17   extent: '[N, K, M] -> { A[i0, i1] : i0 >= 0 and 0 <= i1 < K }'
18   element_type: float
19   element_size: 4
20 - context: '[N] -> {  : N >= 0 }'
21   extent: '[N, K, M] -> { B[i0, i1] : i0 >= 0 and 0 <= i1 < N }'
22   element_type: float
23   element_size: 4
24 - context: '[N] -> {  : N >= 0 }'
25   extent: '[N, K, M] -> { C[i0, i1] : i0 >= 0 and 0 <= i1 < N }'
26   element_type: float
27   element_size: 4
28   live_out: 1
29 - context: '{  :  }'
30   extent: '[N, K, M] -> { i[] }'
31   element_type: int
32   element_size: 4
33 - context: '{  :  }'
34   extent: '[N, K, M] -> { j[] }'
35   element_type: int
36   element_size: 4
37 - context: '{  :  }'
38   extent: '[N, K, M] -> { k[] }'
39   element_type: int
40   element_size: 4
41 statements:
42 - line: 9
43   domain: '[N, K, M] -> { S_0[i, j] : 0 <= i < M and 0 <= j < N }'
44   body:
45     type: expression
46     expr:
47       type: op
48       operation: =
49       arguments:
50       - type: access
51         index: '[N, K, M] -> { S_0[i, j] -> C[(i), (j)] }'
52         reference: __pet_ref_0
53         read: 0
54         write: 1
55       - type: int
56         value: 0
57 - line: 11
58   domain: '[N, K, M] -> { S_1[i, j, k] : 0 <= i < M and 0 <= j < N and 0 <= k < K
59     }'
60   body:
61     type: expression
62     expr:
63       type: op
64       operation: +=
65       arguments:
66       - type: access
67         index: '[N, K, M] -> { S_1[i, j, k] -> C[(i), (j)] }'
68         reference: __pet_ref_1
69         read: 1
70         write: 1
71       - type: op
72         operation: '*'
73         arguments:
74         - type: access
75           index: '[N, K, M] -> { S_1[i, j, k] -> A[(i), (k)] }'
76           reference: __pet_ref_2
77           read: 1
78           write: 0
79         - type: access
80           index: '[N, K, M] -> { S_1[i, j, k] -> B[(k), (j)] }'
81           reference: __pet_ref_3
82           read: 1
83           write: 0
84 - line: -1
85   domain: '[N, K, M] -> { S_2[] }'
86   body:
87     type: expression
88     expr:
89       type: op
90       operation: kill
91       arguments:
92       - type: access
93         killed: '[N, K, M] -> { S_2[] -> i[] }'
94         index: '[N, K, M] -> { S_2[] -> i[] }'
95         reference: __pet_ref_4
96         kill: 1
97 - line: -1
98   domain: '[N, K, M] -> { S_3[] }'
99   body:
100     type: expression
101     expr:
102       type: op
103       operation: kill
104       arguments:
105       - type: access
106         killed: '[N, K, M] -> { S_3[] -> j[] }'
107         index: '[N, K, M] -> { S_3[] -> j[] }'
108         reference: __pet_ref_5
109         kill: 1
110 - line: -1
111   domain: '[N, K, M] -> { S_4[] }'
112   body:
113     type: expression
114     expr:
115       type: op
116       operation: kill
117       arguments:
118       - type: access
119         killed: '[N, K, M] -> { S_4[] -> k[] }'
120         index: '[N, K, M] -> { S_4[] -> k[] }'
121         reference: __pet_ref_6
122         kill: 1