diff options
Diffstat (limited to 'apps/codecs/libwma/wmafixed.h')
-rw-r--r-- | apps/codecs/libwma/wmafixed.h | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/apps/codecs/libwma/wmafixed.h b/apps/codecs/libwma/wmafixed.h index 198e79e335..fb31cf8bfa 100644 --- a/apps/codecs/libwma/wmafixed.h +++ b/apps/codecs/libwma/wmafixed.h | |||
@@ -142,67 +142,3 @@ static inline fixed32 fixmul32b(fixed32 x, fixed32 y) | |||
142 | 142 | ||
143 | #endif | 143 | #endif |
144 | 144 | ||
145 | #ifdef CPU_ARM | ||
146 | static inline | ||
147 | void CMUL(fixed32 *x, fixed32 *y, | ||
148 | fixed32 a, fixed32 b, | ||
149 | fixed32 t, fixed32 v) | ||
150 | { | ||
151 | /* This version loses one bit of precision. Could be solved at the cost | ||
152 | * of 2 extra cycles if it becomes an issue. */ | ||
153 | int x1, y1, l; | ||
154 | asm( | ||
155 | "smull %[l], %[y1], %[b], %[t] \n" | ||
156 | "smlal %[l], %[y1], %[a], %[v] \n" | ||
157 | "rsb %[b], %[b], #0 \n" | ||
158 | "smull %[l], %[x1], %[a], %[t] \n" | ||
159 | "smlal %[l], %[x1], %[b], %[v] \n" | ||
160 | : [l] "=&r" (l), [x1]"=&r" (x1), [y1]"=&r" (y1), [b] "+r" (b) | ||
161 | : [a] "r" (a), [t] "r" (t), [v] "r" (v) | ||
162 | : "cc" | ||
163 | ); | ||
164 | *x = x1 << 1; | ||
165 | *y = y1 << 1; | ||
166 | } | ||
167 | #elif defined CPU_COLDFIRE | ||
168 | static inline | ||
169 | void CMUL(fixed32 *x, fixed32 *y, | ||
170 | fixed32 a, fixed32 b, | ||
171 | fixed32 t, fixed32 v) | ||
172 | { | ||
173 | asm volatile ("mac.l %[a], %[t], %%acc0;" | ||
174 | "msac.l %[b], %[v], %%acc0;" | ||
175 | "mac.l %[b], %[t], %%acc1;" | ||
176 | "mac.l %[a], %[v], %%acc1;" | ||
177 | "movclr.l %%acc0, %[a];" | ||
178 | "move.l %[a], (%[x]);" | ||
179 | "movclr.l %%acc1, %[a];" | ||
180 | "move.l %[a], (%[y]);" | ||
181 | : [a] "+&r" (a) | ||
182 | : [x] "a" (x), [y] "a" (y), | ||
183 | [b] "r" (b), [t] "r" (t), [v] "r" (v) | ||
184 | : "cc", "memory"); | ||
185 | } | ||
186 | #else | ||
187 | static inline | ||
188 | void CMUL(fixed32 *pre, | ||
189 | fixed32 *pim, | ||
190 | fixed32 are, | ||
191 | fixed32 aim, | ||
192 | fixed32 bre, | ||
193 | fixed32 bim) | ||
194 | { | ||
195 | //int64_t x,y; | ||
196 | fixed32 _aref = are; | ||
197 | fixed32 _aimf = aim; | ||
198 | fixed32 _bref = bre; | ||
199 | fixed32 _bimf = bim; | ||
200 | fixed32 _r1 = fixmul32b(_bref, _aref); | ||
201 | fixed32 _r2 = fixmul32b(_bimf, _aimf); | ||
202 | fixed32 _r3 = fixmul32b(_bref, _aimf); | ||
203 | fixed32 _r4 = fixmul32b(_bimf, _aref); | ||
204 | *pre = _r1 - _r2; | ||
205 | *pim = _r3 + _r4; | ||
206 | |||
207 | } | ||
208 | #endif | ||