# HG changeset patch
# User Roland Scheidegger <rscheidegger_lists@hispeed.ch>
# Date 1339754128 -10800
# Node ID 1fa1bacc5f2f5222c9d75348b713da64d4686a1c
# Parent  7091bfdc608867993228d380e4146c7f89b39084
Fixed greedy2frame_template_sse2.c when only 4 registers are available

diff --git a/src/post/deinterlace/plugins/greedy2frame_template_sse2.c b/src/post/deinterlace/plugins/greedy2frame_template_sse2.c
--- a/src/post/deinterlace/plugins/greedy2frame_template_sse2.c
+++ b/src/post/deinterlace/plugins/greedy2frame_template_sse2.c
@@ -170,10 +170,10 @@ static void DeinterlaceGreedy2Frame_SSE2
         * 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"
@@ -181,20 +181,19 @@ static void DeinterlaceGreedy2Frame_SSE2
             "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 (
@@ -204,6 +203,7 @@ static void DeinterlaceGreedy2Frame_SSE2
             "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 */
