xref: /netbsd-src/external/gpl3/gcc/dist/libgcc/config/sh/lib1funcs-4-300.S (revision 479d8f7d843cc1b22d497efdf1f27a50ee8418d4)
1/* Copyright (C) 2004-2015 Free Software Foundation, Inc.
2
3This file is free software; you can redistribute it and/or modify it
4under the terms of the GNU General Public License as published by the
5Free Software Foundation; either version 3, or (at your option) any
6later version.
7
8This file is distributed in the hope that it will be useful, but
9WITHOUT ANY WARRANTY; without even the implied warranty of
10MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11General Public License for more details.
12
13Under Section 7 of GPL version 3, you are granted additional
14permissions described in the GCC Runtime Library Exception, version
153.1, as published by the Free Software Foundation.
16
17You should have received a copy of the GNU General Public License and
18a copy of the GCC Runtime Library Exception along with this program;
19see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
20<http://www.gnu.org/licenses/>.  */
21
22
23/* libgcc routines for the STMicroelectronics ST40-300 CPU.
24   Contributed by J"orn Rennecke joern.rennecke@st.com.  */
25
26#include "lib1funcs.h"
27
28#if !__SHMEDIA__
29#ifdef L_div_table
30#if defined (__SH3__) || defined (__SH3E__) || defined (__SH4__) || defined (__SH4_SINGLE__) || defined (__SH4_SINGLE_ONLY__) || defined (__SH4_NOFPU__)
31/* This code used shld, thus is not suitable for SH1 / SH2.  */
32
33/* Signed / unsigned division without use of FPU, optimized for SH4-300.
34   Uses a lookup table for divisors in the range -128 .. +127, and
35   div1 with case distinction for larger divisors in three more ranges.
36   The code is lumped together with the table to allow the use of mova.  */
37#ifdef __LITTLE_ENDIAN__
38#define L_LSB 0
39#define L_LSWMSB 1
40#define L_MSWLSB 2
41#else
42#define L_LSB 3
43#define L_LSWMSB 2
44#define L_MSWLSB 1
45#endif
46
47	.global	GLOBAL(udivsi3_i4i)
48	.global	GLOBAL(sdivsi3_i4i)
49	FUNC(GLOBAL(udivsi3_i4i))
50	FUNC(GLOBAL(sdivsi3_i4i))
51
52	.balign 4
53LOCAL(div_ge8m): ! 10 cycles up to here
54	rotcr r1 ! signed shift must use original sign from r4
55	div0s r5,r4
56	mov #24,r7
57	shld r7,r6
58	shad r0,r1
59	rotcl r6
60	div1 r5,r1
61	swap.w r5,r0 ! detect -0x80000000 : 0x800000
62	rotcl r6
63	swap.w r4,r7
64	div1 r5,r1
65	swap.b r7,r7
66	rotcl r6
67	or r7,r0
68	div1 r5,r1
69	swap.w r0,r7
70	rotcl r6
71	or r7,r0
72	div1 r5,r1
73	add #-0x80,r0
74	rotcl r6
75	extu.w r0,r0
76	div1 r5,r1
77	neg r0,r0
78	rotcl r6
79	swap.w r0,r0
80	div1 r5,r1
81	mov.l @r15+,r7
82	and r6,r0
83	rotcl r6
84	div1 r5,r1
85	shll2 r0
86	rotcl r6
87	exts.b r0,r0
88	div1 r5,r1
89	swap.w r0,r0
90	exts.w r0,r1
91	exts.b r6,r0
92	mov.l @r15+,r6
93	rotcl r0
94	rts
95	sub r1,r0
96	! 31 cycles up to here
97
98	.balign 4
99LOCAL(udiv_ge64k): ! 3 cycles up to here
100	mov r4,r0
101	shlr8 r0
102	div0u
103	cmp/hi r0,r5
104	bt LOCAL(udiv_r8)
105	mov.l r5,@-r15
106	shll8 r5
107	! 7 cycles up to here
108	.rept 8
109	div1 r5,r0
110	.endr
111	extu.b r4,r1 ! 15 cycles up to here
112	extu.b r0,r6
113	xor r1,r0
114	xor r6,r0
115	swap.b r6,r6
116	.rept 8
117	div1 r5,r0
118	.endr ! 25 cycles up to here
119	extu.b r0,r0
120	mov.l @r15+,r5
121	or r6,r0
122	mov.l @r15+,r6
123	rts
124	rotcl r0 ! 28 cycles up to here
125
126	.balign 4
127LOCAL(udiv_r8): ! 6 cycles up to here
128	mov.l r4,@-r15
129	shll16 r4
130	shll8 r4
131	!
132	shll r4
133	mov r0,r1
134	div1 r5,r1
135	mov r4,r0
136	rotcl r0
137	mov.l @r15+,r4
138	div1 r5,r1
139	! 12 cycles up to here
140	.rept 6
141	rotcl r0; div1 r5,r1
142	.endr
143	mov.l @r15+,r6 ! 24 cycles up to here
144	rts
145	rotcl r0
146
147	.balign 4
148LOCAL(div_ge32k): ! 6 cycles up to here
149	mov.l r7,@-r15
150	swap.w r5,r6
151	exts.b r6,r7
152	exts.w r6,r6
153	cmp/eq r6,r7
154	extu.b r1,r6
155	bf/s LOCAL(div_ge8m)
156	cmp/hi r1,r4 ! copy sign bit of r4 into T
157	rotcr r1 ! signed shift must use original sign from r4
158	div0s r5,r4
159	shad r0,r1
160	shll8 r5
161	div1 r5,r1
162	mov r5,r7 ! detect r4 == 0x80000000 && r5 == 0x8000(00)
163	div1 r5,r1
164	shlr8 r7
165	div1 r5,r1
166	swap.w r4,r0
167	div1 r5,r1
168	swap.b r0,r0
169	div1 r5,r1
170	or r0,r7
171	div1 r5,r1
172	add #-80,r7
173	div1 r5,r1
174	swap.w r7,r0
175	div1 r5,r1
176	or r0,r7
177	extu.b r1,r0
178	xor r6,r1
179	xor r0,r1
180	exts.b r0,r0
181	div1 r5,r1
182	extu.w r7,r7
183	div1 r5,r1
184	neg r7,r7 ! upper 16 bit of r7 == 0 if r4 == 0x80000000 && r5 == 0x8000
185	div1 r5,r1
186	and r0,r7
187	div1 r5,r1
188	swap.w r7,r7 ! 26 cycles up to here.
189	div1 r5,r1
190	shll8 r0
191	div1 r5,r1
192	exts.w r7,r7
193	div1 r5,r1
194	add r0,r0
195	div1 r5,r1
196	sub r7,r0
197	extu.b r1,r1
198	mov.l @r15+,r7
199	rotcl r1
200	mov.l @r15+,r6
201	add r1,r0
202	mov #-8,r1
203	rts
204	shad r1,r5 ! 34 cycles up to here
205
206	.balign 4
207GLOBAL(udivsi3_i4i):
208	mov.l r6,@-r15
209	extu.w r5,r6
210	cmp/eq r5,r6
211	mov #0x7f,r0
212	bf LOCAL(udiv_ge64k)
213	cmp/hi r0,r5
214	bf LOCAL(udiv_le128)
215	mov r4,r1
216	shlr8 r1
217	div0u
218	shlr r1
219	shll16 r6
220	div1 r6,r1
221	extu.b r4,r0 ! 7 cycles up to here
222	.rept 8
223	div1 r6,r1
224	.endr     ! 15 cycles up to here
225	xor r1,r0 ! xor dividend with result lsb
226	.rept 6
227	div1 r6,r1
228	.endr
229	mov.l r7,@-r15 ! 21 cycles up to here
230	div1 r6,r1
231	extu.b r0,r7
232	div1 r6,r1
233	shll8 r7
234	extu.w r1,r0
235	xor r7,r1 ! replace lsb of result with lsb of dividend
236	div1 r6,r1
237	mov #0,r7
238	div1 r6,r1
239	!
240	div1 r6,r1
241	bra LOCAL(div_end)
242	div1 r6,r1 ! 28 cycles up to here
243
244	/* This is link-compatible with a GLOBAL(sdivsi3) call,
245	   but we effectively clobber only r1, macl and mach  */
246        /* Because negative quotients are calculated as one's complements,
247	   -0x80000000 divided by the smallest positive number of a number
248	   range (0x80, 0x8000, 0x800000) causes saturation in the one's
249           complement representation, and we have to suppress the
250	   one's -> two's complement adjustment.  Since positive numbers
251	   don't get such an adjustment, it's OK to also compute one's -> two's
252	   complement adjustment suppression for a dividend of 0.  */
253	.balign 4
254GLOBAL(sdivsi3_i4i):
255	mov.l r6,@-r15
256	exts.b r5,r6
257	cmp/eq r5,r6
258	mov #-1,r1
259	bt/s LOCAL(div_le128)
260	cmp/pz r4
261	addc r4,r1
262	exts.w r5,r6
263	cmp/eq r5,r6
264	mov #-7,r0
265	bf/s LOCAL(div_ge32k)
266	cmp/hi r1,r4 ! copy sign bit of r4 into T
267	rotcr r1
268	shll16 r6  ! 7 cycles up to here
269	shad r0,r1
270	div0s r5,r4
271	div1 r6,r1
272	mov.l r7,@-r15
273	div1 r6,r1
274	mov r4,r0 ! re-compute adjusted dividend
275	div1 r6,r1
276	mov #-31,r7
277	div1 r6,r1
278	shad r7,r0
279	div1 r6,r1
280	add r4,r0 ! adjusted dividend
281	div1 r6,r1
282	mov.l r8,@-r15
283	div1 r6,r1
284	swap.w r4,r8 ! detect special case r4 = 0x80000000, r5 = 0x80
285	div1 r6,r1
286	swap.b r8,r8
287	xor r1,r0 ! xor dividend with result lsb
288	div1 r6,r1
289	div1 r6,r1
290	or r5,r8
291	div1 r6,r1
292	add #-0x80,r8 ! r8 is 0 iff there is a match
293	div1 r6,r1
294	swap.w r8,r7 ! or upper 16 bits...
295	div1 r6,r1
296	or r7,r8 !...into lower 16 bits
297	div1 r6,r1
298	extu.w r8,r8
299	div1 r6,r1
300	extu.b r0,r7
301	div1 r6,r1
302	shll8 r7
303	exts.w r1,r0
304	xor r7,r1 ! replace lsb of result with lsb of dividend
305	div1 r6,r1
306	neg r8,r8 ! upper 16 bits of r8 are now 0xffff iff we want end adjm.
307	div1 r6,r1
308	and r0,r8
309	div1 r6,r1
310	swap.w r8,r7
311	div1 r6,r1
312	mov.l @r15+,r8 ! 58 insns, 29 cycles up to here
313LOCAL(div_end):
314	div1 r6,r1
315	shll8 r0
316	div1 r6,r1
317	exts.w r7,r7
318	div1 r6,r1
319	add r0,r0
320	div1 r6,r1
321	sub r7,r0
322	extu.b r1,r1
323	mov.l @r15+,r7
324	rotcl r1
325	mov.l @r15+,r6
326	rts
327	add r1,r0
328
329	.balign 4
330LOCAL(udiv_le128): ! 4 cycles up to here (or 7 for mispredict)
331	mova LOCAL(div_table_inv),r0
332	shll2 r6
333	mov.l @(r0,r6),r1
334	mova LOCAL(div_table_clz),r0
335	lds r4,mach
336	!
337	!
338	!
339	tst r1,r1
340	!
341	bt 0f
342	dmulu.l r1,r4
3430:	mov.b @(r0,r5),r1
344	clrt
345	!
346	!
347	sts mach,r0
348	addc r4,r0
349	rotcr r0
350	mov.l @r15+,r6
351	rts
352	shld r1,r0
353
354	.balign 4
355LOCAL(div_le128): ! 3 cycles up to here (or 6 for mispredict)
356	mova LOCAL(div_table_inv),r0
357	shll2 r6
358	mov.l @(r0,r6),r1
359	mova LOCAL(div_table_clz),r0
360	neg r4,r6
361	bf 0f
362	mov r4,r6
3630:	lds r6,mach
364	tst r1,r1
365	bt 0f
366	dmulu.l r1,r6
3670:	div0s r4,r5
368	mov.b @(r0,r5),r1
369	bt/s LOCAL(le128_neg)
370	clrt
371	!
372	sts mach,r0
373	addc r6,r0
374	rotcr r0
375	mov.l @r15+,r6
376	rts
377	shld r1,r0
378
379/* Could trap divide by zero for the cost of one cycle more mispredict penalty:
380...
381	dmulu.l r1,r6
3820:	div0s r4,r5
383	bt/s LOCAL(le128_neg)
384	tst r5,r5
385	bt LOCAL(div_by_zero)
386	mov.b @(r0,r5),r1
387	sts mach,r0
388	addc r6,r0
389...
390LOCAL(div_by_zero):
391	trapa #
392	.balign 4
393LOCAL(le128_neg):
394	bt LOCAL(div_by_zero)
395	mov.b @(r0,r5),r1
396	sts mach,r0
397	addc r6,r0
398...  */
399
400	.balign 4
401LOCAL(le128_neg):
402	sts mach,r0
403	addc r6,r0
404	rotcr r0
405	mov.l @r15+,r6
406	shad r1,r0
407	rts
408	neg r0,r0
409	ENDFUNC(GLOBAL(udivsi3_i4i))
410	ENDFUNC(GLOBAL(sdivsi3_i4i))
411
412/* This table has been generated by divtab-sh4.c.  */
413	.balign 4
414	.byte	-7
415	.byte	-6
416	.byte	-6
417	.byte	-6
418	.byte	-6
419	.byte	-6
420	.byte	-6
421	.byte	-6
422	.byte	-6
423	.byte	-6
424	.byte	-6
425	.byte	-6
426	.byte	-6
427	.byte	-6
428	.byte	-6
429	.byte	-6
430	.byte	-6
431	.byte	-6
432	.byte	-6
433	.byte	-6
434	.byte	-6
435	.byte	-6
436	.byte	-6
437	.byte	-6
438	.byte	-6
439	.byte	-6
440	.byte	-6
441	.byte	-6
442	.byte	-6
443	.byte	-6
444	.byte	-6
445	.byte	-6
446	.byte	-6
447	.byte	-6
448	.byte	-6
449	.byte	-6
450	.byte	-6
451	.byte	-6
452	.byte	-6
453	.byte	-6
454	.byte	-6
455	.byte	-6
456	.byte	-6
457	.byte	-6
458	.byte	-6
459	.byte	-6
460	.byte	-6
461	.byte	-6
462	.byte	-6
463	.byte	-6
464	.byte	-6
465	.byte	-6
466	.byte	-6
467	.byte	-6
468	.byte	-6
469	.byte	-6
470	.byte	-6
471	.byte	-6
472	.byte	-6
473	.byte	-6
474	.byte	-6
475	.byte	-6
476	.byte	-6
477	.byte	-6
478	.byte	-6
479	.byte	-5
480	.byte	-5
481	.byte	-5
482	.byte	-5
483	.byte	-5
484	.byte	-5
485	.byte	-5
486	.byte	-5
487	.byte	-5
488	.byte	-5
489	.byte	-5
490	.byte	-5
491	.byte	-5
492	.byte	-5
493	.byte	-5
494	.byte	-5
495	.byte	-5
496	.byte	-5
497	.byte	-5
498	.byte	-5
499	.byte	-5
500	.byte	-5
501	.byte	-5
502	.byte	-5
503	.byte	-5
504	.byte	-5
505	.byte	-5
506	.byte	-5
507	.byte	-5
508	.byte	-5
509	.byte	-5
510	.byte	-5
511	.byte	-4
512	.byte	-4
513	.byte	-4
514	.byte	-4
515	.byte	-4
516	.byte	-4
517	.byte	-4
518	.byte	-4
519	.byte	-4
520	.byte	-4
521	.byte	-4
522	.byte	-4
523	.byte	-4
524	.byte	-4
525	.byte	-4
526	.byte	-4
527	.byte	-3
528	.byte	-3
529	.byte	-3
530	.byte	-3
531	.byte	-3
532	.byte	-3
533	.byte	-3
534	.byte	-3
535	.byte	-2
536	.byte	-2
537	.byte	-2
538	.byte	-2
539	.byte	-1
540	.byte	-1
541	.byte	0
542LOCAL(div_table_clz):
543	.byte	0
544	.byte	0
545	.byte	-1
546	.byte	-1
547	.byte	-2
548	.byte	-2
549	.byte	-2
550	.byte	-2
551	.byte	-3
552	.byte	-3
553	.byte	-3
554	.byte	-3
555	.byte	-3
556	.byte	-3
557	.byte	-3
558	.byte	-3
559	.byte	-4
560	.byte	-4
561	.byte	-4
562	.byte	-4
563	.byte	-4
564	.byte	-4
565	.byte	-4
566	.byte	-4
567	.byte	-4
568	.byte	-4
569	.byte	-4
570	.byte	-4
571	.byte	-4
572	.byte	-4
573	.byte	-4
574	.byte	-4
575	.byte	-5
576	.byte	-5
577	.byte	-5
578	.byte	-5
579	.byte	-5
580	.byte	-5
581	.byte	-5
582	.byte	-5
583	.byte	-5
584	.byte	-5
585	.byte	-5
586	.byte	-5
587	.byte	-5
588	.byte	-5
589	.byte	-5
590	.byte	-5
591	.byte	-5
592	.byte	-5
593	.byte	-5
594	.byte	-5
595	.byte	-5
596	.byte	-5
597	.byte	-5
598	.byte	-5
599	.byte	-5
600	.byte	-5
601	.byte	-5
602	.byte	-5
603	.byte	-5
604	.byte	-5
605	.byte	-5
606	.byte	-5
607	.byte	-6
608	.byte	-6
609	.byte	-6
610	.byte	-6
611	.byte	-6
612	.byte	-6
613	.byte	-6
614	.byte	-6
615	.byte	-6
616	.byte	-6
617	.byte	-6
618	.byte	-6
619	.byte	-6
620	.byte	-6
621	.byte	-6
622	.byte	-6
623	.byte	-6
624	.byte	-6
625	.byte	-6
626	.byte	-6
627	.byte	-6
628	.byte	-6
629	.byte	-6
630	.byte	-6
631	.byte	-6
632	.byte	-6
633	.byte	-6
634	.byte	-6
635	.byte	-6
636	.byte	-6
637	.byte	-6
638	.byte	-6
639	.byte	-6
640	.byte	-6
641	.byte	-6
642	.byte	-6
643	.byte	-6
644	.byte	-6
645	.byte	-6
646	.byte	-6
647	.byte	-6
648	.byte	-6
649	.byte	-6
650	.byte	-6
651	.byte	-6
652	.byte	-6
653	.byte	-6
654	.byte	-6
655	.byte	-6
656	.byte	-6
657	.byte	-6
658	.byte	-6
659	.byte	-6
660	.byte	-6
661	.byte	-6
662	.byte	-6
663	.byte	-6
664	.byte	-6
665	.byte	-6
666	.byte	-6
667	.byte	-6
668	.byte	-6
669	.byte	-6
670	.byte	-6
671/* 1/-128 .. 1/127, normalized.  There is an implicit leading 1 in bit 32,
672   or in bit 33 for powers of two.  */
673	.balign 4
674	.long   0x0
675	.long	0x2040811
676	.long	0x4104105
677	.long	0x624DD30
678	.long	0x8421085
679	.long	0xA6810A7
680	.long	0xC9714FC
681	.long	0xECF56BF
682	.long	0x11111112
683	.long	0x135C8114
684	.long	0x15B1E5F8
685	.long	0x18118119
686	.long	0x1A7B9612
687	.long	0x1CF06ADB
688	.long	0x1F7047DD
689	.long	0x21FB7813
690	.long	0x24924925
691	.long	0x27350B89
692	.long	0x29E4129F
693	.long	0x2C9FB4D9
694	.long	0x2F684BDB
695	.long	0x323E34A3
696	.long	0x3521CFB3
697	.long	0x38138139
698	.long	0x3B13B13C
699	.long	0x3E22CBCF
700	.long	0x41414142
701	.long	0x446F8657
702	.long	0x47AE147B
703	.long	0x4AFD6A06
704	.long	0x4E5E0A73
705	.long	0x51D07EAF
706	.long	0x55555556
707	.long	0x58ED2309
708	.long	0x5C9882BA
709	.long	0x60581606
710	.long	0x642C8591
711	.long	0x68168169
712	.long	0x6C16C16D
713	.long	0x702E05C1
714	.long	0x745D1746
715	.long	0x78A4C818
716	.long	0x7D05F418
717	.long	0x81818182
718	.long	0x86186187
719	.long	0x8ACB90F7
720	.long	0x8F9C18FA
721	.long	0x948B0FCE
722	.long	0x9999999A
723	.long	0x9EC8E952
724	.long	0xA41A41A5
725	.long	0xA98EF607
726	.long	0xAF286BCB
727	.long	0xB4E81B4F
728	.long	0xBACF914D
729	.long	0xC0E07039
730	.long	0xC71C71C8
731	.long	0xCD856891
732	.long	0xD41D41D5
733	.long	0xDAE6076C
734	.long	0xE1E1E1E2
735	.long	0xE9131AC0
736	.long	0xF07C1F08
737	.long	0xF81F81F9
738	.long	0x0
739	.long	0x4104105
740	.long	0x8421085
741	.long	0xC9714FC
742	.long	0x11111112
743	.long	0x15B1E5F8
744	.long	0x1A7B9612
745	.long	0x1F7047DD
746	.long	0x24924925
747	.long	0x29E4129F
748	.long	0x2F684BDB
749	.long	0x3521CFB3
750	.long	0x3B13B13C
751	.long	0x41414142
752	.long	0x47AE147B
753	.long	0x4E5E0A73
754	.long	0x55555556
755	.long	0x5C9882BA
756	.long	0x642C8591
757	.long	0x6C16C16D
758	.long	0x745D1746
759	.long	0x7D05F418
760	.long	0x86186187
761	.long	0x8F9C18FA
762	.long	0x9999999A
763	.long	0xA41A41A5
764	.long	0xAF286BCB
765	.long	0xBACF914D
766	.long	0xC71C71C8
767	.long	0xD41D41D5
768	.long	0xE1E1E1E2
769	.long	0xF07C1F08
770	.long	0x0
771	.long	0x8421085
772	.long	0x11111112
773	.long	0x1A7B9612
774	.long	0x24924925
775	.long	0x2F684BDB
776	.long	0x3B13B13C
777	.long	0x47AE147B
778	.long	0x55555556
779	.long	0x642C8591
780	.long	0x745D1746
781	.long	0x86186187
782	.long	0x9999999A
783	.long	0xAF286BCB
784	.long	0xC71C71C8
785	.long	0xE1E1E1E2
786	.long	0x0
787	.long	0x11111112
788	.long	0x24924925
789	.long	0x3B13B13C
790	.long	0x55555556
791	.long	0x745D1746
792	.long	0x9999999A
793	.long	0xC71C71C8
794	.long	0x0
795	.long	0x24924925
796	.long	0x55555556
797	.long	0x9999999A
798	.long	0x0
799	.long	0x55555556
800	.long	0x0
801	.long	0x0
802LOCAL(div_table_inv):
803	.long	0x0
804	.long	0x0
805	.long	0x0
806	.long	0x55555556
807	.long	0x0
808	.long	0x9999999A
809	.long	0x55555556
810	.long	0x24924925
811	.long	0x0
812	.long	0xC71C71C8
813	.long	0x9999999A
814	.long	0x745D1746
815	.long	0x55555556
816	.long	0x3B13B13C
817	.long	0x24924925
818	.long	0x11111112
819	.long	0x0
820	.long	0xE1E1E1E2
821	.long	0xC71C71C8
822	.long	0xAF286BCB
823	.long	0x9999999A
824	.long	0x86186187
825	.long	0x745D1746
826	.long	0x642C8591
827	.long	0x55555556
828	.long	0x47AE147B
829	.long	0x3B13B13C
830	.long	0x2F684BDB
831	.long	0x24924925
832	.long	0x1A7B9612
833	.long	0x11111112
834	.long	0x8421085
835	.long	0x0
836	.long	0xF07C1F08
837	.long	0xE1E1E1E2
838	.long	0xD41D41D5
839	.long	0xC71C71C8
840	.long	0xBACF914D
841	.long	0xAF286BCB
842	.long	0xA41A41A5
843	.long	0x9999999A
844	.long	0x8F9C18FA
845	.long	0x86186187
846	.long	0x7D05F418
847	.long	0x745D1746
848	.long	0x6C16C16D
849	.long	0x642C8591
850	.long	0x5C9882BA
851	.long	0x55555556
852	.long	0x4E5E0A73
853	.long	0x47AE147B
854	.long	0x41414142
855	.long	0x3B13B13C
856	.long	0x3521CFB3
857	.long	0x2F684BDB
858	.long	0x29E4129F
859	.long	0x24924925
860	.long	0x1F7047DD
861	.long	0x1A7B9612
862	.long	0x15B1E5F8
863	.long	0x11111112
864	.long	0xC9714FC
865	.long	0x8421085
866	.long	0x4104105
867	.long	0x0
868	.long	0xF81F81F9
869	.long	0xF07C1F08
870	.long	0xE9131AC0
871	.long	0xE1E1E1E2
872	.long	0xDAE6076C
873	.long	0xD41D41D5
874	.long	0xCD856891
875	.long	0xC71C71C8
876	.long	0xC0E07039
877	.long	0xBACF914D
878	.long	0xB4E81B4F
879	.long	0xAF286BCB
880	.long	0xA98EF607
881	.long	0xA41A41A5
882	.long	0x9EC8E952
883	.long	0x9999999A
884	.long	0x948B0FCE
885	.long	0x8F9C18FA
886	.long	0x8ACB90F7
887	.long	0x86186187
888	.long	0x81818182
889	.long	0x7D05F418
890	.long	0x78A4C818
891	.long	0x745D1746
892	.long	0x702E05C1
893	.long	0x6C16C16D
894	.long	0x68168169
895	.long	0x642C8591
896	.long	0x60581606
897	.long	0x5C9882BA
898	.long	0x58ED2309
899	.long	0x55555556
900	.long	0x51D07EAF
901	.long	0x4E5E0A73
902	.long	0x4AFD6A06
903	.long	0x47AE147B
904	.long	0x446F8657
905	.long	0x41414142
906	.long	0x3E22CBCF
907	.long	0x3B13B13C
908	.long	0x38138139
909	.long	0x3521CFB3
910	.long	0x323E34A3
911	.long	0x2F684BDB
912	.long	0x2C9FB4D9
913	.long	0x29E4129F
914	.long	0x27350B89
915	.long	0x24924925
916	.long	0x21FB7813
917	.long	0x1F7047DD
918	.long	0x1CF06ADB
919	.long	0x1A7B9612
920	.long	0x18118119
921	.long	0x15B1E5F8
922	.long	0x135C8114
923	.long	0x11111112
924	.long	0xECF56BF
925	.long	0xC9714FC
926	.long	0xA6810A7
927	.long	0x8421085
928	.long	0x624DD30
929	.long	0x4104105
930	.long	0x2040811
931	/* maximum error: 0.987342 scaled: 0.921875*/
932
933#endif /* SH3 / SH4 */
934
935#endif /* L_div_table */
936#endif /* !__SHMEDIA__ */
937