moving another bit&1 out, this is as fast as with it in there, but it makes more...
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 10 Oct 2006 06:56:51 +0000 (06:56 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 10 Oct 2006 06:56:51 +0000 (06:56 +0000)
Originally committed as revision 6618 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/cabac.h

index 7bd0e417bea9f04dc58b5caf47d8245551cdfc0f..d1022a98f8ea4d2365328c74e363d6490b9098b8 100644 (file)
@@ -441,12 +441,11 @@ static int get_cabac(CABACContext *c, uint8_t * const state){
         "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"