]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/config/sh/lib1funcs-4-300.asm
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / config / sh / lib1funcs-4-300.asm
diff --git a/gcc/config/sh/lib1funcs-4-300.asm b/gcc/config/sh/lib1funcs-4-300.asm
new file mode 100644 (file)
index 0000000..b131877
--- /dev/null
@@ -0,0 +1,936 @@
+/* Copyright (C) 2004, 2006, 2009 Free Software Foundation, Inc.
+
+This file is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 3, or (at your option) any
+later version.
+
+This file is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
+
+
+/* libgcc routines for the STMicroelectronics ST40-300 CPU.
+   Contributed by J"orn Rennecke joern.rennecke@st.com.  */
+
+#include "lib1funcs.h"
+
+#if !__SHMEDIA__
+#ifdef L_div_table
+#if defined (__SH3__) || defined (__SH3E__) || defined (__SH4__) || defined (__SH4_SINGLE__) || defined (__SH4_SINGLE_ONLY__) || defined (__SH4_NOFPU__)
+/* This code used shld, thus is not suitable for SH1 / SH2.  */
+
+/* Signed / unsigned division without use of FPU, optimized for SH4-300.
+   Uses a lookup table for divisors in the range -128 .. +127, and
+   div1 with case distinction for larger divisors in three more ranges.
+   The code is lumped together with the table to allow the use of mova.  */
+#ifdef __LITTLE_ENDIAN__
+#define L_LSB 0
+#define L_LSWMSB 1
+#define L_MSWLSB 2
+#else
+#define L_LSB 3
+#define L_LSWMSB 2
+#define L_MSWLSB 1
+#endif
+
+       .global GLOBAL(udivsi3_i4i)
+       .global GLOBAL(sdivsi3_i4i)
+       FUNC(GLOBAL(udivsi3_i4i))
+       FUNC(GLOBAL(sdivsi3_i4i))
+
+       .balign 4
+LOCAL(div_ge8m): ! 10 cycles up to here
+       rotcr r1 ! signed shift must use original sign from r4
+       div0s r5,r4
+       mov #24,r7
+       shld r7,r6
+       shad r0,r1
+       rotcl r6
+       div1 r5,r1
+       swap.w r5,r0 ! detect -0x80000000 : 0x800000
+       rotcl r6
+       swap.w r4,r7
+       div1 r5,r1
+       swap.b r7,r7
+       rotcl r6
+       or r7,r0
+       div1 r5,r1
+       swap.w r0,r7
+       rotcl r6
+       or r7,r0
+       div1 r5,r1
+       add #-0x80,r0
+       rotcl r6
+       extu.w r0,r0
+       div1 r5,r1
+       neg r0,r0
+       rotcl r6
+       swap.w r0,r0
+       div1 r5,r1
+       mov.l @r15+,r7
+       and r6,r0
+       rotcl r6
+       div1 r5,r1
+       shll2 r0
+       rotcl r6
+       exts.b r0,r0
+       div1 r5,r1
+       swap.w r0,r0
+       exts.w r0,r1
+       exts.b r6,r0
+       mov.l @r15+,r6
+       rotcl r0
+       rts
+       sub r1,r0
+       ! 31 cycles up to here
+
+       .balign 4
+LOCAL(udiv_ge64k): ! 3 cycles up to here
+       mov r4,r0
+       shlr8 r0
+       div0u
+       cmp/hi r0,r5
+       bt LOCAL(udiv_r8)
+       mov.l r5,@-r15
+       shll8 r5
+       ! 7 cycles up to here
+       .rept 8
+       div1 r5,r0
+       .endr
+       extu.b r4,r1 ! 15 cycles up to here
+       extu.b r0,r6
+       xor r1,r0
+       xor r6,r0
+       swap.b r6,r6
+       .rept 8
+       div1 r5,r0
+       .endr ! 25 cycles up to here
+       extu.b r0,r0
+       mov.l @r15+,r5
+       or r6,r0
+       mov.l @r15+,r6
+       rts
+       rotcl r0 ! 28 cycles up to here
+
+       .balign 4
+LOCAL(udiv_r8): ! 6 cycles up to here
+       mov.l r4,@-r15
+       shll16 r4
+       shll8 r4
+       !
+       shll r4
+       mov r0,r1
+       div1 r5,r1
+       mov r4,r0
+       rotcl r0
+       mov.l @r15+,r4
+       div1 r5,r1
+       ! 12 cycles up to here
+       .rept 6
+       rotcl r0; div1 r5,r1
+       .endr
+       mov.l @r15+,r6 ! 24 cycles up to here
+       rts
+       rotcl r0
+
+       .balign 4
+LOCAL(div_ge32k): ! 6 cycles up to here
+       mov.l r7,@-r15
+       swap.w r5,r6
+       exts.b r6,r7
+       exts.w r6,r6
+       cmp/eq r6,r7
+       extu.b r1,r6
+       bf/s LOCAL(div_ge8m)
+       cmp/hi r1,r4 ! copy sign bit of r4 into T
+       rotcr r1 ! signed shift must use original sign from r4
+       div0s r5,r4
+       shad r0,r1
+       shll8 r5
+       div1 r5,r1
+       mov r5,r7 ! detect r4 == 0x80000000 && r5 == 0x8000(00)
+       div1 r5,r1
+       shlr8 r7
+       div1 r5,r1
+       swap.w r4,r0
+       div1 r5,r1
+       swap.b r0,r0
+       div1 r5,r1
+       or r0,r7
+       div1 r5,r1
+       add #-80,r7
+       div1 r5,r1
+       swap.w r7,r0
+       div1 r5,r1
+       or r0,r7
+       extu.b r1,r0
+       xor r6,r1
+       xor r0,r1
+       exts.b r0,r0
+       div1 r5,r1
+       extu.w r7,r7
+       div1 r5,r1
+       neg r7,r7 ! upper 16 bit of r7 == 0 if r4 == 0x80000000 && r5 == 0x8000
+       div1 r5,r1
+       and r0,r7
+       div1 r5,r1
+       swap.w r7,r7 ! 26 cycles up to here.
+       div1 r5,r1
+       shll8 r0
+       div1 r5,r1
+       exts.w r7,r7
+       div1 r5,r1
+       add r0,r0
+       div1 r5,r1
+       sub r7,r0
+       extu.b r1,r1
+       mov.l @r15+,r7
+       rotcl r1
+       mov.l @r15+,r6
+       add r1,r0
+       mov #-8,r1
+       rts
+       shad r1,r5 ! 34 cycles up to here
+
+       .balign 4
+GLOBAL(udivsi3_i4i):
+       mov.l r6,@-r15
+       extu.w r5,r6
+       cmp/eq r5,r6
+       mov #0x7f,r0
+       bf LOCAL(udiv_ge64k)
+       cmp/hi r0,r5
+       bf LOCAL(udiv_le128)
+       mov r4,r1
+       shlr8 r1
+       div0u
+       shlr r1
+       shll16 r6
+       div1 r6,r1
+       extu.b r4,r0 ! 7 cycles up to here
+       .rept 8
+       div1 r6,r1
+       .endr     ! 15 cycles up to here
+       xor r1,r0 ! xor dividend with result lsb
+       .rept 6
+       div1 r6,r1
+       .endr
+       mov.l r7,@-r15 ! 21 cycles up to here
+       div1 r6,r1
+       extu.b r0,r7
+       div1 r6,r1
+       shll8 r7
+       extu.w r1,r0
+       xor r7,r1 ! replace lsb of result with lsb of dividend
+       div1 r6,r1
+       mov #0,r7
+       div1 r6,r1
+       !
+       div1 r6,r1
+       bra LOCAL(div_end)
+       div1 r6,r1 ! 28 cycles up to here
+
+       /* This is link-compatible with a GLOBAL(sdivsi3) call,
+          but we effectively clobber only r1, macl and mach  */
+        /* Because negative quotients are calculated as one's complements,
+          -0x80000000 divided by the smallest positive number of a number
+          range (0x80, 0x8000, 0x800000) causes saturation in the one's
+           complement representation, and we have to suppress the
+          one's -> two's complement adjustment.  Since positive numbers
+          don't get such an adjustment, it's OK to also compute one's -> two's
+          complement adjustment suppression for a dividend of 0.  */
+       .balign 4
+GLOBAL(sdivsi3_i4i):
+       mov.l r6,@-r15
+       exts.b r5,r6
+       cmp/eq r5,r6
+       mov #-1,r1
+       bt/s LOCAL(div_le128)
+       cmp/pz r4
+       addc r4,r1
+       exts.w r5,r6
+       cmp/eq r5,r6
+       mov #-7,r0
+       bf/s LOCAL(div_ge32k)
+       cmp/hi r1,r4 ! copy sign bit of r4 into T
+       rotcr r1
+       shll16 r6  ! 7 cycles up to here
+       shad r0,r1
+       div0s r5,r4
+       div1 r6,r1
+       mov.l r7,@-r15
+       div1 r6,r1
+       mov r4,r0 ! re-compute adjusted dividend
+       div1 r6,r1
+       mov #-31,r7
+       div1 r6,r1
+       shad r7,r0
+       div1 r6,r1
+       add r4,r0 ! adjusted dividend
+       div1 r6,r1
+       mov.l r8,@-r15
+       div1 r6,r1
+       swap.w r4,r8 ! detect special case r4 = 0x80000000, r5 = 0x80
+       div1 r6,r1
+       swap.b r8,r8
+       xor r1,r0 ! xor dividend with result lsb
+       div1 r6,r1
+       div1 r6,r1
+       or r5,r8
+       div1 r6,r1
+       add #-0x80,r8 ! r8 is 0 iff there is a match
+       div1 r6,r1
+       swap.w r8,r7 ! or upper 16 bits...
+       div1 r6,r1
+       or r7,r8 !...into lower 16 bits
+       div1 r6,r1
+       extu.w r8,r8
+       div1 r6,r1
+       extu.b r0,r7
+       div1 r6,r1
+       shll8 r7
+       exts.w r1,r0
+       xor r7,r1 ! replace lsb of result with lsb of dividend
+       div1 r6,r1
+       neg r8,r8 ! upper 16 bits of r8 are now 0xffff iff we want end adjm.
+       div1 r6,r1
+       and r0,r8
+       div1 r6,r1
+       swap.w r8,r7
+       div1 r6,r1
+       mov.l @r15+,r8 ! 58 insns, 29 cycles up to here
+LOCAL(div_end):
+       div1 r6,r1
+       shll8 r0
+       div1 r6,r1
+       exts.w r7,r7
+       div1 r6,r1
+       add r0,r0
+       div1 r6,r1
+       sub r7,r0
+       extu.b r1,r1
+       mov.l @r15+,r7
+       rotcl r1
+       mov.l @r15+,r6
+       rts
+       add r1,r0
+
+       .balign 4
+LOCAL(udiv_le128): ! 4 cycles up to here (or 7 for mispredict)
+       mova LOCAL(div_table_inv),r0
+       shll2 r6
+       mov.l @(r0,r6),r1
+       mova LOCAL(div_table_clz),r0
+       lds r4,mach
+       !
+       !
+       !
+       tst r1,r1
+       !
+       bt 0f
+       dmulu.l r1,r4
+0:     mov.b @(r0,r5),r1
+       clrt
+       !
+       !
+       sts mach,r0
+       addc r4,r0
+       rotcr r0
+       mov.l @r15+,r6
+       rts
+       shld r1,r0
+
+       .balign 4
+LOCAL(div_le128): ! 3 cycles up to here (or 6 for mispredict)
+       mova LOCAL(div_table_inv),r0
+       shll2 r6
+       mov.l @(r0,r6),r1
+       mova LOCAL(div_table_clz),r0
+       neg r4,r6
+       bf 0f
+       mov r4,r6
+0:     lds r6,mach
+       tst r1,r1
+       bt 0f
+       dmulu.l r1,r6
+0:     div0s r4,r5
+       mov.b @(r0,r5),r1
+       bt/s LOCAL(le128_neg)
+       clrt
+       !
+       sts mach,r0
+       addc r6,r0
+       rotcr r0
+       mov.l @r15+,r6
+       rts
+       shld r1,r0
+
+/* Could trap divide by zero for the cost of one cycle more mispredict penalty:
+...
+       dmulu.l r1,r6
+0:     div0s r4,r5
+       bt/s LOCAL(le128_neg)
+       tst r5,r5
+       bt LOCAL(div_by_zero)
+       mov.b @(r0,r5),r1
+       sts mach,r0
+       addc r6,r0
+...
+LOCAL(div_by_zero):
+       trapa #
+       .balign 4
+LOCAL(le128_neg):
+       bt LOCAL(div_by_zero)
+       mov.b @(r0,r5),r1
+       sts mach,r0
+       addc r6,r0
+...  */
+
+       .balign 4
+LOCAL(le128_neg):
+       sts mach,r0
+       addc r6,r0
+       rotcr r0
+       mov.l @r15+,r6
+       shad r1,r0
+       rts
+       neg r0,r0
+       ENDFUNC(GLOBAL(udivsi3_i4i))
+       ENDFUNC(GLOBAL(sdivsi3_i4i))
+
+/* This table has been generated by divtab-sh4.c.  */
+       .balign 4
+       .byte   -7
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -2
+       .byte   -2
+       .byte   -2
+       .byte   -2
+       .byte   -1
+       .byte   -1
+       .byte   0
+LOCAL(div_table_clz):
+       .byte   0
+       .byte   0
+       .byte   -1
+       .byte   -1
+       .byte   -2
+       .byte   -2
+       .byte   -2
+       .byte   -2
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -3
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -4
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -5
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+       .byte   -6
+/* 1/-128 .. 1/127, normalized.  There is an implicit leading 1 in bit 32,
+   or in bit 33 for powers of two.  */
+       .balign 4
+       .long   0x0
+       .long   0x2040811
+       .long   0x4104105
+       .long   0x624DD30
+       .long   0x8421085
+       .long   0xA6810A7
+       .long   0xC9714FC
+       .long   0xECF56BF
+       .long   0x11111112
+       .long   0x135C8114
+       .long   0x15B1E5F8
+       .long   0x18118119
+       .long   0x1A7B9612
+       .long   0x1CF06ADB
+       .long   0x1F7047DD
+       .long   0x21FB7813
+       .long   0x24924925
+       .long   0x27350B89
+       .long   0x29E4129F
+       .long   0x2C9FB4D9
+       .long   0x2F684BDB
+       .long   0x323E34A3
+       .long   0x3521CFB3
+       .long   0x38138139
+       .long   0x3B13B13C
+       .long   0x3E22CBCF
+       .long   0x41414142
+       .long   0x446F8657
+       .long   0x47AE147B
+       .long   0x4AFD6A06
+       .long   0x4E5E0A73
+       .long   0x51D07EAF
+       .long   0x55555556
+       .long   0x58ED2309
+       .long   0x5C9882BA
+       .long   0x60581606
+       .long   0x642C8591
+       .long   0x68168169
+       .long   0x6C16C16D
+       .long   0x702E05C1
+       .long   0x745D1746
+       .long   0x78A4C818
+       .long   0x7D05F418
+       .long   0x81818182
+       .long   0x86186187
+       .long   0x8ACB90F7
+       .long   0x8F9C18FA
+       .long   0x948B0FCE
+       .long   0x9999999A
+       .long   0x9EC8E952
+       .long   0xA41A41A5
+       .long   0xA98EF607
+       .long   0xAF286BCB
+       .long   0xB4E81B4F
+       .long   0xBACF914D
+       .long   0xC0E07039
+       .long   0xC71C71C8
+       .long   0xCD856891
+       .long   0xD41D41D5
+       .long   0xDAE6076C
+       .long   0xE1E1E1E2
+       .long   0xE9131AC0
+       .long   0xF07C1F08
+       .long   0xF81F81F9
+       .long   0x0
+       .long   0x4104105
+       .long   0x8421085
+       .long   0xC9714FC
+       .long   0x11111112
+       .long   0x15B1E5F8
+       .long   0x1A7B9612
+       .long   0x1F7047DD
+       .long   0x24924925
+       .long   0x29E4129F
+       .long   0x2F684BDB
+       .long   0x3521CFB3
+       .long   0x3B13B13C
+       .long   0x41414142
+       .long   0x47AE147B
+       .long   0x4E5E0A73
+       .long   0x55555556
+       .long   0x5C9882BA
+       .long   0x642C8591
+       .long   0x6C16C16D
+       .long   0x745D1746
+       .long   0x7D05F418
+       .long   0x86186187
+       .long   0x8F9C18FA
+       .long   0x9999999A
+       .long   0xA41A41A5
+       .long   0xAF286BCB
+       .long   0xBACF914D
+       .long   0xC71C71C8
+       .long   0xD41D41D5
+       .long   0xE1E1E1E2
+       .long   0xF07C1F08
+       .long   0x0
+       .long   0x8421085
+       .long   0x11111112
+       .long   0x1A7B9612
+       .long   0x24924925
+       .long   0x2F684BDB
+       .long   0x3B13B13C
+       .long   0x47AE147B
+       .long   0x55555556
+       .long   0x642C8591
+       .long   0x745D1746
+       .long   0x86186187
+       .long   0x9999999A
+       .long   0xAF286BCB
+       .long   0xC71C71C8
+       .long   0xE1E1E1E2
+       .long   0x0
+       .long   0x11111112
+       .long   0x24924925
+       .long   0x3B13B13C
+       .long   0x55555556
+       .long   0x745D1746
+       .long   0x9999999A
+       .long   0xC71C71C8
+       .long   0x0
+       .long   0x24924925
+       .long   0x55555556
+       .long   0x9999999A
+       .long   0x0
+       .long   0x55555556
+       .long   0x0
+       .long   0x0
+LOCAL(div_table_inv):
+       .long   0x0
+       .long   0x0
+       .long   0x0
+       .long   0x55555556
+       .long   0x0
+       .long   0x9999999A
+       .long   0x55555556
+       .long   0x24924925
+       .long   0x0
+       .long   0xC71C71C8
+       .long   0x9999999A
+       .long   0x745D1746
+       .long   0x55555556
+       .long   0x3B13B13C
+       .long   0x24924925
+       .long   0x11111112
+       .long   0x0
+       .long   0xE1E1E1E2
+       .long   0xC71C71C8
+       .long   0xAF286BCB
+       .long   0x9999999A
+       .long   0x86186187
+       .long   0x745D1746
+       .long   0x642C8591
+       .long   0x55555556
+       .long   0x47AE147B
+       .long   0x3B13B13C
+       .long   0x2F684BDB
+       .long   0x24924925
+       .long   0x1A7B9612
+       .long   0x11111112
+       .long   0x8421085
+       .long   0x0
+       .long   0xF07C1F08
+       .long   0xE1E1E1E2
+       .long   0xD41D41D5
+       .long   0xC71C71C8
+       .long   0xBACF914D
+       .long   0xAF286BCB
+       .long   0xA41A41A5
+       .long   0x9999999A
+       .long   0x8F9C18FA
+       .long   0x86186187
+       .long   0x7D05F418
+       .long   0x745D1746
+       .long   0x6C16C16D
+       .long   0x642C8591
+       .long   0x5C9882BA
+       .long   0x55555556
+       .long   0x4E5E0A73
+       .long   0x47AE147B
+       .long   0x41414142
+       .long   0x3B13B13C
+       .long   0x3521CFB3
+       .long   0x2F684BDB
+       .long   0x29E4129F
+       .long   0x24924925
+       .long   0x1F7047DD
+       .long   0x1A7B9612
+       .long   0x15B1E5F8
+       .long   0x11111112
+       .long   0xC9714FC
+       .long   0x8421085
+       .long   0x4104105
+       .long   0x0
+       .long   0xF81F81F9
+       .long   0xF07C1F08
+       .long   0xE9131AC0
+       .long   0xE1E1E1E2
+       .long   0xDAE6076C
+       .long   0xD41D41D5
+       .long   0xCD856891
+       .long   0xC71C71C8
+       .long   0xC0E07039
+       .long   0xBACF914D
+       .long   0xB4E81B4F
+       .long   0xAF286BCB
+       .long   0xA98EF607
+       .long   0xA41A41A5
+       .long   0x9EC8E952
+       .long   0x9999999A
+       .long   0x948B0FCE
+       .long   0x8F9C18FA
+       .long   0x8ACB90F7
+       .long   0x86186187
+       .long   0x81818182
+       .long   0x7D05F418
+       .long   0x78A4C818
+       .long   0x745D1746
+       .long   0x702E05C1
+       .long   0x6C16C16D
+       .long   0x68168169
+       .long   0x642C8591
+       .long   0x60581606
+       .long   0x5C9882BA
+       .long   0x58ED2309
+       .long   0x55555556
+       .long   0x51D07EAF
+       .long   0x4E5E0A73
+       .long   0x4AFD6A06
+       .long   0x47AE147B
+       .long   0x446F8657
+       .long   0x41414142
+       .long   0x3E22CBCF
+       .long   0x3B13B13C
+       .long   0x38138139
+       .long   0x3521CFB3
+       .long   0x323E34A3
+       .long   0x2F684BDB
+       .long   0x2C9FB4D9
+       .long   0x29E4129F
+       .long   0x27350B89
+       .long   0x24924925
+       .long   0x21FB7813
+       .long   0x1F7047DD
+       .long   0x1CF06ADB
+       .long   0x1A7B9612
+       .long   0x18118119
+       .long   0x15B1E5F8
+       .long   0x135C8114
+       .long   0x11111112
+       .long   0xECF56BF
+       .long   0xC9714FC
+       .long   0xA6810A7
+       .long   0x8421085
+       .long   0x624DD30
+       .long   0x4104105
+       .long   0x2040811
+       /* maximum error: 0.987342 scaled: 0.921875*/
+
+#endif /* SH3 / SH4 */
+
+#endif /* L_div_table */
+#endif /* !__SHMEDIA__ */