]>
Commit | Line | Data |
---|---|---|
6471d98e JB |
1 | --- SDLcam-0.7.3/filter/Absdiff.c.orig Sun Aug 25 23:54:47 2002 |
2 | +++ SDLcam-0.7.3/filter/Absdiff.c Wed Sep 3 14:29:03 2003 | |
3 | @@ -33,53 +33,52 @@ | |
4 | #ifdef MMX | |
5 | /* {{{ D = [A-B] OR [B-A] ; [] mean sturated to 0 */ | |
6 | if (len < 8) return 0; // image size must be at least 8 bytes | |
7 | - asm volatile (" | |
8 | - push %%ebx | |
9 | - push %%ecx | |
10 | - push %%esi | |
11 | - push %%edi | |
12 | - mov %3, %%ecx | |
13 | - mov %2, %%edi | |
14 | - mov %1, %%ebx | |
15 | - mov %0, %%esi | |
16 | - shr $5, %%ecx | |
17 | - .align 16 | |
18 | - .absdiff_MMX: | |
19 | - movq (%%esi), %%mm0 | |
20 | - movq 8(%%esi), %%mm1 | |
21 | - movq 16(%%esi), %%mm2 | |
22 | - movq 24(%%esi), %%mm3 | |
23 | - movq (%%ebx), %%mm4 | |
24 | - movq 8(%%ebx), %%mm5 | |
25 | - movq 16(%%ebx), %%mm6 | |
26 | - movq 24(%%ebx), %%mm7 | |
27 | - psubusb %%mm4 , %%mm0 | |
28 | - psubusb %%mm5 , %%mm1 | |
29 | - psubusb %%mm6 , %%mm2 | |
30 | - psubusb %%mm7 , %%mm3 | |
31 | - psubusb (%%esi), %%mm4 | |
32 | - psubusb 8(%%esi), %%mm5 | |
33 | - psubusb 16(%%esi), %%mm6 | |
34 | - psubusb 24(%%esi), %%mm7 | |
35 | - por %%mm4 , %%mm0 | |
36 | - por %%mm5 , %%mm1 | |
37 | - por %%mm6 , %%mm2 | |
38 | - por %%mm7 , %%mm3 | |
39 | - movq %%mm0, (%%edi) | |
40 | - movq %%mm1, 8(%%edi) | |
41 | - movq %%mm2, 16(%%edi) | |
42 | - movq %%mm3, 24(%%edi) | |
43 | - add $32, %%esi | |
44 | - add $32, %%edi | |
45 | - add $32, %%ebx | |
46 | - dec %%ecx | |
47 | - jnz .absdiff_MMX | |
48 | - emms | |
49 | - pop %%edi | |
50 | - pop %%esi | |
51 | - pop %%ecx | |
52 | - pop %%ebx | |
53 | - " | |
54 | + asm volatile ( | |
55 | +" push %%ebx\n" | |
56 | +" push %%ecx\n" | |
57 | +" push %%esi\n" | |
58 | +" push %%edi\n" | |
59 | +" mov %3, %%ecx\n" | |
60 | +" mov %2, %%edi\n" | |
61 | +" mov %1, %%ebx\n" | |
62 | +" mov %0, %%esi\n" | |
63 | +" shr $5, %%ecx\n" | |
64 | +" .align 16\n" | |
65 | +" .absdiff_MMX:\n" | |
66 | +" movq (%%esi), %%mm0\n" | |
67 | +" movq 8(%%esi), %%mm1\n" | |
68 | +" movq 16(%%esi), %%mm2\n" | |
69 | +" movq 24(%%esi), %%mm3\n" | |
70 | +" movq (%%ebx), %%mm4\n" | |
71 | +" movq 8(%%ebx), %%mm5\n" | |
72 | +" movq 16(%%ebx), %%mm6\n" | |
73 | +" movq 24(%%ebx), %%mm7\n" | |
74 | +" psubusb %%mm4 , %%mm0\n" | |
75 | +" psubusb %%mm5 , %%mm1\n" | |
76 | +" psubusb %%mm6 , %%mm2\n" | |
77 | +" psubusb %%mm7 , %%mm3\n" | |
78 | +" psubusb (%%esi), %%mm4\n" | |
79 | +" psubusb 8(%%esi), %%mm5\n" | |
80 | +" psubusb 16(%%esi), %%mm6\n" | |
81 | +" psubusb 24(%%esi), %%mm7\n" | |
82 | +" por %%mm4 , %%mm0\n" | |
83 | +" por %%mm5 , %%mm1\n" | |
84 | +" por %%mm6 , %%mm2\n" | |
85 | +" por %%mm7 , %%mm3\n" | |
86 | +" movq %%mm0, (%%edi)\n" | |
87 | +" movq %%mm1, 8(%%edi)\n" | |
88 | +" movq %%mm2, 16(%%edi)\n" | |
89 | +" movq %%mm3, 24(%%edi)\n" | |
90 | +" add $32, %%esi\n" | |
91 | +" add $32, %%edi\n" | |
92 | +" add $32, %%ebx\n" | |
93 | +" dec %%ecx\n" | |
94 | +" jnz .absdiff_MMX\n" | |
95 | +" emms\n" | |
96 | +" pop %%edi\n" | |
97 | +" pop %%esi\n" | |
98 | +" pop %%ecx\n" | |
99 | +" pop %%ebx" | |
100 | : "=m" (b) // %0 | |
101 | :"m" (a), // %1 | |
102 | "m" (dst), // %2 |