use the clang driver to obtain command line arguments for the clang frontend
[pet.git] / tests / conditional_assignment2.scop
blob1ce79fd5b3a8450fe8e804459fb6d870b9d2cef0
1 context: '[N, M] -> {  : N >= 0 and M >= 0 }'
2 arrays:
3 - context: '[M, N] -> {  : N >= 0 and M >= 0 }'
4   extent: '[N, M] -> { in1[i0, i1] : i0 >= 0 and i1 >= 0 and i0 <= -1 + N and i1 <=
5     -1 + M }'
6   element_type: int
7 - context: '{  :  }'
8   extent: '{ in2[] }'
9   value_bounds: '{ [i0] : i0 >= -1 and i0 <= 1 }'
10   element_type: int
11 - context: '[N] -> {  : N >= 0 }'
12   extent: '[N] -> { A[i0, i1] : i0 >= 0 and i1 >= 0 and i0 <= -1 + N and i1 <= 9 }'
13   element_type: int
14 - context: '[N] -> {  : N >= 0 }'
15   extent: '[N] -> { C[i0] : i0 >= 0 and i0 <= -1 + N }'
16   element_type: int
17 - context: '{  :  }'
18   extent: '{ m[] }'
19   element_type: int
20 statements:
21 - line: 21
22   domain: '{ S_0[] }'
23   schedule: '{ S_0[] -> [0] }'
24   body:
25     type: binary
26     operation: =
27     arguments:
28     - type: access
29       relation: '{ S_0[] -> in2[] }'
30       read: 0
31       write: 1
32     - type: call
33       name: g2
34 - line: 23
35   domain: '[N] -> { S_1[i] : i >= 0 and i <= -1 + N }'
36   schedule: '[N] -> { S_1[i] -> [1, i, 0] }'
37   body:
38     type: binary
39     operation: =
40     arguments:
41     - type: access
42       relation: '[N] -> { S_1[i] -> m[] }'
43       read: 0
44       write: 1
45     - type: binary
46       operation: +
47       arguments:
48       - type: access
49         relation: '[N] -> { S_1[i] -> [i] }'
50         read: 1
51         write: 0
52       - type: access
53         relation: '[N] -> { S_1[i] -> [1] }'
54         read: 1
55         write: 0
56 - line: 25
57   domain: '[M, N] -> { S_2[i, j] : i >= 0 and i <= -1 + N and j >= 0 and j <= -1 +
58     M }'
59   schedule: '[M, N] -> { S_2[i, j] -> [1, i, 1, j] }'
60   body:
61     type: binary
62     operation: =
63     arguments:
64     - type: access
65       relation: '[M, N] -> { S_2[i, j] -> m[] }'
66       read: 0
67       write: 1
68     - type: call
69       name: g
70       arguments:
71       - type: call
72         name: h
73         arguments:
74         - type: access
75           relation: '[M, N] -> { S_2[i, j] -> m[] }'
76           read: 1
77           write: 0
78       - type: access
79         relation: '[M, N] -> { S_2[i, j] -> in1[i, j] }'
80         read: 1
81         write: 0
82 - line: 26
83   domain: '[N] -> { S_3[i] : i >= 0 and i <= -1 + N }'
84   schedule: '[N] -> { S_3[i] -> [1, i, 2] }'
85   body:
86     type: call
87     name: compute_row
88     arguments:
89     - type: call
90       name: h
91       arguments:
92       - type: access
93         relation: '[N] -> { S_3[i] -> m[] }'
94         read: 1
95         write: 0
96     - type: access
97       relation: '[N] -> { S_3[i] -> A[i, o1] }'
98       read: 0
99       write: 1
100 - line: 28
101   domain: '{ S_4[] }'
102   schedule: '{ S_4[] -> [2] }'
103   body:
104     type: binary
105     operation: =
106     arguments:
107     - type: access
108       relation: '{ S_4[] -> A[5, 6] }'
109       read: 0
110       write: 1
111     - type: access
112       relation: '{ S_4[] -> [0] }'
113       read: 1
114       write: 0
115 - line: 30
116   domain: '[N] -> { S_5[i] : i >= 0 and i <= -1 + N }'
117   schedule: '[N] -> { S_5[i] -> [3, i] }'
118   body:
119     type: binary
120     operation: =
121     arguments:
122     - type: access
123       relation: '[N] -> { S_5[i] -> C[i] }'
124       read: 0
125       write: 1
126     - type: ternary
127       arguments:
128       - type: access
129         relation: '[N] -> { [S_5[i] -> [i1]] -> [1] : i1 >= -i and i1 <= -1 + N -
130           i; [S_5[i] -> [i1]] -> [0] : i1 <= -1 - i or (i1 >= -i and i1 >= N - i)
131           }'
132         read: 1
133         write: 0
134         arguments:
135         - type: access
136           relation: '[N] -> { S_5[i] -> in2[] }'
137           read: 1
138           write: 0
139       - type: call
140         name: f
141         arguments:
142         - type: access
143           relation: '[N] -> { [S_5[i] -> [i1]] -> A[i + i1, o1] : i1 >= -i and i1
144             <= -1 + N - i }'
145           read: 1
146           write: 0
147           arguments:
148           - type: access
149             relation: '[N] -> { S_5[i] -> in2[] }'
150             read: 1
151             write: 0
152       - type: access
153         relation: '[N] -> { [S_5[i] -> [i1]] -> [0] : i1 <= -1 - i or (i1 >= -i and
154           i1 >= N - i) }'
155         read: 1
156         write: 0
157         arguments:
158         - type: access
159           relation: '[N] -> { S_5[i] -> in2[] }'
160           read: 1
161           write: 0