diff -r 38b7a12cc141 src/post/deinterlace/plugins/greedy2frame_template_sse2.c --- a/src/post/deinterlace/plugins/greedy2frame_template_sse2.c Mon Jun 11 12:59:44 2012 +0300 +++ b/src/post/deinterlace/plugins/greedy2frame_template_sse2.c Wed Jun 13 01:07:05 2012 +0200 @@ -171,10 +171,10 @@ * See above for a description of the algorithm. * weave if (weave(M) AND (weave(T) OR weave(B))) */ - "movdqa (%3), %%xmm1 \n\t" /* xmm1 = T1 */ - "movdqa (%4), %%xmm0 \n\t" /* xmm0 = T0 */ - "movdqa (%q5,%3), %%xmm3 \n\t" /* xmm3 = B1 */ - "movdqa (%q5,%4), %%xmm2 \n\t" /* xmm2 = B0 */ + "movdqa (%2), %%xmm1 \n\t" /* xmm1 = T1 */ + "movdqa (%3), %%xmm0 \n\t" /* xmm0 = T0 */ + "movdqa (%q4,%2), %%xmm3 \n\t" /* xmm3 = B1 */ + "movdqa (%q4,%3), %%xmm2 \n\t" /* xmm2 = B0 */ /* calculate |T1-T0| keep T1 put result in xmm5 */ "movdqa %%xmm1, %%xmm5 \n\t" @@ -182,20 +182,19 @@ "psubusb %%xmm1, %%xmm0 \n\t" "por %%xmm0, %%xmm5 \n\t" - "movdqa (%0), %%xmm0 \n\t" /* xmm0 = M1 */ /* T1 is data for line to copy */ - "movntdq %%xmm1, %2 \n\t" + "movntdq %%xmm1, %1 \n\t" /* if |T1-T0| > Threshold we want 0 else dword minus one */ "psrlw $1, %%xmm5 \n\t" "pand %%xmm6, %%xmm5 \n\t" - "pcmpgtb %1, %%xmm5 \n\t" + "pcmpgtb %0, %%xmm5 \n\t" "pcmpeqd %%xmm7, %%xmm5 \n\t" - "prefetcht0 64(%q5,%3) \n\t" - "prefetcht0 64(%q5,%4) \n\t" + "prefetcht0 64(%q4,%2) \n\t" + "prefetcht0 64(%q4,%3) \n\t" : - : "r" (M1), "m" (GreedyTwoFrameThreshold128), + : "m" (GreedyTwoFrameThreshold128), "m" (*Destc), "r" (T1), "r" (T0), "r" (Pitch) ); asm volatile ( @@ -205,6 +204,7 @@ "psubusb %%xmm3, %%xmm2 \n\t" "por %%xmm2, %%xmm4 \n\t" + "movdqa (%0), %%xmm0 \n\t" /* xmm0 = M1 */ "movdqa (%1), %%xmm2 \n\t" /* xmm2 = M0 */ /* if |B1-B0| > Threshold we want 0 else dword minus one */