coding: add branch prediction to GetVarint32Ptr
coding: add branch prediction to GetVarint32Ptr

Looking at a profile on a real workload, I see a significant percentage of CPU
being used by these branches in GetVarint32, which are getting predicted
incorrectly:

  0.02 |       mov    (%rbx,%rax,4),%ebx
  1.48 |       add    %rcx,%rbx
  0.29 | 34:   cmp    %rbx,%rdi
       |     ↓ jae    42
  0.27 |       movzbl (%rdi),%esi
 46.85 |       test   $0x80,%sil
       |     ↓ je     58
       | 42:   lea    -0x1c(%rbp),%rdx
       |       mov    %rbx,%rsi
       |     → callq  kudu::GetVarint32PtrFallback(unsigned char const*, unsigned char const*, unsigned int*)

Processors typically predict that downward branches are not followed. But, both
of the branches above are downward. So, it's likely they'll predict wrong in
the usual case where varints are for small quantities.

Change-Id: I2e26efc6ee8b44184989569c569110a7e50cecd2
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/7077
Tested-by: jenkins
Reviewed-by: Adar Dembo <866ca730bfc7f544e3ebce604ceeba4879f23df0@cloudera.com>

EvilMcJerkface/kudu,EvilMcJerkface/kudu,cloudera/kudu,InspurUSA/kudu,andrwng/kudu,andrwng/kudu,EvilMcJerkface/kudu,helifu/kudu,andrwng/kudu,EvilMcJerkface/kudu,andrwng/kudu,helifu/kudu,helifu/kudu,helifu/kudu,InspurUSA/kudu,EvilMcJerkface/kudu,andrwng/kudu,cloudera/kudu,InspurUSA/kudu,InspurUSA/kudu,cloudera/kudu,helifu/kudu,EvilMcJerkface/kudu,InspurUSA/kudu,InspurUSA/kudu,andrwng/kudu,cloudera/kudu,andrwng/kudu,InspurUSA/kudu,helifu/kudu,EvilMcJerkface/kudu,andrwng/kudu,cloudera/kudu,helifu/kudu,EvilMcJerkface/kudu,andrwng/kudu,cloudera/kudu,cloudera/kudu,cloudera/kudu,InspurUSA/kudu,EvilMcJerkface/kudu,cloudera/kudu,InspurUSA/kudu,helifu/kudu,helifu/kudu