sparc_v8.S revision 1.3 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
10 /*
11 * unsigned .umul(unsigned a, unsigned b)
12 *
13 * This function computes a * b with unsigned integer
14 * multiplication. When .umul returns, the caller's register %o0
15 * contains the least significant 32 bits of the 64-bit result;
16 * register %o1 holds the most significant 32 bits of the result.
17 * Upon return, the integer condition codes and registers %o2
18 * through %o5 have unspecified values.
19 */
20 .align 4
21 .global .umul
22 .type .umul,@function
23 .umul:
24 umul %o0, %o1, %o0
25 retl
26 rd %y, %o1
27 .LLfe1:
28 .size .umul,.LLfe1-.umul
29
30
31 /*
32 * int .mul(int a, int b)
33 *
34 * This function computes a * b with signed integer
35 * multiplication. When .mul returns, the caller's register %o0
36 * contains the least significant 32 bits of the 64-bit result;
37 * register %o1 holds the most significant 32 bits of the result.
38 * Upon return, the integer condition codes and registers %o2
39 * through %o5 have unspecified values.
40 */
41 .align 4
42 .global .mul
43 .type .mul,@function
44 .mul:
45 smul %o0, %o1, %o0
46 retl
47 rd %y, %o1
48 .LLfe2:
49 .size .mul,.LLfe2-.mul
50
51 /*--- .udiv ---*/
52 .align 4
53 .global .udiv
54 .type .udiv,@function
55 .udiv:
56 wr %g0, 0, %y
57 nop; nop; nop
58 retl
59 udiv %o0, %o1, %o0
60 .LLfe3:
61 .size .udiv,.LLfe3-.udiv
62
63 /*--- .div ---*/
64 .align 4
65 .global .div
66 .type .div,@function
67 .div:
68 sra %o0, 31, %g2
69 wr %g2, 0, %y
70 nop; nop; nop
71 retl
72 sdiv %o0, %o1, %o0
73 .LLfe4:
74 .size .div,.LLfe4-.div
75
76 /*--- .urem ---*/
77 .align 4
78 .global .urem
79 .type .urem,@function
80 .urem:
81 wr %g0, %g0, %y
82 nop; nop; nop
83 udiv %o0, %o1, %g2
84 smul %g2, %o1, %g2
85 retl
86 sub %o0, %g2, %o0
87 .LLfe5:
88 .size .urem,.LLfe5-.urem
89
90 /*--- .rem ---*/
91 .align 4
92 .global .rem
93 .type .rem,@function
94 .rem:
95 sra %o0, 31, %g3
96 wr %g3, 0, %y
97 nop; nop; nop
98 sdiv %o0, %o1, %g2
99 smul %g2, %o1, %g2
100 retl
101 sub %o0, %g2, %o0
102 .LLfe6:
103 .size .rem,.LLfe6-.rem
104 !.ident "GCC: (GNU) 2.95.3 20010315 (release) (NetBSD nb3)"
105