/* Copyright (C) 2004-2023 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"

#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 */
