ARM: change MULL() macro to inline function

Originally committed as revision 15780 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Måns Rullgård 2008-11-06 01:33:20 +00:00
parent 96dea17a1d
commit 8f4d0d48b9
1 changed files with 11 additions and 8 deletions

View File

@ -26,14 +26,17 @@
#include "libavutil/common.h" #include "libavutil/common.h"
#ifdef FRAC_BITS #ifdef FRAC_BITS
# define MULL(a, b) \ # define MULL MULL
({ int lo, hi;\ static inline av_const int MULL(int a, int b)
__asm__("smull %0, %1, %2, %3 \n\t"\ {
"mov %0, %0, lsr %4\n\t"\ int lo, hi;
"add %1, %0, %1, lsl %5\n\t"\ __asm__("smull %0, %1, %2, %3 \n\t"
: "=&r"(lo), "=&r"(hi)\ "mov %0, %0, lsr %4 \n\t"
: "r"(b), "r"(a), "i"(FRAC_BITS), "i"(32-FRAC_BITS));\ "add %1, %0, %1, lsl %5 \n\t"
hi; }) : "=&r"(lo), "=&r"(hi)
: "r"(b), "r"(a), "i"(FRAC_BITS), "i"(32-FRAC_BITS));
return hi;
}
#endif #endif
#ifdef HAVE_ARMV6 #ifdef HAVE_ARMV6