public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R
@ 2017-06-29 13:52 Thomas Preudhomme
  2017-06-29 13:55 ` [PATCH 1/3, GCC/ARM] Add MIDR info for ARM Cortex-R7 and Cortex-R8 Thomas Preudhomme
                   ` (3 more replies)
  0 siblings, 4 replies; 19+ messages in thread
From: Thomas Preudhomme @ 2017-06-29 13:52 UTC (permalink / raw)
  To: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

Hi,

This patch series adds support for the ARMv8-R architecture[1] and ARM 
Cortex-R52[2] to GCC. The patch series consist of the following patches:

[ 1/3] Add missing MIDR information for ARM Cortex-R7 and Cortex-R8 processor
[ 2/3] Add support for ARMv8-R architecture
[ 3/3] Add support for ARM Cortex-R52

[1] 
https://developer.arm.com/products/architecture/r-profile/docs/ddi0568/latest/arm-architecture-reference-manual-supplement-armv8-for-the-armv8-r-aarch32-architecture-profile
[2] https://developer.arm.com/products/processors/cortex-r/cortex-r52

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH 1/3, GCC/ARM] Add MIDR info for ARM Cortex-R7 and Cortex-R8
  2017-06-29 13:52 [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R Thomas Preudhomme
@ 2017-06-29 13:55 ` Thomas Preudhomme
  2017-07-04 13:56   ` [PATCH 1/3, GCC/ARM, ping] " Thomas Preudhomme
  2017-07-04 13:57   ` [PATCH 1/3, GCC/ARM] " Kyrill Tkachov
  2017-06-29 13:56 ` [PATCH 2/3, GCC/ARM] Add support for ARMv8-R architecture Thomas Preudhomme
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 19+ messages in thread
From: Thomas Preudhomme @ 2017-06-29 13:55 UTC (permalink / raw)
  To: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

[-- Attachment #1: Type: text/plain, Size: 450 bytes --]

Hi,

The driver is missing MIDR information for processors ARM Cortex-R7 and
Cortex-R8 to support -march/-mcpu/-mtune=native on the command line.
This patch adds the missing information.

ChangeLog entry is as follows:

*** gcc/ChangeLog ***

2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
	Cortex-R7 and Cortex-R8 processors.

Is this ok for master?

Best regards,

Thomas

[-- Attachment #2: 1_add_cortex_r7_r8_midr.patch --]
[-- Type: text/x-patch, Size: 623 bytes --]

diff --git a/gcc/config/arm/driver-arm.c b/gcc/config/arm/driver-arm.c
index b034f13fda63f5892bbd9879d72f4b02e2632d69..29873d57a1e45fd989f6ff01dd4a2ae7320d93bb 100644
--- a/gcc/config/arm/driver-arm.c
+++ b/gcc/config/arm/driver-arm.c
@@ -54,6 +54,8 @@ static struct vendor_cpu arm_cpu_table[] = {
     {"0xd09", "armv8-a+crc", "cortex-a73"},
     {"0xc14", "armv7-r", "cortex-r4"},
     {"0xc15", "armv7-r", "cortex-r5"},
+    {"0xc17", "armv7-r", "cortex-r7"},
+    {"0xc18", "armv7-r", "cortex-r8"},
     {"0xc20", "armv6-m", "cortex-m0"},
     {"0xc21", "armv6-m", "cortex-m1"},
     {"0xc23", "armv7-m", "cortex-m3"},

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH 2/3, GCC/ARM] Add support for ARMv8-R architecture
  2017-06-29 13:52 [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R Thomas Preudhomme
  2017-06-29 13:55 ` [PATCH 1/3, GCC/ARM] Add MIDR info for ARM Cortex-R7 and Cortex-R8 Thomas Preudhomme
@ 2017-06-29 13:56 ` Thomas Preudhomme
  2017-06-29 15:13   ` Thomas Preudhomme
  2017-06-29 13:57 ` [PATCH 3/3, GCC/ARM] Add support for ARM Cortex-R52 processor Thomas Preudhomme
  2017-06-29 14:34 ` [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R Christophe Lyon
  3 siblings, 1 reply; 19+ messages in thread
From: Thomas Preudhomme @ 2017-06-29 13:56 UTC (permalink / raw)
  To: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

[-- Attachment #1: Type: text/plain, Size: 1613 bytes --]

Hi,

This patch adds support for ARMv8-R architecture [1] which was recently
announced. User level instructions for ARMv8-R are the same as those in
ARMv8-A Aarch32 mode so this patch define ARMv8-R to have the same
features as ARMv8-A in ARM backend.

[1] 
https://developer.arm.com/products/architecture/r-profile/docs/ddi0568/latest/arm-architecture-reference-manual-supplement-armv8-for-the-armv8-r-aarch32-architecture-profile

ChangeLog entries are as follow:

*** gcc/ChangeLog ***

2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/arm/arm-cpus.in (armv8-r, armv8-r+rcr): Add new entry.
	* config/arm/arm-cpu-cdata.h: Regenerate.
	* config/arm/arm-cpu-data.h: Regenerate.
	* config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
	* config/arm/arm-tables.opt: Regenerate.
	* config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
	enumerator.
	* config/arm/bpabi.h (BE8_LINK_SPEC): Add entry for ARMv8-R and
	ARMv8-R with CRC extensions.
	* doc/invoke.texi: Mention -march=armv8-r and -march=armv8-r+crc
	options.  Document meaning of -march=armv8-r+rcr.

*** gcc/testsuite/ChangeLog ***

2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* lib/target-supports.exp: Generate
	check_effective_target_arm_arch_v8r_ok, add_options_for_arm_arch_v8r
	and check_effective_target_arm_arch_v8r_multilib.

*** libgcc/ChangeLog ***

2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/arm/lib1funcs.S: Defined __ARM_ARCH__ to 8 for ARMv8-R.

Tested by building an arm-none-eabi GCC cross-compiler targetting
ARMv8-R.

Is this ok for stage1?

Best regards,

Thomas

[-- Attachment #2: 2_add_armv8r_support.patch --]
[-- Type: text/x-patch, Size: 6987 bytes --]

diff --git a/gcc/config/arm/arm-cpu-cdata.h b/gcc/config/arm/arm-cpu-cdata.h
index b3888120daa8494eb41bde0368122ad2f06d81af..0a122f5febaaceeeb5a405cb5a64e1edd9b044f3 100644
--- a/gcc/config/arm/arm-cpu-cdata.h
+++ b/gcc/config/arm/arm-cpu-cdata.h
@@ -1041,6 +1041,20 @@ static const struct arm_arch_core_flag arm_arch_core_flags[] =
     },
   },
   {
+    "armv8-r",
+    {
+      ISA_ARMv8r,
+      isa_nobit
+    },
+  },
+  {
+    "armv8-r+crc",
+    {
+      ISA_ARMv8r,isa_bit_crc32,
+      isa_nobit
+    },
+  },
+  {
     "iwmmxt",
     {
       ISA_ARMv5te,isa_bit_xscale,isa_bit_iwmmxt,
diff --git a/gcc/config/arm/arm-cpu-data.h b/gcc/config/arm/arm-cpu-data.h
index d6200f9bdc09a9d0c973853b0152a2800eaf2fe5..48c1d88032c1c5dc7c6cba71511f79fe9f2533ea 100644
--- a/gcc/config/arm/arm-cpu-data.h
+++ b/gcc/config/arm/arm-cpu-data.h
@@ -1478,6 +1478,26 @@ static const struct processors all_architectures[] =
     NULL
   },
   {
+    "armv8-r", TARGET_CPU_cortexr4,
+    (TF_CO_PROC),
+    "8R", BASE_ARCH_8R,
+    {
+      ISA_ARMv8r,
+      isa_nobit
+    },
+    NULL
+  },
+  {
+    "armv8-r+crc", TARGET_CPU_cortexr4,
+    (TF_CO_PROC),
+    "8R", BASE_ARCH_8R,
+    {
+      ISA_ARMv8r,isa_bit_crc32,
+      isa_nobit
+    },
+    NULL
+  },
+  {
     "iwmmxt", TARGET_CPU_iwmmxt,
     (TF_LDSCHED | TF_STRONG | TF_XSCALE),
     "5TE", BASE_ARCH_5TE,
diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
index fc5d935182ba70de5ab2aefeec492318f42e95c5..be1f0ca4e38ae76683b77d8c3b79a066e62325d7 100644
--- a/gcc/config/arm/arm-cpus.in
+++ b/gcc/config/arm/arm-cpus.in
@@ -287,6 +287,20 @@ begin arch armv8-m.main+dsp
  isa ARMv8m_main bit_ARMv7em
 end arch armv8-m.main+dsp
 
+begin arch armv8-r
+ tune for cortex-r4
+ tune flags CO_PROC
+ base 8R
+ isa ARMv8r
+end arch armv8-r
+
+begin arch armv8-r+crc
+ tune for cortex-r4
+ tune flags CO_PROC
+ base 8R
+ isa ARMv8r bit_crc32
+end arch armv8-r+crc
+
 begin arch iwmmxt
  tune for iwmmxt
  tune flags LDSCHED STRONG XSCALE
diff --git a/gcc/config/arm/arm-isa.h b/gcc/config/arm/arm-isa.h
index 6050bca95587f68a3671dd2144cf845b83da3692..24ec398b346f8effb346235d6f3ab20eb6f70e0f 100644
--- a/gcc/config/arm/arm-isa.h
+++ b/gcc/config/arm/arm-isa.h
@@ -125,6 +125,7 @@ enum isa_feature
 #define ISA_ARMv8_2a	ISA_ARMv8_1a, isa_bit_ARMv8_2
 #define ISA_ARMv8m_base ISA_ARMv6m, isa_bit_ARMv8, isa_bit_cmse, isa_bit_tdiv
 #define ISA_ARMv8m_main ISA_ARMv7m, isa_bit_ARMv8, isa_bit_cmse
+#define ISA_ARMv8r	ISA_ARMv8a
 
 /* List of all FPU bits to strip out if -mfpu is used to override the
    default.  isa_bit_fp16 is deliberately missing from this list.  */
diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt
index cbcd85d9906d1fc797ab33b3d61969f32b9cc566..7bab5de5a39e9192c97851929b83175648158cdf 100644
--- a/gcc/config/arm/arm-tables.opt
+++ b/gcc/config/arm/arm-tables.opt
@@ -461,10 +461,16 @@ EnumValue
 Enum(arm_arch) String(armv8-m.main+dsp) Value(33)
 
 EnumValue
-Enum(arm_arch) String(iwmmxt) Value(34)
+Enum(arm_arch) String(armv8-r) Value(34)
 
 EnumValue
-Enum(arm_arch) String(iwmmxt2) Value(35)
+Enum(arm_arch) String(armv8-r+crc) Value(35)
+
+EnumValue
+Enum(arm_arch) String(iwmmxt) Value(36)
+
+EnumValue
+Enum(arm_arch) String(iwmmxt2) Value(37)
 
 Enum
 Name(arm_fpu) Type(enum fpu_type)
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index e95eda358a54ca0804cfbb9acc0801835c3d7bfb..0b231214cd49b4217a3b9af05acb25b6e73a287b 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -373,7 +373,8 @@ enum base_architecture
   BASE_ARCH_7EM = 7,
   BASE_ARCH_8A = 8,
   BASE_ARCH_8M_BASE = 8,
-  BASE_ARCH_8M_MAIN = 8
+  BASE_ARCH_8M_MAIN = 8,
+  BASE_ARCH_8R = 8
 };
 
 /* The major revision number of the ARM Architecture implemented by the target.  */
diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h
index 56a4a4750428fa76cd5305b71a01d7ff7aa4256f..c394ac805c7577113ed72b31a06ff93dc7f5f490 100644
--- a/gcc/config/arm/bpabi.h
+++ b/gcc/config/arm/bpabi.h
@@ -99,6 +99,8 @@
    |march=armv8-m.base|mcpu=cortex-m23			\
    |march=armv8-m.main					\
    |march=armv8-m.main+dsp|mcpu=cortex-m33		\
+   |march-armv8-r					\
+   |march-armv8-r+crc					\
    :%{!r:--be8}}}"
 #else
 #define BE8_LINK_SPEC \
@@ -139,6 +141,8 @@
    |march=armv8-m.base|mcpu=cortex-m23			\
    |march=armv8-m.main					\
    |march=armv8-m.main+dsp|mcpu=cortex-m33		\
+   |march=armv8-r					\
+   |march=armv8-r+crc					\
    :%{!r:--be8}}}"
 #endif
 
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index c205023d59cf9bb495c58a3a08461736cce1ad66..9ea580626749dc9d27bb72d56bbbef6a474a5055 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -15147,7 +15147,8 @@ of the @option{-mcpu=} option.  Permissible names are: @samp{armv2},
 @samp{armv7}, @samp{armv7-a}, @samp{armv7-m}, @samp{armv7-r}, @samp{armv7e-m},
 @samp{armv7ve}, @samp{armv8-a}, @samp{armv8-a+crc}, @samp{armv8.1-a},
 @samp{armv8.1-a+crc}, @samp{armv8-m.base}, @samp{armv8-m.main},
-@samp{armv8-m.main+dsp}, @samp{iwmmxt}, @samp{iwmmxt2}.
+@samp{armv8-m.main+dsp}, @samp{armv8-r}, , @samp{armv8-r+crc},
+@samp{iwmmxt}, @samp{iwmmxt2}.
 
 Architecture revisions older than @samp{armv4t} are deprecated.
 
@@ -15161,6 +15162,8 @@ compatibility.
 extensions.
 
 @option{-march=armv8-a+crc} enables code generation for the ARMv8-A
+architecture together with the optional CRC32 extensions.  Similarly,
+@option{-march=armv8-r+crc} enables code generation for the ARMv8-R
 architecture together with the optional CRC32 extensions.
 
 @option{-march=armv8.1-a} enables compiler support for the ARMv8.1-A
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 95a1c500c28a0612835436787a55c51bb1866fea..92cafc52b201d610fe30f57e020b29a736c01a09 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3781,7 +3781,8 @@ foreach { armfunc armflag armdef } {
 	v8_1a "-march=armv8.1a" __ARM_ARCH_8A__
 	v8_2a "-march=armv8.2a" __ARM_ARCH_8A__
 	v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft" __ARM_ARCH_8M_BASE__
-	v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } {
+	v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__
+	v8r "-march=armv8-r" __ARM_ARCH_8R__ } {
     eval [string map [list FUNC $armfunc FLAG $armflag DEF $armdef ] {
 	proc check_effective_target_arm_arch_FUNC_ok { } {
 	    if { [ string match "*-marm*" "FLAG" ] &&
diff --git a/libgcc/config/arm/lib1funcs.S b/libgcc/config/arm/lib1funcs.S
index 89ebebcd68a790c6bec140e4a8bd5a3b44dce291..8d8c3cead5f77f6dfeb2887e68483119ee3a400a 100644
--- a/libgcc/config/arm/lib1funcs.S
+++ b/libgcc/config/arm/lib1funcs.S
@@ -109,7 +109,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #endif
 
 #if defined(__ARM_ARCH_8A__) || defined(__ARM_ARCH_8M_BASE__) \
-	|| defined(__ARM_ARCH_8M_MAIN__)
+	|| defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8R__)
 # define __ARM_ARCH__ 8
 #endif
 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH 3/3, GCC/ARM] Add support for ARM Cortex-R52 processor
  2017-06-29 13:52 [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R Thomas Preudhomme
  2017-06-29 13:55 ` [PATCH 1/3, GCC/ARM] Add MIDR info for ARM Cortex-R7 and Cortex-R8 Thomas Preudhomme
  2017-06-29 13:56 ` [PATCH 2/3, GCC/ARM] Add support for ARMv8-R architecture Thomas Preudhomme
@ 2017-06-29 13:57 ` Thomas Preudhomme
  2017-06-29 15:13   ` Thomas Preudhomme
  2017-06-29 14:34 ` [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R Christophe Lyon
  3 siblings, 1 reply; 19+ messages in thread
From: Thomas Preudhomme @ 2017-06-29 13:57 UTC (permalink / raw)
  To: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

[-- Attachment #1: Type: text/plain, Size: 806 bytes --]

Hi,

This patch adds support for the ARM Cortex-R52 processor rencently
announced.

[1] https://developer.arm.com/products/processors/cortex-r/cortex-r52

ChangeLog entry is as follows:

*** gcc/ChangeLog ***

2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/arm/arm-cpus.in (cortex-r52): Add new entry.
	* config/arm/arm-cpu.h: Regenerate.
	* config/arm/arm-cpu-cdata.h: Regenerate.
	* config/arm/arm-cpu-data.h: Regenerate.
	* config/arm/arm-tables.opt: Regenerate.
	* config/arm/bpabi.h (BE8_LINK_SPEC): Add entry for ARM Cortex-R52.
	* config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
	Cortex-R52.
	* doc/invoke.texi: Mention -mtune=cortex-r52.

Tested by building an arm-none-eabi GCC cross-compiler targeting Cortex-R52.

Is this ok for stage1?

Best regards,

Thomas

[-- Attachment #2: 3_add_cortexr52_support.patch --]
[-- Type: text/x-patch, Size: 4445 bytes --]

diff --git a/gcc/config/arm/arm-cpu-cdata.h b/gcc/config/arm/arm-cpu-cdata.h
index 0a122f5febaaceeeb5a405cb5a64e1edd9b044f3..043b5b2db09146b5686a5fe602f907164f9d84c5 100644
--- a/gcc/config/arm/arm-cpu-cdata.h
+++ b/gcc/config/arm/arm-cpu-cdata.h
@@ -803,6 +803,13 @@ static const struct arm_arch_core_flag arm_arch_core_flags[] =
     },
   },
   {
+    "cortex-r52",
+    {
+      ISA_ARMv8r,isa_bit_crc32,
+      isa_nobit
+    },
+  },
+  {
     "armv2",
     {
       ISA_ARMv2,isa_bit_mode26,
diff --git a/gcc/config/arm/arm-cpu-data.h b/gcc/config/arm/arm-cpu-data.h
index 48c1d88032c1c5dc7c6cba71511f79fe9f2533ea..0677132382fad2f1baf1fbdf5c0b03fe32f752e2 100644
--- a/gcc/config/arm/arm-cpu-data.h
+++ b/gcc/config/arm/arm-cpu-data.h
@@ -1132,6 +1132,16 @@ static const struct processors all_cores[] =
     },
     &arm_v7m_tune
   },
+  {
+    "cortex-r52", TARGET_CPU_cortexr52,
+    (TF_LDSCHED),
+    "8R", BASE_ARCH_8R,
+    {
+      ISA_ARMv8r,isa_bit_crc32,
+      isa_nobit
+    },
+    &arm_cortex_tune
+  },
   {NULL, TARGET_CPU_arm_none, 0, NULL, BASE_ARCH_0, {isa_nobit}, NULL}
 };
 
diff --git a/gcc/config/arm/arm-cpu.h b/gcc/config/arm/arm-cpu.h
index cd282db02f56f4416ff82eb3d8d569cd99fb0d41..4d6ea61d07dc98540f0f75679d8ef6f7eafc10bb 100644
--- a/gcc/config/arm/arm-cpu.h
+++ b/gcc/config/arm/arm-cpu.h
@@ -132,6 +132,7 @@ enum processor_type
   TARGET_CPU_cortexa73cortexa53,
   TARGET_CPU_cortexm23,
   TARGET_CPU_cortexm33,
+  TARGET_CPU_cortexr52,
   TARGET_CPU_arm_none
 };
 
diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
index be1f0ca4e38ae76683b77d8c3b79a066e62325d7..139aa561d3f918655978e44b5bcb6c0b50747a08 100644
--- a/gcc/config/arm/arm-cpus.in
+++ b/gcc/config/arm/arm-cpus.in
@@ -1104,6 +1104,16 @@ begin cpu cortex-m33
  costs v7m
 end cpu cortex-m33
 
+
+# V8 R-profile implementations.
+begin cpu cortex-r52
+ cname cortexr52
+ tune flags LDSCHED
+ architecture armv8-r+crc
+ costs cortex
+end cpu cortex-r52
+
+
 # FPU entries
 # format:
 # begin fpu <name>
diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt
index 7bab5de5a39e9192c97851929b83175648158cdf..ccd1a7661fb97938ddea7670eebe1a0f48efb929 100644
--- a/gcc/config/arm/arm-tables.opt
+++ b/gcc/config/arm/arm-tables.opt
@@ -354,6 +354,9 @@ Enum(processor_type) String(cortex-m23) Value( TARGET_CPU_cortexm23)
 EnumValue
 Enum(processor_type) String(cortex-m33) Value( TARGET_CPU_cortexm33)
 
+EnumValue
+Enum(processor_type) String(cortex-r52) Value( TARGET_CPU_cortexr52)
+
 Enum
 Name(arm_arch) Type(int)
 Known ARM architectures (for use with the -march= option):
diff --git a/gcc/config/arm/bpabi.h b/gcc/config/arm/bpabi.h
index c394ac805c7577113ed72b31a06ff93dc7f5f490..c3dca1cd4833afd67e56a276ef0e9c1e17f4fae4 100644
--- a/gcc/config/arm/bpabi.h
+++ b/gcc/config/arm/bpabi.h
@@ -100,7 +100,7 @@
    |march=armv8-m.main					\
    |march=armv8-m.main+dsp|mcpu=cortex-m33		\
    |march-armv8-r					\
-   |march-armv8-r+crc					\
+   |march-armv8-r+crc|mcpu=cortex-r52			\
    :%{!r:--be8}}}"
 #else
 #define BE8_LINK_SPEC \
@@ -142,7 +142,7 @@
    |march=armv8-m.main					\
    |march=armv8-m.main+dsp|mcpu=cortex-m33		\
    |march=armv8-r					\
-   |march=armv8-r+crc					\
+   |march=armv8-r+crc|mcpu=cortex-r52			\
    :%{!r:--be8}}}"
 #endif
 
