Commit b99f3cab authored by Michael Niedermayer's avatar Michael Niedermayer

write cabac low and range variables as early as possible to prevent stalls...

write cabac low and range variables as early as possible to prevent stalls from reading them before they where written, the P4 is said to disslike that alot, on P3 its 2% faster (START/STOP_TIMER over decode_residual)

Originally committed as revision 6657 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent d17faef0
...@@ -478,8 +478,10 @@ static int get_cabac(CABACContext *c, uint8_t * const state){ ...@@ -478,8 +478,10 @@ static int get_cabac(CABACContext *c, uint8_t * const state){
"shr $19, %%esi \n\t" "shr $19, %%esi \n\t"
"movzbl " MANGLE(ff_h264_norm_shift) "(%%esi), %%ecx \n\t" "movzbl " MANGLE(ff_h264_norm_shift) "(%%esi), %%ecx \n\t"
"shll %%cl, %%ebx \n\t"
"shll %%cl, %%edx \n\t" "shll %%cl, %%edx \n\t"
"movl %%edx, "RANGE "(%2) \n\t"
"shll %%cl, %%ebx \n\t"
"movl %%ebx, "LOW "(%2) \n\t"
"test %%bx, %%bx \n\t" "test %%bx, %%bx \n\t"
" jnz 1f \n\t" " jnz 1f \n\t"
...@@ -500,9 +502,8 @@ static int get_cabac(CABACContext *c, uint8_t * const state){ ...@@ -500,9 +502,8 @@ static int get_cabac(CABACContext *c, uint8_t * const state){
"shll %%cl , %%esi \n\t" "shll %%cl , %%esi \n\t"
"addl %%esi, %%ebx \n\t" "addl %%esi, %%ebx \n\t"
"1: \n\t"
"movl %%edx, "RANGE "(%2) \n\t"
"movl %%ebx, "LOW "(%2) \n\t" "movl %%ebx, "LOW "(%2) \n\t"
"1: \n\t"
:"=&a"(bit) :"=&a"(bit)
:"r"(state), "r"(c) :"r"(state), "r"(c)
: "%ecx", "%ebx", "%edx", "%esi" : "%ecx", "%ebx", "%edx", "%esi"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment