source: Deliverables/D2.3/8051/tests/clight/fir4.ASM.expected @ 453

Last change on this file since 453 was 453, checked in by ayache, 9 years ago

Import of the Paris's sources.

File size: 16.5 KB
Line 
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                 
136globals:               
137.space 288           
138nl:                   
139.asciiz "\n"     
140.align 2             
141.text                 
142main:                 
143la    $gp, globals   
144j     main385             
145print_int:           
146li    $v0, 1         
147syscall               
148jr     $ra           
149print_intln:         
150li    $v0, 1         
151syscall               
152la    $a0, nl         
153li    $v0, 4         
154syscall               
155jr     $ra           
156scan_int:             
157li    $v0, 5         
158syscall               
159jr     $ra           
160alloc:               
161li    $v0, 9         
162syscall               
163jr     $ra           
164
165pow2:                 
166li    $v0, 1         
167sllv  $v0, $v0, $a0   
168jr    $ra             
169
170mod:                 
171beqz  $a0, mod0       
172beqz  $a1, mod0       
173li    $t2, 0         
174mod_t0:               
175bgtz  $a0, mod_a0_pos
176neg   $t0, $a0       
177addi  $t2, $t2, 1     
178j     mod_t1         
179mod_a0_pos:           
180move  $t0, $a0       
181mod_t1:               
182bgtz  $a1, mod_a1_pos
183neg   $t1, $a1       
184addi  $t2, $t2, 2     
185j     mod_main       
186mod_a1_pos:           
187move  $t1, $a1       
188mod_main:             
189rem   $v0, $t0, $t1   
190beqz  $t2, mod_exit   
191addi  $t2, -1         
192beqz  $t2, mod_case1 
193addi  $t2, -1         
194beqz  $t2, mod_case2 
195neg   $v0, $v0       
196j mod_exit           
197mod_case1:           
198sub   $v0, $a1, $v0   
199j mod_exit           
200mod_case2:           
201add   $v0, $a1, $v0   
202j mod_exit           
203mod0:                 
204li    $v0, 0         
205mod_exit:             
206jr    $ra             
207
208toint:               
209# $a0: size           
210# $a1: int to convert
211addi  $sp, $sp, -4   
212sw    $ra, 0($sp)     
213jal   pow2           
214move  $a0, $a1       
215move  $a1, $v0       
216jal   mod             
217lw    $ra, 0($sp)     
218addi  $sp, $sp, 4     
219jr    $ra             
220
221toint8:               
222addi  $sp, $sp, -4   
223sw    $ra, 0($sp)     
224move  $a1, $a0       
225li    $a0, 8         
226jal   toint           
227lw    $ra, 0($sp)     
228addi  $sp, $sp, 4     
229jr    $ra             
230
231toint16:             
232addi  $sp, $sp, -4   
233sw    $ra, 0($sp)     
234move  $a1, $a0       
235li    $a0, 16         
236jal   toint           
237lw    $ra, 0($sp)     
238addi  $sp, $sp, 4     
239jr    $ra             
240
241sign_ext:             
242# $a0: size           
243# $a1: int to extend 
244li    $v0, 32         
245sub   $a0, $v0, $a0   
246sllv  $v0, $a1, $a0   
247srav  $v0, $v0, $a0   
248jr    $ra             
249
250ofint:               
251# $a0: signedness     
252# $a1: size           
253# $a2: int to convert
254addi  $sp, $sp, -4   
255sw    $ra, 0($sp)     
256beqz  $a0, ofint_unsigned
257move  $a0, $a1       
258move  $a1, $a2       
259jal   sign_ext       
260j     ofint_exit     
261ofint_unsigned:       
262move  $v0, $a2       
263ofint_exit:           
264lw    $ra, 0($sp)     
265addi  $sp, $sp, 4     
266jr    $ra             
267
268ofint8:               
269addi  $sp, $sp, -4   
270sw    $ra, 0($sp)     
271move  $a2, $a0       
272li    $a1, 8         
273li    $a0, 1         
274jal   ofint           
275lw    $ra, 0($sp)     
276addi  $sp, $sp, 4     
277jr    $ra             
278
279ofuint8:             
280addi  $sp, $sp, -4   
281sw    $ra, 0($sp)     
282move  $a2, $a0       
283li    $a1, 8         
284li    $a0, 0         
285jal   ofint           
286lw    $ra, 0($sp)     
287addi  $sp, $sp, 4     
288jr    $ra             
289
290ofint16:             
291addi  $sp, $sp, -4   
292sw    $ra, 0($sp)     
293move  $a2, $a0       
294li    $a1, 16         
295li    $a0, 1         
296jal   ofint           
297lw    $ra, 0($sp)     
298addi  $sp, $sp, 4     
299jr    $ra             
300
301ofuint16:             
302addi  $sp, $sp, -4   
303sw    $ra, 0($sp)     
304move  $a2, $a0       
305li    $a1, 16         
306li    $a0, 0         
307jal   ofint           
308lw    $ra, 0($sp)     
309addi  $sp, $sp, 4     
310jr    $ra             
311# end preamble       
312
313
314# begin fir4
315fir4280:
316addi    $sp, $sp, -116
317sw      $ra, 112($sp)
318sw      $s7, 108($sp)
319sw      $s6, 104($sp)
320sw      $s5, 100($sp)
321sw      $s4, 96($sp)
322sw      $s3, 92($sp)
323sw      $s2, 88($sp)
324sw      $s1, 84($sp)
325sw      $s0, 80($sp)
326sw      $a0, 64($sp)
327move    $s6, $a1
328sw      $a2, 68($sp)
329sw      $a3, 72($sp)
330c25:
331li      $s1, 0
332c24:
333c23:
334c22:
335li      $s3, 0
336fir4128:
337li      $a0, 0
338c21:
339li      $v0, 16
340slt     $v0, $s3, $v0
341seq     $v0, $v0, $zero
342beq     $v0, $a0, fir4122
343c18:
344c17:
345li      $s4, 0
346fir4109:
347li      $a0, 0
348c16:
349lw      $fp, 72($sp)
350slt     $v0, $s4, $fp
351seq     $v0, $v0, $zero
352beq     $v0, $a0, fir4104
353c0:
354li      $v0, 0
355lw      $ra, 112($sp)
356lw      $s7, 108($sp)
357lw      $s6, 104($sp)
358lw      $s5, 100($sp)
359lw      $s4, 96($sp)
360lw      $s3, 92($sp)
361lw      $s2, 88($sp)
362lw      $s1, 84($sp)
363lw      $s0, 80($sp)
364addi    $sp, $sp, 116
365jr      $ra
366fir4104:
367c14:
368li      $v0, 4
369mulo    $v0, $s4, $v0
370lw      $v1, 64($sp)
371add     $v0, $v1, $v0
372lw      $a1, 0($v0)
373move    $a0, $sp
374li      $v0, 4
375mulo    $v0, $s1, $v0
376add     $v0, $a0, $v0
377sw      $a1, 0($v0)
378c13:
379li      $s5, 0
380c12:
381c11:
382li      $s3, 0
383fir491:
384li      $a0, 0
385c10:
386li      $v0, 16
387slt     $v0, $s3, $v0
388seq     $v0, $v0, $zero
389beq     $v0, $a0, fir485
390c2:
391li      $v0, 1
392add     $a0, $s1, $v0
393li      $a1, 16
394la      $v0, mod
395jalr    $v0
396move    $s1, $v0
397c1:
398li      $v0, 16
399srav    $a0, $s5, $v0
400li      $v0, 4
401mulo    $v0, $s4, $v0
402lw      $v1, 68($sp)
403add     $v0, $v1, $v0
404sw      $a0, 0($v0)
405c15:
406li      $v0, 1
407add     $s4, $s4, $v0
408j       fir4109
409fir485:
410c8:
411move    $a0, $sp
412li      $v0, 4
413mulo    $v0, $s1, $v0
414add     $v0, $a0, $v0
415lw      $a0, 0($v0)
416li      $v0, 4
417mulo    $v0, $s3, $v0
418add     $v0, $s6, $v0
419lw      $v0, 0($v0)
420mulo    $s2, $a0, $v0
421c7:
422move    $s0, $sp
423li      $v0, 1
424add     $a0, $s1, $v0
425li      $a1, 16
426la      $v0, mod
427jalr    $v0
428li      $a0, 4
429mulo    $v0, $v0, $a0
430add     $v0, $s0, $v0
431lw      $a1, 0($v0)
432li      $v0, 1
433add     $a0, $s3, $v0
434li      $v0, 4
435mulo    $v0, $a0, $v0
436add     $v0, $s6, $v0
437lw      $v0, 0($v0)
438mulo    $v1, $a1, $v0
439sw      $v1, 76($sp)
440c6:
441move    $s0, $sp
442li      $v0, 2
443add     $a0, $s1, $v0
444li      $a1, 16
445la      $v0, mod
446jalr    $v0
447li      $a0, 4
448mulo    $v0, $v0, $a0
449add     $v0, $s0, $v0
450lw      $a1, 0($v0)
451li      $v0, 2
452add     $a0, $s3, $v0
453li      $v0, 4
454mulo    $v0, $a0, $v0
455add     $v0, $s6, $v0
456lw      $v0, 0($v0)
457mulo    $s7, $a1, $v0
458c5:
459move    $s0, $sp
460li      $v0, 3
461add     $a0, $s1, $v0
462li      $a1, 16
463la      $v0, mod
464jalr    $v0
465li      $a0, 4
466mulo    $v0, $v0, $a0
467add     $v0, $s0, $v0
468lw      $a1, 0($v0)
469li      $v0, 3
470add     $a0, $s3, $v0
471li      $v0, 4
472mulo    $v0, $a0, $v0
473add     $v0, $s6, $v0
474lw      $v0, 0($v0)
475mulo    $v0, $a1, $v0
476c4:
477add     $a0, $s5, $s2
478lw      $fp, 76($sp)
479add     $a0, $a0, $fp
480add     $a0, $a0, $s7
481add     $s5, $a0, $v0
482c3:
483li      $v0, 4
484add     $a0, $s1, $v0
485li      $a1, 16
486la      $v0, mod
487jalr    $v0
488move    $s1, $v0
489c9:
490li      $v0, 4
491add     $s3, $s3, $v0
492j       fir491
493fir4122:
494c19:
495move    $a0, $sp
496li      $v0, 4
497mulo    $v0, $s3, $v0
498add     $v0, $a0, $v0
499sw      $zero, 0($v0)
500c20:
501li      $v0, 1
502add     $s3, $s3, $v0
503j       fir4128
504# end fir4
505
506
507# begin _main
508main385:
509addi    $sp, $sp, -68
510sw      $ra, 64($sp)
511li      $a0, 1129
512move    $v0, $gp
513sw      $a0, 0($v0)
514li      $a0, 60034
515move    $v0, $gp
516sw      $a0, 4($v0)
517li      $a0, 64720
518move    $v0, $gp
519sw      $a0, 8($v0)
520li      $a0, 5595
521move    $v0, $gp
522sw      $a0, 12($v0)
523li      $a0, 494
524move    $v0, $gp
525sw      $a0, 16($v0)
526li      $a0, 59867
527move    $v0, $gp
528sw      $a0, 20($v0)
529li      $a0, 65370
530move    $v0, $gp
531sw      $a0, 24($v0)
532li      $a0, 5724
533move    $v0, $gp
534sw      $a0, 28($v0)
535li      $a0, 5724
536move    $v0, $gp
537sw      $a0, 32($v0)
538li      $a0, 65370
539move    $v0, $gp
540sw      $a0, 36($v0)
541li      $a0, 59867
542move    $v0, $gp
543sw      $a0, 40($v0)
544li      $a0, 494
545move    $v0, $gp
546sw      $a0, 44($v0)
547li      $a0, 5595
548move    $v0, $gp
549sw      $a0, 48($v0)
550li      $a0, 64720
551move    $v0, $gp
552sw      $a0, 52($v0)
553li      $a0, 60034
554move    $v0, $gp
555sw      $a0, 56($v0)
556li      $a0, 1129
557move    $v0, $gp
558sw      $a0, 60($v0)
559li      $a0, 1
560move    $v0, $gp
561sw      $a0, 64($v0)
562move    $v0, $gp
563sw      $zero, 68($v0)
564li      $a0, 16384
565move    $v0, $gp
566sw      $a0, 72($v0)
567move    $v0, $gp
568sw      $zero, 76($v0)
569move    $v0, $gp
570sw      $zero, 80($v0)
571move    $v0, $gp
572sw      $zero, 84($v0)
573move    $v0, $gp
574sw      $zero, 88($v0)
575move    $v0, $gp
576sw      $zero, 92($v0)
577move    $v0, $gp
578sw      $zero, 96($v0)
579move    $v0, $gp
580sw      $zero, 100($v0)
581move    $v0, $gp
582sw      $zero, 104($v0)
583move    $v0, $gp
584sw      $zero, 108($v0)
585move    $v0, $gp
586sw      $zero, 112($v0)
587move    $v0, $gp
588sw      $zero, 116($v0)
589move    $v0, $gp
590sw      $zero, 120($v0)
591move    $v0, $gp
592sw      $zero, 124($v0)
593move    $v0, $gp
594sw      $zero, 128($v0)
595move    $v0, $gp
596sw      $zero, 132($v0)
597move    $v0, $gp
598sw      $zero, 136($v0)
599move    $v0, $gp
600sw      $zero, 140($v0)
601move    $v0, $gp
602sw      $zero, 144($v0)
603move    $v0, $gp
604sw      $zero, 148($v0)
605move    $v0, $gp
606sw      $zero, 152($v0)
607move    $v0, $gp
608sw      $zero, 156($v0)
609move    $v0, $gp
610sw      $zero, 160($v0)
611li      $a0, 7986
612move    $v0, $gp
613sw      $a0, 164($v0)
614li      $a0, 8993
615move    $v0, $gp
616sw      $a0, 168($v0)
617li      $a0, 1808
618move    $v0, $gp
619sw      $a0, 172($v0)
620li      $a0, 4096
621move    $v0, $gp
622sw      $a0, 176($v0)
623li      $a0, 4096
624move    $v0, $gp
625sw      $a0, 180($v0)
626li      $a0, 4096
627move    $v0, $gp
628sw      $a0, 184($v0)
629li      $a0, 4096
630move    $v0, $gp
631sw      $a0, 188($v0)
632li      $a0, 4096
633move    $v0, $gp
634sw      $a0, 192($v0)
635li      $a0, 4096
636move    $v0, $gp
637sw      $a0, 196($v0)
638li      $a0, 4096
639move    $v0, $gp
640sw      $a0, 200($v0)
641li      $a0, 4096
642move    $v0, $gp
643sw      $a0, 204($v0)
644li      $a0, 4096
645move    $v0, $gp
646sw      $a0, 208($v0)
647li      $a0, 4096
648move    $v0, $gp
649sw      $a0, 212($v0)
650li      $a0, 4096
651move    $v0, $gp
652sw      $a0, 216($v0)
653li      $a0, 4096
654move    $v0, $gp
655sw      $a0, 220($v0)
656li      $a0, 4096
657move    $v0, $gp
658sw      $a0, 224($v0)
659li      $a0, 4096
660move    $v0, $gp
661sw      $a0, 228($v0)
662li      $a0, 4096
663move    $v0, $gp
664sw      $a0, 232($v0)
665li      $a0, 4096
666move    $v0, $gp
667sw      $a0, 236($v0)
668li      $a0, 4096
669move    $v0, $gp
670sw      $a0, 240($v0)
671li      $a0, 4096
672move    $v0, $gp
673sw      $a0, 244($v0)
674li      $a0, 4096
675move    $v0, $gp
676sw      $a0, 248($v0)
677li      $a0, 4096
678move    $v0, $gp
679sw      $a0, 252($v0)
680li      $a0, 4096
681move    $v0, $gp
682sw      $a0, 256($v0)
683li      $a0, 4096
684move    $v0, $gp
685sw      $a0, 260($v0)
686li      $a0, 4096
687move    $v0, $gp
688sw      $a0, 264($v0)
689li      $a0, 4096
690move    $v0, $gp
691sw      $a0, 268($v0)
692li      $a0, 4096
693move    $v0, $gp
694sw      $a0, 272($v0)
695li      $a0, 4096
696move    $v0, $gp
697sw      $a0, 276($v0)
698li      $a0, 4096
699move    $v0, $gp
700sw      $a0, 280($v0)
701li      $a0, 4096
702move    $v0, $gp
703sw      $a0, 284($v0)
704c27:
705move    $a0, $gp
706addi    $a0, $a0, 64
707move    $a1, $gp
708move    $a2, $sp
709li      $a3, 16
710la      $v0, fir4280
711jalr    $v0
712c26:
713lw      $ra, 64($sp)
714addi    $sp, $sp, 68
715jr      $ra
716# end _main
Note: See TracBrowser for help on using the repository browser.