diff mbox

[ARM] Tune the max_cond_insns/branch_cost for Cortex-M7

Message ID 004801d02fe2$ebebfc10$c3c3f430$@arm.com
State New
Headers show

Commit Message

Hale Wang Jan. 14, 2015, 10:14 a.m. UTC
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.wang@arm.com>

	* config/arm/arm.c: Tune the max_cond_insns/branch_cost for
	Cortex-M7.

 					     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;

Comments

Ramana Radhakrishnan Jan. 14, 2015, 10:16 a.m. UTC | #1
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.wang@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
diff mbox

Patch

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,