[FFmpeg-cvslog] x86: cabac: remove hardcoded esi in get_cabac_inline()

Mans Rullgard git at videolan.org
Tue Jun 21 03:45:22 CEST 2011


ffmpeg | branch: master | Mans Rullgard <mans at mansr.com> | Mon Jun 20 09:19:27 2011 +0100| [f743595e87aecc090cf6884fc681c0adf3a03cbb] | committer: Mans Rullgard

x86: cabac: remove hardcoded esi in get_cabac_inline()

Signed-off-by: Mans Rullgard <mans at mansr.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=f743595e87aecc090cf6884fc681c0adf3a03cbb
---

 libavcodec/cabac.h |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/libavcodec/cabac.h b/libavcodec/cabac.h
index f2b07d6..b967da5 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) */



More information about the ffmpeg-cvslog mailing list