# HG changeset patch # User michael # Date 1160463411 0 # Node ID af16271634c2cfffbe5f972dc3fd2661f57ccf30 # Parent 9854f686ba79d9b01fe682991fa7843a7041814f moving another bit&1 out, this is as fast as with it in there, but it makes more sense with it outside of the loop diff -r 9854f686ba79 -r af16271634c2 cabac.h --- a/cabac.h Tue Oct 10 01:17:39 2006 +0000 +++ b/cabac.h Tue Oct 10 06:56:51 2006 +0000 @@ -441,12 +441,11 @@ "2: \n\t" "movl %%edx, "RANGE "(%2) \n\t" "movl %%ebx, "LOW "(%2) \n\t" - "andl $1, %%eax \n\t" - :"=&a"(bit) //FIXME this is fragile gcc either runs out of registers or misscompiles it (for example if "+a"(bit) or "+m"(*state) is used :"r"(state), "r"(c) : "%ecx", "%ebx", "%edx", "%esi" ); + bit&=1; #else asm volatile( "movzbl (%1), %%eax \n\t"