xref: /openbmc/u-boot/arch/sh/lib/udivsi3_i4i.S (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini/* SPDX-License-Identifier: GPL-2.0+ */
25f91a3adSMasahiro Yamada/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
35f91a3adSMasahiro Yamada   2004, 2005, 2006
45f91a3adSMasahiro Yamada   Free Software Foundation, Inc.
55f91a3adSMasahiro Yamada */
65f91a3adSMasahiro Yamada
75f91a3adSMasahiro Yamada!! libgcc routines for the Renesas / SuperH SH CPUs.
85f91a3adSMasahiro Yamada!! Contributed by Steve Chamberlain.
95f91a3adSMasahiro Yamada!! sac@cygnus.com
105f91a3adSMasahiro Yamada
115f91a3adSMasahiro Yamada!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
125f91a3adSMasahiro Yamada!! recoded in assembly by Toshiyasu Morita
135f91a3adSMasahiro Yamada!! tm@netcom.com
145f91a3adSMasahiro Yamada
155f91a3adSMasahiro Yamada/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
165f91a3adSMasahiro Yamada   ELF local label prefixes by J"orn Rennecke
175f91a3adSMasahiro Yamada   amylaar@cygnus.com  */
185f91a3adSMasahiro Yamada
195f91a3adSMasahiro Yamada/* This code used shld, thus is not suitable for SH1 / SH2.  */
205f91a3adSMasahiro Yamada
215f91a3adSMasahiro Yamada/* Signed / unsigned division without use of FPU, optimized for SH4.
225f91a3adSMasahiro Yamada   Uses a lookup table for divisors in the range -128 .. +128, and
235f91a3adSMasahiro Yamada   div1 with case distinction for larger divisors in three more ranges.
245f91a3adSMasahiro Yamada   The code is lumped together with the table to allow the use of mova.  */
255f91a3adSMasahiro Yamada#ifdef CONFIG_CPU_LITTLE_ENDIAN
265f91a3adSMasahiro Yamada#define L_LSB 0
275f91a3adSMasahiro Yamada#define L_LSWMSB 1
285f91a3adSMasahiro Yamada#define L_MSWLSB 2
295f91a3adSMasahiro Yamada#else
305f91a3adSMasahiro Yamada#define L_LSB 3
315f91a3adSMasahiro Yamada#define L_LSWMSB 2
325f91a3adSMasahiro Yamada#define L_MSWLSB 1
335f91a3adSMasahiro Yamada#endif
345f91a3adSMasahiro Yamada
355f91a3adSMasahiro Yamada	.balign 4
365f91a3adSMasahiro Yamada	.global	__udivsi3_i4i
375f91a3adSMasahiro Yamada	.global	__udivsi3_i4
385f91a3adSMasahiro Yamada	.set	__udivsi3_i4, __udivsi3_i4i
395f91a3adSMasahiro Yamada	.type	__udivsi3_i4i, @function
405f91a3adSMasahiro Yamada__udivsi3_i4i:
415f91a3adSMasahiro Yamada	mov.w c128_w, r1
425f91a3adSMasahiro Yamada	div0u
435f91a3adSMasahiro Yamada	mov r4,r0
445f91a3adSMasahiro Yamada	shlr8 r0
455f91a3adSMasahiro Yamada	cmp/hi r1,r5
465f91a3adSMasahiro Yamada	extu.w r5,r1
475f91a3adSMasahiro Yamada	bf udiv_le128
485f91a3adSMasahiro Yamada	cmp/eq r5,r1
495f91a3adSMasahiro Yamada	bf udiv_ge64k
505f91a3adSMasahiro Yamada	shlr r0
515f91a3adSMasahiro Yamada	mov r5,r1
525f91a3adSMasahiro Yamada	shll16 r5
535f91a3adSMasahiro Yamada	mov.l r4,@-r15
545f91a3adSMasahiro Yamada	div1 r5,r0
555f91a3adSMasahiro Yamada	mov.l r1,@-r15
565f91a3adSMasahiro Yamada	div1 r5,r0
575f91a3adSMasahiro Yamada	div1 r5,r0
585f91a3adSMasahiro Yamada	bra udiv_25
595f91a3adSMasahiro Yamada	div1 r5,r0
605f91a3adSMasahiro Yamada
615f91a3adSMasahiro Yamadadiv_le128:
625f91a3adSMasahiro Yamada	mova div_table_ix,r0
635f91a3adSMasahiro Yamada	bra div_le128_2
645f91a3adSMasahiro Yamada	mov.b @(r0,r5),r1
655f91a3adSMasahiro Yamadaudiv_le128:
665f91a3adSMasahiro Yamada	mov.l r4,@-r15
675f91a3adSMasahiro Yamada	mova div_table_ix,r0
685f91a3adSMasahiro Yamada	mov.b @(r0,r5),r1
695f91a3adSMasahiro Yamada	mov.l r5,@-r15
705f91a3adSMasahiro Yamadadiv_le128_2:
715f91a3adSMasahiro Yamada	mova div_table_inv,r0
725f91a3adSMasahiro Yamada	mov.l @(r0,r1),r1
735f91a3adSMasahiro Yamada	mov r5,r0
745f91a3adSMasahiro Yamada	tst #0xfe,r0
755f91a3adSMasahiro Yamada	mova div_table_clz,r0
765f91a3adSMasahiro Yamada	dmulu.l r1,r4
775f91a3adSMasahiro Yamada	mov.b @(r0,r5),r1
785f91a3adSMasahiro Yamada	bt/s div_by_1
795f91a3adSMasahiro Yamada	mov r4,r0
805f91a3adSMasahiro Yamada	mov.l @r15+,r5
815f91a3adSMasahiro Yamada	sts mach,r0
825f91a3adSMasahiro Yamada	/* clrt */
835f91a3adSMasahiro Yamada	addc r4,r0
845f91a3adSMasahiro Yamada	mov.l @r15+,r4
855f91a3adSMasahiro Yamada	rotcr r0
865f91a3adSMasahiro Yamada	rts
875f91a3adSMasahiro Yamada	shld r1,r0
885f91a3adSMasahiro Yamada
895f91a3adSMasahiro Yamadadiv_by_1_neg:
905f91a3adSMasahiro Yamada	neg r4,r0
915f91a3adSMasahiro Yamadadiv_by_1:
925f91a3adSMasahiro Yamada	mov.l @r15+,r5
935f91a3adSMasahiro Yamada	rts
945f91a3adSMasahiro Yamada	mov.l @r15+,r4
955f91a3adSMasahiro Yamada
965f91a3adSMasahiro Yamadadiv_ge64k:
975f91a3adSMasahiro Yamada	bt/s div_r8
985f91a3adSMasahiro Yamada	div0u
995f91a3adSMasahiro Yamada	shll8 r5
1005f91a3adSMasahiro Yamada	bra div_ge64k_2
1015f91a3adSMasahiro Yamada	div1 r5,r0
1025f91a3adSMasahiro Yamadaudiv_ge64k:
1035f91a3adSMasahiro Yamada	cmp/hi r0,r5
1045f91a3adSMasahiro Yamada	mov r5,r1
1055f91a3adSMasahiro Yamada	bt udiv_r8
1065f91a3adSMasahiro Yamada	shll8 r5
1075f91a3adSMasahiro Yamada	mov.l r4,@-r15
1085f91a3adSMasahiro Yamada	div1 r5,r0
1095f91a3adSMasahiro Yamada	mov.l r1,@-r15
1105f91a3adSMasahiro Yamadadiv_ge64k_2:
1115f91a3adSMasahiro Yamada	div1 r5,r0
1125f91a3adSMasahiro Yamada	mov.l zero_l,r1
1135f91a3adSMasahiro Yamada	.rept 4
1145f91a3adSMasahiro Yamada	div1 r5,r0
1155f91a3adSMasahiro Yamada	.endr
1165f91a3adSMasahiro Yamada	mov.l r1,@-r15
1175f91a3adSMasahiro Yamada	div1 r5,r0
1185f91a3adSMasahiro Yamada	mov.w m256_w,r1
1195f91a3adSMasahiro Yamada	div1 r5,r0
1205f91a3adSMasahiro Yamada	mov.b r0,@(L_LSWMSB,r15)
1215f91a3adSMasahiro Yamada	xor r4,r0
1225f91a3adSMasahiro Yamada	and r1,r0
1235f91a3adSMasahiro Yamada	bra div_ge64k_end
1245f91a3adSMasahiro Yamada	xor r4,r0
1255f91a3adSMasahiro Yamadadiv_r8:
1265f91a3adSMasahiro Yamada	shll16 r4
1275f91a3adSMasahiro Yamada	bra div_r8_2
1285f91a3adSMasahiro Yamada	shll8 r4
1295f91a3adSMasahiro Yamadaudiv_r8:
1305f91a3adSMasahiro Yamada	mov.l r4,@-r15
1315f91a3adSMasahiro Yamada	shll16 r4
1325f91a3adSMasahiro Yamada	clrt
1335f91a3adSMasahiro Yamada	shll8 r4
1345f91a3adSMasahiro Yamada	mov.l r5,@-r15
1355f91a3adSMasahiro Yamadadiv_r8_2:
1365f91a3adSMasahiro Yamada	rotcl r4
1375f91a3adSMasahiro Yamada	mov r0,r1
1385f91a3adSMasahiro Yamada	div1 r5,r1
1395f91a3adSMasahiro Yamada	mov r4,r0
1405f91a3adSMasahiro Yamada	rotcl r0
1415f91a3adSMasahiro Yamada	mov r5,r4
1425f91a3adSMasahiro Yamada	div1 r5,r1
1435f91a3adSMasahiro Yamada	.rept 5
1445f91a3adSMasahiro Yamada	rotcl r0; div1 r5,r1
1455f91a3adSMasahiro Yamada	.endr
1465f91a3adSMasahiro Yamada	rotcl r0
1475f91a3adSMasahiro Yamada	mov.l @r15+,r5
1485f91a3adSMasahiro Yamada	div1 r4,r1
1495f91a3adSMasahiro Yamada	mov.l @r15+,r4
1505f91a3adSMasahiro Yamada	rts
1515f91a3adSMasahiro Yamada	rotcl r0
1525f91a3adSMasahiro Yamada
1535f91a3adSMasahiro Yamada	.global	__sdivsi3_i4i
1545f91a3adSMasahiro Yamada	.global __sdivsi3_i4
1555f91a3adSMasahiro Yamada	.global	__sdivsi3
1565f91a3adSMasahiro Yamada	.set	__sdivsi3_i4, __sdivsi3_i4i
1575f91a3adSMasahiro Yamada	.set	__sdivsi3, __sdivsi3_i4i
1585f91a3adSMasahiro Yamada	.type	__sdivsi3_i4i, @function
1595f91a3adSMasahiro Yamada	/* This is link-compatible with a __sdivsi3 call,
1605f91a3adSMasahiro Yamada	   but we effectively clobber only r1.  */
1615f91a3adSMasahiro Yamada__sdivsi3_i4i:
1625f91a3adSMasahiro Yamada	mov.l r4,@-r15
1635f91a3adSMasahiro Yamada	cmp/pz r5
1645f91a3adSMasahiro Yamada	mov.w c128_w, r1
1655f91a3adSMasahiro Yamada	bt/s pos_divisor
1665f91a3adSMasahiro Yamada	cmp/pz r4
1675f91a3adSMasahiro Yamada	mov.l r5,@-r15
1685f91a3adSMasahiro Yamada	neg r5,r5
1695f91a3adSMasahiro Yamada	bt/s neg_result
1705f91a3adSMasahiro Yamada	cmp/hi r1,r5
1715f91a3adSMasahiro Yamada	neg r4,r4
1725f91a3adSMasahiro Yamadapos_result:
1735f91a3adSMasahiro Yamada	extu.w r5,r0
1745f91a3adSMasahiro Yamada	bf div_le128
1755f91a3adSMasahiro Yamada	cmp/eq r5,r0
1765f91a3adSMasahiro Yamada	mov r4,r0
1775f91a3adSMasahiro Yamada	shlr8 r0
1785f91a3adSMasahiro Yamada	bf/s div_ge64k
1795f91a3adSMasahiro Yamada	cmp/hi r0,r5
1805f91a3adSMasahiro Yamada	div0u
1815f91a3adSMasahiro Yamada	shll16 r5
1825f91a3adSMasahiro Yamada	div1 r5,r0
1835f91a3adSMasahiro Yamada	div1 r5,r0
1845f91a3adSMasahiro Yamada	div1 r5,r0
1855f91a3adSMasahiro Yamadaudiv_25:
1865f91a3adSMasahiro Yamada	mov.l zero_l,r1
1875f91a3adSMasahiro Yamada	div1 r5,r0
1885f91a3adSMasahiro Yamada	div1 r5,r0
1895f91a3adSMasahiro Yamada	mov.l r1,@-r15
1905f91a3adSMasahiro Yamada	.rept 3
1915f91a3adSMasahiro Yamada	div1 r5,r0
1925f91a3adSMasahiro Yamada	.endr
1935f91a3adSMasahiro Yamada	mov.b r0,@(L_MSWLSB,r15)
1945f91a3adSMasahiro Yamada	xtrct r4,r0
1955f91a3adSMasahiro Yamada	swap.w r0,r0
1965f91a3adSMasahiro Yamada	.rept 8
1975f91a3adSMasahiro Yamada	div1 r5,r0
1985f91a3adSMasahiro Yamada	.endr
1995f91a3adSMasahiro Yamada	mov.b r0,@(L_LSWMSB,r15)
2005f91a3adSMasahiro Yamadadiv_ge64k_end:
2015f91a3adSMasahiro Yamada	.rept 8
2025f91a3adSMasahiro Yamada	div1 r5,r0
2035f91a3adSMasahiro Yamada	.endr
2045f91a3adSMasahiro Yamada	mov.l @r15+,r4 ! zero-extension and swap using LS unit.
2055f91a3adSMasahiro Yamada	extu.b r0,r0
2065f91a3adSMasahiro Yamada	mov.l @r15+,r5
2075f91a3adSMasahiro Yamada	or r4,r0
2085f91a3adSMasahiro Yamada	mov.l @r15+,r4
2095f91a3adSMasahiro Yamada	rts
2105f91a3adSMasahiro Yamada	rotcl r0
2115f91a3adSMasahiro Yamada
2125f91a3adSMasahiro Yamadadiv_le128_neg:
2135f91a3adSMasahiro Yamada	tst #0xfe,r0
2145f91a3adSMasahiro Yamada	mova div_table_ix,r0
2155f91a3adSMasahiro Yamada	mov.b @(r0,r5),r1
2165f91a3adSMasahiro Yamada	mova div_table_inv,r0
2175f91a3adSMasahiro Yamada	bt/s div_by_1_neg
2185f91a3adSMasahiro Yamada	mov.l @(r0,r1),r1
2195f91a3adSMasahiro Yamada	mova div_table_clz,r0
2205f91a3adSMasahiro Yamada	dmulu.l r1,r4
2215f91a3adSMasahiro Yamada	mov.b @(r0,r5),r1
2225f91a3adSMasahiro Yamada	mov.l @r15+,r5
2235f91a3adSMasahiro Yamada	sts mach,r0
2245f91a3adSMasahiro Yamada	/* clrt */
2255f91a3adSMasahiro Yamada	addc r4,r0
2265f91a3adSMasahiro Yamada	mov.l @r15+,r4
2275f91a3adSMasahiro Yamada	rotcr r0
2285f91a3adSMasahiro Yamada	shld r1,r0
2295f91a3adSMasahiro Yamada	rts
2305f91a3adSMasahiro Yamada	neg r0,r0
2315f91a3adSMasahiro Yamada
2325f91a3adSMasahiro Yamadapos_divisor:
2335f91a3adSMasahiro Yamada	mov.l r5,@-r15
2345f91a3adSMasahiro Yamada	bt/s pos_result
2355f91a3adSMasahiro Yamada	cmp/hi r1,r5
2365f91a3adSMasahiro Yamada	neg r4,r4
2375f91a3adSMasahiro Yamadaneg_result:
2385f91a3adSMasahiro Yamada	extu.w r5,r0
2395f91a3adSMasahiro Yamada	bf div_le128_neg
2405f91a3adSMasahiro Yamada	cmp/eq r5,r0
2415f91a3adSMasahiro Yamada	mov r4,r0
2425f91a3adSMasahiro Yamada	shlr8 r0
2435f91a3adSMasahiro Yamada	bf/s div_ge64k_neg
2445f91a3adSMasahiro Yamada	cmp/hi r0,r5
2455f91a3adSMasahiro Yamada	div0u
2465f91a3adSMasahiro Yamada	mov.l zero_l,r1
2475f91a3adSMasahiro Yamada	shll16 r5
2485f91a3adSMasahiro Yamada	div1 r5,r0
2495f91a3adSMasahiro Yamada	mov.l r1,@-r15
2505f91a3adSMasahiro Yamada	.rept 7
2515f91a3adSMasahiro Yamada	div1 r5,r0
2525f91a3adSMasahiro Yamada	.endr
2535f91a3adSMasahiro Yamada	mov.b r0,@(L_MSWLSB,r15)
2545f91a3adSMasahiro Yamada	xtrct r4,r0
2555f91a3adSMasahiro Yamada	swap.w r0,r0
2565f91a3adSMasahiro Yamada	.rept 8
2575f91a3adSMasahiro Yamada	div1 r5,r0
2585f91a3adSMasahiro Yamada	.endr
2595f91a3adSMasahiro Yamada	mov.b r0,@(L_LSWMSB,r15)
2605f91a3adSMasahiro Yamadadiv_ge64k_neg_end:
2615f91a3adSMasahiro Yamada	.rept 8
2625f91a3adSMasahiro Yamada	div1 r5,r0
2635f91a3adSMasahiro Yamada	.endr
2645f91a3adSMasahiro Yamada	mov.l @r15+,r4 ! zero-extension and swap using LS unit.
2655f91a3adSMasahiro Yamada	extu.b r0,r1
2665f91a3adSMasahiro Yamada	mov.l @r15+,r5
2675f91a3adSMasahiro Yamada	or r4,r1
2685f91a3adSMasahiro Yamadadiv_r8_neg_end:
2695f91a3adSMasahiro Yamada	mov.l @r15+,r4
2705f91a3adSMasahiro Yamada	rotcl r1
2715f91a3adSMasahiro Yamada	rts
2725f91a3adSMasahiro Yamada	neg r1,r0
2735f91a3adSMasahiro Yamada
2745f91a3adSMasahiro Yamadadiv_ge64k_neg:
2755f91a3adSMasahiro Yamada	bt/s div_r8_neg
2765f91a3adSMasahiro Yamada	div0u
2775f91a3adSMasahiro Yamada	shll8 r5
2785f91a3adSMasahiro Yamada	mov.l zero_l,r1
2795f91a3adSMasahiro Yamada	.rept 6
2805f91a3adSMasahiro Yamada	div1 r5,r0
2815f91a3adSMasahiro Yamada	.endr
2825f91a3adSMasahiro Yamada	mov.l r1,@-r15
2835f91a3adSMasahiro Yamada	div1 r5,r0
2845f91a3adSMasahiro Yamada	mov.w m256_w,r1
2855f91a3adSMasahiro Yamada	div1 r5,r0
2865f91a3adSMasahiro Yamada	mov.b r0,@(L_LSWMSB,r15)
2875f91a3adSMasahiro Yamada	xor r4,r0
2885f91a3adSMasahiro Yamada	and r1,r0
2895f91a3adSMasahiro Yamada	bra div_ge64k_neg_end
2905f91a3adSMasahiro Yamada	xor r4,r0
2915f91a3adSMasahiro Yamada
2925f91a3adSMasahiro Yamadac128_w:
2935f91a3adSMasahiro Yamada	.word 128
2945f91a3adSMasahiro Yamada
2955f91a3adSMasahiro Yamadadiv_r8_neg:
2965f91a3adSMasahiro Yamada	clrt
2975f91a3adSMasahiro Yamada	shll16 r4
2985f91a3adSMasahiro Yamada	mov r4,r1
2995f91a3adSMasahiro Yamada	shll8 r1
3005f91a3adSMasahiro Yamada	mov r5,r4
3015f91a3adSMasahiro Yamada	.rept 7
3025f91a3adSMasahiro Yamada	rotcl r1; div1 r5,r0
3035f91a3adSMasahiro Yamada	.endr
3045f91a3adSMasahiro Yamada	mov.l @r15+,r5
3055f91a3adSMasahiro Yamada	rotcl r1
3065f91a3adSMasahiro Yamada	bra div_r8_neg_end
3075f91a3adSMasahiro Yamada	div1 r4,r0
3085f91a3adSMasahiro Yamada
3095f91a3adSMasahiro Yamadam256_w:
3105f91a3adSMasahiro Yamada	.word 0xff00
3115f91a3adSMasahiro Yamada/* This table has been generated by divtab-sh4.c.  */
3125f91a3adSMasahiro Yamada	.balign 4
3135f91a3adSMasahiro Yamadadiv_table_clz:
3145f91a3adSMasahiro Yamada	.byte	0
3155f91a3adSMasahiro Yamada	.byte	1
3165f91a3adSMasahiro Yamada	.byte	0
3175f91a3adSMasahiro Yamada	.byte	-1
3185f91a3adSMasahiro Yamada	.byte	-1
3195f91a3adSMasahiro Yamada	.byte	-2
3205f91a3adSMasahiro Yamada	.byte	-2
3215f91a3adSMasahiro Yamada	.byte	-2
3225f91a3adSMasahiro Yamada	.byte	-2
3235f91a3adSMasahiro Yamada	.byte	-3
3245f91a3adSMasahiro Yamada	.byte	-3
3255f91a3adSMasahiro Yamada	.byte	-3
3265f91a3adSMasahiro Yamada	.byte	-3
3275f91a3adSMasahiro Yamada	.byte	-3
3285f91a3adSMasahiro Yamada	.byte	-3
3295f91a3adSMasahiro Yamada	.byte	-3
3305f91a3adSMasahiro Yamada	.byte	-3
3315f91a3adSMasahiro Yamada	.byte	-4
3325f91a3adSMasahiro Yamada	.byte	-4
3335f91a3adSMasahiro Yamada	.byte	-4
3345f91a3adSMasahiro Yamada	.byte	-4
3355f91a3adSMasahiro Yamada	.byte	-4
3365f91a3adSMasahiro Yamada	.byte	-4
3375f91a3adSMasahiro Yamada	.byte	-4
3385f91a3adSMasahiro Yamada	.byte	-4
3395f91a3adSMasahiro Yamada	.byte	-4
3405f91a3adSMasahiro Yamada	.byte	-4
3415f91a3adSMasahiro Yamada	.byte	-4
3425f91a3adSMasahiro Yamada	.byte	-4
3435f91a3adSMasahiro Yamada	.byte	-4
3445f91a3adSMasahiro Yamada	.byte	-4
3455f91a3adSMasahiro Yamada	.byte	-4
3465f91a3adSMasahiro Yamada	.byte	-4
3475f91a3adSMasahiro Yamada	.byte	-5
3485f91a3adSMasahiro Yamada	.byte	-5
3495f91a3adSMasahiro Yamada	.byte	-5
3505f91a3adSMasahiro Yamada	.byte	-5
3515f91a3adSMasahiro Yamada	.byte	-5
3525f91a3adSMasahiro Yamada	.byte	-5
3535f91a3adSMasahiro Yamada	.byte	-5
3545f91a3adSMasahiro Yamada	.byte	-5
3555f91a3adSMasahiro Yamada	.byte	-5
3565f91a3adSMasahiro Yamada	.byte	-5
3575f91a3adSMasahiro Yamada	.byte	-5
3585f91a3adSMasahiro Yamada	.byte	-5
3595f91a3adSMasahiro Yamada	.byte	-5
3605f91a3adSMasahiro Yamada	.byte	-5
3615f91a3adSMasahiro Yamada	.byte	-5
3625f91a3adSMasahiro Yamada	.byte	-5
3635f91a3adSMasahiro Yamada	.byte	-5
3645f91a3adSMasahiro Yamada	.byte	-5
3655f91a3adSMasahiro Yamada	.byte	-5
3665f91a3adSMasahiro Yamada	.byte	-5
3675f91a3adSMasahiro Yamada	.byte	-5
3685f91a3adSMasahiro Yamada	.byte	-5
3695f91a3adSMasahiro Yamada	.byte	-5
3705f91a3adSMasahiro Yamada	.byte	-5
3715f91a3adSMasahiro Yamada	.byte	-5
3725f91a3adSMasahiro Yamada	.byte	-5
3735f91a3adSMasahiro Yamada	.byte	-5
3745f91a3adSMasahiro Yamada	.byte	-5
3755f91a3adSMasahiro Yamada	.byte	-5
3765f91a3adSMasahiro Yamada	.byte	-5
3775f91a3adSMasahiro Yamada	.byte	-5
3785f91a3adSMasahiro Yamada	.byte	-5
3795f91a3adSMasahiro Yamada	.byte	-6
3805f91a3adSMasahiro Yamada	.byte	-6
3815f91a3adSMasahiro Yamada	.byte	-6
3825f91a3adSMasahiro Yamada	.byte	-6
3835f91a3adSMasahiro Yamada	.byte	-6
3845f91a3adSMasahiro Yamada	.byte	-6
3855f91a3adSMasahiro Yamada	.byte	-6
3865f91a3adSMasahiro Yamada	.byte	-6
3875f91a3adSMasahiro Yamada	.byte	-6
3885f91a3adSMasahiro Yamada	.byte	-6
3895f91a3adSMasahiro Yamada	.byte	-6
3905f91a3adSMasahiro Yamada	.byte	-6
3915f91a3adSMasahiro Yamada	.byte	-6
3925f91a3adSMasahiro Yamada	.byte	-6
3935f91a3adSMasahiro Yamada	.byte	-6
3945f91a3adSMasahiro Yamada	.byte	-6
3955f91a3adSMasahiro Yamada	.byte	-6
3965f91a3adSMasahiro Yamada	.byte	-6
3975f91a3adSMasahiro Yamada	.byte	-6
3985f91a3adSMasahiro Yamada	.byte	-6
3995f91a3adSMasahiro Yamada	.byte	-6
4005f91a3adSMasahiro Yamada	.byte	-6
4015f91a3adSMasahiro Yamada	.byte	-6
4025f91a3adSMasahiro Yamada	.byte	-6
4035f91a3adSMasahiro Yamada	.byte	-6
4045f91a3adSMasahiro Yamada	.byte	-6
4055f91a3adSMasahiro Yamada	.byte	-6
4065f91a3adSMasahiro Yamada	.byte	-6
4075f91a3adSMasahiro Yamada	.byte	-6
4085f91a3adSMasahiro Yamada	.byte	-6
4095f91a3adSMasahiro Yamada	.byte	-6
4105f91a3adSMasahiro Yamada	.byte	-6
4115f91a3adSMasahiro Yamada	.byte	-6
4125f91a3adSMasahiro Yamada	.byte	-6
4135f91a3adSMasahiro Yamada	.byte	-6
4145f91a3adSMasahiro Yamada	.byte	-6
4155f91a3adSMasahiro Yamada	.byte	-6
4165f91a3adSMasahiro Yamada	.byte	-6
4175f91a3adSMasahiro Yamada	.byte	-6
4185f91a3adSMasahiro Yamada	.byte	-6
4195f91a3adSMasahiro Yamada	.byte	-6
4205f91a3adSMasahiro Yamada	.byte	-6
4215f91a3adSMasahiro Yamada	.byte	-6
4225f91a3adSMasahiro Yamada	.byte	-6
4235f91a3adSMasahiro Yamada	.byte	-6
4245f91a3adSMasahiro Yamada	.byte	-6
4255f91a3adSMasahiro Yamada	.byte	-6
4265f91a3adSMasahiro Yamada	.byte	-6
4275f91a3adSMasahiro Yamada	.byte	-6
4285f91a3adSMasahiro Yamada	.byte	-6
4295f91a3adSMasahiro Yamada	.byte	-6
4305f91a3adSMasahiro Yamada	.byte	-6
4315f91a3adSMasahiro Yamada	.byte	-6
4325f91a3adSMasahiro Yamada	.byte	-6
4335f91a3adSMasahiro Yamada	.byte	-6
4345f91a3adSMasahiro Yamada	.byte	-6
4355f91a3adSMasahiro Yamada	.byte	-6
4365f91a3adSMasahiro Yamada	.byte	-6
4375f91a3adSMasahiro Yamada	.byte	-6
4385f91a3adSMasahiro Yamada	.byte	-6
4395f91a3adSMasahiro Yamada	.byte	-6
4405f91a3adSMasahiro Yamada	.byte	-6
4415f91a3adSMasahiro Yamada	.byte	-6
4425f91a3adSMasahiro Yamada/* Lookup table translating positive divisor to index into table of
4435f91a3adSMasahiro Yamada   normalized inverse.  N.B. the '0' entry is also the last entry of the
4445f91a3adSMasahiro Yamada previous table, and causes an unaligned access for division by zero.  */
4455f91a3adSMasahiro Yamadadiv_table_ix:
4465f91a3adSMasahiro Yamada	.byte	-6
4475f91a3adSMasahiro Yamada	.byte	-128
4485f91a3adSMasahiro Yamada	.byte	-128
4495f91a3adSMasahiro Yamada	.byte	0
4505f91a3adSMasahiro Yamada	.byte	-128
4515f91a3adSMasahiro Yamada	.byte	-64
4525f91a3adSMasahiro Yamada	.byte	0
4535f91a3adSMasahiro Yamada	.byte	64
4545f91a3adSMasahiro Yamada	.byte	-128
4555f91a3adSMasahiro Yamada	.byte	-96
4565f91a3adSMasahiro Yamada	.byte	-64
4575f91a3adSMasahiro Yamada	.byte	-32
4585f91a3adSMasahiro Yamada	.byte	0
4595f91a3adSMasahiro Yamada	.byte	32
4605f91a3adSMasahiro Yamada	.byte	64
4615f91a3adSMasahiro Yamada	.byte	96
4625f91a3adSMasahiro Yamada	.byte	-128
4635f91a3adSMasahiro Yamada	.byte	-112
4645f91a3adSMasahiro Yamada	.byte	-96
4655f91a3adSMasahiro Yamada	.byte	-80
4665f91a3adSMasahiro Yamada	.byte	-64
4675f91a3adSMasahiro Yamada	.byte	-48
4685f91a3adSMasahiro Yamada	.byte	-32
4695f91a3adSMasahiro Yamada	.byte	-16
4705f91a3adSMasahiro Yamada	.byte	0
4715f91a3adSMasahiro Yamada	.byte	16
4725f91a3adSMasahiro Yamada	.byte	32
4735f91a3adSMasahiro Yamada	.byte	48
4745f91a3adSMasahiro Yamada	.byte	64
4755f91a3adSMasahiro Yamada	.byte	80
4765f91a3adSMasahiro Yamada	.byte	96
4775f91a3adSMasahiro Yamada	.byte	112
4785f91a3adSMasahiro Yamada	.byte	-128
4795f91a3adSMasahiro Yamada	.byte	-120
4805f91a3adSMasahiro Yamada	.byte	-112
4815f91a3adSMasahiro Yamada	.byte	-104
4825f91a3adSMasahiro Yamada	.byte	-96
4835f91a3adSMasahiro Yamada	.byte	-88
4845f91a3adSMasahiro Yamada	.byte	-80
4855f91a3adSMasahiro Yamada	.byte	-72
4865f91a3adSMasahiro Yamada	.byte	-64
4875f91a3adSMasahiro Yamada	.byte	-56
4885f91a3adSMasahiro Yamada	.byte	-48
4895f91a3adSMasahiro Yamada	.byte	-40
4905f91a3adSMasahiro Yamada	.byte	-32
4915f91a3adSMasahiro Yamada	.byte	-24
4925f91a3adSMasahiro Yamada	.byte	-16
4935f91a3adSMasahiro Yamada	.byte	-8
4945f91a3adSMasahiro Yamada	.byte	0
4955f91a3adSMasahiro Yamada	.byte	8
4965f91a3adSMasahiro Yamada	.byte	16
4975f91a3adSMasahiro Yamada	.byte	24
4985f91a3adSMasahiro Yamada	.byte	32
4995f91a3adSMasahiro Yamada	.byte	40
5005f91a3adSMasahiro Yamada	.byte	48
5015f91a3adSMasahiro Yamada	.byte	56
5025f91a3adSMasahiro Yamada	.byte	64
5035f91a3adSMasahiro Yamada	.byte	72
5045f91a3adSMasahiro Yamada	.byte	80
5055f91a3adSMasahiro Yamada	.byte	88
5065f91a3adSMasahiro Yamada	.byte	96
5075f91a3adSMasahiro Yamada	.byte	104
5085f91a3adSMasahiro Yamada	.byte	112
5095f91a3adSMasahiro Yamada	.byte	120
5105f91a3adSMasahiro Yamada	.byte	-128
5115f91a3adSMasahiro Yamada	.byte	-124
5125f91a3adSMasahiro Yamada	.byte	-120
5135f91a3adSMasahiro Yamada	.byte	-116
5145f91a3adSMasahiro Yamada	.byte	-112
5155f91a3adSMasahiro Yamada	.byte	-108
5165f91a3adSMasahiro Yamada	.byte	-104
5175f91a3adSMasahiro Yamada	.byte	-100
5185f91a3adSMasahiro Yamada	.byte	-96
5195f91a3adSMasahiro Yamada	.byte	-92
5205f91a3adSMasahiro Yamada	.byte	-88
5215f91a3adSMasahiro Yamada	.byte	-84
5225f91a3adSMasahiro Yamada	.byte	-80
5235f91a3adSMasahiro Yamada	.byte	-76
5245f91a3adSMasahiro Yamada	.byte	-72
5255f91a3adSMasahiro Yamada	.byte	-68
5265f91a3adSMasahiro Yamada	.byte	-64
5275f91a3adSMasahiro Yamada	.byte	-60
5285f91a3adSMasahiro Yamada	.byte	-56
5295f91a3adSMasahiro Yamada	.byte	-52
5305f91a3adSMasahiro Yamada	.byte	-48
5315f91a3adSMasahiro Yamada	.byte	-44
5325f91a3adSMasahiro Yamada	.byte	-40
5335f91a3adSMasahiro Yamada	.byte	-36
5345f91a3adSMasahiro Yamada	.byte	-32
5355f91a3adSMasahiro Yamada	.byte	-28
5365f91a3adSMasahiro Yamada	.byte	-24
5375f91a3adSMasahiro Yamada	.byte	-20
5385f91a3adSMasahiro Yamada	.byte	-16
5395f91a3adSMasahiro Yamada	.byte	-12
5405f91a3adSMasahiro Yamada	.byte	-8
5415f91a3adSMasahiro Yamada	.byte	-4
5425f91a3adSMasahiro Yamada	.byte	0
5435f91a3adSMasahiro Yamada	.byte	4
5445f91a3adSMasahiro Yamada	.byte	8
5455f91a3adSMasahiro Yamada	.byte	12
5465f91a3adSMasahiro Yamada	.byte	16
5475f91a3adSMasahiro Yamada	.byte	20
5485f91a3adSMasahiro Yamada	.byte	24
5495f91a3adSMasahiro Yamada	.byte	28
5505f91a3adSMasahiro Yamada	.byte	32
5515f91a3adSMasahiro Yamada	.byte	36
5525f91a3adSMasahiro Yamada	.byte	40
5535f91a3adSMasahiro Yamada	.byte	44
5545f91a3adSMasahiro Yamada	.byte	48
5555f91a3adSMasahiro Yamada	.byte	52
5565f91a3adSMasahiro Yamada	.byte	56
5575f91a3adSMasahiro Yamada	.byte	60
5585f91a3adSMasahiro Yamada	.byte	64
5595f91a3adSMasahiro Yamada	.byte	68
5605f91a3adSMasahiro Yamada	.byte	72
5615f91a3adSMasahiro Yamada	.byte	76
5625f91a3adSMasahiro Yamada	.byte	80
5635f91a3adSMasahiro Yamada	.byte	84
5645f91a3adSMasahiro Yamada	.byte	88
5655f91a3adSMasahiro Yamada	.byte	92
5665f91a3adSMasahiro Yamada	.byte	96
5675f91a3adSMasahiro Yamada	.byte	100
5685f91a3adSMasahiro Yamada	.byte	104
5695f91a3adSMasahiro Yamada	.byte	108
5705f91a3adSMasahiro Yamada	.byte	112
5715f91a3adSMasahiro Yamada	.byte	116
5725f91a3adSMasahiro Yamada	.byte	120
5735f91a3adSMasahiro Yamada	.byte	124
5745f91a3adSMasahiro Yamada	.byte	-128
5755f91a3adSMasahiro Yamada/* 1/64 .. 1/127, normalized.  There is an implicit leading 1 in bit 32.  */
5765f91a3adSMasahiro Yamada	.balign 4
5775f91a3adSMasahiro Yamadazero_l:
5785f91a3adSMasahiro Yamada	.long	0x0
5795f91a3adSMasahiro Yamada	.long	0xF81F81F9
5805f91a3adSMasahiro Yamada	.long	0xF07C1F08
5815f91a3adSMasahiro Yamada	.long	0xE9131AC0
5825f91a3adSMasahiro Yamada	.long	0xE1E1E1E2
5835f91a3adSMasahiro Yamada	.long	0xDAE6076C
5845f91a3adSMasahiro Yamada	.long	0xD41D41D5
5855f91a3adSMasahiro Yamada	.long	0xCD856891
5865f91a3adSMasahiro Yamada	.long	0xC71C71C8
5875f91a3adSMasahiro Yamada	.long	0xC0E07039
5885f91a3adSMasahiro Yamada	.long	0xBACF914D
5895f91a3adSMasahiro Yamada	.long	0xB4E81B4F
5905f91a3adSMasahiro Yamada	.long	0xAF286BCB
5915f91a3adSMasahiro Yamada	.long	0xA98EF607
5925f91a3adSMasahiro Yamada	.long	0xA41A41A5
5935f91a3adSMasahiro Yamada	.long	0x9EC8E952
5945f91a3adSMasahiro Yamada	.long	0x9999999A
5955f91a3adSMasahiro Yamada	.long	0x948B0FCE
5965f91a3adSMasahiro Yamada	.long	0x8F9C18FA
5975f91a3adSMasahiro Yamada	.long	0x8ACB90F7
5985f91a3adSMasahiro Yamada	.long	0x86186187
5995f91a3adSMasahiro Yamada	.long	0x81818182
6005f91a3adSMasahiro Yamada	.long	0x7D05F418
6015f91a3adSMasahiro Yamada	.long	0x78A4C818
6025f91a3adSMasahiro Yamada	.long	0x745D1746
6035f91a3adSMasahiro Yamada	.long	0x702E05C1
6045f91a3adSMasahiro Yamada	.long	0x6C16C16D
6055f91a3adSMasahiro Yamada	.long	0x68168169
6065f91a3adSMasahiro Yamada	.long	0x642C8591
6075f91a3adSMasahiro Yamada	.long	0x60581606
6085f91a3adSMasahiro Yamada	.long	0x5C9882BA
6095f91a3adSMasahiro Yamada	.long	0x58ED2309
6105f91a3adSMasahiro Yamadadiv_table_inv:
6115f91a3adSMasahiro Yamada	.long	0x55555556
6125f91a3adSMasahiro Yamada	.long	0x51D07EAF
6135f91a3adSMasahiro Yamada	.long	0x4E5E0A73
6145f91a3adSMasahiro Yamada	.long	0x4AFD6A06
6155f91a3adSMasahiro Yamada	.long	0x47AE147B
6165f91a3adSMasahiro Yamada	.long	0x446F8657
6175f91a3adSMasahiro Yamada	.long	0x41414142
6185f91a3adSMasahiro Yamada	.long	0x3E22CBCF
6195f91a3adSMasahiro Yamada	.long	0x3B13B13C
6205f91a3adSMasahiro Yamada	.long	0x38138139
6215f91a3adSMasahiro Yamada	.long	0x3521CFB3
6225f91a3adSMasahiro Yamada	.long	0x323E34A3
6235f91a3adSMasahiro Yamada	.long	0x2F684BDB
6245f91a3adSMasahiro Yamada	.long	0x2C9FB4D9
6255f91a3adSMasahiro Yamada	.long	0x29E4129F
6265f91a3adSMasahiro Yamada	.long	0x27350B89
6275f91a3adSMasahiro Yamada	.long	0x24924925
6285f91a3adSMasahiro Yamada	.long	0x21FB7813
6295f91a3adSMasahiro Yamada	.long	0x1F7047DD
6305f91a3adSMasahiro Yamada	.long	0x1CF06ADB
6315f91a3adSMasahiro Yamada	.long	0x1A7B9612
6325f91a3adSMasahiro Yamada	.long	0x18118119
6335f91a3adSMasahiro Yamada	.long	0x15B1E5F8
6345f91a3adSMasahiro Yamada	.long	0x135C8114
6355f91a3adSMasahiro Yamada	.long	0x11111112
6365f91a3adSMasahiro Yamada	.long	0xECF56BF
6375f91a3adSMasahiro Yamada	.long	0xC9714FC
6385f91a3adSMasahiro Yamada	.long	0xA6810A7
6395f91a3adSMasahiro Yamada	.long	0x8421085
6405f91a3adSMasahiro Yamada	.long	0x624DD30
6415f91a3adSMasahiro Yamada	.long	0x4104105
6425f91a3adSMasahiro Yamada	.long	0x2040811
6435f91a3adSMasahiro Yamada	/* maximum error: 0.987342 scaled: 0.921875*/
644