Message ID | CAF1bQ=Qne1ScX9q6w19nyVUGUEDKaFADY7gz46i3ox50LvLGfg@mail.gmail.com |
---|---|
State | New |
Headers | show |
Why this 'percent += 4' instead of taking the max? David On Fri, Oct 11, 2013 at 2:10 PM, Rong Xu <xur@google.com> wrote: > The trunk version of this patch is submitted for review. > > David: can we have this patch for google/gcc-4_8 branch first? > It tested with regression and google internal benchmarks. > > Thanks, > > -Rong
I want to differentiate the cases w/o and w/ builtin. If I take the max, they will be the same (91%). -Rong On Fri, Oct 11, 2013 at 2:26 PM, Xinliang David Li <davidxl@google.com> wrote: > Why this 'percent += 4' instead of taking the max? > > David > > On Fri, Oct 11, 2013 at 2:10 PM, Rong Xu <xur@google.com> wrote: >> The trunk version of this patch is submitted for review. >> >> David: can we have this patch for google/gcc-4_8 branch first? >> It tested with regression and google internal benchmarks. >> >> Thanks, >> >> -Rong
Should it be max + some_delta then? David On Fri, Oct 11, 2013 at 2:32 PM, Rong Xu <xur@google.com> wrote: > I want to differentiate the cases w/o and w/ builtin. > If I take the max, they will be the same (91%). > > -Rong > > On Fri, Oct 11, 2013 at 2:26 PM, Xinliang David Li <davidxl@google.com> wrote: >> Why this 'percent += 4' instead of taking the max? >> >> David >> >> On Fri, Oct 11, 2013 at 2:10 PM, Rong Xu <xur@google.com> wrote: >>> The trunk version of this patch is submitted for review. >>> >>> David: can we have this patch for google/gcc-4_8 branch first? >>> It tested with regression and google internal benchmarks. >>> >>> Thanks, >>> >>> -Rong
ok. that makes sense. On Fri, Oct 11, 2013 at 2:41 PM, Xinliang David Li <davidxl@google.com> wrote: > Should it be max + some_delta then? > > David > > On Fri, Oct 11, 2013 at 2:32 PM, Rong Xu <xur@google.com> wrote: >> I want to differentiate the cases w/o and w/ builtin. >> If I take the max, they will be the same (91%). >> >> -Rong >> >> On Fri, Oct 11, 2013 at 2:26 PM, Xinliang David Li <davidxl@google.com> wrote: >>> Why this 'percent += 4' instead of taking the max? >>> >>> David >>> >>> On Fri, Oct 11, 2013 at 2:10 PM, Rong Xu <xur@google.com> wrote: >>>> The trunk version of this patch is submitted for review. >>>> >>>> David: can we have this patch for google/gcc-4_8 branch first? >>>> It tested with regression and google internal benchmarks. >>>> >>>> Thanks, >>>> >>>> -Rong
Index: predict.c =================================================================== --- predict.c (revision 203462) +++ predict.c (working copy) @@ -1951,7 +1951,31 @@ tree_predict_by_opcode (basic_block bb) if (val) { int percent = PARAM_VALUE (BUILTIN_EXPECT_PROBABILITY); + void **preds; + /* This handles the cases like + while (__builtin_expect (exp, 1)) { ... } + W/o builtin_expect, the default HITRATE is 91%. + It does not make sense to estimate a lower probability of 90% + (current default for builtin_expect) with the annotation. + So here, we bump the probability by a small amount. */ + preds = pointer_map_contains (bb_predictions, bb); + if (preds) + { + struct edge_prediction *pred; + + for (pred = (struct edge_prediction *) *preds; pred; + pred = pred->ep_next) + { + if (pred->ep_predictor == PRED_LOOP_EXIT + && predictor_info [(int) PRED_LOOP_EXIT].hitrate + > HITRATE (percent)) + percent += 4; + if (percent > 100) + percent = 100; + } + } + gcc_assert (percent >= 0 && percent <= 100); if (integer_zerop (val)) percent = 100 - percent;