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