long fp_mul_comba(unsigned long *tmpx, unsigned long *tmpy) { unsigned long c0, c1, c2; #if 0 asm( "movl %6,%%eax \n\t" "mull %7 \n\t" "addl %%eax,%0 \n\t" "adcl %%edx,%1 \n\t" "adcl $0,%2 \n\t" : "=r"(c0), "=r"(c1), "=r"(c2) : "0"(c0), "1"(c1), "2"(c2), "m"(*tmpx++), "m"(*tmpy--) : "%eax","%edx","%cc" ); #else asm( "foo_start:\n\t" "movl %6,%%eax \n\t" "mull %7 \n\t" "addl %%eax,%0 \n\t" "adcl %%edx,%1 \n\t" "adcl $0,%2 \n\t" "foo_end:\n\t" : "=r"(c0), "=r"(c1), "=r"(c2) : "0"(c0), "1"(c1), "2"(c2), "g"(*tmpx++), "g"(*tmpy--) : "%eax","%edx","%cc" ); return c0 + c1 + c2; /* asm( "foo:\n\t" "movl %6,%%eax \n\t" "mull %7 \n\t" "addl %%eax,%0 \n\t" "adcl %%edx,%1 \n\t" "adcl $0,%2 \n\t" : "=r"(c0), "=r"(c1), "=r"(c2) : "0"(c0), "1"(c1), "2"(c2), "eax"(*tmpx++), "m"(*tmpy--) : "%edx", "%cc"); */ #endif }