On Fri, Dec 18, 2015 at 05:09:14PM +0300, Yuri Rumyantsev wrote:
> James,
> 
> We implemented slightly different patch - we restrict number of SET
> instructions for if-conversion through new parameter and add check in
> bb_ok_for_noce_convert_multiple_sets:
> 
> +  unsigned limit = MIN (ii->branch_cost,
> + (unsigned) PARAM_VALUE (PARAM_MAX_IF_CONV_SET_INSNS));
> ..
> -  if (count > ii->branch_cost)
> -    return FALSE;
> +  if (count > limit)
> +    return false;
> 
> Now we are testing it for different suites/chips but I saw that real
> benchmark for which we saw huge performance degradation gets speed-ip
> on 65% for -march=slm -m32.

Yes, that will work too. I put it where I did to give back-ends the choice
to turn off all if-conversion by setting the param to zero. Your fix is more
targeted to fixing just the one regression. I don't have a preference as
to which direction we take this. I saw a similar performance boost for your
testcase on my development box with my patch - so at least we now have two
candidate patches to fix the performance regression.

Thanks,
James

> 
> 2015-12-18 16:52 GMT+03:00 James Greenhalgh <james.greenha...@arm.com>:
> >
> > Hi,
> >
> > PR68920 talks about undesirable if-conversion in the x86 back-end.
> > The if-conversion cost model simply uses BRANCH_COST (I want to revisit
> > this for GCC 7), but BRANCH_COST is overloaded in the compiler and reducing
> > it causes other optimisations to be disabled.
> >
> > Consequently, to fix the PR we want something new that the target can set
> > to override BRANCH_COST and reduce the number of instructions that get
> > if-converted. This patch adds this mechanism through a param.
> >
> > Bootstrapped on x86_64-none-linux-gnu and aarch64-none-linux-gnu.
> >
> > OK for trunk?
> >
> > Thanks,
> > James
> >
> > ---
> > gcc/
> >
> > 2015-12-17  James Greenhalgh  <james.greenha...@arm.com>
> >
> >         PR rtl-optimization/68920
> >         * params.def (PARAM_MAX_RTL_IF_CONVERSION_INSNS): New.
> >         * ifcvt.c (noce_find_if_block): Limit by new param.
> >         * doc/invoke.texi (max-rtl-if-conversion-insns): Document it.
> >
> > gcc/testsuite/
> >
> > 2015-12-17  James Greenhalgh  <james.greenha...@arm.com>
> >
> >         PR rtl-optimization/68920
> >         * gcc.deg/ifcvt-5.c: New.
> >
> 

Reply via email to