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

Originally committed as revision 6618 to svn://svn.ffmpeg.org/ffmpeg/trunk
pull/126/head
Michael Niedermayer 18 years ago
parent ee56f2c020
commit 9ed92c65f1
  1. 3
      libavcodec/cabac.h

@ -441,12 +441,11 @@ static int get_cabac(CABACContext *c, uint8_t * const state){
"2: \n\t" "2: \n\t"
"movl %%edx, "RANGE "(%2) \n\t" "movl %%edx, "RANGE "(%2) \n\t"
"movl %%ebx, "LOW "(%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 :"=&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) :"r"(state), "r"(c)
: "%ecx", "%ebx", "%edx", "%esi" : "%ecx", "%ebx", "%edx", "%esi"
); );
bit&=1;
#else #else
asm volatile( asm volatile(
"movzbl (%1), %%eax \n\t" "movzbl (%1), %%eax \n\t"

Loading…
Cancel
Save