diff options
author | Joshua Bakita <bakitajoshua@gmail.com> | 2019-10-07 19:13:39 -0400 |
---|---|---|
committer | Joshua Bakita <bakitajoshua@gmail.com> | 2019-10-07 19:13:39 -0400 |
commit | 386b7d3366f1359a265da207a9cafa3edf553b64 (patch) | |
tree | c76120c2c138faed822e4ae386be6ef22a738a78 /baseline/source/petrinet/petrinet.c | |
parent | 54a3f7091a2146b29c73a6fdc4b62a5c4ad7a3d8 (diff) |
Reorganize and commit all the modified TACLeBench code and run scripts
Diffstat (limited to 'baseline/source/petrinet/petrinet.c')
-rw-r--r-- | baseline/source/petrinet/petrinet.c | 990 |
1 files changed, 990 insertions, 0 deletions
diff --git a/baseline/source/petrinet/petrinet.c b/baseline/source/petrinet/petrinet.c new file mode 100644 index 0000000..7c9e1a0 --- /dev/null +++ b/baseline/source/petrinet/petrinet.c | |||
@@ -0,0 +1,990 @@ | |||
1 | /* | ||
2 | |||
3 | This program is part of the TACLeBench benchmark suite. | ||
4 | Version V 2.0 | ||
5 | |||
6 | Name: Petrinet | ||
7 | |||
8 | Author: Friedhelm Stappert, C-LAB, Paderborn, Germany | ||
9 | |||
10 | Function: Simulate an extended Petri Net | ||
11 | Automatically generated code containing large amounts of | ||
12 | if-statements (more than 250) | ||
13 | |||
14 | Source: Mälardalen benchmark suite | ||
15 | |||
16 | Changes: no major functional changes | ||
17 | |||
18 | License: may be used, modified, and re-distributed freely | ||
19 | |||
20 | */ | ||
21 | |||
22 | /* Remove the following #define for actual WCET analyses! */ | ||
23 | /* | ||
24 | #define PROFILING | ||
25 | */ | ||
26 | |||
27 | |||
28 | #include "../extra.h" | ||
29 | |||
30 | #ifdef PROFILING | ||
31 | #include <stdio.h> | ||
32 | #endif | ||
33 | |||
34 | #ifdef PROFILING | ||
35 | /* Profiling variables. Remove for actual WCET analyses. */ | ||
36 | int petrinet_main_iters_dummy_i = 0, | ||
37 | petrinet_main_min_dummy_i = 100000, | ||
38 | petrinet_main_max_dummy_i = 0; | ||
39 | #endif | ||
40 | |||
41 | /* | ||
42 | Forward declaration of functions | ||
43 | */ | ||
44 | void petrinet_init( void ); | ||
45 | int petrinet_return( void ); | ||
46 | void petrinet_main( void ); | ||
47 | //int main( void ); | ||
48 | |||
49 | |||
50 | volatile int petrinet_P1_is_marked; | ||
51 | volatile long petrinet_P1_marking_member_0[ 3 ]; | ||
52 | volatile int petrinet_P2_is_marked; | ||
53 | volatile long petrinet_P2_marking_member_0[ 5 ]; | ||
54 | volatile int petrinet_P3_is_marked; | ||
55 | volatile long petrinet_P3_marking_member_0[ 6 ]; | ||
56 | |||
57 | const long petrinet_CHECKSUM = 0; | ||
58 | |||
59 | void _Pragma ( "entrypoint" ) petrinet_main( void ) | ||
60 | { | ||
61 | int dummy_i; | ||
62 | /* dummy_i = 17; Takes too much time */ | ||
63 | dummy_i = 2; | ||
64 | |||
65 | #ifdef PROFILING | ||
66 | main_iters_dummy_i = 0; | ||
67 | #endif | ||
68 | _Pragma( "loopbound min 2 max 2" ) | ||
69 | while ( dummy_i > 0 ) { | ||
70 | #ifdef PROFILING | ||
71 | main_iters_dummy_i++; | ||
72 | #endif | ||
73 | |||
74 | dummy_i--; | ||
75 | /* Permutation for Place P1 : 0, 1, 2 */ | ||
76 | /* Transition T1 */ | ||
77 | if ( ( petrinet_P1_is_marked >= 3 ) && | ||
78 | ( petrinet_P3_is_marked + 3 <= 6 ) && | ||
79 | ( petrinet_P1_marking_member_0[ 1 ] | ||
80 | == petrinet_P1_marking_member_0[ 2 ] ) ) { | ||
81 | |||
82 | long x; | ||
83 | long y; | ||
84 | long z; | ||
85 | |||
86 | x = petrinet_P1_marking_member_0[ 0 ]; | ||
87 | y = petrinet_P1_marking_member_0[ 1 ]; | ||
88 | |||
89 | /* Transition condition */ | ||
90 | if ( x < y ) { | ||
91 | |||
92 | /* demarking of input places */ | ||
93 | petrinet_P1_is_marked -= 3; | ||
94 | |||
95 | /* preaction */ | ||
96 | z = x - y; | ||
97 | |||
98 | /* marking of output places */ | ||
99 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x; | ||
100 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y; | ||
101 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z; | ||
102 | petrinet_P3_is_marked += 3; | ||
103 | |||
104 | } /* end of if (Transition condition) */ | ||
105 | } | ||
106 | |||
107 | /* Permutation for Place petrinet_P1 : 0, 2, 1 */ | ||
108 | /* Transition T1 */ | ||
109 | if ( ( petrinet_P1_is_marked >= 3 ) && | ||
110 | ( petrinet_P3_is_marked + 3 <= 6 ) && | ||
111 | ( petrinet_P1_marking_member_0[ 2 ] | ||
112 | == petrinet_P1_marking_member_0[ 1 ] ) ) { | ||
113 | |||
114 | long x; | ||
115 | long y; | ||
116 | long z; | ||
117 | |||
118 | x = petrinet_P1_marking_member_0[ 0 ]; | ||
119 | y = petrinet_P1_marking_member_0[ 2 ]; | ||
120 | |||
121 | /* Transition condition */ | ||
122 | if ( ( x < y ) ) { | ||
123 | |||
124 | /* demarking of input places */ | ||
125 | petrinet_P1_is_marked -= 3; | ||
126 | |||
127 | /* preaction */ | ||
128 | z = x - y; | ||
129 | |||
130 | /* marking of output places */ | ||
131 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x; | ||
132 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y; | ||
133 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z; | ||
134 | petrinet_P3_is_marked += 3; | ||
135 | |||
136 | } /* end of if (Transition condition) */ | ||
137 | } | ||
138 | |||
139 | /* Permutation for Place petrinet_P1 : 1, 0, 2 */ | ||
140 | /* Transition T1 */ | ||
141 | if ( ( petrinet_P1_is_marked >= 3 ) && | ||
142 | ( petrinet_P3_is_marked + 3 <= 6 ) && | ||
143 | ( petrinet_P1_marking_member_0[ 0 ] | ||
144 | == petrinet_P1_marking_member_0[ 2 ] ) ) { | ||
145 | |||
146 | long x; | ||
147 | long y; | ||
148 | long z; | ||
149 | |||
150 | x = petrinet_P1_marking_member_0[ 1 ]; | ||
151 | y = petrinet_P1_marking_member_0[ 0 ]; | ||
152 | |||
153 | /* Transition condition */ | ||
154 | if ( x < y ) { | ||
155 | |||
156 | /* demarking of input places */ | ||
157 | petrinet_P1_is_marked -= 3; | ||
158 | |||
159 | /* preaction */ | ||
160 | z = x - y; | ||
161 | |||
162 | /* marking of output places */ | ||
163 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x; | ||
164 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y; | ||
165 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z; | ||
166 | petrinet_P3_is_marked += 3; | ||
167 | |||
168 | } /* end of if (Transition condition) */ | ||
169 | } | ||
170 | |||
171 | /* Permutation for Place petrinet_P1 : 1, 2, 0 */ | ||
172 | /* Transition T1 */ | ||
173 | if ( ( petrinet_P1_is_marked >= 3 ) && | ||
174 | ( petrinet_P3_is_marked + 3 <= 6 ) && | ||
175 | ( petrinet_P1_marking_member_0[ 2 ] | ||
176 | == petrinet_P1_marking_member_0[ 0 ] ) ) { | ||
177 | |||
178 | long x; | ||
179 | long y; | ||
180 | long z; | ||
181 | |||
182 | x = petrinet_P1_marking_member_0[ 1 ]; | ||
183 | y = petrinet_P1_marking_member_0[ 2 ]; | ||
184 | |||
185 | /* Transition condition */ | ||
186 | if ( ( x < y ) ) { | ||
187 | |||
188 | /* demarking of input places */ | ||
189 | petrinet_P1_is_marked -= 3; | ||
190 | |||
191 | /* preaction */ | ||
192 | z = x - y; | ||
193 | |||
194 | /* marking of output places */ | ||
195 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x; | ||
196 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y; | ||
197 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z; | ||
198 | petrinet_P3_is_marked += 3; | ||
199 | |||
200 | } /* end of if (Transition condition) */ | ||
201 | } | ||
202 | |||
203 | /* Permutation for Place petrinet_P1 : 2, 0, 1 */ | ||
204 | /* Transition T1 */ | ||
205 | if ( ( petrinet_P1_is_marked >= 3 ) && | ||
206 | ( petrinet_P3_is_marked + 3 <= 6 ) && | ||
207 | ( petrinet_P1_marking_member_0[ 0 ] | ||
208 | == petrinet_P1_marking_member_0[ 1 ] ) ) { | ||
209 | long x; | ||
210 | long y; | ||
211 | long z; | ||
212 | |||
213 | x = petrinet_P1_marking_member_0[ 2 ]; | ||
214 | y = petrinet_P1_marking_member_0[ 0 ]; | ||
215 | |||
216 | /* Transition condition */ | ||
217 | if ( ( x < y ) ) { | ||
218 | |||
219 | /* demarking of input places */ | ||
220 | petrinet_P1_is_marked -= 3; | ||
221 | |||
222 | /* preaction */ | ||
223 | z = x - y; | ||
224 | |||
225 | /* marking of output places */ | ||
226 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x; | ||
227 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y; | ||
228 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z; | ||
229 | petrinet_P3_is_marked += 3; | ||
230 | |||
231 | } /* end of if (Transition condition) */ | ||
232 | } | ||
233 | |||
234 | /* Permutation for Place petrinet_P1 : 2, 1, 0 */ | ||
235 | /* Transition T1 */ | ||
236 | if ( ( petrinet_P1_is_marked >= 3 ) && | ||
237 | ( petrinet_P3_is_marked + 3 <= 6 ) && | ||
238 | ( petrinet_P1_marking_member_0[ 1 ] | ||
239 | == petrinet_P1_marking_member_0[ 0 ] ) ) { | ||
240 | long x; | ||
241 | long y; | ||
242 | long z; | ||
243 | |||
244 | x = petrinet_P1_marking_member_0[ 2 ]; | ||
245 | y = petrinet_P1_marking_member_0[ 1 ]; | ||
246 | |||
247 | /* Transition condition */ | ||
248 | if ( ( x < y ) ) { | ||
249 | |||
250 | /* demarking of input places */ | ||
251 | petrinet_P1_is_marked -= 3; | ||
252 | |||
253 | /* preaction */ | ||
254 | z = x - y; | ||
255 | |||
256 | /* marking of output places */ | ||
257 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = x; | ||
258 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = y; | ||
259 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = z; | ||
260 | petrinet_P3_is_marked += 3; | ||
261 | |||
262 | } /* end of if (Transition condition) */ | ||
263 | } | ||
264 | |||
265 | /* Permutation for Place P2 : 0, 1, 2, 3 */ | ||
266 | /* Transition T2 */ | ||
267 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
268 | ( ( ( petrinet_P3_is_marked + 3 ) <= 6 ) ) && | ||
269 | ( ( ( petrinet_P2_marking_member_0[ 1 ] | ||
270 | == petrinet_P2_marking_member_0[ 2 ] ) ) && | ||
271 | ( ( petrinet_P2_marking_member_0[ 1 ] | ||
272 | == petrinet_P2_marking_member_0[ 3 ] ) ) ) ) { | ||
273 | long a; | ||
274 | long b; | ||
275 | long c; | ||
276 | |||
277 | a = petrinet_P2_marking_member_0[ 0 ]; | ||
278 | b = petrinet_P2_marking_member_0[ 1 ]; | ||
279 | |||
280 | /* Transition condition */ | ||
281 | if ( ( b > a ) ) { | ||
282 | |||
283 | /* demarking of input places */ | ||
284 | petrinet_P2_is_marked -= 4; | ||
285 | |||
286 | /* preaction */ | ||
287 | c = a + b; | ||
288 | |||
289 | /* marking of output places */ | ||
290 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
291 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
292 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
293 | petrinet_P3_is_marked += 3; | ||
294 | |||
295 | } /* end of if (Transition condition) */ | ||
296 | } | ||
297 | |||
298 | /* Permutation for Place petrinet_P2 : 0, 1, 3, 2 */ | ||
299 | /* Transition T2 */ | ||
300 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
301 | ( ( ( petrinet_P3_is_marked + 3 ) <= 6 ) ) && | ||
302 | ( ( petrinet_P2_marking_member_0[ 1 ] | ||
303 | == petrinet_P2_marking_member_0[ 3 ] ) && | ||
304 | ( petrinet_P2_marking_member_0[ 1 ] | ||
305 | == petrinet_P2_marking_member_0[ 2 ] ) ) ) { | ||
306 | long a; | ||
307 | long b; | ||
308 | long c; | ||
309 | |||
310 | a = petrinet_P2_marking_member_0[ 0 ]; | ||
311 | b = petrinet_P2_marking_member_0[ 1 ]; | ||
312 | |||
313 | /* Transition condition */ | ||
314 | if ( ( b > a ) ) { | ||
315 | |||
316 | /* demarking of input places */ | ||
317 | petrinet_P2_is_marked -= 4; | ||
318 | |||
319 | /* preaction */ | ||
320 | c = a + b; | ||
321 | |||
322 | /* marking of output places */ | ||
323 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
324 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
325 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
326 | petrinet_P3_is_marked += 3; | ||
327 | |||
328 | } /* end of if (Transition condition) */ | ||
329 | } | ||
330 | |||
331 | /* Permutation for Place petrinet_P2 : 0, 2, 1, 3 */ | ||
332 | /* Transition T2 */ | ||
333 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
334 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
335 | ( ( petrinet_P2_marking_member_0[ 2 ] | ||
336 | == petrinet_P2_marking_member_0[ 1 ] ) && | ||
337 | ( petrinet_P2_marking_member_0[ 2 ] | ||
338 | == petrinet_P2_marking_member_0[ 3 ] ) ) ) { | ||
339 | long a; | ||
340 | long b; | ||
341 | long c; | ||
342 | |||
343 | a = petrinet_P2_marking_member_0[ 0 ]; | ||
344 | b = petrinet_P2_marking_member_0[ 2 ]; | ||
345 | |||
346 | /* Transition condition */ | ||
347 | if ( ( b > a ) ) { | ||
348 | |||
349 | /* demarking of input places */ | ||
350 | petrinet_P2_is_marked -= 4; | ||
351 | |||
352 | /* preaction */ | ||
353 | c = a + b; | ||
354 | |||
355 | /* marking of output places */ | ||
356 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
357 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
358 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
359 | petrinet_P3_is_marked += 3; | ||
360 | |||
361 | } /* end of if (Transition condition) */ | ||
362 | } | ||
363 | |||
364 | /* Permutation for Place petrinet_P2 : 0, 2, 3, 1 */ | ||
365 | /* Transition T2 */ | ||
366 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
367 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
368 | ( ( petrinet_P2_marking_member_0[ 2 ] | ||
369 | == petrinet_P2_marking_member_0[ 3 ] ) && | ||
370 | ( petrinet_P2_marking_member_0[ 2 ] | ||
371 | == petrinet_P2_marking_member_0[ 1 ] ) ) ) { | ||
372 | long a; | ||
373 | long b; | ||
374 | long c; | ||
375 | |||
376 | a = petrinet_P2_marking_member_0[ 0 ]; | ||
377 | b = petrinet_P2_marking_member_0[ 2 ]; | ||
378 | |||
379 | /* Transition condition */ | ||
380 | if ( ( b > a ) ) { | ||
381 | |||
382 | /* demarking of input places */ | ||
383 | petrinet_P2_is_marked -= 4; | ||
384 | |||
385 | /* preaction */ | ||
386 | c = a + b; | ||
387 | |||
388 | /* marking of output places */ | ||
389 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
390 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
391 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
392 | petrinet_P3_is_marked += 3; | ||
393 | |||
394 | } /* end of if (Transition condition) */ | ||
395 | } | ||
396 | |||
397 | /* Permutation for Place petrinet_P2 : 0, 3, 1, 2 */ | ||
398 | /* Transition T2 */ | ||
399 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
400 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
401 | ( ( petrinet_P2_marking_member_0[ 3 ] | ||
402 | == petrinet_P2_marking_member_0[ 1 ] ) && | ||
403 | ( petrinet_P2_marking_member_0[ 3 ] | ||
404 | == petrinet_P2_marking_member_0[ 2 ] ) ) ) { | ||
405 | long a; | ||
406 | long b; | ||
407 | long c; | ||
408 | |||
409 | a = petrinet_P2_marking_member_0[ 0 ]; | ||
410 | b = petrinet_P2_marking_member_0[ 3 ]; | ||
411 | |||
412 | /* Transition condition */ | ||
413 | if ( ( b > a ) ) { | ||
414 | |||
415 | /* demarking of input places */ | ||
416 | petrinet_P2_is_marked -= 4; | ||
417 | |||
418 | /* preaction */ | ||
419 | c = a + b; | ||
420 | |||
421 | /* marking of output places */ | ||
422 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
423 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
424 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
425 | petrinet_P3_is_marked += 3; | ||
426 | |||
427 | } /* end of if (Transition condition) */ | ||
428 | } | ||
429 | |||
430 | /* Permutation for Place petrinet_P2 : 0, 3, 2, 1 */ | ||
431 | /* Transition T2 */ | ||
432 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
433 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
434 | ( ( petrinet_P2_marking_member_0[ 3 ] | ||
435 | == petrinet_P2_marking_member_0[ 2 ] ) && | ||
436 | ( petrinet_P2_marking_member_0[ 3 ] | ||
437 | == petrinet_P2_marking_member_0[ 1 ] ) ) ) { | ||
438 | long a; | ||
439 | long b; | ||
440 | long c; | ||
441 | |||
442 | a = petrinet_P2_marking_member_0[ 0 ]; | ||
443 | b = petrinet_P2_marking_member_0[ 3 ]; | ||
444 | |||
445 | /* Transition condition */ | ||
446 | if ( ( b > a ) ) { | ||
447 | |||
448 | /* demarking of input places */ | ||
449 | petrinet_P2_is_marked -= 4; | ||
450 | |||
451 | /* preaction */ | ||
452 | c = a + b; | ||
453 | |||
454 | /* marking of output places */ | ||
455 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
456 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
457 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
458 | petrinet_P3_is_marked += 3; | ||
459 | |||
460 | } /* end of if (Transition condition) */ | ||
461 | } | ||
462 | |||
463 | /* Permutation for Place petrinet_P2 : 1, 0, 2, 3 */ | ||
464 | /* Transition T2 */ | ||
465 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
466 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
467 | ( ( petrinet_P2_marking_member_0[ 0 ] | ||
468 | == petrinet_P2_marking_member_0[ 2 ] ) && | ||
469 | ( petrinet_P2_marking_member_0[ 0 ] | ||
470 | == petrinet_P2_marking_member_0[ 3 ] ) ) ) { | ||
471 | long a; | ||
472 | long b; | ||
473 | long c; | ||
474 | |||
475 | a = petrinet_P2_marking_member_0[ 1 ]; | ||
476 | b = petrinet_P2_marking_member_0[ 0 ]; | ||
477 | |||
478 | /* Transition condition */ | ||
479 | if ( ( b > a ) ) { | ||
480 | |||
481 | /* demarking of input places */ | ||
482 | petrinet_P2_is_marked -= 4; | ||
483 | |||
484 | /* preaction */ | ||
485 | c = a + b; | ||
486 | |||
487 | /* marking of output places */ | ||
488 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
489 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
490 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
491 | petrinet_P3_is_marked += 3; | ||
492 | |||
493 | } /* end of if (Transition condition) */ | ||
494 | } | ||
495 | |||
496 | /* Permutation for Place petrinet_P2 : 1, 0, 3, 2 */ | ||
497 | /* Transition T2 */ | ||
498 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
499 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
500 | ( ( petrinet_P2_marking_member_0[ 0 ] | ||
501 | == petrinet_P2_marking_member_0[ 3 ] ) && | ||
502 | ( petrinet_P2_marking_member_0[ 0 ] | ||
503 | == petrinet_P2_marking_member_0[ 2 ] ) ) ) { | ||
504 | long a; | ||
505 | long b; | ||
506 | long c; | ||
507 | |||
508 | a = petrinet_P2_marking_member_0[ 1 ]; | ||
509 | b = petrinet_P2_marking_member_0[ 0 ]; | ||
510 | |||
511 | /* Transition condition */ | ||
512 | if ( ( b > a ) ) { | ||
513 | |||
514 | /* demarking of input places */ | ||
515 | petrinet_P2_is_marked -= 4; | ||
516 | |||
517 | /* preaction */ | ||
518 | c = a + b; | ||
519 | |||
520 | /* marking of output places */ | ||
521 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
522 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
523 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
524 | petrinet_P3_is_marked += 3; | ||
525 | |||
526 | } /* end of if (Transition condition) */ | ||
527 | } | ||
528 | |||
529 | /* Permutation for Place petrinet_P2 : 1, 2, 0, 3 */ | ||
530 | /* Transition T2 */ | ||
531 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
532 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
533 | ( ( petrinet_P2_marking_member_0[ 2 ] | ||
534 | == petrinet_P2_marking_member_0[ 0 ] ) && | ||
535 | ( petrinet_P2_marking_member_0[ 2 ] | ||
536 | == petrinet_P2_marking_member_0[ 3 ] ) ) ) { | ||
537 | long a; | ||
538 | long b; | ||
539 | long c; | ||
540 | |||
541 | a = petrinet_P2_marking_member_0[ 1 ]; | ||
542 | b = petrinet_P2_marking_member_0[ 2 ]; | ||
543 | |||
544 | /* Transition condition */ | ||
545 | if ( ( b > a ) ) { | ||
546 | |||
547 | /* demarking of input places */ | ||
548 | petrinet_P2_is_marked -= 4; | ||
549 | |||
550 | /* preaction */ | ||
551 | c = a + b; | ||
552 | |||
553 | /* marking of output places */ | ||
554 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
555 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
556 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
557 | petrinet_P3_is_marked += 3; | ||
558 | |||
559 | } /* end of if (Transition condition) */ | ||
560 | } | ||
561 | |||
562 | /* Permutation for Place petrinet_P2 : 1, 2, 3, 0 */ | ||
563 | /* Transition T2 */ | ||
564 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
565 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
566 | ( ( petrinet_P2_marking_member_0[ 2 ] | ||
567 | == petrinet_P2_marking_member_0[ 3 ] ) && | ||
568 | ( petrinet_P2_marking_member_0[ 2 ] | ||
569 | == petrinet_P2_marking_member_0[ 0 ] ) ) ) { | ||
570 | long a; | ||
571 | long b; | ||
572 | long c; | ||
573 | |||
574 | a = petrinet_P2_marking_member_0[ 1 ]; | ||
575 | b = petrinet_P2_marking_member_0[ 2 ]; | ||
576 | |||
577 | /* Transition condition */ | ||
578 | if ( ( b > a ) ) { | ||
579 | /* demarking of input places */ | ||
580 | petrinet_P2_is_marked -= 4; | ||
581 | |||
582 | /* preaction */ | ||
583 | c = a + b; | ||
584 | |||
585 | /* marking of output places */ | ||
586 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
587 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
588 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
589 | petrinet_P3_is_marked += 3; | ||
590 | |||
591 | } /* end of if (Transition condition) */ | ||
592 | } | ||
593 | |||
594 | /* Permutation for Place petrinet_P2 : 1, 3, 0, 2 */ | ||
595 | /* Transition T2 */ | ||
596 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
597 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
598 | ( ( petrinet_P2_marking_member_0[ 3 ] | ||
599 | == petrinet_P2_marking_member_0[ 0 ] ) && | ||
600 | ( petrinet_P2_marking_member_0[ 3 ] | ||
601 | == petrinet_P2_marking_member_0[ 2 ] ) ) ) { | ||
602 | long a; | ||
603 | long b; | ||
604 | long c; | ||
605 | |||
606 | a = petrinet_P2_marking_member_0[ 1 ]; | ||
607 | b = petrinet_P2_marking_member_0[ 3 ]; | ||
608 | |||
609 | /* Transition condition */ | ||
610 | if ( ( b > a ) ) { | ||
611 | /* demarking of input places */ | ||
612 | petrinet_P2_is_marked -= 4; | ||
613 | |||
614 | /* preaction */ | ||
615 | c = a + b; | ||
616 | |||
617 | /* marking of output places */ | ||
618 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
619 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
620 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
621 | petrinet_P3_is_marked += 3; | ||
622 | |||
623 | } /* end of if (Transition condition) */ | ||
624 | } | ||
625 | |||
626 | |||
627 | /* Permutation for Place petrinet_P2 : 1, 3, 2, 0 */ | ||
628 | /* Transition T2 */ | ||
629 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
630 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
631 | ( ( petrinet_P2_marking_member_0[ 3 ] | ||
632 | == petrinet_P2_marking_member_0[ 2 ] ) && | ||
633 | ( petrinet_P2_marking_member_0[ 3 ] | ||
634 | == petrinet_P2_marking_member_0[ 0 ] ) ) ) { | ||
635 | long a; | ||
636 | long b; | ||
637 | long c; | ||
638 | |||
639 | a = petrinet_P2_marking_member_0[ 1 ]; | ||
640 | b = petrinet_P2_marking_member_0[ 3 ]; | ||
641 | |||
642 | /* Transition condition */ | ||
643 | if ( ( b > a ) ) { | ||
644 | |||
645 | /* demarking of input places */ | ||
646 | petrinet_P2_is_marked -= 4; | ||
647 | |||
648 | /* preaction */ | ||
649 | c = a + b; | ||
650 | |||
651 | /* marking of output places */ | ||
652 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
653 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
654 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
655 | petrinet_P3_is_marked += 3; | ||
656 | |||
657 | } /* end of if (Transition condition) */ | ||
658 | } | ||
659 | |||
660 | |||
661 | /* Permutation for Place petrinet_P2 : 2, 0, 1, 3 */ | ||
662 | /* Transition T2 */ | ||
663 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
664 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
665 | ( ( petrinet_P2_marking_member_0[ 0 ] | ||
666 | == petrinet_P2_marking_member_0[ 1 ] ) && | ||
667 | ( petrinet_P2_marking_member_0[ 0 ] | ||
668 | == petrinet_P2_marking_member_0[ 3 ] ) ) ) { | ||
669 | long a; | ||
670 | long b; | ||
671 | long c; | ||
672 | |||
673 | a = petrinet_P2_marking_member_0[ 2 ]; | ||
674 | b = petrinet_P2_marking_member_0[ 0 ]; | ||
675 | |||
676 | /* Transition condition */ | ||
677 | if ( ( b > a ) ) { | ||
678 | /* demarking of input places */ | ||
679 | petrinet_P2_is_marked -= 4; | ||
680 | |||
681 | /* preaction */ | ||
682 | c = a + b; | ||
683 | |||
684 | /* marking of output places */ | ||
685 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
686 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
687 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
688 | petrinet_P3_is_marked += 3; | ||
689 | |||
690 | } /* end of if (Transition condition) */ | ||
691 | } | ||
692 | |||
693 | /* Permutation for Place petrinet_P2 : 2, 0, 3, 1 */ | ||
694 | /* Transition T2 */ | ||
695 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
696 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
697 | ( ( petrinet_P2_marking_member_0[ 0 ] | ||
698 | == petrinet_P2_marking_member_0[ 3 ] ) && | ||
699 | ( petrinet_P2_marking_member_0[ 0 ] | ||
700 | == petrinet_P2_marking_member_0[ 1 ] ) ) ) { | ||
701 | long a; | ||
702 | long b; | ||
703 | long c; | ||
704 | |||
705 | a = petrinet_P2_marking_member_0[ 2 ]; | ||
706 | b = petrinet_P2_marking_member_0[ 0 ]; | ||
707 | |||
708 | /* Transition condition */ | ||
709 | if ( ( b > a ) ) { | ||
710 | /* demarking of input places */ | ||
711 | petrinet_P2_is_marked -= 4; | ||
712 | |||
713 | /* preaction */ | ||
714 | c = a + b; | ||
715 | |||
716 | /* marking of output places */ | ||
717 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
718 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
719 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
720 | petrinet_P3_is_marked += 3; | ||
721 | |||
722 | } /* end of if (Transition condition) */ | ||
723 | } | ||
724 | |||
725 | /* Permutation for Place petrinet_P2 : 2, 1, 0, 3 */ | ||
726 | /* Transition T2 */ | ||
727 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
728 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
729 | ( ( petrinet_P2_marking_member_0[ 1 ] | ||
730 | == petrinet_P2_marking_member_0[ 0 ] ) && | ||
731 | ( petrinet_P2_marking_member_0[ 1 ] | ||
732 | == petrinet_P2_marking_member_0[ 3 ] ) ) ) { | ||
733 | long a; | ||
734 | long b; | ||
735 | long c; | ||
736 | |||
737 | a = petrinet_P2_marking_member_0[ 2 ]; | ||
738 | b = petrinet_P2_marking_member_0[ 1 ]; | ||
739 | |||
740 | /* Transition condition */ | ||
741 | if ( ( b > a ) ) { | ||
742 | /* demarking of input places */ | ||
743 | petrinet_P2_is_marked -= 4; | ||
744 | |||
745 | /* preaction */ | ||
746 | c = a + b; | ||
747 | |||
748 | /* marking of output places */ | ||
749 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
750 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
751 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
752 | petrinet_P3_is_marked += 3; | ||
753 | |||
754 | } /* end of if (Transition condition) */ | ||
755 | } | ||
756 | |||
757 | /* Permutation for Place petrinet_P2 : 2, 1, 3, 0 */ | ||
758 | /* Transition T2 */ | ||
759 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
760 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
761 | ( ( petrinet_P2_marking_member_0[ 1 ] | ||
762 | == petrinet_P2_marking_member_0[ 3 ] ) && | ||
763 | ( petrinet_P2_marking_member_0[ 1 ] | ||
764 | == petrinet_P2_marking_member_0[ 0 ] ) ) ) { | ||
765 | long a; | ||
766 | long b; | ||
767 | long c; | ||
768 | |||
769 | a = petrinet_P2_marking_member_0[ 2 ]; | ||
770 | b = petrinet_P2_marking_member_0[ 1 ]; | ||
771 | |||
772 | /* Transition condition */ | ||
773 | if ( ( b > a ) ) { | ||
774 | /* demarking of input places */ | ||
775 | petrinet_P2_is_marked -= 4; | ||
776 | |||
777 | /* preaction */ | ||
778 | c = a + b; | ||
779 | |||
780 | /* marking of output places */ | ||
781 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
782 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
783 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
784 | petrinet_P3_is_marked += 3; | ||
785 | |||
786 | } /* end of if (Transition condition) */ | ||
787 | } | ||
788 | |||
789 | /* Permutation for Place petrinet_P2 : 2, 3, 0, 1 */ | ||
790 | /* Transition T2 */ | ||
791 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
792 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
793 | ( ( petrinet_P2_marking_member_0[ 3 ] | ||
794 | == petrinet_P2_marking_member_0[ 0 ] ) && | ||
795 | ( petrinet_P2_marking_member_0[ 3 ] | ||
796 | == petrinet_P2_marking_member_0[ 1 ] ) ) ) { | ||
797 | long a; | ||
798 | long b; | ||
799 | long c; | ||
800 | |||
801 | a = petrinet_P2_marking_member_0[ 2 ]; | ||
802 | b = petrinet_P2_marking_member_0[ 3 ]; | ||
803 | |||
804 | /* Transition condition */ | ||
805 | if ( ( b > a ) ) { | ||
806 | /* demarking of input places */ | ||
807 | petrinet_P2_is_marked -= 4; | ||
808 | |||
809 | /* preaction */ | ||
810 | c = a + b; | ||
811 | |||
812 | /* marking of output places */ | ||
813 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
814 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
815 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
816 | petrinet_P3_is_marked += 3; | ||
817 | |||
818 | } /* end of if (Transition condition) */ | ||
819 | } | ||
820 | |||
821 | /* Permutation for Place petrinet_P2 : 2, 3, 1, 0 */ | ||
822 | /* Transition T2 */ | ||
823 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
824 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
825 | ( ( petrinet_P2_marking_member_0[ 3 ] | ||
826 | == petrinet_P2_marking_member_0[ 1 ] ) && | ||
827 | ( petrinet_P2_marking_member_0[ 3 ] | ||
828 | == petrinet_P2_marking_member_0[ 0 ] ) ) ) { | ||
829 | long a; | ||
830 | long b; | ||
831 | long c; | ||
832 | |||
833 | a = petrinet_P2_marking_member_0[ 2 ]; | ||
834 | b = petrinet_P2_marking_member_0[ 3 ]; | ||
835 | |||
836 | /* Transition condition */ | ||
837 | if ( ( b > a ) ) { | ||
838 | /* demarking of input places */ | ||
839 | petrinet_P2_is_marked -= 4; | ||
840 | |||
841 | /* preaction */ | ||
842 | c = a + b; | ||
843 | |||
844 | /* marking of output places */ | ||
845 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
846 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
847 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
848 | petrinet_P3_is_marked += 3; | ||
849 | |||
850 | } /* end of if (Transition condition) */ | ||
851 | } | ||
852 | |||
853 | /* Permutation for Place petrinet_P2 : 3, 0, 1, 2 */ | ||
854 | /* Transition T2 */ | ||
855 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
856 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
857 | ( ( petrinet_P2_marking_member_0[ 0 ] | ||
858 | == petrinet_P2_marking_member_0[ 1 ] ) && | ||
859 | ( petrinet_P2_marking_member_0[ 0 ] | ||
860 | == petrinet_P2_marking_member_0[ 2 ] ) ) ) { | ||
861 | long a; | ||
862 | long b; | ||
863 | long c; | ||
864 | |||
865 | a = petrinet_P2_marking_member_0[ 3 ]; | ||
866 | b = petrinet_P2_marking_member_0[ 0 ]; | ||
867 | |||
868 | /* Transition condition */ | ||
869 | if ( ( b > a ) ) { | ||
870 | |||
871 | /* demarking of input places */ | ||
872 | petrinet_P2_is_marked -= 4; | ||
873 | |||
874 | /* preaction */ | ||
875 | c = a + b; | ||
876 | |||
877 | /* marking of output places */ | ||
878 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
879 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
880 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
881 | petrinet_P3_is_marked += 3; | ||
882 | |||
883 | } /* end of if (Transition condition) */ | ||
884 | } | ||
885 | |||
886 | |||
887 | /* Permutation for Place petrinet_P2 : 3, 0, 2, 1 */ | ||
888 | /* Transition T2 */ | ||
889 | if ( ( petrinet_P2_is_marked >= 4 ) && | ||
890 | ( ( petrinet_P3_is_marked + 3 ) <= 6 ) && | ||
891 | ( ( petrinet_P2_marking_member_0[ 0 ] | ||
892 | == petrinet_P2_marking_member_0[ 2 ] ) && | ||
893 | ( petrinet_P2_marking_member_0[ 0 ] | ||
894 | == petrinet_P2_marking_member_0[ 1 ] ) ) ) { | ||
895 | |||
896 | long a; | ||
897 | long b; | ||
898 | long c; | ||
899 | |||
900 | a = petrinet_P2_marking_member_0[ 3 ]; | ||
901 | b = petrinet_P2_marking_member_0[ 0 ]; | ||
902 | |||
903 | /* Transition condition */ | ||
904 | if ( ( b > a ) ) { | ||
905 | |||
906 | /* demarking of input places */ | ||
907 | petrinet_P2_is_marked -= 4; | ||
908 | |||
909 | /* preaction */ | ||
910 | c = a + b; | ||
911 | |||
912 | /* marking of output places */ | ||
913 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 0 ] = a; | ||
914 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 1 ] = b; | ||
915 | petrinet_P3_marking_member_0[ petrinet_P3_is_marked + 2 ] = c; | ||
916 | petrinet_P3_is_marked += 3; | ||
917 | |||
918 | } /* end of if (Transition condition) */ | ||
919 | } | ||
920 | } | ||
921 | #ifdef PROFILING | ||
922 | if ( main_iters_dummy_i < main_min_dummy_i ) | ||
923 | main_min_dummy_i = main_iters_dummy_i; | ||
924 | if ( main_iters_dummy_i > main_max_dummy_i ) | ||
925 | main_max_dummy_i = main_iters_dummy_i; | ||
926 | #endif | ||
927 | |||
928 | #ifdef PROFILING | ||
929 | printf( "main::dummy_i-loop: [%d, %d]\n", | ||
930 | main_min_dummy_i, main_max_dummy_i ); | ||
931 | #endif | ||
932 | |||
933 | //dummy_i = 77; | ||
934 | // TODO: not a good return value | ||
935 | //return dummy_i; | ||
936 | } | ||
937 | |||
938 | |||
939 | void petrinet_init( void ) | ||
940 | { | ||
941 | petrinet_P1_is_marked = 3; | ||
942 | petrinet_P2_is_marked = 5; | ||
943 | petrinet_P3_is_marked = 0; | ||
944 | |||
945 | /* | ||
946 | Maybe we should also initialise these arrays, as they may be read | ||
947 | in the petrinet_main() function before being written. | ||
948 | */ | ||
949 | /* | ||
950 | volatile long petrinet_P1_marking_member_0[ 3 ]; | ||
951 | volatile long petrinet_P2_marking_member_0[ 5 ]; | ||
952 | volatile long petrinet_P3_marking_member_0[ 6 ]; | ||
953 | */ | ||
954 | } | ||
955 | |||
956 | |||
957 | int petrinet_return( void ) | ||
958 | { | ||
959 | // TODO: use something from the Px_... arrays | ||
960 | int checksum = 0; | ||
961 | int i; | ||
962 | |||
963 | for ( i = 0; i < 3; ++i ) | ||
964 | checksum += petrinet_P1_marking_member_0[i]; | ||
965 | |||
966 | for ( i = 0; i < 5; ++i ) | ||
967 | checksum += petrinet_P2_marking_member_0[i]; | ||
968 | |||
969 | for ( i = 0; i < 6; ++i ) | ||
970 | checksum += petrinet_P3_marking_member_0[i]; | ||
971 | |||
972 | return ( ( checksum == petrinet_CHECKSUM ) ? 0 : -1 ); | ||
973 | } | ||
974 | |||
975 | |||
976 | int main( int argc, char **argv ) | ||
977 | { | ||
978 | SET_UP | ||
979 | |||
980 | for (jobsComplete=-1; jobsComplete<maxJobs; jobsComplete++){ | ||
981 | |||
982 | START_LOOP | ||
983 | petrinet_main(); | ||
984 | STOP_LOOP | ||
985 | } | ||
986 | WRITE_TO_FILE | ||
987 | |||
988 | return ( petrinet_return() ); | ||
989 | } | ||
990 | |||