xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-devtools/gcc/gcc/0002-aarch64-add-armv9-a-to-march.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1From d3cf45d15b2fabc767b2d10a0c6bb9fb845e4f99 Mon Sep 17 00:00:00 2001
2From: Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
3Date: Fri, 1 Oct 2021 10:06:45 +0100
4Subject: [PATCH 2/4] aarch64: add armv9-a to -march
5
6commit f0688d42c9b74a6999548ff2e79ae440b049b87f from upstream
7
8gcc/ChangeLog:
9
10	* config/aarch64/aarch64-arches.def (AARCH64_ARCH): Added
11	armv9-a.
12	* config/aarch64/aarch64.h (AARCH64_FL_V9): New.
13	(AARCH64_FL_FOR_ARCH9): New flags for Armv9-A.
14	(AARCH64_ISA_V9): New ISA flag.
15	* doc/invoke.texi: Update docs.
16
17Upstream-Status: Backport
18Signed-off-by: Ruiqiang Hao <Ruiqiang.Hao@windriver.com>
19---
20 gcc/config/aarch64/aarch64-arches.def | 1 +
21 gcc/config/aarch64/aarch64.h          | 5 +++++
22 gcc/doc/invoke.texi                   | 3 +++
23 3 files changed, 9 insertions(+)
24
25diff --git a/gcc/config/aarch64/aarch64-arches.def b/gcc/config/aarch64/aarch64-arches.def
26index b7497277b..c47ca622c 100644
27--- a/gcc/config/aarch64/aarch64-arches.def
28+++ b/gcc/config/aarch64/aarch64-arches.def
29@@ -38,5 +38,6 @@ AARCH64_ARCH("armv8.4-a",     generic,	     8_4A,	8,  AARCH64_FL_FOR_ARCH8_4)
30 AARCH64_ARCH("armv8.5-a",     generic,	     8_5A,	8,  AARCH64_FL_FOR_ARCH8_5)
31 AARCH64_ARCH("armv8.6-a",     generic,	     8_6A,	8,  AARCH64_FL_FOR_ARCH8_6)
32 AARCH64_ARCH("armv8-r",       generic,	     8R  ,	8,  AARCH64_FL_FOR_ARCH8_R)
33+AARCH64_ARCH("armv9-a",       generic,	     9A  ,	9,  AARCH64_FL_FOR_ARCH9)
34
35 #undef AARCH64_ARCH
36diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
37index bfffbcd6a..b914bfb5c 100644
38--- a/gcc/config/aarch64/aarch64.h
39+++ b/gcc/config/aarch64/aarch64.h
40@@ -230,6 +230,8 @@ extern unsigned aarch64_architecture_version;
41
42 /* Pointer Authentication (PAUTH) extension.  */
43 #define AARCH64_FL_PAUTH      (1ULL << 40)
44+/* Armv9.0-A.  */
45+#define AARCH64_FL_V9         (1ULL << 41)  /* Armv9.0-A Architecture.  */
46
47 /* Has FP and SIMD.  */
48 #define AARCH64_FL_FPSIMD     (AARCH64_FL_FP | AARCH64_FL_SIMD)
49@@ -257,6 +259,8 @@ extern unsigned aarch64_architecture_version;
50    | AARCH64_FL_I8MM | AARCH64_FL_BF16)
51 #define AARCH64_FL_FOR_ARCH8_R     \
52   (AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_V8_R)
53+#define AARCH64_FL_FOR_ARCH9       \
54+  (AARCH64_FL_FOR_ARCH8_5 | AARCH64_FL_SVE | AARCH64_FL_SVE2 | AARCH64_FL_V9)
55
56 /* Macros to test ISA flags.  */
57
58@@ -295,6 +299,7 @@ extern unsigned aarch64_architecture_version;
59 #define AARCH64_ISA_SB		   (aarch64_isa_flags & AARCH64_FL_SB)
60 #define AARCH64_ISA_V8_R	   (aarch64_isa_flags & AARCH64_FL_V8_R)
61 #define AARCH64_ISA_PAUTH	   (aarch64_isa_flags & AARCH64_FL_PAUTH)
62+#define AARCH64_ISA_V9		   (aarch64_isa_flags & AARCH64_FL_V9)
63
64 /* Crypto is an optional extension to AdvSIMD.  */
65 #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO)
66diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
67index c47cfd472..7184a62d0 100644
68--- a/gcc/doc/invoke.texi
69+++ b/gcc/doc/invoke.texi
70@@ -18270,6 +18270,8 @@ and the features that they enable by default:
71 @item @samp{armv8.4-a} @tab Armv8.4-A @tab @samp{armv8.3-a}, @samp{+flagm}, @samp{+fp16fml}, @samp{+dotprod}
72 @item @samp{armv8.5-a} @tab Armv8.5-A @tab @samp{armv8.4-a}, @samp{+sb}, @samp{+ssbs}, @samp{+predres}
73 @item @samp{armv8.6-a} @tab Armv8.6-A @tab @samp{armv8.5-a}, @samp{+bf16}, @samp{+i8mm}
74+@item @samp{armv8.7-a} @tab Armv8.7-A @tab @samp{armv8.6-a}, @samp{+ls64}
75+@item @samp{armv9-a} @tab Armv9-A @tab @samp{armv8.5-a}, @samp{+sve}, @samp{+sve2}
76 @item @samp{armv8-r} @tab Armv8-R @tab @samp{armv8-r}
77 @end multitable
78
79@@ -19692,6 +19694,7 @@ Permissible names are:
80 @samp{armv8.4-a},
81 @samp{armv8.5-a},
82 @samp{armv8.6-a},
83+@samp{armv9-a},
84 @samp{armv7-r},
85 @samp{armv8-r},
86 @samp{armv6-m}, @samp{armv6s-m},
87--
882.32.0
89
90