From 7c13c8dc57068a56df16f10567adf3d38f91accf Mon Sep 17 00:00:00 2001 From: nls Date: Fri, 26 Nov 2010 10:45:33 +0000 Subject: [PATCH] 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 --- apps/codecs/libtremor/asm_mcf5249.h | 5 ++--- 1 file 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) { asm volatile ("mac.l %[x], %[y], %%acc0;" /* multiply */ "mulu.l %[y], %[x];" /* get lower half, avoid emac stall */ "movclr.l %%acc0, %[r];" /* get higher half */ - "asl.l #8, %[r];" /* hi<<16, plus one free */ - "asl.l #8, %[r];" + "swap %[r];" /* hi<<16, plus one free */ "lsr.l #8, %[x];" /* (unsigned)lo >> 15 */ "lsr.l #7, %[x];" - "or.l %[x], %[r];" /* logical-or results */ + "move.w %[x], %[r];" /* logical-or results */ : [r] "=&d" (r), [x] "+d" (x) : [y] "d" (y) : "cc"); -- 2.11.4.GIT