diff --git a/gcc/config/arm/driver-arm.c b/gcc/config/arm/driver-arm.c
index 29873d57a1e45fd989f6ff01dd4a2ae7320d93bb..00f8128e6911a79f83da03bf731c1cc9127c7285 100644
--- a/gcc/config/arm/driver-arm.c
+++ b/gcc/config/arm/driver-arm.c
@@ -56,6 +56,7 @@ static struct vendor_cpu arm_cpu_table[] = {
     {"0xc15", "armv7-r", "cortex-r5"},
     {"0xc17", "armv7-r", "cortex-r7"},
     {"0xc18", "armv7-r", "cortex-r8"},
+    {"0xd13", "armv8-r+crc", "cortex-r52"},
     {"0xc20", "armv6-m", "cortex-m0"},
     {"0xc21", "armv6-m", "cortex-m1"},
     {"0xc23", "armv7-m", "cortex-m3"},
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 9ea580626749dc9d27bb72d56bbbef6a474a5055..a871837426485dd6a87c541386964bf85dfafde7 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -15212,6 +15212,7 @@ Permissible names are: @samp{arm2}, @samp{arm250},
 @samp{cortex-a32}, @samp{cortex-a35}, @samp{cortex-a53}, @samp{cortex-a57},
 @samp{cortex-a72}, @samp{cortex-a73}, @samp{cortex-r4},
 @samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-r8},
