Mercurial > libavcodec.hg
changeset 3705:b3149af07681 libavcodec
armv5 optimizations
patch by Siarhei Siamashka siarhei.siamashka at gmail com
author | diego |
---|---|
date | Sun, 10 Sep 2006 22:29:02 +0000 |
parents | 0ff52e136358 |
children | fb73a0142544 |
files | mpegaudiodec.c |
diffstat | 1 files changed, 16 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mpegaudiodec.c Sun Sep 10 21:51:08 2006 +0000 +++ b/mpegaudiodec.c Sun Sep 10 22:29:02 2006 +0000 @@ -27,6 +27,11 @@ #include "bitstream.h" #include "dsputil.h" +/* Assume that all Intel XScale processors support armv5 edsp instructions */ +#if defined(ARCH_ARMV4L) && defined (HAVE_IWMMXT) +#define ARCH_ARM5E +#endif + /* * TODO: * - in low precision mode, use more 16 bit multiplies in synth filter @@ -791,6 +796,17 @@ /* signed 16x16 -> 32 multiply */ # define MULS(ra, rb) \ ({ int __rt; asm ("mullhw %0, %1, %2" : "=r" (__rt) : "r" (ra), "r" (rb)); __rt; }) + +# elif defined(ARCH_ARM5E) + + /* signed 16x16 -> 32 multiply add accumulate */ +# define MACS(rt, ra, rb) \ + asm ("smlabb %0, %2, %3, %0" : "=r" (rt) : "0" (rt), "r" (ra), "r" (rb)); + + /* signed 16x16 -> 32 multiply */ +# define MULS(ra, rb) \ + ({ int __rt; asm ("smulbb %0, %1, %2" : "=r" (__rt) : "r" (ra), "r" (rb)); __rt; }) + # else /* signed 16x16 -> 32 multiply add accumulate */ # define MACS(rt, ra, rb) rt += (ra) * (rb)