diff options
author | Nils Wallménius <nils@rockbox.org> | 2012-10-01 22:36:57 +0200 |
---|---|---|
committer | Nils Wallménius <nils@rockbox.org> | 2012-10-01 22:36:57 +0200 |
commit | 8687b9899382b6008c66a89dbc01271437f7654d (patch) | |
tree | 87ef0138727221312cfdf5642bb7c0d3329eba30 /lib/rbcodec | |
parent | d7799aaf33d23ec4a795a2d4b769e60117d822f5 (diff) | |
download | rockbox-8687b9899382b6008c66a89dbc01271437f7654d.tar.gz rockbox-8687b9899382b6008c66a89dbc01271437f7654d.zip |
opus: speed up arm asm MULT16_32_Q15
Reorder operands to take advantage of the early termination of
multiplications. Saves 2.5MHz decoding a 64kbps opus test file
on c200 (pp).
Change-Id: I470266dc870ab183ece3b23426d41e2a64342a71
Diffstat (limited to 'lib/rbcodec')
-rw-r--r-- | lib/rbcodec/codecs/libopus/celt/fixed_generic.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/rbcodec/codecs/libopus/celt/fixed_generic.h b/lib/rbcodec/codecs/libopus/celt/fixed_generic.h index bc6820fa21..5682a6793d 100644 --- a/lib/rbcodec/codecs/libopus/celt/fixed_generic.h +++ b/lib/rbcodec/codecs/libopus/celt/fixed_generic.h | |||
@@ -58,7 +58,7 @@ static inline int32_t MULT16_32_Q15(int32_t a, int32_t b) | |||
58 | static inline int32_t MULT16_32_Q15(int32_t a, int32_t b) | 58 | static inline int32_t MULT16_32_Q15(int32_t a, int32_t b) |
59 | { | 59 | { |
60 | int32_t lo, hi; | 60 | int32_t lo, hi; |
61 | asm volatile("smull %[lo], %[hi], %[a], %[b] \n\t" | 61 | asm volatile("smull %[lo], %[hi], %[b], %[a] \n\t" |
62 | "mov %[lo], %[lo], lsr #15 \n\t" | 62 | "mov %[lo], %[lo], lsr #15 \n\t" |
63 | "orr %[hi], %[lo], %[hi], lsl #17 \n\t" | 63 | "orr %[hi], %[lo], %[hi], lsl #17 \n\t" |
64 | : [lo] "=&r" (lo), [hi] "=&r" (hi) | 64 | : [lo] "=&r" (lo), [hi] "=&r" (hi) |