xref: /rk3399_rockchip-uboot/arch/sh/lib/udivsi3_i4i.S (revision 9b5b60a05cb8bba2d135439419b2030764e359bd)
1*5f91a3adSMasahiro Yamada/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
2*5f91a3adSMasahiro Yamada   2004, 2005, 2006
3*5f91a3adSMasahiro Yamada   Free Software Foundation, Inc.
4*5f91a3adSMasahiro Yamada
5*5f91a3adSMasahiro Yamada * SPDX-License-Identifier:	GPL-2.0+
6*5f91a3adSMasahiro Yamada */
7*5f91a3adSMasahiro Yamada
8*5f91a3adSMasahiro Yamada!! libgcc routines for the Renesas / SuperH SH CPUs.
9*5f91a3adSMasahiro Yamada!! Contributed by Steve Chamberlain.
10*5f91a3adSMasahiro Yamada!! sac@cygnus.com
11*5f91a3adSMasahiro Yamada
12*5f91a3adSMasahiro Yamada!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
13*5f91a3adSMasahiro Yamada!! recoded in assembly by Toshiyasu Morita
14*5f91a3adSMasahiro Yamada!! tm@netcom.com
15*5f91a3adSMasahiro Yamada
16*5f91a3adSMasahiro Yamada/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
17*5f91a3adSMasahiro Yamada   ELF local label prefixes by J"orn Rennecke
18*5f91a3adSMasahiro Yamada   amylaar@cygnus.com  */
19*5f91a3adSMasahiro Yamada
20*5f91a3adSMasahiro Yamada/* This code used shld, thus is not suitable for SH1 / SH2.  */
21*5f91a3adSMasahiro Yamada
22*5f91a3adSMasahiro Yamada/* Signed / unsigned division without use of FPU, optimized for SH4.
23*5f91a3adSMasahiro Yamada   Uses a lookup table for divisors in the range -128 .. +128, and
24*5f91a3adSMasahiro Yamada   div1 with case distinction for larger divisors in three more ranges.
25*5f91a3adSMasahiro Yamada   The code is lumped together with the table to allow the use of mova.  */
26*5f91a3adSMasahiro Yamada#ifdef CONFIG_CPU_LITTLE_ENDIAN
27*5f91a3adSMasahiro Yamada#define L_LSB 0
28*5f91a3adSMasahiro Yamada#define L_LSWMSB 1
29*5f91a3adSMasahiro Yamada#define L_MSWLSB 2
30*5f91a3adSMasahiro Yamada#else
31*5f91a3adSMasahiro Yamada#define L_LSB 3
32*5f91a3adSMasahiro Yamada#define L_LSWMSB 2
33*5f91a3adSMasahiro Yamada#define L_MSWLSB 1
34*5f91a3adSMasahiro Yamada#endif
35*5f91a3adSMasahiro Yamada
36*5f91a3adSMasahiro Yamada	.balign 4
37*5f91a3adSMasahiro Yamada	.global	__udivsi3_i4i
38*5f91a3adSMasahiro Yamada	.global	__udivsi3_i4
39*5f91a3adSMasahiro Yamada	.set	__udivsi3_i4, __udivsi3_i4i
40*5f91a3adSMasahiro Yamada	.type	__udivsi3_i4i, @function
41*5f91a3adSMasahiro Yamada__udivsi3_i4i:
42*5f91a3adSMasahiro Yamada	mov.w c128_w, r1
43*5f91a3adSMasahiro Yamada	div0u
44*5f91a3adSMasahiro Yamada	mov r4,r0
45*5f91a3adSMasahiro Yamada	shlr8 r0
46*5f91a3adSMasahiro Yamada	cmp/hi r1,r5
47*5f91a3adSMasahiro Yamada	extu.w r5,r1
48*5f91a3adSMasahiro Yamada	bf udiv_le128
49*5f91a3adSMasahiro Yamada	cmp/eq r5,r1
50*5f91a3adSMasahiro Yamada	bf udiv_ge64k
51*5f91a3adSMasahiro Yamada	shlr r0
52*5f91a3adSMasahiro Yamada	mov r5,r1
53*5f91a3adSMasahiro Yamada	shll16 r5
54*5f91a3adSMasahiro Yamada	mov.l r4,@-r15
55*5f91a3adSMasahiro Yamada	div1 r5,r0
56*5f91a3adSMasahiro Yamada	mov.l r1,@-r15
57*5f91a3adSMasahiro Yamada	div1 r5,r0
58*5f91a3adSMasahiro Yamada	div1 r5,r0
59*5f91a3adSMasahiro Yamada	bra udiv_25
60*5f91a3adSMasahiro Yamada	div1 r5,r0
61*5f91a3adSMasahiro Yamada
62*5f91a3adSMasahiro Yamadadiv_le128:
63*5f91a3adSMasahiro Yamada	mova div_table_ix,r0
64*5f91a3adSMasahiro Yamada	bra div_le128_2
65*5f91a3adSMasahiro Yamada	mov.b @(r0,r5),r1
66*5f91a3adSMasahiro Yamadaudiv_le128:
67*5f91a3adSMasahiro Yamada	mov.l r4,@-r15
68*5f91a3adSMasahiro Yamada	mova div_table_ix,r0
69*5f91a3adSMasahiro Yamada	mov.b @(r0,r5),r1
70*5f91a3adSMasahiro Yamada	mov.l r5,@-r15
71*5f91a3adSMasahiro Yamadadiv_le128_2:
72*5f91a3adSMasahiro Yamada	mova div_table_inv,r0
73*5f91a3adSMasahiro Yamada	mov.l @(r0,r1),r1
74*5f91a3adSMasahiro Yamada	mov r5,r0
75*5f91a3adSMasahiro Yamada	tst #0xfe,r0
76*5f91a3adSMasahiro Yamada	mova div_table_clz,r0
77*5f91a3adSMasahiro Yamada	dmulu.l r1,r4
78*5f91a3adSMasahiro Yamada	mov.b @(r0,r5),r1
79*5f91a3adSMasahiro Yamada	bt/s div_by_1
80*5f91a3adSMasahiro Yamada	mov r4,r0
81*5f91a3adSMasahiro Yamada	mov.l @r15+,r5
82*5f91a3adSMasahiro Yamada	sts mach,r0
83*5f91a3adSMasahiro Yamada	/* clrt */
84*5f91a3adSMasahiro Yamada	addc r4,r0
85*5f91a3adSMasahiro Yamada	mov.l @r15+,r4
86*5f91a3adSMasahiro Yamada	rotcr r0
87*5f91a3adSMasahiro Yamada	rts
88*5f91a3adSMasahiro Yamada	shld r1,r0
89*5f91a3adSMasahiro Yamada
90*5f91a3adSMasahiro Yamadadiv_by_1_neg:
91*5f91a3adSMasahiro Yamada	neg r4,r0
92*5f91a3adSMasahiro Yamadadiv_by_1:
93*5f91a3adSMasahiro Yamada	mov.l @r15+,r5
94*5f91a3adSMasahiro Yamada	rts
95*5f91a3adSMasahiro Yamada	mov.l @r15+,r4
96*5f91a3adSMasahiro Yamada
97*5f91a3adSMasahiro Yamadadiv_ge64k:
98*5f91a3adSMasahiro Yamada	bt/s div_r8
99*5f91a3adSMasahiro Yamada	div0u
100*5f91a3adSMasahiro Yamada	shll8 r5
101*5f91a3adSMasahiro Yamada	bra div_ge64k_2
102*5f91a3adSMasahiro Yamada	div1 r5,r0
103*5f91a3adSMasahiro Yamadaudiv_ge64k:
104*5f91a3adSMasahiro Yamada	cmp/hi r0,r5
105*5f91a3adSMasahiro Yamada	mov r5,r1
106*5f91a3adSMasahiro Yamada	bt udiv_r8
107*5f91a3adSMasahiro Yamada	shll8 r5
108*5f91a3adSMasahiro Yamada	mov.l r4,@-r15
109*5f91a3adSMasahiro Yamada	div1 r5,r0
110*5f91a3adSMasahiro Yamada	mov.l r1,@-r15
111*5f91a3adSMasahiro Yamadadiv_ge64k_2:
112*5f91a3adSMasahiro Yamada	div1 r5,r0
113*5f91a3adSMasahiro Yamada	mov.l zero_l,r1
114*5f91a3adSMasahiro Yamada	.rept 4
115*5f91a3adSMasahiro Yamada	div1 r5,r0
116*5f91a3adSMasahiro Yamada	.endr
117*5f91a3adSMasahiro Yamada	mov.l r1,@-r15
118*5f91a3adSMasahiro Yamada	div1 r5,r0
119*5f91a3adSMasahiro Yamada	mov.w m256_w,r1
120*5f91a3adSMasahiro Yamada	div1 r5,r0
121*5f91a3adSMasahiro Yamada	mov.b r0,@(L_LSWMSB,r15)
122*5f91a3adSMasahiro Yamada	xor r4,r0
123*5f91a3adSMasahiro Yamada	and r1,r0
124*5f91a3adSMasahiro Yamada	bra div_ge64k_end
125*5f91a3adSMasahiro Yamada	xor r4,r0
126*5f91a3adSMasahiro Yamadadiv_r8:
127*5f91a3adSMasahiro Yamada	shll16 r4
128*5f91a3adSMasahiro Yamada	bra div_r8_2
129*5f91a3adSMasahiro Yamada	shll8 r4
130*5f91a3adSMasahiro Yamadaudiv_r8:
131*5f91a3adSMasahiro Yamada	mov.l r4,@-r15
132*5f91a3adSMasahiro Yamada	shll16 r4
133*5f91a3adSMasahiro Yamada	clrt
134*5f91a3adSMasahiro Yamada	shll8 r4
135*5f91a3adSMasahiro Yamada	mov.l r5,@-r15
136*5f91a3adSMasahiro Yamadadiv_r8_2:
137*5f91a3adSMasahiro Yamada	rotcl r4
138*5f91a3adSMasahiro Yamada	mov r0,r1
139*5f91a3adSMasahiro Yamada	div1 r5,r1
140*5f91a3adSMasahiro Yamada	mov r4,r0
141*5f91a3adSMasahiro Yamada	rotcl r0
142*5f91a3adSMasahiro Yamada	mov r5,r4
143*5f91a3adSMasahiro Yamada	div1 r5,r1
144*5f91a3adSMasahiro Yamada	.rept 5
145*5f91a3adSMasahiro Yamada	rotcl r0; div1 r5,r1
146*5f91a3adSMasahiro Yamada	.endr
147*5f91a3adSMasahiro Yamada	rotcl r0
148*5f91a3adSMasahiro Yamada	mov.l @r15+,r5
149*5f91a3adSMasahiro Yamada	div1 r4,r1
150*5f91a3adSMasahiro Yamada	mov.l @r15+,r4
151*5f91a3adSMasahiro Yamada	rts
152*5f91a3adSMasahiro Yamada	rotcl r0
153*5f91a3adSMasahiro Yamada
154*5f91a3adSMasahiro Yamada	.global	__sdivsi3_i4i
155*5f91a3adSMasahiro Yamada	.global __sdivsi3_i4
156*5f91a3adSMasahiro Yamada	.global	__sdivsi3
157*5f91a3adSMasahiro Yamada	.set	__sdivsi3_i4, __sdivsi3_i4i
158*5f91a3adSMasahiro Yamada	.set	__sdivsi3, __sdivsi3_i4i
159*5f91a3adSMasahiro Yamada	.type	__sdivsi3_i4i, @function
160*5f91a3adSMasahiro Yamada	/* This is link-compatible with a __sdivsi3 call,
161*5f91a3adSMasahiro Yamada	   but we effectively clobber only r1.  */
162*5f91a3adSMasahiro Yamada__sdivsi3_i4i:
163*5f91a3adSMasahiro Yamada	mov.l r4,@-r15
164*5f91a3adSMasahiro Yamada	cmp/pz r5
165*5f91a3adSMasahiro Yamada	mov.w c128_w, r1
166*5f91a3adSMasahiro Yamada	bt/s pos_divisor
167*5f91a3adSMasahiro Yamada	cmp/pz r4
168*5f91a3adSMasahiro Yamada	mov.l r5,@-r15
169*5f91a3adSMasahiro Yamada	neg r5,r5
170*5f91a3adSMasahiro Yamada	bt/s neg_result
171*5f91a3adSMasahiro Yamada	cmp/hi r1,r5
172*5f91a3adSMasahiro Yamada	neg r4,r4
173*5f91a3adSMasahiro Yamadapos_result:
174*5f91a3adSMasahiro Yamada	extu.w r5,r0
175*5f91a3adSMasahiro Yamada	bf div_le128
176*5f91a3adSMasahiro Yamada	cmp/eq r5,r0
177*5f91a3adSMasahiro Yamada	mov r4,r0
178*5f91a3adSMasahiro Yamada	shlr8 r0
179*5f91a3adSMasahiro Yamada	bf/s div_ge64k
180*5f91a3adSMasahiro Yamada	cmp/hi r0,r5
181*5f91a3adSMasahiro Yamada	div0u
182*5f91a3adSMasahiro Yamada	shll16 r5
183*5f91a3adSMasahiro Yamada	div1 r5,r0
184*5f91a3adSMasahiro Yamada	div1 r5,r0
185*5f91a3adSMasahiro Yamada	div1 r5,r0
186*5f91a3adSMasahiro Yamadaudiv_25:
187*5f91a3adSMasahiro Yamada	mov.l zero_l,r1
188*5f91a3adSMasahiro Yamada	div1 r5,r0
189*5f91a3adSMasahiro Yamada	div1 r5,r0
190*5f91a3adSMasahiro Yamada	mov.l r1,@-r15
191*5f91a3adSMasahiro Yamada	.rept 3
192*5f91a3adSMasahiro Yamada	div1 r5,r0
193*5f91a3adSMasahiro Yamada	.endr
194*5f91a3adSMasahiro Yamada	mov.b r0,@(L_MSWLSB,r15)
195*5f91a3adSMasahiro Yamada	xtrct r4,r0
196*5f91a3adSMasahiro Yamada	swap.w r0,r0
197*5f91a3adSMasahiro Yamada	.rept 8
198*5f91a3adSMasahiro Yamada	div1 r5,r0
199*5f91a3adSMasahiro Yamada	.endr
200*5f91a3adSMasahiro Yamada	mov.b r0,@(L_LSWMSB,r15)
201*5f91a3adSMasahiro Yamadadiv_ge64k_end:
202*5f91a3adSMasahiro Yamada	.rept 8
203*5f91a3adSMasahiro Yamada	div1 r5,r0
204*5f91a3adSMasahiro Yamada	.endr
205*5f91a3adSMasahiro Yamada	mov.l @r15+,r4 ! zero-extension and swap using LS unit.
206*5f91a3adSMasahiro Yamada	extu.b r0,r0
207*5f91a3adSMasahiro Yamada	mov.l @r15+,r5
208*5f91a3adSMasahiro Yamada	or r4,r0
209*5f91a3adSMasahiro Yamada	mov.l @r15+,r4
210*5f91a3adSMasahiro Yamada	rts
211*5f91a3adSMasahiro Yamada	rotcl r0
212*5f91a3adSMasahiro Yamada
213*5f91a3adSMasahiro Yamadadiv_le128_neg:
214*5f91a3adSMasahiro Yamada	tst #0xfe,r0
215*5f91a3adSMasahiro Yamada	mova div_table_ix,r0
216*5f91a3adSMasahiro Yamada	mov.b @(r0,r5),r1
217*5f91a3adSMasahiro Yamada	mova div_table_inv,r0
218*5f91a3adSMasahiro Yamada	bt/s div_by_1_neg
219*5f91a3adSMasahiro Yamada	mov.l @(r0,r1),r1
220*5f91a3adSMasahiro Yamada	mova div_table_clz,r0
221*5f91a3adSMasahiro Yamada	dmulu.l r1,r4
222*5f91a3adSMasahiro Yamada	mov.b @(r0,r5),r1
223*5f91a3adSMasahiro Yamada	mov.l @r15+,r5
224*5f91a3adSMasahiro Yamada	sts mach,r0
225*5f91a3adSMasahiro Yamada	/* clrt */
226*5f91a3adSMasahiro Yamada	addc r4,r0
227*5f91a3adSMasahiro Yamada	mov.l @r15+,r4
228*5f91a3adSMasahiro Yamada	rotcr r0
229*5f91a3adSMasahiro Yamada	shld r1,r0
230*5f91a3adSMasahiro Yamada	rts
231*5f91a3adSMasahiro Yamada	neg r0,r0
232*5f91a3adSMasahiro Yamada
233*5f91a3adSMasahiro Yamadapos_divisor:
234*5f91a3adSMasahiro Yamada	mov.l r5,@-r15
235*5f91a3adSMasahiro Yamada	bt/s pos_result
236*5f91a3adSMasahiro Yamada	cmp/hi r1,r5
237*5f91a3adSMasahiro Yamada	neg r4,r4
238*5f91a3adSMasahiro Yamadaneg_result:
239*5f91a3adSMasahiro Yamada	extu.w r5,r0
240*5f91a3adSMasahiro Yamada	bf div_le128_neg
241*5f91a3adSMasahiro Yamada	cmp/eq r5,r0
242*5f91a3adSMasahiro Yamada	mov r4,r0
243*5f91a3adSMasahiro Yamada	shlr8 r0
244*5f91a3adSMasahiro Yamada	bf/s div_ge64k_neg
245*5f91a3adSMasahiro Yamada	cmp/hi r0,r5
246*5f91a3adSMasahiro Yamada	div0u
247*5f91a3adSMasahiro Yamada	mov.l zero_l,r1
248*5f91a3adSMasahiro Yamada	shll16 r5
249*5f91a3adSMasahiro Yamada	div1 r5,r0
250*5f91a3adSMasahiro Yamada	mov.l r1,@-r15
251*5f91a3adSMasahiro Yamada	.rept 7
252*5f91a3adSMasahiro Yamada	div1 r5,r0
253*5f91a3adSMasahiro Yamada	.endr
254*5f91a3adSMasahiro Yamada	mov.b r0,@(L_MSWLSB,r15)
255*5f91a3adSMasahiro Yamada	xtrct r4,r0
256*5f91a3adSMasahiro Yamada	swap.w r0,r0
257*5f91a3adSMasahiro Yamada	.rept 8
258*5f91a3adSMasahiro Yamada	div1 r5,r0
259*5f91a3adSMasahiro Yamada	.endr
260*5f91a3adSMasahiro Yamada	mov.b r0,@(L_LSWMSB,r15)
261*5f91a3adSMasahiro Yamadadiv_ge64k_neg_end:
262*5f91a3adSMasahiro Yamada	.rept 8
263*5f91a3adSMasahiro Yamada	div1 r5,r0
264*5f91a3adSMasahiro Yamada	.endr
265*5f91a3adSMasahiro Yamada	mov.l @r15+,r4 ! zero-extension and swap using LS unit.
266*5f91a3adSMasahiro Yamada	extu.b r0,r1
267*5f91a3adSMasahiro Yamada	mov.l @r15+,r5
268*5f91a3adSMasahiro Yamada	or r4,r1
269*5f91a3adSMasahiro Yamadadiv_r8_neg_end:
270*5f91a3adSMasahiro Yamada	mov.l @r15+,r4
271*5f91a3adSMasahiro Yamada	rotcl r1
272*5f91a3adSMasahiro Yamada	rts
273*5f91a3adSMasahiro Yamada	neg r1,r0
274*5f91a3adSMasahiro Yamada
275*5f91a3adSMasahiro Yamadadiv_ge64k_neg:
276*5f91a3adSMasahiro Yamada	bt/s div_r8_neg
277*5f91a3adSMasahiro Yamada	div0u
278*5f91a3adSMasahiro Yamada	shll8 r5
279*5f91a3adSMasahiro Yamada	mov.l zero_l,r1
280*5f91a3adSMasahiro Yamada	.rept 6
281*5f91a3adSMasahiro Yamada	div1 r5,r0
282*5f91a3adSMasahiro Yamada	.endr
283*5f91a3adSMasahiro Yamada	mov.l r1,@-r15
284*5f91a3adSMasahiro Yamada	div1 r5,r0
285*5f91a3adSMasahiro Yamada	mov.w m256_w,r1
286*5f91a3adSMasahiro Yamada	div1 r5,r0
287*5f91a3adSMasahiro Yamada	mov.b r0,@(L_LSWMSB,r15)
288*5f91a3adSMasahiro Yamada	xor r4,r0
289*5f91a3adSMasahiro Yamada	and r1,r0
290*5f91a3adSMasahiro Yamada	bra div_ge64k_neg_end
291*5f91a3adSMasahiro Yamada	xor r4,r0
292*5f91a3adSMasahiro Yamada
293*5f91a3adSMasahiro Yamadac128_w:
294*5f91a3adSMasahiro Yamada	.word 128
295*5f91a3adSMasahiro Yamada
296*5f91a3adSMasahiro Yamadadiv_r8_neg:
297*5f91a3adSMasahiro Yamada	clrt
298*5f91a3adSMasahiro Yamada	shll16 r4
299*5f91a3adSMasahiro Yamada	mov r4,r1
300*5f91a3adSMasahiro Yamada	shll8 r1
301*5f91a3adSMasahiro Yamada	mov r5,r4
302*5f91a3adSMasahiro Yamada	.rept 7
303*5f91a3adSMasahiro Yamada	rotcl r1; div1 r5,r0
304*5f91a3adSMasahiro Yamada	.endr
305*5f91a3adSMasahiro Yamada	mov.l @r15+,r5
306*5f91a3adSMasahiro Yamada	rotcl r1
307*5f91a3adSMasahiro Yamada	bra div_r8_neg_end
308*5f91a3adSMasahiro Yamada	div1 r4,r0
309*5f91a3adSMasahiro Yamada
310*5f91a3adSMasahiro Yamadam256_w:
311*5f91a3adSMasahiro Yamada	.word 0xff00
312*5f91a3adSMasahiro Yamada/* This table has been generated by divtab-sh4.c.  */
313*5f91a3adSMasahiro Yamada	.balign 4
314*5f91a3adSMasahiro Yamadadiv_table_clz:
315*5f91a3adSMasahiro Yamada	.byte	0
316*5f91a3adSMasahiro Yamada	.byte	1
317*5f91a3adSMasahiro Yamada	.byte	0
318*5f91a3adSMasahiro Yamada	.byte	-1
319*5f91a3adSMasahiro Yamada	.byte	-1
320*5f91a3adSMasahiro Yamada	.byte	-2
321*5f91a3adSMasahiro Yamada	.byte	-2
322*5f91a3adSMasahiro Yamada	.byte	-2
323*5f91a3adSMasahiro Yamada	.byte	-2
324*5f91a3adSMasahiro Yamada	.byte	-3
325*5f91a3adSMasahiro Yamada	.byte	-3
326*5f91a3adSMasahiro Yamada	.byte	-3
327*5f91a3adSMasahiro Yamada	.byte	-3
328*5f91a3adSMasahiro Yamada	.byte	-3
329*5f91a3adSMasahiro Yamada	.byte	-3
330*5f91a3adSMasahiro Yamada	.byte	-3
331*5f91a3adSMasahiro Yamada	.byte	-3
332*5f91a3adSMasahiro Yamada	.byte	-4
333*5f91a3adSMasahiro Yamada	.byte	-4
334*5f91a3adSMasahiro Yamada	.byte	-4
335*5f91a3adSMasahiro Yamada	.byte	-4
336*5f91a3adSMasahiro Yamada	.byte	-4
337*5f91a3adSMasahiro Yamada	.byte	-4
338*5f91a3adSMasahiro Yamada	.byte	-4
339*5f91a3adSMasahiro Yamada	.byte	-4
340*5f91a3adSMasahiro Yamada	.byte	-4
341*5f91a3adSMasahiro Yamada	.byte	-4
342*5f91a3adSMasahiro Yamada	.byte	-4
343*5f91a3adSMasahiro Yamada	.byte	-4
344*5f91a3adSMasahiro Yamada	.byte	-4
345*5f91a3adSMasahiro Yamada	.byte	-4
346*5f91a3adSMasahiro Yamada	.byte	-4
347*5f91a3adSMasahiro Yamada	.byte	-4
348*5f91a3adSMasahiro Yamada	.byte	-5
349*5f91a3adSMasahiro Yamada	.byte	-5
350*5f91a3adSMasahiro Yamada	.byte	-5
351*5f91a3adSMasahiro Yamada	.byte	-5
352*5f91a3adSMasahiro Yamada	.byte	-5
353*5f91a3adSMasahiro Yamada	.byte	-5
354*5f91a3adSMasahiro Yamada	.byte	-5
355*5f91a3adSMasahiro Yamada	.byte	-5
356*5f91a3adSMasahiro Yamada	.byte	-5
357*5f91a3adSMasahiro Yamada	.byte	-5
358*5f91a3adSMasahiro Yamada	.byte	-5
359*5f91a3adSMasahiro Yamada	.byte	-5
360*5f91a3adSMasahiro Yamada	.byte	-5
361*5f91a3adSMasahiro Yamada	.byte	-5
362*5f91a3adSMasahiro Yamada	.byte	-5
363*5f91a3adSMasahiro Yamada	.byte	-5
364*5f91a3adSMasahiro Yamada	.byte	-5
365*5f91a3adSMasahiro Yamada	.byte	-5
366*5f91a3adSMasahiro Yamada	.byte	-5
367*5f91a3adSMasahiro Yamada	.byte	-5
368*5f91a3adSMasahiro Yamada	.byte	-5
369*5f91a3adSMasahiro Yamada	.byte	-5
370*5f91a3adSMasahiro Yamada	.byte	-5
371*5f91a3adSMasahiro Yamada	.byte	-5
372*5f91a3adSMasahiro Yamada	.byte	-5
373*5f91a3adSMasahiro Yamada	.byte	-5
374*5f91a3adSMasahiro Yamada	.byte	-5
375*5f91a3adSMasahiro Yamada	.byte	-5
376*5f91a3adSMasahiro Yamada	.byte	-5
377*5f91a3adSMasahiro Yamada	.byte	-5
378*5f91a3adSMasahiro Yamada	.byte	-5
379*5f91a3adSMasahiro Yamada	.byte	-5
380*5f91a3adSMasahiro Yamada	.byte	-6
381*5f91a3adSMasahiro Yamada	.byte	-6
382*5f91a3adSMasahiro Yamada	.byte	-6
383*5f91a3adSMasahiro Yamada	.byte	-6
384*5f91a3adSMasahiro Yamada	.byte	-6
385*5f91a3adSMasahiro Yamada	.byte	-6
386*5f91a3adSMasahiro Yamada	.byte	-6
387*5f91a3adSMasahiro Yamada	.byte	-6
388*5f91a3adSMasahiro Yamada	.byte	-6
389*5f91a3adSMasahiro Yamada	.byte	-6
390*5f91a3adSMasahiro Yamada	.byte	-6
391*5f91a3adSMasahiro Yamada	.byte	-6
392*5f91a3adSMasahiro Yamada	.byte	-6
393*5f91a3adSMasahiro Yamada	.byte	-6
394*5f91a3adSMasahiro Yamada	.byte	-6
395*5f91a3adSMasahiro Yamada	.byte	-6
396*5f91a3adSMasahiro Yamada	.byte	-6
397*5f91a3adSMasahiro Yamada	.byte	-6
398*5f91a3adSMasahiro Yamada	.byte	-6
399*5f91a3adSMasahiro Yamada	.byte	-6
400*5f91a3adSMasahiro Yamada	.byte	-6
401*5f91a3adSMasahiro Yamada	.byte	-6
402*5f91a3adSMasahiro Yamada	.byte	-6
403*5f91a3adSMasahiro Yamada	.byte	-6
404*5f91a3adSMasahiro Yamada	.byte	-6
405*5f91a3adSMasahiro Yamada	.byte	-6
406*5f91a3adSMasahiro Yamada	.byte	-6
407*5f91a3adSMasahiro Yamada	.byte	-6
408*5f91a3adSMasahiro Yamada	.byte	-6
409*5f91a3adSMasahiro Yamada	.byte	-6
410*5f91a3adSMasahiro Yamada	.byte	-6
411*5f91a3adSMasahiro Yamada	.byte	-6
412*5f91a3adSMasahiro Yamada	.byte	-6
413*5f91a3adSMasahiro Yamada	.byte	-6
414*5f91a3adSMasahiro Yamada	.byte	-6
415*5f91a3adSMasahiro Yamada	.byte	-6
416*5f91a3adSMasahiro Yamada	.byte	-6
417*5f91a3adSMasahiro Yamada	.byte	-6
418*5f91a3adSMasahiro Yamada	.byte	-6
419*5f91a3adSMasahiro Yamada	.byte	-6
420*5f91a3adSMasahiro Yamada	.byte	-6
421*5f91a3adSMasahiro Yamada	.byte	-6
422*5f91a3adSMasahiro Yamada	.byte	-6
423*5f91a3adSMasahiro Yamada	.byte	-6
424*5f91a3adSMasahiro Yamada	.byte	-6
425*5f91a3adSMasahiro Yamada	.byte	-6
426*5f91a3adSMasahiro Yamada	.byte	-6
427*5f91a3adSMasahiro Yamada	.byte	-6
428*5f91a3adSMasahiro Yamada	.byte	-6
429*5f91a3adSMasahiro Yamada	.byte	-6
430*5f91a3adSMasahiro Yamada	.byte	-6
431*5f91a3adSMasahiro Yamada	.byte	-6
432*5f91a3adSMasahiro Yamada	.byte	-6
433*5f91a3adSMasahiro Yamada	.byte	-6
434*5f91a3adSMasahiro Yamada	.byte	-6
435*5f91a3adSMasahiro Yamada	.byte	-6
436*5f91a3adSMasahiro Yamada	.byte	-6
437*5f91a3adSMasahiro Yamada	.byte	-6
438*5f91a3adSMasahiro Yamada	.byte	-6
439*5f91a3adSMasahiro Yamada	.byte	-6
440*5f91a3adSMasahiro Yamada	.byte	-6
441*5f91a3adSMasahiro Yamada	.byte	-6
442*5f91a3adSMasahiro Yamada	.byte	-6
443*5f91a3adSMasahiro Yamada/* Lookup table translating positive divisor to index into table of
444*5f91a3adSMasahiro Yamada   normalized inverse.  N.B. the '0' entry is also the last entry of the
445*5f91a3adSMasahiro Yamada previous table, and causes an unaligned access for division by zero.  */
446*5f91a3adSMasahiro Yamadadiv_table_ix:
447*5f91a3adSMasahiro Yamada	.byte	-6
448*5f91a3adSMasahiro Yamada	.byte	-128
449*5f91a3adSMasahiro Yamada	.byte	-128
450*5f91a3adSMasahiro Yamada	.byte	0
451*5f91a3adSMasahiro Yamada	.byte	-128
452*5f91a3adSMasahiro Yamada	.byte	-64
453*5f91a3adSMasahiro Yamada	.byte	0
454*5f91a3adSMasahiro Yamada	.byte	64
455*5f91a3adSMasahiro Yamada	.byte	-128
456*5f91a3adSMasahiro Yamada	.byte	-96
457*5f91a3adSMasahiro Yamada	.byte	-64
458*5f91a3adSMasahiro Yamada	.byte	-32
459*5f91a3adSMasahiro Yamada	.byte	0
460*5f91a3adSMasahiro Yamada	.byte	32
461*5f91a3adSMasahiro Yamada	.byte	64
462*5f91a3adSMasahiro Yamada	.byte	96
463*5f91a3adSMasahiro Yamada	.byte	-128
464*5f91a3adSMasahiro Yamada	.byte	-112
465*5f91a3adSMasahiro Yamada	.byte	-96
466*5f91a3adSMasahiro Yamada	.byte	-80
467*5f91a3adSMasahiro Yamada	.byte	-64
468*5f91a3adSMasahiro Yamada	.byte	-48
469*5f91a3adSMasahiro Yamada	.byte	-32
470*5f91a3adSMasahiro Yamada	.byte	-16
471*5f91a3adSMasahiro Yamada	.byte	0
472*5f91a3adSMasahiro Yamada	.byte	16
473*5f91a3adSMasahiro Yamada	.byte	32
474*5f91a3adSMasahiro Yamada	.byte	48
475*5f91a3adSMasahiro Yamada	.byte	64
476*5f91a3adSMasahiro Yamada	.byte	80
477*5f91a3adSMasahiro Yamada	.byte	96
478*5f91a3adSMasahiro Yamada	.byte	112
479*5f91a3adSMasahiro Yamada	.byte	-128
480*5f91a3adSMasahiro Yamada	.byte	-120
481*5f91a3adSMasahiro Yamada	.byte	-112
482*5f91a3adSMasahiro Yamada	.byte	-104
483*5f91a3adSMasahiro Yamada	.byte	-96
484*5f91a3adSMasahiro Yamada	.byte	-88
485*5f91a3adSMasahiro Yamada	.byte	-80
486*5f91a3adSMasahiro Yamada	.byte	-72
487*5f91a3adSMasahiro Yamada	.byte	-64
488*5f91a3adSMasahiro Yamada	.byte	-56
489*5f91a3adSMasahiro Yamada	.byte	-48
490*5f91a3adSMasahiro Yamada	.byte	-40
491*5f91a3adSMasahiro Yamada	.byte	-32
492*5f91a3adSMasahiro Yamada	.byte	-24
493*5f91a3adSMasahiro Yamada	.byte	-16
494*5f91a3adSMasahiro Yamada	.byte	-8
495*5f91a3adSMasahiro Yamada	.byte	0
496*5f91a3adSMasahiro Yamada	.byte	8
497*5f91a3adSMasahiro Yamada	.byte	16
498*5f91a3adSMasahiro Yamada	.byte	24
499*5f91a3adSMasahiro Yamada	.byte	32
500*5f91a3adSMasahiro Yamada	.byte	40
501*5f91a3adSMasahiro Yamada	.byte	48
502*5f91a3adSMasahiro Yamada	.byte	56
503*5f91a3adSMasahiro Yamada	.byte	64
504*5f91a3adSMasahiro Yamada	.byte	72
505*5f91a3adSMasahiro Yamada	.byte	80
506*5f91a3adSMasahiro Yamada	.byte	88
507*5f91a3adSMasahiro Yamada	.byte	96
508*5f91a3adSMasahiro Yamada	.byte	104
509*5f91a3adSMasahiro Yamada	.byte	112
510*5f91a3adSMasahiro Yamada	.byte	120
511*5f91a3adSMasahiro Yamada	.byte	-128
512*5f91a3adSMasahiro Yamada	.byte	-124
513*5f91a3adSMasahiro Yamada	.byte	-120
514*5f91a3adSMasahiro Yamada	.byte	-116
515*5f91a3adSMasahiro Yamada	.byte	-112
516*5f91a3adSMasahiro Yamada	.byte	-108
517*5f91a3adSMasahiro Yamada	.byte	-104
518*5f91a3adSMasahiro Yamada	.byte	-100
519*5f91a3adSMasahiro Yamada	.byte	-96
520*5f91a3adSMasahiro Yamada	.byte	-92
521*5f91a3adSMasahiro Yamada	.byte	-88
522*5f91a3adSMasahiro Yamada	.byte	-84
523*5f91a3adSMasahiro Yamada	.byte	-80
524*5f91a3adSMasahiro Yamada	.byte	-76
525*5f91a3adSMasahiro Yamada	.byte	-72
526*5f91a3adSMasahiro Yamada	.byte	-68
527*5f91a3adSMasahiro Yamada	.byte	-64
528*5f91a3adSMasahiro Yamada	.byte	-60
529*5f91a3adSMasahiro Yamada	.byte	-56
530*5f91a3adSMasahiro Yamada	.byte	-52
531*5f91a3adSMasahiro Yamada	.byte	-48
532*5f91a3adSMasahiro Yamada	.byte	-44
533*5f91a3adSMasahiro Yamada	.byte	-40
534*5f91a3adSMasahiro Yamada	.byte	-36
535*5f91a3adSMasahiro Yamada	.byte	-32
536*5f91a3adSMasahiro Yamada	.byte	-28
537*5f91a3adSMasahiro Yamada	.byte	-24
538*5f91a3adSMasahiro Yamada	.byte	-20
539*5f91a3adSMasahiro Yamada	.byte	-16
540*5f91a3adSMasahiro Yamada	.byte	-12
541*5f91a3adSMasahiro Yamada	.byte	-8
542*5f91a3adSMasahiro Yamada	.byte	-4
543*5f91a3adSMasahiro Yamada	.byte	0
544*5f91a3adSMasahiro Yamada	.byte	4
545*5f91a3adSMasahiro Yamada	.byte	8
546*5f91a3adSMasahiro Yamada	.byte	12
547*5f91a3adSMasahiro Yamada	.byte	16
548*5f91a3adSMasahiro Yamada	.byte	20
549*5f91a3adSMasahiro Yamada	.byte	24
550*5f91a3adSMasahiro Yamada	.byte	28
551*5f91a3adSMasahiro Yamada	.byte	32
552*5f91a3adSMasahiro Yamada	.byte	36
553*5f91a3adSMasahiro Yamada	.byte	40
554*5f91a3adSMasahiro Yamada	.byte	44
555*5f91a3adSMasahiro Yamada	.byte	48
556*5f91a3adSMasahiro Yamada	.byte	52
557*5f91a3adSMasahiro Yamada	.byte	56
558*5f91a3adSMasahiro Yamada	.byte	60
559*5f91a3adSMasahiro Yamada	.byte	64
560*5f91a3adSMasahiro Yamada	.byte	68
561*5f91a3adSMasahiro Yamada	.byte	72
562*5f91a3adSMasahiro Yamada	.byte	76
563*5f91a3adSMasahiro Yamada	.byte	80
564*5f91a3adSMasahiro Yamada	.byte	84
565*5f91a3adSMasahiro Yamada	.byte	88
566*5f91a3adSMasahiro Yamada	.byte	92
567*5f91a3adSMasahiro Yamada	.byte	96
568*5f91a3adSMasahiro Yamada	.byte	100
569*5f91a3adSMasahiro Yamada	.byte	104
570*5f91a3adSMasahiro Yamada	.byte	108
571*5f91a3adSMasahiro Yamada	.byte	112
572*5f91a3adSMasahiro Yamada	.byte	116
573*5f91a3adSMasahiro Yamada	.byte	120
574*5f91a3adSMasahiro Yamada	.byte	124
575*5f91a3adSMasahiro Yamada	.byte	-128
576*5f91a3adSMasahiro Yamada/* 1/64 .. 1/127, normalized.  There is an implicit leading 1 in bit 32.  */
577*5f91a3adSMasahiro Yamada	.balign 4
578*5f91a3adSMasahiro Yamadazero_l:
579*5f91a3adSMasahiro Yamada	.long	0x0
580*5f91a3adSMasahiro Yamada	.long	0xF81F81F9
581*5f91a3adSMasahiro Yamada	.long	0xF07C1F08
582*5f91a3adSMasahiro Yamada	.long	0xE9131AC0
583*5f91a3adSMasahiro Yamada	.long	0xE1E1E1E2
584*5f91a3adSMasahiro Yamada	.long	0xDAE6076C
585*5f91a3adSMasahiro Yamada	.long	0xD41D41D5
586*5f91a3adSMasahiro Yamada	.long	0xCD856891
587*5f91a3adSMasahiro Yamada	.long	0xC71C71C8
588*5f91a3adSMasahiro Yamada	.long	0xC0E07039
589*5f91a3adSMasahiro Yamada	.long	0xBACF914D
590*5f91a3adSMasahiro Yamada	.long	0xB4E81B4F
591*5f91a3adSMasahiro Yamada	.long	0xAF286BCB
592*5f91a3adSMasahiro Yamada	.long	0xA98EF607
593*5f91a3adSMasahiro Yamada	.long	0xA41A41A5
594*5f91a3adSMasahiro Yamada	.long	0x9EC8E952
595*5f91a3adSMasahiro Yamada	.long	0x9999999A
596*5f91a3adSMasahiro Yamada	.long	0x948B0FCE
597*5f91a3adSMasahiro Yamada	.long	0x8F9C18FA
598*5f91a3adSMasahiro Yamada	.long	0x8ACB90F7
599*5f91a3adSMasahiro Yamada	.long	0x86186187
600*5f91a3adSMasahiro Yamada	.long	0x81818182
601*5f91a3adSMasahiro Yamada	.long	0x7D05F418
602*5f91a3adSMasahiro Yamada	.long	0x78A4C818
603*5f91a3adSMasahiro Yamada	.long	0x745D1746
604*5f91a3adSMasahiro Yamada	.long	0x702E05C1
605*5f91a3adSMasahiro Yamada	.long	0x6C16C16D
606*5f91a3adSMasahiro Yamada	.long	0x68168169
607*5f91a3adSMasahiro Yamada	.long	0x642C8591
608*5f91a3adSMasahiro Yamada	.long	0x60581606
609*5f91a3adSMasahiro Yamada	.long	0x5C9882BA
610*5f91a3adSMasahiro Yamada	.long	0x58ED2309
611*5f91a3adSMasahiro Yamadadiv_table_inv:
612*5f91a3adSMasahiro Yamada	.long	0x55555556
613*5f91a3adSMasahiro Yamada	.long	0x51D07EAF
614*5f91a3adSMasahiro Yamada	.long	0x4E5E0A73
615*5f91a3adSMasahiro Yamada	.long	0x4AFD6A06
616*5f91a3adSMasahiro Yamada	.long	0x47AE147B
617*5f91a3adSMasahiro Yamada	.long	0x446F8657
618*5f91a3adSMasahiro Yamada	.long	0x41414142
619*5f91a3adSMasahiro Yamada	.long	0x3E22CBCF
620*5f91a3adSMasahiro Yamada	.long	0x3B13B13C
621*5f91a3adSMasahiro Yamada	.long	0x38138139
622*5f91a3adSMasahiro Yamada	.long	0x3521CFB3
623*5f91a3adSMasahiro Yamada	.long	0x323E34A3
624*5f91a3adSMasahiro Yamada	.long	0x2F684BDB
625*5f91a3adSMasahiro Yamada	.long	0x2C9FB4D9
626*5f91a3adSMasahiro Yamada	.long	0x29E4129F
627*5f91a3adSMasahiro Yamada	.long	0x27350B89
628*5f91a3adSMasahiro Yamada	.long	0x24924925
629*5f91a3adSMasahiro Yamada	.long	0x21FB7813
630*5f91a3adSMasahiro Yamada	.long	0x1F7047DD
631*5f91a3adSMasahiro Yamada	.long	0x1CF06ADB
632*5f91a3adSMasahiro Yamada	.long	0x1A7B9612
633*5f91a3adSMasahiro Yamada	.long	0x18118119
634*5f91a3adSMasahiro Yamada	.long	0x15B1E5F8
635*5f91a3adSMasahiro Yamada	.long	0x135C8114
636*5f91a3adSMasahiro Yamada	.long	0x11111112
637*5f91a3adSMasahiro Yamada	.long	0xECF56BF
638*5f91a3adSMasahiro Yamada	.long	0xC9714FC
639*5f91a3adSMasahiro Yamada	.long	0xA6810A7
640*5f91a3adSMasahiro Yamada	.long	0x8421085
641*5f91a3adSMasahiro Yamada	.long	0x624DD30
642*5f91a3adSMasahiro Yamada	.long	0x4104105
643*5f91a3adSMasahiro Yamada	.long	0x2040811
644*5f91a3adSMasahiro Yamada	/* maximum error: 0.987342 scaled: 0.921875*/
645