annotate mp3lib/decode_i586.s @ 2316:bcb229557e9b

fixed alignment (static variables where sometimes not 8-byte aligned) added half uv interpolation support added prefetch BGR15 support in MMX (untested) (so BGR15,16,24,32 are supported) special unscaled height version (not much faster but it doesnt interpolate uv vertically)
author michael
date Sat, 20 Oct 2001 21:12:09 +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