Daily bump.
[official-gcc.git] / libgcc / config / sh / lib1funcs-4-300.S
blob8fc30ad1b93d679bc070db5e6188facd59c5a9b0
1 /* Copyright (C) 2004-2024 Free Software Foundation, Inc.
3 This file is free software; you can redistribute it and/or modify it
4 under the terms of the GNU General Public License as published by the
5 Free Software Foundation; either version 3, or (at your option) any
6 later version.
8 This file is distributed in the hope that it will be useful, but
9 WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 General Public License for more details.
13 Under Section 7 of GPL version 3, you are granted additional
14 permissions described in the GCC Runtime Library Exception, version
15 3.1, as published by the Free Software Foundation.
17 You should have received a copy of the GNU General Public License and
18 a copy of the GCC Runtime Library Exception along with this program;
19 see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
20 <http://www.gnu.org/licenses/>.  */
23 /* libgcc routines for the STMicroelectronics ST40-300 CPU.
24    Contributed by J"orn Rennecke joern.rennecke@st.com.  */
26 #include "lib1funcs.h"
28 #ifdef L_div_table
29 #if defined (__SH3__) || defined (__SH3E__) || defined (__SH4__) || defined (__SH4_SINGLE__) || defined (__SH4_SINGLE_ONLY__) || defined (__SH4_NOFPU__)
30 /* This code used shld, thus is not suitable for SH1 / SH2.  */
32 /* Signed / unsigned division without use of FPU, optimized for SH4-300.
33    Uses a lookup table for divisors in the range -128 .. +127, and
34    div1 with case distinction for larger divisors in three more ranges.
35    The code is lumped together with the table to allow the use of mova.  */
36 #ifdef __LITTLE_ENDIAN__
37 #define L_LSB 0
38 #define L_LSWMSB 1
39 #define L_MSWLSB 2
40 #else
41 #define L_LSB 3
42 #define L_LSWMSB 2
43 #define L_MSWLSB 1
44 #endif
46         .global GLOBAL(udivsi3_i4i)
47         .global GLOBAL(sdivsi3_i4i)
48         FUNC(GLOBAL(udivsi3_i4i))
49         FUNC(GLOBAL(sdivsi3_i4i))
51         .balign 4
52 LOCAL(div_ge8m): ! 10 cycles up to here
53         rotcr r1 ! signed shift must use original sign from r4
54         div0s r5,r4
55         mov #24,r7
56         shld r7,r6
57         shad r0,r1
58         rotcl r6
59         div1 r5,r1
60         swap.w r5,r0 ! detect -0x80000000 : 0x800000
61         rotcl r6
62         swap.w r4,r7
63         div1 r5,r1
64         swap.b r7,r7
65         rotcl r6
66         or r7,r0
67         div1 r5,r1
68         swap.w r0,r7
69         rotcl r6
70         or r7,r0
71         div1 r5,r1
72         add #-0x80,r0
73         rotcl r6
74         extu.w r0,r0
75         div1 r5,r1
76         neg r0,r0
77         rotcl r6
78         swap.w r0,r0
79         div1 r5,r1
80         mov.l @r15+,r7
81         and r6,r0
82         rotcl r6
83         div1 r5,r1
84         shll2 r0
85         rotcl r6
86         exts.b r0,r0
87         div1 r5,r1
88         swap.w r0,r0
89         exts.w r0,r1
90         exts.b r6,r0
91         mov.l @r15+,r6
92         rotcl r0
93         rts
94         sub r1,r0
95         ! 31 cycles up to here
97         .balign 4
98 LOCAL(udiv_ge64k): ! 3 cycles up to here
99         mov r4,r0
100         shlr8 r0
101         div0u
102         cmp/hi r0,r5
103         bt LOCAL(udiv_r8)
104         mov.l r5,@-r15
105         shll8 r5
106         ! 7 cycles up to here
107         .rept 8
108         div1 r5,r0
109         .endr
110         extu.b r4,r1 ! 15 cycles up to here
111         extu.b r0,r6
112         xor r1,r0
113         xor r6,r0
114         swap.b r6,r6
115         .rept 8
116         div1 r5,r0
117         .endr ! 25 cycles up to here
118         extu.b r0,r0
119         mov.l @r15+,r5
120         or r6,r0
121         mov.l @r15+,r6
122         rts
123         rotcl r0 ! 28 cycles up to here
125         .balign 4
126 LOCAL(udiv_r8): ! 6 cycles up to here
127         mov.l r4,@-r15
128         shll16 r4
129         shll8 r4
130         !
131         shll r4
132         mov r0,r1
133         div1 r5,r1
134         mov r4,r0
135         rotcl r0
136         mov.l @r15+,r4
137         div1 r5,r1
138         ! 12 cycles up to here
139         .rept 6
140         rotcl r0; div1 r5,r1
141         .endr
142         mov.l @r15+,r6 ! 24 cycles up to here
143         rts
144         rotcl r0
146         .balign 4
147 LOCAL(div_ge32k): ! 6 cycles up to here
148         mov.l r7,@-r15
149         swap.w r5,r6
150         exts.b r6,r7
151         exts.w r6,r6
152         cmp/eq r6,r7
153         extu.b r1,r6
154         bf/s LOCAL(div_ge8m)
155         cmp/hi r1,r4 ! copy sign bit of r4 into T
156         rotcr r1 ! signed shift must use original sign from r4
157         div0s r5,r4
158         shad r0,r1
159         shll8 r5
160         div1 r5,r1
161         mov r5,r7 ! detect r4 == 0x80000000 && r5 == 0x8000(00)
162         div1 r5,r1
163         shlr8 r7
164         div1 r5,r1
165         swap.w r4,r0
166         div1 r5,r1
167         swap.b r0,r0
168         div1 r5,r1
169         or r0,r7
170         div1 r5,r1
171         add #-80,r7
172         div1 r5,r1
173         swap.w r7,r0
174         div1 r5,r1
175         or r0,r7
176         extu.b r1,r0
177         xor r6,r1
178         xor r0,r1
179         exts.b r0,r0
180         div1 r5,r1
181         extu.w r7,r7
182         div1 r5,r1
183         neg r7,r7 ! upper 16 bit of r7 == 0 if r4 == 0x80000000 && r5 == 0x8000
184         div1 r5,r1
185         and r0,r7
186         div1 r5,r1
187         swap.w r7,r7 ! 26 cycles up to here.
188         div1 r5,r1
189         shll8 r0
190         div1 r5,r1
191         exts.w r7,r7
192         div1 r5,r1
193         add r0,r0
194         div1 r5,r1
195         sub r7,r0
196         extu.b r1,r1
197         mov.l @r15+,r7
198         rotcl r1
199         mov.l @r15+,r6
200         add r1,r0
201         mov #-8,r1
202         rts
203         shad r1,r5 ! 34 cycles up to here
205         .balign 4
206 GLOBAL(udivsi3_i4i):
207         mov.l r6,@-r15
208         extu.w r5,r6
209         cmp/eq r5,r6
210         mov #0x7f,r0
211         bf LOCAL(udiv_ge64k)
212         cmp/hi r0,r5
213         bf LOCAL(udiv_le128)
214         mov r4,r1
215         shlr8 r1
216         div0u
217         shlr r1
218         shll16 r6
219         div1 r6,r1
220         extu.b r4,r0 ! 7 cycles up to here
221         .rept 8
222         div1 r6,r1
223         .endr     ! 15 cycles up to here
224         xor r1,r0 ! xor dividend with result lsb
225         .rept 6
226         div1 r6,r1
227         .endr
228         mov.l r7,@-r15 ! 21 cycles up to here
229         div1 r6,r1
230         extu.b r0,r7
231         div1 r6,r1
232         shll8 r7
233         extu.w r1,r0
234         xor r7,r1 ! replace lsb of result with lsb of dividend
235         div1 r6,r1
236         mov #0,r7
237         div1 r6,r1
238         !
239         div1 r6,r1
240         bra LOCAL(div_end)
241         div1 r6,r1 ! 28 cycles up to here
243         /* This is link-compatible with a GLOBAL(sdivsi3) call,
244            but we effectively clobber only r1, macl and mach  */
245         /* Because negative quotients are calculated as one's complements,
246            -0x80000000 divided by the smallest positive number of a number
247            range (0x80, 0x8000, 0x800000) causes saturation in the one's
248            complement representation, and we have to suppress the
249            one's -> two's complement adjustment.  Since positive numbers
250            don't get such an adjustment, it's OK to also compute one's -> two's
251            complement adjustment suppression for a dividend of 0.  */
252         .balign 4
253 GLOBAL(sdivsi3_i4i):
254         mov.l r6,@-r15
255         exts.b r5,r6
256         cmp/eq r5,r6
257         mov #-1,r1
258         bt/s LOCAL(div_le128)
259         cmp/pz r4
260         addc r4,r1
261         exts.w r5,r6
262         cmp/eq r5,r6
263         mov #-7,r0
264         bf/s LOCAL(div_ge32k)
265         cmp/hi r1,r4 ! copy sign bit of r4 into T
266         rotcr r1
267         shll16 r6  ! 7 cycles up to here
268         shad r0,r1
269         div0s r5,r4
270         div1 r6,r1
271         mov.l r7,@-r15
272         div1 r6,r1
273         mov r4,r0 ! re-compute adjusted dividend
274         div1 r6,r1
275         mov #-31,r7
276         div1 r6,r1
277         shad r7,r0
278         div1 r6,r1
279         add r4,r0 ! adjusted dividend
280         div1 r6,r1
281         mov.l r8,@-r15
282         div1 r6,r1
283         swap.w r4,r8 ! detect special case r4 = 0x80000000, r5 = 0x80
284         div1 r6,r1
285         swap.b r8,r8
286         xor r1,r0 ! xor dividend with result lsb
287         div1 r6,r1
288         div1 r6,r1
289         or r5,r8
290         div1 r6,r1
291         add #-0x80,r8 ! r8 is 0 iff there is a match
292         div1 r6,r1
293         swap.w r8,r7 ! or upper 16 bits...
294         div1 r6,r1
295         or r7,r8 !...into lower 16 bits
296         div1 r6,r1
297         extu.w r8,r8
298         div1 r6,r1
299         extu.b r0,r7
300         div1 r6,r1
301         shll8 r7
302         exts.w r1,r0
303         xor r7,r1 ! replace lsb of result with lsb of dividend
304         div1 r6,r1
305         neg r8,r8 ! upper 16 bits of r8 are now 0xffff iff we want end adjm.
306         div1 r6,r1
307         and r0,r8
308         div1 r6,r1
309         swap.w r8,r7
310         div1 r6,r1
311         mov.l @r15+,r8 ! 58 insns, 29 cycles up to here
312 LOCAL(div_end):
313         div1 r6,r1
314         shll8 r0
315         div1 r6,r1
316         exts.w r7,r7
317         div1 r6,r1
318         add r0,r0
319         div1 r6,r1
320         sub r7,r0
321         extu.b r1,r1
322         mov.l @r15+,r7
323         rotcl r1
324         mov.l @r15+,r6
325         rts
326         add r1,r0
328         .balign 4
329 LOCAL(udiv_le128): ! 4 cycles up to here (or 7 for mispredict)
330         mova LOCAL(div_table_inv),r0
331         shll2 r6
332         mov.l @(r0,r6),r1
333         mova LOCAL(div_table_clz),r0
334         lds r4,mach
335         !
336         !
337         !
338         tst r1,r1
339         !
340         bt 0f
341         dmulu.l r1,r4
342 0:      mov.b @(r0,r5),r1
343         clrt
344         !
345         !
346         sts mach,r0
347         addc r4,r0
348         rotcr r0
349         mov.l @r15+,r6
350         rts
351         shld r1,r0
353         .balign 4
354 LOCAL(div_le128): ! 3 cycles up to here (or 6 for mispredict)
355         mova LOCAL(div_table_inv),r0
356         shll2 r6
357         mov.l @(r0,r6),r1
358         mova LOCAL(div_table_clz),r0
359         neg r4,r6
360         bf 0f
361         mov r4,r6
362 0:      lds r6,mach
363         tst r1,r1
364         bt 0f
365         dmulu.l r1,r6
366 0:      div0s r4,r5
367         mov.b @(r0,r5),r1
368         bt/s LOCAL(le128_neg)
369         clrt
370         !
371         sts mach,r0
372         addc r6,r0
373         rotcr r0
374         mov.l @r15+,r6
375         rts
376         shld r1,r0
378 /* Could trap divide by zero for the cost of one cycle more mispredict penalty:
380         dmulu.l r1,r6
381 0:      div0s r4,r5
382         bt/s LOCAL(le128_neg)
383         tst r5,r5
384         bt LOCAL(div_by_zero)
385         mov.b @(r0,r5),r1
386         sts mach,r0
387         addc r6,r0
389 LOCAL(div_by_zero):
390         trapa #
391         .balign 4
392 LOCAL(le128_neg):
393         bt LOCAL(div_by_zero)
394         mov.b @(r0,r5),r1
395         sts mach,r0
396         addc r6,r0
397 ...  */
399         .balign 4
400 LOCAL(le128_neg):
401         sts mach,r0
402         addc r6,r0
403         rotcr r0
404         mov.l @r15+,r6
405         shad r1,r0
406         rts
407         neg r0,r0
408         ENDFUNC(GLOBAL(udivsi3_i4i))
409         ENDFUNC(GLOBAL(sdivsi3_i4i))
411 /* This table has been generated by divtab-sh4.c.  */
412         .balign 4
413         .byte   -7
414         .byte   -6
415         .byte   -6
416         .byte   -6
417         .byte   -6
418         .byte   -6
419         .byte   -6
420         .byte   -6
421         .byte   -6
422         .byte   -6
423         .byte   -6
424         .byte   -6
425         .byte   -6
426         .byte   -6
427         .byte   -6
428         .byte   -6
429         .byte   -6
430         .byte   -6
431         .byte   -6
432         .byte   -6
433         .byte   -6
434         .byte   -6
435         .byte   -6
436         .byte   -6
437         .byte   -6
438         .byte   -6
439         .byte   -6
440         .byte   -6
441         .byte   -6
442         .byte   -6
443         .byte   -6
444         .byte   -6
445         .byte   -6
446         .byte   -6
447         .byte   -6
448         .byte   -6
449         .byte   -6
450         .byte   -6
451         .byte   -6
452         .byte   -6
453         .byte   -6
454         .byte   -6
455         .byte   -6
456         .byte   -6
457         .byte   -6
458         .byte   -6
459         .byte   -6
460         .byte   -6
461         .byte   -6
462         .byte   -6
463         .byte   -6
464         .byte   -6
465         .byte   -6
466         .byte   -6
467         .byte   -6
468         .byte   -6
469         .byte   -6
470         .byte   -6
471         .byte   -6
472         .byte   -6
473         .byte   -6
474         .byte   -6
475         .byte   -6
476         .byte   -6
477         .byte   -6
478         .byte   -5
479         .byte   -5
480         .byte   -5
481         .byte   -5
482         .byte   -5
483         .byte   -5
484         .byte   -5
485         .byte   -5
486         .byte   -5
487         .byte   -5
488         .byte   -5
489         .byte   -5
490         .byte   -5
491         .byte   -5
492         .byte   -5
493         .byte   -5
494         .byte   -5
495         .byte   -5
496         .byte   -5
497         .byte   -5
498         .byte   -5
499         .byte   -5
500         .byte   -5
501         .byte   -5
502         .byte   -5
503         .byte   -5
504         .byte   -5
505         .byte   -5
506         .byte   -5
507         .byte   -5
508         .byte   -5
509         .byte   -5
510         .byte   -4
511         .byte   -4
512         .byte   -4
513         .byte   -4
514         .byte   -4
515         .byte   -4
516         .byte   -4
517         .byte   -4
518         .byte   -4
519         .byte   -4
520         .byte   -4
521         .byte   -4
522         .byte   -4
523         .byte   -4
524         .byte   -4
525         .byte   -4
526         .byte   -3
527         .byte   -3
528         .byte   -3
529         .byte   -3
530         .byte   -3
531         .byte   -3
532         .byte   -3
533         .byte   -3
534         .byte   -2
535         .byte   -2
536         .byte   -2
537         .byte   -2
538         .byte   -1
539         .byte   -1
540         .byte   0
541 LOCAL(div_table_clz):
542         .byte   0
543         .byte   0
544         .byte   -1
545         .byte   -1
546         .byte   -2
547         .byte   -2
548         .byte   -2
549         .byte   -2
550         .byte   -3
551         .byte   -3
552         .byte   -3
553         .byte   -3
554         .byte   -3
555         .byte   -3
556         .byte   -3
557         .byte   -3
558         .byte   -4
559         .byte   -4
560         .byte   -4
561         .byte   -4
562         .byte   -4
563         .byte   -4
564         .byte   -4
565         .byte   -4
566         .byte   -4
567         .byte   -4
568         .byte   -4
569         .byte   -4
570         .byte   -4
571         .byte   -4
572         .byte   -4
573         .byte   -4
574         .byte   -5
575         .byte   -5
576         .byte   -5
577         .byte   -5
578         .byte   -5
579         .byte   -5
580         .byte   -5
581         .byte   -5
582         .byte   -5
583         .byte   -5
584         .byte   -5
585         .byte   -5
586         .byte   -5
587         .byte   -5
588         .byte   -5
589         .byte   -5
590         .byte   -5
591         .byte   -5
592         .byte   -5
593         .byte   -5
594         .byte   -5
595         .byte   -5
596         .byte   -5
597         .byte   -5
598         .byte   -5
599         .byte   -5
600         .byte   -5
601         .byte   -5
602         .byte   -5
603         .byte   -5
604         .byte   -5
605         .byte   -5
606         .byte   -6
607         .byte   -6
608         .byte   -6
609         .byte   -6
610         .byte   -6
611         .byte   -6
612         .byte   -6
613         .byte   -6
614         .byte   -6
615         .byte   -6
616         .byte   -6
617         .byte   -6
618         .byte   -6
619         .byte   -6
620         .byte   -6
621         .byte   -6
622         .byte   -6
623         .byte   -6
624         .byte   -6
625         .byte   -6
626         .byte   -6
627         .byte   -6
628         .byte   -6
629         .byte   -6
630         .byte   -6
631         .byte   -6
632         .byte   -6
633         .byte   -6
634         .byte   -6
635         .byte   -6
636         .byte   -6
637         .byte   -6
638         .byte   -6
639         .byte   -6
640         .byte   -6
641         .byte   -6
642         .byte   -6
643         .byte   -6
644         .byte   -6
645         .byte   -6
646         .byte   -6
647         .byte   -6
648         .byte   -6
649         .byte   -6
650         .byte   -6
651         .byte   -6
652         .byte   -6
653         .byte   -6
654         .byte   -6
655         .byte   -6
656         .byte   -6
657         .byte   -6
658         .byte   -6
659         .byte   -6
660         .byte   -6
661         .byte   -6
662         .byte   -6
663         .byte   -6
664         .byte   -6
665         .byte   -6
666         .byte   -6
667         .byte   -6
668         .byte   -6
669         .byte   -6
670 /* 1/-128 .. 1/127, normalized.  There is an implicit leading 1 in bit 32,
671    or in bit 33 for powers of two.  */
672         .balign 4
673         .long   0x0
674         .long   0x2040811
675         .long   0x4104105
676         .long   0x624DD30
677         .long   0x8421085
678         .long   0xA6810A7
679         .long   0xC9714FC
680         .long   0xECF56BF
681         .long   0x11111112
682         .long   0x135C8114
683         .long   0x15B1E5F8
684         .long   0x18118119
685         .long   0x1A7B9612
686         .long   0x1CF06ADB
687         .long   0x1F7047DD
688         .long   0x21FB7813
689         .long   0x24924925
690         .long   0x27350B89
691         .long   0x29E4129F
692         .long   0x2C9FB4D9
693         .long   0x2F684BDB
694         .long   0x323E34A3
695         .long   0x3521CFB3
696         .long   0x38138139
697         .long   0x3B13B13C
698         .long   0x3E22CBCF
699         .long   0x41414142
700         .long   0x446F8657
701         .long   0x47AE147B
702         .long   0x4AFD6A06
703         .long   0x4E5E0A73
704         .long   0x51D07EAF
705         .long   0x55555556
706         .long   0x58ED2309
707         .long   0x5C9882BA
708         .long   0x60581606
709         .long   0x642C8591
710         .long   0x68168169
711         .long   0x6C16C16D
712         .long   0x702E05C1
713         .long   0x745D1746
714         .long   0x78A4C818
715         .long   0x7D05F418
716         .long   0x81818182
717         .long   0x86186187
718         .long   0x8ACB90F7
719         .long   0x8F9C18FA
720         .long   0x948B0FCE
721         .long   0x9999999A
722         .long   0x9EC8E952
723         .long   0xA41A41A5
724         .long   0xA98EF607
725         .long   0xAF286BCB
726         .long   0xB4E81B4F
727         .long   0xBACF914D
728         .long   0xC0E07039
729         .long   0xC71C71C8
730         .long   0xCD856891
731         .long   0xD41D41D5
732         .long   0xDAE6076C
733         .long   0xE1E1E1E2
734         .long   0xE9131AC0
735         .long   0xF07C1F08
736         .long   0xF81F81F9
737         .long   0x0
738         .long   0x4104105
739         .long   0x8421085
740         .long   0xC9714FC
741         .long   0x11111112
742         .long   0x15B1E5F8
743         .long   0x1A7B9612
744         .long   0x1F7047DD
745         .long   0x24924925
746         .long   0x29E4129F
747         .long   0x2F684BDB
748         .long   0x3521CFB3
749         .long   0x3B13B13C
750         .long   0x41414142
751         .long   0x47AE147B
752         .long   0x4E5E0A73
753         .long   0x55555556
754         .long   0x5C9882BA
755         .long   0x642C8591
756         .long   0x6C16C16D
757         .long   0x745D1746
758         .long   0x7D05F418
759         .long   0x86186187
760         .long   0x8F9C18FA
761         .long   0x9999999A
762         .long   0xA41A41A5
763         .long   0xAF286BCB
764         .long   0xBACF914D
765         .long   0xC71C71C8
766         .long   0xD41D41D5
767         .long   0xE1E1E1E2
768         .long   0xF07C1F08
769         .long   0x0
770         .long   0x8421085
771         .long   0x11111112
772         .long   0x1A7B9612
773         .long   0x24924925
774         .long   0x2F684BDB
775         .long   0x3B13B13C
776         .long   0x47AE147B
777         .long   0x55555556
778         .long   0x642C8591
779         .long   0x745D1746
780         .long   0x86186187
781         .long   0x9999999A
782         .long   0xAF286BCB
783         .long   0xC71C71C8
784         .long   0xE1E1E1E2
785         .long   0x0
786         .long   0x11111112
787         .long   0x24924925
788         .long   0x3B13B13C
789         .long   0x55555556
790         .long   0x745D1746
791         .long   0x9999999A
792         .long   0xC71C71C8
793         .long   0x0
794         .long   0x24924925
795         .long   0x55555556
796         .long   0x9999999A
797         .long   0x0
798         .long   0x55555556
799         .long   0x0
800         .long   0x0
801 LOCAL(div_table_inv):
802         .long   0x0
803         .long   0x0
804         .long   0x0
805         .long   0x55555556
806         .long   0x0
807         .long   0x9999999A
808         .long   0x55555556
809         .long   0x24924925
810         .long   0x0
811         .long   0xC71C71C8
812         .long   0x9999999A
813         .long   0x745D1746
814         .long   0x55555556
815         .long   0x3B13B13C
816         .long   0x24924925
817         .long   0x11111112
818         .long   0x0
819         .long   0xE1E1E1E2
820         .long   0xC71C71C8
821         .long   0xAF286BCB
822         .long   0x9999999A
823         .long   0x86186187
824         .long   0x745D1746
825         .long   0x642C8591
826         .long   0x55555556
827         .long   0x47AE147B
828         .long   0x3B13B13C
829         .long   0x2F684BDB
830         .long   0x24924925
831         .long   0x1A7B9612
832         .long   0x11111112
833         .long   0x8421085
834         .long   0x0
835         .long   0xF07C1F08
836         .long   0xE1E1E1E2
837         .long   0xD41D41D5
838         .long   0xC71C71C8
839         .long   0xBACF914D
840         .long   0xAF286BCB
841         .long   0xA41A41A5
842         .long   0x9999999A
843         .long   0x8F9C18FA
844         .long   0x86186187
845         .long   0x7D05F418
846         .long   0x745D1746
847         .long   0x6C16C16D
848         .long   0x642C8591
849         .long   0x5C9882BA
850         .long   0x55555556
851         .long   0x4E5E0A73
852         .long   0x47AE147B
853         .long   0x41414142
854         .long   0x3B13B13C
855         .long   0x3521CFB3
856         .long   0x2F684BDB
857         .long   0x29E4129F
858         .long   0x24924925
859         .long   0x1F7047DD
860         .long   0x1A7B9612
861         .long   0x15B1E5F8
862         .long   0x11111112
863         .long   0xC9714FC
864         .long   0x8421085
865         .long   0x4104105
866         .long   0x0
867         .long   0xF81F81F9
868         .long   0xF07C1F08
869         .long   0xE9131AC0
870         .long   0xE1E1E1E2
871         .long   0xDAE6076C
872         .long   0xD41D41D5
873         .long   0xCD856891
874         .long   0xC71C71C8
875         .long   0xC0E07039
876         .long   0xBACF914D
877         .long   0xB4E81B4F
878         .long   0xAF286BCB
879         .long   0xA98EF607
880         .long   0xA41A41A5
881         .long   0x9EC8E952
882         .long   0x9999999A
883         .long   0x948B0FCE
884         .long   0x8F9C18FA
885         .long   0x8ACB90F7
886         .long   0x86186187
887         .long   0x81818182
888         .long   0x7D05F418
889         .long   0x78A4C818
890         .long   0x745D1746
891         .long   0x702E05C1
892         .long   0x6C16C16D
893         .long   0x68168169
894         .long   0x642C8591
895         .long   0x60581606
896         .long   0x5C9882BA
897         .long   0x58ED2309
898         .long   0x55555556
899         .long   0x51D07EAF
900         .long   0x4E5E0A73
901         .long   0x4AFD6A06
902         .long   0x47AE147B
903         .long   0x446F8657
904         .long   0x41414142
905         .long   0x3E22CBCF
906         .long   0x3B13B13C
907         .long   0x38138139
908         .long   0x3521CFB3
909         .long   0x323E34A3
910         .long   0x2F684BDB
911         .long   0x2C9FB4D9
912         .long   0x29E4129F
913         .long   0x27350B89
914         .long   0x24924925
915         .long   0x21FB7813
916         .long   0x1F7047DD
917         .long   0x1CF06ADB
918         .long   0x1A7B9612
919         .long   0x18118119
920         .long   0x15B1E5F8
921         .long   0x135C8114
922         .long   0x11111112
923         .long   0xECF56BF
924         .long   0xC9714FC
925         .long   0xA6810A7
926         .long   0x8421085
927         .long   0x624DD30
928         .long   0x4104105
929         .long   0x2040811
930         /* maximum error: 0.987342 scaled: 0.921875*/
932 #endif /* SH3 / SH4 */
934 #endif /* L_div_table */