Ascalon has six integer ALUs and two vector pipes, each able to
execute one full-VLEN operation per cycle. Set scalar_units
and vector_units to match.
This was tested on SPEC CPU2017 x264_r, and it removes a few
autovectorized loops and improves performance by about 1%.
gcc/ChangeLog:
* config/riscv/riscv.cc (tt_ascalon_d8_tune_info): Set
autoprefetcher_model to AUTOPREFETCHER_OFF (default),
scalar_units to 6 and vector_units to 2.
---
gcc/config/riscv/riscv.cc | 3 +++
1 file changed, 3 insertions(+)
diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc
index 34e54b4eb81..110be616ade 100644
--- a/gcc/config/riscv/riscv.cc
+++ b/gcc/config/riscv/riscv.cc
@@ -842,6 +842,9 @@ static const struct riscv_tune_param
tt_ascalon_d8_tune_info = {
2, /* vec_reassoc_width. */
8, /* small_loop_unroll_ninsns. */
8, /* small_loop_unroll_factor. */
+ riscv_tune_param::AUTOPREFETCHER_OFF, /*
autoprefetcher_model. */
+ 6, /* scalar_units. */
+ 2, /* vector_units. */
};
/* Costs to use when optimizing for size. */
--
2.34.1