summaryrefslogtreecommitdiff
path: root/libavcodec/x86/cabac.h
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2011-07-28 20:21:33 +0100
committerMans Rullgard <mans@mansr.com>2011-07-28 22:25:21 +0100
commitf5f004bc5a40e5a5de62bd5e2818ab5de7f6bf21 (patch)
treebcd3206dee29abd1c26103fccbecee6bdf765bbc /libavcodec/x86/cabac.h
parent6c3257654801d525aa61e6fb46022a2a3b12c074 (diff)
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.h12
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"
);