Hi, This patch is tuned particularly for benchmark performance on cortex-m7. Tested with GCC regression test, no regressions. Is it ok for trunk?
BR, Hale Wang gcc/ChangeLog 2014-12-24 Hale Wang <hale.w...@arm.com> * config/arm/arm.c: Tune the max_cond_insns/branch_cost for Cortex-M7. diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 8193bf1..d52fcbd 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -287,6 +287,7 @@ static unsigned int arm_autovectorize_vector_sizes (void); static int arm_default_branch_cost (bool, bool); static int arm_cortex_a5_branch_cost (bool, bool); static int arm_cortex_m_branch_cost (bool, bool); +static int arm_cortex_m7_branch_cost (bool, bool); static bool arm_vectorize_vec_perm_const_ok (machine_mode vmode, const unsigned char *sel); @@ -1967,10 +1968,10 @@ const struct tune_params arm_cortex_m7_tune = &v7m_extra_costs, NULL, /* Sched adj cost. */ 0, /* Constant limit. */ - 0, /* Max cond insns. */ + 1, /* Max cond insns. */ ARM_PREFETCH_NOT_BENEFICIAL, true, /* Prefer constant pool. */ - arm_cortex_m_branch_cost, + arm_cortex_m7_branch_cost, false, /* Prefer LDRD/STRD. */ {true, true}, /* Prefer non short circuit. */ &arm_default_vec_cost, /* Vectorizer costs. */ @@ -12015,6 +12016,12 @@ arm_cortex_m_branch_cost (bool speed_p, bool predictable_p) : arm_default_branch_cost (speed_p, predictable_p); } +static int +arm_cortex_m7_branch_cost (bool speed_p, bool predictable_p) +{ + return speed_p ? 0 : arm_default_branch_cost (speed_p, predictable_p); +} + static bool fp_consts_inited = false; static REAL_VALUE_TYPE value_fp0;
cortex-m7-branch-cost.patch-3
Description: Binary data