diff options
author | Thom Johansen <thomj@rockbox.org> | 2005-06-11 14:45:48 +0000 |
---|---|---|
committer | Thom Johansen <thomj@rockbox.org> | 2005-06-11 14:45:48 +0000 |
commit | 5f12af28fb46d3d14e3168a55a34f3267543b312 (patch) | |
tree | cb5fa7829bba484deb095f4aa453caab5acdc298 /apps/codecs/liba52/a52_internal.h | |
parent | c0f9ad61fbf4ea4e774b42a95a8f567a1fb1db1b (diff) | |
download | rockbox-5f12af28fb46d3d14e3168a55a34f3267543b312.tar.gz rockbox-5f12af28fb46d3d14e3168a55a34f3267543b312.zip |
Big performance improvement for liba52. A couple of small ASM opts, and lots IRAM usage.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6676 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/liba52/a52_internal.h')
-rw-r--r-- | apps/codecs/liba52/a52_internal.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/apps/codecs/liba52/a52_internal.h b/apps/codecs/liba52/a52_internal.h index 32b1160903..4de21d9dde 100644 --- a/apps/codecs/liba52/a52_internal.h +++ b/apps/codecs/liba52/a52_internal.h | |||
@@ -141,6 +141,31 @@ typedef int16_t quantizer_t; | |||
141 | #if 0 | 141 | #if 0 |
142 | #define MUL(a,b) ((int)(((int64_t)(a) * (b) + (1 << 29)) >> 30)) | 142 | #define MUL(a,b) ((int)(((int64_t)(a) * (b) + (1 << 29)) >> 30)) |
143 | #define MUL_L(a,b) ((int)(((int64_t)(a) * (b) + (1 << 25)) >> 26)) | 143 | #define MUL_L(a,b) ((int)(((int64_t)(a) * (b) + (1 << 25)) >> 26)) |
144 | #elif CONFIG_CPU==MCF5249 && !defined(SIMULATOR) | ||
145 | /* loses 1 bit of accuracy */ | ||
146 | #define MUL(a, b) \ | ||
147 | ({ \ | ||
148 | int32_t t; \ | ||
149 | asm volatile ( \ | ||
150 | "mac.l %[A], %[B], %%acc0\n\t" \ | ||
151 | "movclr.l %%acc0, %[t]\n\t" \ | ||
152 | "asl.l #1, %[t]" \ | ||
153 | : [t] "=d" (t) \ | ||
154 | : [A] "r" ((a)), [B] "r" ((b))); \ | ||
155 | t; \ | ||
156 | }) | ||
157 | /* loses 5 bits of accuracy */ | ||
158 | #define MUL_L(a, b) \ | ||
159 | ({ \ | ||
160 | int32_t t; \ | ||
161 | asm volatile ( \ | ||
162 | "mac.l %[A], %[B], %%acc0\n\t" \ | ||
163 | "movclr.l %%acc0, %[t]\n\t" \ | ||
164 | "asl.l #5, %[t]" \ | ||
165 | : [t] "=d" (t) \ | ||
166 | : [A] "r" ((a)), [B] "r" ((b))); \ | ||
167 | t; \ | ||
168 | }) | ||
144 | #elif 1 | 169 | #elif 1 |
145 | #define MUL(a,b) \ | 170 | #define MUL(a,b) \ |
146 | ({ int32_t _ta=(a), _tb=(b), _tc; \ | 171 | ({ int32_t _ta=(a), _tb=(b), _tc; \ |