"pavgb %%mm1, %%mm4					\n\t"\ "pavgb %%mm3, %%mm2					\n\t"\
PAVGB(%%mm1, %%mm4)\ PAVGB(%%mm3, %%mm2)\
static inline void doHorizLowPassAndCopyBack(uint8_t dst[], int stride, int QP){//return;#ifdef HAVE_MMX2	asm volatile(	//"movv %0 %1 %2\n\t"		"pushl %0\n\t"		"pxor %%mm7, %%mm7					\n\t"		"leal tempBlock, %%eax					\n\t"#define HLP1	"movq (%0), %%mm0					\n\t"\		"movq %%mm0, %%mm1					\n\t"\		"psllq $8, %%mm0					\n\t"\		"pavgb %%mm1, %%mm0					\n\t"\		"psrlw $8, %%mm0					\n\t"\		"pxor %%mm1, %%mm1					\n\t"\		"packuswb %%mm1, %%mm0					\n\t"\		"movq %%mm0, %%mm1					\n\t"\		"movq %%mm0, %%mm2					\n\t"\		"psllq $32, %%mm0					\n\t"\		"paddb %%mm0, %%mm1					\n\t"\		"psllq $16, %%mm2					\n\t"\		"pavgb %%mm2, %%mm0					\n\t"\		"movq %%mm0, %%mm3					\n\t"\		"pand bm11001100, %%mm0					\n\t"\		"paddusb %%mm0, %%mm3					\n\t"\		"psrlq $8, %%mm3					\n\t"\		"pavgb %%mm1, %%mm4					\n\t"\		"pavgb %%mm3, %%mm2					\n\t"\		"psrlq $16, %%mm2					\n\t"\		"punpcklbw %%mm2, %%mm2					\n\t"\		"movq %%mm2, (%0)					\n\t"\#define HLP2	"movq (%0), %%mm0					\n\t"\		"movq %%mm0, %%mm1					\n\t"\		"psllq $8, %%mm0					\n\t"\		"pavgb %%mm1, %%mm0					\n\t"\		"psrlw $8, %%mm0					\n\t"\		"pxor %%mm1, %%mm1					\n\t"\		"packuswb %%mm1, %%mm0					\n\t"\		"movq %%mm0, %%mm2					\n\t"\		"psllq $32, %%mm0					\n\t"\		"psllq $16, %%mm2					\n\t"\		"pavgb %%mm2, %%mm0					\n\t"\		"movq %%mm0, %%mm3					\n\t"\		"pand bm11001100, %%mm0					\n\t"\		"paddusb %%mm0, %%mm3					\n\t"\		"psrlq $8, %%mm3					\n\t"\		"pavgb %%mm3, %%mm2					\n\t"\		"psrlq $16, %%mm2					\n\t"\		"punpcklbw %%mm2, %%mm2					\n\t"\		"movq %%mm2, (%0)					\n\t"\// approximately a 7-Tap Filter with Vector (1,2,3,4,3,2,1)/16/* 31 121  121   121    121     121      121       13Implemented	Exact 7-Tap 9421		A321 36421		64321 334321		= 1234321	=  1234321	=   123433	=    12463	  12346     1249	   123A*/#define HLP3(i)	"movq " #i "(%%eax), %%mm0				\n\t"\		"movq %%mm0, %%mm1					\n\t"\		"movq %%mm0, %%mm2					\n\t"\		"movq %%mm0, %%mm3					\n\t"\		"movq %%mm0, %%mm4					\n\t"\		"psllq $8, %%mm1					\n\t"\		"psrlq $8, %%mm2					\n\t"\		"pand bm00000001, %%mm3					\n\t"\		"pand bm10000000, %%mm4					\n\t"\		"por %%mm3, %%mm1					\n\t"\		"por %%mm4, %%mm2					\n\t"\		"pavgb %%mm2, %%mm1					\n\t"\		"pavgb %%mm1, %%mm0					\n\t"\\		"pshufw $0xF9, %%mm0, %%mm3				\n\t"\		"pshufw $0x90, %%mm0, %%mm4				\n\t"\		"pavgb %%mm3, %%mm4					\n\t"\		"pavgb %%mm4, %%mm0					\n\t"\		"movd %%mm0, (%0)					\n\t"\		"psrlq $32, %%mm0					\n\t"\		"movd %%mm0, 4(%0)					\n\t"\#define HLP(i) HLP3(i)		HLP(0)		"addl %1, %0						\n\t"		HLP(8)		"addl %1, %0						\n\t"		HLP(16)		"addl %1, %0						\n\t"		HLP(24)		"addl %1, %0						\n\t"		HLP(32)		"addl %1, %0						\n\t"		HLP(40)		"addl %1, %0						\n\t"		HLP(48)		"addl %1, %0						\n\t"		HLP(56)		"popl %0\n\t"		:		: "r" (dst), "r" (stride)		: "%eax", "%ebx"	);#else	uint8_t *temp= tempBlock;	for(int y=0; y<BLOCK_SIZE; y++)	{		const int first= ABS(dst[-1] - dst[0]) < QP ? dst[-1] : dst[0];		const int last= ABS(dst[8] - dst[7]) < QP ? dst[8] : dst[7];		int sums[9];		sums[0] = first + temp[0];		sums[1] = temp[0] + temp[1];		sums[2] = temp[1] + temp[2];		sums[3] = temp[2] + temp[3];		sums[4] = temp[3] + temp[4];		sums[5] = temp[4] + temp[5];		sums[6] = temp[5] + temp[6];		sums[7] = temp[6] + temp[7];		sums[8] = temp[7] + last;		dst[0]= ((sums[0]<<2) + ((first + sums[2])<<1) + sums[4] + 8)>>4;		dst[1]= ((dst[1]<<2) + (first + sums[0] + sums[3]<<1) + sums[5] + 8)>>4;		dst[2]= ((dst[2]<<2) + (first + sums[1] + sums[4]<<1) + sums[6] + 8)>>4;		dst[3]= ((dst[3]<<2) + (sums[2] + sums[5]<<1) + sums[0] + sums[7] + 8)>>4;		dst[4]= ((dst[4]<<2) + (sums[3] + sums[6]<<1) + sums[1] + sums[8] + 8)>>4;		dst[5]= ((dst[5]<<2) + (last + sums[7] + sums[4]<<1) + sums[2] + 8)>>4;		dst[6]= ((last + dst[6]<<2) + (dst[7] + sums[5]<<1) + sums[3] + 8)>>4;		dst[7]= ((sums[8]<<2) + (last + sums[6]<<1) + sums[4] + 8)>>4;		dst+= stride;		temp+= TEMP_STRIDE;	}#endif}