Commit 192ed1dd by James Greenhalgh Committed by James Greenhalgh

[AArch64 2/3 big.LITTLE] Allow tuning parameters without unique tuning targets.

gcc/

	* config/aarch64/aarch64-cores.def: Add new column for
	SCHEDULER_IDENT.
	* config/aarch64/aarch64-opts.h (AARCH64_CORE): Handle
	SCHEDULER_IDENT.
	* config/aarch64/aarch64.c (AARCH64_CORE): Handle
	SCHEDULER_IDENT.
	(aarch64_parse_cpu): mcpu implies a default value for mtune.
	* config/aarch64/aarch64.h (AARCH64_CORE): Handle
	SCHEDULER_IDENT.

From-SVN: r206099
parent 682287fb
2013-12-18 James Greenhalgh <james.greenhalgh@arm.com>
* config/aarch64/aarch64-cores.def: Add new column for
SCHEDULER_IDENT.
* config/aarch64/aarch64-opts.h (AARCH64_CORE): Handle
SCHEDULER_IDENT.
* config/aarch64/aarch64.c (AARCH64_CORE): Handle
SCHEDULER_IDENT.
(aarch64_parse_cpu): mcpu implies a default value for mtune.
* config/aarch64/aarch64.h (AARCH64_CORE): Handle
SCHEDULER_IDENT.
2013-12-18 James Greenhalgh <james.greenhalgh@arm.com>
* common/config/aarch64/aarch64-common.c
(aarch64_rewrite_selected_cpu): New.
(aarch64_rewrite_mcpu): New.
......@@ -21,18 +21,18 @@
Before using #include to read this file, define a macro:
AARCH64_CORE(CORE_NAME, CORE_IDENT, ARCH, FLAGS, COSTS)
AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHEDULER_IDENT, ARCH, FLAGS, COSTS)
The CORE_NAME is the name of the core, represented as a string constant.
The CORE_IDENT is the name of the core, represented as an identifier.
The SCHEDULER_IDENT is the name of the core for which scheduling decisions
will be made, represented as an identifier.
ARCH is the architecture revision implemented by the chip.
FLAGS are the bitwise-or of the traits that apply to that core.
This need not include flags implied by the architecture.
COSTS is the name of the rtx_costs routine to use. */
/* V8 Architecture Processors.
This list currently contains example CPUs that implement AArch64, and
therefore serves as a template for adding more CPUs in the future. */
/* V8 Architecture Processors. */
AARCH64_CORE("cortex-a53", cortexa53, 8, AARCH64_FL_FPSIMD, cortexa53)
AARCH64_CORE("cortex-a57", cortexa15, 8, AARCH64_FL_FPSIMD, generic)
AARCH64_CORE("cortex-a53", cortexa53, cortexa53, 8, AARCH64_FL_FPSIMD, cortexa53)
AARCH64_CORE("cortex-a57", cortexa15, cortexa15, 8, AARCH64_FL_FPSIMD, generic)
......@@ -25,8 +25,8 @@
/* The various cores that implement AArch64. */
enum aarch64_processor
{
#define AARCH64_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \
IDENT,
#define AARCH64_CORE(NAME, INTERNAL_IDENT, IDENT, ARCH, FLAGS, COSTS) \
INTERNAL_IDENT,
#include "aarch64-cores.def"
#undef AARCH64_CORE
/* Used to indicate that no processor has been specified. */
......
......@@ -246,7 +246,7 @@ struct processor
/* Processor cores implementing AArch64. */
static const struct processor all_cores[] =
{
#define AARCH64_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \
#define AARCH64_CORE(NAME, X, IDENT, ARCH, FLAGS, COSTS) \
{NAME, IDENT, #ARCH, FLAGS | AARCH64_FL_FOR_ARCH##ARCH, &COSTS##_tunings},
#include "aarch64-cores.def"
#undef AARCH64_CORE
......@@ -5119,6 +5119,7 @@ aarch64_parse_cpu (void)
if (strlen (cpu->name) == len && strncmp (cpu->name, str, len) == 0)
{
selected_cpu = cpu;
selected_tune = cpu;
aarch64_isa_flags = selected_cpu->flags;
if (ext != NULL)
......
......@@ -461,8 +461,8 @@ enum reg_class
enum target_cpus
{
#define AARCH64_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \
TARGET_CPU_##IDENT,
#define AARCH64_CORE(NAME, INTERNAL_IDENT, IDENT, ARCH, FLAGS, COSTS) \
TARGET_CPU_##INTERNAL_IDENT,
#include "aarch64-cores.def"
#undef AARCH64_CORE
TARGET_CPU_generic
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment