To get Xine-Lib-1.2.2 to build, I had to use a file from the Mercurial repository on SF.

I attach a patch.

It is possible that more advanced processors don't need this. The comment on the commit said that it was to fix a problem when only 4 registers were available.

--
James Tyrer

Linux (mostly) From Scratch

diff -Naur 
xine-lib-1.2.2.old/src/post/deinterlace/plugins/greedy2frame_template_sse2.c 
xine-lib-1.2.2/src/post/deinterlace/plugins/greedy2frame_template_sse2.c
--- 
xine-lib-1.2.2.old/src/post/deinterlace/plugins/greedy2frame_template_sse2.c    
    2012-05-26 13:49:59.000000000 -0700
+++ xine-lib-1.2.2/src/post/deinterlace/plugins/greedy2frame_template_sse2.c    
2012-06-30 23:59:00.000000000 -0700
@@ -84,11 +84,12 @@
 **   B0    |         |    B1   |         |
 */
 
-
+#if defined(ARCH_X86) || defined(ARCH_X86_64)
 static const sse_t Mask128 = { uq: { 0x7f7f7f7f7f7f7f7fll, 
0x7f7f7f7f7f7f7f7fll} };
 #define TP GREEDYTWOFRAMETHRESHOLD, GREEDYTWOFRAMETHRESHOLD2
 static const sse_t GreedyTwoFrameThreshold128 = { ub: {TP, TP, TP, TP, TP, TP, 
TP, TP} };
 #undef TP
+#endif
 
 static void DeinterlaceGreedy2Frame_SSE2(uint8_t *output, int outstride,
                                          deinterlace_frame_data_t *data,
@@ -170,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"
@@ -181,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 (
@@ -204,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 */
-- 
http://linuxfromscratch.org/mailman/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to