push affine conditions into index expressions
[pet.git] / tests / quasi_affine.scop
blob6aaf228dcc2d7dad2247f2aeca0c58fda262ac38
1 start: 88
2 end: 222
3 indent: "\t"
4 context: '[N, in] -> {  : -1 <= N <= 2147483646 and -2147483648 <= in <= 2147483647
5   }'
6 schedule: '{ domain: "[N, in] -> { S_3[]; S_4[]; S_2[] : N >= 0; S_1[i] : 0 < i <=
7   N; S_0[] : N >= 0; S_6[]; S_5[] }", child: { sequence: [ { filter: "[N] -> { S_0[]
8   }" }, { filter: "[N] -> { S_1[i] }", child: { schedule: "[N] -> L_0[{ S_1[i] ->
9   [(i)] }]" } }, { filter: "[N] -> { S_2[] }" }, { filter: "[N] -> { S_5[]; S_4[];
10   S_6[]; S_3[] }", child: { set: [ { filter: "{ S_3[] }" }, { filter: "{ S_4[] }"
11   }, { filter: "{ S_5[] }" }, { filter: "{ S_6[] }" } ] } } ] } }'
12 arrays:
13 - context: '[N] -> {  : -1 <= N <= 2147483646 }'
14   extent: '[N, in] -> { A[i0] : 0 <= i0 <= N }'
15   element_type: int
16   element_size: 4
17 - context: '{  :  }'
18   extent: '[N, in] -> { i[] }'
19   element_type: int
20   element_size: 4
21 - context: '{  :  }'
22   extent: '[N, in] -> { in[] }'
23   element_type: int
24   element_size: 4
25 - context: '{  :  }'
26   extent: '[N, in] -> { out[] }'
27   element_type: int
28   element_size: 4
29 statements:
30 - line: 14
31   domain: '[N, in] -> { S_0[] : N >= 0 }'
32   body:
33     type: expression
34     expr:
35       type: op
36       operation: =
37       arguments:
38       - type: access
39         index: '[N, in] -> { S_0[] -> A[(0)] }'
40         reference: __pet_ref_0
41         read: 0
42         write: 1
43       - type: access
44         index: '[N, in] -> { S_0[] -> [(in)] }'
45         reference: __pet_ref_1
46         read: 1
47         write: 0
48 - line: 16
49   domain: '[N, in] -> { S_1[i] : 0 < i <= N }'
50   body:
51     type: expression
52     expr:
53       type: op
54       operation: =
55       arguments:
56       - type: access
57         index: '[N, in] -> { S_1[i] -> A[(i)] }'
58         reference: __pet_ref_2
59         read: 0
60         write: 1
61       - type: call
62         name: f
63         arguments:
64         - type: call
65           name: g
66           arguments:
67           - type: access
68             index: '[N, in] -> { S_1[i] -> A[(floor((i)/2))] }'
69             reference: __pet_ref_3
70             read: 1
71             write: 0
72 - line: 18
73   domain: '[N, in] -> { S_2[] : N >= 0 }'
74   body:
75     type: expression
76     expr:
77       type: op
78       operation: =
79       arguments:
80       - type: access
81         index: '[N, in] -> { S_2[] -> out[] }'
82         reference: __pet_ref_4
83         read: 0
84         write: 1
85       - type: call
86         name: g
87         arguments:
88         - type: access
89           index: '[N, in] -> { S_2[] -> A[(N)] }'
90           reference: __pet_ref_5
91           read: 1
92           write: 0
93 - line: -1
94   domain: '[N, in] -> { S_3[] }'
95   body:
96     type: expression
97     expr:
98       type: op
99       operation: kill
100       arguments:
101       - type: access
102         killed: '[N, in] -> { S_3[] -> i[] }'
103         index: '[N, in] -> { S_3[] -> i[] }'
104         reference: __pet_ref_6
105         kill: 1
106 - line: -1
107   domain: '[N, in] -> { S_4[] }'
108   body:
109     type: expression
110     expr:
111       type: op
112       operation: kill
113       arguments:
114       - type: access
115         killed: '[N, in] -> { S_4[] -> in[] }'
116         index: '[N, in] -> { S_4[] -> in[] }'
117         reference: __pet_ref_7
118         kill: 1
119 - line: -1
120   domain: '[N, in] -> { S_5[] }'
121   body:
122     type: expression
123     expr:
124       type: op
125       operation: kill
126       arguments:
127       - type: access
128         killed: '[N, in] -> { S_5[] -> A[o0] : 0 <= o0 <= N }'
129         index: '[N, in] -> { S_5[] -> A[] }'
130         depth: 1
131         reference: __pet_ref_8
132         kill: 1
133 - line: -1
134   domain: '[N, in] -> { S_6[] }'
135   body:
136     type: expression
137     expr:
138       type: op
139       operation: kill
140       arguments:
141       - type: access
142         killed: '[N, in] -> { S_6[] -> out[] }'
143         index: '[N, in] -> { S_6[] -> out[] }'
144         reference: __pet_ref_9
145         kill: 1