1 #include <stdlib.h>
2 
Sub3(int a,int b,int c)3 static /*__attribute__ ((noinline))*/ int Sub3(int a, int b, int c) {
4   const int pb = b - c;
5   const int pa = a - c;
6   return abs(pb) - abs(pa);
7 }
8 
Select(unsigned a,unsigned b,unsigned c)9 static unsigned Select(unsigned a, unsigned b, unsigned c) {
10   const int pa_minus_pb =
11       Sub3((a >> 24) & 0xff, (b >> 24) & 0xff, (c >> 24) & 0xff) +
12       Sub3((a >> 16) & 0xff, (b >> 16) & 0xff, (c >> 16) & 0xff) +
13       Sub3((a >>  8) & 0xff, (b >>  8) & 0xff, (c >>  8) & 0xff) +
14       Sub3((a >>  0) & 0xff, (b >>  0) & 0xff, (c >>  0) & 0xff);
15   return (pa_minus_pb <= 0) ? a : b;
16 }
17 
Predictor11(unsigned left,const unsigned * const top)18 static unsigned Predictor11(unsigned left, const unsigned* const top) {
19   const unsigned pred = Select(top[0], left, top[-1]);
20   return pred;
21 }
22 
23 typedef unsigned (*VP8LPredictorFunc)(unsigned left, const unsigned* const top);
24 
25 const VP8LPredictorFunc kPredictorsC[] = {
26   Predictor11,
27 };
28