--- filter/Absdiff.c 2002-08-25 17:54:47.000000000 -0400 +++ filter/Absdiff.c?rt=sdlcam&r=1.3&p=1 2003-09-10 00:33:39.213153784 -0400 @@ -33,53 +33,52 @@ #ifdef MMX /* {{{ D = [A-B] OR [B-A] ; [] mean sturated to 0 */ if (len < 8) return 0; // image size must be at least 8 bytes - asm volatile (" - push %%ebx - push %%ecx - push %%esi - push %%edi - mov %3, %%ecx - mov %2, %%edi - mov %1, %%ebx - mov %0, %%esi - shr $5, %%ecx - .align 16 - .absdiff_MMX: - movq (%%esi), %%mm0 - movq 8(%%esi), %%mm1 - movq 16(%%esi), %%mm2 - movq 24(%%esi), %%mm3 - movq (%%ebx), %%mm4 - movq 8(%%ebx), %%mm5 - movq 16(%%ebx), %%mm6 - movq 24(%%ebx), %%mm7 - psubusb %%mm4 , %%mm0 - psubusb %%mm5 , %%mm1 - psubusb %%mm6 , %%mm2 - psubusb %%mm7 , %%mm3 - psubusb (%%esi), %%mm4 - psubusb 8(%%esi), %%mm5 - psubusb 16(%%esi), %%mm6 - psubusb 24(%%esi), %%mm7 - por %%mm4 , %%mm0 - por %%mm5 , %%mm1 - por %%mm6 , %%mm2 - por %%mm7 , %%mm3 - movq %%mm0, (%%edi) - movq %%mm1, 8(%%edi) - movq %%mm2, 16(%%edi) - movq %%mm3, 24(%%edi) - add $32, %%esi - add $32, %%edi - add $32, %%ebx - dec %%ecx - jnz .absdiff_MMX - emms - pop %%edi - pop %%esi - pop %%ecx - pop %%ebx - " + asm volatile ( + " push %%ebx \n" + " push %%ecx \n" + " push %%esi \n" + " push %%edi \n" + " mov %3, %%ecx \n" + " mov %2, %%edi \n" + " mov %1, %%ebx \n" + " mov %0, %%esi \n" + " shr $5, %%ecx \n" + ".align 16 \n" + ".absdiff_MMX: \n" + " movq (%%esi), %%mm0 \n" + " movq 8(%%esi), %%mm1 \n" + " movq 16(%%esi), %%mm2 \n" + " movq 24(%%esi), %%mm3 \n" + " movq (%%ebx), %%mm4 \n" + " movq 8(%%ebx), %%mm5 \n" + " movq 16(%%ebx), %%mm6 \n" + " movq 24(%%ebx), %%mm7 \n" + " psubusb %%mm4 , %%mm0 \n" + " psubusb %%mm5 , %%mm1 \n" + " psubusb %%mm6 , %%mm2 \n" + " psubusb %%mm7 , %%mm3 \n" + " psubusb (%%esi), %%mm4 \n" + " psubusb 8(%%esi), %%mm5 \n" + " psubusb 16(%%esi), %%mm6 \n" + " psubusb 24(%%esi), %%mm7 \n" + " por %%mm4 , %%mm0 \n" + " por %%mm5 , %%mm1 \n" + " por %%mm6 , %%mm2 \n" + " por %%mm7 , %%mm3 \n" + " movq %%mm0, (%%edi) \n" + " movq %%mm1, 8(%%edi) \n" + " movq %%mm2, 16(%%edi) \n" + " movq %%mm3, 24(%%edi) \n" + " add $32, %%esi \n" + " add $32, %%edi \n" + " add $32, %%ebx \n" + " dec %%ecx \n" + " jnz .absdiff_MMX \n" + " emms \n" + " pop %%edi \n" + " pop %%esi \n" + " pop %%ecx \n" + " pop %%ebx \n" : "=m" (b) // %0 :"m" (a), // %1 "m" (dst), // %2