From f743595e87aecc090cf6884fc681c0adf3a03cbb Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Mon, 20 Jun 2011 09:19:27 +0100 Subject: x86: cabac: remove hardcoded esi in get_cabac_inline() Signed-off-by: Mans Rullgard --- libavcodec/cabac.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'libavcodec/cabac.h') diff --git a/libavcodec/cabac.h b/libavcodec/cabac.h index f2b07d6886..b967da5ab6 100644 --- a/libavcodec/cabac.h +++ b/libavcodec/cabac.h @@ -310,7 +310,7 @@ static inline void renorm_cabac_decoder_once(CABACContext *c){ static av_always_inline int get_cabac_inline(CABACContext *c, uint8_t * const state){ //FIXME gcc generates duplicate load/stores for c->low and c->range #if ARCH_X86 && HAVE_7REGS && !defined(BROKEN_RELOCATIONS) - int bit, low, tmp; + int bit, low, range, tmp; #if HAVE_FAST_CMOV #define BRANCHLESS_GET_CABAC_UPDATE(ret, cabac, statep, low, lowword, range, tmp)\ @@ -370,17 +370,17 @@ static av_always_inline int get_cabac_inline(CABACContext *c, uint8_t * const st "1: \n\t" __asm__ volatile( - "movl %a5(%4), %%esi \n\t" - "movl %a6(%4), %1 \n\t" - BRANCHLESS_GET_CABAC("%0", "%4", "(%3)", "%1", "%w1", "%%esi", "%2", "%b2", "%a7") - "movl %%esi, %a5(%4) \n\t" - "movl %1, %a6(%4) \n\t" + "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" - :"=&a"(bit), "=&r"(low), "=&r"(tmp) + :"=&a"(bit), "=&r"(low), "=&r"(range), "=&r"(tmp) :"r"(state), "r"(c), "i"(offsetof(CABACContext, range)), "i"(offsetof(CABACContext, low)), "i"(offsetof(CABACContext, bytestream)) - : "%"REG_c, "%esi", "memory" + : "%"REG_c, "memory" ); bit&=1; #else /* ARCH_X86 && HAVE_7REGS && !defined(BROKEN_RELOCATIONS) */ -- cgit v1.2.3