On 14/01/15 10:14, Hale Wang wrote:
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;




OK.

Ramana

Reply via email to