On Wed, Mar 18, 2015 at 5:06 PM, Kyrill Tkachov <kyrylo.tkachov@arm.com> wrote:
On 17/03/15 19:11, Jeff Law wrote:
On 03/16/2015 04:12 AM, Kyrill Tkachov wrote:
Hi all,
Eyeballing the mult_by_coeff_cost function I think it has a typo/bug.
It's supposed to return the cost of multiplying by a constant 'coeff'.
It calculates that by taking the cost of a MULT rtx by that constant
and comparing it to the cost of synthesizing that multiplication, and
returning
the cheapest. However, in the MULT rtx cost calculations it creates
a MULT rtx of two REGs rather than the a REG and the GEN_INT of coeff as
I would
expect. This patches fixes that in the obvious way.
Tested aarch64-none-elf and bootstrapped on x86_64-linux-gnu.
I'm guessing this is stage 1 material at this point?
Thanks,
Kyrill
2015-03-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* expmed.c (mult_by_coeff_cost): Pass CONT_INT rtx to MULT cost
calculation rather than fake_reg.
I'd think stage1, unless you can point to a bug, particularly a
regression.
No regression that I know of. I'll queue it up for stage 1 if it's ok
code-wise.
This function just estimate the max_cost roughly, since it is only
used by Tree passes. It shouldn't have much impact on generated code.
Maybe some targets doesn't have proper cost function for reg * const
rtl expression, also most of calls are in IVOPT, so it would be better
if you run some benchmark to make sure there is no surprise.