OSDN Git Service

2008-11-09 Thomas Schwinge <tschwinge@gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / config / sh / lib1funcs-4-300.asm
1 /* Copyright (C) 2004, 2006 Free Software Foundation, Inc.
2
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 2, or (at your option) any
6 later version.
7
8 In addition to the permissions in the GNU General Public License, the
9 Free Software Foundation gives you unlimited permission to link the
10 compiled version of this file into combinations with other programs,
11 and to distribute those combinations without any restriction coming
12 from the use of this file.  (The General Public License restrictions
13 do apply in other respects; for example, they cover modification of
14 the file, and distribution when not linked into a combine
15 executable.)
16
17 This file is distributed in the hope that it will be useful, but
18 WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20 General Public License for more details.
21
22 You should have received a copy of the GNU General Public License
23 along with this program; see the file COPYING.  If not, write to
24 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
25 Boston, MA 02110-1301, USA.  */
26
27 /* libgcc routines for the STMicroelectronics ST40-300 CPU.
28    Contributed by J"orn Rennecke joern.rennecke@st.com.  */
29
30 #include "lib1funcs.h"
31
32 #if !__SHMEDIA__
33 #ifdef L_div_table
34 #if defined (__SH3__) || defined (__SH3E__) || defined (__SH4__) || defined (__SH4_SINGLE__) || defined (__SH4_SINGLE_ONLY__) || defined (__SH4_NOFPU__)
35 /* This code used shld, thus is not suitable for SH1 / SH2.  */
36
37 /* Signed / unsigned division without use of FPU, optimized for SH4-300.
38    Uses a lookup table for divisors in the range -128 .. +127, and
39    div1 with case distinction for larger divisors in three more ranges.
40    The code is lumped together with the table to allow the use of mova.  */
41 #ifdef __LITTLE_ENDIAN__
42 #define L_LSB 0
43 #define L_LSWMSB 1
44 #define L_MSWLSB 2
45 #else
46 #define L_LSB 3
47 #define L_LSWMSB 2
48 #define L_MSWLSB 1
49 #endif
50
51         .global GLOBAL(udivsi3_i4i)
52         .global GLOBAL(sdivsi3_i4i)
53         FUNC(GLOBAL(udivsi3_i4i))
54         FUNC(GLOBAL(sdivsi3_i4i))
55
56         .balign 4
57 LOCAL(div_ge8m): ! 10 cycles up to here
58         rotcr r1 ! signed shift must use original sign from r4
59         div0s r5,r4
60         mov #24,r7
61         shld r7,r6
62         shad r0,r1
63         rotcl r6
64         div1 r5,r1
65         swap.w r5,r0 ! detect -0x80000000 : 0x800000
66         rotcl r6
67         swap.w r4,r7
68         div1 r5,r1
69         swap.b r7,r7
70         rotcl r6
71         or r7,r0
72         div1 r5,r1
73         swap.w r0,r7
74         rotcl r6
75         or r7,r0
76         div1 r5,r1
77         add #-0x80,r0
78         rotcl r6
79         extu.w r0,r0
80         div1 r5,r1
81         neg r0,r0
82         rotcl r6
83         swap.w r0,r0
84         div1 r5,r1
85         mov.l @r15+,r7
86         and r6,r0
87         rotcl r6
88         div1 r5,r1
89         shll2 r0
90         rotcl r6
91         exts.b r0,r0
92         div1 r5,r1
93         swap.w r0,r0
94         exts.w r0,r1
95         exts.b r6,r0
96         mov.l @r15+,r6
97         rotcl r0
98         rts
99         sub r1,r0
100         ! 31 cycles up to here
101
102         .balign 4
103 LOCAL(udiv_ge64k): ! 3 cycles up to here
104         mov r4,r0
105         shlr8 r0
106         div0u
107         cmp/hi r0,r5
108         bt LOCAL(udiv_r8)
109         mov.l r5,@-r15
110         shll8 r5
111         ! 7 cycles up to here
112         .rept 8
113         div1 r5,r0
114         .endr
115         extu.b r4,r1 ! 15 cycles up to here
116         extu.b r0,r6
117         xor r1,r0
118         xor r6,r0
119         swap.b r6,r6
120         .rept 8
121         div1 r5,r0
122         .endr ! 25 cycles up to here
123         extu.b r0,r0
124         mov.l @r15+,r5
125         or r6,r0
126         mov.l @r15+,r6
127         rts
128         rotcl r0 ! 28 cycles up to here
129
130         .balign 4
131 LOCAL(udiv_r8): ! 6 cycles up to here
132         mov.l r4,@-r15
133         shll16 r4
134         shll8 r4
135         !
136         shll r4
137         mov r0,r1
138         div1 r5,r1
139         mov r4,r0
140         rotcl r0
141         mov.l @r15+,r4
142         div1 r5,r1
143         ! 12 cycles up to here
144         .rept 6
145         rotcl r0; div1 r5,r1
146         .endr
147         mov.l @r15+,r6 ! 24 cycles up to here
148         rts
149         rotcl r0
150
151         .balign 4
152 LOCAL(div_ge32k): ! 6 cycles up to here
153         mov.l r7,@-r15
154         swap.w r5,r6
155         exts.b r6,r7
156         exts.w r6,r6
157         cmp/eq r6,r7
158         extu.b r1,r6
159         bf/s LOCAL(div_ge8m)
160         cmp/hi r1,r4 ! copy sign bit of r4 into T
161         rotcr r1 ! signed shift must use original sign from r4
162         div0s r5,r4
163         shad r0,r1
164         shll8 r5
165         div1 r5,r1
166         mov r5,r7 ! detect r4 == 0x80000000 && r5 == 0x8000(00)
167         div1 r5,r1
168         shlr8 r7
169         div1 r5,r1
170         swap.w r4,r0
171         div1 r5,r1
172         swap.b r0,r0
173         div1 r5,r1
174         or r0,r7
175         div1 r5,r1
176         add #-80,r7
177         div1 r5,r1
178         swap.w r7,r0
179         div1 r5,r1
180         or r0,r7
181         extu.b r1,r0
182         xor r6,r1
183         xor r0,r1
184         exts.b r0,r0
185         div1 r5,r1
186         extu.w r7,r7
187         div1 r5,r1
188         neg r7,r7 ! upper 16 bit of r7 == 0 if r4 == 0x80000000 && r5 == 0x8000
189         div1 r5,r1
190         and r0,r7
191         div1 r5,r1
192         swap.w r7,r7 ! 26 cycles up to here.
193         div1 r5,r1
194         shll8 r0
195         div1 r5,r1
196         exts.w r7,r7
197         div1 r5,r1
198         add r0,r0
199         div1 r5,r1
200         sub r7,r0
201         extu.b r1,r1
202         mov.l @r15+,r7
203         rotcl r1
204         mov.l @r15+,r6
205         add r1,r0
206         mov #-8,r1
207         rts
208         shad r1,r5 ! 34 cycles up to here
209
210         .balign 4
211 GLOBAL(udivsi3_i4i):
212         mov.l r6,@-r15
213         extu.w r5,r6
214         cmp/eq r5,r6
215         mov #0x7f,r0
216         bf LOCAL(udiv_ge64k)
217         cmp/hi r0,r5
218         bf LOCAL(udiv_le128)
219         mov r4,r1
220         shlr8 r1
221         div0u
222         shlr r1
223         shll16 r6
224         div1 r6,r1
225         extu.b r4,r0 ! 7 cycles up to here
226         .rept 8
227         div1 r6,r1
228         .endr     ! 15 cycles up to here
229         xor r1,r0 ! xor dividend with result lsb
230         .rept 6
231         div1 r6,r1
232         .endr
233         mov.l r7,@-r15 ! 21 cycles up to here
234         div1 r6,r1
235         extu.b r0,r7
236         div1 r6,r1
237         shll8 r7
238         extu.w r1,r0
239         xor r7,r1 ! replace lsb of result with lsb of dividend
240         div1 r6,r1
241         mov #0,r7
242         div1 r6,r1
243         !
244         div1 r6,r1
245         bra LOCAL(div_end)
246         div1 r6,r1 ! 28 cycles up to here
247
248         /* This is link-compatible with a GLOBAL(sdivsi3) call,
249            but we effectively clobber only r1, macl and mach  */
250         /* Because negative quotients are calculated as one's complements,
251            -0x80000000 divided by the smallest positive number of a number
252            range (0x80, 0x8000, 0x800000) causes saturation in the one's
253            complement representation, and we have to suppress the
254            one's -> two's complement adjustment.  Since positive numbers
255            don't get such an adjustment, it's OK to also compute one's -> two's
256            complement adjustment suppression for a dividend of 0.  */
257         .balign 4
258 GLOBAL(sdivsi3_i4i):
259         mov.l r6,@-r15
260         exts.b r5,r6
261         cmp/eq r5,r6
262         mov #-1,r1
263         bt/s LOCAL(div_le128)
264         cmp/pz r4
265         addc r4,r1
266         exts.w r5,r6
267         cmp/eq r5,r6
268         mov #-7,r0
269         bf/s LOCAL(div_ge32k)
270         cmp/hi r1,r4 ! copy sign bit of r4 into T
271         rotcr r1
272         shll16 r6  ! 7 cycles up to here
273         shad r0,r1
274         div0s r5,r4
275         div1 r6,r1
276         mov.l r7,@-r15
277         div1 r6,r1
278         mov r4,r0 ! re-compute adjusted dividend
279         div1 r6,r1
280         mov #-31,r7
281         div1 r6,r1
282         shad r7,r0
283         div1 r6,r1
284         add r4,r0 ! adjusted dividend
285         div1 r6,r1
286         mov.l r8,@-r15
287         div1 r6,r1
288         swap.w r4,r8 ! detect special case r4 = 0x80000000, r5 = 0x80
289         div1 r6,r1
290         swap.b r8,r8
291         xor r1,r0 ! xor dividend with result lsb
292         div1 r6,r1
293         div1 r6,r1
294         or r5,r8
295         div1 r6,r1
296         add #-0x80,r8 ! r8 is 0 iff there is a match
297         div1 r6,r1
298         swap.w r8,r7 ! or upper 16 bits...
299         div1 r6,r1
300         or r7,r8 !...into lower 16 bits
301         div1 r6,r1
302         extu.w r8,r8
303         div1 r6,r1
304         extu.b r0,r7
305         div1 r6,r1
306         shll8 r7
307         exts.w r1,r0
308         xor r7,r1 ! replace lsb of result with lsb of dividend
309         div1 r6,r1
310         neg r8,r8 ! upper 16 bits of r8 are now 0xffff iff we want end adjm.
311         div1 r6,r1
312         and r0,r8
313         div1 r6,r1
314         swap.w r8,r7
315         div1 r6,r1
316         mov.l @r15+,r8 ! 58 insns, 29 cycles up to here
317 LOCAL(div_end):
318         div1 r6,r1
319         shll8 r0
320         div1 r6,r1
321         exts.w r7,r7
322         div1 r6,r1
323         add r0,r0
324         div1 r6,r1
325         sub r7,r0
326         extu.b r1,r1
327         mov.l @r15+,r7
328         rotcl r1
329         mov.l @r15+,r6
330         rts
331         add r1,r0
332
333         .balign 4
334 LOCAL(udiv_le128): ! 4 cycles up to here (or 7 for mispredict)
335         mova LOCAL(div_table_inv),r0
336         shll2 r6
337         mov.l @(r0,r6),r1
338         mova LOCAL(div_table_clz),r0
339         lds r4,mach
340         !
341         !
342         !
343         tst r1,r1
344         !
345         bt 0f
346         dmulu.l r1,r4
347 0:      mov.b @(r0,r5),r1
348         clrt
349         !
350         !
351         sts mach,r0
352         addc r4,r0
353         rotcr r0
354         mov.l @r15+,r6
355         rts
356         shld r1,r0
357
358         .balign 4
359 LOCAL(div_le128): ! 3 cycles up to here (or 6 for mispredict)
360         mova LOCAL(div_table_inv),r0
361         shll2 r6
362         mov.l @(r0,r6),r1
363         mova LOCAL(div_table_clz),r0
364         neg r4,r6
365         bf 0f
366         mov r4,r6
367 0:      lds r6,mach
368         tst r1,r1
369         bt 0f
370         dmulu.l r1,r6
371 0:      div0s r4,r5
372         mov.b @(r0,r5),r1
373         bt/s LOCAL(le128_neg)
374         clrt
375         !
376         sts mach,r0
377         addc r6,r0
378         rotcr r0
379         mov.l @r15+,r6
380         rts
381         shld r1,r0
382
383 /* Could trap divide by zero for the cost of one cycle more mispredict penalty:
384 ...
385         dmulu.l r1,r6
386 0:      div0s r4,r5
387         bt/s LOCAL(le128_neg)
388         tst r5,r5
389         bt LOCAL(div_by_zero)
390         mov.b @(r0,r5),r1
391         sts mach,r0
392         addc r6,r0
393 ...
394 LOCAL(div_by_zero):
395         trapa #
396         .balign 4
397 LOCAL(le128_neg):
398         bt LOCAL(div_by_zero)
399         mov.b @(r0,r5),r1
400         sts mach,r0
401         addc r6,r0
402 ...  */
403
404         .balign 4
405 LOCAL(le128_neg):
406         sts mach,r0
407         addc r6,r0
408         rotcr r0
409         mov.l @r15+,r6
410         shad r1,r0
411         rts
412         neg r0,r0
413         ENDFUNC(GLOBAL(udivsi3_i4i))
414         ENDFUNC(GLOBAL(sdivsi3_i4i))
415
416 /* This table has been generated by divtab-sh4.c.  */
417         .balign 4
418         .byte   -7
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   -6
479         .byte   -6
480         .byte   -6
481         .byte   -6
482         .byte   -6
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   -5
511         .byte   -5
512         .byte   -5
513         .byte   -5
514         .byte   -5
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   -4
527         .byte   -4
528         .byte   -4
529         .byte   -4
530         .byte   -4
531         .byte   -3
532         .byte   -3
533         .byte   -3
534         .byte   -3
535         .byte   -3
536         .byte   -3
537         .byte   -3
538         .byte   -3
539         .byte   -2
540         .byte   -2
541         .byte   -2
542         .byte   -2
543         .byte   -1
544         .byte   -1
545         .byte   0
546 LOCAL(div_table_clz):
547         .byte   0
548         .byte   0
549         .byte   -1
550         .byte   -1
551         .byte   -2
552         .byte   -2
553         .byte   -2
554         .byte   -2
555         .byte   -3
556         .byte   -3
557         .byte   -3
558         .byte   -3
559         .byte   -3
560         .byte   -3
561         .byte   -3
562         .byte   -3
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   -4
575         .byte   -4
576         .byte   -4
577         .byte   -4
578         .byte   -4
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   -5
607         .byte   -5
608         .byte   -5
609         .byte   -5
610         .byte   -5
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         .byte   -6
671         .byte   -6
672         .byte   -6
673         .byte   -6
674         .byte   -6
675 /* 1/-128 .. 1/127, normalized.  There is an implicit leading 1 in bit 32,
676    or in bit 33 for powers of two.  */
677         .balign 4
678         .long   0x0
679         .long   0x2040811
680         .long   0x4104105
681         .long   0x624DD30
682         .long   0x8421085
683         .long   0xA6810A7
684         .long   0xC9714FC
685         .long   0xECF56BF
686         .long   0x11111112
687         .long   0x135C8114
688         .long   0x15B1E5F8
689         .long   0x18118119
690         .long   0x1A7B9612
691         .long   0x1CF06ADB
692         .long   0x1F7047DD
693         .long   0x21FB7813
694         .long   0x24924925
695         .long   0x27350B89
696         .long   0x29E4129F
697         .long   0x2C9FB4D9
698         .long   0x2F684BDB
699         .long   0x323E34A3
700         .long   0x3521CFB3
701         .long   0x38138139
702         .long   0x3B13B13C
703         .long   0x3E22CBCF
704         .long   0x41414142
705         .long   0x446F8657
706         .long   0x47AE147B
707         .long   0x4AFD6A06
708         .long   0x4E5E0A73
709         .long   0x51D07EAF
710         .long   0x55555556
711         .long   0x58ED2309
712         .long   0x5C9882BA
713         .long   0x60581606
714         .long   0x642C8591
715         .long   0x68168169
716         .long   0x6C16C16D
717         .long   0x702E05C1
718         .long   0x745D1746
719         .long   0x78A4C818
720         .long   0x7D05F418
721         .long   0x81818182
722         .long   0x86186187
723         .long   0x8ACB90F7
724         .long   0x8F9C18FA
725         .long   0x948B0FCE
726         .long   0x9999999A
727         .long   0x9EC8E952
728         .long   0xA41A41A5
729         .long   0xA98EF607
730         .long   0xAF286BCB
731         .long   0xB4E81B4F
732         .long   0xBACF914D
733         .long   0xC0E07039
734         .long   0xC71C71C8
735         .long   0xCD856891
736         .long   0xD41D41D5
737         .long   0xDAE6076C
738         .long   0xE1E1E1E2
739         .long   0xE9131AC0
740         .long   0xF07C1F08
741         .long   0xF81F81F9
742         .long   0x0
743         .long   0x4104105
744         .long   0x8421085
745         .long   0xC9714FC
746         .long   0x11111112
747         .long   0x15B1E5F8
748         .long   0x1A7B9612
749         .long   0x1F7047DD
750         .long   0x24924925
751         .long   0x29E4129F
752         .long   0x2F684BDB
753         .long   0x3521CFB3
754         .long   0x3B13B13C
755         .long   0x41414142
756         .long   0x47AE147B
757         .long   0x4E5E0A73
758         .long   0x55555556
759         .long   0x5C9882BA
760         .long   0x642C8591
761         .long   0x6C16C16D
762         .long   0x745D1746
763         .long   0x7D05F418
764         .long   0x86186187
765         .long   0x8F9C18FA
766         .long   0x9999999A
767         .long   0xA41A41A5
768         .long   0xAF286BCB
769         .long   0xBACF914D
770         .long   0xC71C71C8
771         .long   0xD41D41D5
772         .long   0xE1E1E1E2
773         .long   0xF07C1F08
774         .long   0x0
775         .long   0x8421085
776         .long   0x11111112
777         .long   0x1A7B9612
778         .long   0x24924925
779         .long   0x2F684BDB
780         .long   0x3B13B13C
781         .long   0x47AE147B
782         .long   0x55555556
783         .long   0x642C8591
784         .long   0x745D1746
785         .long   0x86186187
786         .long   0x9999999A
787         .long   0xAF286BCB
788         .long   0xC71C71C8
789         .long   0xE1E1E1E2
790         .long   0x0
791         .long   0x11111112
792         .long   0x24924925
793         .long   0x3B13B13C
794         .long   0x55555556
795         .long   0x745D1746
796         .long   0x9999999A
797         .long   0xC71C71C8
798         .long   0x0
799         .long   0x24924925
800         .long   0x55555556
801         .long   0x9999999A
802         .long   0x0
803         .long   0x55555556
804         .long   0x0
805         .long   0x0
806 LOCAL(div_table_inv):
807         .long   0x0
808         .long   0x0
809         .long   0x0
810         .long   0x55555556
811         .long   0x0
812         .long   0x9999999A
813         .long   0x55555556
814         .long   0x24924925
815         .long   0x0
816         .long   0xC71C71C8
817         .long   0x9999999A
818         .long   0x745D1746
819         .long   0x55555556
820         .long   0x3B13B13C
821         .long   0x24924925
822         .long   0x11111112
823         .long   0x0
824         .long   0xE1E1E1E2
825         .long   0xC71C71C8
826         .long   0xAF286BCB
827         .long   0x9999999A
828         .long   0x86186187
829         .long   0x745D1746
830         .long   0x642C8591
831         .long   0x55555556
832         .long   0x47AE147B
833         .long   0x3B13B13C
834         .long   0x2F684BDB
835         .long   0x24924925
836         .long   0x1A7B9612
837         .long   0x11111112
838         .long   0x8421085
839         .long   0x0
840         .long   0xF07C1F08
841         .long   0xE1E1E1E2
842         .long   0xD41D41D5
843         .long   0xC71C71C8
844         .long   0xBACF914D
845         .long   0xAF286BCB
846         .long   0xA41A41A5
847         .long   0x9999999A
848         .long   0x8F9C18FA
849         .long   0x86186187
850         .long   0x7D05F418
851         .long   0x745D1746
852         .long   0x6C16C16D
853         .long   0x642C8591
854         .long   0x5C9882BA
855         .long   0x55555556
856         .long   0x4E5E0A73
857         .long   0x47AE147B
858         .long   0x41414142
859         .long   0x3B13B13C
860         .long   0x3521CFB3
861         .long   0x2F684BDB
862         .long   0x29E4129F
863         .long   0x24924925
864         .long   0x1F7047DD
865         .long   0x1A7B9612
866         .long   0x15B1E5F8
867         .long   0x11111112
868         .long   0xC9714FC
869         .long   0x8421085
870         .long   0x4104105
871         .long   0x0
872         .long   0xF81F81F9
873         .long   0xF07C1F08
874         .long   0xE9131AC0
875         .long   0xE1E1E1E2
876         .long   0xDAE6076C
877         .long   0xD41D41D5
878         .long   0xCD856891
879         .long   0xC71C71C8
880         .long   0xC0E07039
881         .long   0xBACF914D
882         .long   0xB4E81B4F
883         .long   0xAF286BCB
884         .long   0xA98EF607
885         .long   0xA41A41A5
886         .long   0x9EC8E952
887         .long   0x9999999A
888         .long   0x948B0FCE
889         .long   0x8F9C18FA
890         .long   0x8ACB90F7
891         .long   0x86186187
892         .long   0x81818182
893         .long   0x7D05F418
894         .long   0x78A4C818
895         .long   0x745D1746
896         .long   0x702E05C1
897         .long   0x6C16C16D
898         .long   0x68168169
899         .long   0x642C8591
900         .long   0x60581606
901         .long   0x5C9882BA
902         .long   0x58ED2309
903         .long   0x55555556
904         .long   0x51D07EAF
905         .long   0x4E5E0A73
906         .long   0x4AFD6A06
907         .long   0x47AE147B
908         .long   0x446F8657
909         .long   0x41414142
910         .long   0x3E22CBCF
911         .long   0x3B13B13C
912         .long   0x38138139
913         .long   0x3521CFB3
914         .long   0x323E34A3
915         .long   0x2F684BDB
916         .long   0x2C9FB4D9
917         .long   0x29E4129F
918         .long   0x27350B89
919         .long   0x24924925
920         .long   0x21FB7813
921         .long   0x1F7047DD
922         .long   0x1CF06ADB
923         .long   0x1A7B9612
924         .long   0x18118119
925         .long   0x15B1E5F8
926         .long   0x135C8114
927         .long   0x11111112
928         .long   0xECF56BF
929         .long   0xC9714FC
930         .long   0xA6810A7
931         .long   0x8421085
932         .long   0x624DD30
933         .long   0x4104105
934         .long   0x2040811
935         /* maximum error: 0.987342 scaled: 0.921875*/
936
937 #endif /* SH3 / SH4 */
938
939 #endif /* L_div_table */
940 #endif /* !__SHMEDIA__ */