pet_stmt: use pet_tree to represent statement body
[pet.git] / tests / quasi_affine.scop
blob66557b582f2278945ca7036f331b6b4d04708e27
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         relation: '[N, in] -> { S_0[] -> A[0] }'
27         index: '[N, in] -> { S_0[] -> A[(0)] }'
28         reference: __pet_ref_0
29         read: 0
30         write: 1
31       - type: access
32         relation: '[N, in] -> { S_0[] -> [in] }'
33         index: '[N, in] -> { S_0[] -> [(in)] }'
34         reference: __pet_ref_1
35         read: 1
36         write: 0
37 - line: 16
38   domain: '[N, in] -> { S_1[i] : i <= N and i >= 1 }'
39   schedule: '[N] -> { S_1[i] -> [0, 1, i, 0] }'
40   body:
41     type: expression
42     expr:
43       type: op
44       operation: =
45       arguments:
46       - type: access
47         relation: '[N, in] -> { S_1[i] -> A[i] }'
48         index: '[N, in] -> { S_1[i] -> A[(i)] }'
49         reference: __pet_ref_2
50         read: 0
51         write: 1
52       - type: call
53         name: f
54         arguments:
55         - type: call
56           name: g
57           arguments:
58           - type: access
59             relation: '[N, in] -> { S_1[i] -> A[o0] : 2o0 >= -1 + i and 2o0 <= i }'
60             index: '[N, in] -> { S_1[i] -> A[(floor((i)/2))] }'
61             reference: __pet_ref_3
62             read: 1
63             write: 0
64 - line: 18
65   domain: '[N, in] -> { S_2[] }'
66   schedule: '[N] -> { S_2[] -> [0, 2] }'
67   body:
68     type: expression
69     expr:
70       type: op
71       operation: =
72       arguments:
73       - type: access
74         relation: '[N, in] -> { S_2[] -> out[] }'
75         index: '[N, in] -> { S_2[] -> out[] }'
76         reference: __pet_ref_4
77         read: 0
78         write: 1
79       - type: call
80         name: g
81         arguments:
82         - type: access
83           relation: '[N, in] -> { S_2[] -> A[N] }'
84           index: '[N, in] -> { S_2[] -> A[(N)] }'
85           reference: __pet_ref_5
86           read: 1
87           write: 0