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