]> git.sesse.net Git - ffmpeg/commitdiff
x86: cabac: fix register constraints for 32-bit mode
authorMans Rullgard <mans@mansr.com>
Mon, 20 Jun 2011 22:10:26 +0000 (23:10 +0100)
committerMans Rullgard <mans@mansr.com>
Mon, 20 Jun 2011 22:36:40 +0000 (23:36 +0100)
Some operands need to be accessed in byte mode, which restricts the
available registers in 32-bit mode.  Using the 'q' constraint selects
a suitable register.

Signed-off-by: Mans Rullgard <mans@mansr.com>
libavcodec/x86/cabac.h
libavcodec/x86/h264_i386.h

index 3e5a2217ae45616f77a78f60d1596a1ccf7a3bab..52bea9c53d861e57e3755db83823f7bd579834c8 100644 (file)
@@ -98,7 +98,7 @@ static av_always_inline int get_cabac_inline_x86(CABACContext *c,
         "movl %2, %a6(%5)               \n\t"
         "movl %1, %a7(%5)               \n\t"
 
-        :"=&r"(bit), "=&r"(low), "=&r"(range), "=&r"(tmp)
+        :"=&r"(bit), "=&r"(low), "=&r"(range), "=&q"(tmp)
         :"r"(state), "r"(c),
          "i"(offsetof(CABACContext, range)), "i"(offsetof(CABACContext, low)),
          "i"(offsetof(CABACContext, bytestream))
index af3addd848c9713b43be1e69c7d2dd27d96925d4..9c86210371470db8a7bc7c1f85bcb883d2f1d6f4 100644 (file)
@@ -89,7 +89,7 @@ static int decode_significance_x86(CABACContext *c, int max_coeff,
 
         "movl %5, %a11(%6)                      \n\t"
         "movl %3, %a12(%6)                      \n\t"
-        :"=&r"(coeff_count), "+r"(significant_coeff_ctx_base), "+m"(index),
+        :"=&q"(coeff_count), "+r"(significant_coeff_ctx_base), "+m"(index),
          "=&r"(low), "=&r"(bit), "=&r"(range)
         :"r"(c), "m"(minusstart), "m"(end), "m"(minusindex), "m"(last_off),
          "i"(offsetof(CABACContext, range)), "i"(offsetof(CABACContext, low)),
@@ -157,7 +157,7 @@ static int decode_significance_8x8_x86(CABACContext *c,
 
         "movl %5, %a12(%7)                      \n\t"
         "movl %3, %a13(%7)                      \n\t"
-        :"=&r"(coeff_count),"+m"(last), "+m"(index), "=&r"(low), "=&r"(bit),
+        :"=&q"(coeff_count),"+m"(last), "+m"(index), "=&r"(low), "=&r"(bit),
          "=&r"(range), "=&r"(state)
         :"r"(c), "m"(minusindex), "m"(significant_coeff_ctx_base), "m"(sig_off), "m"(last_off),
          "i"(offsetof(CABACContext, range)), "i"(offsetof(CABACContext, low)),