From e75bc10e68f2c154eea18b87486e9da5cad0efaa Mon Sep 17 00:00:00 2001 From: Luis Machado Date: Wed, 8 Aug 2018 07:54:14 +0000 Subject: [PATCH] [AArch64, Falkor] Switch to using Falkor-specific vector costs. 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 * 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 | 5 +++++ gcc/config/aarch64/aarch64.c | 22 +++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0f6e466fd98..a774ead5d94 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2018-08-08 Luis Machado + * 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) : Set to 3. diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 1c470cb3d4f..1e8d8104c06 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -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 */ -- 2.30.2