xref: /openbmc/linux/arch/sh/lib/udivsi3_i4i.S (revision 597473720f4dc69749542bfcfed4a927a43d935e)
1*4494ce4fSKuninori Morimoto/* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0
2*4494ce4fSKuninori Morimoto
3*4494ce4fSKuninori Morimoto   Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
43b041227STakashi YOSHII   2004, 2005, 2006
53b041227STakashi YOSHII   Free Software Foundation, Inc.
6*4494ce4fSKuninori Morimoto*/
73b041227STakashi YOSHII
83b041227STakashi YOSHII!! libgcc routines for the Renesas / SuperH SH CPUs.
93b041227STakashi YOSHII!! Contributed by Steve Chamberlain.
103b041227STakashi YOSHII!! sac@cygnus.com
113b041227STakashi YOSHII
123b041227STakashi YOSHII!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
133b041227STakashi YOSHII!! recoded in assembly by Toshiyasu Morita
143b041227STakashi YOSHII!! tm@netcom.com
153b041227STakashi YOSHII
163b041227STakashi YOSHII/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
173b041227STakashi YOSHII   ELF local label prefixes by J"orn Rennecke
183b041227STakashi YOSHII   amylaar@cygnus.com  */
193b041227STakashi YOSHII
203b041227STakashi YOSHII/* This code used shld, thus is not suitable for SH1 / SH2.  */
213b041227STakashi YOSHII
223b041227STakashi YOSHII/* Signed / unsigned division without use of FPU, optimized for SH4.
233b041227STakashi YOSHII   Uses a lookup table for divisors in the range -128 .. +128, and
243b041227STakashi YOSHII   div1 with case distinction for larger divisors in three more ranges.
253b041227STakashi YOSHII   The code is lumped together with the table to allow the use of mova.  */
263b041227STakashi YOSHII#ifdef CONFIG_CPU_LITTLE_ENDIAN
273b041227STakashi YOSHII#define L_LSB 0
283b041227STakashi YOSHII#define L_LSWMSB 1
293b041227STakashi YOSHII#define L_MSWLSB 2
303b041227STakashi YOSHII#else
313b041227STakashi YOSHII#define L_LSB 3
323b041227STakashi YOSHII#define L_LSWMSB 2
333b041227STakashi YOSHII#define L_MSWLSB 1
343b041227STakashi YOSHII#endif
353b041227STakashi YOSHII
363b041227STakashi YOSHII	.balign 4
373b041227STakashi YOSHII	.global	__udivsi3_i4i
383b041227STakashi YOSHII	.global	__udivsi3_i4
393b041227STakashi YOSHII	.set	__udivsi3_i4, __udivsi3_i4i
403b041227STakashi YOSHII	.type	__udivsi3_i4i, @function
413b041227STakashi YOSHII__udivsi3_i4i:
423b041227STakashi YOSHII	mov.w c128_w, r1
433b041227STakashi YOSHII	div0u
443b041227STakashi YOSHII	mov r4,r0
453b041227STakashi YOSHII	shlr8 r0
463b041227STakashi YOSHII	cmp/hi r1,r5
473b041227STakashi YOSHII	extu.w r5,r1
483b041227STakashi YOSHII	bf udiv_le128
493b041227STakashi YOSHII	cmp/eq r5,r1
503b041227STakashi YOSHII	bf udiv_ge64k
513b041227STakashi YOSHII	shlr r0
523b041227STakashi YOSHII	mov r5,r1
533b041227STakashi YOSHII	shll16 r5
543b041227STakashi YOSHII	mov.l r4,@-r15
553b041227STakashi YOSHII	div1 r5,r0
563b041227STakashi YOSHII	mov.l r1,@-r15
573b041227STakashi YOSHII	div1 r5,r0
583b041227STakashi YOSHII	div1 r5,r0
593b041227STakashi YOSHII	bra udiv_25
603b041227STakashi YOSHII	div1 r5,r0
613b041227STakashi YOSHII
623b041227STakashi YOSHIIdiv_le128:
633b041227STakashi YOSHII	mova div_table_ix,r0
643b041227STakashi YOSHII	bra div_le128_2
653b041227STakashi YOSHII	mov.b @(r0,r5),r1
663b041227STakashi YOSHIIudiv_le128:
673b041227STakashi YOSHII	mov.l r4,@-r15
683b041227STakashi YOSHII	mova div_table_ix,r0
693b041227STakashi YOSHII	mov.b @(r0,r5),r1
703b041227STakashi YOSHII	mov.l r5,@-r15
713b041227STakashi YOSHIIdiv_le128_2:
723b041227STakashi YOSHII	mova div_table_inv,r0
733b041227STakashi YOSHII	mov.l @(r0,r1),r1
743b041227STakashi YOSHII	mov r5,r0
753b041227STakashi YOSHII	tst #0xfe,r0
763b041227STakashi YOSHII	mova div_table_clz,r0
773b041227STakashi YOSHII	dmulu.l r1,r4
783b041227STakashi YOSHII	mov.b @(r0,r5),r1
793b041227STakashi YOSHII	bt/s div_by_1
803b041227STakashi YOSHII	mov r4,r0
813b041227STakashi YOSHII	mov.l @r15+,r5
823b041227STakashi YOSHII	sts mach,r0
833b041227STakashi YOSHII	/* clrt */
843b041227STakashi YOSHII	addc r4,r0
853b041227STakashi YOSHII	mov.l @r15+,r4
863b041227STakashi YOSHII	rotcr r0
873b041227STakashi YOSHII	rts
883b041227STakashi YOSHII	shld r1,r0
893b041227STakashi YOSHII
903b041227STakashi YOSHIIdiv_by_1_neg:
913b041227STakashi YOSHII	neg r4,r0
923b041227STakashi YOSHIIdiv_by_1:
933b041227STakashi YOSHII	mov.l @r15+,r5
943b041227STakashi YOSHII	rts
953b041227STakashi YOSHII	mov.l @r15+,r4
963b041227STakashi YOSHII
973b041227STakashi YOSHIIdiv_ge64k:
983b041227STakashi YOSHII	bt/s div_r8
993b041227STakashi YOSHII	div0u
1003b041227STakashi YOSHII	shll8 r5
1013b041227STakashi YOSHII	bra div_ge64k_2
1023b041227STakashi YOSHII	div1 r5,r0
1033b041227STakashi YOSHIIudiv_ge64k:
1043b041227STakashi YOSHII	cmp/hi r0,r5
1053b041227STakashi YOSHII	mov r5,r1
1063b041227STakashi YOSHII	bt udiv_r8
1073b041227STakashi YOSHII	shll8 r5
1083b041227STakashi YOSHII	mov.l r4,@-r15
1093b041227STakashi YOSHII	div1 r5,r0
1103b041227STakashi YOSHII	mov.l r1,@-r15
1113b041227STakashi YOSHIIdiv_ge64k_2:
1123b041227STakashi YOSHII	div1 r5,r0
1133b041227STakashi YOSHII	mov.l zero_l,r1
1143b041227STakashi YOSHII	.rept 4
1153b041227STakashi YOSHII	div1 r5,r0
1163b041227STakashi YOSHII	.endr
1173b041227STakashi YOSHII	mov.l r1,@-r15
1183b041227STakashi YOSHII	div1 r5,r0
1193b041227STakashi YOSHII	mov.w m256_w,r1
1203b041227STakashi YOSHII	div1 r5,r0
1213b041227STakashi YOSHII	mov.b r0,@(L_LSWMSB,r15)
1223b041227STakashi YOSHII	xor r4,r0
1233b041227STakashi YOSHII	and r1,r0
1243b041227STakashi YOSHII	bra div_ge64k_end
1253b041227STakashi YOSHII	xor r4,r0
1263b041227STakashi YOSHII
1273b041227STakashi YOSHIIdiv_r8:
1283b041227STakashi YOSHII	shll16 r4
1293b041227STakashi YOSHII	bra div_r8_2
1303b041227STakashi YOSHII	shll8 r4
1313b041227STakashi YOSHIIudiv_r8:
1323b041227STakashi YOSHII	mov.l r4,@-r15
1333b041227STakashi YOSHII	shll16 r4
1343b041227STakashi YOSHII	clrt
1353b041227STakashi YOSHII	shll8 r4
1363b041227STakashi YOSHII	mov.l r5,@-r15
1373b041227STakashi YOSHIIdiv_r8_2:
1383b041227STakashi YOSHII	rotcl r4
1393b041227STakashi YOSHII	mov r0,r1
1403b041227STakashi YOSHII	div1 r5,r1
1413b041227STakashi YOSHII	mov r4,r0
1423b041227STakashi YOSHII	rotcl r0
1433b041227STakashi YOSHII	mov r5,r4
1443b041227STakashi YOSHII	div1 r5,r1
1453b041227STakashi YOSHII	.rept 5
1463b041227STakashi YOSHII	rotcl r0; div1 r5,r1
1473b041227STakashi YOSHII	.endr
1483b041227STakashi YOSHII	rotcl r0
1493b041227STakashi YOSHII	mov.l @r15+,r5
1503b041227STakashi YOSHII	div1 r4,r1
1513b041227STakashi YOSHII	mov.l @r15+,r4
1523b041227STakashi YOSHII	rts
1533b041227STakashi YOSHII	rotcl r0
1543b041227STakashi YOSHII
1553b041227STakashi YOSHII	.global	__sdivsi3_i4i
1563b041227STakashi YOSHII	.global __sdivsi3_i4
1573b041227STakashi YOSHII	.global	__sdivsi3
1583b041227STakashi YOSHII	.set	__sdivsi3_i4, __sdivsi3_i4i
1593b041227STakashi YOSHII	.set	__sdivsi3, __sdivsi3_i4i
1603b041227STakashi YOSHII	.type	__sdivsi3_i4i, @function
1613b041227STakashi YOSHII	/* This is link-compatible with a __sdivsi3 call,
1623b041227STakashi YOSHII	   but we effectively clobber only r1.  */
1633b041227STakashi YOSHII__sdivsi3_i4i:
1643b041227STakashi YOSHII	mov.l r4,@-r15
1653b041227STakashi YOSHII	cmp/pz r5
1663b041227STakashi YOSHII	mov.w c128_w, r1
1673b041227STakashi YOSHII	bt/s pos_divisor
1683b041227STakashi YOSHII	cmp/pz r4
1693b041227STakashi YOSHII	mov.l r5,@-r15
1703b041227STakashi YOSHII	neg r5,r5
1713b041227STakashi YOSHII	bt/s neg_result
1723b041227STakashi YOSHII	cmp/hi r1,r5
1733b041227STakashi YOSHII	neg r4,r4
1743b041227STakashi YOSHIIpos_result:
1753b041227STakashi YOSHII	extu.w r5,r0
1763b041227STakashi YOSHII	bf div_le128
1773b041227STakashi YOSHII	cmp/eq r5,r0
1783b041227STakashi YOSHII	mov r4,r0
1793b041227STakashi YOSHII	shlr8 r0
1803b041227STakashi YOSHII	bf/s div_ge64k
1813b041227STakashi YOSHII	cmp/hi r0,r5
1823b041227STakashi YOSHII	div0u
1833b041227STakashi YOSHII	shll16 r5
1843b041227STakashi YOSHII	div1 r5,r0
1853b041227STakashi YOSHII	div1 r5,r0
1863b041227STakashi YOSHII	div1 r5,r0
1873b041227STakashi YOSHIIudiv_25:
1883b041227STakashi YOSHII	mov.l zero_l,r1
1893b041227STakashi YOSHII	div1 r5,r0
1903b041227STakashi YOSHII	div1 r5,r0
1913b041227STakashi YOSHII	mov.l r1,@-r15
1923b041227STakashi YOSHII	.rept 3
1933b041227STakashi YOSHII	div1 r5,r0
1943b041227STakashi YOSHII	.endr
1953b041227STakashi YOSHII	mov.b r0,@(L_MSWLSB,r15)
1963b041227STakashi YOSHII	xtrct r4,r0
1973b041227STakashi YOSHII	swap.w r0,r0
1983b041227STakashi YOSHII	.rept 8
1993b041227STakashi YOSHII	div1 r5,r0
2003b041227STakashi YOSHII	.endr
2013b041227STakashi YOSHII	mov.b r0,@(L_LSWMSB,r15)
2023b041227STakashi YOSHIIdiv_ge64k_end:
2033b041227STakashi YOSHII	.rept 8
2043b041227STakashi YOSHII	div1 r5,r0
2053b041227STakashi YOSHII	.endr
2063b041227STakashi YOSHII	mov.l @r15+,r4 ! zero-extension and swap using LS unit.
2073b041227STakashi YOSHII	extu.b r0,r0
2083b041227STakashi YOSHII	mov.l @r15+,r5
2093b041227STakashi YOSHII	or r4,r0
2103b041227STakashi YOSHII	mov.l @r15+,r4
2113b041227STakashi YOSHII	rts
2123b041227STakashi YOSHII	rotcl r0
2133b041227STakashi YOSHII
2143b041227STakashi YOSHIIdiv_le128_neg:
2153b041227STakashi YOSHII	tst #0xfe,r0
2163b041227STakashi YOSHII	mova div_table_ix,r0
2173b041227STakashi YOSHII	mov.b @(r0,r5),r1
2183b041227STakashi YOSHII	mova div_table_inv,r0
2193b041227STakashi YOSHII	bt/s div_by_1_neg
2203b041227STakashi YOSHII	mov.l @(r0,r1),r1
2213b041227STakashi YOSHII	mova div_table_clz,r0
2223b041227STakashi YOSHII	dmulu.l r1,r4
2233b041227STakashi YOSHII	mov.b @(r0,r5),r1
2243b041227STakashi YOSHII	mov.l @r15+,r5
2253b041227STakashi YOSHII	sts mach,r0
2263b041227STakashi YOSHII	/* clrt */
2273b041227STakashi YOSHII	addc r4,r0
2283b041227STakashi YOSHII	mov.l @r15+,r4
2293b041227STakashi YOSHII	rotcr r0
2303b041227STakashi YOSHII	shld r1,r0
2313b041227STakashi YOSHII	rts
2323b041227STakashi YOSHII	neg r0,r0
2333b041227STakashi YOSHII
2343b041227STakashi YOSHIIpos_divisor:
2353b041227STakashi YOSHII	mov.l r5,@-r15
2363b041227STakashi YOSHII	bt/s pos_result
2373b041227STakashi YOSHII	cmp/hi r1,r5
2383b041227STakashi YOSHII	neg r4,r4
2393b041227STakashi YOSHIIneg_result:
2403b041227STakashi YOSHII	extu.w r5,r0
2413b041227STakashi YOSHII	bf div_le128_neg
2423b041227STakashi YOSHII	cmp/eq r5,r0
2433b041227STakashi YOSHII	mov r4,r0
2443b041227STakashi YOSHII	shlr8 r0
2453b041227STakashi YOSHII	bf/s div_ge64k_neg
2463b041227STakashi YOSHII	cmp/hi r0,r5
2473b041227STakashi YOSHII	div0u
2483b041227STakashi YOSHII	mov.l zero_l,r1
2493b041227STakashi YOSHII	shll16 r5
2503b041227STakashi YOSHII	div1 r5,r0
2513b041227STakashi YOSHII	mov.l r1,@-r15
2523b041227STakashi YOSHII	.rept 7
2533b041227STakashi YOSHII	div1 r5,r0
2543b041227STakashi YOSHII	.endr
2553b041227STakashi YOSHII	mov.b r0,@(L_MSWLSB,r15)
2563b041227STakashi YOSHII	xtrct r4,r0
2573b041227STakashi YOSHII	swap.w r0,r0
2583b041227STakashi YOSHII	.rept 8
2593b041227STakashi YOSHII	div1 r5,r0
2603b041227STakashi YOSHII	.endr
2613b041227STakashi YOSHII	mov.b r0,@(L_LSWMSB,r15)
2623b041227STakashi YOSHIIdiv_ge64k_neg_end:
2633b041227STakashi YOSHII	.rept 8
2643b041227STakashi YOSHII	div1 r5,r0
2653b041227STakashi YOSHII	.endr
2663b041227STakashi YOSHII	mov.l @r15+,r4 ! zero-extension and swap using LS unit.
2673b041227STakashi YOSHII	extu.b r0,r1
2683b041227STakashi YOSHII	mov.l @r15+,r5
2693b041227STakashi YOSHII	or r4,r1
2703b041227STakashi YOSHIIdiv_r8_neg_end:
2713b041227STakashi YOSHII	mov.l @r15+,r4
2723b041227STakashi YOSHII	rotcl r1
2733b041227STakashi YOSHII	rts
2743b041227STakashi YOSHII	neg r1,r0
2753b041227STakashi YOSHII
2763b041227STakashi YOSHIIdiv_ge64k_neg:
2773b041227STakashi YOSHII	bt/s div_r8_neg
2783b041227STakashi YOSHII	div0u
2793b041227STakashi YOSHII	shll8 r5
2803b041227STakashi YOSHII	mov.l zero_l,r1
2813b041227STakashi YOSHII	.rept 6
2823b041227STakashi YOSHII	div1 r5,r0
2833b041227STakashi YOSHII	.endr
2843b041227STakashi YOSHII	mov.l r1,@-r15
2853b041227STakashi YOSHII	div1 r5,r0
2863b041227STakashi YOSHII	mov.w m256_w,r1
2873b041227STakashi YOSHII	div1 r5,r0
2883b041227STakashi YOSHII	mov.b r0,@(L_LSWMSB,r15)
2893b041227STakashi YOSHII	xor r4,r0
2903b041227STakashi YOSHII	and r1,r0
2913b041227STakashi YOSHII	bra div_ge64k_neg_end
2923b041227STakashi YOSHII	xor r4,r0
2933b041227STakashi YOSHII
2943b041227STakashi YOSHIIc128_w:
2953b041227STakashi YOSHII	.word 128
2963b041227STakashi YOSHII
2973b041227STakashi YOSHIIdiv_r8_neg:
2983b041227STakashi YOSHII	clrt
2993b041227STakashi YOSHII	shll16 r4
3003b041227STakashi YOSHII	mov r4,r1
3013b041227STakashi YOSHII	shll8 r1
3023b041227STakashi YOSHII	mov r5,r4
3033b041227STakashi YOSHII	.rept 7
3043b041227STakashi YOSHII	rotcl r1; div1 r5,r0
3053b041227STakashi YOSHII	.endr
3063b041227STakashi YOSHII	mov.l @r15+,r5
3073b041227STakashi YOSHII	rotcl r1
3083b041227STakashi YOSHII	bra div_r8_neg_end
3093b041227STakashi YOSHII	div1 r4,r0
3103b041227STakashi YOSHII
3113b041227STakashi YOSHIIm256_w:
3123b041227STakashi YOSHII	.word 0xff00
3133b041227STakashi YOSHII/* This table has been generated by divtab-sh4.c.  */
3143b041227STakashi YOSHII	.balign 4
3153b041227STakashi YOSHIIdiv_table_clz:
3163b041227STakashi YOSHII	.byte	0
3173b041227STakashi YOSHII	.byte	1
3183b041227STakashi YOSHII	.byte	0
3193b041227STakashi YOSHII	.byte	-1
3203b041227STakashi YOSHII	.byte	-1
3213b041227STakashi YOSHII	.byte	-2
3223b041227STakashi YOSHII	.byte	-2
3233b041227STakashi YOSHII	.byte	-2
3243b041227STakashi YOSHII	.byte	-2
3253b041227STakashi YOSHII	.byte	-3
3263b041227STakashi YOSHII	.byte	-3
3273b041227STakashi YOSHII	.byte	-3
3283b041227STakashi YOSHII	.byte	-3
3293b041227STakashi YOSHII	.byte	-3
3303b041227STakashi YOSHII	.byte	-3
3313b041227STakashi YOSHII	.byte	-3
3323b041227STakashi YOSHII	.byte	-3
3333b041227STakashi YOSHII	.byte	-4
3343b041227STakashi YOSHII	.byte	-4
3353b041227STakashi YOSHII	.byte	-4
3363b041227STakashi YOSHII	.byte	-4
3373b041227STakashi YOSHII	.byte	-4
3383b041227STakashi YOSHII	.byte	-4
3393b041227STakashi YOSHII	.byte	-4
3403b041227STakashi YOSHII	.byte	-4
3413b041227STakashi YOSHII	.byte	-4
3423b041227STakashi YOSHII	.byte	-4
3433b041227STakashi YOSHII	.byte	-4
3443b041227STakashi YOSHII	.byte	-4
3453b041227STakashi YOSHII	.byte	-4
3463b041227STakashi YOSHII	.byte	-4
3473b041227STakashi YOSHII	.byte	-4
3483b041227STakashi YOSHII	.byte	-4
3493b041227STakashi YOSHII	.byte	-5
3503b041227STakashi YOSHII	.byte	-5
3513b041227STakashi YOSHII	.byte	-5
3523b041227STakashi YOSHII	.byte	-5
3533b041227STakashi YOSHII	.byte	-5
3543b041227STakashi YOSHII	.byte	-5
3553b041227STakashi YOSHII	.byte	-5
3563b041227STakashi YOSHII	.byte	-5
3573b041227STakashi YOSHII	.byte	-5
3583b041227STakashi YOSHII	.byte	-5
3593b041227STakashi YOSHII	.byte	-5
3603b041227STakashi YOSHII	.byte	-5
3613b041227STakashi YOSHII	.byte	-5
3623b041227STakashi YOSHII	.byte	-5
3633b041227STakashi YOSHII	.byte	-5
3643b041227STakashi YOSHII	.byte	-5
3653b041227STakashi YOSHII	.byte	-5
3663b041227STakashi YOSHII	.byte	-5
3673b041227STakashi YOSHII	.byte	-5
3683b041227STakashi YOSHII	.byte	-5
3693b041227STakashi YOSHII	.byte	-5
3703b041227STakashi YOSHII	.byte	-5
3713b041227STakashi YOSHII	.byte	-5
3723b041227STakashi YOSHII	.byte	-5
3733b041227STakashi YOSHII	.byte	-5
3743b041227STakashi YOSHII	.byte	-5
3753b041227STakashi YOSHII	.byte	-5
3763b041227STakashi YOSHII	.byte	-5
3773b041227STakashi YOSHII	.byte	-5
3783b041227STakashi YOSHII	.byte	-5
3793b041227STakashi YOSHII	.byte	-5
3803b041227STakashi YOSHII	.byte	-5
3813b041227STakashi YOSHII	.byte	-6
3823b041227STakashi YOSHII	.byte	-6
3833b041227STakashi YOSHII	.byte	-6
3843b041227STakashi YOSHII	.byte	-6
3853b041227STakashi YOSHII	.byte	-6
3863b041227STakashi YOSHII	.byte	-6
3873b041227STakashi YOSHII	.byte	-6
3883b041227STakashi YOSHII	.byte	-6
3893b041227STakashi YOSHII	.byte	-6
3903b041227STakashi YOSHII	.byte	-6
3913b041227STakashi YOSHII	.byte	-6
3923b041227STakashi YOSHII	.byte	-6
3933b041227STakashi YOSHII	.byte	-6
3943b041227STakashi YOSHII	.byte	-6
3953b041227STakashi YOSHII	.byte	-6
3963b041227STakashi YOSHII	.byte	-6
3973b041227STakashi YOSHII	.byte	-6
3983b041227STakashi YOSHII	.byte	-6
3993b041227STakashi YOSHII	.byte	-6
4003b041227STakashi YOSHII	.byte	-6
4013b041227STakashi YOSHII	.byte	-6
4023b041227STakashi YOSHII	.byte	-6
4033b041227STakashi YOSHII	.byte	-6
4043b041227STakashi YOSHII	.byte	-6
4053b041227STakashi YOSHII	.byte	-6
4063b041227STakashi YOSHII	.byte	-6
4073b041227STakashi YOSHII	.byte	-6
4083b041227STakashi YOSHII	.byte	-6
4093b041227STakashi YOSHII	.byte	-6
4103b041227STakashi YOSHII	.byte	-6
4113b041227STakashi YOSHII	.byte	-6
4123b041227STakashi YOSHII	.byte	-6
4133b041227STakashi YOSHII	.byte	-6
4143b041227STakashi YOSHII	.byte	-6
4153b041227STakashi YOSHII	.byte	-6
4163b041227STakashi YOSHII	.byte	-6
4173b041227STakashi YOSHII	.byte	-6
4183b041227STakashi YOSHII	.byte	-6
4193b041227STakashi YOSHII	.byte	-6
4203b041227STakashi YOSHII	.byte	-6
4213b041227STakashi YOSHII	.byte	-6
4223b041227STakashi YOSHII	.byte	-6
4233b041227STakashi YOSHII	.byte	-6
4243b041227STakashi YOSHII	.byte	-6
4253b041227STakashi YOSHII	.byte	-6
4263b041227STakashi YOSHII	.byte	-6
4273b041227STakashi YOSHII	.byte	-6
4283b041227STakashi YOSHII	.byte	-6
4293b041227STakashi YOSHII	.byte	-6
4303b041227STakashi YOSHII	.byte	-6
4313b041227STakashi YOSHII	.byte	-6
4323b041227STakashi YOSHII	.byte	-6
4333b041227STakashi YOSHII	.byte	-6
4343b041227STakashi YOSHII	.byte	-6
4353b041227STakashi YOSHII	.byte	-6
4363b041227STakashi YOSHII	.byte	-6
4373b041227STakashi YOSHII	.byte	-6
4383b041227STakashi YOSHII	.byte	-6
4393b041227STakashi YOSHII	.byte	-6
4403b041227STakashi YOSHII	.byte	-6
4413b041227STakashi YOSHII	.byte	-6
4423b041227STakashi YOSHII	.byte	-6
4433b041227STakashi YOSHII	.byte	-6
4443b041227STakashi YOSHII/* Lookup table translating positive divisor to index into table of
4453b041227STakashi YOSHII   normalized inverse.  N.B. the '0' entry is also the last entry of the
4463b041227STakashi YOSHII previous table, and causes an unaligned access for division by zero.  */
4473b041227STakashi YOSHIIdiv_table_ix:
4483b041227STakashi YOSHII	.byte	-6
4493b041227STakashi YOSHII	.byte	-128
4503b041227STakashi YOSHII	.byte	-128
4513b041227STakashi YOSHII	.byte	0
4523b041227STakashi YOSHII	.byte	-128
4533b041227STakashi YOSHII	.byte	-64
4543b041227STakashi YOSHII	.byte	0
4553b041227STakashi YOSHII	.byte	64
4563b041227STakashi YOSHII	.byte	-128
4573b041227STakashi YOSHII	.byte	-96
4583b041227STakashi YOSHII	.byte	-64
4593b041227STakashi YOSHII	.byte	-32
4603b041227STakashi YOSHII	.byte	0
4613b041227STakashi YOSHII	.byte	32
4623b041227STakashi YOSHII	.byte	64
4633b041227STakashi YOSHII	.byte	96
4643b041227STakashi YOSHII	.byte	-128
4653b041227STakashi YOSHII	.byte	-112
4663b041227STakashi YOSHII	.byte	-96
4673b041227STakashi YOSHII	.byte	-80
4683b041227STakashi YOSHII	.byte	-64
4693b041227STakashi YOSHII	.byte	-48
4703b041227STakashi YOSHII	.byte	-32
4713b041227STakashi YOSHII	.byte	-16
4723b041227STakashi YOSHII	.byte	0
4733b041227STakashi YOSHII	.byte	16
4743b041227STakashi YOSHII	.byte	32
4753b041227STakashi YOSHII	.byte	48
4763b041227STakashi YOSHII	.byte	64
4773b041227STakashi YOSHII	.byte	80
4783b041227STakashi YOSHII	.byte	96
4793b041227STakashi YOSHII	.byte	112
4803b041227STakashi YOSHII	.byte	-128
4813b041227STakashi YOSHII	.byte	-120
4823b041227STakashi YOSHII	.byte	-112
4833b041227STakashi YOSHII	.byte	-104
4843b041227STakashi YOSHII	.byte	-96
4853b041227STakashi YOSHII	.byte	-88
4863b041227STakashi YOSHII	.byte	-80
4873b041227STakashi YOSHII	.byte	-72
4883b041227STakashi YOSHII	.byte	-64
4893b041227STakashi YOSHII	.byte	-56
4903b041227STakashi YOSHII	.byte	-48
4913b041227STakashi YOSHII	.byte	-40
4923b041227STakashi YOSHII	.byte	-32
4933b041227STakashi YOSHII	.byte	-24
4943b041227STakashi YOSHII	.byte	-16
4953b041227STakashi YOSHII	.byte	-8
4963b041227STakashi YOSHII	.byte	0
4973b041227STakashi YOSHII	.byte	8
4983b041227STakashi YOSHII	.byte	16
4993b041227STakashi YOSHII	.byte	24
5003b041227STakashi YOSHII	.byte	32
5013b041227STakashi YOSHII	.byte	40
5023b041227STakashi YOSHII	.byte	48
5033b041227STakashi YOSHII	.byte	56
5043b041227STakashi YOSHII	.byte	64
5053b041227STakashi YOSHII	.byte	72
5063b041227STakashi YOSHII	.byte	80
5073b041227STakashi YOSHII	.byte	88
5083b041227STakashi YOSHII	.byte	96
5093b041227STakashi YOSHII	.byte	104
5103b041227STakashi YOSHII	.byte	112
5113b041227STakashi YOSHII	.byte	120
5123b041227STakashi YOSHII	.byte	-128
5133b041227STakashi YOSHII	.byte	-124
5143b041227STakashi YOSHII	.byte	-120
5153b041227STakashi YOSHII	.byte	-116
5163b041227STakashi YOSHII	.byte	-112
5173b041227STakashi YOSHII	.byte	-108
5183b041227STakashi YOSHII	.byte	-104
5193b041227STakashi YOSHII	.byte	-100
5203b041227STakashi YOSHII	.byte	-96
5213b041227STakashi YOSHII	.byte	-92
5223b041227STakashi YOSHII	.byte	-88
5233b041227STakashi YOSHII	.byte	-84
5243b041227STakashi YOSHII	.byte	-80
5253b041227STakashi YOSHII	.byte	-76
5263b041227STakashi YOSHII	.byte	-72
5273b041227STakashi YOSHII	.byte	-68
5283b041227STakashi YOSHII	.byte	-64
5293b041227STakashi YOSHII	.byte	-60
5303b041227STakashi YOSHII	.byte	-56
5313b041227STakashi YOSHII	.byte	-52
5323b041227STakashi YOSHII	.byte	-48
5333b041227STakashi YOSHII	.byte	-44
5343b041227STakashi YOSHII	.byte	-40
5353b041227STakashi YOSHII	.byte	-36
5363b041227STakashi YOSHII	.byte	-32
5373b041227STakashi YOSHII	.byte	-28
5383b041227STakashi YOSHII	.byte	-24
5393b041227STakashi YOSHII	.byte	-20
5403b041227STakashi YOSHII	.byte	-16
5413b041227STakashi YOSHII	.byte	-12
5423b041227STakashi YOSHII	.byte	-8
5433b041227STakashi YOSHII	.byte	-4
5443b041227STakashi YOSHII	.byte	0
5453b041227STakashi YOSHII	.byte	4
5463b041227STakashi YOSHII	.byte	8
5473b041227STakashi YOSHII	.byte	12
5483b041227STakashi YOSHII	.byte	16
5493b041227STakashi YOSHII	.byte	20
5503b041227STakashi YOSHII	.byte	24
5513b041227STakashi YOSHII	.byte	28
5523b041227STakashi YOSHII	.byte	32
5533b041227STakashi YOSHII	.byte	36
5543b041227STakashi YOSHII	.byte	40
5553b041227STakashi YOSHII	.byte	44
5563b041227STakashi YOSHII	.byte	48
5573b041227STakashi YOSHII	.byte	52
5583b041227STakashi YOSHII	.byte	56
5593b041227STakashi YOSHII	.byte	60
5603b041227STakashi YOSHII	.byte	64
5613b041227STakashi YOSHII	.byte	68
5623b041227STakashi YOSHII	.byte	72
5633b041227STakashi YOSHII	.byte	76
5643b041227STakashi YOSHII	.byte	80
5653b041227STakashi YOSHII	.byte	84
5663b041227STakashi YOSHII	.byte	88
5673b041227STakashi YOSHII	.byte	92
5683b041227STakashi YOSHII	.byte	96
5693b041227STakashi YOSHII	.byte	100
5703b041227STakashi YOSHII	.byte	104
5713b041227STakashi YOSHII	.byte	108
5723b041227STakashi YOSHII	.byte	112
5733b041227STakashi YOSHII	.byte	116
5743b041227STakashi YOSHII	.byte	120
5753b041227STakashi YOSHII	.byte	124
5763b041227STakashi YOSHII	.byte	-128
5773b041227STakashi YOSHII/* 1/64 .. 1/127, normalized.  There is an implicit leading 1 in bit 32.  */
5783b041227STakashi YOSHII	.balign 4
5793b041227STakashi YOSHIIzero_l:
5803b041227STakashi YOSHII	.long	0x0
5813b041227STakashi YOSHII	.long	0xF81F81F9
5823b041227STakashi YOSHII	.long	0xF07C1F08
5833b041227STakashi YOSHII	.long	0xE9131AC0
5843b041227STakashi YOSHII	.long	0xE1E1E1E2
5853b041227STakashi YOSHII	.long	0xDAE6076C
5863b041227STakashi YOSHII	.long	0xD41D41D5
5873b041227STakashi YOSHII	.long	0xCD856891
5883b041227STakashi YOSHII	.long	0xC71C71C8
5893b041227STakashi YOSHII	.long	0xC0E07039
5903b041227STakashi YOSHII	.long	0xBACF914D
5913b041227STakashi YOSHII	.long	0xB4E81B4F
5923b041227STakashi YOSHII	.long	0xAF286BCB
5933b041227STakashi YOSHII	.long	0xA98EF607
5943b041227STakashi YOSHII	.long	0xA41A41A5
5953b041227STakashi YOSHII	.long	0x9EC8E952
5963b041227STakashi YOSHII	.long	0x9999999A
5973b041227STakashi YOSHII	.long	0x948B0FCE
5983b041227STakashi YOSHII	.long	0x8F9C18FA
5993b041227STakashi YOSHII	.long	0x8ACB90F7
6003b041227STakashi YOSHII	.long	0x86186187
6013b041227STakashi YOSHII	.long	0x81818182
6023b041227STakashi YOSHII	.long	0x7D05F418
6033b041227STakashi YOSHII	.long	0x78A4C818
6043b041227STakashi YOSHII	.long	0x745D1746
6053b041227STakashi YOSHII	.long	0x702E05C1
6063b041227STakashi YOSHII	.long	0x6C16C16D
6073b041227STakashi YOSHII	.long	0x68168169
6083b041227STakashi YOSHII	.long	0x642C8591
6093b041227STakashi YOSHII	.long	0x60581606
6103b041227STakashi YOSHII	.long	0x5C9882BA
6113b041227STakashi YOSHII	.long	0x58ED2309
6123b041227STakashi YOSHIIdiv_table_inv:
6133b041227STakashi YOSHII	.long	0x55555556
6143b041227STakashi YOSHII	.long	0x51D07EAF
6153b041227STakashi YOSHII	.long	0x4E5E0A73
6163b041227STakashi YOSHII	.long	0x4AFD6A06
6173b041227STakashi YOSHII	.long	0x47AE147B
6183b041227STakashi YOSHII	.long	0x446F8657
6193b041227STakashi YOSHII	.long	0x41414142
6203b041227STakashi YOSHII	.long	0x3E22CBCF
6213b041227STakashi YOSHII	.long	0x3B13B13C
6223b041227STakashi YOSHII	.long	0x38138139
6233b041227STakashi YOSHII	.long	0x3521CFB3
6243b041227STakashi YOSHII	.long	0x323E34A3
6253b041227STakashi YOSHII	.long	0x2F684BDB
6263b041227STakashi YOSHII	.long	0x2C9FB4D9
6273b041227STakashi YOSHII	.long	0x29E4129F
6283b041227STakashi YOSHII	.long	0x27350B89
6293b041227STakashi YOSHII	.long	0x24924925
6303b041227STakashi YOSHII	.long	0x21FB7813
6313b041227STakashi YOSHII	.long	0x1F7047DD
6323b041227STakashi YOSHII	.long	0x1CF06ADB
6333b041227STakashi YOSHII	.long	0x1A7B9612
6343b041227STakashi YOSHII	.long	0x18118119
6353b041227STakashi YOSHII	.long	0x15B1E5F8
6363b041227STakashi YOSHII	.long	0x135C8114
6373b041227STakashi YOSHII	.long	0x11111112
6383b041227STakashi YOSHII	.long	0xECF56BF
6393b041227STakashi YOSHII	.long	0xC9714FC
6403b041227STakashi YOSHII	.long	0xA6810A7
6413b041227STakashi YOSHII	.long	0x8421085
6423b041227STakashi YOSHII	.long	0x624DD30
6433b041227STakashi YOSHII	.long	0x4104105
6443b041227STakashi YOSHII	.long	0x2040811
6453b041227STakashi YOSHII	/* maximum error: 0.987342 scaled: 0.921875*/
646