diff mbox

[PATCH/AARCH64] Add ThunderX vector cost model

Message ID CA+=Sn1nCFfKc4tNs9eMJoCBaQc2mBJJSukcTGqEK89mcmZ+nuA@mail.gmail.com
State New
Headers show

Commit Message

Andrew Pinski Aug. 3, 2016, 10:42 p.m. UTC
Hi,
  This patch adds to the thunderx model, the vector cost model.  I
benchmarked this on SPEC CPU INT 2006 and got a small speed up.  I
have a few more cost model patches that I am going upstream but they
are going to be split up.

OK?  Bootstrapped and tested on aarch64-linux-gnu with no regressions.

Thanks,
Andrew Pinski

ChangeLog:
* config/aarch64/aarch64.c (thunderx_vector_cost): New variable.
(thunderx_tunings): Use thunderx_vector_cost instead of generic_vector_cost.

Comments

Richard Earnshaw (lists) Aug. 4, 2016, 3:01 p.m. UTC | #1
On 03/08/16 23:42, Andrew Pinski wrote:
> Hi,
>   This patch adds to the thunderx model, the vector cost model.  I
> benchmarked this on SPEC CPU INT 2006 and got a small speed up.  I
> have a few more cost model patches that I am going upstream but they
> are going to be split up.
> 
> OK?  Bootstrapped and tested on aarch64-linux-gnu with no regressions.
> 

OK.

R.

> Thanks,
> Andrew Pinski
> 
> ChangeLog:
> * config/aarch64/aarch64.c (thunderx_vector_cost): New variable.
> (thunderx_tunings): Use thunderx_vector_cost instead of generic_vector_cost.
> 
> 
> addthunderxcost.diff.txt
> 
> 
> Index: config/aarch64/aarch64.c
> ===================================================================
> --- config/aarch64/aarch64.c	(revision 239098)
> +++ config/aarch64/aarch64.c	(working copy)
> @@ -376,6 +376,24 @@ static const struct cpu_vector_cost gene
>    1 /* cond_not_taken_branch_cost  */
>  };
>  
> +/* ThunderX costs for vector insn classes.  */
> +static const struct cpu_vector_cost thunderx_vector_cost =
> +{
> +  1, /* scalar_stmt_cost  */
> +  3, /* scalar_load_cost  */
> +  1, /* scalar_store_cost  */
> +  4, /* vec_stmt_cost  */
> +  4, /* vec_permute_cost  */
> +  2, /* vec_to_scalar_cost  */
> +  2, /* scalar_to_vec_cost  */
> +  3, /* vec_align_load_cost  */
> +  10, /* vec_unalign_load_cost  */
> +  10, /* vec_unalign_store_cost  */
> +  1, /* vec_store_cost  */
> +  3, /* cond_taken_branch_cost  */
> +  3 /* cond_not_taken_branch_cost  */
> +};
> +
>  /* Generic costs for vector insn classes.  */
>  static const struct cpu_vector_cost cortexa57_vector_cost =
>  {
> @@ -677,7 +695,7 @@ static const struct tune_params thunderx
>    &thunderx_extra_costs,
>    &generic_addrcost_table,
>    &thunderx_regmove_cost,
> -  &generic_vector_cost,
> +  &thunderx_vector_cost,
>    &generic_branch_cost,
>    &generic_approx_modes,
>    6, /* memmov_cost  */
>
diff mbox

Patch

Index: config/aarch64/aarch64.c
===================================================================
--- config/aarch64/aarch64.c	(revision 239098)
+++ config/aarch64/aarch64.c	(working copy)
@@ -376,6 +376,24 @@  static const struct cpu_vector_cost gene
   1 /* cond_not_taken_branch_cost  */
 };
 
+/* ThunderX costs for vector insn classes.  */
+static const struct cpu_vector_cost thunderx_vector_cost =
+{
+  1, /* scalar_stmt_cost  */
+  3, /* scalar_load_cost  */
+  1, /* scalar_store_cost  */
+  4, /* vec_stmt_cost  */
+  4, /* vec_permute_cost  */
+  2, /* vec_to_scalar_cost  */
+  2, /* scalar_to_vec_cost  */
+  3, /* vec_align_load_cost  */
+  10, /* vec_unalign_load_cost  */
+  10, /* vec_unalign_store_cost  */
+  1, /* vec_store_cost  */
+  3, /* cond_taken_branch_cost  */
+  3 /* cond_not_taken_branch_cost  */
+};
+
 /* Generic costs for vector insn classes.  */
 static const struct cpu_vector_cost cortexa57_vector_cost =
 {
@@ -677,7 +695,7 @@  static const struct tune_params thunderx
   &thunderx_extra_costs,
   &generic_addrcost_table,
   &thunderx_regmove_cost,
-  &generic_vector_cost,
+  &thunderx_vector_cost,
   &generic_branch_cost,
   &generic_approx_modes,
   6, /* memmov_cost  */