annotate mp3lib/decode_i586.s @ 2475:3369845d92f4

3dnow dering
author michael
date Thu, 25 Oct 2001 22:50:03 +0000
parents 3b5f5d1c5041
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1 /
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
2 / mpg123_synth_1to1 works the same way as the c version of this
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
3 / file. only two types of changes have been made:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
4 / - reordered floating point instructions to
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
5 / prevent pipline stalls
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
6 / - made WRITE_SAMPLE use integer instead of
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
7 / (slower) floating point
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
8 / all kinds of x86 processors should benefit from these
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
9 / modifications.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
10 /
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
11 / useful sources of information on optimizing x86 code include:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
12 /
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
13 / Intel Architecture Optimization Manual
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
14 / http://www.intel.com/design/pentium/manuals/242816.htm
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
15 /
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
16 / Cyrix 6x86 Instruction Set Summary
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
17 / ftp://ftp.cyrix.com/6x86/6x-dbch6.pdf
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
18 /
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
19 / AMD-K5 Processor Software Development
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
20 / http://www.amd.com/products/cpg/techdocs/appnotes/20007e.pdf
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
21 /
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
22 / Stefan Bieschewski <stb@acm.org>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
23 /
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
24 / $Id$
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
25 /
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
26 .bss
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
27 .comm buffs,4352,4
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
28 .data
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
29 .align 4
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
30 bo:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
31 .long 1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
32 .section .rodata
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
33 .align 8
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
34 .LC0:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
35 .long 0x0,0x40dfffc0
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
36 .align 8
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
37 .LC1:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
38 .long 0x0,0xc0e00000
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
39 .align 8
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
40 .text
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
41 .globl synth_1to1_pent
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
42 synth_1to1_pent:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
43 subl $12,%esp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
44 pushl %ebp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
45 pushl %edi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
46 pushl %esi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
47 pushl %ebx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
48 movl 32(%esp),%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
49 movl 40(%esp),%esi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
50 xorl %edi,%edi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51 movl bo,%ebp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52 cmpl %edi,36(%esp)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53 jne .L48
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
54 decl %ebp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
55 andl $15,%ebp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56 movl %ebp,bo
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
57 movl $buffs,%ecx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58 jmp .L49
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
59 .L48:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
60 addl $2,%esi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
61 movl $buffs+2176,%ecx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
62 .L49:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
63 testl $1,%ebp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
64 je .L50
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
65 movl %ecx,%ebx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
66 movl %ebp,16(%esp)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
67 pushl %eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
68 movl 20(%esp),%edx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
69 leal (%ebx,%edx,4),%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
70 pushl %eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
71 movl 24(%esp),%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
72 incl %eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
73 andl $15,%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
74 leal 1088(,%eax,4),%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
75 addl %ebx,%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
76 jmp .L74
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
77 .L50:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
78 leal 1088(%ecx),%ebx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
79 leal 1(%ebp),%edx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
80 movl %edx,16(%esp)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
81 pushl %eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
82 leal 1092(%ecx,%ebp,4),%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
83 pushl %eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
84 leal (%ecx,%ebp,4),%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
85 .L74:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
86 pushl %eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
87 call dct64
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
88 addl $12,%esp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
89 movl 16(%esp),%edx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
90 leal 0(,%edx,4),%edx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
91 movl $decwin+64,%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
92 movl %eax,%ecx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
93 subl %edx,%ecx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
94 movl $16,%ebp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
95 .L55:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
96 flds (%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
97 fmuls (%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
98 flds 4(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
99 fmuls 4(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
100 fxch %st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
101 flds 8(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
102 fmuls 8(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
103 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
104 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
105 flds 12(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
106 fmuls 12(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
107 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
108 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
109 flds 16(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
110 fmuls 16(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
111 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
112 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
113 flds 20(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
114 fmuls 20(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
115 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
116 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
117 flds 24(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
118 fmuls 24(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
119 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
120 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
121 flds 28(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
122 fmuls 28(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
123 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
124 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
125 flds 32(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
126 fmuls 32(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
127 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
128 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
129 flds 36(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
130 fmuls 36(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
131 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
132 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
133 flds 40(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
134 fmuls 40(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
135 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
136 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
137 flds 44(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
138 fmuls 44(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
139 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
140 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
141 flds 48(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
142 fmuls 48(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
143 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
144 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
145 flds 52(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
146 fmuls 52(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
147 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
148 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
149 flds 56(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
150 fmuls 56(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
151 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
152 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
153 flds 60(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
154 fmuls 60(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
155 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
156 subl $4,%esp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
157 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
158 fxch %st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
159 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
160 fistpl (%esp)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
161 popl %eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
162 cmpl $32767,%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
163 jg 1f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
164 cmpl $-32768,%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
165 jl 2f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
166 movw %ax,(%esi)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
167 jmp 4f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
168 1: movw $32767,(%esi)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
169 jmp 3f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
170 2: movw $-32768,(%esi)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
171 3: incl %edi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
172 4:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
173 .L54:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
174 addl $64,%ebx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
175 subl $-128,%ecx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
176 addl $4,%esi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
177 decl %ebp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
178 jnz .L55
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
179 flds (%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
180 fmuls (%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
181 flds 8(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
182 fmuls 8(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
183 flds 16(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
184 fmuls 16(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
185 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
186 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
187 flds 24(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
188 fmuls 24(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
189 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
190 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
191 flds 32(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
192 fmuls 32(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
193 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
194 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
195 flds 40(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
196 fmuls 40(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
197 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
198 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
199 flds 48(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
200 fmuls 48(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
201 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
202 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
203 flds 56(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
204 fmuls 56(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
205 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
206 subl $4,%esp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
207 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
208 fxch %st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
209 faddp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
210 fistpl (%esp)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
211 popl %eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
212 cmpl $32767,%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
213 jg 1f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
214 cmpl $-32768,%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
215 jl 2f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
216 movw %ax,(%esi)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
217 jmp 4f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
218 1: movw $32767,(%esi)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
219 jmp 3f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
220 2: movw $-32768,(%esi)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
221 3: incl %edi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
222 4:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
223 .L62:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
224 addl $-64,%ebx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
225 addl $4,%esi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
226 movl 16(%esp),%edx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
227 leal -128(%ecx,%edx,8),%ecx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
228 movl $15,%ebp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
229 .L68:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
230 flds -4(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
231 fchs
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
232 fmuls (%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
233 flds -8(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
234 fmuls 4(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
235 fxch %st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
236 flds -12(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
237 fmuls 8(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
238 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
239 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
240 flds -16(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
241 fmuls 12(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
242 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
243 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
244 flds -20(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
245 fmuls 16(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
246 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
247 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
248 flds -24(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
249 fmuls 20(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
250 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
251 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
252 flds -28(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
253 fmuls 24(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
254 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
255 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
256 flds -32(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
257 fmuls 28(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
258 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
259 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
260 flds -36(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
261 fmuls 32(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
262 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
263 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
264 flds -40(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
265 fmuls 36(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
266 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
267 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
268 flds -44(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
269 fmuls 40(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
270 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
271 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
272 flds -48(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
273 fmuls 44(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
274 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
275 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
276 flds -52(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
277 fmuls 48(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
278 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
279 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
280 flds -56(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
281 fmuls 52(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
282 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
283 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
284 flds -60(%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
285 fmuls 56(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
286 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
287 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
288 flds (%ecx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
289 fmuls 60(%ebx)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
290 fxch %st(2)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
291 subl $4,%esp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
292 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
293 fxch %st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
294 fsubrp %st,%st(1)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
295 fistpl (%esp)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
296 popl %eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
297 cmpl $32767,%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
298 jg 1f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
299 cmpl $-32768,%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
300 jl 2f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
301 movw %ax,(%esi)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
302 jmp 4f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
303 1: movw $32767,(%esi)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
304 jmp 3f
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
305 2: movw $-32768,(%esi)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
306 3: incl %edi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
307 4:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
308 .L67:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
309 addl $-64,%ebx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
310 addl $-128,%ecx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
311 addl $4,%esi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
312 decl %ebp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
313 jnz .L68
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
314 movl %edi,%eax
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
315 popl %ebx
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
316 popl %esi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
317 popl %edi
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
318 popl %ebp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
319 addl $12,%esp
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
320 ret
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
321