From edf7c2b26fde4719ed761f733afe977be31da674 Mon Sep 17 00:00:00 2001 From: Måns Rullgård Date: Sat, 27 Dec 2008 16:25:36 +0000 Subject: simple_idct: use MUL16 and MAC16 from mathops.h Originally committed as revision 16362 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/simple_idct.c | 53 ++++++++++++++++-------------------------------- 1 file changed, 17 insertions(+), 36 deletions(-) (limited to 'libavcodec/simple_idct.c') diff --git a/libavcodec/simple_idct.c b/libavcodec/simple_idct.c index 2f8edf83e0..2cf9e8de98 100644 --- a/libavcodec/simple_idct.c +++ b/libavcodec/simple_idct.c @@ -31,6 +31,7 @@ */ #include "avcodec.h" #include "dsputil.h" +#include "mathops.h" #include "simple_idct.h" #if 0 @@ -55,26 +56,6 @@ #define COL_SHIFT 20 // 6 #endif -#if defined(ARCH_PPC_405) - -/* signed 16x16 -> 32 multiply add accumulate */ -#define MAC16(rt, ra, rb) \ - __asm__ ("maclhw %0, %2, %3" : "=r" (rt) : "0" (rt), "r" (ra), "r" (rb)); - -/* signed 16x16 -> 32 multiply */ -#define MUL16(rt, ra, rb) \ - __asm__ ("mullhw %0, %1, %2" : "=r" (rt) : "r" (ra), "r" (rb)); - -#else - -/* signed 16x16 -> 32 multiply add accumulate */ -#define MAC16(rt, ra, rb) rt += (ra) * (rb) - -/* signed 16x16 -> 32 multiply */ -#define MUL16(rt, ra, rb) rt = (ra) * (rb) - -#endif - static inline void idctRowCondDC (DCTELEM * row) { int a0, a1, a2, a3, b0, b1, b2, b3; @@ -137,13 +118,13 @@ static inline void idctRowCondDC (DCTELEM * row) a2 -= W6 * row[2]; a3 -= W2 * row[2]; - MUL16(b0, W1, row[1]); + b0 = MUL16(W1, row[1]); MAC16(b0, W3, row[3]); - MUL16(b1, W3, row[1]); + b1 = MUL16(W3, row[1]); MAC16(b1, -W7, row[3]); - MUL16(b2, W5, row[1]); + b2 = MUL16(W5, row[1]); MAC16(b2, -W1, row[3]); - MUL16(b3, W7, row[1]); + b3 = MUL16(W7, row[1]); MAC16(b3, -W5, row[3]); #ifdef HAVE_FAST_64BIT @@ -197,10 +178,10 @@ static inline void idctSparseColPut (uint8_t *dest, int line_size, a2 += - W6*col[8*2]; a3 += - W2*col[8*2]; - MUL16(b0, W1, col[8*1]); - MUL16(b1, W3, col[8*1]); - MUL16(b2, W5, col[8*1]); - MUL16(b3, W7, col[8*1]); + b0 = MUL16(W1, col[8*1]); + b1 = MUL16(W3, col[8*1]); + b2 = MUL16(W5, col[8*1]); + b3 = MUL16(W7, col[8*1]); MAC16(b0, + W3, col[8*3]); MAC16(b1, - W7, col[8*3]); @@ -269,10 +250,10 @@ static inline void idctSparseColAdd (uint8_t *dest, int line_size, a2 += - W6*col[8*2]; a3 += - W2*col[8*2]; - MUL16(b0, W1, col[8*1]); - MUL16(b1, W3, col[8*1]); - MUL16(b2, W5, col[8*1]); - MUL16(b3, W7, col[8*1]); + b0 = MUL16(W1, col[8*1]); + b1 = MUL16(W3, col[8*1]); + b2 = MUL16(W5, col[8*1]); + b3 = MUL16(W7, col[8*1]); MAC16(b0, + W3, col[8*3]); MAC16(b1, - W7, col[8*3]); @@ -339,10 +320,10 @@ static inline void idctSparseCol (DCTELEM * col) a2 += - W6*col[8*2]; a3 += - W2*col[8*2]; - MUL16(b0, W1, col[8*1]); - MUL16(b1, W3, col[8*1]); - MUL16(b2, W5, col[8*1]); - MUL16(b3, W7, col[8*1]); + b0 = MUL16(W1, col[8*1]); + b1 = MUL16(W3, col[8*1]); + b2 = MUL16(W5, col[8*1]); + b3 = MUL16(W7, col[8*1]); MAC16(b0, + W3, col[8*3]); MAC16(b1, - W7, col[8*3]); -- cgit v1.2.3