OSDN Git Service

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