From 396334f56d14501c3ed14f3b8c3b2ad74eb5b1ed Mon Sep 17 00:00:00 2001 From: Christoph Muellner Date: Wed, 26 Sep 2018 15:53:44 +0200 Subject: [aarch64] Add CPU support for Ampere Computing's eMAG. This patch adds support for Ampere Computing's eMAG processor. Tested on aarch64 (no regressions seen). Signed-off-by: Christoph Muellner --- gcc/config/aarch64/aarch64-cores.def | 1 + gcc/config/aarch64/aarch64-tune.md | 2 +- gcc/config/aarch64/aarch64.c | 27 ++++++++++++++++++++++++++- gcc/doc/invoke.texi | 4 ++-- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/gcc/config/aarch64/aarch64-cores.def b/gcc/config/aarch64/aarch64-cores.def index 92b57cffb352..f4a6d6a5460e 100644 --- a/gcc/config/aarch64/aarch64-cores.def +++ b/gcc/config/aarch64/aarch64-cores.def @@ -71,6 +71,7 @@ AARCH64_CORE("thunderx2t99", thunderx2t99, thunderx2t99, 8_1A, AARCH64_FL_FOR /* APM ('P') cores. */ AARCH64_CORE("xgene1", xgene1, xgene1, 8A, AARCH64_FL_FOR_ARCH8, xgene1, 0x50, 0x000, -1) +AARCH64_CORE("emag", emag, xgene1, 8A, AARCH64_FL_FOR_ARCH8, emag, 0x50, 0x000, -1) /* V8.1 Architecture Processors. */ diff --git a/gcc/config/aarch64/aarch64-tune.md b/gcc/config/aarch64/aarch64-tune.md index c948846af7e9..11c09de54a18 100644 --- a/gcc/config/aarch64/aarch64-tune.md +++ b/gcc/config/aarch64/aarch64-tune.md @@ -1,5 +1,5 @@ ;; -*- buffer-read-only: t -*- ;; Generated automatically by gentune.sh from aarch64-cores.def (define_attr "tune" - "cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,exynosm1,falkor,qdf24xx,thunderx,thunderxt88p1,thunderxt88,thunderxt81,thunderxt83,thunderx2t99,xgene1,thunderx2t99p1,vulcan,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53" + "cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,exynosm1,falkor,qdf24xx,thunderx,thunderxt88p1,thunderxt88,thunderxt81,thunderxt83,thunderx2t99,xgene1,emag,thunderx2t99p1,vulcan,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53" (const (symbol_ref "((enum attr_tune) aarch64_tune)"))) diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 17f2833abbad..15cafbccc0af 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -759,6 +759,31 @@ static const struct tune_params xgene1_tunings = (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ }; +static const struct tune_params emag_tunings = +{ + &xgene1_extra_costs, + &xgene1_addrcost_table, + &xgene1_regmove_cost, + &xgene1_vector_cost, + &generic_branch_cost, + &xgene1_approx_modes, + 4, /* memmov_cost */ + 2, /* issue_rate */ + AARCH64_FUSE_NOTHING, /* fusible_ops */ + 8, /* function_align. */ + 8, /* jump_align. */ + 4, /* loop_align. */ + 2, /* int_reassoc_width. */ + 4, /* fp_reassoc_width. */ + 1, /* vec_reassoc_width. */ + 2, /* min_div_recip_mul_sf. */ + 2, /* min_div_recip_mul_df. */ + 17, /* max_case_values. */ + 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_OFF, /* autoprefetcher_model. */ + (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ +}; + static const struct tune_params qdf24xx_tunings = { &qdf24xx_extra_costs, @@ -6571,7 +6596,7 @@ aarch64_rtx_costs (rtx x, machine_mode mode, int outer ATTRIBUTE_UNUSED, return true; } - if (selected_cpu->ident == xgene1) + if (selected_cpu->ident == xgene1 || selected_cpu->ident == emag) return xgene1_rtx_costs(x, mode, code, outer, param, cost, speed); switch (code) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 6c0f99ca7f30..47e4149d9780 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -13988,7 +13988,7 @@ Specify the name of the target processor for which GCC should tune the performance of the code. Permissible values for this option are: @samp{generic}, @samp{cortex-a35}, @samp{cortex-a53}, @samp{cortex-a57}, @samp{cortex-a72}, @samp{cortex-a73}, @samp{exynos-m1}, @samp{falkor}, -@samp{qdf24xx}, @samp{xgene1}, @samp{vulcan}, @samp{thunderx}, +@samp{qdf24xx}, @samp{xgene1}, @samp{emag}, @samp{vulcan}, @samp{thunderx}, @samp{thunderxt88}, @samp{thunderxt88p1}, @samp{thunderxt81}, @samp{thunderxt83}, @samp{thunderx2t99}, @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53}, @samp{cortex-a73.cortex-a35}, @@ -15158,7 +15158,7 @@ Permissible names are: @samp{arm2}, @samp{arm250}, @samp{xscale}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}, @samp{fa526}, @samp{fa626}, @samp{fa606te}, @samp{fa626te}, @samp{fmp626}, @samp{fa726te}, -@samp{xgene1}. +@samp{xgene1}, @samp{emag}. Additionally, this option can specify that GCC should tune the performance of the code for a big.LITTLE system. Permissible names are: -- cgit v1.2.3