Commit 59f3e76b authored by michael's avatar michael

replace a few and/sub/... by cmov

this is faster on P3, should be faster on AMD, and should be slower on P4
its disabled by default (benchmarks welcome so we know when to enable it)


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@6615 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent e68b6111
......@@ -459,6 +459,14 @@ static int get_cabac(CABACContext *c, uint8_t * const state){
"movl "LOW "(%2), %%ebx \n\t"
//eax:state ebx:low, edx:range, esi:RangeLPS
"subl %%esi, %%edx \n\t"
#ifdef CMOV_IS_FAST //FIXME actually define this somewhere
"cmpl %%ebx, %%edx \n\t"
"cmova %%edx, %%esi \n\t"
"sbbl %%ecx, %%ecx \n\t"
"andl %%ecx, %%edx \n\t"
"subl %%edx, %%ebx \n\t"
"xorl %%ecx, %%eax \n\t"
#else
"movl %%edx, %%ecx \n\t"
"subl %%ebx, %%edx \n\t"
"sarl $31, %%edx \n\t" //lps_mask
......@@ -467,9 +475,10 @@ static int get_cabac(CABACContext *c, uint8_t * const state){
"addl %%ecx, %%esi \n\t" //new range
"andl %%edx, %%ecx \n\t"
"subl %%ecx, %%ebx \n\t"
"xorl %%edx, %%eax \n\t"
#endif
//eax:state ebx:low edx:mask esi:range
"xorl %%edx, %%eax \n\t"
"movzbl "MPS_STATE"(%2, %%eax), %%ecx \n\t"
"movb %%cl, (%1) \n\t"
......
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