pet_array: explicitly keep track of whether array is innermost
[pet.git] / tests / struct9.scop
blobd45044c4d5ae8858cd7864ee12a731a4a530397d
1 start: 127
2 end: 359
3 indent: "\t"
4 context: '{  :  }'
5 schedule: '{ domain: "{ S_3[]; S_1[i, j, k, l] : 0 <= i <= 9 and 0 <= j <= 19 and
6   0 <= k <= 29 and 0 <= l <= 39; S_2[i, j, k, l] : 0 <= i <= 9 and 0 <= j <= 19 and
7   0 <= k <= 29 and 0 <= l <= 39; S_0[i, j, k, l] : 0 <= i <= 9 and 0 <= j <= 19 and
8   0 <= k <= 29 and 0 <= l <= 39 }", child: { sequence: [ { filter: "{ S_1[i, j, k,
9   l]; S_2[i, j, k, l]; S_0[i, j, k, l] }", child: { schedule: "L_0[{ S_1[i, j, k,
10   l] -> [(i)]; S_2[i, j, k, l] -> [(i)]; S_0[i, j, k, l] -> [(i)] }]", child: { schedule:
11   "L_1[{ S_1[i, j, k, l] -> [(j)]; S_2[i, j, k, l] -> [(j)]; S_0[i, j, k, l] -> [(j)]
12   }]", child: { schedule: "L_2[{ S_1[i, j, k, l] -> [(k)]; S_2[i, j, k, l] -> [(k)];
13   S_0[i, j, k, l] -> [(k)] }]", child: { schedule: "L_3[{ S_1[i, j, k, l] -> [(l)];
14   S_2[i, j, k, l] -> [(l)]; S_0[i, j, k, l] -> [(l)] }]", child: { sequence: [ { filter:
15   "{ S_0[i, j, k, l] }" }, { filter: "{ S_1[i, j, k, l] }" }, { filter: "{ S_2[i,
16   j, k, l] }" } ] } } } } } }, { filter: "{ S_3[] }" } ] } }'
17 types:
18 - name: s
19   definition: "struct s {\n    int a[30][40];\n}"
20 arrays:
21 - context: '{  :  }'
22   extent: '{ s[i0, i1] : 0 <= i0 <= 9 and 0 <= i1 <= 19 }'
23   element_type: struct s
24   element_size: 4800
25   element_is_record: 1
26   outer: 1
27 - context: '{  :  }'
28   extent: '{ s_a[s[i0, i1] -> a[i2, i3]] : 0 <= i0 <= 9 and 0 <= i1 <= 19 and 0 <=
29     i2 <= 29 and 0 <= i3 <= 39 }'
30   element_type: int
31   element_size: 4
32 statements:
33 - line: 18
34   domain: '{ S_0[i, j, k, l] : 0 <= i <= 9 and 0 <= j <= 19 and 0 <= k <= 29 and 0
35     <= l <= 39 }'
36   body:
37     type: expression
38     expr:
39       type: call
40       name: f1
41       arguments:
42       - type: access
43         index: '{ S_0[i, j, k, l] -> s_a[s[(i), (j)] -> a[(k), (l)]] }'
44         reference: __pet_ref_0
45         read: 1
46         write: 0
47 - line: 19
48   domain: '{ S_1[i, j, k, l] : 0 <= i <= 9 and 0 <= j <= 19 and 0 <= k <= 29 and 0
49     <= l <= 39 }'
50   body:
51     type: expression
52     expr:
53       type: call
54       name: f2
55       arguments:
56       - type: access
57         may_read: '{ S_1[i, j, k, l] -> s_a[s[i, j] -> a[k, o3]] }'
58         may_write: '{ S_1[i, j, k, l] -> s_a[s[i, j] -> a[k, o3]] }'
59         must_write: '{  }'
60         index: '{ S_1[i, j, k, l] -> s_a[s[(i), (j)] -> a[(k)]] }'
61         depth: 4
62         reference: __pet_ref_1
63         read: 1
64         write: 1
65 - line: 20
66   domain: '{ S_2[i, j, k, l] : 0 <= i <= 9 and 0 <= j <= 19 and 0 <= k <= 29 and 0
67     <= l <= 39 }'
68   body:
69     type: expression
70     expr:
71       type: call
72       name: f3
73       arguments:
74       - type: access
75         may_read: '{ S_2[i, j, k, l] -> s_a[s[i, j] -> a[o2, o3]] }'
76         may_write: '{ S_2[i, j, k, l] -> s_a[s[i, j] -> a[o2, o3]] }'
77         must_write: '{  }'
78         index: '{ S_2[i, j, k, l] -> s_a[s[(i), (j)] -> a[]] }'
79         depth: 4
80         reference: __pet_ref_2
81         read: 1
82         write: 1
83 - line: -1
84   domain: '{ S_3[] }'
85   body:
86     type: expression
87     expr:
88       type: op
89       operation: kill
90       arguments:
91       - type: access
92         killed: '{ S_3[] -> s[o0, o1] : 0 <= o0 <= 9 and 0 <= o1 <= 19 }'
93         index: '{ S_3[] -> s[] }'
94         depth: 2
95         reference: __pet_ref_3
96         kill: 1