Hi Philipp,
On 18/02/14 21:09, Philipp Tomsich wrote:
The default target should be "generic", as Cortex-A53 includes
optional ISA features (CRC and CRYPTO) that are not required for
architectural compliance. The key difference between generic (which
already uses the cortexa53 pipeline model for scheduling) is the
absence of any optional ISA features in the "generic" target.
---
gcc/config/aarch64/aarch64.c | 2 +-
gcc/config/aarch64/aarch64.h | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 784bfa3..70dda00 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -5244,7 +5244,7 @@ aarch64_override_options (void)
/* If the user did not specify a processor, choose the default
one for them. This will be the CPU set during configuration using
- --with-cpu, otherwise it is "cortex-a53". */
+ --with-cpu, otherwise it is "generic". */
if (!selected_cpu)
{
selected_cpu = &all_cores[TARGET_CPU_DEFAULT & 0x3f];
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index 13c424c..b66a6b4 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -472,10 +472,10 @@ enum target_cpus
TARGET_CPU_generic
};
-/* If there is no CPU defined at configure, use "cortex-a53" as default. */
+/* If there is no CPU defined at configure, use "generic" as default. */
#ifndef TARGET_CPU_DEFAULT
#define TARGET_CPU_DEFAULT \
- (TARGET_CPU_cortexa53 | (AARCH64_CPU_DEFAULT_FLAGS << 6))
+ (TARGET_CPU_generic | (AARCH64_CPU_DEFAULT_FLAGS << 6))
#endif
/* The processor for which instructions should be scheduled. */
I don't think this approach will work. The bug we have here is that in
config.gcc when processing a --with-arch directive it will use the CPU flags of
the sample cpu given for the architecture in aarch64-arches.def. This will cause
it to use cortex-a53+fp+simd+crypto+crc when asked to configure for
--with-arch=armv8-a. Instead it should be using the 4th field of the
AARCH64_ARCH which specifies the ISA flags implied by the architecture. Then we
would get cortex-a53+fp+simd.
Also, if no --with-arch or --with-cpu is specified, config.gcc will still
specify TARGET_CPU_DEFAULT as TARGET_CPU_generic but without encoding the ISA
flags (AARCH64_FL_FOR_ARCH8 in this case) for it in the upper bits of
TARGET_CPU_DEFAULT, leading to an always defined TARGET_CPU_DEFAULT which will
cause the last hunk in this patch to never be used and configuring.
I'm working on a fix for these issues.
HTH,
Kyrill