PetScan::extract_condition: convert clang::Expr to pet_expr first
[pet.git] / tests / conditional_assignment.scop
blob19839924e52bc3dd1fa02defe53b1f925fcfe6f4
1 start: 218
2 end: 496
3 context: '[N, M] -> {  : N >= 0 and M >= 0 and N <= 2147483647 and M <= 2147483647
4   }'
5 arrays:
6 - context: '[N] -> {  : N >= 0 }'
7   extent: '[N, M] -> { A[i0, i1] : i0 >= 0 and i0 <= -1 + N and i1 >= 0 and i1 <=
8     9 }'
9   element_type: int
10   element_size: 4
11 - context: '[N] -> {  : N >= 0 }'
12   extent: '[N, M] -> { C[i0] : i0 <= -1 + N and i0 >= 0 }'
13   element_type: int
14   element_size: 4
15 - context: '[M, N] -> {  : N >= 0 and M >= 0 }'
16   extent: '[N, M] -> { in1[i0, i1] : i1 <= -1 + M and i1 >= 0 and i0 <= -1 + N and
17     i0 >= 0 }'
18   element_type: int
19   element_size: 4
20 - context: '[N] -> {  : N >= 0 }'
21   extent: '[N, M] -> { in2[i0] : i0 <= -1 + N and i0 >= 0 }'
22   value_bounds: '{ [i0] : i0 >= -1 and i0 <= 1 }'
23   element_type: int
24   element_size: 4
25 - context: '{  :  }'
26   extent: '[N, M] -> { m[] }'
27   element_type: int
28   element_size: 4
29 statements:
30 - line: 21
31   domain: '[N, M] -> { S_0[i] : i <= -1 + N and i >= 0 }'
32   schedule: '[N] -> { S_0[i] -> [0, i, 0] }'
33   body:
34     type: op
35     operation: =
36     arguments:
37     - type: access
38       relation: '[N, M] -> { S_0[i] -> m[] }'
39       index: '[N, M] -> { S_0[i] -> m[] }'
40       reference: __pet_ref_0
41       read: 0
42       write: 1
43     - type: op
44       operation: +
45       arguments:
46       - type: access
47         relation: '[N, M] -> { S_0[i] -> [i] }'
48         index: '[N, M] -> { S_0[i] -> [(i)] }'
49         reference: __pet_ref_1
50         read: 1
51         write: 0
52       - type: int
53         value: 1
54 - line: 23
55   domain: '[N, M] -> { S_1[i, j] : j <= -1 + M and j >= 0 and i <= -1 + N and i >=
56     0 }'
57   schedule: '[M, N] -> { S_1[i, j] -> [0, i, 1, j] }'
58   body:
59     type: op
60     operation: =
61     arguments:
62     - type: access
63       relation: '[N, M] -> { S_1[i, j] -> m[] }'
64       index: '[N, M] -> { S_1[i, j] -> m[] }'
65       reference: __pet_ref_2
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: '[N, M] -> { S_1[i, j] -> m[] }'
76           index: '[N, M] -> { S_1[i, j] -> m[] }'
77           reference: __pet_ref_3
78           read: 1
79           write: 0
80       - type: access
81         relation: '[N, M] -> { S_1[i, j] -> in1[i, j] }'
82         index: '[N, M] -> { S_1[i, j] -> in1[(i), (j)] }'
83         reference: __pet_ref_4
84         read: 1
85         write: 0
86 - line: 24
87   domain: '[N, M] -> { S_2[i] : i <= -1 + N and i >= 0 }'
88   schedule: '[N] -> { S_2[i] -> [0, i, 2] }'
89   body:
90     type: call
91     name: compute_row
92     arguments:
93     - type: call
94       name: h
95       arguments:
96       - type: access
97         relation: '[N, M] -> { S_2[i] -> m[] }'
98         index: '[N, M] -> { S_2[i] -> m[] }'
99         reference: __pet_ref_5
100         read: 1
101         write: 0
102     - type: access
103       relation: '[N, M] -> { S_2[i] -> A[i, o1] }'
104       index: '[N, M] -> { S_2[i] -> A[(i)] }'
105       reference: __pet_ref_6
106       read: 0
107       write: 1
108 - line: 26
109   domain: '[N, M] -> { S_3[] }'
110   schedule: '{ S_3[] -> [1] }'
111   body:
112     type: op
113     operation: =
114     arguments:
115     - type: access
116       relation: '[N, M] -> { S_3[] -> A[5, 6] }'
117       index: '[N, M] -> { S_3[] -> A[(5), (6)] }'
118       reference: __pet_ref_7
119       read: 0
120       write: 1
121     - type: int
122       value: 0
123 - line: 28
124   domain: '[N, M] -> { S_4[i] : i <= -1 + N and i >= 0 }'
125   schedule: '[N] -> { S_4[i] -> [2, i] }'
126   body:
127     type: op
128     operation: =
129     arguments:
130     - type: access
131       relation: '[N, M] -> { S_4[i] -> C[i] }'
132       index: '[N, M] -> { S_4[i] -> C[(i)] }'
133       reference: __pet_ref_8
134       read: 0
135       write: 1
136     - type: op
137       operation: '?:'
138       arguments:
139       - type: access
140         relation: '[N, M] -> { [S_4[i] -> [i1]] -> [1] : i1 >= -i and i1 <= -1 + N
141           - i; [S_4[-1 + N] -> [1]] -> [0]; [S_4[0] -> [-1]] -> [0] }'
142         index: '[N, M] -> { [S_4[i] -> [i1]] -> [((1) : i1 >= -i and i1 <= -1 + N
143           - i; (0) : i = -1 + N and i1 = 1; (0) : i = 0 and i1 = -1)] }'
144         reference: __pet_ref_10
145         read: 1
146         write: 0
147         arguments:
148         - type: access
149           relation: '[N, M] -> { S_4[i] -> in2[i] }'
150           index: '[N, M] -> { S_4[i] -> in2[(i)] }'
151           reference: __pet_ref_9
152           read: 1
153           write: 0
154       - type: call
155         name: f
156         arguments:
157         - type: access
158           relation: '[N, M] -> { [S_4[i] -> [i1]] -> A[i + i1, o1] : i1 >= -i and
159             i1 <= -1 + N - i }'
160           index: '[N, M] -> { [S_4[i] -> [i1]] -> A[((i + i1) : i1 >= -i)] }'
161           reference: __pet_ref_12
162           read: 1
163           write: 0
164           arguments:
165           - type: access
166             relation: '[N, M] -> { S_4[i] -> in2[i] }'
167             index: '[N, M] -> { S_4[i] -> in2[(i)] }'
168             reference: __pet_ref_11
169             read: 1
170             write: 0
171       - type: int
172         value: 0