From 3f3ef3d48b62dc4b065be2f182ad635b4c083ca4 Mon Sep 17 00:00:00 2001 From: michael Date: Thu, 2 Jun 2005 20:54:03 +0000 Subject: one bugfix and a few gcc4 bug workaorunds by (Gianluigi Tiesi: mplayer, netfarm it) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15618 b3059339-0415-0410-9bf9-f77b7e298cf2 --- postproc/swscale_template.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'postproc') diff --git a/postproc/swscale_template.c b/postproc/swscale_template.c index ee4be2127c..99f756e8b8 100644 --- a/postproc/swscale_template.c +++ b/postproc/swscale_template.c @@ -2129,6 +2129,7 @@ static inline void RENAME(hScale)(int16_t *dst, int dstW, uint8_t *src, int srcW } else { + uint8_t *offset = src+filterSize; long counter= -2*dstW; // filter-= counter*filterSize/2; filterPos-= counter/2; @@ -2171,7 +2172,7 @@ static inline void RENAME(hScale)(int16_t *dst, int dstW, uint8_t *src, int srcW " jnc 1b \n\t" : "+r" (counter), "+r" (filter) - : "m" (filterPos), "m" (dst), "m"(src+filterSize), + : "m" (filterPos), "m" (dst), "m"(offset), "m" (src), "r" ((long)filterSize*2) : "%"REG_b, "%"REG_a, "%"REG_c ); @@ -2313,6 +2314,8 @@ FUNNY_Y_CODE else { #endif + int xInc_shr16 = xInc >> 16; + int xInc_mask = xInc & 0xffff; //NO MMX just normal asm ... asm volatile( "xor %%"REG_a", %%"REG_a" \n\t" // i @@ -2350,7 +2353,7 @@ FUNNY_Y_CODE " jb 1b \n\t" - :: "r" (src), "m" (dst), "m" (dstWidth), "m" (xInc>>16), "m" (xInc&0xFFFF) + :: "r" (src), "m" (dst), "m" (dstWidth), "m" (xInc_shr16), "m" (xInc_mask) : "%"REG_a, "%"REG_b, "%ecx", "%"REG_D, "%esi" ); #ifdef HAVE_MMX2 @@ -2509,6 +2512,8 @@ FUNNY_UV_CODE else { #endif + long xInc_shr16 = (long) (xInc >> 16); + int xInc_mask = xInc & 0xffff; asm volatile( "xor %%"REG_a", %%"REG_a" \n\t" // i "xor %%"REG_b", %%"REG_b" \n\t" // xx @@ -2542,7 +2547,7 @@ FUNNY_UV_CODE "cmp %2, %%"REG_a" \n\t" " jb 1b \n\t" - :: "m" (src1), "m" (dst), "m" ((long)dstWidth), "m" ((long)(xInc>>16)), "m" ((xInc&0xFFFF)), + :: "m" (src1), "m" (dst), "m" ((long)dstWidth), "m" (xInc_shr16), "m" (xInc_mask), "r" (src2) : "%"REG_a, "%"REG_b, "%ecx", "%"REG_D, "%esi" ); -- cgit v1.2.3