From 36d6b545a1a5309b3d9223b0db40ad2879817af5 Mon Sep 17 00:00:00 2001 From: Jason Garrett-Glaser Date: Wed, 30 Jun 2010 23:18:47 +0000 Subject: CMOV-ify vp56 arithcoder This incantation causes gcc 4.3 to generate cmov on x86, a vastly better option than a completely unpredictable branch. Hopefully this carries over to newer versions and other CPUs with conditionals. ~5 cycles saved per call on a Core i7. Originally committed as revision 23921 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/vp56.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'libavcodec/vp56.h') diff --git a/libavcodec/vp56.h b/libavcodec/vp56.h index af1a65db5c..6a2e29f898 100644 --- a/libavcodec/vp56.h +++ b/libavcodec/vp56.h @@ -199,12 +199,8 @@ static inline int vp56_rac_get_prob(VP56RangeCoder *c, uint8_t prob) int bit = c->code_word >= low_shift; int shift; - if (bit) { - c->high -= low; - c->code_word -= low_shift; - } else { - c->high = low; - } + c->high = bit ? c->high - low : low; + c->code_word = bit ? c->code_word - low_shift : c->code_word; /* normalize */ shift = ff_h264_norm_shift[c->high] - 1; -- cgit v1.2.3