+@samp{cortex-r52},
 @samp{cortex-m33},
 @samp{cortex-m23},
 @samp{cortex-m7},

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R
  2017-06-29 13:52 [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R Thomas Preudhomme
                   ` (2 preceding siblings ...)
  2017-06-29 13:57 ` [PATCH 3/3, GCC/ARM] Add support for ARM Cortex-R52 processor Thomas Preudhomme
@ 2017-06-29 14:34 ` Christophe Lyon
  2017-06-29 14:37   ` Thomas Preudhomme
  3 siblings, 1 reply; 19+ messages in thread
From: Christophe Lyon @ 2017-06-29 14:34 UTC (permalink / raw)
  To: Thomas Preudhomme
  Cc: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

On 29 June 2017 at 15:52, Thomas Preudhomme
<thomas.preudhomme@foss.arm.com> wrote:
> Hi,
>
> This patch series adds support for the ARMv8-R architecture[1] and ARM
> Cortex-R52[2] to GCC. The patch series consist of the following patches:

Hi Thomas,

I think you need to rebase your patch because Richard's recent series
changed the contents
of arm-cpu-data.h and arm-cpu-cdata.h.

Why do you link armv8-r architecture definition to cortex-r4?

>
> [ 1/3] Add missing MIDR information for ARM Cortex-R7 and Cortex-R8
> processor
> [ 2/3] Add support for ARMv8-R architecture
> [ 3/3] Add support for ARM Cortex-R52
>
> [1]
> https://developer.arm.com/products/architecture/r-profile/docs/ddi0568/latest/arm-architecture-reference-manual-supplement-armv8-for-the-armv8-r-aarch32-architecture-profile
> [2] https://developer.arm.com/products/processors/cortex-r/cortex-r52

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R
  2017-06-29 14:34 ` [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R Christophe Lyon
@ 2017-06-29 14:37   ` Thomas Preudhomme
  2017-06-29 15:12     ` Christophe Lyon
  0 siblings, 1 reply; 19+ messages in thread
From: Thomas Preudhomme @ 2017-06-29 14:37 UTC (permalink / raw)
  To: Christophe Lyon
  Cc: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

On 29/06/17 15:34, Christophe Lyon wrote:
> On 29 June 2017 at 15:52, Thomas Preudhomme
> <thomas.preudhomme@foss.arm.com> wrote:
>> Hi,
>>
>> This patch series adds support for the ARMv8-R architecture[1] and ARM
>> Cortex-R52[2] to GCC. The patch series consist of the following patches:
> 
> Hi Thomas,
> 
> I think you need to rebase your patch because Richard's recent series
> changed the contents
> of arm-cpu-data.h and arm-cpu-cdata.h.

Err yes indeed. Thanks!

> 
> Why do you link armv8-r architecture definition to cortex-r4?

I understand, where did I do such a thing?

Best regards,

Thomas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R
  2017-06-29 14:37   ` Thomas Preudhomme
@ 2017-06-29 15:12     ` Christophe Lyon
  2017-06-29 16:40       ` Thomas Preudhomme
  0 siblings, 1 reply; 19+ messages in thread
From: Christophe Lyon @ 2017-06-29 15:12 UTC (permalink / raw)
  To: Thomas Preudhomme
  Cc: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

On 29 June 2017 at 16:37, Thomas Preudhomme
<thomas.preudhomme@foss.arm.com> wrote:
> On 29/06/17 15:34, Christophe Lyon wrote:
>>
>> On 29 June 2017 at 15:52, Thomas Preudhomme
>> <thomas.preudhomme@foss.arm.com> wrote:
>>>
>>> Hi,
>>>
>>> This patch series adds support for the ARMv8-R architecture[1] and ARM
>>> Cortex-R52[2] to GCC. The patch series consist of the following patches:
>>
>>
>> Hi Thomas,
>>
>> I think you need to rebase your patch because Richard's recent series
>> changed the contents
>> of arm-cpu-data.h and arm-cpu-cdata.h.
>
>
> Err yes indeed. Thanks!
>
>>
>> Why do you link armv8-r architecture definition to cortex-r4?
>
>
> I understand, where did I do such a thing?
>

In patch #2 you have:
diff --git a/gcc/config/arm/arm-cpu-data.h b/gcc/config/arm/arm-cpu-data.h
index d6200f9bdc09a9d0c973853b0152a2800eaf2fe5..48c1d88032c1c5dc7c6cba71511f79fe9f2533ea
100644
--- a/gcc/config/arm/arm-cpu-data.h
+++ b/gcc/config/arm/arm-cpu-data.h
@@ -1478,6 +1478,26 @@ static const struct processors all_architectures[] =
     NULL
   },
   {
+    "armv8-r", TARGET_CPU_cortexr4,
+    (TF_CO_PROC),
+    "8R", BASE_ARCH_8R,
+    {
+      ISA_ARMv8r,
+      isa_nobit
+    },
+    NULL
+  },
+  {
+    "armv8-r+crc", TARGET_CPU_cortexr4,
+    (TF_CO_PROC),
+    "8R", BASE_ARCH_8R,
+    {
+      ISA_ARMv8r,isa_bit_crc32,
+      isa_nobit
+    },
+    NULL
+  },
+  {
     "iwmmxt", TARGET_CPU_iwmmxt,
     (TF_LDSCHED | TF_STRONG | TF_XSCALE),
     "5TE", BASE_ARCH_5TE,

Both entries point to TARGET_CPU_cortexr4. I guess that's because r52
is only defined in patch #3, but then why not update this in patch #3
are replace r4 with r52?

Not sure I'm very clear :-)

Thanks,

Christophe

> Best regards,
>
> Thomas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 2/3, GCC/ARM] Add support for ARMv8-R architecture
  2017-06-29 13:56 ` [PATCH 2/3, GCC/ARM] Add support for ARMv8-R architecture Thomas Preudhomme
@ 2017-06-29 15:13   ` Thomas Preudhomme
  2017-07-06 12:40     ` Thomas Preudhomme
  0 siblings, 1 reply; 19+ messages in thread
From: Thomas Preudhomme @ 2017-06-29 15:13 UTC (permalink / raw)
  To: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

Please ignore this patch. I'll respin the patch on a more recent GCC.

Best regards,

Thomas

On 29/06/17 14:55, Thomas Preudhomme wrote:
> Hi,
> 
> This patch adds support for ARMv8-R architecture [1] which was recently
> announced. User level instructions for ARMv8-R are the same as those in
> ARMv8-A Aarch32 mode so this patch define ARMv8-R to have the same
> features as ARMv8-A in ARM backend.
> 
> [1] 
> https://developer.arm.com/products/architecture/r-profile/docs/ddi0568/latest/arm-architecture-reference-manual-supplement-armv8-for-the-armv8-r-aarch32-architecture-profile 
> 
> 
> ChangeLog entries are as follow:
> 
> *** gcc/ChangeLog ***
> 
> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
> 
>      * config/arm/arm-cpus.in (armv8-r, armv8-r+rcr): Add new entry.
>      * config/arm/arm-cpu-cdata.h: Regenerate.
>      * config/arm/arm-cpu-data.h: Regenerate.
>      * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
>      * config/arm/arm-tables.opt: Regenerate.
>      * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
>      enumerator.
>      * config/arm/bpabi.h (BE8_LINK_SPEC): Add entry for ARMv8-R and
>      ARMv8-R with CRC extensions.
>      * doc/invoke.texi: Mention -march=armv8-r and -march=armv8-r+crc
>      options.  Document meaning of -march=armv8-r+rcr.
> 
> *** gcc/testsuite/ChangeLog ***
> 
> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
> 
>      * lib/target-supports.exp: Generate
>      check_effective_target_arm_arch_v8r_ok, add_options_for_arm_arch_v8r
>      and check_effective_target_arm_arch_v8r_multilib.
> 
> *** libgcc/ChangeLog ***
> 
> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
> 
>      * config/arm/lib1funcs.S: Defined __ARM_ARCH__ to 8 for ARMv8-R.
> 
> Tested by building an arm-none-eabi GCC cross-compiler targetting
> ARMv8-R.
> 
> Is this ok for stage1?
> 
> Best regards,
> 
> Thomas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 3/3, GCC/ARM] Add support for ARM Cortex-R52 processor
  2017-06-29 13:57 ` [PATCH 3/3, GCC/ARM] Add support for ARM Cortex-R52 processor Thomas Preudhomme
@ 2017-06-29 15:13   ` Thomas Preudhomme
  2017-07-14  8:34     ` Thomas Preudhomme
  0 siblings, 1 reply; 19+ messages in thread
From: Thomas Preudhomme @ 2017-06-29 15:13 UTC (permalink / raw)
  To: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

Please ignore this patch. I'll respin the patch on a more recent GCC.

Best regards,

Thomas

On 29/06/17 14:56, Thomas Preudhomme wrote:
> Hi,
> 
> This patch adds support for the ARM Cortex-R52 processor rencently
> announced.
> 
> [1] https://developer.arm.com/products/processors/cortex-r/cortex-r52
> 
> ChangeLog entry is as follows:
> 
> *** gcc/ChangeLog ***
> 
> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
> 
>      * config/arm/arm-cpus.in (cortex-r52): Add new entry.
>      * config/arm/arm-cpu.h: Regenerate.
>      * config/arm/arm-cpu-cdata.h: Regenerate.
>      * config/arm/arm-cpu-data.h: Regenerate.
>      * config/arm/arm-tables.opt: Regenerate.
>      * config/arm/bpabi.h (BE8_LINK_SPEC): Add entry for ARM Cortex-R52.
>      * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
>      Cortex-R52.
>      * doc/invoke.texi: Mention -mtune=cortex-r52.
> 
> Tested by building an arm-none-eabi GCC cross-compiler targeting Cortex-R52.
> 
> Is this ok for stage1?
> 
> Best regards,
> 
> Thomas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R
  2017-06-29 15:12     ` Christophe Lyon
@ 2017-06-29 16:40       ` Thomas Preudhomme
  0 siblings, 0 replies; 19+ messages in thread
From: Thomas Preudhomme @ 2017-06-29 16:40 UTC (permalink / raw)
  To: Christophe Lyon
  Cc: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

