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