]> git.ipfire.org Git - thirdparty/gcc.git/blame - libgcc/config/sh/lib1funcs-4-300.S
Update copyright years.
[thirdparty/gcc.git] / libgcc / config / sh / lib1funcs-4-300.S
CommitLineData
a5544970 1/* Copyright (C) 2004-2019 Free Software Foundation, Inc.
78d310c2
R
2
3This file is free software; you can redistribute it and/or modify it
4under the terms of the GNU General Public License as published by the
748086b7 5Free Software Foundation; either version 3, or (at your option) any
78d310c2
R
6later version.
7
78d310c2
R
8This file is distributed in the hope that it will be useful, but
9WITHOUT ANY WARRANTY; without even the implied warranty of
10MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11General Public License for more details.
12
748086b7
JJ
13Under Section 7 of GPL version 3, you are granted additional
14permissions described in the GCC Runtime Library Exception, version
153.1, as published by the Free Software Foundation.
16
17You should have received a copy of the GNU General Public License and
18a copy of the GCC Runtime Library Exception along with this program;
19see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
20<http://www.gnu.org/licenses/>. */
21
78d310c2
R
22
23/* libgcc routines for the STMicroelectronics ST40-300 CPU.
24 Contributed by J"orn Rennecke joern.rennecke@st.com. */
25
26#include "lib1funcs.h"
27
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. */
31
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
45
46 .global GLOBAL(udivsi3_i4i)
47 .global GLOBAL(sdivsi3_i4i)
48 FUNC(GLOBAL(udivsi3_i4i))
49 FUNC(GLOBAL(sdivsi3_i4i))
50
51 .balign 4
52LOCAL(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
96
97 .balign 4
98LOCAL(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
124
125 .balign 4
126LOCAL(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
145
146 .balign 4
147LOCAL(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
204
205 .balign 4
206GLOBAL(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
242
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
253GLOBAL(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
312LOCAL(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
327
328 .balign 4
329LOCAL(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
3420: 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
352
353 .balign 4
354LOCAL(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
3620: lds r6,mach
363 tst r1,r1
364 bt 0f
365 dmulu.l r1,r6
3660: 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
377
378/* Could trap divide by zero for the cost of one cycle more mispredict penalty:
379...
380 dmulu.l r1,r6
3810: 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
388...
389LOCAL(div_by_zero):
390 trapa #
391 .balign 4
392LOCAL(le128_neg):
393 bt LOCAL(div_by_zero)
394 mov.b @(r0,r5),r1
395 sts mach,r0
396 addc r6,r0
397... */
398
399 .balign 4
400LOCAL(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))
410
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
541LOCAL(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
801LOCAL(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*/
931
932#endif /* SH3 / SH4 */
933
934#endif /* L_div_table */