diff options
author | Christophe Lyon <christophe.lyon@linaro.org> | 2016-03-11 17:08:51 +0100 |
---|---|---|
committer | Linaro Code Review <review@review.linaro.org> | 2016-04-11 12:04:13 +0000 |
commit | 20a2acfb0cecc500bb204243df95707386943e41 (patch) | |
tree | a18d47e7dab66eb376bfe9b73b069e6ce7f2e4b5 | |
parent | 788b3741485cf6d40eb0b1b6583d521ba44f072b (diff) |
gcc/
Backport from trunk r229412.
2015-10-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64-protos.h
(struct tune_params): Add autoprefetcher_model field.
* config/aarch64/aarch64.c: Include params.h
(generic_tunings): Specify autoprefetcher_model value.
(cortexa53_tunings): Likewise.
(cortexa57_tunings): Likewise.
(cortexa72_tunings): Likewise.
(thunderx_tunings): Likewise.
(xgene1_tunings): Likewise.
(aarch64_first_cycle_multipass_dfa_lookahead_guard): New function.
(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define.
(aarch64_override_options_internal): Set
PARAM_SCHED_AUTOPREF_QUEUE_DEPTH param.
gcc/
Backport from trunk r230261.
2015-11-12 Evandro Menezes <e.menezes@samsung.com>
* config/aarch64/aarch64-protos.h (tune_params): Add new members
"max_case_values" and "cache_line_size".
* config/aarch64/aarch64.c (aarch64_case_values_threshold): New
function.
(aarch64_override_options_internal): Tune heuristics based on new
members in "tune_params".
(TARGET_CASE_VALUES_THRESHOLD): Define macro.
gcc/
Backport from trunk r230431.
2015-11-16 James Greenhalgh <james.greenhalgh@arm.com>
* config/arm/arm-cores.def (cortex-a35): New.
* config/arm/arm.c (arm_cortex_a35_tune): New.
* config/arm/arm-tables.opt: Regenerate.
* config/arm/arm-tune.md: Regenerate.
* config/arm/bpabi.h (BE8_LINK_SPEC): Add cortex-a35.
* config/arm/t-aprofile: Likewise.
* doc/invoke.texi (-mcpu): Likewise.
gcc/
Backport from trunk r230458.
2015-11-17 James Greenhalgh <james.greenhalgh@arm.com>
* config/aarch64/aarch64-cores.def (cortex-a35): New.
* config/aarch64/aarch64.c (cortexa35_tunings): New.
* config/aarch64/aarch64-tune.md: Regenerate.
* doc/invoke.texi (-mcpu): Add Cortex-A35
gcc/
Backport from trunk r233659.
2016-02-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/arm-cores.def (cortex-a32): New entry.
* config/arm/arm-tables.opt: Regenerate.
* config/arm/arm-tune.md: Regenerate.
* config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a32.
* config/arm/t-aprofile: Handle mcpu=cortex-a32.
* doc/invoke.texi (ARM Options): Document cortex-a32 as value
for -mcpu and -mtune.
gcc/
Backport from trunk r234040.
2016-03-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
* config/arm/arm-cores.def (cortex-r8): New.
* config/arm/arm-tables.opt (cortex-r8): Regenerate.
* config/arm/arm-tune.md: Likewise.
* gcc/doc/invoke.texi: Add cortex-r8 to list of cpu values.
gcc/testsuite/
Backport from trunk r234041.
2016-03-07 Andre Vieira <andre.simoesdiasvieira@arm.com>
* gcc.target/arm/pr45701-1.c: Change assembler scan to not
trigger for cortex-r8, when scanning for register r8.
* gcc.target/arm/pr45701-2.c: Likewise.
gcc/testsuite/
Backport from trunk r234109.
2016-03-10 Andre Vieira <andre.simoesdiasvieira@arm.com>
* gcc.target/arm/pr45701-1.c: Escape brackets.
* gcc.target/arm/pr45701-2.c: Likewise.
Change-Id: I4f1c5bfc0a6640c9cb2e357751c9c1268b224998
-rw-r--r-- | gcc/config/aarch64/aarch64-cores.def | 1 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64-protos.h | 21 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64-tune.md | 2 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 108 | ||||
-rw-r--r-- | gcc/config/arm/arm-cores.def | 3 | ||||
-rw-r--r-- | gcc/config/arm/arm-tables.opt | 9 | ||||
-rw-r--r-- | gcc/config/arm/arm-tune.md | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 23 | ||||
-rw-r--r-- | gcc/config/arm/bpabi.h | 3 | ||||
-rw-r--r-- | gcc/config/arm/t-aprofile | 2 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr45701-1.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr45701-2.c | 2 |
13 files changed, 183 insertions, 10 deletions
diff --git a/gcc/config/aarch64/aarch64-cores.def b/gcc/config/aarch64/aarch64-cores.def index 4af70ca613c..f8fab28d912 100644 --- a/gcc/config/aarch64/aarch64-cores.def +++ b/gcc/config/aarch64/aarch64-cores.def @@ -40,6 +40,7 @@ /* V8 Architecture Processors. */ +AARCH64_CORE("cortex-a35", cortexa35, cortexa53, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa35, "0x41", "0xd04") AARCH64_CORE("cortex-a53", cortexa53, cortexa53, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa53, "0x41", "0xd03") AARCH64_CORE("cortex-a57", cortexa57, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57, "0x41", "0xd07") AARCH64_CORE("cortex-a72", cortexa72, cortexa57, 8A, AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa72, "0x41", "0xd08") diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 338b5ae9b22..e85132f484a 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -195,6 +195,27 @@ struct tune_params int vec_reassoc_width; int min_div_recip_mul_sf; int min_div_recip_mul_df; + /* Value for aarch64_case_values_threshold; or 0 for the default. */ + unsigned int max_case_values; + /* Value for PARAM_L1_CACHE_LINE_SIZE; or 0 to use the default. */ + unsigned int cache_line_size; + +/* An enum specifying how to take into account CPU autoprefetch capabilities + during instruction scheduling: + - AUTOPREFETCHER_OFF: Do not take autoprefetch capabilities into account. + - AUTOPREFETCHER_WEAK: Attempt to sort sequences of loads/store in order of + offsets but allow the pipeline hazard recognizer to alter that order to + maximize multi-issue opportunities. + - AUTOPREFETCHER_STRONG: Attempt to sort sequences of loads/store in order of + offsets and prefer this even if it restricts multi-issue opportunities. */ + + enum aarch64_autoprefetch_model + { + AUTOPREFETCHER_OFF, + AUTOPREFETCHER_WEAK, + AUTOPREFETCHER_STRONG + } autoprefetcher_model; + unsigned int extra_tuning_flags; }; diff --git a/gcc/config/aarch64/aarch64-tune.md b/gcc/config/aarch64/aarch64-tune.md index c65a12420ad..cbc6f4879ed 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" - "cortexa53,cortexa57,cortexa72,exynosm1,qdf24xx,thunderx,xgene1,cortexa57cortexa53,cortexa72cortexa53" + "cortexa35,cortexa53,cortexa57,cortexa72,exynosm1,qdf24xx,thunderx,xgene1,cortexa57cortexa53,cortexa72cortexa53" (const (symbol_ref "((enum attr_tune) aarch64_tune)"))) diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 59c96507ecb..47f41ab2197 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -86,6 +86,7 @@ #include "gimple-expr.h" #include "is-a.h" #include "gimple.h" +#include "params.h" #include "gimplify.h" #include "optabs.h" #include "dwarf2.h" @@ -397,6 +398,34 @@ static const struct tune_params generic_tunings = 1, /* vec_reassoc_width. */ 2, /* min_div_recip_mul_sf. */ 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ + 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_OFF, /* autoprefetcher_model. */ + (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ +}; + +static const struct tune_params cortexa35_tunings = +{ + &cortexa53_extra_costs, + &generic_addrcost_table, + &cortexa53_regmove_cost, + &generic_vector_cost, + &generic_branch_cost, + 4, /* memmov_cost */ + 1, /* issue_rate */ + (AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD + | AARCH64_FUSE_MOVK_MOVK | AARCH64_FUSE_ADRP_LDR), /* 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. */ + 0, /* max_case_values. */ + 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ }; @@ -419,6 +448,9 @@ static const struct tune_params cortexa53_tunings = 1, /* vec_reassoc_width. */ 2, /* min_div_recip_mul_sf. */ 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ + 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ }; @@ -441,6 +473,9 @@ static const struct tune_params cortexa57_tunings = 1, /* vec_reassoc_width. */ 2, /* min_div_recip_mul_sf. */ 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ + 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_WEAK, /* autoprefetcher_model. */ (AARCH64_EXTRA_TUNE_RENAME_FMA_REGS) /* tune_flags. */ }; @@ -463,6 +498,9 @@ static const struct tune_params cortexa72_tunings = 1, /* vec_reassoc_width. */ 2, /* min_div_recip_mul_sf. */ 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ + 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_OFF, /* autoprefetcher_model. */ (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ }; @@ -484,6 +522,9 @@ static const struct tune_params thunderx_tunings = 1, /* vec_reassoc_width. */ 2, /* min_div_recip_mul_sf. */ 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ + 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_OFF, /* autoprefetcher_model. */ (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ }; @@ -505,6 +546,9 @@ static const struct tune_params xgene1_tunings = 1, /* vec_reassoc_width. */ 2, /* min_div_recip_mul_sf. */ 2, /* min_div_recip_mul_df. */ + 0, /* max_case_values. */ + 0, /* cache_line_size. */ + tune_params::AUTOPREFETCHER_OFF, /* autoprefetcher_model. */ (AARCH64_EXTRA_TUNE_NONE) /* tune_flags. */ }; @@ -3289,6 +3333,20 @@ aarch64_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x) return aarch64_tls_referenced_p (x); } +/* Implement TARGET_CASE_VALUES_THRESHOLD. */ + +static unsigned int +aarch64_case_values_threshold (void) +{ + /* Use the specified limit for the number of cases before using jump + tables at higher optimization levels. */ + if (optimize > 2 + && selected_cpu->tune->max_case_values != 0) + return selected_cpu->tune->max_case_values; + else + return default_case_values_threshold (); +} + /* Return true if register REGNO is a valid index register. STRICT_P is true if REG_OK_STRICT is in effect. */ @@ -7125,6 +7183,19 @@ aarch64_sched_first_cycle_multipass_dfa_lookahead (void) return issue_rate > 1 && !sched_fusion ? issue_rate : 0; } + +/* Implement TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD as + autopref_multipass_dfa_lookahead_guard from haifa-sched.c. It only + has an effect if PARAM_SCHED_AUTOPREF_QUEUE_DEPTH > 0. */ + +static int +aarch64_first_cycle_multipass_dfa_lookahead_guard (rtx_insn *insn, + int ready_index) +{ + return autopref_multipass_dfa_lookahead_guard (insn, ready_index); +} + + /* Vectorizer cost model target hooks. */ /* Implement targetm.vectorize.builtin_vectorization_cost. */ @@ -7718,6 +7789,36 @@ aarch64_override_options_internal (struct gcc_options *opts) initialize_aarch64_code_model (opts); initialize_aarch64_tls_size (opts); + int queue_depth = 0; + switch (aarch64_tune_params.autoprefetcher_model) + { + case tune_params::AUTOPREFETCHER_OFF: + queue_depth = -1; + break; + case tune_params::AUTOPREFETCHER_WEAK: + queue_depth = 0; + break; + case tune_params::AUTOPREFETCHER_STRONG: + queue_depth = max_insn_queue_index + 1; + break; + default: + gcc_unreachable (); + } + + /* We don't mind passing in global_options_set here as we don't use + the *options_set structs anyway. */ + maybe_set_param_value (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH, + queue_depth, + opts->x_param_values, + global_options_set.x_param_values); + + /* Set the L1 cache line size. */ + if (selected_cpu->tune->cache_line_size != 0) + maybe_set_param_value (PARAM_L1_CACHE_LINE_SIZE, + selected_cpu->tune->cache_line_size, + opts->x_param_values, + global_options_set.x_param_values); + aarch64_override_options_after_change_1 (opts); } @@ -13502,6 +13603,9 @@ aarch64_unspec_may_trap_p (const_rtx x, unsigned flags) #undef TARGET_CANNOT_FORCE_CONST_MEM #define TARGET_CANNOT_FORCE_CONST_MEM aarch64_cannot_force_const_mem +#undef TARGET_CASE_VALUES_THRESHOLD +#define TARGET_CASE_VALUES_THRESHOLD aarch64_case_values_threshold + #undef TARGET_CONDITIONAL_REGISTER_USAGE #define TARGET_CONDITIONAL_REGISTER_USAGE aarch64_conditional_register_usage @@ -13658,6 +13762,10 @@ aarch64_unspec_may_trap_p (const_rtx x, unsigned flags) #define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD \ aarch64_sched_first_cycle_multipass_dfa_lookahead +#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD +#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD \ + aarch64_first_cycle_multipass_dfa_lookahead_guard + #undef TARGET_TRAMPOLINE_INIT #define TARGET_TRAMPOLINE_INIT aarch64_trampoline_init diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def index 86ed0cb1dbe..90a9b3842e0 100644 --- a/gcc/config/arm/arm-cores.def +++ b/gcc/config/arm/arm-cores.def @@ -155,6 +155,7 @@ ARM_CORE("cortex-r4", cortexr4, cortexr4, 7R, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | ARM_CORE("cortex-r4f", cortexr4f, cortexr4f, 7R, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7R), cortex) ARM_CORE("cortex-r5", cortexr5, cortexr5, 7R, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_ARM_DIV | FL_FOR_ARCH7R), cortex) ARM_CORE("cortex-r7", cortexr7, cortexr7, 7R, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_ARM_DIV | FL_FOR_ARCH7R), cortex) +ARM_CORE("cortex-r8", cortexr8, cortexr7, 7R, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_ARM_DIV | FL_FOR_ARCH7R), cortex) ARM_CORE("cortex-m7", cortexm7, cortexm7, 7EM, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_NO_VOLATILE_CE | FL_FOR_ARCH7EM), cortex_m7) ARM_CORE("cortex-m4", cortexm4, cortexm4, 7EM, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7EM), v7m) ARM_CORE("cortex-m3", cortexm3, cortexm3, 7M, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7M), v7m) @@ -165,6 +166,8 @@ ARM_CORE("cortex-a15.cortex-a7", cortexa15cortexa7, cortexa7, 7A, ARM_FSET_MAKE_ ARM_CORE("cortex-a17.cortex-a7", cortexa17cortexa7, cortexa7, 7A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV | FL_FOR_ARCH7A), cortex_a12) /* V8 Architecture Processors */ +ARM_CORE("cortex-a32", cortexa32, cortexa53, 8A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a35) +ARM_CORE("cortex-a35", cortexa35, cortexa53, 8A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a35) ARM_CORE("cortex-a53", cortexa53, cortexa53, 8A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a53) ARM_CORE("cortex-a57", cortexa57, cortexa57, 8A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a57) ARM_CORE("cortex-a72", cortexa72, cortexa57, 8A, ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a57) diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt index 51fa3dff4ff..06e808a40ac 100644 --- a/gcc/config/arm/arm-tables.opt +++ b/gcc/config/arm/arm-tables.opt @@ -286,6 +286,9 @@ EnumValue Enum(processor_type) String(cortex-r7) Value(cortexr7) EnumValue +Enum(processor_type) String(cortex-r8) Value(cortexr8) + +EnumValue Enum(processor_type) String(cortex-m7) Value(cortexm7) EnumValue @@ -304,6 +307,12 @@ EnumValue Enum(processor_type) String(cortex-a17.cortex-a7) Value(cortexa17cortexa7) EnumValue +Enum(processor_type) String(cortex-a32) Value(cortexa32) + +EnumValue +Enum(processor_type) String(cortex-a35) Value(cortexa35) + +EnumValue Enum(processor_type) String(cortex-a53) Value(cortexa53) EnumValue diff --git a/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md index e56b5ad8cb5..d9f02a177e3 100644 --- a/gcc/config/arm/arm-tune.md +++ b/gcc/config/arm/arm-tune.md @@ -30,8 +30,9 @@ cortexa8,cortexa9,cortexa12, cortexa15,cortexa17,cortexr4, cortexr4f,cortexr5,cortexr7, - cortexm7,cortexm4,cortexm3, - marvell_pj4,cortexa15cortexa7,cortexa17cortexa7, + cortexr8,cortexm7,cortexm4, + cortexm3,marvell_pj4,cortexa15cortexa7, + cortexa17cortexa7,cortexa32,cortexa35, cortexa53,cortexa57,cortexa72, exynosm1,qdf24xx,xgene1, cortexa57cortexa53,cortexa72cortexa53" diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index e3958b6e782..371528b0405 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -1976,6 +1976,29 @@ const struct tune_params arm_cortex_a15_tune = tune_params::SCHED_AUTOPREF_FULL }; +const struct tune_params arm_cortex_a35_tune = +{ + arm_9e_rtx_costs, + &cortexa53_extra_costs, + NULL, /* Sched adj cost. */ + arm_default_branch_cost, + &arm_default_vec_cost, + 1, /* Constant limit. */ + 5, /* Max cond insns. */ + 8, /* Memset max inline. */ + 1, /* Issue rate. */ + ARM_PREFETCH_NOT_BENEFICIAL, + tune_params::PREF_CONST_POOL_FALSE, + tune_params::PREF_LDRD_FALSE, + tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE, /* Thumb. */ + tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE, /* ARM. */ + tune_params::DISPARAGE_FLAGS_NEITHER, + tune_params::PREF_NEON_64_FALSE, + tune_params::PREF_NEON_STRINGOPS_TRUE, + FUSE_OPS (tune_params::FUSE_MOVW_MOVT), + tune_params::SCHED_AUTOPREF_OFF +}; + const struct tune_params arm_cortex_a53_tune = { arm_9e_rtx_costs, diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h index 8af460549b0..d0fc25e51ad 100644 --- a/gcc/config/arm/bpabi.h +++ b/gcc/config/arm/bpabi.h @@ -68,6 +68,8 @@ |mcpu=cortex-a15.cortex-a7 \ |mcpu=cortex-a17.cortex-a7 \ |mcpu=marvell-pj4 \ + |mcpu=cortex-a32 \ + |mcpu=cortex-a35 \ |mcpu=cortex-a53 \ |mcpu=cortex-a57 \ |mcpu=cortex-a57.cortex-a53 \ @@ -94,6 +96,7 @@ |mcpu=cortex-a12|mcpu=cortex-a17 \ |mcpu=cortex-a15.cortex-a7 \ |mcpu=cortex-a17.cortex-a7 \ + |mcpu=cortex-a35 \ |mcpu=cortex-a53 \ |mcpu=cortex-a57 \ |mcpu=cortex-a57.cortex-a53 \ diff --git a/gcc/config/arm/t-aprofile b/gcc/config/arm/t-aprofile index 94fd0ca9259..1d0185d5c3c 100644 --- a/gcc/config/arm/t-aprofile +++ b/gcc/config/arm/t-aprofile @@ -86,6 +86,8 @@ MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a12 MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a17 MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a15.cortex-a7 MULTILIB_MATCHES += march?armv7ve=mcpu?cortex-a17.cortex-a7 +MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a32 +MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a35 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a53 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57 MULTILIB_MATCHES += march?armv8-a=mcpu?cortex-a57.cortex-a53 diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 8bef09d2ca4..09d917b9807 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -12367,8 +12367,9 @@ processors implementing the target architecture. @opindex mtune 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-a53}, @samp{cortex-a57}, @samp{cortex-a72}, -@samp{exynos-m1}, @samp{qdf24xx}, @samp{thunderx}, @samp{xgene1}. +@samp{generic}, @samp{cortex-a35}, @samp{cortex-a53}, @samp{cortex-a57}, +@samp{cortex-a72}, @samp{exynos-m1}, @samp{qdf24xx}, @samp{thunderx}, +@samp{xgene1}. Additionally, this option can specify that GCC should tune the performance of the code for a big.LITTLE system. Permissible values for this @@ -13271,9 +13272,10 @@ Permissible names are: @samp{arm2}, @samp{arm250}, @samp{arm1156t2-s}, @samp{arm1156t2f-s}, @samp{arm1176jz-s}, @samp{arm1176jzf-s}, @samp{generic-armv7-a}, @samp{cortex-a5}, @samp{cortex-a7}, @samp{cortex-a8}, @samp{cortex-a9}, @samp{cortex-a12}, @samp{cortex-a15}, @samp{cortex-a17}, -@samp{cortex-a53}, @samp{cortex-a57}, @samp{cortex-a72}, -@samp{cortex-r4}, -@samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-m7}, +@samp{cortex-a32}, @samp{cortex-a35}, @samp{cortex-a53}, @samp{cortex-a57}, +@samp{cortex-a72}, @samp{cortex-r4}, +@samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-r8}, +@samp{cortex-m7}, @samp{cortex-m4}, @samp{cortex-m3}, @samp{cortex-m1}, diff --git a/gcc/testsuite/gcc.target/arm/pr45701-1.c b/gcc/testsuite/gcc.target/arm/pr45701-1.c index 454a087eedb..01db15abfd0 100644 --- a/gcc/testsuite/gcc.target/arm/pr45701-1.c +++ b/gcc/testsuite/gcc.target/arm/pr45701-1.c @@ -2,7 +2,7 @@ /* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */ /* { dg-options "-mthumb -Os" } */ /* { dg-final { scan-assembler "push\t\{r3" } } */ -/* { dg-final { scan-assembler-not "r8" } } */ +/* { dg-final { scan-assembler-not "\[^\-\]r8" } } */ extern int hist_verify; extern int a1; diff --git a/gcc/testsuite/gcc.target/arm/pr45701-2.c b/gcc/testsuite/gcc.target/arm/pr45701-2.c index afe0840d44b..ce66d7509d1 100644 --- a/gcc/testsuite/gcc.target/arm/pr45701-2.c +++ b/gcc/testsuite/gcc.target/arm/pr45701-2.c @@ -2,7 +2,7 @@ /* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */ /* { dg-options "-mthumb -Os" } */ /* { dg-final { scan-assembler "push\t\{r3" } } */ -/* { dg-final { scan-assembler-not "r8" } } */ +/* { dg-final { scan-assembler-not "\[^\-\]r8" } } */ extern int hist_verify; extern int a1; |