0
0
mirror of https://github.com/mpv-player/mpv.git synced 2024-09-20 12:02:23 +02:00

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
This commit is contained in:
michael 2005-06-02 20:54:03 +00:00
parent c9f8f44dbe
commit 3f3ef3d48b
3 changed files with 14 additions and 5 deletions

View File

@ -770,6 +770,8 @@ imdct_do_512_sse(sample_t data[],sample_t delay[], sample_t bias)
int m;
int two_m;
int two_m_plus_one;
int two_m_plus_one_shl3;
complex_t *buf_offset;
/* sample_t tmp_a_i;
sample_t tmp_a_r;
@ -938,6 +940,8 @@ imdct_do_512_sse(sample_t data[],sample_t delay[], sample_t bias)
for (m=3; m < 7; m++) {
two_m = (1 << m);
two_m_plus_one = two_m<<1;
two_m_plus_one_shl3 = (two_m_plus_one<<3);
buf_offset = buf+128;
asm volatile(
"movl %0, %%esi \n\t"
".balign 16 \n\t"
@ -963,7 +967,7 @@ imdct_do_512_sse(sample_t data[],sample_t delay[], sample_t bias)
"addl %2, %%esi \n\t"
"cmpl %1, %%esi \n\t"
" jb 1b \n\t"
:: "g" (buf), "m" (buf+128), "m" (two_m_plus_one<<3), "r" (two_m<<3),
:: "g" (buf), "m" (buf_offset), "m" (two_m_plus_one_shl3), "r" (two_m<<3),
"r" (sseW[m])
: "%esi", "%edi", "%edx"
);

2
mmx.h
View File

@ -353,7 +353,7 @@ mmx_ok(void)
#define mmx_m2r(op, mem, reg) \
__asm__ __volatile__ (#op " %0, %%" #reg \
: /* nothing */ \
: "X" (mem))
: "m" (mem))
#define mmx_r2m(op, reg, mem) \
__asm__ __volatile__ (#op " %%" #reg ", %0" \

View File

@ -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"
);