]> matita.cs.unibo.it Git - pkg-cerco/acc.git/blob - tests/clight/array.ASM.expected
Imported Upstream version 0.2
[pkg-cerco/acc.git] / tests / clight / array.ASM.expected
1 # extern __builtin_varargs_start: int -> void
2 # extern __builtin_va_start: int -> int -> void
3 # extern __builtin_va_end: int -> void
4 # extern __builtin_va_copy: int -> int -> void
5 # extern __builtin_va_arg: int -> int -> void
6 # extern __builtin_types_compatible_p: int -> int -> int
7 # extern __builtin_tanl: float -> float
8 # extern __builtin_tanhl: float -> float
9 # extern __builtin_tanhf: float -> float
10 # extern __builtin_tanh: float -> float
11 # extern __builtin_tanf: float -> float
12 # extern __builtin_tan: float -> float
13 # extern __builtin_strspn: int -> int -> int
14 # extern __builtin_strpbrk: int -> int -> int
15 # extern __builtin_strncpy: int -> int -> int -> int
16 # extern __builtin_strncmp: int -> int -> int -> int
17 # extern __builtin_strncat: int -> int -> int -> int
18 # extern __builtin_strcspn: int -> int -> int
19 # extern __builtin_strcpy: int -> int -> int
20 # extern __builtin_strcmp: int -> int -> int
21 # extern __builtin_strchr: int -> int -> int
22 # extern __builtin_stpcpy: int -> int -> int
23 # extern __builtin_stdarg_start: int -> void
24 # extern __builtin_sqrtl: float -> float
25 # extern __builtin_sqrtf: float -> float
26 # extern __builtin_sqrt: float -> float
27 # extern __builtin_sinl: float -> float
28 # extern __builtin_sinhl: float -> float
29 # extern __builtin_sinhf: float -> float
30 # extern __builtin_sinh: float -> float
31 # extern __builtin_sinf: float -> float
32 # extern __builtin_sin: float -> float
33 # extern __builtin_return_address: int -> int
34 # extern __builtin_return: int -> void
35 # extern __builtin_powil: float -> int -> float
36 # extern __builtin_powif: float -> int -> float
37 # extern __builtin_powi: float -> int -> float
38 # extern __builtin_popcountll: int -> int
39 # extern __builtin_popcountl: int -> int
40 # extern __builtin_popcount: int -> int
41 # extern __builtin_parityll: int -> int
42 # extern __builtin_parityl: int -> int
43 # extern __builtin_parity: int -> int
44 # extern __builtin_object_size: int -> int -> int
45 # extern __builtin_next_arg: int
46 # extern __builtin_nansl: int -> float
47 # extern __builtin_nansf: int -> float
48 # extern __builtin_nans: int -> float
49 # extern __builtin_nanl: int -> float
50 # extern __builtin_nanf: int -> float
51 # extern __builtin_nan: int -> float
52 # extern __builtin_modfl: float -> int -> float
53 # extern __builtin_modff: float -> int -> float
54 # extern __builtin_mempcpy: int -> int -> int -> int
55 # extern __builtin_memcpy: int -> int -> int -> int
56 # extern __builtin_logl: float -> float
57 # extern __builtin_logf: float -> float
58 # extern __builtin_log10l: float -> float
59 # extern __builtin_log10f: float -> float
60 # extern __builtin_log10: float -> float
61 # extern __builtin_log: float -> float
62 # extern __builtin_ldexpl: float -> int -> float
63 # extern __builtin_ldexpf: float -> int -> float
64 # extern __builtin_ldexp: float -> int -> float
65 # extern __builtin_infl: float
66 # extern __builtin_inff: float
67 # extern __builtin_inf: float
68 # extern __builtin_huge_vall: float
69 # extern __builtin_huge_valf: float
70 # extern __builtin_huge_val: float
71 # extern __builtin_frexpl: float -> int -> float
72 # extern __builtin_frexpf: float -> int -> float
73 # extern __builtin_frexp: float -> int -> float
74 # extern __builtin_frame_address: int -> int
75 # extern __builtin_fmodl: float -> float
76 # extern __builtin_fmodf: float -> float
77 # extern __builtin_fmod: float -> float
78 # extern __builtin_floorl: float -> float
79 # extern __builtin_floorf: float -> float
80 # extern __builtin_floor: float -> float
81 # extern __builtin_ffsll: int -> int
82 # extern __builtin_ffsl: int -> int
83 # extern __builtin_ffs: int -> int
84 # extern __builtin_fabsl: float -> float
85 # extern __builtin_fabsf: float -> float
86 # extern __builtin_fabs: float -> float
87 # extern __builtin_expl: float -> float
88 # extern __builtin_expf: float -> float
89 # extern __builtin_expect: int -> int -> int
90 # extern __builtin_exp: float -> float
91 # extern __builtin_ctzll: int -> int
92 # extern __builtin_ctzl: int -> int
93 # extern __builtin_ctz: int -> int
94 # extern __builtin_cosl: float -> float
95 # extern __builtin_coshl: float -> float
96 # extern __builtin_coshf: float -> float
97 # extern __builtin_cosh: float -> float
98 # extern __builtin_cosf: float -> float
99 # extern __builtin_cos: float -> float
100 # extern __builtin_constant_p: int -> int
101 # extern __builtin_clzll: int -> int
102 # extern __builtin_clzl: int -> int
103 # extern __builtin_clz: int -> int
104 # extern __builtin_ceill: float -> float
105 # extern __builtin_ceilf: float -> float
106 # extern __builtin_ceil: float -> float
107 # extern __builtin_atanl: float -> float
108 # extern __builtin_atanf: float -> float
109 # extern __builtin_atan2l: float -> float -> float
110 # extern __builtin_atan2f: float -> float -> float
111 # extern __builtin_atan2: float -> float -> float
112 # extern __builtin_atan: float -> float
113 # extern __builtin_asinl: float -> float
114 # extern __builtin_asinf: float -> float
115 # extern __builtin_asin: float -> float
116 # extern __builtin_alloca: int -> int
117 # extern __builtin_acosl: float -> float
118 # extern __builtin_acosf: float -> float
119 # extern __builtin_acos: float -> float
120 # extern __builtin___vsprintf_chk: int -> int -> int -> int -> int -> int
121 # extern __builtin___vsnprintf_chk: int -> int -> int -> int -> int -> int -> int
122 # extern __builtin___vprintf_chk: int -> int -> int -> int
123 # extern __builtin___vfprintf_chk: int -> int -> int -> int -> int
124 # extern __builtin___strncpy_chk: int -> int -> int -> int -> int
125 # extern __builtin___strncat_chk: int -> int -> int -> int -> int
126 # extern __builtin___strcpy_chk: int -> int -> int -> int
127 # extern __builtin___strcat_chk: int -> int -> int -> int
128 # extern __builtin___stpcpy_chk: int -> int -> int -> int
129 # extern __builtin___memset_chk: int -> int -> int -> int -> int
130 # extern __builtin___mempcpy_chk: int -> int -> int -> int -> int
131 # extern __builtin___memmove_chk: int -> int -> int -> int -> int
132 # extern __builtin___memcpy_chk: int -> int -> int -> int -> int
133
134 # begin preamble       
135 .data                  
136 globals:               
137 .space 0           
138 nl:                    
139 .asciiz "\n"      
140 .align 2             
141 .text                 
142 main:                 
143 la    $gp, globals    
144 j     main181              
145 print_int:            
146 li    $v0, 1          
147 syscall               
148 jr     $ra            
149 print_intln:          
150 li    $v0, 1          
151 syscall               
152 la    $a0, nl         
153 li    $v0, 4          
154 syscall               
155 jr     $ra            
156 scan_int:             
157 li    $v0, 5          
158 syscall               
159 jr     $ra            
160 alloc:                
161 li    $v0, 9          
162 syscall               
163 jr     $ra            
164
165 pow2:                 
166 li    $v0, 1          
167 sllv  $v0, $v0, $a0   
168 jr    $ra             
169
170 mod:                  
171 beqz  $a0, mod0       
172 beqz  $a1, mod0       
173 li    $t2, 0          
174 mod_t0:               
175 bgtz  $a0, mod_a0_pos 
176 neg   $t0, $a0        
177 addi  $t2, $t2, 1     
178 j     mod_t1          
179 mod_a0_pos:           
180 move  $t0, $a0        
181 mod_t1:               
182 bgtz  $a1, mod_a1_pos 
183 neg   $t1, $a1        
184 addi  $t2, $t2, 2     
185 j     mod_main        
186 mod_a1_pos:           
187 move  $t1, $a1        
188 mod_main:             
189 rem   $v0, $t0, $t1   
190 beqz  $t2, mod_exit   
191 addi  $t2, -1         
192 beqz  $t2, mod_case1  
193 addi  $t2, -1         
194 beqz  $t2, mod_case2  
195 neg   $v0, $v0        
196 j mod_exit            
197 mod_case1:            
198 sub   $v0, $a1, $v0   
199 j mod_exit            
200 mod_case2:            
201 add   $v0, $a1, $v0   
202 j mod_exit            
203 mod0:                 
204 li    $v0, 0          
205 mod_exit:             
206 jr    $ra             
207
208 toint:                
209 # $a0: size           
210 # $a1: int to convert 
211 addi  $sp, $sp, -4    
212 sw    $ra, 0($sp)     
213 jal   pow2            
214 move  $a0, $a1        
215 move  $a1, $v0        
216 jal   mod             
217 lw    $ra, 0($sp)     
218 addi  $sp, $sp, 4     
219 jr    $ra             
220
221 toint8:               
222 addi  $sp, $sp, -4    
223 sw    $ra, 0($sp)     
224 move  $a1, $a0        
225 li    $a0, 8          
226 jal   toint           
227 lw    $ra, 0($sp)     
228 addi  $sp, $sp, 4     
229 jr    $ra             
230
231 toint16:              
232 addi  $sp, $sp, -4    
233 sw    $ra, 0($sp)     
234 move  $a1, $a0        
235 li    $a0, 16         
236 jal   toint           
237 lw    $ra, 0($sp)     
238 addi  $sp, $sp, 4     
239 jr    $ra             
240
241 sign_ext:             
242 # $a0: size           
243 # $a1: int to extend  
244 li    $v0, 32         
245 sub   $a0, $v0, $a0   
246 sllv  $v0, $a1, $a0   
247 srav  $v0, $v0, $a0   
248 jr    $ra             
249
250 ofint:                
251 # $a0: signedness     
252 # $a1: size           
253 # $a2: int to convert 
254 addi  $sp, $sp, -4    
255 sw    $ra, 0($sp)     
256 beqz  $a0, ofint_unsigned 
257 move  $a0, $a1        
258 move  $a1, $a2        
259 jal   sign_ext        
260 j     ofint_exit      
261 ofint_unsigned:       
262 move  $v0, $a2        
263 ofint_exit:           
264 lw    $ra, 0($sp)     
265 addi  $sp, $sp, 4     
266 jr    $ra             
267
268 ofint8:               
269 addi  $sp, $sp, -4    
270 sw    $ra, 0($sp)     
271 move  $a2, $a0        
272 li    $a1, 8          
273 li    $a0, 1          
274 jal   ofint           
275 lw    $ra, 0($sp)     
276 addi  $sp, $sp, 4     
277 jr    $ra             
278
279 ofuint8:              
280 addi  $sp, $sp, -4    
281 sw    $ra, 0($sp)     
282 move  $a2, $a0        
283 li    $a1, 8          
284 li    $a0, 0          
285 jal   ofint           
286 lw    $ra, 0($sp)     
287 addi  $sp, $sp, 4     
288 jr    $ra             
289
290 ofint16:              
291 addi  $sp, $sp, -4    
292 sw    $ra, 0($sp)     
293 move  $a2, $a0        
294 li    $a1, 16         
295 li    $a0, 1          
296 jal   ofint           
297 lw    $ra, 0($sp)     
298 addi  $sp, $sp, 4     
299 jr    $ra             
300
301 ofuint16:             
302 addi  $sp, $sp, -4    
303 sw    $ra, 0($sp)     
304 move  $a2, $a0        
305 li    $a1, 16         
306 li    $a0, 0          
307 jal   ofint           
308 lw    $ra, 0($sp)     
309 addi  $sp, $sp, 4     
310 jr    $ra             
311 # end preamble        
312
313
314 # begin array_param
315 array_param79:
316 c37:
317 li      $a3, 1
318 li      $v0, 4
319 mulo    $v0, $zero, $v0
320 add     $v0, $a0, $v0
321 sw      $a3, 0($v0)
322 c36:
323 li      $a3, 1
324 li      $v0, 4
325 mulo    $v0, $a3, $v0
326 add     $v0, $a0, $v0
327 sw      $a1, 0($v0)
328 c35:
329 c34:
330 li      $a1, 7
331 li      $v0, 4
332 mulo    $v0, $a2, $v0
333 add     $v0, $a0, $v0
334 sw      $a1, 0($v0)
335 c33:
336 li      $v0, 4
337 mulo    $v0, $a2, $v0
338 add     $v0, $a0, $v0
339 lw      $v0, 0($v0)
340 c32:
341 c31:
342 jr      $ra
343 # end array_param
344
345
346 # begin array_mixte
347 array_mixte223:
348 addi    $sp, $sp, -40
349 c30:
350 li      $t0, 0
351 move    $a3, $sp
352 li      $v0, 4
353 mulo    $v0, $zero, $v0
354 add     $v0, $a3, $v0
355 sw      $t0, 0($v0)
356 c29:
357 move    $t0, $sp
358 li      $a3, 1
359 li      $v0, 4
360 mulo    $v0, $a3, $v0
361 add     $v0, $t0, $v0
362 sw      $zero, 0($v0)
363 c28:
364 move    $t0, $sp
365 li      $a3, 2
366 li      $v0, 4
367 mulo    $v0, $a3, $v0
368 add     $v0, $t0, $v0
369 sw      $zero, 0($v0)
370 c27:
371 move    $t0, $sp
372 li      $a3, 3
373 li      $v0, 4
374 mulo    $v0, $a3, $v0
375 add     $v0, $t0, $v0
376 sw      $zero, 0($v0)
377 c26:
378 move    $t0, $sp
379 li      $a3, 4
380 li      $v0, 4
381 mulo    $v0, $a3, $v0
382 add     $v0, $t0, $v0
383 sw      $zero, 0($v0)
384 c25:
385 move    $t0, $sp
386 li      $a3, 5
387 li      $v0, 4
388 mulo    $v0, $a3, $v0
389 add     $v0, $t0, $v0
390 sw      $zero, 0($v0)
391 c24:
392 move    $t0, $sp
393 li      $a3, 6
394 li      $v0, 4
395 mulo    $v0, $a3, $v0
396 add     $v0, $t0, $v0
397 sw      $zero, 0($v0)
398 c23:
399 move    $t0, $sp
400 li      $a3, 7
401 li      $v0, 4
402 mulo    $v0, $a3, $v0
403 add     $v0, $t0, $v0
404 sw      $zero, 0($v0)
405 c22:
406 move    $t0, $sp
407 li      $a3, 8
408 li      $v0, 4
409 mulo    $v0, $a3, $v0
410 add     $v0, $t0, $v0
411 sw      $zero, 0($v0)
412 c21:
413 move    $t0, $sp
414 li      $a3, 9
415 li      $v0, 4
416 mulo    $v0, $a3, $v0
417 add     $v0, $t0, $v0
418 sw      $zero, 0($v0)
419 c20:
420 li      $v0, 4
421 mulo    $v0, $a2, $v0
422 add     $v0, $a0, $v0
423 lw      $a3, 0($v0)
424 li      $v0, 1
425 add     $t0, $a3, $v0
426 move    $a3, $sp
427 li      $v0, 4
428 mulo    $v0, $a1, $v0
429 add     $v0, $a3, $v0
430 sw      $t0, 0($v0)
431 c19:
432 move    $a3, $sp
433 li      $v0, 4
434 mulo    $v0, $zero, $v0
435 add     $v0, $a3, $v0
436 lw      $a3, 0($v0)
437 li      $v0, 4
438 mulo    $v0, $a2, $v0
439 add     $v0, $a0, $v0
440 sw      $a3, 0($v0)
441 c18:
442 li      $a2, 1
443 li      $v0, 4
444 mulo    $v0, $a2, $v0
445 add     $v0, $a0, $v0
446 lw      $a2, 0($v0)
447 li      $v0, 4
448 mulo    $v0, $a1, $v0
449 add     $v0, $a0, $v0
450 sw      $a2, 0($v0)
451 c17:
452 li      $v0, 4
453 mulo    $v0, $a1, $v0
454 add     $v0, $sp, $v0
455 lw      $v0, 0($v0)
456 addi    $sp, $sp, 40
457 jr      $ra
458 # end array_mixte
459
460
461 # begin array_local
462 array_local234:
463 addi    $sp, $sp, -40
464 c16:
465 li      $a1, 0
466 move    $a0, $sp
467 li      $v0, 4
468 mulo    $v0, $zero, $v0
469 add     $v0, $a0, $v0
470 sw      $a1, 0($v0)
471 c15:
472 move    $a1, $sp
473 li      $a0, 1
474 li      $v0, 4
475 mulo    $v0, $a0, $v0
476 add     $v0, $a1, $v0
477 sw      $zero, 0($v0)
478 c14:
479 move    $a1, $sp
480 li      $a0, 2
481 li      $v0, 4
482 mulo    $v0, $a0, $v0
483 add     $v0, $a1, $v0
484 sw      $zero, 0($v0)
485 c13:
486 move    $a1, $sp
487 li      $a0, 3
488 li      $v0, 4
489 mulo    $v0, $a0, $v0
490 add     $v0, $a1, $v0
491 sw      $zero, 0($v0)
492 c12:
493 move    $a1, $sp
494 li      $a0, 4
495 li      $v0, 4
496 mulo    $v0, $a0, $v0
497 add     $v0, $a1, $v0
498 sw      $zero, 0($v0)
499 c11:
500 move    $a1, $sp
501 li      $a0, 5
502 li      $v0, 4
503 mulo    $v0, $a0, $v0
504 add     $v0, $a1, $v0
505 sw      $zero, 0($v0)
506 c10:
507 move    $a1, $sp
508 li      $a0, 6
509 li      $v0, 4
510 mulo    $v0, $a0, $v0
511 add     $v0, $a1, $v0
512 sw      $zero, 0($v0)
513 c9:
514 move    $a1, $sp
515 li      $a0, 7
516 li      $v0, 4
517 mulo    $v0, $a0, $v0
518 add     $v0, $a1, $v0
519 sw      $zero, 0($v0)
520 c8:
521 move    $a1, $sp
522 li      $a0, 8
523 li      $v0, 4
524 mulo    $v0, $a0, $v0
525 add     $v0, $a1, $v0
526 sw      $zero, 0($v0)
527 c7:
528 move    $a1, $sp
529 li      $a0, 9
530 li      $v0, 4
531 mulo    $v0, $a0, $v0
532 add     $v0, $a1, $v0
533 sw      $zero, 0($v0)
534 c6:
535 li      $a1, 1
536 move    $a0, $sp
537 li      $v0, 4
538 mulo    $v0, $zero, $v0
539 add     $v0, $a0, $v0
540 sw      $a1, 0($v0)
541 c5:
542 li      $a2, 5
543 move    $a1, $sp
544 li      $a0, 1
545 li      $v0, 4
546 mulo    $v0, $a0, $v0
547 add     $v0, $a1, $v0
548 sw      $a2, 0($v0)
549 c4:
550 c3:
551 li      $a2, 7
552 move    $a1, $sp
553 li      $a0, 1
554 li      $v0, 4
555 mulo    $v0, $a0, $v0
556 add     $v0, $a1, $v0
557 sw      $a2, 0($v0)
558 c2:
559 li      $a0, 1
560 li      $v0, 4
561 mulo    $v0, $a0, $v0
562 add     $v0, $sp, $v0
563 lw      $v0, 0($v0)
564 c1:
565 c0:
566 addi    $sp, $sp, 40
567 jr      $ra
568 # end array_local
569
570
571 # begin _main
572 main181:
573 addi    $sp, $sp, -52
574 sw      $ra, 48($sp)
575 sw      $s1, 44($sp)
576 sw      $s0, 40($sp)
577 c51:
578 li      $a1, 1
579 move    $a0, $sp
580 li      $v0, 4
581 mulo    $v0, $zero, $v0
582 add     $v0, $a0, $v0
583 sw      $a1, 0($v0)
584 c50:
585 li      $a2, 2
586 move    $a1, $sp
587 li      $a0, 1
588 li      $v0, 4
589 mulo    $v0, $a0, $v0
590 add     $v0, $a1, $v0
591 sw      $a2, 0($v0)
592 c49:
593 li      $a2, 3
594 move    $a1, $sp
595 li      $a0, 2
596 li      $v0, 4
597 mulo    $v0, $a0, $v0
598 add     $v0, $a1, $v0
599 sw      $a2, 0($v0)
600 c48:
601 li      $a2, 4
602 move    $a1, $sp
603 li      $a0, 3
604 li      $v0, 4
605 mulo    $v0, $a0, $v0
606 add     $v0, $a1, $v0
607 sw      $a2, 0($v0)
608 c47:
609 li      $a2, 5
610 move    $a1, $sp
611 li      $a0, 4
612 li      $v0, 4
613 mulo    $v0, $a0, $v0
614 add     $v0, $a1, $v0
615 sw      $a2, 0($v0)
616 c46:
617 li      $a2, 6
618 move    $a1, $sp
619 li      $a0, 5
620 li      $v0, 4
621 mulo    $v0, $a0, $v0
622 add     $v0, $a1, $v0
623 sw      $a2, 0($v0)
624 c45:
625 li      $a2, 7
626 move    $a1, $sp
627 li      $a0, 6
628 li      $v0, 4
629 mulo    $v0, $a0, $v0
630 add     $v0, $a1, $v0
631 sw      $a2, 0($v0)
632 c44:
633 li      $a2, 8
634 move    $a1, $sp
635 li      $a0, 7
636 li      $v0, 4
637 mulo    $v0, $a0, $v0
638 add     $v0, $a1, $v0
639 sw      $a2, 0($v0)
640 c43:
641 li      $a2, 9
642 move    $a1, $sp
643 li      $a0, 8
644 li      $v0, 4
645 mulo    $v0, $a0, $v0
646 add     $v0, $a1, $v0
647 sw      $a2, 0($v0)
648 c42:
649 move    $a1, $sp
650 li      $a0, 9
651 li      $v0, 4
652 mulo    $v0, $a0, $v0
653 add     $v0, $a1, $v0
654 sw      $zero, 0($v0)
655 c41:
656 la      $v0, array_local234
657 jalr    $v0
658 move    $s0, $v0
659 c40:
660 move    $a0, $sp
661 li      $a1, 2
662 li      $a2, 3
663 la      $v0, array_mixte223
664 jalr    $v0
665 move    $s1, $v0
666 c39:
667 move    $a0, $sp
668 li      $a1, 2
669 li      $a2, 3
670 la      $v0, array_param79
671 jalr    $v0
672 c38:
673 add     $a0, $s0, $s1
674 add     $v0, $a0, $v0
675 lw      $ra, 48($sp)
676 lw      $s1, 44($sp)
677 lw      $s0, 40($sp)
678 addi    $sp, $sp, 52
679 jr      $ra
680 # end _main