diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-01-03 16:31:57 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-01-06 01:46:51 +0100 |
commit | c4f237a98175438e76da64c51cc6fe613f8d767e (patch) | |
tree | 127b2f700030647a06a87d34c6eae14a53e26616 /libavcodec/x86/h264_i386.h | |
parent | e9a591d1f01a472dd18058b830207191c701c40f (diff) |
Revert commit 599b4c6efddaed33b1667c386b34b07729ba732b
Author: Mans Rullgard <mans@mansr.com>
Date: Sun Dec 11 21:41:59 2011 +0000
x86: cabac: replace explicit memory references with "m" operands
This replaces the explicit offset(reg) memory references with
"m" operands for the same locations. As a result, one fewer
register operand is needed for these inline asm statements.
This change appears to have broken compilation on darwin, and subsequent
fixes by martin (which did not fix compilation) removed the register
advantage, thus this change seems not a good idea to keep.
See: http://fate.ffmpeg.org/log.cgi?time=20120103122446&log=compile&slot=i386-darwin-llvm-gcc-4.2.1
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/x86/h264_i386.h')
-rw-r--r-- | libavcodec/x86/h264_i386.h | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/libavcodec/x86/h264_i386.h b/libavcodec/x86/h264_i386.h index 510f726ba1..84da48d2e2 100644 --- a/libavcodec/x86/h264_i386.h +++ b/libavcodec/x86/h264_i386.h @@ -48,15 +48,15 @@ static int decode_significance_x86(CABACContext *c, int max_coeff, __asm__ volatile( "2: \n\t" - BRANCHLESS_GET_CABAC("%4", "(%1)", "%3", - "%w3", "%5", "%k0", "%b0", "%6") + BRANCHLESS_GET_CABAC("%4", "%6", "(%1)", "%3", + "%w3", "%5", "%k0", "%b0", "%a11") "test $1, %4 \n\t" " jz 3f \n\t" "add %10, %1 \n\t" - BRANCHLESS_GET_CABAC("%4", "(%1)", "%3", - "%w3", "%5", "%k0", "%b0", "%6") + BRANCHLESS_GET_CABAC("%4", "%6", "(%1)", "%3", + "%w3", "%5", "%k0", "%b0", "%a11") "sub %10, %1 \n\t" "mov %2, %0 \n\t" @@ -81,9 +81,9 @@ static int decode_significance_x86(CABACContext *c, int max_coeff, "add %9, %k0 \n\t" "shr $2, %k0 \n\t" :"=&q"(coeff_count), "+r"(significant_coeff_ctx_base), "+m"(index), - "+&r"(c->low), "=&r"(bit), "+&r"(c->range), - "+m"(c->bytestream) - :"m"(minusstart), "m"(end), "m"(minusindex), "m"(last_off) + "+&r"(c->low), "=&r"(bit), "+&r"(c->range) + :"r"(c), "m"(minusstart), "m"(end), "m"(minusindex), "m"(last_off), + "i"(offsetof(CABACContext, bytestream)) : "%"REG_c, "memory" ); return coeff_count; @@ -105,8 +105,8 @@ static int decode_significance_8x8_x86(CABACContext *c, "movzbl (%0, %6), %k6 \n\t" "add %9, %6 \n\t" - BRANCHLESS_GET_CABAC("%4", "(%6)", "%3", - "%w3", "%5", "%k0", "%b0", "%7") + BRANCHLESS_GET_CABAC("%4", "%7", "(%6)", "%3", + "%w3", "%5", "%k0", "%b0", "%a12") "mov %1, %k6 \n\t" "test $1, %4 \n\t" @@ -115,8 +115,8 @@ static int decode_significance_8x8_x86(CABACContext *c, "movzbl "MANGLE(last_coeff_flag_offset_8x8)"(%k6), %k6\n\t" "add %11, %6 \n\t" - BRANCHLESS_GET_CABAC("%4", "(%6)", "%3", - "%w3", "%5", "%k0", "%b0", "%7") + BRANCHLESS_GET_CABAC("%4", "%7", "(%6)", "%3", + "%w3", "%5", "%k0", "%b0", "%a12") "mov %2, %0 \n\t" "mov %1, %k6 \n\t" @@ -138,8 +138,9 @@ static int decode_significance_8x8_x86(CABACContext *c, "addl %8, %k0 \n\t" "shr $2, %k0 \n\t" :"=&q"(coeff_count),"+m"(last), "+m"(index), "+&r"(c->low), "=&r"(bit), - "+&r"(c->range), "=&r"(state), "+m"(c->bytestream) - :"m"(minusindex), "m"(significant_coeff_ctx_base), "m"(sig_off), "m"(last_coeff_ctx_base) + "+&r"(c->range), "=&r"(state) + :"r"(c), "m"(minusindex), "m"(significant_coeff_ctx_base), "m"(sig_off), "m"(last_coeff_ctx_base), + "i"(offsetof(CABACContext, bytestream)) : "%"REG_c, "memory" ); return coeff_count; |