This patch adds support for modelling the varying costs of different addressing modes.
authorCharles Baylis <charles.baylis@linaro.org>
Thu, 23 Nov 2017 18:39:44 +0000 (18:39 +0000)
committerCharles Baylis <cbaylis@gcc.gnu.org>
Thu, 23 Nov 2017 18:39:44 +0000 (18:39 +0000)
commit612ea540d2e1fe5eae5213823a3cec0d3d864fb2
treead8fa0927c168943bc1a0b1511a9876f64081d04
parentc138eb5ce4f675fe9bdca939b6c43545d0f75691
This patch adds support for modelling the varying costs of different addressing modes.

This patch adds support for modelling the varying costs of
different addressing modes. The generic cost table treats
all addressing modes as having equal cost.

gcc/ChangeLog:

2017-11-23  Charles Baylis  <charles.baylis@linaro.org>

        * config/arm/arm-protos.h (enum arm_addr_mode_op): New.
        (struct addr_mode_cost_table): New.
        (struct tune_params): Add field addr_mode_costs.
        * config/arm/arm.c (generic_addr_mode_costs): New.
        (arm_slowmul_tune): Initialise addr_mode_costs field.
        (arm_fastmul_tune): Likewise.
        (arm_strongarm_tune): Likewise.
        (arm_xscale_tune): Likewise.
        (arm_9e_tune): Likewise.
        (arm_marvell_pj4_tune): Likewise.
        (arm_v6t2_tune): Likewise.
        (arm_cortex_tune): Likewise.
        (arm_cortex_a8_tune): Likewise.
        (arm_cortex_a7_tune): Likewise.
        (arm_cortex_a15_tune): Likewise.
        (arm_cortex_a35_tune): Likewise.
        (arm_cortex_a53_tune): Likewise.
        (arm_cortex_a57_tune): Likewise.
        (arm_exynosm1_tune): Likewise.
        (arm_xgene1_tune): Likewise.
        (arm_cortex_a5_tune): Likewise.
        (arm_cortex_a9_tune): Likewise.
        (arm_cortex_a12_tune): Likewise.
        (arm_cortex_a73_tune): Likewise.
        (arm_v7m_tune): Likewise.
        (arm_cortex_m7_tune): Likewise.
        (arm_v6m_tune): Likewise.
        (arm_fa726te_tune): Likewise.
        (arm_mem_costs): Use table lookup to calculate cost of addressing
        mode.

From-SVN: r255112
gcc/ChangeLog
gcc/config/arm/arm-protos.h
gcc/config/arm/arm.c