1static int Sub(int a, int b) { 2 return b -a; 3} 4 5static unsigned Select(unsigned a, unsigned b, unsigned c) { 6 const int pa_minus_pb = 7 Sub((a >> 8) & 0xff, (b >> 8) & 0xff) + 8 Sub((a >> 0) & 0xff, (b >> 0) & 0xff); 9 return (pa_minus_pb <= 0) ? a : b; 10} 11 12__attribute__((noinline)) unsigned Predictor(unsigned left, const unsigned* const top) { 13 const unsigned pred = Select(top[1], left, top[0]); 14 return pred; 15} 16 17int main(void) { 18 const unsigned top[2] = {0xff7a7a7a, 0xff7a7a7a}; 19 const unsigned left = 0xff7b7b7b; 20 const unsigned pred = Predictor(left, top /*+ 1*/); 21 if (pred == left) 22 return 0; 23 return 1; 24} 25 26 27 28