diff mbox

[ARM] Add initial support for the Cortex-A32

Message ID 56CD8AAE.2080200@foss.arm.com
State New
Headers show

Commit Message

Kyrill Tkachov Feb. 24, 2016, 10:49 a.m. UTC
Hi all,

This patch adds initial support for the Cortex-A32 core.
It is an ARMv8-A core and this patch enables the -mcpu=cortex-a32 and
-mtune=cortex-a32 options.

The initial tunings are set to the same parameters as for Cortex-A35.

Bootstrapped and tested on arm-none-linux-gnueabihf together with a binutils
suitably patched to recognise -mcpu=cortex-a32 and the respective .cpu directive
(https://sourceware.org/ml/binutils/2016-02/msg00345.html)
The build was configured with --with-cpu=cortex-a32 --with-mode=thumb --with-fpu=neon-fp-armv8 --with-float=hard

Ok for trunk?

Thanks,
Kyrill

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.

Comments

Richard Earnshaw (lists) Feb. 24, 2016, 10:52 a.m. UTC | #1
On 24/02/16 10:49, Kyrill Tkachov wrote:
> Hi all,
> 
> This patch adds initial support for the Cortex-A32 core.
> It is an ARMv8-A core and this patch enables the -mcpu=cortex-a32 and
> -mtune=cortex-a32 options.
> 
> The initial tunings are set to the same parameters as for Cortex-A35.
> 
> Bootstrapped and tested on arm-none-linux-gnueabihf together with a
> binutils
> suitably patched to recognise -mcpu=cortex-a32 and the respective .cpu
> directive
> (https://sourceware.org/ml/binutils/2016-02/msg00345.html)
> The build was configured with --with-cpu=cortex-a32 --with-mode=thumb
> --with-fpu=neon-fp-armv8 --with-float=hard
> 
> Ok for trunk?
> 
> Thanks,
> Kyrill
> 
> 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.
> 

OK.

R.

> cortex-a32-gcc.patch
> 
> 
> diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def
> index 6538861898689e64a3554f709c5a3355cffad187..b61b7f82b68d3b1f42ee5e22b537fb69392ce337 100644
> --- a/gcc/config/arm/arm-cores.def
> +++ b/gcc/config/arm/arm-cores.def
> @@ -165,6 +165,7 @@ 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)
> diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt
> index 6d6ee96828146fe076a6a1ee285f6a1d578b6c85..4b7522cb7afd189dc7edda1bb824b3ae509756b4 100644
> --- a/gcc/config/arm/arm-tables.opt
> +++ b/gcc/config/arm/arm-tables.opt
> @@ -304,6 +304,9 @@ 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
> diff --git a/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md
> index 1c842180cee6afd7a560ef51b63632bb0f83b932..b66344a838e0579ea687dabc4e4b6343f16705ad 100644
> --- a/gcc/config/arm/arm-tune.md
> +++ b/gcc/config/arm/arm-tune.md
> @@ -32,7 +32,8 @@ (define_attr "tune"
>  	cortexr4f,cortexr5,cortexr7,
>  	cortexm7,cortexm4,cortexm3,
>  	marvell_pj4,cortexa15cortexa7,cortexa17cortexa7,
> -	cortexa35,cortexa53,cortexa57,
> -	cortexa72,exynosm1,qdf24xx,
> -	xgene1,cortexa57cortexa53,cortexa72cortexa53"
> +	cortexa32,cortexa35,cortexa53,
> +	cortexa57,cortexa72,exynosm1,
> +	qdf24xx,xgene1,cortexa57cortexa53,
> +	cortexa72cortexa53"
>  	(const (symbol_ref "((enum attr_tune) arm_tune)")))
> diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h
> index 82128ef0735bb4b223908b2393a46d97e020156b..5d6c4ed51eac2d136871b52d87faefc2ebaa4a43 100644
> --- a/gcc/config/arm/bpabi.h
> +++ b/gcc/config/arm/bpabi.h
> @@ -68,6 +68,7 @@
>     |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					\
> diff --git a/gcc/config/arm/t-aprofile b/gcc/config/arm/t-aprofile
> index 609570643cab23ff699d48a0ea0ee3f991b71c85..b0ecc2fe45da581b6f1cf1a3e1aea7d428c0e533 100644
> --- a/gcc/config/arm/t-aprofile
> +++ b/gcc/config/arm/t-aprofile
> @@ -86,6 +86,7 @@ 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
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 0a2a6f45d7cf916a84dc48b6885cf04d43b12d8a..e6b52b4a4b59cbda59b3a8fc25e9bab2f25934c5 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -13874,8 +13874,8 @@ 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-a35}, @samp{cortex-a53}, @samp{cortex-a57}, @samp{cortex-a72},
> -@samp{cortex-r4},
> +@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-m7},
>  @samp{cortex-m4},
>  @samp{cortex-m3},
>
diff mbox

Patch

diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def
index 6538861898689e64a3554f709c5a3355cffad187..b61b7f82b68d3b1f42ee5e22b537fb69392ce337 100644
--- a/gcc/config/arm/arm-cores.def
+++ b/gcc/config/arm/arm-cores.def
@@ -165,6 +165,7 @@  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)
diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt
index 6d6ee96828146fe076a6a1ee285f6a1d578b6c85..4b7522cb7afd189dc7edda1bb824b3ae509756b4 100644
--- a/gcc/config/arm/arm-tables.opt
+++ b/gcc/config/arm/arm-tables.opt
@@ -304,6 +304,9 @@  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
diff --git a/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md
index 1c842180cee6afd7a560ef51b63632bb0f83b932..b66344a838e0579ea687dabc4e4b6343f16705ad 100644
--- a/gcc/config/arm/arm-tune.md
+++ b/gcc/config/arm/arm-tune.md
@@ -32,7 +32,8 @@  (define_attr "tune"
 	cortexr4f,cortexr5,cortexr7,
 	cortexm7,cortexm4,cortexm3,
 	marvell_pj4,cortexa15cortexa7,cortexa17cortexa7,
-	cortexa35,cortexa53,cortexa57,
-	cortexa72,exynosm1,qdf24xx,
-	xgene1,cortexa57cortexa53,cortexa72cortexa53"
+	cortexa32,cortexa35,cortexa53,
+	cortexa57,cortexa72,exynosm1,
+	qdf24xx,xgene1,cortexa57cortexa53,
+	cortexa72cortexa53"
 	(const (symbol_ref "((enum attr_tune) arm_tune)")))
diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h
index 82128ef0735bb4b223908b2393a46d97e020156b..5d6c4ed51eac2d136871b52d87faefc2ebaa4a43 100644
--- a/gcc/config/arm/bpabi.h
+++ b/gcc/config/arm/bpabi.h
@@ -68,6 +68,7 @@ 
    |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					\
diff --git a/gcc/config/arm/t-aprofile b/gcc/config/arm/t-aprofile
index 609570643cab23ff699d48a0ea0ee3f991b71c85..b0ecc2fe45da581b6f1cf1a3e1aea7d428c0e533 100644
--- a/gcc/config/arm/t-aprofile
+++ b/gcc/config/arm/t-aprofile
@@ -86,6 +86,7 @@  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
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 0a2a6f45d7cf916a84dc48b6885cf04d43b12d8a..e6b52b4a4b59cbda59b3a8fc25e9bab2f25934c5 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -13874,8 +13874,8 @@  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-a35}, @samp{cortex-a53}, @samp{cortex-a57}, @samp{cortex-a72},
-@samp{cortex-r4},
+@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-m7},
 @samp{cortex-m4},
 @samp{cortex-m3},