xref: /netbsd-src/lib/libarch/sparc/v8/sparc_v8.S (revision 181254a7b1bdde6873432bffef2d2decc4b5c22f)
1/*
2 * GCC generated output for sparc v8 mul/div/rem operations.
3 * Included in the sparc_v8.so shared library for use on sparc v8
4 * machines instead of the libc.so versions.
5 */
6	.file	"sparc_v8.S"
7.section	".text"
8
9/*--- .umul ---*/
10	.align 4
11	.global .umul
12	.type	 .umul,@function
13
14.umul:
15	!#PROLOGUE# 0
16	!#PROLOGUE# 1
17	retl
18	 umul	%o0, %o1, %o0
19.LLfe1:
20	.size	 .umul,.LLfe1-.umul
21
22/*--- .mul ---*/
23	.align 4
24	.global .mul
25	.type	 .mul,@function
26.mul:
27	!#PROLOGUE# 0
28	!#PROLOGUE# 1
29	retl
30	 smul	%o0, %o1, %o0
31.LLfe2:
32	.size	 .mul,.LLfe2-.mul
33
34/*--- .udiv ---*/
35	.align 4
36	.global .udiv
37	.type	 .udiv,@function
38.udiv:
39	wr	%g0, 0, %y
40	nop; nop; nop
41	retl
42	 udiv	%o0, %o1, %o0
43.LLfe3:
44	.size	 .udiv,.LLfe3-.udiv
45
46/*--- .div ---*/
47	.align 4
48	.global .div
49	.type	 .div,@function
50.div:
51	sra	%o0, 31, %g2
52	wr	%g2, 0, %y
53	nop; nop; nop
54	retl
55	 sdiv	%o0, %o1, %o0
56.LLfe4:
57	.size	 .div,.LLfe4-.div
58
59/*--- .urem ---*/
60	.align 4
61	.global .urem
62	.type	 .urem,@function
63.urem:
64	wr	%g0, %g0, %y
65	nop; nop; nop
66	udiv	%o0, %o1, %g2
67	smul	%g2, %o1, %g2
68	retl
69	 sub	%o0, %g2, %o0
70.LLfe5:
71	.size	 .urem,.LLfe5-.urem
72
73/*--- .rem ---*/
74	.align 4
75	.global .rem
76	.type	 .rem,@function
77.rem:
78	sra	%o0, 31, %g3
79	wr	%g3, 0, %y
80	nop; nop; nop
81	sdiv	%o0, %o1, %g2
82	smul	%g2, %o1, %g2
83	retl
84	 sub	%o0, %g2, %o0
85.LLfe6:
86	.size	 .rem,.LLfe6-.rem
87	!.ident	"GCC: (GNU) 2.95.3 20010315 (release) (NetBSD nb3)"
88