OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rc203soc/] [sw/] [uClinux/] [arch/] [i386/] [math-emu/] [mul_Xsig.S] - Blame information for rev 1777

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1623 jcastillo
/*---------------------------------------------------------------------------+
2
 |  mul_Xsig.S                                                               |
3
 |                                                                           |
4
 | Multiply a 12 byte fixed point number by another fixed point number.      |
5
 |                                                                           |
6
 | Copyright (C) 1992,1994,1995                                              |
7
 |                       W. Metzenthen, 22 Parker St, Ormond, Vic 3163,      |
8
 |                       Australia.  E-mail billm@jacobi.maths.monash.edu.au |
9
 |                                                                           |
10
 | Call from C as:                                                           |
11
 |   void mul32_Xsig(Xsig *x, unsigned b)                                    |
12
 |                                                                           |
13
 |   void mul64_Xsig(Xsig *x, unsigned long long *b)                         |
14
 |                                                                           |
15
 |   void mul_Xsig_Xsig(Xsig *x, unsigned *b)                                |
16
 |                                                                           |
17
 | The result is neither rounded nor normalized, and the ls bit or so may    |
18
 | be wrong.                                                                 |
19
 |                                                                           |
20
 +---------------------------------------------------------------------------*/
21
        .file   "mul_Xsig.S"
22
 
23
 
24
#include "fpu_emu.h"
25
 
26
.text
27
ENTRY(mul32_Xsig)
28
        pushl %ebp
29
        movl %esp,%ebp
30
        subl $16,%esp
31
        pushl %esi
32
 
33
        movl PARAM1,%esi
34
        movl PARAM2,%ecx
35
 
36
        xor %eax,%eax
37
        movl %eax,-4(%ebp)
38
        movl %eax,-8(%ebp)
39
 
40
        movl (%esi),%eax        /* lsl of Xsig */
41
        mull %ecx               /* msl of b */
42
        movl %edx,-12(%ebp)
43
 
44
        movl 4(%esi),%eax       /* midl of Xsig */
45
        mull %ecx               /* msl of b */
46
        addl %eax,-12(%ebp)
47
        adcl %edx,-8(%ebp)
48
        adcl $0,-4(%ebp)
49
 
50
        movl 8(%esi),%eax       /* msl of Xsig */
51
        mull %ecx               /* msl of b */
52
        addl %eax,-8(%ebp)
53
        adcl %edx,-4(%ebp)
54
 
55
        movl -12(%ebp),%eax
56
        movl %eax,(%esi)
57
        movl -8(%ebp),%eax
58
        movl %eax,4(%esi)
59
        movl -4(%ebp),%eax
60
        movl %eax,8(%esi)
61
 
62
        popl %esi
63
        leave
64
        ret
65
 
66
 
67
ENTRY(mul64_Xsig)
68
        pushl %ebp
69
        movl %esp,%ebp
70
        subl $16,%esp
71
        pushl %esi
72
 
73
        movl PARAM1,%esi
74
        movl PARAM2,%ecx
75
 
76
        xor %eax,%eax
77
        movl %eax,-4(%ebp)
78
        movl %eax,-8(%ebp)
79
 
80
        movl (%esi),%eax        /* lsl of Xsig */
81
        mull 4(%ecx)            /* msl of b */
82
        movl %edx,-12(%ebp)
83
 
84
        movl 4(%esi),%eax       /* midl of Xsig */
85
        mull (%ecx)             /* lsl of b */
86
        addl %edx,-12(%ebp)
87
        adcl $0,-8(%ebp)
88
        adcl $0,-4(%ebp)
89
 
90
        movl 4(%esi),%eax       /* midl of Xsig */
91
        mull 4(%ecx)            /* msl of b */
92
        addl %eax,-12(%ebp)
93
        adcl %edx,-8(%ebp)
94
        adcl $0,-4(%ebp)
95
 
96
        movl 8(%esi),%eax       /* msl of Xsig */
97
        mull (%ecx)             /* lsl of b */
98
        addl %eax,-12(%ebp)
99
        adcl %edx,-8(%ebp)
100
        adcl $0,-4(%ebp)
101
 
102
        movl 8(%esi),%eax       /* msl of Xsig */
103
        mull 4(%ecx)            /* msl of b */
104
        addl %eax,-8(%ebp)
105
        adcl %edx,-4(%ebp)
106
 
107
        movl -12(%ebp),%eax
108
        movl %eax,(%esi)
109
        movl -8(%ebp),%eax
110
        movl %eax,4(%esi)
111
        movl -4(%ebp),%eax
112
        movl %eax,8(%esi)
113
 
114
        popl %esi
115
        leave
116
        ret
117
 
118
 
119
 
120
ENTRY(mul_Xsig_Xsig)
121
        pushl %ebp
122
        movl %esp,%ebp
123
        subl $16,%esp
124
        pushl %esi
125
 
126
        movl PARAM1,%esi
127
        movl PARAM2,%ecx
128
 
129
        xor %eax,%eax
130
        movl %eax,-4(%ebp)
131
        movl %eax,-8(%ebp)
132
 
133
        movl (%esi),%eax        /* lsl of Xsig */
134
        mull 8(%ecx)            /* msl of b */
135
        movl %edx,-12(%ebp)
136
 
137
        movl 4(%esi),%eax       /* midl of Xsig */
138
        mull 4(%ecx)            /* midl of b */
139
        addl %edx,-12(%ebp)
140
        adcl $0,-8(%ebp)
141
        adcl $0,-4(%ebp)
142
 
143
        movl 8(%esi),%eax       /* msl of Xsig */
144
        mull (%ecx)             /* lsl of b */
145
        addl %edx,-12(%ebp)
146
        adcl $0,-8(%ebp)
147
        adcl $0,-4(%ebp)
148
 
149
        movl 4(%esi),%eax       /* midl of Xsig */
150
        mull 8(%ecx)            /* msl of b */
151
        addl %eax,-12(%ebp)
152
        adcl %edx,-8(%ebp)
153
        adcl $0,-4(%ebp)
154
 
155
        movl 8(%esi),%eax       /* msl of Xsig */
156
        mull 4(%ecx)            /* midl of b */
157
        addl %eax,-12(%ebp)
158
        adcl %edx,-8(%ebp)
159
        adcl $0,-4(%ebp)
160
 
161
        movl 8(%esi),%eax       /* msl of Xsig */
162
        mull 8(%ecx)            /* msl of b */
163
        addl %eax,-8(%ebp)
164
        adcl %edx,-4(%ebp)
165
 
166
        movl -12(%ebp),%edx
167
        movl %edx,(%esi)
168
        movl -8(%ebp),%edx
169
        movl %edx,4(%esi)
170
        movl -4(%ebp),%edx
171
        movl %edx,8(%esi)
172
 
173
        popl %esi
174
        leave
175
        ret
176
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.