diff options
author | Roland Scheidegger <rscheidegger_lists@hispeed.ch> | 2012-06-15 12:55:28 +0300 |
---|---|---|
committer | Roland Scheidegger <rscheidegger_lists@hispeed.ch> | 2012-06-15 12:55:28 +0300 |
commit | a883646cf3d01e2ce7b39932ffc775ce795a0538 (patch) | |
tree | e320f3920f1614457967f5842656b4afa5328c98 /src | |
parent | faf5bee06eaa458b62c7e09e34e74da68c34b80f (diff) | |
download | xine-lib-a883646cf3d01e2ce7b39932ffc775ce795a0538.tar.gz xine-lib-a883646cf3d01e2ce7b39932ffc775ce795a0538.tar.bz2 |
Fixed greedy2frame_template_sse2.c when only 4 registers are available
Diffstat (limited to 'src')
-rw-r--r-- | src/post/deinterlace/plugins/greedy2frame_template_sse2.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/post/deinterlace/plugins/greedy2frame_template_sse2.c b/src/post/deinterlace/plugins/greedy2frame_template_sse2.c index 5bc76d5dc..379a78440 100644 --- a/src/post/deinterlace/plugins/greedy2frame_template_sse2.c +++ b/src/post/deinterlace/plugins/greedy2frame_template_sse2.c @@ -171,10 +171,10 @@ static void DeinterlaceGreedy2Frame_SSE2(uint8_t *output, int outstride, * 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 @@ static void DeinterlaceGreedy2Frame_SSE2(uint8_t *output, int outstride, "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 @@ static void DeinterlaceGreedy2Frame_SSE2(uint8_t *output, int outstride, "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 */ |