summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2011-06-20 10:20:15 +0100
committerMans Rullgard <mans@mansr.com>2011-06-20 22:36:31 +0100
commit3a4edb76d697cfa341ee060647732e5c1400da3a (patch)
tree5ee9fb44fbbb8ca6ec23f484b39e700b577faef2
parentb92c1a6d2630e46b6e7c6ceca467e7f56fae5218 (diff)
x86: h264: remove hardcoded edi in decode_significance_8x8_x86()
Signed-off-by: Mans Rullgard <mans@mansr.com>
-rw-r--r--libavcodec/x86/h264_i386.h51
1 files changed, 26 insertions, 25 deletions
diff --git a/libavcodec/x86/h264_i386.h b/libavcodec/x86/h264_i386.h
index d38b18e5e5..1b55dd830f 100644
--- a/libavcodec/x86/h264_i386.h
+++ b/libavcodec/x86/h264_i386.h
@@ -107,34 +107,35 @@ static int decode_significance_8x8_x86(CABACContext *c,
int low;
int range;
x86_reg last=0;
+ x86_reg state;
__asm__ volatile(
- "movl %a11(%6), %5 \n\t"
- "movl %a12(%6), %3 \n\t"
+ "movl %a12(%7), %5 \n\t"
+ "movl %a13(%7), %3 \n\t"
- "mov %1, %%"REG_D" \n\t"
+ "mov %1, %6 \n\t"
"2: \n\t"
- "mov %9, %0 \n\t"
- "movzbl (%0, %%"REG_D"), %%edi \n\t"
- "add %8, %%"REG_D" \n\t"
+ "mov %10, %0 \n\t"
+ "movzbl (%0, %6), %k6 \n\t"
+ "add %9, %6 \n\t"
- BRANCHLESS_GET_CABAC("%4", "%6", "(%%"REG_D")", "%3",
- "%w3", "%5", "%k0", "%b0", "%a13")
+ BRANCHLESS_GET_CABAC("%4", "%7", "(%6)", "%3",
+ "%w3", "%5", "%k0", "%b0", "%a14")
- "mov %1, %%edi \n\t"
+ "mov %1, %k6 \n\t"
"test $1, %4 \n\t"
" jz 3f \n\t"
- "movzbl "MANGLE(last_coeff_flag_offset_8x8)"(%%edi), %%edi\n\t"
- "add %8, %%"REG_D" \n\t"
- "add %10, %%"REG_D" \n\t"
+ "movzbl "MANGLE(last_coeff_flag_offset_8x8)"(%k6), %k6\n\t"
+ "add %9, %6 \n\t"
+ "add %11, %6 \n\t"
- BRANCHLESS_GET_CABAC("%4", "%6", "(%%"REG_D")", "%3",
- "%w3", "%5", "%k0", "%b0", "%a13")
+ BRANCHLESS_GET_CABAC("%4", "%7", "(%6)", "%3",
+ "%w3", "%5", "%k0", "%b0", "%a14")
"mov %2, %0 \n\t"
- "mov %1, %%edi \n\t"
- "movl %%edi, (%0) \n\t"
+ "mov %1, %k6 \n\t"
+ "movl %k6, (%0) \n\t"
"test $1, %4 \n\t"
" jnz 4f \n\t"
@@ -143,24 +144,24 @@ static int decode_significance_8x8_x86(CABACContext *c,
"mov %0, %2 \n\t"
"3: \n\t"
- "addl $1, %%edi \n\t"
- "mov %%edi, %1 \n\t"
- "cmpl $63, %%edi \n\t"
+ "addl $1, %k6 \n\t"
+ "mov %k6, %1 \n\t"
+ "cmpl $63, %k6 \n\t"
" jb 2b \n\t"
"mov %2, %0 \n\t"
- "movl %%edi, (%0) \n\t"
+ "movl %k6, (%0) \n\t"
"4: \n\t"
- "addl %7, %k0 \n\t"
+ "addl %8, %k0 \n\t"
"shr $2, %k0 \n\t"
- "movl %5, %a11(%6) \n\t"
- "movl %3, %a12(%6) \n\t"
+ "movl %5, %a12(%7) \n\t"
+ "movl %3, %a13(%7) \n\t"
:"=&r"(coeff_count),"+m"(last), "+m"(index), "=&r"(low), "=&r"(bit),
- "=&r"(range)
+ "=&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)),
"i"(offsetof(CABACContext, bytestream))
- : "%"REG_c, "%"REG_D, "memory"
+ : "%"REG_c, "memory"
);
return coeff_count;
}