On 29/06/17 16:12, Christophe Lyon wrote:
> On 29 June 2017 at 16:37, Thomas Preudhomme
>>
>>>
>>> Why do you link armv8-r architecture definition to cortex-r4?
>>
>>
>> I understand, where did I do such a thing?
>>
> 
> In patch #2 you have:
> diff --git a/gcc/config/arm/arm-cpu-data.h b/gcc/config/arm/arm-cpu-data.h
> index d6200f9bdc09a9d0c973853b0152a2800eaf2fe5..48c1d88032c1c5dc7c6cba71511f79fe9f2533ea
> 100644
> --- a/gcc/config/arm/arm-cpu-data.h
> +++ b/gcc/config/arm/arm-cpu-data.h
> @@ -1478,6 +1478,26 @@ static const struct processors all_architectures[] =
>       NULL
>     },
>     {
> +    "armv8-r", TARGET_CPU_cortexr4,
> +    (TF_CO_PROC),
> +    "8R", BASE_ARCH_8R,
> +    {
> +      ISA_ARMv8r,
> +      isa_nobit
> +    },
> +    NULL
> +  },
> +  {
> +    "armv8-r+crc", TARGET_CPU_cortexr4,
> +    (TF_CO_PROC),
> +    "8R", BASE_ARCH_8R,
> +    {
> +      ISA_ARMv8r,isa_bit_crc32,
> +      isa_nobit
> +    },
> +    NULL
> +  },
> +  {
>       "iwmmxt", TARGET_CPU_iwmmxt,
>       (TF_LDSCHED | TF_STRONG | TF_XSCALE),
>       "5TE", BASE_ARCH_5TE,
> 
> Both entries point to TARGET_CPU_cortexr4. I guess that's because r52
> is only defined in patch #3, but then why not update this in patch #3
> are replace r4 with r52?
> 
> Not sure I'm very clear :-)

You are. I must have forgotten about that setting when working on patch #3. I'll 
update this. Thanks for your vigilance :-)

Best regards,

Thomas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 1/3, GCC/ARM, ping] Add MIDR info for ARM Cortex-R7 and Cortex-R8
  2017-06-29 13:55 ` [PATCH 1/3, GCC/ARM] Add MIDR info for ARM Cortex-R7 and Cortex-R8 Thomas Preudhomme
@ 2017-07-04 13:56   ` Thomas Preudhomme
  2017-09-06 15:12     ` [arm-embedded] " Thomas Preudhomme
  2017-07-04 13:57   ` [PATCH 1/3, GCC/ARM] " Kyrill Tkachov
  1 sibling, 1 reply; 19+ messages in thread
From: Thomas Preudhomme @ 2017-07-04 13:56 UTC (permalink / raw)
  To: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

