From: Fiona Glaser Date: Mon, 30 Mar 2009 01:27:32 +0000 (-0700) Subject: Shave one instruction off CABAC encode_decision X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=291b6ab1cb56c15a0169312b1c7ee8be7a1b594b;p=libx264 Shave one instruction off CABAC encode_decision range_lps>>6 ranges from 4-7, so (range_lps>>6)-4 == (range_lps>>6) & 3 --- diff --git a/common/cabac.c b/common/cabac.c index 7a2e94dd..65d143f5 100644 --- a/common/cabac.c +++ b/common/cabac.c @@ -861,7 +861,7 @@ static inline void x264_cabac_encode_renorm( x264_cabac_t *cb ) void x264_cabac_encode_decision_c( x264_cabac_t *cb, int i_ctx, int b ) { int i_state = cb->state[i_ctx]; - int i_range_lps = x264_cabac_range_lps[i_state][(cb->i_range>>6)&0x03]; + int i_range_lps = x264_cabac_range_lps[i_state][(cb->i_range>>6)-4]; cb->i_range -= i_range_lps; if( b != (i_state >> 6) ) { diff --git a/common/x86/cabac-a.asm b/common/x86/cabac-a.asm index b5840fc2..32d4a741 100644 --- a/common/x86/cabac-a.asm +++ b/common/x86/cabac-a.asm @@ -76,8 +76,7 @@ cglobal x264_cabac_encode_decision_asm, 0,7 movzx t3d, byte [t0+cb.state+t1] mov t4d, t5d shr t5d, 6 - and t5d, 3 - LOAD_GLOBAL t5d, x264_cabac_range_lps, t5, t3*4 + LOAD_GLOBAL t5d, x264_cabac_range_lps-4, t5, t3*4 sub t4d, t5d mov t6d, t3d shr t6d, 6