From: Michael Niedermayer Date: Tue, 22 Aug 2006 12:07:02 +0000 (+0000) Subject: replace MULL with asm too, no significnat speedup but its probably better to not... X-Git-Tag: v0.5~12062 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f617adedc8766ad7bccb4b996a943ef7fcb7796f;p=platform%2Fupstream%2Flibav.git replace MULL with asm too, no significnat speedup but its probably better to not take any chances, some versions of gcc will almost certainly mess it up too if they can Originally committed as revision 6049 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavcodec/mpegaudiodec.c b/libavcodec/mpegaudiodec.c index 5ad8c69..55276e3 100644 --- a/libavcodec/mpegaudiodec.c +++ b/libavcodec/mpegaudiodec.c @@ -44,7 +44,13 @@ #define FRAC_ONE (1 << FRAC_BITS) #ifdef ARCH_X86 -# define MULL(a,b) (((int64_t)(a) * (int64_t)(b)) >> FRAC_BITS) +# define MULL(ra, rb) \ + ({ int rt, dummy; asm (\ + "imull %3 \n\t"\ + "shrdl %4, %%edx, %%eax \n\t"\ + : "=a"(rt), "=d"(dummy)\ + : "a" (ra), "rm" (rb), "i"(FRAC_BITS));\ + rt; }) # define MUL64(ra, rb) \ ({ int64_t rt; asm ("imull %2\n\t" : "=A"(rt) : "a" (ra), "g" (rb)); rt; }) # define MULH(ra, rb) \