"movq	%4, %%mm0\n\t" "movq	8%4, %%mm1\n\t" "movq	16%4, %%mm2\n\t" "movq	24%4, %%mm3\n\t" "movq	32%4, %%mm4\n\t" "movq	40%4, %%mm5\n\t" "movq	48%4, %%mm6\n\t" "movq	56%4, %%mm7\n\t"
"movq	%3, %%mm0\n\t" "movq	8%3, %%mm1\n\t" "movq	16%3, %%mm2\n\t" "movq	24%3, %%mm3\n\t" "movq	32%3, %%mm4\n\t" "movq	40%3, %%mm5\n\t" "movq	48%3, %%mm6\n\t" "movq	56%3, %%mm7\n\t"
static void put_pixels_clamped_mmx(const DCTELEM *block, UINT8 *pixels, int line_size){    const DCTELEM *p;    UINT8 *pix;    int i;    /* read the pixels */    p = block;    pix = pixels;    for(i=0;i<2;i++) {	__asm __volatile(		"movq	%4, %%mm0\n\t"		"movq	8%4, %%mm1\n\t"		"movq	16%4, %%mm2\n\t"		"movq	24%4, %%mm3\n\t"		"movq	32%4, %%mm4\n\t"		"movq	40%4, %%mm5\n\t"		"movq	48%4, %%mm6\n\t"		"movq	56%4, %%mm7\n\t"		"packuswb %%mm1, %%mm0\n\t"		"packuswb %%mm3, %%mm2\n\t"		"packuswb %%mm5, %%mm4\n\t"		"packuswb %%mm7, %%mm6\n\t"		"movq	%%mm0, %0\n\t"		"movq	%%mm2, %1\n\t"		"movq	%%mm4, %2\n\t"		"movq	%%mm6, %3\n\t"		:"=m"(*pix), "=m"(*(pix+line_size))		,"=m"(*(pix+line_size*2)), "=m"(*(pix+line_size*3))		:"m"(*p)		:"memory");        pix += line_size*4;        p += 32;    }}