[AArch64, Falkor] Switch to using Falkor-specific vector costs.
authorLuis Machado <luis.machado@linaro.org>
Wed, 8 Aug 2018 07:54:14 +0000 (07:54 +0000)
committerSiddhesh Poyarekar <siddhesh@gcc.gnu.org>
Wed, 8 Aug 2018 07:54:14 +0000 (07:54 +0000)
The adjusted vector costs give Falkor a reasonable boost in performance for FP
benchmarks (both CPU2017 and CPU2006) and doesn't change INT benchmarks that
much. There are some regressions that will be investigated as follow on work.

Numbers from the CI run:

CPU2017:

(R) 605.mcf_s: -1.8%
(R) 620.omnetpp_s: -2%
    623.xalancbmk_s: 2%
    654.roms_s: 7%

(R) INT mean: -0.09%
    FP mean: 0.70%

CPU2006:

(R) 429.mc: -5%
(R) 471.omnetpp: -9.5% (potentially noise/fluctuations)
    483.xalancbmk: 6.02%
    410.bwaves: 5.03%
    433.milc: 2%
    434.zeusmp: 10.5%
(R) 436.cactusADM: -12.75%
    437.leslie3d: 5.94%
(R) 453.povray: -0.82%
    459.GemsFDTD: 16.87%
    465.tonto: 1%

(R) INT mean: -0.79%
    FP mean: 1.54%

gcc/ChangeLog:

2018-08-08  Luis Machado  <luis.machado@linaro.org>

* config/aarch64/aarch64.c (qdf24xx_vector_cost): New static global.
(qdf24xx_tunings): Set vector cost structure to qdf24xx_vector_cost.

From-SVN: r263389

gcc/ChangeLog
gcc/config/aarch64/aarch64.c

index 0f6e466fd98c7a2f82e667bd51a81833505871d4..a774ead5d94b7788a5ad6e920ddf6083e13e4017 100644 (file)
@@ -1,5 +1,10 @@
 2018-08-08  Luis Machado  <luis.machado@linaro.org>
 
+       * config/aarch64/aarch64.c (qdf24xx_vector_cost): New static
+       global.
+       (qdf24xx_tunings): Set vector cost structure to
+       qdf24xx_vector_cost.
+
        * config/aarch64/aarch64.c (qdf24xx_addrcost_table)
        <register_sextend>: Set to 3.
 
index 1c470cb3d4ff02ce4b70f5f0319ca8afa61c2261..1e8d8104c066a265120ab776f7ab5a959d3512b6 100644 (file)
@@ -430,6 +430,26 @@ static const struct cpu_vector_cost generic_vector_cost =
   1 /* cond_not_taken_branch_cost  */
 };
 
+/* QDF24XX costs for vector insn classes.  */
+static const struct cpu_vector_cost qdf24xx_vector_cost =
+{
+  1, /* scalar_int_stmt_cost  */
+  1, /* scalar_fp_stmt_cost  */
+  1, /* scalar_load_cost  */
+  1, /* scalar_store_cost  */
+  1, /* vec_int_stmt_cost  */
+  3, /* vec_fp_stmt_cost  */
+  2, /* vec_permute_cost  */
+  1, /* vec_to_scalar_cost  */
+  1, /* scalar_to_vec_cost  */
+  1, /* vec_align_load_cost  */
+  1, /* vec_unalign_load_cost  */
+  1, /* vec_unalign_store_cost  */
+  1, /* vec_store_cost  */
+  3, /* cond_taken_branch_cost  */
+  1 /* cond_not_taken_branch_cost  */
+};
+
 /* ThunderX costs for vector insn classes.  */
 static const struct cpu_vector_cost thunderx_vector_cost =
 {
@@ -890,7 +910,7 @@ static const struct tune_params qdf24xx_tunings =
   &qdf24xx_extra_costs,
   &qdf24xx_addrcost_table,
   &qdf24xx_regmove_cost,
-  &generic_vector_cost,
+  &qdf24xx_vector_cost,
   &generic_branch_cost,
   &generic_approx_modes,
   4, /* memmov_cost  */