pet_expr_filter: avoid introduction of constraints in index expression
[pet.git] / tests / for_while_init2.scop
blob6f2f8d2414535f07890965ac5a8bcad06b85b0a8
1 start: 83
2 end: 234
3 context: '[n] -> {  : n <= 2147483647 and n >= -2147483648 }'
4 arrays:
5 - context: '{  :  }'
6   extent: '[n] -> { __pet_test_0[x1, t] : x1 <= -1 + n and x1 >= 0 and t >= 0 }'
7   value_bounds: '{ [i0] : i0 >= 0 and i0 <= 1 }'
8   element_type: int
9   element_size: 4
10   uniquely_defined: 1
11 - context: '{  :  }'
12   extent: '[n] -> { x2[] }'
13   element_type: int
14   element_size: 4
15   declared: 1
16 - context: '{  :  }'
17   extent: '[n] -> { s[] }'
18   element_type: int
19   element_size: 4
20 statements:
21 - line: 12
22   domain: '[n] -> { S1[x1] : x1 <= -1 + n and x1 >= 0 }'
23   schedule: '[n] -> { S1[x1] -> [0, x1, 0] }'
24   body:
25     type: op
26     operation: =
27     arguments:
28     - type: access
29       relation: '[n] -> { S1[x1] -> s[] }'
30       index: '[n] -> { S1[x1] -> s[] }'
31       reference: __pet_ref_0
32       read: 0
33       write: 1
34     - type: call
35       name: f
36 - line: 13
37   domain: '[n] -> { S_5[x1] : x1 <= -1 + n and x1 >= 0 }'
38   schedule: '[n] -> { S_5[x1] -> [0, x1, 1, 0] }'
39   body:
40     type: op
41     operation: kill
42     arguments:
43     - type: access
44       relation: '[n] -> { S_5[x1] -> x2[] }'
45       index: '[n] -> { S_5[x1] -> x2[] }'
46       reference: __pet_ref_1
47       read: 0
48       write: 0
49 - line: 13
50   domain: '[n] -> { S_1[x1] : x1 <= -1 + n and x1 >= 0 }'
51   schedule: '[n] -> { S_1[x1] -> [0, x1, 1, 1] }'
52   body:
53     type: op
54     operation: =
55     arguments:
56     - type: access
57       relation: '[n] -> { S_1[x1] -> x2[] }'
58       index: '[n] -> { S_1[x1] -> x2[] }'
59       reference: __pet_ref_2
60       read: 0
61       write: 1
62     - type: access
63       relation: '[n] -> { S_1[x1] -> s[] }'
64       index: '[n] -> { S_1[x1] -> s[] }'
65       reference: __pet_ref_3
66       read: 1
67       write: 0
68 - line: 13
69   domain: '[n] -> { [S_2[x1, t] -> [1]] : x1 <= -1 + n and x1 >= 0 and t >= 0 }'
70   schedule: '[n] -> { S_2[x1, t] -> [0, x1, 1, 2, t, 0] }'
71   body:
72     type: op
73     operation: =
74     arguments:
75     - type: access
76       relation: '[n] -> { S_2[x1, t] -> __pet_test_0[x1, t] }'
77       index: '[n] -> { S_2[x1, t] -> __pet_test_0[(x1), (t)] }'
78       reference: __pet_ref_5
79       read: 0
80       write: 1
81     - type: call
82       name: P
83       arguments:
84       - type: access
85         relation: '[n] -> { S_2[x1, t] -> [x1] }'
86         index: '[n] -> { S_2[x1, t] -> [(x1)] }'
87         reference: __pet_ref_6
88         read: 1
89         write: 0
90       - type: access
91         relation: '[n] -> { S_2[x1, t] -> x2[] }'
92         index: '[n] -> { S_2[x1, t] -> x2[] }'
93         reference: __pet_ref_7
94         read: 1
95         write: 0
96   arguments:
97   - type: access
98     relation: '[n] -> { S_2[x1, t] -> __pet_test_0[x1, -1 + t] : t >= 1 }'
99     index: '[n] -> { S_2[x1, t] -> __pet_test_0[(x1), ((-1 + t) : t >= 1)] }'
100     reference: __pet_ref_4
101     read: 1
102     write: 0
103 - line: 14
104   domain: '[n] -> { [S2[x1, t] -> [1]] : x1 <= -1 + n and x1 >= 0 and t >= 0 }'
105   schedule: '[n] -> { S2[x1, t] -> [0, x1, 1, 2, t, 1, 0] }'
106   body:
107     type: op
108     operation: =
109     arguments:
110     - type: access
111       relation: '[n] -> { S2[x1, t] -> s[] }'
112       index: '[n] -> { S2[x1, t] -> s[] }'
113       reference: __pet_ref_9
114       read: 0
115       write: 1
116     - type: call
117       name: g
118       arguments:
119       - type: access
120         relation: '[n] -> { S2[x1, t] -> s[] }'
121         index: '[n] -> { S2[x1, t] -> s[] }'
122         reference: __pet_ref_10
123         read: 1
124         write: 0
125   arguments:
126   - type: access
127     relation: '[n] -> { S2[x1, t] -> __pet_test_0[x1, t] }'
128     index: '[n] -> { S2[x1, t] -> __pet_test_0[(x1), (t)] }'
129     reference: __pet_ref_8
130     read: 1
131     write: 0
132 - line: 13
133   domain: '[n] -> { [S_4[x1, t] -> [1]] : x1 <= -1 + n and x1 >= 0 and t >= 0 }'
134   schedule: '[n] -> { S_4[x1, t] -> [0, x1, 1, 2, t, 2] }'
135   body:
136     type: op
137     operation: +=
138     arguments:
139     - type: access
140       relation: '[n] -> { S_4[x1, t] -> x2[] }'
141       index: '[n] -> { S_4[x1, t] -> x2[] }'
142       reference: __pet_ref_12
143       read: 0
144       write: 1
145     - type: access
146       relation: '[n] -> { S_4[x1, t] -> s[] }'
147       index: '[n] -> { S_4[x1, t] -> s[] }'
148       reference: __pet_ref_13
149       read: 1
150       write: 0
151   arguments:
152   - type: access
153     relation: '[n] -> { S_4[x1, t] -> __pet_test_0[x1, t] }'
154     index: '[n] -> { S_4[x1, t] -> __pet_test_0[(x1), (t)] }'
155     reference: __pet_ref_11
156     read: 1
157     write: 0
158 - line: 13
159   domain: '[n] -> { S_6[x1] : x1 <= -1 + n and x1 >= 0 }'
160   schedule: '[n] -> { S_6[x1] -> [0, x1, 1, 3] }'
161   body:
162     type: op
163     operation: kill
164     arguments:
165     - type: access
166       relation: '[n] -> { S_6[x1] -> x2[] }'
167       index: '[n] -> { S_6[x1] -> x2[] }'
168       reference: __pet_ref_14
169       read: 0
170       write: 0
171 - line: 16
172   domain: '[n] -> { R[x1] : x1 <= -1 + n and x1 >= 0 }'
173   schedule: '[n] -> { R[x1] -> [0, x1, 2] }'
174   body:
175     type: call
176     name: h
177     arguments:
178     - type: access
179       relation: '[n] -> { R[x1] -> s[] }'
180       index: '[n] -> { R[x1] -> s[] }'
181       reference: __pet_ref_15
182       read: 1
183       write: 0
184 implications:
185 - satisfied: 1
186   extension: '[n] -> { __pet_test_0[x1, t] -> __pet_test_0[x1, t''] : x1 >= 0 and
187     x1 <= -1 + n and t'' <= t and t'' >= 0 }'