"pavgb (%0,%1,2), %%mm3				\n\t" "pavgb (%%eax,%1,2), %%mm5			\n\t" "pavgb (%%eax), %%mm5				\n\t" "pavgb %%mm5, %%mm3				\n\t" "pavgb %%mm0, %%mm3				\n\t"
PAVGB((%0,%1,2), %%mm3) PAVGB((%%eax,%1,2), %%mm5) PAVGB((%%eax), %%mm5) PAVGB(%%mm5, %%mm3) PAVGB(%%mm0, %%mm3)
static inline void doVertLowPass(uint8_t *src, int stride, int QP){//	QP= 64;#ifdef HAVE_MMX2	asm volatile(	//"movv %0 %1 %2\n\t"		"pushl %0 \n\t"		"movq pQPb, %%mm0				\n\t"  // QP,..., QP//		"movq bFF  , %%mm0				\n\t"  // QP,..., QP		"movq (%0), %%mm6				\n\t"		"movq (%0, %1), %%mm5				\n\t"		"movq %%mm5, %%mm1				\n\t"		"movq %%mm6, %%mm2				\n\t"		"psubusb %%mm6, %%mm5				\n\t"		"psubusb %%mm1, %%mm2				\n\t"		"por %%mm5, %%mm2				\n\t" // ABS Diff of lines		"psubusb %%mm0, %%mm2				\n\t" // diff <= QP -> 0		"pcmpeqb b00, %%mm2				\n\t" // diff <= QP -> FF		"pand %%mm2, %%mm6				\n\t"		"pandn %%mm1, %%mm2				\n\t"		"por %%mm2, %%mm6				\n\t"// First Line to Filter		"movq (%0, %1, 8), %%mm5			\n\t"		"leal (%0, %1, 4), %%eax			\n\t"		"leal (%0, %1, 8), %%ebx			\n\t"		"subl %1, %%ebx					\n\t"		"addl %1, %0					\n\t" // %0 points to line 1 not 0		"movq (%0, %1, 8), %%mm7			\n\t"		"movq %%mm5, %%mm1				\n\t"		"movq %%mm7, %%mm2				\n\t"		"psubusb %%mm7, %%mm5				\n\t"		"psubusb %%mm1, %%mm2				\n\t"		"por %%mm5, %%mm2				\n\t" // ABS Diff of lines		"psubusb %%mm0, %%mm2				\n\t" // diff <= QP -> 0		"pcmpeqb b00, %%mm2				\n\t" // diff <= QP -> FF		"pand %%mm2, %%mm7				\n\t"		"pandn %%mm1, %%mm2				\n\t"		"por %%mm2, %%mm7				\n\t" // First Line to Filter		// 	1	2	3	4	5	6	7	8		//	%0	%0+%1	%0+2%1	eax	%0+4%1	eax+2%1	ebx	eax+4%1		// 6 4 2 2 1 1		// 6 4 4 2		// 6 8 2/*		"movq %%mm6, %%mm2				\n\t" //1		"movq %%mm6, %%mm3				\n\t" //1		"paddusb b02, %%mm3 				\n\t"		"psrlw $2, %%mm3				\n\t" //1	/4		"pand b3F, %%mm3				\n\t"		"psubb %%mm3, %%mm2				\n\t"		"movq (%0, %1), %%mm0				\n\t" //  1		"movq %%mm0, %%mm1				\n\t" //  1		"paddusb b02, %%mm0				\n\t"		"psrlw $2, %%mm0				\n\t" //  1	/4		"pand b3F, %%mm0				\n\t"		"paddusb %%mm2, %%mm0				\n\t" //3 1	/4*/		"movq (%0, %1), %%mm0				\n\t" //  1		"movq %%mm0, %%mm1				\n\t" //  1		"pavgb %%mm6, %%mm0				\n\t" //1 1	/2		"pavgb %%mm6, %%mm0				\n\t" //3 1	/4		"movq (%0, %1, 4), %%mm2			\n\t" //     1		"movq %%mm2, %%mm5				\n\t" //     1		"pavgb (%%eax), %%mm2				\n\t" //    11	/2		"pavgb (%0, %1, 2), %%mm2			\n\t" //   211	/4		"movq %%mm2, %%mm3				\n\t" //   211	/4		"movq (%0), %%mm4				\n\t" // 1		"pavgb %%mm4, %%mm3				\n\t" // 4 211	/8		"pavgb %%mm0, %%mm3				\n\t" //642211	/16		"movq %%mm3, (%0)				\n\t" // X		// mm1=2 mm2=3(211) mm4=1 mm5=5 mm6=0 mm7=9		"movq %%mm1, %%mm0				\n\t" //  1		"pavgb %%mm6, %%mm0				\n\t" //1 1	/2		"movq %%mm4, %%mm3				\n\t" // 1		"pavgb (%0,%1,2), %%mm3				\n\t" // 1 1	/2		"pavgb (%%eax,%1,2), %%mm5			\n\t" //     11	/2		"pavgb (%%eax), %%mm5				\n\t" //    211 /4		"pavgb %%mm5, %%mm3				\n\t" // 2 2211 /8		"pavgb %%mm0, %%mm3				\n\t" //4242211 /16		"movq %%mm3, (%0,%1)				\n\t" //  X		// mm1=2 mm2=3(211) mm4=1 mm5=4(211) mm6=0 mm7=9		"pavgb %%mm4, %%mm6				\n\t" //11	/2		"movq (%%ebx), %%mm0				\n\t" //       1		"pavgb (%%eax, %1, 2), %%mm0			\n\t" //      11/2		"movq %%mm0, %%mm3				\n\t" //      11/2		"pavgb %%mm1, %%mm0				\n\t" //  2   11/4		"pavgb %%mm6, %%mm0				\n\t" //222   11/8		"pavgb %%mm2, %%mm0				\n\t" //22242211/16		"movq (%0, %1, 2), %%mm2			\n\t" //   1		"movq %%mm0, (%0, %1, 2)			\n\t" //   X		// mm1=2 mm2=3 mm3=6(11) mm4=1 mm5=4(211) mm6=0(11) mm7=9		"movq (%%eax, %1, 4), %%mm0			\n\t" //        1		"pavgb (%%ebx), %%mm0				\n\t" //       11	/2		"pavgb %%mm0, %%mm6				\n\t" //11     11	/4		"pavgb %%mm1, %%mm4				\n\t" // 11		/2		"pavgb %%mm2, %%mm1				\n\t" //  11		/2		"pavgb %%mm1, %%mm6				\n\t" //1122   11	/8		"pavgb %%mm5, %%mm6				\n\t" //112242211	/16		"movq (%%eax), %%mm5				\n\t" //    1		"movq %%mm6, (%%eax)				\n\t" //    X		// mm0=7(11) mm1=2(11) mm2=3 mm3=6(11) mm4=1(11) mm5=4 mm7=9		"movq (%%eax, %1, 4), %%mm6			\n\t" //        1		"pavgb %%mm7, %%mm6				\n\t" //        11	/2		"pavgb %%mm4, %%mm6				\n\t" // 11     11	/4		"pavgb %%mm3, %%mm6				\n\t" // 11   2211	/8		"pavgb %%mm5, %%mm2				\n\t" //   11		/2		"movq (%0, %1, 4), %%mm4			\n\t" //     1		"pavgb %%mm4, %%mm2				\n\t" //   112		/4		"pavgb %%mm2, %%mm6				\n\t" // 112242211	/16		"movq %%mm6, (%0, %1, 4)			\n\t" //     X		// mm0=7(11) mm1=2(11) mm2=3(112) mm3=6(11) mm4=5 mm5=4 mm7=9		"pavgb %%mm7, %%mm1				\n\t" //  11     2	/4		"pavgb %%mm4, %%mm5				\n\t" //    11		/2		"pavgb %%mm5, %%mm0				\n\t" //    11 11	/4		"movq (%%eax, %1, 2), %%mm6			\n\t" //      1		"pavgb %%mm6, %%mm1				\n\t" //  11  4  2	/8		"pavgb %%mm0, %%mm1				\n\t" //  11224222	/16//		"pxor %%mm1, %%mm1 \n\t"		"movq %%mm1, (%%eax, %1, 2)			\n\t" //      X		// mm2=3(112) mm3=6(11) mm4=5 mm5=4(11) mm6=6 mm7=9		"pavgb (%%ebx), %%mm2				\n\t" //   112 4	/8		"movq (%%eax, %1, 4), %%mm0			\n\t" //        1		"pavgb %%mm0, %%mm6				\n\t" //      1 1	/2		"pavgb %%mm7, %%mm6				\n\t" //      1 12	/4		"pavgb %%mm2, %%mm6				\n\t" //   1122424	/4//		"pxor %%mm6, %%mm6 \n\t"		"movq %%mm6, (%%ebx)				\n\t" //       X		// mm0=8 mm3=6(11) mm4=5 mm5=4(11) mm7=9		"pavgb %%mm7, %%mm5				\n\t" //    11   2	/4		"pavgb %%mm7, %%mm5				\n\t" //    11   6	/8		"pavgb %%mm3, %%mm0				\n\t" //      112	/4		"pavgb %%mm0, %%mm5				\n\t" //    112246	/16//		"pxor %%mm5, %%mm5 \n\t"//		"movq pQPb, %%mm5 \n\t"		"movq %%mm5, (%%eax, %1, 4)			\n\t" //        X		"popl %0\n\t"		:		: "r" (src), "r" (stride)		: "%eax", "%ebx"	);#else	const int l1= stride;	const int l2= stride + l1;	const int l3= stride + l2;	const int l4= stride + l3;	const int l5= stride + l4;	const int l6= stride + l5;	const int l7= stride + l6;	const int l8= stride + l7;	const int l9= stride + l8;	for(int x=0; x<BLOCK_SIZE; x++)	{		const int first= ABS(src[0] - src[l1]) < QP ? src[0] : src[l1];		const int last= ABS(src[l8] - src[l9]) < QP ? src[l9] : src[l8];		int sums[9];		sums[0] = first + src[l1];		sums[1] = src[l1] + src[l2];		sums[2] = src[l2] + src[l3];		sums[3] = src[l3] + src[l4];		sums[4] = src[l4] + src[l5];		sums[5] = src[l5] + src[l6];		sums[6] = src[l6] + src[l7];		sums[7] = src[l7] + src[l8];		sums[8] = src[l8] + last;		src[l1]= ((sums[0]<<2) + ((first + sums[2])<<1) + sums[4] + 8)>>4;		src[l2]= ((src[l2]<<2) + (first + sums[0] + sums[3]<<1) + sums[5] + 8)>>4;		src[l3]= ((src[l3]<<2) + (first + sums[1] + sums[4]<<1) + sums[6] + 8)>>4;		src[l4]= ((src[l4]<<2) + (sums[2] + sums[5]<<1) + sums[0] + sums[7] + 8)>>4;		src[l5]= ((src[l5]<<2) + (sums[3] + sums[6]<<1) + sums[1] + sums[8] + 8)>>4;		src[l6]= ((src[l6]<<2) + (last + sums[7] + sums[4]<<1) + sums[2] + 8)>>4;		src[l7]= ((last + src[l7]<<2) + (src[l8] + sums[5]<<1) + sums[3] + 8)>>4;		src[l8]= ((sums[8]<<2) + (last + sums[6]<<1) + sums[4] + 8)>>4;		src++;	}#endif}