[-- Attachment #1: Type: text/plain, Size: 572 bytes --]

Ping?

Best regards,

Thomas

On 29/06/17 14:55, Thomas Preudhomme wrote:
> Hi,
> 
> The driver is missing MIDR information for processors ARM Cortex-R7 and
> Cortex-R8 to support -march/-mcpu/-mtune=native on the command line.
> This patch adds the missing information.
> 
> ChangeLog entry is as follows:
> 
> *** gcc/ChangeLog ***
> 
> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
> 
>      * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
>      Cortex-R7 and Cortex-R8 processors.
> 
> Is this ok for master?
> 
> Best regards,
> 
> Thomas

[-- Attachment #2: 1_add_cortex_r7_r8_midr.patch --]
[-- Type: text/x-patch, Size: 623 bytes --]

diff --git a/gcc/config/arm/driver-arm.c b/gcc/config/arm/driver-arm.c
index b034f13fda63f5892bbd9879d72f4b02e2632d69..29873d57a1e45fd989f6ff01dd4a2ae7320d93bb 100644
--- a/gcc/config/arm/driver-arm.c
+++ b/gcc/config/arm/driver-arm.c
@@ -54,6 +54,8 @@ static struct vendor_cpu arm_cpu_table[] = {
     {"0xd09", "armv8-a+crc", "cortex-a73"},
     {"0xc14", "armv7-r", "cortex-r4"},
     {"0xc15", "armv7-r", "cortex-r5"},
+    {"0xc17", "armv7-r", "cortex-r7"},
+    {"0xc18", "armv7-r", "cortex-r8"},
     {"0xc20", "armv6-m", "cortex-m0"},
     {"0xc21", "armv6-m", "cortex-m1"},
     {"0xc23", "armv7-m", "cortex-m3"},

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 1/3, GCC/ARM] Add MIDR info for ARM Cortex-R7 and Cortex-R8
  2017-06-29 13:55 ` [PATCH 1/3, GCC/ARM] Add MIDR info for ARM Cortex-R7 and Cortex-R8 Thomas Preudhomme
  2017-07-04 13:56   ` [PATCH 1/3, GCC/ARM, ping] " Thomas Preudhomme
@ 2017-07-04 13:57   ` Kyrill Tkachov
  1 sibling, 0 replies; 19+ messages in thread
From: Kyrill Tkachov @ 2017-07-04 13:57 UTC (permalink / raw)
  To: Thomas Preudhomme, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches


On 29/06/17 14:55, Thomas Preudhomme wrote:
> Hi,
>
> The driver is missing MIDR information for processors ARM Cortex-R7 and
> Cortex-R8 to support -march/-mcpu/-mtune=native on the command line.
> This patch adds the missing information.
>
> ChangeLog entry is as follows:
>
> *** gcc/ChangeLog ***
>
> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>
>     * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
>     Cortex-R7 and Cortex-R8 processors.
>
> Is this ok for master?
>

Ok.
Thanks,
Kyrill

> Best regards,
>
> Thomas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 2/3, GCC/ARM] Add support for ARMv8-R architecture
  2017-06-29 15:13   ` Thomas Preudhomme
@ 2017-07-06 12:40     ` Thomas Preudhomme
  2017-07-06 13:00       ` Richard Earnshaw (lists)
  2017-09-06 15:15       ` [arm-embedded] " Thomas Preudhomme
  0 siblings, 2 replies; 19+ messages in thread
From: Thomas Preudhomme @ 2017-07-06 12:40 UTC (permalink / raw)
  To: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

[-- Attachment #1: Type: text/plain, Size: 3012 bytes --]

Please find an updated patch in attachment. ChangeLog entry are now as follows:

*** gcc/ChangeLog ***

2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/arm/arm-cpus.in (armv8-r): Add new entry.
	* config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
	* config/arm/arm-tables.opt: Regenerate.
	* config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
	enumerator.
	* doc/invoke.texi: Mention -march=armv8-r and its extensions.

*** gcc/testsuite/ChangeLog ***

2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* lib/target-supports.exp: Generate
	check_effective_target_arm_arch_v8r_ok, add_options_for_arm_arch_v8r
	and check_effective_target_arm_arch_v8r_multilib.

*** libgcc/ChangeLog ***

2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/arm/lib1funcs.S: Defined __ARM_ARCH__ to 8 for ARMv8-R.


Tested by building an arm-none-eabi GCC cross-compiler targetting
ARMv8-R.

Is this ok for stage1?

Best regards,

Thomas

Best regards,

Thomas

On 29/06/17 16:13, Thomas Preudhomme wrote:
> Please ignore this patch. I'll respin the patch on a more recent GCC.
> 
> Best regards,
> 
> Thomas
> 
> On 29/06/17 14:55, Thomas Preudhomme wrote:
>> Hi,
>>
>> This patch adds support for ARMv8-R architecture [1] which was recently
>> announced. User level instructions for ARMv8-R are the same as those in
>> ARMv8-A Aarch32 mode so this patch define ARMv8-R to have the same
>> features as ARMv8-A in ARM backend.
>>
>> [1] 
>> https://developer.arm.com/products/architecture/r-profile/docs/ddi0568/latest/arm-architecture-reference-manual-supplement-armv8-for-the-armv8-r-aarch32-architecture-profile 
>>
>>
>> ChangeLog entries are as follow:
>>
>> *** gcc/ChangeLog ***
>>
>> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>
>>      * config/arm/arm-cpus.in (armv8-r, armv8-r+rcr): Add new entry.
>>      * config/arm/arm-cpu-cdata.h: Regenerate.
>>      * config/arm/arm-cpu-data.h: Regenerate.
>>      * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
>>      * config/arm/arm-tables.opt: Regenerate.
>>      * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
>>      enumerator.
>>      * config/arm/bpabi.h (BE8_LINK_SPEC): Add entry for ARMv8-R and
>>      ARMv8-R with CRC extensions.
>>      * doc/invoke.texi: Mention -march=armv8-r and -march=armv8-r+crc
>>      options.  Document meaning of -march=armv8-r+rcr.
>>
>> *** gcc/testsuite/ChangeLog ***
>>
>> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>
>>      * lib/target-supports.exp: Generate
>>      check_effective_target_arm_arch_v8r_ok, add_options_for_arm_arch_v8r
>>      and check_effective_target_arm_arch_v8r_multilib.
>>
>> *** libgcc/ChangeLog ***
>>
>> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>
>>      * config/arm/lib1funcs.S: Defined __ARM_ARCH__ to 8 for ARMv8-R.
>>
>> Tested by building an arm-none-eabi GCC cross-compiler targetting
>> ARMv8-R.
>>
>> Is this ok for stage1?
>>
>> Best regards,
>>
>> Thomas

[-- Attachment #2: 2_add_armv8r_support.patch --]
[-- Type: text/x-patch, Size: 4958 bytes --]

diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
index 946d543ebb29416da9b4928161607cccacaa78a7..f35128acb7d68c6a0592355b9d3d56ee8f826aca 100644
--- a/gcc/config/arm/arm-cpus.in
+++ b/gcc/config/arm/arm-cpus.in
@@ -380,6 +380,22 @@ begin arch armv8-m.main
  option nodsp remove bit_ARMv7em
 end arch armv8-m.main
 
+begin arch armv8-r
+ tune for cortex-r4
+ tune flags CO_PROC
+ base 8R
+ profile R
+ isa ARMv8r
+ option crc add bit_crc32
+# fp.sp => fp-armv8 (d16); simd => simd + fp-armv8 + d32 + double precision
+# note: no fp option for fp-armv8 (d16) + double precision at the moment
+ option fp.sp add FP_ARMv8
+ option simd add FP_ARMv8 NEON
+ option crypto add FP_ARMv8 CRYPTO
+ option nocrypto remove ALL_CRYPTO
+ option nofp remove ALL_FP
+end arch armv8-r
+
 begin arch iwmmxt
  tune for iwmmxt
  tune flags LDSCHED STRONG XSCALE
diff --git a/gcc/config/arm/arm-isa.h b/gcc/config/arm/arm-isa.h
index c0c2ccee330f2313951e980c5d399ae5d21005d6..0d66a0400c517668db023fc66ff43e26d43add51 100644
--- a/gcc/config/arm/arm-isa.h
+++ b/gcc/config/arm/arm-isa.h
@@ -127,6 +127,7 @@ enum isa_feature
 #define ISA_ARMv8_2a	ISA_ARMv8_1a, isa_bit_ARMv8_2
 #define ISA_ARMv8m_base ISA_ARMv6m, isa_bit_ARMv8, isa_bit_cmse, isa_bit_tdiv
 #define ISA_ARMv8m_main ISA_ARMv7m, isa_bit_ARMv8, isa_bit_cmse
+#define ISA_ARMv8r	ISA_ARMv8a
 
 /* List of all cryptographic extensions to stripout if crypto is
    disabled.  Currently, that's trivial, but we define it anyway for
diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt
index 5e2df9dd0716293fb551b6582a8c9c2c46fdaa90..51678c2566e841894c5c0e9c613c8c0f832e9988 100644
--- a/gcc/config/arm/arm-tables.opt
+++ b/gcc/config/arm/arm-tables.opt
@@ -455,10 +455,13 @@ EnumValue
 Enum(arm_arch) String(armv8-m.main) Value(30)
 
 EnumValue
-Enum(arm_arch) String(iwmmxt) Value(31)
+Enum(arm_arch) String(armv8-r) Value(31)
 
 EnumValue
-Enum(arm_arch) String(iwmmxt2) Value(32)
+Enum(arm_arch) String(iwmmxt) Value(32)
+
+EnumValue
+Enum(arm_arch) String(iwmmxt2) Value(33)
 
 Enum
 Name(arm_fpu) Type(enum fpu_type)
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index c803d4461c08436ef5f8468f6018e3226ccf33f8..315622212a5ce10d0c771535fe31f63c3be16444 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -384,7 +384,8 @@ enum base_architecture
   BASE_ARCH_7EM = 7,
   BASE_ARCH_8A = 8,
   BASE_ARCH_8M_BASE = 8,
-  BASE_ARCH_8M_MAIN = 8
+  BASE_ARCH_8M_MAIN = 8,
+  BASE_ARCH_8R = 8
 };
 
 /* The major revision number of the ARM Architecture implemented by the target.  */
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 3e5cee8649ef9452e2a7e5a8603318ce11e2baff..d0b90503cedaae32bc83c7fd1fdd78b2a4d7184b 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -15218,6 +15218,7 @@ Permissible names are:
 @samp{armv7}, @samp{armv7-a}, @samp{armv7ve}, 
 @samp{armv8-a}, @samp{armv8.1-a}, @samp{armv8.2-a},
 @samp{armv7-r},
+@samp{armv8-r},
 @samp{armv6-m}, @samp{armv6s-m},
 @samp{armv7-m}, @samp{armv7e-m},
 @samp{armv8-m.base}, @samp{armv8-m.main},
@@ -15484,7 +15485,20 @@ The single- and double-precision floating-point instructions.
 
 @item +nofp
 Disable the floating-point extension.
+@end table
 
+@item armv8-r
+@table @samp
+@item +crc
+The Cyclic Redundancy Check (CRC) instructions.
+@item +simd
+The ARMv8 Advanced SIMD and floating-point instructions.
+@item +crypto
+The cryptographic instructions.
+@item +nocrypto
+Disable the cryptographic isntructions.
+@item +nofp
+Disable the floating-point, Advanced SIMD and cryptographic instructions.
 @end table
 
 @end table
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index fe5e77756404d603f04d674bb5ca872956d4b7ad..83d0c7ca441570dbf4d52641d12073f17d06e025 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3890,7 +3890,8 @@ foreach { armfunc armflag armdefs } {
 	v8_2a "-march=armv8.2a" __ARM_ARCH_8A__
 	v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft"
 		__ARM_ARCH_8M_BASE__
-	v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } {
+	v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__
+	v8r "-march=armv8-r" __ARM_ARCH_8R__ } {
     eval [string map [list FUNC $armfunc FLAG $armflag DEFS $armdefs ] {
 	proc check_effective_target_arm_arch_FUNC_ok { } {
 	    if { [ string match "*-marm*" "FLAG" ] &&
diff --git a/libgcc/config/arm/lib1funcs.S b/libgcc/config/arm/lib1funcs.S
index 89ebebcd68a790c6bec140e4a8bd5a3b44dce291..8d8c3cead5f77f6dfeb2887e68483119ee3a400a 100644
--- a/libgcc/config/arm/lib1funcs.S
+++ b/libgcc/config/arm/lib1funcs.S
@@ -109,7 +109,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #endif
 
 #if defined(__ARM_ARCH_8A__) || defined(__ARM_ARCH_8M_BASE__) \
-	|| defined(__ARM_ARCH_8M_MAIN__)
+	|| defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8R__)
 # define __ARM_ARCH__ 8
 #endif
 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 2/3, GCC/ARM] Add support for ARMv8-R architecture
  2017-07-06 12:40     ` Thomas Preudhomme
@ 2017-07-06 13:00       ` Richard Earnshaw (lists)
  2017-09-06 15:15       ` [arm-embedded] " Thomas Preudhomme
  1 sibling, 0 replies; 19+ messages in thread
From: Richard Earnshaw (lists) @ 2017-07-06 13:00 UTC (permalink / raw)
  To: Thomas Preudhomme, Kyrill Tkachov, Ramana Radhakrishnan, gcc-patches

On 06/07/17 13:40, Thomas Preudhomme wrote:
> Please find an updated patch in attachment. ChangeLog entry are now as
> follows:
> 
> *** gcc/ChangeLog ***
> 
> 2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
> 
>     * config/arm/arm-cpus.in (armv8-r): Add new entry.
>     * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
>     * config/arm/arm-tables.opt: Regenerate.
>     * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
>     enumerator.
>     * doc/invoke.texi: Mention -march=armv8-r and its extensions.
> 
> *** gcc/testsuite/ChangeLog ***
> 
> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
> 
>     * lib/target-supports.exp: Generate
>     check_effective_target_arm_arch_v8r_ok, add_options_for_arm_arch_v8r
>     and check_effective_target_arm_arch_v8r_multilib.
> 
> *** libgcc/ChangeLog ***
> 
> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
> 
>     * config/arm/lib1funcs.S: Defined __ARM_ARCH__ to 8 for ARMv8-R.
> 

OK.


R.

> 
> Tested by building an arm-none-eabi GCC cross-compiler targetting
> ARMv8-R.
> 
> Is this ok for stage1?
> 
> Best regards,
> 
> Thomas
> 
> Best regards,
> 
> Thomas
> 
> On 29/06/17 16:13, Thomas Preudhomme wrote:
>> Please ignore this patch. I'll respin the patch on a more recent GCC.
>>
>> Best regards,
>>
>> Thomas
>>
>> On 29/06/17 14:55, Thomas Preudhomme wrote:
>>> Hi,
>>>
>>> This patch adds support for ARMv8-R architecture [1] which was recently
>>> announced. User level instructions for ARMv8-R are the same as those in
>>> ARMv8-A Aarch32 mode so this patch define ARMv8-R to have the same
>>> features as ARMv8-A in ARM backend.
>>>
>>> [1]
>>> https://developer.arm.com/products/architecture/r-profile/docs/ddi0568/latest/arm-architecture-reference-manual-supplement-armv8-for-the-armv8-r-aarch32-architecture-profile
>>>
>>>
>>> ChangeLog entries are as follow:
>>>
>>> *** gcc/ChangeLog ***
>>>
>>> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>>
>>>      * config/arm/arm-cpus.in (armv8-r, armv8-r+rcr): Add new entry.
>>>      * config/arm/arm-cpu-cdata.h: Regenerate.
>>>      * config/arm/arm-cpu-data.h: Regenerate.
>>>      * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
>>>      * config/arm/arm-tables.opt: Regenerate.
>>>      * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
>>>      enumerator.
>>>      * config/arm/bpabi.h (BE8_LINK_SPEC): Add entry for ARMv8-R and
>>>      ARMv8-R with CRC extensions.
>>>      * doc/invoke.texi: Mention -march=armv8-r and -march=armv8-r+crc
>>>      options.  Document meaning of -march=armv8-r+rcr.
>>>
>>> *** gcc/testsuite/ChangeLog ***
>>>
>>> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>>
>>>      * lib/target-supports.exp: Generate
>>>      check_effective_target_arm_arch_v8r_ok,
>>> add_options_for_arm_arch_v8r
>>>      and check_effective_target_arm_arch_v8r_multilib.
>>>
>>> *** libgcc/ChangeLog ***
>>>
>>> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>>
>>>      * config/arm/lib1funcs.S: Defined __ARM_ARCH__ to 8 for ARMv8-R.
>>>
>>> Tested by building an arm-none-eabi GCC cross-compiler targetting
>>> ARMv8-R.
>>>
>>> Is this ok for stage1?
>>>
>>> Best regards,
>>>
>>> Thomas
> 
> 2_add_armv8r_support.patch
> 
> 
> diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
> index 946d543ebb29416da9b4928161607cccacaa78a7..f35128acb7d68c6a0592355b9d3d56ee8f826aca 100644
> --- a/gcc/config/arm/arm-cpus.in
> +++ b/gcc/config/arm/arm-cpus.in
> @@ -380,6 +380,22 @@ begin arch armv8-m.main
>   option nodsp remove bit_ARMv7em
>  end arch armv8-m.main
>  
> +begin arch armv8-r
> + tune for cortex-r4
> + tune flags CO_PROC
> + base 8R
> + profile R
> + isa ARMv8r
> + option crc add bit_crc32
> +# fp.sp => fp-armv8 (d16); simd => simd + fp-armv8 + d32 + double precision
> +# note: no fp option for fp-armv8 (d16) + double precision at the moment
> + option fp.sp add FP_ARMv8
> + option simd add FP_ARMv8 NEON
> + option crypto add FP_ARMv8 CRYPTO
> + option nocrypto remove ALL_CRYPTO
> + option nofp remove ALL_FP
> +end arch armv8-r
> +
>  begin arch iwmmxt
>   tune for iwmmxt
>   tune flags LDSCHED STRONG XSCALE
> diff --git a/gcc/config/arm/arm-isa.h b/gcc/config/arm/arm-isa.h
> index c0c2ccee330f2313951e980c5d399ae5d21005d6..0d66a0400c517668db023fc66ff43e26d43add51 100644
> --- a/gcc/config/arm/arm-isa.h
> +++ b/gcc/config/arm/arm-isa.h
> @@ -127,6 +127,7 @@ enum isa_feature
>  #define ISA_ARMv8_2a	ISA_ARMv8_1a, isa_bit_ARMv8_2
>  #define ISA_ARMv8m_base ISA_ARMv6m, isa_bit_ARMv8, isa_bit_cmse, isa_bit_tdiv
>  #define ISA_ARMv8m_main ISA_ARMv7m, isa_bit_ARMv8, isa_bit_cmse
> +#define ISA_ARMv8r	ISA_ARMv8a
>  
>  /* List of all cryptographic extensions to stripout if crypto is
>     disabled.  Currently, that's trivial, but we define it anyway for
> diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt
> index 5e2df9dd0716293fb551b6582a8c9c2c46fdaa90..51678c2566e841894c5c0e9c613c8c0f832e9988 100644
> --- a/gcc/config/arm/arm-tables.opt
> +++ b/gcc/config/arm/arm-tables.opt
> @@ -455,10 +455,13 @@ EnumValue
>  Enum(arm_arch) String(armv8-m.main) Value(30)
>  
>  EnumValue
> -Enum(arm_arch) String(iwmmxt) Value(31)
> +Enum(arm_arch) String(armv8-r) Value(31)
>  
>  EnumValue
> -Enum(arm_arch) String(iwmmxt2) Value(32)
> +Enum(arm_arch) String(iwmmxt) Value(32)
> +
> +EnumValue
> +Enum(arm_arch) String(iwmmxt2) Value(33)
>  
>  Enum
>  Name(arm_fpu) Type(enum fpu_type)
> diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
> index c803d4461c08436ef5f8468f6018e3226ccf33f8..315622212a5ce10d0c771535fe31f63c3be16444 100644
> --- a/gcc/config/arm/arm.h
> +++ b/gcc/config/arm/arm.h
> @@ -384,7 +384,8 @@ enum base_architecture
>    BASE_ARCH_7EM = 7,
>    BASE_ARCH_8A = 8,
>    BASE_ARCH_8M_BASE = 8,
> -  BASE_ARCH_8M_MAIN = 8
> +  BASE_ARCH_8M_MAIN = 8,
> +  BASE_ARCH_8R = 8
>  };
>  
>  /* The major revision number of the ARM Architecture implemented by the target.  */
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 3e5cee8649ef9452e2a7e5a8603318ce11e2baff..d0b90503cedaae32bc83c7fd1fdd78b2a4d7184b 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -15218,6 +15218,7 @@ Permissible names are:
>  @samp{armv7}, @samp{armv7-a}, @samp{armv7ve}, 
>  @samp{armv8-a}, @samp{armv8.1-a}, @samp{armv8.2-a},
>  @samp{armv7-r},
> +@samp{armv8-r},
>  @samp{armv6-m}, @samp{armv6s-m},
>  @samp{armv7-m}, @samp{armv7e-m},
>  @samp{armv8-m.base}, @samp{armv8-m.main},
> @@ -15484,7 +15485,20 @@ The single- and double-precision floating-point instructions.
>  
>  @item +nofp
>  Disable the floating-point extension.
> +@end table
>  
> +@item armv8-r
> +@table @samp
> +@item +crc
> +The Cyclic Redundancy Check (CRC) instructions.
> +@item +simd
> +The ARMv8 Advanced SIMD and floating-point instructions.
> +@item +crypto
> +The cryptographic instructions.
> +@item +nocrypto
> +Disable the cryptographic isntructions.
> +@item +nofp
> +Disable the floating-point, Advanced SIMD and cryptographic instructions.
>  @end table
>  
>  @end table
> diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
> index fe5e77756404d603f04d674bb5ca872956d4b7ad..83d0c7ca441570dbf4d52641d12073f17d06e025 100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -3890,7 +3890,8 @@ foreach { armfunc armflag armdefs } {
>  	v8_2a "-march=armv8.2a" __ARM_ARCH_8A__
>  	v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft"
>  		__ARM_ARCH_8M_BASE__
> -	v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } {
> +	v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__
> +	v8r "-march=armv8-r" __ARM_ARCH_8R__ } {
>      eval [string map [list FUNC $armfunc FLAG $armflag DEFS $armdefs ] {
>  	proc check_effective_target_arm_arch_FUNC_ok { } {
>  	    if { [ string match "*-marm*" "FLAG" ] &&
> diff --git a/libgcc/config/arm/lib1funcs.S b/libgcc/config/arm/lib1funcs.S
> index 89ebebcd68a790c6bec140e4a8bd5a3b44dce291..8d8c3cead5f77f6dfeb2887e68483119ee3a400a 100644
> --- a/libgcc/config/arm/lib1funcs.S
> +++ b/libgcc/config/arm/lib1funcs.S
> @@ -109,7 +109,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
>  #endif
>  
>  #if defined(__ARM_ARCH_8A__) || defined(__ARM_ARCH_8M_BASE__) \
> -	|| defined(__ARM_ARCH_8M_MAIN__)
> +	|| defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8R__)
>  # define __ARM_ARCH__ 8
>  #endif
>  
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 3/3, GCC/ARM] Add support for ARM Cortex-R52 processor
  2017-06-29 15:13   ` Thomas Preudhomme
@ 2017-07-14  8:34     ` Thomas Preudhomme
  2017-07-14 13:10       ` Kyrill Tkachov
  2017-09-06 15:17       ` [arm-embedded] " Thomas Preudhomme
  0 siblings, 2 replies; 19+ messages in thread
From: Thomas Preudhomme @ 2017-07-14  8:34 UTC (permalink / raw)
  To: Kyrill Tkachov, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches

[-- Attachment #1: Type: text/plain, Size: 1127 bytes --]

Hi,

On 29/06/17 16:13, Thomas Preudhomme wrote:
> Please ignore this patch. I'll respin the patch on a more recent GCC.

Please find an updated patch in attachment.

This patch adds support for the ARM Cortex-R52 processor rencently
announced.

[1] https://developer.arm.com/products/processors/cortex-r/cortex-r52

ChangeLog entry is as follows:

*** gcc/ChangeLog ***

2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/arm/arm-cpus.in (cortex-r52): Add new entry.
	(armv8-r): Set ARM Cortex-R52 as default CPU.
	* config/arm/arm-tables.opt: Regenerate.
	* config/arm/arm-tune.md: Regenerate.
	* config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
	Cortex-R52.
	* doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp
	extension for -mcpu=cortex-r52.

Tested by building an arm-none-eabi GCC cross-compiler targeting Cortex-R52 and 
building an hello world with it. Also checked that the .fpu option created by 
GCC for -mcpu=cortex-r52 and -mcpu=cortex-r52+nofp.dp is as expected 
(respectively .fpu neon-fp-armv8 and .fpu fpv5-sp-d16

Is this ok for trunk?

Best regards,

Thomas

[-- Attachment #2: 3_add_cortexr52_support.patch --]
[-- Type: text/x-patch, Size: 3432 bytes --]

diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
index e2ff297aed7514073dbb3bf5ee86964f202e5a14..d009a9e18acb093aefe0f9d8d6de49489fc2325c 100644
--- a/gcc/config/arm/arm-cpus.in
+++ b/gcc/config/arm/arm-cpus.in
@@ -381,7 +381,7 @@ begin arch armv8-m.main
 end arch armv8-m.main
 
 begin arch armv8-r
- tune for cortex-r4
+ tune for cortex-r52
  tune flags CO_PROC
  base 8R
  profile R
@@ -1315,6 +1315,16 @@ begin cpu cortex-m33
  costs v7m
 end cpu cortex-m33
 
+# V8 R-profile implementations.
+begin cpu cortex-r52
+ cname cortexr52
+ tune flags LDSCHED
+ architecture armv8-r+crc+simd
+ fpu neon-fp-armv8
+ option nofp.dp remove FP_DBL ALL_SIMD
+ costs cortex
+end cpu cortex-r52
+
 # FPU entries
 # format:
 # begin fpu <name>
diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt
index 51678c2566e841894c5c0e9c613c8c0f832e9988..4e508b1555a77628ff6e7cfea39c98b87caa840a 100644
--- a/gcc/config/arm/arm-tables.opt
+++ b/gcc/config/arm/arm-tables.opt
@@ -357,6 +357,9 @@ Enum(processor_type) String(cortex-m23) Value( TARGET_CPU_cortexm23)
 EnumValue
 Enum(processor_type) String(cortex-m33) Value( TARGET_CPU_cortexm33)
 
+EnumValue
+Enum(processor_type) String(cortex-r52) Value( TARGET_CPU_cortexr52)
+
 Enum
 Name(arm_arch) Type(int)
 Known ARM architectures (for use with the -march= option):
diff --git a/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md
index ba2c7d8ecfdbf6966ebf04b680d587a0e057b161..1b3f7a94cc78fac8abf1042ef60c81a74eaf24eb 100644
--- a/gcc/config/arm/arm-tune.md
+++ b/gcc/config/arm/arm-tune.md
@@ -57,5 +57,6 @@
 	cortexa73,exynosm1,xgene1,
 	cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,
 	cortexa73cortexa53,cortexa55,cortexa75,
-	cortexa75cortexa55,cortexm23,cortexm33"
+	cortexa75cortexa55,cortexm23,cortexm33,
+	cortexr52"
 	(const (symbol_ref "((enum attr_tune) arm_tune)")))
diff --git a/gcc/config/arm/driver-arm.c b/gcc/config/arm/driver-arm.c
index 16171d4e801af46ad549314d1f376e90d5bff57c..5c29b94caaba4ff6f89a191f1d8edcf10431c0b3 100644
--- a/gcc/config/arm/driver-arm.c
+++ b/gcc/config/arm/driver-arm.c
@@ -58,6 +58,7 @@ static struct vendor_cpu arm_cpu_table[] = {
     {"0xc15", "armv7-r", "cortex-r5"},
     {"0xc17", "armv7-r", "cortex-r7"},
     {"0xc18", "armv7-r", "cortex-r8"},
+    {"0xd13", "armv8-r+crc", "cortex-r52"},
     {"0xc20", "armv6-m", "cortex-m0"},
     {"0xc21", "armv6-m", "cortex-m1"},
     {"0xc23", "armv7-m", "cortex-m3"},
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index e60edcae53ef3c995054b9b0229b5f0fccbb8462..a093b9bcf77b1f4b40992516e853826bb7d528d4 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -15538,7 +15538,7 @@ Permissible names are: @samp{arm2}, @samp{arm250},
 @samp{cortex-a32}, @samp{cortex-a35}, @samp{cortex-a53}, @samp{cortex-a55},
 @samp{cortex-a57}, @samp{cortex-a72}, @samp{cortex-a73}, @samp{cortex-a75},
 @samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7},
-@samp{cortex-r8},
+@samp{cortex-r8}, @samp{cortex-r52},
 @samp{cortex-m33},
 @samp{cortex-m23},
 @samp{cortex-m7},
@@ -15628,7 +15628,7 @@ Disables the floating-point and SIMD instructions on
 
 @item +nofp.dp
 Disables the double-precision component of the floating-point instructions
-on @samp{cortex-r5} and @samp{cortex-m7}.
+on @samp{cortex-r5}, @samp{cortex-r52} and @samp{cortex-m7}.
 
 @item +nosimd
 Disables the SIMD (but not floating-point) instructions on

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 3/3, GCC/ARM] Add support for ARM Cortex-R52 processor
  2017-07-14  8:34     ` Thomas Preudhomme
@ 2017-07-14 13:10       ` Kyrill Tkachov
  2017-09-06 15:17       ` [arm-embedded] " Thomas Preudhomme
  1 sibling, 0 replies; 19+ messages in thread
From: Kyrill Tkachov @ 2017-07-14 13:10 UTC (permalink / raw)
  To: Thomas Preudhomme, Ramana Radhakrishnan, Richard Earnshaw, gcc-patches


On 14/07/17 09:33, Thomas Preudhomme wrote:
> Hi,
>
> On 29/06/17 16:13, Thomas Preudhomme wrote:
>> Please ignore this patch. I'll respin the patch on a more recent GCC.
>
> Please find an updated patch in attachment.
>
> This patch adds support for the ARM Cortex-R52 processor rencently
> announced.
>
> [1] https://developer.arm.com/products/processors/cortex-r/cortex-r52
>
> ChangeLog entry is as follows:
>
> *** gcc/ChangeLog ***
>
> 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>
>     * config/arm/arm-cpus.in (cortex-r52): Add new entry.
>     (armv8-r): Set ARM Cortex-R52 as default CPU.
>     * config/arm/arm-tables.opt: Regenerate.
>     * config/arm/arm-tune.md: Regenerate.
>     * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
>     Cortex-R52.
>     * doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp
>     extension for -mcpu=cortex-r52.
>
> Tested by building an arm-none-eabi GCC cross-compiler targeting Cortex-R52 and building an hello world with it. Also checked that the .fpu option created by GCC for -mcpu=cortex-r52 and -mcpu=cortex-r52+nofp.dp is as expected 
> (respectively .fpu neon-fp-armv8 and .fpu fpv5-sp-d16
>
> Is this ok for trunk?
>

Ok.
Thanks,
Kyrill

> Best regards,
>
> Thomas

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [arm-embedded] [PATCH 1/3, GCC/ARM, ping] Add MIDR info for ARM Cortex-R7 and Cortex-R8
  2017-07-04 13:56   ` [PATCH 1/3, GCC/ARM, ping] " Thomas Preudhomme
@ 2017-09-06 15:12     ` Thomas Preudhomme
  0 siblings, 0 replies; 19+ messages in thread
From: Thomas Preudhomme @ 2017-09-06 15:12 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 474 bytes --]

Hi,

We have decided to apply the following patch to the embedded-7-branch as a 
dependency patch to enable ARMv8-R support.

ChangeLog entry is as follows:

*** gcc/ChangeLog.arm ***

2017-09-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>

      Backport from mainline
      2017-07-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>

      * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
      Cortex-R7 and Cortex-R8 processors.

Best regards,

Thomas

[-- Attachment #2: Re: [PATCH 1/3, GCC/ARM, ping] Add MIDR info for ARM Cortex-R7 and Cortex-R8.eml --]
[-- Type: message/rfc822, Size: 5387 bytes --]

[-- Attachment #2.1.1: Type: text/plain, Size: 572 bytes --]

Ping?

Best regards,

Thomas

On 29/06/17 14:55, Thomas Preudhomme wrote:
> Hi,
> 
> The driver is missing MIDR information for processors ARM Cortex-R7 and
> Cortex-R8 to support -march/-mcpu/-mtune=native on the command line.
> This patch adds the missing information.
> 
> ChangeLog entry is as follows:
> 
> *** gcc/ChangeLog ***
> 
> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
> 
>      * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
>      Cortex-R7 and Cortex-R8 processors.
> 
> Is this ok for master?
> 
> Best regards,
> 
> Thomas

[-- Attachment #2.1.2: 1_add_cortex_r7_r8_midr.patch --]
[-- Type: text/x-patch, Size: 623 bytes --]

diff --git a/gcc/config/arm/driver-arm.c b/gcc/config/arm/driver-arm.c
index b034f13fda63f5892bbd9879d72f4b02e2632d69..29873d57a1e45fd989f6ff01dd4a2ae7320d93bb 100644
--- a/gcc/config/arm/driver-arm.c
+++ b/gcc/config/arm/driver-arm.c
@@ -54,6 +54,8 @@ static struct vendor_cpu arm_cpu_table[] = {
     {"0xd09", "armv8-a+crc", "cortex-a73"},
     {"0xc14", "armv7-r", "cortex-r4"},
     {"0xc15", "armv7-r", "cortex-r5"},
+    {"0xc17", "armv7-r", "cortex-r7"},
+    {"0xc18", "armv7-r", "cortex-r8"},
     {"0xc20", "armv6-m", "cortex-m0"},
     {"0xc21", "armv6-m", "cortex-m1"},
     {"0xc23", "armv7-m", "cortex-m3"},

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [arm-embedded] [PATCH 2/3, GCC/ARM] Add support for ARMv8-R architecture
  2017-07-06 12:40     ` Thomas Preudhomme
  2017-07-06 13:00       ` Richard Earnshaw (lists)
@ 2017-09-06 15:15       ` Thomas Preudhomme
  1 sibling, 0 replies; 19+ messages in thread
From: Thomas Preudhomme @ 2017-09-06 15:15 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 1246 bytes --]

Hi,

We have decided to apply the following patch to the embedded-7-branch to enable 
ARMv8-R support.

ChangeLog entry is as follows:

*** gcc/ChangeLog.arm ***

2017-09-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>

      Backport from mainline
      2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>

     * config/arm/arm-cpus.in (armv8-r): Add new entry.
     * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
     * config/arm/arm-tables.opt: Regenerate.
     * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
     enumerator.
     * doc/invoke.texi: Mention -march=armv8-r and its extensions.

*** gcc/testsuite/ChangeLog ***


2017-09-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>

      Backport from mainline
      2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>

     * lib/target-supports.exp: Generate
     check_effective_target_arm_arch_v8r_ok, add_options_for_arm_arch_v8r
     and check_effective_target_arm_arch_v8r_multilib.

*** libgcc/ChangeLog ***


2017-09-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>

      Backport from mainline
      2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>

     * config/arm/lib1funcs.S: Defined __ARM_ARCH__ to 8 for ARMv8-R.

[-- Attachment #2: Re: [PATCH 2/3, GCC/ARM] Add support for ARMv8-R architecture.eml --]
[-- Type: message/rfc822, Size: 9325 bytes --]

[-- Attachment #2.1.1: Type: text/plain, Size: 3012 bytes --]

Please find an updated patch in attachment. ChangeLog entry are now as follows:

*** gcc/ChangeLog ***

2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/arm/arm-cpus.in (armv8-r): Add new entry.
	* config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
	* config/arm/arm-tables.opt: Regenerate.
	* config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
	enumerator.
	* doc/invoke.texi: Mention -march=armv8-r and its extensions.

*** gcc/testsuite/ChangeLog ***

2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* lib/target-supports.exp: Generate
	check_effective_target_arm_arch_v8r_ok, add_options_for_arm_arch_v8r
	and check_effective_target_arm_arch_v8r_multilib.

*** libgcc/ChangeLog ***

2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/arm/lib1funcs.S: Defined __ARM_ARCH__ to 8 for ARMv8-R.


Tested by building an arm-none-eabi GCC cross-compiler targetting
ARMv8-R.

Is this ok for stage1?

Best regards,

Thomas

Best regards,

Thomas

On 29/06/17 16:13, Thomas Preudhomme wrote:
> Please ignore this patch. I'll respin the patch on a more recent GCC.
> 
> Best regards,
> 
> Thomas
> 
> On 29/06/17 14:55, Thomas Preudhomme wrote:
>> Hi,
>>
>> This patch adds support for ARMv8-R architecture [1] which was recently
>> announced. User level instructions for ARMv8-R are the same as those in
>> ARMv8-A Aarch32 mode so this patch define ARMv8-R to have the same
>> features as ARMv8-A in ARM backend.
>>
>> [1] 
>> https://developer.arm.com/products/architecture/r-profile/docs/ddi0568/latest/arm-architecture-reference-manual-supplement-armv8-for-the-armv8-r-aarch32-architecture-profile 
>>
>>
>> ChangeLog entries are as follow:
>>
>> *** gcc/ChangeLog ***
>>
>> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>
>>      * config/arm/arm-cpus.in (armv8-r, armv8-r+rcr): Add new entry.
>>      * config/arm/arm-cpu-cdata.h: Regenerate.
>>      * config/arm/arm-cpu-data.h: Regenerate.
>>      * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
>>      * config/arm/arm-tables.opt: Regenerate.
>>      * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
>>      enumerator.
>>      * config/arm/bpabi.h (BE8_LINK_SPEC): Add entry for ARMv8-R and
>>      ARMv8-R with CRC extensions.
>>      * doc/invoke.texi: Mention -march=armv8-r and -march=armv8-r+crc
>>      options.  Document meaning of -march=armv8-r+rcr.
>>
>> *** gcc/testsuite/ChangeLog ***
>>
>> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>
>>      * lib/target-supports.exp: Generate
>>      check_effective_target_arm_arch_v8r_ok, add_options_for_arm_arch_v8r
>>      and check_effective_target_arm_arch_v8r_multilib.
>>
>> *** libgcc/ChangeLog ***
>>
>> 2017-01-31  Thomas Preud'homme  <thomas.preudhomme@arm.com>
>>
>>      * config/arm/lib1funcs.S: Defined __ARM_ARCH__ to 8 for ARMv8-R.
>>
>> Tested by building an arm-none-eabi GCC cross-compiler targetting
>> ARMv8-R.
>>
>> Is this ok for stage1?
>>
>> Best regards,
>>
>> Thomas

[-- Attachment #2.1.2: 2_add_armv8r_support.patch --]
[-- Type: text/x-patch, Size: 4958 bytes --]

diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
index 946d543ebb29416da9b4928161607cccacaa78a7..f35128acb7d68c6a0592355b9d3d56ee8f826aca 100644
--- a/gcc/config/arm/arm-cpus.in
+++ b/gcc/config/arm/arm-cpus.in
@@ -380,6 +380,22 @@ begin arch armv8-m.main
  option nodsp remove bit_ARMv7em
 end arch armv8-m.main
 
+begin arch armv8-r
+ tune for cortex-r4
+ tune flags CO_PROC
+ base 8R
+ profile R
+ isa ARMv8r
+ option crc add bit_crc32
+# fp.sp => fp-armv8 (d16); simd => simd + fp-armv8 + d32 + double precision
+# note: no fp option for fp-armv8 (d16) + double precision at the moment
+ option fp.sp add FP_ARMv8
+ option simd add FP_ARMv8 NEON
+ option crypto add FP_ARMv8 CRYPTO
+ option nocrypto remove ALL_CRYPTO
+ option nofp remove ALL_FP
+end arch armv8-r
+
 begin arch iwmmxt
  tune for iwmmxt
  tune flags LDSCHED STRONG XSCALE
diff --git a/gcc/config/arm/arm-isa.h b/gcc/config/arm/arm-isa.h
index c0c2ccee330f2313951e980c5d399ae5d21005d6..0d66a0400c517668db023fc66ff43e26d43add51 100644
--- a/gcc/config/arm/arm-isa.h
+++ b/gcc/config/arm/arm-isa.h
@@ -127,6 +127,7 @@ enum isa_feature
 #define ISA_ARMv8_2a	ISA_ARMv8_1a, isa_bit_ARMv8_2
 #define ISA_ARMv8m_base ISA_ARMv6m, isa_bit_ARMv8, isa_bit_cmse, isa_bit_tdiv
 #define ISA_ARMv8m_main ISA_ARMv7m, isa_bit_ARMv8, isa_bit_cmse
+#define ISA_ARMv8r	ISA_ARMv8a
 
 /* List of all cryptographic extensions to stripout if crypto is
    disabled.  Currently, that's trivial, but we define it anyway for
diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt
index 5e2df9dd0716293fb551b6582a8c9c2c46fdaa90..51678c2566e841894c5c0e9c613c8c0f832e9988 100644
--- a/gcc/config/arm/arm-tables.opt
+++ b/gcc/config/arm/arm-tables.opt
@@ -455,10 +455,13 @@ EnumValue
 Enum(arm_arch) String(armv8-m.main) Value(30)
 
 EnumValue
-Enum(arm_arch) String(iwmmxt) Value(31)
+Enum(arm_arch) String(armv8-r) Value(31)
 
 EnumValue
-Enum(arm_arch) String(iwmmxt2) Value(32)
+Enum(arm_arch) String(iwmmxt) Value(32)
+
+EnumValue
+Enum(arm_arch) String(iwmmxt2) Value(33)
 
 Enum
 Name(arm_fpu) Type(enum fpu_type)
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h
index c803d4461c08436ef5f8468f6018e3226ccf33f8..315622212a5ce10d0c771535fe31f63c3be16444 100644
--- a/gcc/config/arm/arm.h
+++ b/gcc/config/arm/arm.h
@@ -384,7 +384,8 @@ enum base_architecture
   BASE_ARCH_7EM = 7,
   BASE_ARCH_8A = 8,
   BASE_ARCH_8M_BASE = 8,
-  BASE_ARCH_8M_MAIN = 8
+  BASE_ARCH_8M_MAIN = 8,
+  BASE_ARCH_8R = 8
 };
 
 /* The major revision number of the ARM Architecture implemented by the target.  */
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 3e5cee8649ef9452e2a7e5a8603318ce11e2baff..d0b90503cedaae32bc83c7fd1fdd78b2a4d7184b 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -15218,6 +15218,7 @@ Permissible names are:
 @samp{armv7}, @samp{armv7-a}, @samp{armv7ve}, 
 @samp{armv8-a}, @samp{armv8.1-a}, @samp{armv8.2-a},
 @samp{armv7-r},
+@samp{armv8-r},
 @samp{armv6-m}, @samp{armv6s-m},
 @samp{armv7-m}, @samp{armv7e-m},
 @samp{armv8-m.base}, @samp{armv8-m.main},
@@ -15484,7 +15485,20 @@ The single- and double-precision floating-point instructions.
 
 @item +nofp
 Disable the floating-point extension.
+@end table
 
+@item armv8-r
+@table @samp
+@item +crc
+The Cyclic Redundancy Check (CRC) instructions.
+@item +simd
+The ARMv8 Advanced SIMD and floating-point instructions.
+@item +crypto
+The cryptographic instructions.
+@item +nocrypto
+Disable the cryptographic isntructions.
+@item +nofp
+Disable the floating-point, Advanced SIMD and cryptographic instructions.
 @end table
 
 @end table
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index fe5e77756404d603f04d674bb5ca872956d4b7ad..83d0c7ca441570dbf4d52641d12073f17d06e025 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3890,7 +3890,8 @@ foreach { armfunc armflag armdefs } {
 	v8_2a "-march=armv8.2a" __ARM_ARCH_8A__
 	v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft"
 		__ARM_ARCH_8M_BASE__
-	v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } {
+	v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__
+	v8r "-march=armv8-r" __ARM_ARCH_8R__ } {
     eval [string map [list FUNC $armfunc FLAG $armflag DEFS $armdefs ] {
 	proc check_effective_target_arm_arch_FUNC_ok { } {
 	    if { [ string match "*-marm*" "FLAG" ] &&
diff --git a/libgcc/config/arm/lib1funcs.S b/libgcc/config/arm/lib1funcs.S
index 89ebebcd68a790c6bec140e4a8bd5a3b44dce291..8d8c3cead5f77f6dfeb2887e68483119ee3a400a 100644
--- a/libgcc/config/arm/lib1funcs.S
+++ b/libgcc/config/arm/lib1funcs.S
@@ -109,7 +109,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #endif
 
 #if defined(__ARM_ARCH_8A__) || defined(__ARM_ARCH_8M_BASE__) \
-	|| defined(__ARM_ARCH_8M_MAIN__)
+	|| defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8R__)
 # define __ARM_ARCH__ 8
 #endif
 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [arm-embedded] [PATCH 3/3, GCC/ARM] Add support for ARM Cortex-R52 processor
  2017-07-14  8:34     ` Thomas Preudhomme
  2017-07-14 13:10       ` Kyrill Tkachov
@ 2017-09-06 15:17       ` Thomas Preudhomme
  1 sibling, 0 replies; 19+ messages in thread
From: Thomas Preudhomme @ 2017-09-06 15:17 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 713 bytes --]

Hi,

We have decided to apply the following patch to the embedded-7-branch to enable 
Arm Cortex-R52 support.

*** gcc/ChangeLog.arm ***

2017-09-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>

      Backport from mainline
      2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>

     * config/arm/arm-cpus.in (cortex-r52): Add new entry.
     (armv8-r): Set ARM Cortex-R52 as default CPU.
     * config/arm/arm-tables.opt: Regenerate.
     * config/arm/arm-tune.md: Regenerate.
     * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
     Cortex-R52.
     * doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp
     extension for -mcpu=cortex-r52.

Best regards,

Thomas

[-- Attachment #2: Re: [PATCH 3/3, GCC/ARM] Add support for ARM Cortex-R52 processor.eml --]
[-- Type: message/rfc822, Size: 8767 bytes --]

[-- Attachment #2.1.1: Type: text/plain, Size: 1127 bytes --]

Hi,

On 29/06/17 16:13, Thomas Preudhomme wrote:
> Please ignore this patch. I'll respin the patch on a more recent GCC.

Please find an updated patch in attachment.

This patch adds support for the ARM Cortex-R52 processor rencently
announced.

[1] https://developer.arm.com/products/processors/cortex-r/cortex-r52

ChangeLog entry is as follows:

*** gcc/ChangeLog ***

2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>

	* config/arm/arm-cpus.in (cortex-r52): Add new entry.
	(armv8-r): Set ARM Cortex-R52 as default CPU.
	* config/arm/arm-tables.opt: Regenerate.
	* config/arm/arm-tune.md: Regenerate.
	* config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
	Cortex-R52.
	* doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp
	extension for -mcpu=cortex-r52.

Tested by building an arm-none-eabi GCC cross-compiler targeting Cortex-R52 and 
building an hello world with it. Also checked that the .fpu option created by 
GCC for -mcpu=cortex-r52 and -mcpu=cortex-r52+nofp.dp is as expected 
(respectively .fpu neon-fp-armv8 and .fpu fpv5-sp-d16

Is this ok for trunk?

Best regards,

Thomas

[-- Attachment #2.1.2: 3_add_cortexr52_support.patch --]
[-- Type: text/x-patch, Size: 3432 bytes --]

diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
index e2ff297aed7514073dbb3bf5ee86964f202e5a14..d009a9e18acb093aefe0f9d8d6de49489fc2325c 100644
--- a/gcc/config/arm/arm-cpus.in
+++ b/gcc/config/arm/arm-cpus.in
@@ -381,7 +381,7 @@ begin arch armv8-m.main
 end arch armv8-m.main
 
 begin arch armv8-r
- tune for cortex-r4
+ tune for cortex-r52
  tune flags CO_PROC
  base 8R
  profile R
@@ -1315,6 +1315,16 @@ begin cpu cortex-m33
  costs v7m
 end cpu cortex-m33
 
+# V8 R-profile implementations.
+begin cpu cortex-r52
+ cname cortexr52
+ tune flags LDSCHED
+ architecture armv8-r+crc+simd
+ fpu neon-fp-armv8
+ option nofp.dp remove FP_DBL ALL_SIMD
+ costs cortex
+end cpu cortex-r52
+
 # FPU entries
 # format:
 # begin fpu <name>
diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt
index 51678c2566e841894c5c0e9c613c8c0f832e9988..4e508b1555a77628ff6e7cfea39c98b87caa840a 100644
--- a/gcc/config/arm/arm-tables.opt
+++ b/gcc/config/arm/arm-tables.opt
@@ -357,6 +357,9 @@ Enum(processor_type) String(cortex-m23) Value( TARGET_CPU_cortexm23)
 EnumValue
 Enum(processor_type) String(cortex-m33) Value( TARGET_CPU_cortexm33)
 
+EnumValue
+Enum(processor_type) String(cortex-r52) Value( TARGET_CPU_cortexr52)
+
 Enum
 Name(arm_arch) Type(int)
 Known ARM architectures (for use with the -march= option):
diff --git a/gcc/config/arm/arm-tune.md b/gcc/config/arm/arm-tune.md
index ba2c7d8ecfdbf6966ebf04b680d587a0e057b161..1b3f7a94cc78fac8abf1042ef60c81a74eaf24eb 100644
--- a/gcc/config/arm/arm-tune.md
+++ b/gcc/config/arm/arm-tune.md
@@ -57,5 +57,6 @@
 	cortexa73,exynosm1,xgene1,
 	cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,
 	cortexa73cortexa53,cortexa55,cortexa75,
-	cortexa75cortexa55,cortexm23,cortexm33"
+	cortexa75cortexa55,cortexm23,cortexm33,
+	cortexr52"
 	(const (symbol_ref "((enum attr_tune) arm_tune)")))
diff --git a/gcc/config/arm/driver-arm.c b/gcc/config/arm/driver-arm.c
index 16171d4e801af46ad549314d1f376e90d5bff57c..5c29b94caaba4ff6f89a191f1d8edcf10431c0b3 100644
--- a/gcc/config/arm/driver-arm.c
+++ b/gcc/config/arm/driver-arm.c
@@ -58,6 +58,7 @@ static struct vendor_cpu arm_cpu_table[] = {
     {"0xc15", "armv7-r", "cortex-r5"},
     {"0xc17", "armv7-r", "cortex-r7"},
     {"0xc18", "armv7-r", "cortex-r8"},
+    {"0xd13", "armv8-r+crc", "cortex-r52"},
     {"0xc20", "armv6-m", "cortex-m0"},
     {"0xc21", "armv6-m", "cortex-m1"},
     {"0xc23", "armv7-m", "cortex-m3"},
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index e60edcae53ef3c995054b9b0229b5f0fccbb8462..a093b9bcf77b1f4b40992516e853826bb7d528d4 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -15538,7 +15538,7 @@ Permissible names are: @samp{arm2}, @samp{arm250},
 @samp{cortex-a32}, @samp{cortex-a35}, @samp{cortex-a53}, @samp{cortex-a55},
 @samp{cortex-a57}, @samp{cortex-a72}, @samp{cortex-a73}, @samp{cortex-a75},
 @samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7},
-@samp{cortex-r8},
+@samp{cortex-r8}, @samp{cortex-r52},
 @samp{cortex-m33},
 @samp{cortex-m23},
 @samp{cortex-m7},
@@ -15628,7 +15628,7 @@ Disables the floating-point and SIMD instructions on
 
 @item +nofp.dp
 Disables the double-precision component of the floating-point instructions
-on @samp{cortex-r5} and @samp{cortex-m7}.
+on @samp{cortex-r5}, @samp{cortex-r52} and @samp{cortex-m7}.
 
 @item +nosimd
 Disables the SIMD (but not floating-point) instructions on

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2017-09-06 15:17 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-29 13:52 [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R Thomas Preudhomme
2017-06-29 13:55 ` [PATCH 1/3, GCC/ARM] Add MIDR info for ARM Cortex-R7 and Cortex-R8 Thomas Preudhomme
2017-07-04 13:56   ` [PATCH 1/3, GCC/ARM, ping] " Thomas Preudhomme
2017-09-06 15:12     ` [arm-embedded] " Thomas Preudhomme
2017-07-04 13:57   ` [PATCH 1/3, GCC/ARM] " Kyrill Tkachov
2017-06-29 13:56 ` [PATCH 2/3, GCC/ARM] Add support for ARMv8-R architecture Thomas Preudhomme
2017-06-29 15:13   ` Thomas Preudhomme
2017-07-06 12:40     ` Thomas Preudhomme
2017-07-06 13:00       ` Richard Earnshaw (lists)
2017-09-06 15:15       ` [arm-embedded] " Thomas Preudhomme
2017-06-29 13:57 ` [PATCH 3/3, GCC/ARM] Add support for ARM Cortex-R52 processor Thomas Preudhomme
2017-06-29 15:13   ` Thomas Preudhomme
2017-07-14  8:34     ` Thomas Preudhomme
2017-07-14 13:10       ` Kyrill Tkachov
2017-09-06 15:17       ` [arm-embedded] " Thomas Preudhomme
2017-06-29 14:34 ` [PATCH, GCC/ARM, 0/3] Add support for ARMv8-R Christophe Lyon
2017-06-29 14:37   ` Thomas Preudhomme
2017-06-29 15:12     ` Christophe Lyon
2017-06-29 16:40       ` Thomas Preudhomme

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).