Magellan Linux

Annotation of /trunk/xine-lib/patches/xine-lib-1.1.1-textrels.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 153 - (hide annotations) (download)
Tue May 8 20:52:56 2007 UTC (17 years, 1 month ago) by niro
File size: 48911 byte(s)
-import

1 niro 153 Index: xine-lib-1.1.1/src/libw32dll/wine/module.c
2     ===================================================================
3     --- xine-lib-1.1.1.orig/src/libw32dll/wine/module.c
4     +++ xine-lib-1.1.1/src/libw32dll/wine/module.c
5     @@ -38,8 +38,8 @@
6    
7     #ifdef EMU_QTX_API
8     #include "wrapper.h"
9     -static int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags);
10     -static int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags);
11     +int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags);
12     +int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags);
13     #endif
14    
15     //#undef TRACE
16     @@ -533,8 +533,6 @@ HMODULE WINAPI LoadLibraryExA(LPCSTR lib
17     printf ("wine/module: QuickTime.qts patched!!! old entry=%p\n",ptr[0]);
18    
19     #ifdef EMU_QTX_API
20     - report_entry = report_func;
21     - report_ret = report_func_ret;
22     wrapper_target=ptr[0];
23     ptr[0]=wrapper;
24     #endif
25     @@ -697,7 +695,7 @@ static int dump_component(char* name,int
26     static u_int32_t ret_array[4096];
27     static int ret_i=0;
28    
29     -static int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags)
30     +int report_func(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags)
31     {
32     #ifdef DEBUG_QTX_API
33     int i;
34     @@ -896,7 +894,7 @@ static int report_func(void *stack_base,
35     return 0;
36     }
37    
38     -static int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags)
39     +int report_func_ret(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags)
40     {
41     #ifdef DEBUG_QTX_API
42     int i;
43     @@ -1011,8 +1009,6 @@ FARPROC MODULE_GetProcAddress(
44     // || !strcmp(function,"_CallComponent")
45     ){
46     fprintf(stderr,"theQuickTimeDispatcher caught -> %p\n",retproc);
47     - report_entry = report_func;
48     - report_ret = report_func_ret;
49     wrapper_target=(void *)retproc;
50     retproc=(void *)wrapper;
51     }
52     Index: xine-lib-1.1.1/src/libw32dll/wine/stubs.s
53     ===================================================================
54     --- xine-lib-1.1.1.orig/src/libw32dll/wine/stubs.s
55     +++ xine-lib-1.1.1/src/libw32dll/wine/stubs.s
56     @@ -33,3 +33,6 @@ exp_EH_prolog:
57     leal 12(%esp), %ebp
58     pushl %eax
59     ret
60     +
61     +.section .note.GNU-stack,"",@progbits
62     +
63     Index: xine-lib-1.1.1/src/libw32dll/wine/wrapper.S
64     ===================================================================
65     --- xine-lib-1.1.1.orig/src/libw32dll/wine/wrapper.S
66     +++ xine-lib-1.1.1/src/libw32dll/wine/wrapper.S
67     @@ -1,17 +1,19 @@
68     .section .data
69     -.globl caller_return
70     caller_return:
71     .long 0
72     -.globl report_entry
73     -report_entry:
74     - .long null_call
75     -.globl report_ret
76     -report_ret:
77     - .long null_call
78     .global wrapper_target
79     wrapper_target:
80     .long null_call
81    
82     +#undef __i686 /* gcc define gets in our way */
83     + .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
84     +.globl __i686.get_pc_thunk.bx
85     + .hidden __i686.get_pc_thunk.bx
86     + .type __i686.get_pc_thunk.bx,@function
87     +__i686.get_pc_thunk.bx:
88     + movl (%esp), %ebx
89     + ret
90     +
91     .section .text
92     .globl null_call
93     .type null_call, @function
94     @@ -22,46 +24,60 @@ null_call:
95     .type wrapper, @function
96     .balign 16,0x90
97     wrapper:
98     + pushl $0
99     pusha # store registers (EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI)
100     pushf # store flags
101    
102     push %ebp # set up a stack frame
103     movl %esp, %ebp
104    
105     + call __i686.get_pc_thunk.bx
106     + addl $_GLOBAL_OFFSET_TABLE_, %ebx
107     +
108     leal 4(%ebp), %eax # push flags addr
109     push %eax
110     leal 8(%ebp), %eax # push registers addr
111     push %eax
112    
113     - leal 40(%ebp), %edx
114     + leal 44(%ebp), %edx
115     movl (%ebp), %eax
116     subl %edx, %eax
117     push %eax
118     push %edx
119    
120     - call *report_entry # report entry
121     + call report_func@PLT # report entry
122    
123     test %eax, %eax
124     jnz .Ldone
125    
126     + movl 44(%ebp), %eax # switch return addresses
127     + movl %eax, caller_return@GOTOFF(%ebx)
128     + leal .Lwrapper_return@GOTOFF(%ebx), %eax
129     + movl %eax, 40(%ebp)
130     +
131     + movl wrapper_target@GOTOFF(%ebx), %eax
132     + mov %eax, 40(%ebp) # wrapper_target should return at .Lwrapper_return
133     +
134     leave # restore %esp, %ebp
135     popf # restore flags
136     popa # restore registers
137     -
138     - popl caller_return # switch return addresses
139     - pushl $.Lwrapper_return
140     -
141     - jmp *wrapper_target # wrapper_target should return at .Lwrapper_return
142     +
143     + ret # fake 'return' to wrapper_target actually
144    
145     .balign 16, 0x90
146     .Lwrapper_return:
147     - pushl caller_return # restore the original return address
148     + pushl $0
149     pusha # more for reference sake here
150     pushf
151    
152     push %ebp # set up a stack frame
153     movl %esp, %ebp
154    
155     + call __i686.get_pc_thunk.bx
156     + addl $_GLOBAL_OFFSET_TABLE_, %ebx
157     + movl caller_return@GOTOFF(%ebx), %eax
158     + movl %eax, 40(%ebp) # restore the original return address
159     +
160     leal 4(%ebp), %eax # push flags addr
161     push %eax
162     leal 8(%ebp), %eax # push registers addr
163     @@ -73,11 +89,13 @@ wrapper:
164     push %eax
165     push %edx
166    
167     - call *report_ret # report the return information (same args)
168     + call report_func_ret@PLT# report the return information (same args)
169     .Ldone:
170    
171     leave
172     popf
173     popa
174     ret
175     -
176     +
177     +.section .note.GNU-stack,"",@progbits
178     +
179     Index: xine-lib-1.1.1/src/libw32dll/wine/wrapper.h
180     ===================================================================
181     --- xine-lib-1.1.1.orig/src/libw32dll/wine/wrapper.h
182     +++ xine-lib-1.1.1/src/libw32dll/wine/wrapper.h
183     @@ -11,10 +11,6 @@ typedef struct {
184     u_int32_t edi, esi, ebp, esp, ebx, edx, ecx, eax;
185     } reg386_t;
186    
187     -typedef int (*wrapper_func_t)(void *stack_base, int stack_size, reg386_t *reg, u_int32_t *flags);
188     -
189     -extern wrapper_func_t report_entry, report_ret;
190     -
191     extern void (*wrapper_target)(void);
192    
193     extern int wrapper(void);
194     Index: xine-lib-1.1.1/src/post/deinterlace/plugins/greedy2frame_template.c
195     ===================================================================
196     --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/greedy2frame_template.c
197     +++ xine-lib-1.1.1/src/post/deinterlace/plugins/greedy2frame_template.c
198     @@ -183,7 +183,7 @@ static void DeinterlaceGreedy2Frame_MMX(
199     * See above for a description of the algorithm.
200     */
201     ".align 8 \n\t"
202     - "movq "MANGLE(Mask)", %%mm6 \n\t"
203     + "movq %4, %%mm6 \n\t"
204    
205     "movq %0, %%mm1 \n\t" // T1
206     "movq %1, %%mm0 \n\t" // M1
207     @@ -191,7 +191,7 @@ static void DeinterlaceGreedy2Frame_MMX(
208     "movq %3, %%mm2 \n\t" // M0
209     : /* no output */
210     : "m" (*T1), "m" (*M1),
211     - "m" (*B1), "m" (*M0) );
212     + "m" (*B1), "m" (*M0), "m" (Mask) );
213    
214    
215     asm volatile(
216     @@ -248,10 +248,10 @@ static void DeinterlaceGreedy2Frame_MMX(
217     #endif
218    
219     /* if |M1-M0| > Threshold we want dword worth of twos */
220     - "pcmpgtb "MANGLE(qwGreedyTwoFrameThreshold)", %%mm4 \n\t"
221     - "pand "MANGLE(Mask)", %%mm4 \n\t" /* get rid of sign bit */
222     - "pcmpgtd "MANGLE(DwordOne)", %%mm4 \n\t" /* do we want to bob */
223     - "pandn "MANGLE(DwordTwo)", %%mm4 \n\t"
224     + "pcmpgtb %3, %%mm4 \n\t"
225     + "pand %4, %%mm4 \n\t" /* get rid of sign bit */
226     + "pcmpgtd %5, %%mm4 \n\t" /* do we want to bob */
227     + "pandn %6, %%mm4 \n\t"
228    
229     "movq %1, %%mm2 \n\t" /* mm2 = T0 */
230    
231     @@ -264,11 +264,11 @@ static void DeinterlaceGreedy2Frame_MMX(
232     "pand %%mm6, %%mm5 \n\t"
233    
234     /* if |T1-T0| > Threshold we want dword worth of ones */
235     - "pcmpgtb "MANGLE(qwGreedyTwoFrameThreshold)", %%mm5 \n\t"
236     + "pcmpgtb %3, %%mm5 \n\t"
237     "pand %%mm6, %%mm5 \n\t" /* get rid of sign bit */
238    
239     - "pcmpgtd "MANGLE(DwordOne)", %%mm5 \n\t"
240     - "pandn "MANGLE(DwordOne)", %%mm5 \n\t"
241     + "pcmpgtd %5, %%mm5 \n\t"
242     + "pandn %5, %%mm5 \n\t"
243     "paddd %%mm5, %%mm4 \n\t"
244    
245     "movq %2, %%mm2 \n\t" /* B0 */
246     @@ -282,13 +282,13 @@ static void DeinterlaceGreedy2Frame_MMX(
247     "pand %%mm6, %%mm5 \n\t"
248    
249     /* if |B1-B0| > Threshold we want dword worth of ones */
250     - "pcmpgtb "MANGLE(qwGreedyTwoFrameThreshold)", %%mm5 \n\t"
251     + "pcmpgtb %3, %%mm5 \n\t"
252     "pand %%mm6, %%mm5 \n\t" /* get rid of any sign bit */
253     - "pcmpgtd "MANGLE(DwordOne)", %%mm5 \n\t"
254     - "pandn "MANGLE(DwordOne)", %%mm5 \n\t"
255     + "pcmpgtd %5, %%mm5 \n\t"
256     + "pandn %5, %%mm5 \n\t"
257     "paddd %%mm5, %%mm4 \n\t"
258    
259     - "pcmpgtd "MANGLE(DwordTwo)", %%mm4 \n\t"
260     + "pcmpgtd %6, %%mm4 \n\t"
261    
262     /* debugging feature
263     * output the value of mm4 at this point which is pink where we will weave
264     @@ -314,7 +314,7 @@ static void DeinterlaceGreedy2Frame_MMX(
265     #endif
266    
267     : "=m" (*Dest2)
268     - : "m" (*T0), "m" (*B0) );
269     + : "m" (*T0), "m" (*B0), "m" (qwGreedyTwoFrameThreshold), "m" (Mask), "m" (DwordOne), "m" (DwordTwo) );
270    
271     /* Advance to the next set of pixels. */
272     T1 += 8;
273     Index: xine-lib-1.1.1/src/post/deinterlace/plugins/greedyh.asm
274     ===================================================================
275     --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/greedyh.asm
276     +++ xine-lib-1.1.1/src/post/deinterlace/plugins/greedyh.asm
277     @@ -43,7 +43,6 @@ static void FUNCT_NAME(uint8_t *output,
278    
279     int Line;
280     long LoopCtr;
281     - long oldbx;
282     unsigned int Pitch = stride*2;
283     int FieldHeight = height / 2;
284    
285     @@ -52,6 +51,7 @@ static void FUNCT_NAME(uint8_t *output,
286     unsigned char* L3; // ptr to Line3
287    
288     unsigned char* L2P; // ptr to prev Line2
289     + unsigned char* temp;
290     unsigned char* Dest = output;
291    
292     int64_t LastAvg=0; //interp value from left qword
293     @@ -121,25 +121,21 @@ static void FUNCT_NAME(uint8_t *output,
294     #define asmLastAvg "%0"
295     #define asmL1 "%1"
296     #define asmL3 "%2"
297     -#define asmL2P "%3"
298     +#define asmtemp "%3"
299     #define asmL2 "%4"
300     #define asmDest "%5"
301     #define asmLoopCtr "%6"
302     -#define asmoldbx "%7"
303     #endif
304    
305     // For ease of reading, the comments below assume that we're operating on an odd
306     // field (i.e., that InfoIsOdd is true). Assume the obvious for even lines..
307     + temp = L2P;
308     __asm__ __volatile__
309     (
310     - // save ebx (-fPIC)
311     - MOVX" %%"XBX", "asmoldbx"\n\t"
312     -
313     MOVX" "asmL1", %%"XAX"\n\t"
314     - LEAX" 8(%%"XAX"), %%"XBX"\n\t" // next qword needed by DJR
315     + LEAX" 8(%%"XAX"), %%"XDX"\n\t" // next qword needed by DJR
316     MOVX" "asmL3", %%"XCX"\n\t"
317     SUBX" %%"XAX", %%"XCX"\n\t" // carry L3 addr as an offset
318     - MOVX" "asmL2P", %%"XDX"\n\t"
319     MOVX" "asmL2", %%"XSI"\n\t"
320     MOVX" "asmDest", %%"XDI"\n\t" // DL1 if Odd or DL2 if Even
321    
322     @@ -148,11 +144,14 @@ static void FUNCT_NAME(uint8_t *output,
323    
324     "movq (%%"XSI"), %%mm0\n\t" // L2 - the newest weave pixel value
325     "movq (%%"XAX"), %%mm1\n\t" // L1 - the top pixel
326     + PUSHX" %%"XDX "\n\t"
327     + MOVX" "asmtemp", %%"XDX"\n\t"
328     "movq (%%"XDX"), %%mm2\n\t" // L2P - the prev weave pixel
329     + POPX" %%"XDX "\n\t"
330     "movq (%%"XAX", %%"XCX"), %%mm3\n\t" // L3, next odd row
331     "movq %%mm1, %%mm6\n\t" // L1 - get simple single pixel interp
332     // pavgb mm6, mm3 // use macro below
333     - V_PAVGB ("%%mm6", "%%mm3", "%%mm4", MANGLE(ShiftMask))
334     + V_PAVGB ("%%mm6", "%%mm3", "%%mm4", "%8")
335    
336     // DJR - Diagonal Jaggie Reduction
337     // In the event that we are going to use an average (Bob) pixel we do not want a jagged
338     @@ -166,24 +165,24 @@ static void FUNCT_NAME(uint8_t *output,
339     "psllq $16, %%mm7\n\t" // left justify 3 pixels
340     "por %%mm7, %%mm4\n\t" // and combine
341    
342     - "movq (%%"XBX"), %%mm5\n\t" // next horiz qword from L1
343     + "movq (%%"XDX"), %%mm5\n\t" // next horiz qword from L1
344     // pavgb mm5, qword ptr[ebx+ecx] // next horiz qword from L3, use macro below
345     - V_PAVGB ("%%mm5", "(%%"XBX",%%"XCX")", "%%mm7", MANGLE(ShiftMask))
346     + V_PAVGB ("%%mm5", "(%%"XDX",%%"XCX")", "%%mm7", "%8")
347     "psllq $48, %%mm5\n\t" // left just 1 pixel
348     "movq %%mm6, %%mm7\n\t" // another copy of simple bob pixel
349     "psrlq $16, %%mm7\n\t" // right just 3 pixels
350     "por %%mm7, %%mm5\n\t" // combine
351     // pavgb mm4, mm5 // avg of forward and prev by 1 pixel, use macro
352     - V_PAVGB ("%%mm4", "%%mm5", "%%mm5", MANGLE(ShiftMask)) // mm5 gets modified if MMX
353     + V_PAVGB ("%%mm4", "%%mm5", "%%mm5", "%8") // mm5 gets modified if MMX
354     // pavgb mm6, mm4 // avg of center and surround interp vals, use macro
355     - V_PAVGB ("%%mm6", "%%mm4", "%%mm7", MANGLE(ShiftMask))
356     + V_PAVGB ("%%mm6", "%%mm4", "%%mm7", "%8")
357    
358     // Don't do any more averaging than needed for mmx. It hurts performance and causes rounding errors.
359     #ifndef IS_MMX
360     // pavgb mm4, mm6 // 1/4 center, 3/4 adjacent
361     - V_PAVGB ("%%mm4", "%%mm6", "%%mm7", MANGLE(ShiftMask))
362     + V_PAVGB ("%%mm4", "%%mm6", "%%mm7", "%8")
363     // pavgb mm6, mm4 // 3/8 center, 5/8 adjacent
364     - V_PAVGB ("%%mm6", "%%mm4", "%%mm7", MANGLE(ShiftMask))
365     + V_PAVGB ("%%mm6", "%%mm4", "%%mm7", "%8")
366     #endif
367    
368     // get abs value of possible L2 comb
369     @@ -236,64 +235,71 @@ static void FUNCT_NAME(uint8_t *output,
370     // pminub mm5, mm3 // now = Min(L1,L3), use macro
371     V_PMINUB ("%%mm5", "%%mm3", "%%mm7")
372     // allow the value to be above the high or below the low by amt of MaxComb
373     - "psubusb "MANGLE(MaxComb)", %%mm5\n\t" // lower min by diff
374     - "paddusb "MANGLE(MaxComb)", %%mm2\n\t" // increase max by diff
375     + "psubusb %9, %%mm5\n\t" // lower min by diff
376     + "paddusb %9, %%mm2\n\t" // increase max by diff
377     // pmaxub mm4, mm5 // now = Max(best,Min(L1,L3) use macro
378     V_PMAXUB ("%%mm4", "%%mm5")
379     // pminub mm4, mm2 // now = Min( Max(best, Min(L1,L3), L2 )=L2 clipped
380     V_PMINUB ("%%mm4", "%%mm2", "%%mm7")
381    
382     // Blend weave pixel with bob pixel, depending on motion val in mm0
383     - "psubusb "MANGLE(MotionThreshold)", %%mm0\n\t"// test Threshold, clear chroma change >>>??
384     - "pmullw "MANGLE(MotionSense)", %%mm0\n\t" // mul by user factor, keep low 16 bits
385     - "movq "MANGLE(QW256)", %%mm7\n\t"
386     + "psubusb %10, %%mm0\n\t"// test Threshold, clear chroma change >>>??
387     + "pmullw %11, %%mm0\n\t" // mul by user factor, keep low 16 bits
388     + "movq %12, %%mm7\n\t"
389     #ifdef IS_SSE
390     "pminsw %%mm7, %%mm0\n\t" // max = 256
391     #else
392     - "paddusw "MANGLE(QW256B)", %%mm0\n\t" // add, may sat at fff..
393     - "psubusw "MANGLE(QW256B)", %%mm0\n\t" // now = Min(L1,256)
394     + "paddusw %13, %%mm0\n\t" // add, may sat at fff..
395     + "psubusw %13, %%mm0\n\t" // now = Min(L1,256)
396     #endif
397     "psubusw %%mm0, %%mm7\n\t" // so the 2 sum to 256, weighted avg
398     "movq %%mm4, %%mm2\n\t" // save weave chroma info before trashing
399     - "pand "MANGLE(YMask)", %%mm4\n\t" // keep only luma from calc'd value
400     + "pand %14, %%mm4\n\t" // keep only luma from calc'd value
401     "pmullw %%mm7, %%mm4\n\t" // use more weave for less motion
402     - "pand "MANGLE(YMask)", %%mm6\n\t" // keep only luma from calc'd value
403     + "pand %14, %%mm6\n\t" // keep only luma from calc'd value
404     "pmullw %%mm0, %%mm6\n\t" // use more bob for large motion
405     "paddusw %%mm6, %%mm4\n\t" // combine
406     "psrlw $8, %%mm4\n\t" // div by 256 to get weighted avg
407    
408     // chroma comes from weave pixel
409     - "pand "MANGLE(UVMask)", %%mm2\n\t" // keep chroma
410     + "pand %15, %%mm2\n\t" // keep chroma
411     "por %%mm4, %%mm2\n\t" // and combine
412    
413     V_MOVNTQ ("(%%"XDI")", "%%mm2") // move in our clipped best, use macro
414    
415     // bump ptrs and loop
416     LEAX" 8(%%"XAX"), %%"XAX"\n\t"
417     - LEAX" 8(%%"XBX"), %%"XBX"\n\t"
418     LEAX" 8(%%"XDX"), %%"XDX"\n\t"
419     + ADDX" $8, "asmtemp"\n\t"
420     LEAX" 8(%%"XDI"), %%"XDI"\n\t"
421     LEAX" 8(%%"XSI"), %%"XSI"\n\t"
422     DECX" "asmLoopCtr"\n\t"
423     "jg 1b\n\t" // loop if not to last line
424     // note P-III default assumes backward branches taken
425     "jl 1f\n\t" // done
426     - MOVX" %%"XAX", %%"XBX"\n\t" // sharpness lookahead 1 byte only, be wrong on 1
427     + MOVX" %%"XAX", %%"XDX"\n\t" // sharpness lookahead 1 byte only, be wrong on 1
428     "jmp 1b\n\t"
429    
430     "1:\n\t"
431     - MOVX" "asmoldbx", %%"XBX"\n\t"
432    
433     : /* no outputs */
434    
435     : "m"(LastAvg),
436     "m"(L1),
437     "m"(L3),
438     - "m"(L2P),
439     + "m"(temp),
440     "m"(L2),
441     "m"(Dest),
442     "m"(LoopCtr),
443     - "m"(oldbx)
444     + "m"(temp),
445     + "m"(ShiftMask),
446     + "m"(MaxComb),
447     + "m"(MotionThreshold),
448     + "m"(MotionSense),
449     + "m"(QW256),
450     + "m"(QW256B),
451     + "m"(YMask),
452     + "m"(UVMask)
453    
454     : XAX, XCX, XDX, XSI, XDI,
455     #ifdef ARCH_X86
456     Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoop0A.inc
457     ===================================================================
458     --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/SearchLoop0A.inc
459     +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoop0A.inc
460     @@ -7,9 +7,9 @@
461     // up by a little, and adjust later
462    
463     #ifdef IS_SSE2
464     - "paddusb "MANGLE(ONES)", %%xmm7\n\t" // bias toward no motion
465     + "paddusb "_ONES", %%xmm7\n\t" // bias toward no motion
466     #else
467     - "paddusb "MANGLE(ONES)", %%mm7\n\t" // bias toward no motion
468     + "paddusb "_ONES", %%mm7\n\t" // bias toward no motion
469     #endif
470    
471     MERGE4PIXavg("(%%"XDI", %%"XCX")", "(%%"XSI", %%"XCX")") // center, in old and new
472     Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoopBottom.inc
473     ===================================================================
474     --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/SearchLoopBottom.inc
475     +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoopBottom.inc
476     @@ -18,7 +18,7 @@
477     // Use the best weave if diffs less than 10 as that
478     // means the image is still or moving cleanly
479     // if there is motion we will clip which will catch anything
480     - "psubusb "MANGLE(FOURS)", %%mm7\n\t" // sets bits to zero if weave diff < 4
481     + "psubusb "_FOURS", %%mm7\n\t" // sets bits to zero if weave diff < 4
482     "pxor %%mm0, %%mm0\n\t"
483     "pcmpeqb %%mm0, %%mm7\n\t" // all ff where weave better, else 00
484     "pcmpeqb %%mm7, %%mm0\n\t" // all ff where bob better, else 00
485     @@ -28,10 +28,10 @@
486     #else
487     // Use the better of bob or weave
488     // pminub mm4, TENS // the most we care about
489     - V_PMINUB ("%%mm4", MANGLE(TENS), "%%mm0") // the most we care about
490     + V_PMINUB ("%%mm4", _TENS, "%%mm0") // the most we care about
491    
492     "psubusb %%mm4, %%mm7\n\t" // foregive that much from weave est?
493     - "psubusb "MANGLE(FOURS)", %%mm7\n\t" // bias it a bit toward weave
494     + "psubusb "_FOURS", %%mm7\n\t" // bias it a bit toward weave
495     "pxor %%mm0, %%mm0\n\t"
496     "pcmpeqb %%mm0, %%mm7\n\t" // all ff where weave better, else 00
497     "pcmpeqb %%mm7, %%mm0\n\t" // all ff where bob better, else 00
498     @@ -42,9 +42,9 @@
499    
500    
501     // pminub mm0, Max_Vals // but clip to catch the stray error
502     -// V_PMINUB ("%%mm0", MANGLE(Max_Vals), "%%mm1") // but clip to catch the stray error
503     +// V_PMINUB ("%%mm0", _Max_Vals, "%%mm1") // but clip to catch the stray error
504     // pmaxub mm0, Min_Vals
505     -// V_PMAXUB ("%%mm0", MANGLE(Min_Vals))
506     +// V_PMAXUB ("%%mm0", _Min_Vals)
507    
508     #endif
509    
510     @@ -53,28 +53,29 @@
511    
512     #ifdef USE_VERTICAL_FILTER
513     "movq %%mm0, %%mm1\n\t"
514     - // pavgb mm0, qword ptr["XBX"]
515     - V_PAVGB ("%%mm0", "(%%"XBX")", "%%mm2", MANGLE(ShiftMask))
516     - // movntq qword ptr["XAX"+"XDX"], mm0
517     - V_MOVNTQ ("(%"XAX", %%"XDX")", "%%mm0")
518     - // pavgb mm1, qword ptr["XBX"+"XCX"]
519     - V_PAVGB ("%%mm1", "(%%"XBX", %%"XCX")", "%%mm2", MANGLE(ShiftMask))
520     - "addq "_dst_pitchw", %%"XBX
521     - // movntq qword ptr["XAX"+"XDX"], mm1
522     - V_MOVNTQ ("(%%"XAX", %%"XDX")", "%%mm1")
523     + // pavgb mm0, qword ptr["XDX"]
524     + V_PAVGB ("%%mm0", "(%%"XDX")", "%%mm2", _ShiftMask)
525     + // movntq qword ptr["XAX"+"olddx"], mm0
526     + ADDX" "_olddx", %%"XAX"\n\t"
527     + V_MOVNTQ ("(%%"XAX")", "%%mm0")
528     + // pavgb mm1, qword ptr["XDX"+"XCX"]
529     + V_PAVGB ("%%mm1", "(%%"XDX", %%"XCX")", "%%mm2", _ShiftMask)
530     + "addq "_dst_pitchw", %%"XDX
531     + // movntq qword ptr["XAX"+"olddx"], mm1
532     + V_MOVNTQ ("(%%"XAX")", "%%mm1")
533     #else
534    
535     - // movntq qword ptr["XAX"+"XDX"], mm0
536     - V_MOVNTQ ("(%%"XAX", %%"XDX")", "%%mm0")
537     + // movntq qword ptr["XAX"+"olddx"], mm0
538     + ADDX" "_olddx", %%"XAX"\n\t"
539     + V_MOVNTQ ("(%%"XAX")", "%%mm0")
540     #endif
541    
542     - LEAX" 8(%%"XDX"), %%"XDX"\n\t" // bump offset pointer
543     - CMPX" "_Last8", %%"XDX"\n\t" // done with line?
544     + ADDX" $8, "_olddx"\n\t" // bump offset pointer
545     + MOVX" "_olddx", %%"XAX"\n\t"
546     + CMPX" "_Last8", %%"XAX"\n\t" // done with line?
547     "jb 1b\n\t" // y
548     #endif
549    
550     - MOVX" "_oldbx", %%"XBX"\n\t"
551     -
552     : /* no outputs */
553    
554     : "m"(pBob),
555     @@ -85,7 +86,17 @@
556     "m"(pSrc),
557     "m"(pSrcP),
558     "m"(pBobP),
559     - "m"(oldbx)
560     + "m"(olddx),
561     + "m"(UVMask),
562     + "m"(ShiftMask),
563     + "m"(FOURS),
564     + "m"(TENS),
565     + "m"(Max_Vals),
566     + "m"(Min_Vals),
567     + "m"(YMask),
568     + "m"(Max_Mov),
569     + "m"(ONES),
570     + "m"(DiffThres)
571    
572     : XAX, XCX, XDX, XSI, XDI,
573     #ifdef ARCH_X86
574     Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoopTop.inc
575     ===================================================================
576     --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/SearchLoopTop.inc
577     +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/SearchLoopTop.inc
578     @@ -66,7 +66,17 @@ long dst_pitchw = dst_pitch; // local s
579     #define _pSrc "%5"
580     #define _pSrcP "%6"
581     #define _pBobP "%7"
582     -#define _oldbx "%8"
583     +#define _olddx "%8"
584     +#define _UVMask "%9"
585     +#define _ShiftMask "%10"
586     +#define _FOURS "%11"
587     +#define _TENS "%12"
588     +#define _Max_Vals "%13"
589     +#define _Min_Vals "%14"
590     +#define _YMask "%15"
591     +#define _Max_Mov "%16"
592     +#define _ONES "%17"
593     +#define _DiffThres "%18"
594     #endif
595    
596     for (y=1; y < FldHeight-1; y++)
597     @@ -77,75 +87,73 @@ long dst_pitchw = dst_pitch; // local s
598     // Loop general reg usage
599     //
600     // XAX - pBobP, then pDest
601     - // XBX - pBob
602     + // XDX - pBob
603     // XCX - src_pitch2
604     - // XDX - current offset
605     + // _olddx - current offset
606     // XDI - prev weave pixels, 1 line up
607     // XSI - next weave pixels, 1 line up
608    
609     - // Save "XBX" (-fPIC)
610     - MOVX" %%"XBX", "_oldbx"\n\t"
611     -
612     #ifdef IS_SSE2
613    
614     // sse2 code deleted for now
615    
616     #else
617     // simple bob first 8 bytes
618     - MOVX" "_pBob", %%"XBX"\n\t"
619     + MOVX" "_pBob", %%"XDX"\n\t"
620     MOVX" "_src_pitch2", %%"XCX"\n\t"
621    
622     #ifdef USE_VERTICAL_FILTER
623     - "movq (%%"XBX"), %%mm0\n\t"
624     - "movq (%%"XBX", %%"XCX"), %%mm1\n\t" //, qword ptr["XBX"+"XCX"]
625     + "movq (%%"XDX"), %%mm0\n\t"
626     + "movq (%%"XDX", %%"XCX"), %%mm1\n\t" //, qword ptr["XDX"+"XCX"]
627     "movq %%mm0, %%mm2\n\t"
628     - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // halfway between
629     - V_PAVGB ("%%mm0", "%%mm2", "%%mm3", MANGLE(ShiftMask)) // 1/4 way
630     - V_PAVGB ("%%mm1", "%%mm2", "%%mm3", MANGLE(ShiftMask)) // 3/4 way
631     + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // halfway between
632     + V_PAVGB ("%%mm0", "%%mm2", "%%mm3", _ShiftMask) // 1/4 way
633     + V_PAVGB ("%%mm1", "%%mm2", "%%mm3", _ShiftMask) // 3/4 way
634     MOVX" "_pDest", %%"XDI"\n\t"
635     MOVX" "_dst_pitchw", %%"XAX"\n\t"
636     V_MOVNTQ ("(%%"XDI")", "%%mm0")
637     V_MOVNTQ ("(%%"XDI", %%"XAX")", "%%mm1") // qword ptr["XDI"+"XAX"], mm1
638    
639     // simple bob last 8 bytes
640     - MOVX" "_Last8", %%"XDX"\n\t"
641     - LEAX" (%%"XBX", %%"XDX"), %%"XSI"\n\t" // ["XBX"+"XDX"]
642     + MOVX" "_Last8", %%"XSI"\n\t"
643     + ADDX" %%"XDX", %%"XSI"\n\t" // ["XDX"+"olddx"]
644     "movq (%%"XSI"), %%mm0\n\t"
645     "movq (%%"XSI", %%"XCX"), %%mm1\n\t" // qword ptr["XSI"+"XCX"]
646     "movq %%mm0, %%mm2\n\t"
647     - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // halfway between
648     - V_PAVGB ("%%mm0", "%%mm2", "%%mm3", MANGLE(ShiftMask)) // 1/4 way
649     - V_PAVGB ("%%mm1", "%%mm2", "%%mm3", MANGLE(ShiftMask)) // 3/4 way
650     - ADDX" %%"XDX", %%"XDI"\n\t" // last 8 bytes of dest
651     + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // halfway between
652     + V_PAVGB ("%%mm0", "%%mm2", "%%mm3", _ShiftMask) // 1/4 way
653     + V_PAVGB ("%%mm1", "%%mm2", "%%mm3", _ShiftMask) // 3/4 way
654     + ADDX" "_olddx", %%"XDI"\n\t" // last 8 bytes of dest
655     V_MOVNTQ ("%%"XDI"", "%%mm0")
656     V_MOVNTQ ("(%%"XDI", %%"XAX")", "%%mm1") // qword ptr["XDI"+"XAX"], mm1)
657    
658     #else
659     - "movq (%%"XBX"), %%mm0\n\t"
660     - // pavgb mm0, qword ptr["XBX"+"XCX"]
661     - V_PAVGB ("%%mm0", "(%%"XBX", %%"XCX")", "%%mm2", MANGLE(ShiftMask)) // qword ptr["XBX"+"XCX"], mm2, ShiftMask)
662     + "movq (%%"XDX"), %%mm0\n\t"
663     + // pavgb mm0, qword ptr["XDX"+"XCX"]
664     + V_PAVGB ("%%mm0", "(%%"XDX", %%"XCX")", "%%mm2", _ShiftMask) // qword ptr["XDX"+"XCX"], mm2, ShiftMask)
665     MOVX" "_pDest", %%"XDI"\n\t"
666     V_MOVNTQ ("(%%"XDI")", "%%mm0")
667    
668     // simple bob last 8 bytes
669     - MOVX" "_Last8", %%"XDX"\n\t"
670     - LEAX" (%%"XBX", %%"XDX"), %%"XSI"\n\t" //"XSI", ["XBX"+"XDX"]
671     + MOVX" "_Last8", %%"XSI"\n\t"
672     + ADDX" %%"XDX", %%"XSI"\n\t" //"XSI", ["XDX"+"olddx"]
673     "movq (%%"XSI"), %%mm0\n\t"
674     // pavgb mm0, qword ptr["XSI"+"XCX"]
675     - V_PAVGB ("%%mm0", "(%%"XSI", %%"XCX")", "%%mm2", MANGLE(ShiftMask)) // qword ptr["XSI"+"XCX"], mm2, ShiftMask)
676     - V_MOVNTQ ("(%%"XDI", %%"XDX")", "%%mm0") // qword ptr["XDI"+"XDX"], mm0)
677     + V_PAVGB ("%%mm0", "(%%"XSI", %%"XCX")", "%%mm2", _ShiftMask) // qword ptr["XSI"+"XCX"], mm2, ShiftMask)
678     + ADDX" "_olddx", %%"XDI"\n\t"
679     + V_MOVNTQ ("(%%"XDI")", "%%mm0") // qword ptr["XDI"+"olddx"], mm0)
680     #endif
681     // now loop and get the middle qwords
682     MOVX" "_pSrc", %%"XSI"\n\t"
683     MOVX" "_pSrcP", %%"XDI"\n\t"
684     - MOVX" $8, %%"XDX"\n\t" // curr offset longo all lines
685     + MOVX" $8, "_olddx"\n\t" // curr offset longo all lines
686    
687     "1:\n\t"
688     MOVX" "_pBobP", %%"XAX"\n\t"
689     ADDX" $8, %%"XDI"\n\t"
690     ADDX" $8, %%"XSI"\n\t"
691     - ADDX" $8, %%"XBX"\n\t"
692     - ADDX" %%"XDX", %%"XAX"\n\t"
693     + ADDX" $8, %%"XDX"\n\t"
694     + ADDX" "_olddx", %%"XAX"\n\t"
695    
696     #ifdef USE_STRANGE_BOB
697     #include "StrangeBob.inc"
698     Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/StrangeBob.inc
699     ===================================================================
700     --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/StrangeBob.inc
701     +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/StrangeBob.inc
702     @@ -31,22 +31,22 @@
703     "pxor %%mm6, %%mm6\n\t"
704     "pxor %%mm7, %%mm7\n\t"
705    
706     - "movq -2(%%"XBX"), %%mm0\n\t" // value a from top left
707     - "movq -4(%%"XBX", %%"XCX"), %%mm1\n\t" // value m from bottom right
708     + "movq -2(%%"XDX"), %%mm0\n\t" // value a from top left
709     + "movq -4(%%"XDX", %%"XCX"), %%mm1\n\t" // value m from bottom right
710    
711     "movq %%mm0, %%mm3\n\t"
712     "psubusb %%mm1, %%mm3\n\t"
713     "psubusb %%mm0, %%mm1\n\t"
714     "por %%mm1, %%mm3\n\t" // abs(a,m)
715    
716     - "psubusb "MANGLE(DiffThres)", %%mm3\n\t" // nonzero where abs(a,m) > Thres else 0
717     + "psubusb "_DiffThres", %%mm3\n\t" // nonzero where abs(a,m) > Thres else 0
718     "pxor %%mm4, %%mm4\n\t"
719     "pcmpeqb %%mm4, %%mm3\n\t" // now ff where abs(a,m) < Thres, else 00
720     "pcmpeqb %%mm3, %%mm4\n\t" // here ff where abs(a,m) > Thres, else 00
721    
722    
723     - "movq -4(%%"XBX"), %%mm0\n\t" // value j
724     - "movq 4(%%"XBX", %%"XCX"), %%mm1\n\t" // value n
725     + "movq -4(%%"XDX"), %%mm0\n\t" // value j
726     + "movq 4(%%"XDX", %%"XCX"), %%mm1\n\t" // value n
727     "movq %%mm0, %%mm2\n\t"
728     "pavgb %%mm1, %%mm2\n\t" // avg(j,n)
729     "movq %%mm0, %%mm3\n\t"
730     @@ -55,7 +55,7 @@
731     "por %%mm1, %%mm0\n\t" // abs(j,n)
732    
733     "movq %%mm0, %%mm1\n\t"
734     - "psubusb "MANGLE(DiffThres)", %%mm1\n\t" // nonzero where abs(j,n) > Thres else 0
735     + "psubusb "_DiffThres", %%mm1\n\t" // nonzero where abs(j,n) > Thres else 0
736     "pxor %%mm3, %%mm3\n\t"
737     "pcmpeqb %%mm3, %%mm1\n\t" // now ff where abs(j,n) < Thres, else 00
738    
739     @@ -75,31 +75,31 @@
740     "por %%mm0, %%mm7\n\t"
741    
742     // k & m
743     - "movq 2(%%"XBX"), %%mm0\n\t" // value c from top left
744     - "movq 4(%%"XBX", %%"XCX"), %%mm1\n\t" // value n from bottom right
745     + "movq 2(%%"XDX"), %%mm0\n\t" // value c from top left
746     + "movq 4(%%"XDX", %%"XCX"), %%mm1\n\t" // value n from bottom right
747    
748     "movq %%mm0, %%mm3\n\t"
749     "psubusb %%mm1, %%mm3\n\t"
750     "psubusb %%mm0, %%mm1\n\t"
751     "por %%mm1, %%mm3\n\t" // abs(c,n)
752    
753     - "psubusb "MANGLE(DiffThres)", %%mm3\n\t" // nonzero where abs(c,n) > Thres else 0
754     + "psubusb "_DiffThres", %%mm3\n\t" // nonzero where abs(c,n) > Thres else 0
755     "pxor %%mm4, %%mm4\n\t"
756     "pcmpeqb %%mm4, %%mm3\n\t" // now ff where abs(c,n) < Thres, else 00
757     "pcmpeqb %%mm3, %%mm4\n\t" // here ff where abs(c,n) > Thres, else 00
758    
759    
760     - "movq 4(%%"XBX"), %%mm0\n\t" // value k
761     - "movq -4(%%"XBX", %%"XCX"), %%mm1\n\t" // value m
762     + "movq 4(%%"XDX"), %%mm0\n\t" // value k
763     + "movq -4(%%"XDX", %%"XCX"), %%mm1\n\t" // value m
764     "movq %%mm0, %%mm2\n\t"
765     - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(k,m)
766     + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(k,m)
767     "movq %%mm0, %%mm3\n\t"
768     "psubusb %%mm1, %%mm0\n\t"
769     "psubusb %%mm3, %%mm1\n\t"
770     "por %%mm1, %%mm0\n\t" // abs(k,m)
771    
772     "movq %%mm0, %%mm1\n\t"
773     - "psubusb "MANGLE(DiffThres)", %%mm1\n\t" // nonzero where abs(k,m) > Thres else 0
774     + "psubusb "_DiffThres", %%mm1\n\t" // nonzero where abs(k,m) > Thres else 0
775     "pxor %%mm3, %%mm3\n\t"
776     "pcmpeqb %%mm3, %%mm1\n\t" // now ff where abs(k,m) < Thres, else 00
777    
778     @@ -120,30 +120,30 @@
779    
780    
781     // c & d
782     - "movq (%%"XBX"), %%mm0\n\t" // value b from top left
783     - "movq 2(%%"XBX", %%"XCX"), %%mm1\n\t" // value f from bottom right
784     + "movq (%%"XDX"), %%mm0\n\t" // value b from top left
785     + "movq 2(%%"XDX", %%"XCX"), %%mm1\n\t" // value f from bottom right
786    
787     "movq %%mm0, %%mm3\n\t"
788     "psubusb %%mm1, %%mm3\n\t"
789     "psubusb %%mm0, %%mm1\n\t"
790     "por %%mm1, %%mm3\n\t" // abs(b,f)
791    
792     - "psubusb "MANGLE(DiffThres)", %%mm3\n\t" // nonzero where abs(b,f) > Thres else 0
793     + "psubusb "_DiffThres", %%mm3\n\t" // nonzero where abs(b,f) > Thres else 0
794     "pxor %%mm4, %%mm4\n\t"
795     "pcmpeqb %%mm4, %%mm3\n\t" // now ff where abs(b,f) < Thres, else 00
796     "pcmpeqb %%mm3, %%mm4\n\t" // here ff where abs(b,f) > Thres, else 00
797    
798     - "movq 2(%%"XBX"), %%mm0\n\t" // value c
799     - "movq -2(%%"XBX", %%"XCX"), %%mm1\n\t" // value d
800     + "movq 2(%%"XDX"), %%mm0\n\t" // value c
801     + "movq -2(%%"XDX", %%"XCX"), %%mm1\n\t" // value d
802     "movq %%mm0, %%mm2\n\t"
803     - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(c,d)
804     + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(c,d)
805     "movq %%mm0, %%mm3\n\t"
806     "psubusb %%mm1, %%mm0\n\t"
807     "psubusb %%mm3, %%mm1\n\t"
808     "por %%mm1, %%mm0\n\t" // abs(c,d)
809    
810     "movq %%mm0, %%mm1\n\t"
811     - "psubusb "MANGLE(DiffThres)", %%mm1\n\t" // nonzero where abs(c,d) > Thres else 0
812     + "psubusb "_DiffThres", %%mm1\n\t" // nonzero where abs(c,d) > Thres else 0
813     "pxor %%mm3, %%mm3\n\t"
814     "pcmpeqb %%mm3, %%mm1\n\t" // now ff where abs(c,d) < Thres, else 00
815    
816     @@ -163,30 +163,30 @@
817     "por %%mm0, %%mm7\n\t"
818    
819     // a & f
820     - "movq (%%"XBX"), %%mm0\n\t" // value b from top left
821     - "movq -2(%%"XBX", %%"XCX"), %%mm1\n\t" // value d from bottom right
822     + "movq (%%"XDX"), %%mm0\n\t" // value b from top left
823     + "movq -2(%%"XDX", %%"XCX"), %%mm1\n\t" // value d from bottom right
824    
825     "movq %%mm0, %%mm3\n\t"
826     "psubusb %%mm1, %%mm3\n\t"
827     "psubusb %%mm0, %%mm1\n\t"
828     "por %%mm1, %%mm3\n\t" // abs(b,d)
829    
830     - "psubusb "MANGLE(DiffThres)", %%mm3\n\t" // nonzero where abs(b,d) > Thres else 0
831     + "psubusb "_DiffThres", %%mm3\n\t" // nonzero where abs(b,d) > Thres else 0
832     "pxor %%mm4, %%mm4\n\t"
833     "pcmpeqb %%mm4, %%mm3\n\t" // now ff where abs(b,d) < Thres, else 00
834     "pcmpeqb %%mm3, %%mm4\n\t" // here ff where abs(b,d) > Thres, else 00
835    
836     - "movq -2(%%"XBX"), %%mm0\n\t" // value a
837     - "movq 2(%%"XBX", %%"XCX"), %%mm1\n\t" // value f
838     + "movq -2(%%"XDX"), %%mm0\n\t" // value a
839     + "movq 2(%%"XDX", %%"XCX"), %%mm1\n\t" // value f
840     "movq %%mm0, %%mm2\n\t"
841     - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(a,f)
842     + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(a,f)
843     "movq %%mm0, %%mm3\n\t"
844     "psubusb %%mm1, %%mm0\n\t"
845     "psubusb %%mm3, %%mm1\n\t"
846     "por %%mm1, %%mm0\n\t" // abs(a,f)
847    
848     "movq %%mm0, %%mm1\n\t"
849     - "psubusb "MANGLE(DiffThres)", %%mm1\n\t" // nonzero where abs(a,f) > Thres else 0
850     + "psubusb "_DiffThres", %%mm1\n\t" // nonzero where abs(a,f) > Thres else 0
851     "pxor %%mm3, %%mm3\n\t"
852     "pcmpeqb %%mm3, %%mm1\n\t" // now ff where abs(a,f) < Thres, else 00
853    
854     @@ -205,22 +205,22 @@
855     "por %%mm2, %%mm6\n\t"
856     "por %%mm0, %%mm7\n\t"
857    
858     - "pand "MANGLE(YMask)", %%mm5\n\t" // mask out chroma from here
859     - "pand "MANGLE(YMask)", %%mm6\n\t" // mask out chroma from here
860     - "pand "MANGLE(YMask)", %%mm7\n\t" // mask out chroma from here
861     + "pand "_YMask", %%mm5\n\t" // mask out chroma from here
862     + "pand "_YMask", %%mm6\n\t" // mask out chroma from here
863     + "pand "_YMask", %%mm7\n\t" // mask out chroma from here
864    
865     // b,e
866     - "movq (%%"XBX"), %%mm0\n\t" // value b from top
867     - "movq (%%"XBX", %%"XCX"), %%mm1\n\t" // value e from bottom
868     + "movq (%%"XDX"), %%mm0\n\t" // value b from top
869     + "movq (%%"XDX", %%"XCX"), %%mm1\n\t" // value e from bottom
870     "movq %%mm0, %%mm2\n\t"
871     - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(b,e)
872     + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(b,e)
873     "movq %%mm0, %%mm3\n\t"
874     "psubusb %%mm1, %%mm0\n\t"
875     "psubusb %%mm3, %%mm1\n\t"
876     "por %%mm1, %%mm0\n\t" // abs(b,e)
877    
878     "movq %%mm0, %%mm1\n\t"
879     - "psubusb "MANGLE(DiffThres)", %%mm1\n\t" // nonzero where abs(b,e) > Thres else 0
880     + "psubusb "_DiffThres", %%mm1\n\t" // nonzero where abs(b,e) > Thres else 0
881     "pxor %%mm3, %%mm3\n\t"
882     "pcmpeqb %%mm3, %%mm1\n\t" // now ff where abs(b,e) < Thres, else 00
883    
884     @@ -238,8 +238,8 @@
885     "por %%mm0, %%mm7\n\t"
886    
887     // bob in any leftovers
888     - "movq (%%"XBX"), %%mm0\n\t" // value b from top
889     - "movq (%%"XBX", %%"XCX"), %%mm1\n\t" // value e from bottom
890     + "movq (%%"XDX"), %%mm0\n\t" // value b from top
891     + "movq (%%"XDX", %%"XCX"), %%mm1\n\t" // value e from bottom
892    
893    
894     // We will also calc here the max/min values to later limit comb
895     @@ -271,7 +271,7 @@
896     "por %%mm2, %%mm3\n\t" // abs diff
897     // pmaxub %%mm3, %%mm4 // top or bottom pixel moved most
898     V_PMAXUB ("%%mm3", "%%mm4") // top or bottom pixel moved most
899     - "psubusb "MANGLE(DiffThres)", %%mm3\n\t" // moved more than allowed? or goes to 0?
900     + "psubusb "_DiffThres", %%mm3\n\t" // moved more than allowed? or goes to 0?
901     "pxor %%mm4, %%mm4\n\t"
902     "pcmpeqb %%mm4, %%mm3\n\t" // now ff where low motion, else high motion
903    
904     @@ -283,19 +283,19 @@
905     V_PMAXUB ("%%mm6", "%%mm2")
906    
907     "psubusb %%mm3, %%mm2\n\t" // maybe decrease it to 0000.. if no surround motion
908     -// "movq %%mm2, "MANGLE(Min_Vals)"\n\t"
909     +// "movq %%mm2, "_Min_Vals"\n\t"
910    
911     "movq %%mm0, %%mm2\n\t"
912     V_PMAXUB ("%%mm2", "%%mm1")
913     // pminub %%mm6, %%mm2 // clip our current results so far to be below this
914     V_PMINUB ("%%mm6", "%%mm2", "%%mm4")
915     "paddusb %%mm3, %%mm2\n\t" // maybe increase it to ffffff if no surround motion
916     -// "movq %%mm2, "MANGLE(Max_Vals)"\n\t"
917     +// "movq %%mm2, "_Max_Vals"\n\t"
918     #endif
919    
920     "movq %%mm0, %%mm2\n\t"
921     // pavgb %%mm2, %%mm1 // avg(b,e)
922     - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(b,e)
923     + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(b,e)
924    
925     "movq %%mm0, %%mm3\n\t"
926     "psubusb %%mm1, %%mm3\n\t"
927     Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/TomsMoCompAll.inc
928     ===================================================================
929     --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/TomsMoCompAll.inc
930     +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/TomsMoCompAll.inc
931     @@ -33,8 +33,8 @@ static const int64_t __attribute__((__us
932     static const int64_t __attribute__((__used__)) FOURS = 0x0404040404040404ull;
933     static const int64_t __attribute__((__used__)) ONES = 0x0101010101010101ull;
934     static const int64_t __attribute__((__used__)) ShiftMask = 0xfefffefffefffeffull;
935     -//static int64_t Min_Vals = 0x0000000000000000ull;
936     -//static int64_t Max_Vals = 0x0000000000000000ull;
937     +static int64_t Min_Vals = 0x0000000000000000ull;
938     +static int64_t Max_Vals = 0x0000000000000000ull;
939     #endif
940    
941     #ifndef TopFirst
942     @@ -69,7 +69,7 @@ static void FUNCT_NAME(uint8_t *output,
943     int rowsize;
944     int FldHeight;
945     int stride = (width*2);
946     - long oldbx;
947     + long olddx;
948    
949    
950     src_pitch = stride*2;
951     Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/WierdBob.inc
952     ===================================================================
953     --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/WierdBob.inc
954     +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/WierdBob.inc
955     @@ -14,22 +14,22 @@
956     // selected for the smallest of abs(a,f), abs(c,d), or abs(b,e), etc.
957    
958     // a,f
959     - "movq -2(%%"XBX"), %%mm0\n\t" // value a from top left
960     - "movq 2(%%"XBX", %%"XCX"), %%mm1\n\t" // value f from bottom right
961     + "movq -2(%%"XDX"), %%mm0\n\t" // value a from top left
962     + "movq 2(%%"XDX", %%"XCX"), %%mm1\n\t" // value f from bottom right
963     "movq %%mm0, %%mm6\n\t"
964     // pavgb %%mm6, %%mm1 // avg(a,f), also best so far
965     - V_PAVGB ("%%mm6", "%%mm1", "%%mm7", MANGLE(ShiftMask)) // avg(a,f), also best so far
966     + V_PAVGB ("%%mm6", "%%mm1", "%%mm7", _ShiftMask) // avg(a,f), also best so far
967     "movq %%mm0, %%mm7\n\t"
968     "psubusb %%mm1, %%mm7\n\t"
969     "psubusb %%mm0, %%mm1\n\t"
970     "por %%mm1, %%mm7\n\t" // abs diff, also best so far
971    
972     // c,d
973     - "movq 2(%%"XBX"), %%mm0\n\t" // value a from top left
974     - "movq -2(%%"XBX", %%"XCX"), %%mm1\n\t" // value f from bottom right
975     + "movq 2(%%"XDX"), %%mm0\n\t" // value a from top left
976     + "movq -2(%%"XDX", %%"XCX"), %%mm1\n\t" // value f from bottom right
977     "movq %%mm0, %%mm2\n\t"
978     // pavgb %%mm2, %%mm1 // avg(c,d)
979     - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(c,d)
980     + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(c,d)
981     "movq %%mm0, %%mm3\n\t"
982     "psubusb %%mm1, %%mm3\n\t"
983     "psubusb %%mm0, %%mm1\n\t"
984     @@ -49,15 +49,15 @@
985    
986     "por %%mm2, %%mm6\n\t" // and merge new & old vals keeping best
987     "por %%mm1, %%mm7\n\t"
988     - "por "MANGLE(UVMask)", %%mm7\n\t" // but we know chroma is worthless so far
989     - "pand "MANGLE(YMask)", %%mm5\n\t" // mask out chroma from here also
990     + "por "_UVMask", %%mm7\n\t" // but we know chroma is worthless so far
991     + "pand "_YMask", %%mm5\n\t" // mask out chroma from here also
992    
993     // j,n
994     - "movq -4(%%"XBX"), %%mm0\n\t" // value j from top left
995     - "movq 4(%%"XBX", %%"XCX"), %%mm1\n\t" // value n from bottom right
996     + "movq -4(%%"XDX"), %%mm0\n\t" // value j from top left
997     + "movq 4(%%"XDX", %%"XCX"), %%mm1\n\t" // value n from bottom right
998     "movq %%mm0, %%mm2\n\t"
999     // pavgb %%mm2, %%mm1 // avg(j,n)
1000     - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(j,n)
1001     + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(j,n)
1002     "movq %%mm0, %%mm3\n\t"
1003     "psubusb %%mm1, %%mm3\n\t"
1004     "psubusb %%mm0, %%mm1\n\t"
1005     @@ -79,11 +79,11 @@
1006     "por %%mm1, %%mm7\n\t" // "
1007    
1008     // k, m
1009     - "movq 4(%%"XBX"), %%mm0\n\t" // value k from top right
1010     - "movq -4(%%"XBX", %%"XCX"), %%mm1\n\t" // value n from bottom left
1011     + "movq 4(%%"XDX"), %%mm0\n\t" // value k from top right
1012     + "movq -4(%%"XDX", %%"XCX"), %%mm1\n\t" // value n from bottom left
1013     "movq %%mm0, %%mm4\n\t"
1014     // pavgb %%mm4, %%mm1 // avg(k,m)
1015     - V_PAVGB ("%%mm4", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(k,m)
1016     + V_PAVGB ("%%mm4", "%%mm1", "%%mm3", _ShiftMask) // avg(k,m)
1017    
1018     "movq %%mm0, %%mm3\n\t"
1019     "psubusb %%mm1, %%mm3\n\t"
1020     @@ -108,8 +108,8 @@
1021     "por %%mm1, %%mm7\n\t" // "
1022    
1023     // b,e
1024     - "movq (%%"XBX"), %%mm0\n\t" // value b from top
1025     - "movq (%%"XBX", %%"XCX"), %%mm1\n\t" // value e from bottom
1026     + "movq (%%"XDX"), %%mm0\n\t" // value b from top
1027     + "movq (%%"XDX", %%"XCX"), %%mm1\n\t" // value e from bottom
1028    
1029     // We will also calc here the max/min values to later limit comb
1030     // so the max excursion will not exceed the Max_Comb constant
1031     @@ -140,7 +140,7 @@
1032     "por %%mm2, %%mm3\n\t" // abs diff
1033     // pmaxub %%mm3, %%mm4 // top or bottom pixel moved most
1034     V_PMAXUB ("%%mm3", "%%mm4") // top or bottom pixel moved most
1035     - "psubusb "MANGLE(Max_Mov)", %%mm3\n\t" // moved more than allowed? or goes to 0?
1036     + "psubusb "_Max_Mov", %%mm3\n\t" // moved more than allowed? or goes to 0?
1037     "pxor %%mm4, %%mm4\n\t"
1038     "pcmpeqb %%mm4, %%mm3\n\t" // now ff where low motion, else high motion
1039    
1040     @@ -152,19 +152,19 @@
1041     V_PMAXUB ("%%mm6", "%%mm2")
1042    
1043     "psubusb %%mm3, %%mm2\n\t" // maybe decrease it to 0000.. if no surround motion
1044     -// "movq %%mm2, "MANGLE(Min_Vals)"\n\t"
1045     +// "movq %%mm2, "_Min_Vals"\n\t"
1046    
1047     "movq %%mm0, %%mm2\n\t"
1048     V_PMAXUB ("%%mm2", "%%mm1")
1049     // pminub %%mm6, %%mm2 // clip our current results so far to be below this
1050     V_PMINUB ("%%mm6", "%%mm2", "%%mm4")
1051     "paddusb %%mm3, %%mm2\n\t" // maybe increase it to ffffff if no surround motion
1052     -// "movq %%mm2, "MANGLE(Max_Vals)"\n\t"
1053     +// "movq %%mm2, "_Max_Vals"\n\t"
1054     #endif
1055    
1056     "movq %%mm0, %%mm2\n\t"
1057     // pavgb %%mm2, %%mm1 // avg(b,e)
1058     - V_PAVGB ("%%mm2", "%%mm1", "%%mm3", MANGLE(ShiftMask)) // avg(b,e)
1059     + V_PAVGB ("%%mm2", "%%mm1", "%%mm3", _ShiftMask) // avg(b,e)
1060    
1061     "movq %%mm0, %%mm3\n\t"
1062     "psubusb %%mm1, %%mm3\n\t"
1063     Index: xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h
1064     ===================================================================
1065     --- xine-lib-1.1.1.orig/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h
1066     +++ xine-lib-1.1.1/src/post/deinterlace/plugins/tomsmocomp/tomsmocompmacros.h
1067     @@ -114,7 +114,7 @@
1068     "por %%xmm0, %%xmm5\n\t" /* and merge new & old vals */ \
1069     "por %%xmm2, %%xmm7\n\t"
1070    
1071     -#define RESET_CHROMA "por "MANGLE(UVMask)", %%xmm7\n\t"
1072     +#define RESET_CHROMA "por "_UVMask", %%xmm7\n\t"
1073    
1074     #else // ifdef IS_SSE2
1075    
1076     @@ -126,7 +126,7 @@
1077     "psubusb %%mm1, %%mm2\n\t" \
1078     "psubusb %%mm0, %%mm3\n\t" \
1079     "por %%mm3, %%mm2\n\t" \
1080     - V_PAVGB ("%%mm0", "%%mm1", "%%mm3", MANGLE(ShiftMask)) /* avg of 2 pixels */ \
1081     + V_PAVGB ("%%mm0", "%%mm1", "%%mm3", _ShiftMask) /* avg of 2 pixels */ \
1082     "movq %%mm2, %%mm3\n\t" /* another copy of our our weights */ \
1083     "pxor %%mm1, %%mm1\n\t" \
1084     "psubusb %%mm7, %%mm3\n\t" /* nonzero where old weights lower, else 0 */ \
1085     @@ -144,14 +144,14 @@
1086     "movq "PADDR2A", %%mm1\n\t" /* our pixel2 value */ \
1087     "movq "PADDR1B", %%mm2\n\t" /* our 4 pixels */ \
1088     "movq "PADDR2B", %%mm3\n\t" /* our pixel2 value */ \
1089     - V_PAVGB("%%mm0", "%%mm2", "%%mm2", MANGLE(ShiftMask)) \
1090     - V_PAVGB("%%mm1", "%%mm3", "%%mm3", MANGLE(ShiftMask)) \
1091     + V_PAVGB("%%mm0", "%%mm2", "%%mm2", _ShiftMask) \
1092     + V_PAVGB("%%mm1", "%%mm3", "%%mm3", _ShiftMask) \
1093     "movq %%mm0, %%mm2\n\t" /* another copy of our pixel1 value */ \
1094     "movq %%mm1, %%mm3\n\t" /* another copy of our pixel1 value */ \
1095     "psubusb %%mm1, %%mm2\n\t" \
1096     "psubusb %%mm0, %%mm3\n\t" \
1097     "por %%mm3, %%mm2\n\t" \
1098     - V_PAVGB("%%mm0", "%%mm1", "%%mm3", MANGLE(ShiftMask)) /* avg of 2 pixels */ \
1099     + V_PAVGB("%%mm0", "%%mm1", "%%mm3", _ShiftMask) /* avg of 2 pixels */ \
1100     "movq %%mm2, %%mm3\n\t" /* another copy of our our weights */ \
1101     "pxor %%mm1, %%mm1\n\t" \
1102     "psubusb %%mm7, %%mm3\n\t" /* nonzero where old weights lower, else 0 */ \
1103     @@ -164,7 +164,7 @@
1104     "por %%mm0, %%mm5\n\t" /* and merge new & old vals */ \
1105     "por %%mm2, %%mm7\n\t"
1106    
1107     -#define RESET_CHROMA "por "MANGLE(UVMask)", %%mm7\n\t"
1108     +#define RESET_CHROMA "por "_UVMask", %%mm7\n\t"
1109    
1110     #endif
1111