pet_stmt: use pet_tree to represent statement body
[pet.git] / tests / for_while.scop
blobb9e724431d1f6927a01a1d593f2ec0b8f722dbfe
1 start: 83
2 end: 231
3 indent: "\t"
4 context: '[n] -> {  : n <= 2147483647 and n >= -2147483648 }'
5 arrays:
6 - context: '{  :  }'
7   extent: '[n] -> { __pet_test_0[x1, x2] : x1 <= -1 + n and x1 >= 0 and x2 >= 0 }'
8   value_bounds: '{ [i0] : i0 >= 0 and i0 <= 1 }'
9   element_type: int
10   element_size: 4
11   uniquely_defined: 1
12 - context: '{  :  }'
13   extent: '[n] -> { s[] }'
14   element_type: int
15   element_size: 4
16 statements:
17 - line: 12
18   domain: '[n] -> { S1[x1] : x1 <= -1 + n and x1 >= 0 }'
19   schedule: '[n] -> { S1[x1] -> [0, x1, 0] }'
20   body:
21     type: expression
22     expr:
23       type: op
24       operation: =
25       arguments:
26       - type: access
27         relation: '[n] -> { S1[x1] -> s[] }'
28         index: '[n] -> { S1[x1] -> s[] }'
29         reference: __pet_ref_0
30         read: 0
31         write: 1
32       - type: call
33         name: f
34 - line: 13
35   domain: '[n] -> { [S_1[x1, x2] -> [1]] : x1 <= -1 + n and x1 >= 0 and x2 >= 0 }'
36   schedule: '[n] -> { S_1[x1, x2] -> [0, x1, 1, x2, 0] }'
37   body:
38     type: expression
39     expr:
40       type: op
41       operation: =
42       arguments:
43       - type: access
44         relation: '[n] -> { S_1[x1, x2] -> __pet_test_0[x1, x2] }'
45         index: '[n] -> { S_1[x1, x2] -> __pet_test_0[(x1), (x2)] }'
46         reference: __pet_ref_2
47         read: 0
48         write: 1
49       - type: call
50         name: P
51         arguments:
52         - type: access
53           relation: '[n] -> { S_1[x1, x2] -> [x1] }'
54           index: '[n] -> { S_1[x1, x2] -> [(x1)] }'
55           reference: __pet_ref_3
56           read: 1
57           write: 0
58         - type: access
59           relation: '[n] -> { S_1[x1, x2] -> [x2] }'
60           index: '[n] -> { S_1[x1, x2] -> [(x2)] }'
61           reference: __pet_ref_4
62           read: 1
63           write: 0
64   arguments:
65   - type: access
66     relation: '[n] -> { S_1[x1, x2] -> __pet_test_0[x1, -1 + x2] : x2 >= 1 }'
67     index: '[n] -> { S_1[x1, x2] -> __pet_test_0[(x1), ((-1 + x2) : x2 >= 1)] }'
68     reference: __pet_ref_1
69     read: 1
70     write: 0
71 - line: 14
72   domain: '[n] -> { [S2[x1, x2] -> [1]] : x1 <= -1 + n and x1 >= 0 and x2 >= 0 }'
73   schedule: '[n] -> { S2[x1, x2] -> [0, x1, 1, x2, 1, 0] }'
74   body:
75     type: expression
76     expr:
77       type: op
78       operation: =
79       arguments:
80       - type: access
81         relation: '[n] -> { S2[x1, x2] -> s[] }'
82         index: '[n] -> { S2[x1, x2] -> s[] }'
83         reference: __pet_ref_6
84         read: 0
85         write: 1
86       - type: call
87         name: g
88         arguments:
89         - type: access
90           relation: '[n] -> { S2[x1, x2] -> s[] }'
91           index: '[n] -> { S2[x1, x2] -> s[] }'
92           reference: __pet_ref_7
93           read: 1
94           write: 0
95   arguments:
96   - type: access
97     relation: '[n] -> { S2[x1, x2] -> __pet_test_0[x1, x2] }'
98     index: '[n] -> { S2[x1, x2] -> __pet_test_0[(x1), (x2)] }'
99     reference: __pet_ref_5
100     read: 1
101     write: 0
102 - line: 16
103   domain: '[n] -> { R[x1] : x1 <= -1 + n and x1 >= 0 }'
104   schedule: '[n] -> { R[x1] -> [0, x1, 2] }'
105   body:
106     type: expression
107     expr:
108       type: call
109       name: h
110       arguments:
111       - type: access
112         relation: '[n] -> { R[x1] -> s[] }'
113         index: '[n] -> { R[x1] -> s[] }'
114         reference: __pet_ref_8
115         read: 1
116         write: 0
117 implications:
118 - satisfied: 1
119   extension: '[n] -> { __pet_test_0[x1, x2] -> __pet_test_0[x1, x2''] : x2'' <= x2
120     and x1 >= 0 and x1 <= -1 + n and x2'' >= 0 }'