]> matita.cs.unibo.it Git - pkg-cerco/acc.git/blob - tests/clight/for.ASM.expected
Imported Upstream version 0.2
[pkg-cerco/acc.git] / tests / clight / for.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     main85              
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 for_loopParalAsync
315 for_loopParalAsync94:
316 c29:
317 li      $v0, 0
318 c28:
319 li      $a2, 0
320 c27:
321 li      $a0, 3
322 add     $a2, $a2, $a0
323 c26:
324 li      $a0, 2
325 mulo    $a2, $a2, $a0
326 c25:
327 li      $a0, 3
328 div     $a2, $a2, $a0
329 c24:
330 li      $a0, 8
331 add     $a2, $a2, $a0
332 c23:
333 c22:
334 li      $a1, 0
335 for_loopParalAsync37:
336 li      $a3, 0
337 c21:
338 li      $a0, 20
339 slt     $a0, $a1, $a0
340 seq     $a0, $a0, $zero
341 beq     $a0, $a3, for_loopParalAsync31
342 c16:
343 c15:
344 li      $a1, 1
345 for_loopParalAsync16:
346 li      $a3, 0
347 c14:
348 slt     $a0, $a1, $a2
349 seq     $a0, $a0, $zero
350 beq     $a0, $a3, for_loopParalAsync11
351 c10:
352 jr      $ra
353 for_loopParalAsync11:
354 c12:
355 c11:
356 c13:
357 li      $a0, 1
358 add     $a1, $a1, $a0
359 j       for_loopParalAsync16
360 for_loopParalAsync31:
361 c19:
362 li      $a0, 1
363 add     $v0, $v0, $a0
364 c18:
365 c17:
366 c20:
367 li      $a0, 1
368 add     $a1, $a1, $a0
369 j       for_loopParalAsync37
370 # end for_loopParalAsync
371
372
373 # begin for_incrParam
374 for_incrParam49:
375 c86:
376 add     $a3, $a0, $a1
377 c85:
378 c84:
379 c83:
380 li      $v0, 4
381 sub     $v0, $a3, $v0
382 for_incrParam15:
383 li      $t0, 0
384 c82:
385 li      $a2, 6
386 add     $a2, $a1, $a2
387 slt     $a2, $v0, $a2
388 seq     $a2, $a2, $zero
389 beq     $a2, $t0, for_incrParam8
390 c79:
391 jr      $ra
392 for_incrParam8:
393 c80:
394 add     $v0, $v0, $a3
395 add     $v0, $v0, $a0
396 c81:
397 add     $v0, $v0, $a0
398 j       for_incrParam15
399 # end for_incrParam
400
401
402 # begin for_incr
403 for_incr44:
404 c78:
405 li      $v0, 0
406 c77:
407 c76:
408 li      $a2, 3
409 add     $a2, $a0, $a2
410 for_incr15:
411 li      $a3, 0
412 c75:
413 li      $a0, 2
414 mulo    $a0, $a1, $a0
415 sle     $a0, $a2, $a0
416 seq     $a0, $a0, $zero
417 beq     $a0, $a3, for_incr8
418 c72:
419 jr      $ra
420 for_incr8:
421 c73:
422 sub     $v0, $v0, $a2
423 c74:
424 li      $a0, 1
425 add     $a2, $a2, $a0
426 j       for_incr15
427 # end for_incr
428
429
430 # begin for_imbriq
431 for_imbriq64:
432 addi    $sp, $sp, -24
433 sw      $ra, 20($sp)
434 sw      $s4, 16($sp)
435 sw      $s3, 12($sp)
436 sw      $s2, 8($sp)
437 sw      $s1, 4($sp)
438 sw      $s0, 0($sp)
439 move    $s4, $a0
440 move    $s3, $a1
441 c71:
442 li      $s0, 0
443 c70:
444 c69:
445 li      $s1, 0
446 for_imbriq29:
447 li      $a0, 0
448 c68:
449 li      $v0, 23
450 slt     $v0, $s1, $v0
451 seq     $v0, $v0, $zero
452 beq     $v0, $a0, for_imbriq23
453 c59:
454 move    $v0, $s0
455 lw      $ra, 20($sp)
456 lw      $s4, 16($sp)
457 lw      $s3, 12($sp)
458 lw      $s2, 8($sp)
459 lw      $s1, 4($sp)
460 lw      $s0, 0($sp)
461 addi    $sp, $sp, 24
462 jr      $ra
463 for_imbriq23:
464 c66:
465 li      $v0, 0
466 c65:
467 c64:
468 li      $s2, 1
469 for_imbriq18:
470 li      $a1, 0
471 c63:
472 li      $a0, 12
473 slt     $a0, $s2, $a0
474 seq     $a0, $a0, $zero
475 beq     $a0, $a1, for_imbriq12
476 c67:
477 add     $s1, $s1, $s4
478 j       for_imbriq29
479 for_imbriq12:
480 c61:
481 add     $s0, $s0, $v0
482 c60:
483 la      $a2, mod
484 move    $a0, $v0
485 move    $a1, $s2
486 jalr    $a2
487 c62:
488 add     $s2, $s2, $s3
489 j       for_imbriq18
490 # end for_imbriq
491
492
493 # begin for_fortSimple
494 for_fortSimple41:
495 c58:
496 li      $t0, 0
497 c57:
498 c56:
499 move    $a3, $a0
500 for_fortSimple14:
501 li      $t1, 0
502 c55:
503 slt     $v0, $a3, $a1
504 seq     $v0, $v0, $zero
505 beq     $v0, $t1, for_fortSimple9
506 c52:
507 add     $v0, $t0, $a0
508 c51:
509 jr      $ra
510 for_fortSimple9:
511 c53:
512 add     $t0, $t0, $a3
513 c54:
514 add     $a3, $a3, $a2
515 j       for_fortSimple14
516 # end for_fortSimple
517
518
519 # begin for_forfor
520 for_forfor44:
521 c94:
522 c93:
523 li      $a1, 0
524 c92:
525 li      $v0, 0
526 for_forfor18:
527 li      $a2, 0
528 c91:
529 li      $a0, 10
530 slt     $a0, $a1, $a0
531 seq     $a0, $a0, $zero
532 beq     $a0, $a2, for_forfor12
533 c87:
534 jr      $ra
535 for_forfor12:
536 c89:
537 li      $a0, 1
538 add     $v0, $v0, $a0
539 c88:
540 li      $a0, 1
541 add     $v0, $v0, $a0
542 c90:
543 li      $a0, 1
544 add     $a1, $a1, $a0
545 j       for_forfor18
546 # end for_forfor
547
548
549 # begin for_ex
550 for_ex43:
551 c50:
552 li      $v0, 0
553 c49:
554 c48:
555 li      $a3, 3
556 add     $a3, $a0, $a3
557 for_ex14:
558 li      $t0, 0
559 c47:
560 li      $a0, 2
561 mulo    $a0, $a1, $a0
562 sle     $a0, $a3, $a0
563 seq     $a0, $a0, $zero
564 beq     $a0, $t0, for_ex7
565 c44:
566 jr      $ra
567 for_ex7:
568 c45:
569 sub     $v0, $v0, $a3
570 c46:
571 add     $a3, $a3, $a2
572 j       for_ex14
573 # end for_ex
574
575
576 # begin for_double
577 for_double64:
578 c43:
579 li      $a1, 0
580 c42:
581 li      $a2, 0
582 c41:
583 c40:
584 li      $a3, 0
585 for_double29:
586 li      $t0, 0
587 c39:
588 li      $v0, 12
589 slt     $v0, $a3, $v0
590 seq     $v0, $v0, $zero
591 beq     $v0, $t0, for_double23
592 c36:
593 c35:
594 li      $a3, 0
595 for_double15:
596 li      $t0, 0
597 c34:
598 li      $v0, 5
599 slt     $v0, $a3, $v0
600 seq     $v0, $v0, $zero
601 beq     $v0, $t0, for_double9
602 c31:
603 mulo    $v0, $a1, $a2
604 c30:
605 jr      $ra
606 for_double9:
607 c32:
608 add     $a2, $a2, $a3
609 c33:
610 add     $a3, $a3, $a0
611 j       for_double15
612 for_double23:
613 c37:
614 add     $a1, $a1, $a3
615 c38:
616 add     $a3, $a3, $a0
617 j       for_double29
618 # end for_double
619
620
621 # begin for_2
622 for_253:
623 c9:
624 li      $a2, 0
625 c8:
626 li      $v0, 2
627 mulo    $v0, $a0, $v0
628 c7:
629 li      $a3, 4
630 mulo    $a0, $a0, $a3
631 c6:
632 li      $a3, 1
633 add     $a1, $a1, $a3
634 c5:
635 c4:
636 for_213:
637 li      $t0, 0
638 c3:
639 slt     $a3, $v0, $a0
640 seq     $a3, $a3, $zero
641 beq     $a3, $t0, for_28
642 c0:
643 li      $v0, 1
644 add     $v0, $a2, $v0
645 jr      $ra
646 for_28:
647 c1:
648 add     $a2, $a2, $v0
649 c2:
650 add     $v0, $v0, $a1
651 j       for_213
652 # end for_2
653
654
655 # begin _main
656 main85:
657 addi    $sp, $sp, -4
658 sw      $ra, 0($sp)
659 c104:
660 li      $a0, 3
661 li      $a1, 1
662 la      $v0, for_253
663 jalr    $v0
664 c103:
665 li      $a0, 1
666 li      $a1, 2
667 li      $a2, 3
668 la      $v0, for_loopParalAsync94
669 jalr    $v0
670 c102:
671 li      $a0, 1
672 la      $v0, for_double64
673 jalr    $v0
674 c101:
675 li      $a0, 2
676 li      $a1, 10
677 li      $a2, 1
678 la      $v0, for_ex43
679 jalr    $v0
680 c100:
681 li      $a0, 2
682 li      $a1, 10
683 li      $a2, 1
684 la      $v0, for_fortSimple41
685 jalr    $v0
686 c99:
687 li      $a0, 2
688 li      $a1, 3
689 la      $v0, for_imbriq64
690 jalr    $v0
691 c98:
692 li      $a0, 2
693 li      $a1, 3
694 la      $v0, for_incr44
695 jalr    $v0
696 c97:
697 li      $a0, 2
698 li      $a1, 3
699 la      $v0, for_incrParam49
700 jalr    $v0
701 c96:
702 la      $v0, for_forfor44
703 jalr    $v0
704 c95:
705 lw      $ra, 0($sp)
706 addi    $sp, $sp, 4
707 jr      $ra
708 # end _main