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