[FFmpeg-cvslog] r19728 - in trunk/libavcodec: dsputil.c dsputil.h twinvq.c x86/dsputil_mmx.c

Reimar Döffinger Reimar.Doeffinger
Thu Aug 27 17:06:26 CEST 2009


On Thu, Aug 27, 2009 at 04:49:37PM +0200, vitor wrote:
> +    x86_reg i = (len-16)*4;
> +    __asm__ volatile(
> +        "movss  %3, %%xmm4 \n"
> +        "movss  %4, %%xmm5 \n"
> +        "shufps $0, %%xmm4, %%xmm4 \n"
> +        "shufps $0, %%xmm5, %%xmm5 \n"
> +        "1: \n\t"
> +        "movaps    (%2,%0), %%xmm0 \n\t" // 3/1 on intel
> +        "movaps  16(%2,%0), %%xmm1 \n\t"
> +        "movaps  32(%2,%0), %%xmm2 \n\t"
> +        "movaps  48(%2,%0), %%xmm3 \n\t"
> +        "maxps      %%xmm4, %%xmm0 \n\t"
> +        "maxps      %%xmm4, %%xmm1 \n\t"
> +        "maxps      %%xmm4, %%xmm2 \n\t"
> +        "maxps      %%xmm4, %%xmm3 \n\t"
> +        "minps      %%xmm5, %%xmm0 \n\t"
> +        "minps      %%xmm5, %%xmm1 \n\t"
> +        "minps      %%xmm5, %%xmm2 \n\t"
> +        "minps      %%xmm5, %%xmm3 \n\t"
> +        "movaps  %%xmm0,   (%1,%0) \n\t"
> +        "movaps  %%xmm1, 16(%1,%0) \n\t"
> +        "movaps  %%xmm2, 32(%1,%0) \n\t"
> +        "movaps  %%xmm3, 48(%1,%0) \n\t"
> +        "sub  $64, %0 \n\t"
> +        "jge 1b \n\t"
> +        :"+r"(i)
> +        :"r"(dst), "r"(src), "m"(min), "m"(max)

"+&r"(i), you are modifying i before the last use of the others.



More information about the ffmpeg-cvslog mailing list