break up access relations into may_read/may_write/must_write in interface
[pet.git] / tests / quasi_affine.scop
blobbf12bac7dd224ccaa325ab436202b371e487ce29
1 start: 84
2 end: 218
3 indent: "\t"
4 context: '[N, in] -> {  : N <= 2147483647 and N >= 0 and in <= 2147483647 and in >=
5   -2147483648 }'
6 arrays:
7 - context: '[N] -> {  : N >= 0 }'
8   extent: '[N, in] -> { A[i0] : i0 <= -1 + N and i0 >= 0 }'
9   element_type: int
10   element_size: 4
11 - context: '{  :  }'
12   extent: '[N, in] -> { out[] }'
13   element_type: int
14   element_size: 4
15 statements:
16 - line: 14
17   domain: '[N, in] -> { S_0[] }'
18   schedule: '[N] -> { S_0[] -> [0, 0] }'
19   body:
20     type: expression
21     expr:
22       type: op
23       operation: =
24       arguments:
25       - type: access
26         index: '[N, in] -> { S_0[] -> A[(0)] }'
27         reference: __pet_ref_0
28         read: 0
29         write: 1
30       - type: access
31         index: '[N, in] -> { S_0[] -> [(in)] }'
32         reference: __pet_ref_1
33         read: 1
34         write: 0
35 - line: 16
36   domain: '[N, in] -> { S_1[i] : i <= N and i >= 1 }'
37   schedule: '[N] -> { S_1[i] -> [0, 1, i, 0] }'
38   body:
39     type: expression
40     expr:
41       type: op
42       operation: =
43       arguments:
44       - type: access
45         index: '[N, in] -> { S_1[i] -> A[(i)] }'
46         reference: __pet_ref_2
47         read: 0
48         write: 1
49       - type: call
50         name: f
51         arguments:
52         - type: call
53           name: g
54           arguments:
55           - type: access
56             index: '[N, in] -> { S_1[i] -> A[(floor((i)/2))] }'
57             reference: __pet_ref_3
58             read: 1
59             write: 0
60 - line: 18
61   domain: '[N, in] -> { S_2[] }'
62   schedule: '[N] -> { S_2[] -> [0, 2] }'
63   body:
64     type: expression
65     expr:
66       type: op
67       operation: =
68       arguments:
69       - type: access
70         index: '[N, in] -> { S_2[] -> out[] }'
71         reference: __pet_ref_4
72         read: 0
73         write: 1
74       - type: call
75         name: g
76         arguments:
77         - type: access
78           index: '[N, in] -> { S_2[] -> A[(N)] }'
79           reference: __pet_ref_5
80           read: 1
81           write: 0