annotate Plugins/Input/mpg123/decode_i586.s @ 130:7dc049844b73 trunk

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