diff options
author | Andre Vieira <andre.simoesdiasvieira@arm.com> | 2022-03-22 10:51:12 +0000 |
---|---|---|
committer | Andre Vieira <andre.simoesdiasvieira@arm.com> | 2022-03-22 12:01:59 +0000 |
commit | 930eb8b6c2cc1a95ce60eb0d15994e16ed0b8ca4 (patch) | |
tree | d978ae6169d2bb71efabf1031df3e91132ff6bc4 /gcc | |
parent | 27d8748df59fe6f0edc7289812cab572081d396e (diff) | |
download | gcc-930eb8b6c2cc1a95ce60eb0d15994e16ed0b8ca4.zip gcc-930eb8b6c2cc1a95ce60eb0d15994e16ed0b8ca4.tar.gz gcc-930eb8b6c2cc1a95ce60eb0d15994e16ed0b8ca4.tar.bz2 |
aarch64: Update regmove costs for neoverse-v1 and neoverse-512tvb tunings
This patch updates the register move tunings for
-mcpu/-mtune={neoverse-v1,neoverse-512tvb}.
gcc/ChangeLog:
2022-03-22 Tamar Christina <tamar.christina@arm.com>
Andre Vieira <andre.simoesdiasvieira@arm.com>
* config/aarch64/aarch64.cc (neoversev1_regmove_cost): New tuning
struct.
(neoversev1_tunings): Use neoversev1_regmove_cost and update store_int
cost.
(neoverse512tvb_tunings): Likewise.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/aarch64/aarch64.cc | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 9fbc4f3..903c842 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -670,6 +670,16 @@ static const struct cpu_regmove_cost neoversen2_regmove_cost = 2 /* FP2FP */ }; +static const struct cpu_regmove_cost neoversev1_regmove_cost = +{ + 1, /* GP2GP */ + /* Spilling to int<->fp instead of memory is recommended so set + realistic costs compared to memmov_cost. */ + 3, /* GP2FP */ + 2, /* FP2GP */ + 2 /* FP2FP */ +}; + static const struct cpu_regmove_cost demeter_regmove_cost = { 1, /* GP2GP */ @@ -2063,13 +2073,13 @@ static const struct tune_params neoversev1_tunings = { &cortexa76_extra_costs, &neoversev1_addrcost_table, - &generic_regmove_cost, + &neoversev1_regmove_cost, &neoversev1_vector_cost, &generic_branch_cost, &generic_approx_modes, SVE_256, /* sve_width */ { 4, /* load_int. */ - 1, /* store_int. */ + 2, /* store_int. */ 6, /* load_fp. */ 2, /* store_fp. */ 6, /* load_pred. */ @@ -2200,13 +2210,13 @@ static const struct tune_params neoverse512tvb_tunings = { &cortexa76_extra_costs, &neoversev1_addrcost_table, - &generic_regmove_cost, + &neoversev1_regmove_cost, &neoverse512tvb_vector_cost, &generic_branch_cost, &generic_approx_modes, SVE_128 | SVE_256, /* sve_width */ { 4, /* load_int. */ - 1, /* store_int. */ + 2, /* store_int. */ 6, /* load_fp. */ 2, /* store_fp. */ 6, /* load_pred. */ |