summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2010-11-26 10:45:33 +0000
committerNils Wallménius <nils@rockbox.org>2010-11-26 10:45:33 +0000
commitb397fe5ae373e3b62fee9150ab786c344c2084cd (patch)
treeedb4b72f91a5d2fbbb5bd6b523e07f2debdeb344
parentc7e512248388a8196c3b8e5602536f9c85eeb043 (diff)
downloadrockbox-b397fe5ae373e3b62fee9150ab786c344c2084cd.tar.gz
rockbox-b397fe5ae373e3b62fee9150ab786c344c2084cd.zip
libtremor: small tweak to coldfire inline asm function MULT31_SHIFT15, saving one instruction, *tiny* speedup, output unchanged
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28666 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/codecs/libtremor/asm_mcf5249.h5
1 files changed, 2 insertions, 3 deletions
diff --git a/apps/codecs/libtremor/asm_mcf5249.h b/apps/codecs/libtremor/asm_mcf5249.h
index c13255b933..621beadde8 100644
--- a/apps/codecs/libtremor/asm_mcf5249.h
+++ b/apps/codecs/libtremor/asm_mcf5249.h
@@ -56,11 +56,10 @@ static inline ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) {
56 asm volatile ("mac.l %[x], %[y], %%acc0;" /* multiply */ 56 asm volatile ("mac.l %[x], %[y], %%acc0;" /* multiply */
57 "mulu.l %[y], %[x];" /* get lower half, avoid emac stall */ 57 "mulu.l %[y], %[x];" /* get lower half, avoid emac stall */
58 "movclr.l %%acc0, %[r];" /* get higher half */ 58 "movclr.l %%acc0, %[r];" /* get higher half */
59 "asl.l #8, %[r];" /* hi<<16, plus one free */ 59 "swap %[r];" /* hi<<16, plus one free */
60 "asl.l #8, %[r];"
61 "lsr.l #8, %[x];" /* (unsigned)lo >> 15 */ 60 "lsr.l #8, %[x];" /* (unsigned)lo >> 15 */
62 "lsr.l #7, %[x];" 61 "lsr.l #7, %[x];"
63 "or.l %[x], %[r];" /* logical-or results */ 62 "move.w %[x], %[r];" /* logical-or results */
64 : [r] "=&d" (r), [x] "+d" (x) 63 : [r] "=&d" (r), [x] "+d" (x)
65 : [y] "d" (y) 64 : [y] "d" (y)
66 : "cc"); 65 : "cc");