diff options
author | Mans Rullgard <mans@mansr.com> | 2011-07-28 20:21:33 +0100 |
---|---|---|
committer | Mans Rullgard <mans@mansr.com> | 2011-07-28 22:25:21 +0100 |
commit | f5f004bc5a40e5a5de62bd5e2818ab5de7f6bf21 (patch) | |
tree | bcd3206dee29abd1c26103fccbecee6bdf765bbc /libavcodec/x86/cabac.h | |
parent | 6c3257654801d525aa61e6fb46022a2a3b12c074 (diff) | |
download | ffmpeg-f5f004bc5a40e5a5de62bd5e2818ab5de7f6bf21.tar.gz |
x86: cabac: don't load/store context values in asm
Inspection of compiled code shows gcc handles these fine on its own.
Benchmarking also shows no measurable speed difference.
Removing the remaining cases in get_cabac_bypass_sign_x86() does
cause more substantial changes to the compiled code with uncertain
impact.
Signed-off-by: Mans Rullgard <mans@mansr.com>
Diffstat (limited to 'libavcodec/x86/cabac.h')
-rw-r--r-- | libavcodec/x86/cabac.h | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/libavcodec/x86/cabac.h b/libavcodec/x86/cabac.h index 1ad74ff3e0..ae3f4b6e9e 100644 --- a/libavcodec/x86/cabac.h +++ b/libavcodec/x86/cabac.h @@ -87,19 +87,13 @@ static av_always_inline int get_cabac_inline_x86(CABACContext *c, uint8_t *const state) { - int bit, low, range, tmp; + int bit, tmp; __asm__ volatile( - "movl %a6(%5), %2 \n\t" - "movl %a7(%5), %1 \n\t" BRANCHLESS_GET_CABAC("%0", "%5", "(%4)", "%1", "%w1", "%2", - "%3", "%b3", "%a8") - "movl %2, %a6(%5) \n\t" - "movl %1, %a7(%5) \n\t" - - :"=&r"(bit), "=&r"(low), "=&r"(range), "=&q"(tmp) + "%3", "%b3", "%a6") + :"=&r"(bit), "+&r"(c->low), "+&r"(c->range), "=&q"(tmp) :"r"(state), "r"(c), - "i"(offsetof(CABACContext, range)), "i"(offsetof(CABACContext, low)), "i"(offsetof(CABACContext, bytestream)) : "%"REG_c, "memory" ); |