PetScan::extract_for: explicitly keep track of when iterator is virtual
[pet.git] / tests / propagate.scop
blob3e0e82f465225aaf8e8477da9f4b3ea106c3d3cd
1 context: '[N] -> {  : N >= 0 and N <= 2147483647 }'
2 arrays:
3 - context: '[N] -> {  : N >= 0 }'
4   extent: '[N] -> { a[i0, i1] : i0 >= 0 and i1 >= 0 and i1 <= -1 + N }'
5   element_type: int
6 - context: '{  :  }'
7   extent: '{ ind[] }'
8   element_type: int
9 statements:
10 - line: 9
11   domain: '[N] -> { S_0[i, j] : i >= 0 and j >= i and j <= -1 + N }'
12   schedule: '[N] -> { S_0[i, j] -> [0, i, j, 0] }'
13   body:
14     type: binary
15     operation: =
16     arguments:
17     - type: access
18       relation: '[N] -> { S_0[i, j] -> ind[] }'
19       read: 0
20       write: 1
21     - type: ternary
22       arguments:
23       - type: binary
24         operation: '>'
25         arguments:
26         - type: access
27           relation: '[N] -> { S_0[i, j] -> [i] }'
28           read: 1
29           write: 0
30         - type: access
31           relation: '[N] -> { S_0[i, j] -> [0] }'
32           read: 1
33           write: 0
34       - type: binary
35         operation: '-'
36         arguments:
37         - type: access
38           relation: '[N] -> { S_0[i, j] -> [i] }'
39           read: 1
40           write: 0
41         - type: access
42           relation: '[N] -> { S_0[i, j] -> [1] }'
43           read: 1
44           write: 0
45       - type: access
46         relation: '[N] -> { S_0[i, j] -> [i] }'
47         read: 1
48         write: 0
49 - line: 10
50   domain: '[N] -> { S_1[i, j] : i >= 0 and j >= i and j <= -1 + N }'
51   schedule: '[N] -> { S_1[i, j] -> [0, i, j, 1] }'
52   body:
53     type: binary
54     operation: =
55     arguments:
56     - type: access
57       relation: '[N] -> { S_1[i, j] -> a[i, j] }'
58       read: 0
59       write: 1
60     - type: access
61       relation: '[N] -> { S_1[i, j] -> a[-1 + i, 0] : i >= 1; S_1[0, j] -> a[0, 0]
62         }'
63       read: 1
64       write: 0