pet_expr: merge unary, binary and ternary types into operation type
[pet.git] / tests / data_dependent.scop
blob71b3bccb0650641cc19c94358270347b0c58b930
1 start: 274
2 end: 498
3 context: '[N, M] -> {  : N >= 10 and N <= 1000 and M >= 10 and M <= 1000 }'
4 arrays:
5 - context: '[M, N] -> {  : N >= 0 and M >= 0 }'
6   extent: '[N, M] -> { in1[i0, i1] : i1 <= -1 + M and i1 >= 0 and i0 <= -1 + N and
7     i0 >= 0 }'
8   element_type: int
9   element_size: 4
10 - context: '[N] -> {  : N >= 0 }'
11   extent: '[N, M] -> { in2[i0] : i0 <= -1 + N and i0 >= 0 }'
12   value_bounds: '{ [i0] : i0 >= -1 and i0 <= 1 }'
13   element_type: int
14   element_size: 4
15 - context: '[N] -> {  : N >= 0 }'
16   extent: '[N, M] -> { A[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <=
17     9 }'
18   element_type: int
19   element_size: 4
20 - context: '[N] -> {  : N >= 0 }'
21   extent: '[N, M] -> { C[i0] : i0 <= -1 + N and i0 >= 0 }'
22   element_type: int
23   element_size: 4
24 - context: '{  :  }'
25   extent: '[N, M] -> { m[] }'
26   element_type: int
27   element_size: 4
28 statements:
29 - line: 23
30   domain: '[N, M] -> { S_0[i] : i <= -1 + N and i >= 0 }'
31   schedule: '[N] -> { S_0[i] -> [0, i, 0] }'
32   body:
33     type: op
34     operation: =
35     arguments:
36     - type: access
37       relation: '[N, M] -> { S_0[i] -> m[] }'
38       index: '[N, M] -> { S_0[i] -> m[] }'
39       reference: __pet_ref_0
40       read: 0
41       write: 1
42     - type: op
43       operation: +
44       arguments:
45       - type: access
46         relation: '[N, M] -> { S_0[i] -> [i] }'
47         index: '[N, M] -> { S_0[i] -> [(i)] }'
48         reference: __pet_ref_1
49         read: 1
50         write: 0
51       - type: int
52         value: 1
53 - line: 25
54   domain: '[N, M] -> { S_1[i, j] : j <= -1 + M and j >= 0 and i <= -1 + N and i >=
55     0 }'
56   schedule: '[M, N] -> { S_1[i, j] -> [0, i, 1, j] }'
57   body:
58     type: op
59     operation: =
60     arguments:
61     - type: access
62       relation: '[N, M] -> { S_1[i, j] -> m[] }'
63       index: '[N, M] -> { S_1[i, j] -> m[] }'
64       reference: __pet_ref_2
65       read: 0
66       write: 1
67     - type: call
68       name: g
69       arguments:
70       - type: call
71         name: h
72         arguments:
73         - type: access
74           relation: '[N, M] -> { S_1[i, j] -> m[] }'
75           index: '[N, M] -> { S_1[i, j] -> m[] }'
76           reference: __pet_ref_3
77           read: 1
78           write: 0
79       - type: access
80         relation: '[N, M] -> { S_1[i, j] -> in1[i, j] }'
81         index: '[N, M] -> { S_1[i, j] -> in1[(i), (j)] }'
82         reference: __pet_ref_4
83         read: 1
84         write: 0
85 - line: 26
86   domain: '[N, M] -> { S_2[i] : i <= -1 + N and i >= 0 }'
87   schedule: '[N] -> { S_2[i] -> [0, i, 2] }'
88   body:
89     type: call
90     name: compute_row
91     arguments:
92     - type: call
93       name: h
94       arguments:
95       - type: access
96         relation: '[N, M] -> { S_2[i] -> m[] }'
97         index: '[N, M] -> { S_2[i] -> m[] }'
98         reference: __pet_ref_5
99         read: 1
100         write: 0
101     - type: access
102       relation: '[N, M] -> { S_2[i] -> A[i, o1] }'
103       index: '[N, M] -> { S_2[i] -> A[(i)] }'
104       reference: __pet_ref_6
105       read: 0
106       write: 1
107 - line: 28
108   domain: '[N, M] -> { S_3[] }'
109   schedule: '{ S_3[] -> [1] }'
110   body:
111     type: op
112     operation: =
113     arguments:
114     - type: access
115       relation: '[N, M] -> { S_3[] -> A[5, 6] }'
116       index: '[N, M] -> { S_3[] -> A[(5), (6)] }'
117       reference: __pet_ref_7
118       read: 0
119       write: 1
120     - type: int
121       value: 0
122 - line: 30
123   domain: '[N, M] -> { S_4[i] : i <= -3 + N and i >= 0 }'
124   schedule: '[N] -> { S_4[i] -> [2, i] }'
125   body:
126     type: op
127     operation: =
128     arguments:
129     - type: access
130       relation: '[N, M] -> { S_4[i] -> C[i] }'
131       index: '[N, M] -> { S_4[i] -> C[(i)] }'
132       reference: __pet_ref_8
133       read: 0
134       write: 1
135     - type: call
136       name: f
137       arguments:
138       - type: access
139         relation: '[N, M] -> { [S_4[i] -> [i1]] -> A[1 + i + i1, o1] }'
140         index: '[N, M] -> { [S_4[i] -> [i1]] -> A[(1 + i + i1)] }'
141         reference: __pet_ref_10
142         read: 1
143         write: 0
144         arguments:
145         - type: access
146           relation: '[N, M] -> { S_4[i] -> in2[i] }'
147           index: '[N, M] -> { S_4[i] -> in2[(i)] }'
148           reference: __pet_ref_9
149           read: 1
150           write: 0