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

Reply via email to