pet_scop_collect_domains: properly handle statements with arguments
[pet.git] / tests / independent3.scop
blob3f045a1b751cc915b0817674fe7682852e32dcc7
1 start: 44
2 end: 209
3 indent: "\t"
4 context: '[n] -> {  : n >= 0 and n <= 2147483647 }'
5 arrays:
6 - context: '{  :  }'
7   extent: '[n] -> { t[] }'
8   element_type: float
9   element_size: 4
10   declared: 1
11 - context: '[n] -> {  : n >= 0 }'
12   extent: '[n] -> { A[i0, i1] : i1 >= 0 and i0 >= 0 and i1 <= -1 + n }'
13   element_type: int
14   element_size: 4
15 - context: '[n] -> {  : n >= 0 }'
16   extent: '[n] -> { B[i0, i1] : i1 >= 0 and i0 >= 0 and i1 <= -1 + n }'
17   element_type: int
18   element_size: 4
19 statements:
20 - line: 7
21   domain: '[n] -> { S_0[i, j] : i >= 0 and i <= -1 + n and j <= -1 + n and j >= 0
22     }'
23   schedule: '[n] -> { S_0[i, j] -> [0, i, j, 0, 0] }'
24   body:
25     type: expression
26     expr:
27       type: op
28       operation: kill
29       arguments:
30       - type: access
31         killed: '[n] -> { S_0[i, j] -> t[] }'
32         index: '[n] -> { S_0[i, j] -> t[] }'
33         reference: __pet_ref_0
34         kill: 1
35 - line: 7
36   domain: '[n] -> { S_1[i, j] : i >= 0 and i <= -1 + n and j <= -1 + n and j >= 0
37     }'
38   schedule: '[n] -> { S_1[i, j] -> [0, i, j, 0, 1] }'
39   body:
40     type: expression
41     expr:
42       type: op
43       operation: =
44       arguments:
45       - type: access
46         index: '[n] -> { S_1[i, j] -> t[] }'
47         reference: __pet_ref_1
48         read: 0
49         write: 1
50       - type: op
51         operation: +
52         arguments:
53         - type: access
54           index: '[n] -> { S_1[i, j] -> [(i)] }'
55           reference: __pet_ref_2
56           read: 1
57           write: 0
58         - type: access
59           index: '[n] -> { S_1[i, j] -> [(j)] }'
60           reference: __pet_ref_3
61           read: 1
62           write: 0
63 - line: 8
64   domain: '[n] -> { S_3[i, j] : i >= 0 and i <= -1 + n and j <= -1 + n and j >= 0
65     }'
66   schedule: '[n] -> { S_3[i, j] -> [0, i, j, 1] }'
67   body:
68     type: expression
69     expr:
70       type: op
71       operation: =
72       arguments:
73       - type: access
74         index: '[n] -> { [S_3[i, j] -> [i2]] -> B[(i), ((i2) : i2 >= 0)] }'
75         reference: __pet_ref_5
76         read: 0
77         write: 1
78         arguments:
79         - type: access
80           index: '[n] -> { S_3[i, j] -> A[(i), (j)] }'
81           reference: __pet_ref_4
82           read: 1
83           write: 0
84       - type: access
85         index: '[n] -> { S_3[i, j] -> t[] }'
86         reference: __pet_ref_6
87         read: 1
88         write: 0
89 - line: 7
90   domain: '[n] -> { S_2[i, j] : i >= 0 and i <= -1 + n and j <= -1 + n and j >= 0
91     }'
92   schedule: '[n] -> { S_2[i, j] -> [0, i, j, 2] }'
93   body:
94     type: expression
95     expr:
96       type: op
97       operation: kill
98       arguments:
99       - type: access
100         killed: '[n] -> { S_2[i, j] -> t[] }'
101         index: '[n] -> { S_2[i, j] -> t[] }'
102         reference: __pet_ref_7
103         kill: 1
104 independences:
105 - filter: '[n] -> { S_2[i, j] -> S_2[i, j''] : j'' >= 1 + j; S_0[i, j] -> S_1[i, j'']
106     : j'' >= 1 + j; S_2[i, j] -> S_1[i, j''] : j'' >= 1 + j; S_3[i, j] -> S_1[i, j'']
107     : j'' >= 1 + j; S_0[i, j] -> S_2[i, j''] : j'' >= 1 + j; S_3[i, j] -> S_2[i, j'']
108     : j'' >= 1 + j; S_1[i, j] -> S_0[i, j''] : j'' >= 1 + j; S_2[i, j] -> S_0[i, j'']
109     : j'' >= 1 + j; S_0[i, j] -> S_0[i, j''] : j'' >= 1 + j; S_0[i, j] -> S_3[i, j'']
110     : j'' >= 1 + j; S_3[i, j] -> S_0[i, j''] : j'' >= 1 + j; S_1[i, j] -> S_2[i, j'']
111     : j'' >= 1 + j; S_3[i, j] -> S_3[i, j''] : j'' >= 1 + j; S_1[i, j] -> S_3[i, j'']
112     : j'' >= 1 + j; S_1[i, j] -> S_1[i, j''] : j'' >= 1 + j; S_2[i, j] -> S_3[i, j'']
113     : j'' >= 1 + j }'
114   local: '{ t[] }'