"addl $16, %0			\n\t" "cmpl $128, %0			\n\t"
"add $16, %0			\n\t" "cmp $128, %0			\n\t"
static void add_8x8basis_mmx(int16_t rem[64], int16_t basis[64], int scale){    int i=0;        if(ABS(scale) < 256){        scale<<= 16 + 1 - BASIS_SHIFT + RECON_SHIFT;        asm volatile(                "pcmpeqw %%mm6, %%mm6		\n\t" // -1w                "psrlw $15, %%mm6		\n\t" //  1w                "movd  %3, %%mm5		\n\t"                 "punpcklwd %%mm5, %%mm5		\n\t"                 "punpcklwd %%mm5, %%mm5		\n\t"                 "1:				\n\t"                "movq  (%1, %0), %%mm0		\n\t"                 "movq  8(%1, %0), %%mm1		\n\t"                "pmulhw %%mm5, %%mm0		\n\t"                "pmulhw %%mm5, %%mm1		\n\t"                "paddw %%mm6, %%mm0		\n\t"                 "paddw %%mm6, %%mm1		\n\t"                "psraw $1, %%mm0		\n\t"                "psraw $1, %%mm1		\n\t"                "paddw (%2, %0), %%mm0		\n\t"                "paddw 8(%2, %0), %%mm1		\n\t"                "movq %%mm0, (%2, %0)		\n\t"                "movq %%mm1, 8(%2, %0)		\n\t"                "addl $16, %0			\n\t"                "cmpl $128, %0			\n\t" //FIXME optimize & bench                " jb 1b				\n\t"                                : "+r" (i)                : "r"(basis), "r"(rem), "g"(scale)        );    }else{        for(i=0; i<8*8; i++){            rem[i] += (basis[i]*scale + (1<<(BASIS_SHIFT - RECON_SHIFT-1)))>>(BASIS_SHIFT - RECON_SHIFT);        }        }}