: "%eax", "%ebx"
static inline int isVertDC(uint8_t src[], int stride){	int numEq= 0;	int y;	src+= stride*4; // src points to begin of the 8x8 Block#ifdef HAVE_MMXasm volatile(		"leal (%1, %2), %%eax				\n\t"		"leal (%%eax, %2, 4), %%ebx			\n\t"//	0	1	2	3	4	5	6	7	8	9//	%1	eax	eax+%2	eax+2%2	%1+4%2	ebx	ebx+%2	ebx+2%2	%1+8%2	ebx+4%2		"movq b7E, %%mm7					\n\t" // mm7 = 0x7F		"movq b7C, %%mm6					\n\t" // mm6 = 0x7D		"movq (%1), %%mm0				\n\t"		"movq (%%eax), %%mm1				\n\t"		"psubb %%mm1, %%mm0				\n\t" // mm0 = differnece		"paddb %%mm7, %%mm0				\n\t"		"pcmpgtb %%mm6, %%mm0				\n\t"		"movq (%%eax,%2), %%mm2				\n\t"		"psubb %%mm2, %%mm1				\n\t"		"paddb %%mm7, %%mm1				\n\t"		"pcmpgtb %%mm6, %%mm1				\n\t"		"paddb %%mm1, %%mm0				\n\t"		"movq (%%eax, %2, 2), %%mm1			\n\t"		"psubb %%mm1, %%mm2				\n\t"		"paddb %%mm7, %%mm2				\n\t"		"pcmpgtb %%mm6, %%mm2				\n\t"		"paddb %%mm2, %%mm0				\n\t"		"movq (%1, %2, 4), %%mm2			\n\t"		"psubb %%mm2, %%mm1				\n\t"		"paddb %%mm7, %%mm1				\n\t"		"pcmpgtb %%mm6, %%mm1				\n\t"		"paddb %%mm1, %%mm0				\n\t"		"movq (%%ebx), %%mm1				\n\t"		"psubb %%mm1, %%mm2				\n\t"		"paddb %%mm7, %%mm2				\n\t"		"pcmpgtb %%mm6, %%mm2				\n\t"		"paddb %%mm2, %%mm0				\n\t"		"movq (%%ebx, %2), %%mm2			\n\t"		"psubb %%mm2, %%mm1				\n\t"		"paddb %%mm7, %%mm1				\n\t"		"pcmpgtb %%mm6, %%mm1				\n\t"		"paddb %%mm1, %%mm0				\n\t"		"movq (%%ebx, %2, 2), %%mm1			\n\t"		"psubb %%mm1, %%mm2				\n\t"		"paddb %%mm7, %%mm2				\n\t"		"pcmpgtb %%mm6, %%mm2				\n\t"		"paddb %%mm2, %%mm0				\n\t"		"						\n\t"		"movq %%mm0, %%mm1				\n\t"		"psrlw $8, %%mm0				\n\t"		"paddb %%mm1, %%mm0				\n\t"		"movq %%mm0, %%mm1				\n\t"		"psrlq $16, %%mm0				\n\t"		"paddb %%mm1, %%mm0				\n\t"		"movq %%mm0, %%mm1				\n\t"		"psrlq $32, %%mm0				\n\t"		"paddb %%mm1, %%mm0				\n\t"		"movd %%mm0, %0					\n\t"		: "=r" (numEq)		: "r" (src), "r" (stride)		);	numEq= (256 - numEq) &0xFF;#else	for(y=0; y<BLOCK_SIZE-1; y++)	{		if(((src[0] - src[0+stride] + 1)&0xFFFF) < 3) numEq++;		if(((src[1] - src[1+stride] + 1)&0xFFFF) < 3) numEq++;		if(((src[2] - src[2+stride] + 1)&0xFFFF) < 3) numEq++;		if(((src[3] - src[3+stride] + 1)&0xFFFF) < 3) numEq++;		if(((src[4] - src[4+stride] + 1)&0xFFFF) < 3) numEq++;		if(((src[5] - src[5+stride] + 1)&0xFFFF) < 3) numEq++;		if(((src[6] - src[6+stride] + 1)&0xFFFF) < 3) numEq++;		if(((src[7] - src[7+stride] + 1)&0xFFFF) < 3) numEq++;		src+= stride;	}#endif/*	if(abs(numEq - asmEq) > 0)	{		printf("\nasm:%d  c:%d\n", asmEq, numEq);		for(int y=0; y<8; y++)		{			for(int x=0; x<8; x++)			{				printf("%d ", temp[x + y*stride]);			}			printf("\n");		}	}*///	for(int i=0; i<numEq/8; i++) src[i]=255;	return (numEq > vFlatnessThreshold) ? 1 : 0;}