summaryrefslogtreecommitdiff
path: root/apps/codecs/libwma/wmafixed.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/libwma/wmafixed.h')
-rw-r--r--apps/codecs/libwma/wmafixed.h64
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
146static inline
147void 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
168static inline
169void 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
187static inline
188void 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