On 06/21/2016 09:50 AM, James Greenhalgh wrote:

Hi,

This patch clears up the cost model for noce_try_cmove_arith. We lose
the "??? FIXME: Magic number 5" comment, and gain a more realistic cost
model for if-converting memory accesses.

This is the patch that has the chance to cause the largest behavioural
changes for most targets - the current heuristic does not take in to
consideration the cost of a conditional move - once we add that the cost
of the converted sequence often looks higher than we allowed before.

I think that missing the cost of the conditional move from these sequences
is not a good idea, and that the cost model should rely on the target giving
back good information. A target that finds tests failing after this patch
should consider either reducing the cost of a conditional move sequence, or
increasing TARGET_MAX_NOCE_IFCVT_SEQ_COST.

As this ups the cost of if-convert dramatically, I've used the new
parameters to ensure that the tests in the testsuite continue to pass on
all targets.

Bootstrapped in series on aarch64 and x86-64.

OK?

Thanks,
James

---
gcc/

2016-06-21  James Greenhalgh  <james.greenha...@arm.com>

        * ifcvt.c (noce_try_cmove_arith): Check costs after constructing
        new sequence.

gcc/testsuite/

2016-06-21  James Greenhalgh  <james.greenha...@arm.com>

        * gcc.dg/ifcvt-2.c: Use parameter to guide if-conversion heuristics.
        * gcc.dg/ifcvt-3.c: Use parameter to guide if-conversion heuristics.
        * gcc.dg/pr68435.c: Use parameter to guide if-conversion heuristics.

LGTM as well. And yes, the cost of the cmove needs to be accounted for. Thanks for doing something sensible on those tests. I would support similar tweaks if we find others after installing this series.

jeff

Reply via email to