aarch64: Add support for Armv8.9-A and Armv9.4-A Architectures.
authorsrinath <srinath.parvathaneni@arm.com>
Thu, 2 Nov 2023 12:40:29 +0000 (12:40 +0000)
committersrinath <srinath.parvathaneni@arm.com>
Thu, 2 Nov 2023 12:43:03 +0000 (12:43 +0000)
This patch adds AArch64 support for Armv8.9-A architecture (-march=armv8.9-a)
and Armv9.4-A architecture (-march=armv9.4-a).

gas/NEWS
gas/config/tc-aarch64.c
gas/doc/c-aarch64.texi
include/opcode/aarch64.h

index ab0e7813f277f40c3257288f606ad3286669f10f..ca03cad90c3acb576785373a1fbc139fc4b457d8 100644 (file)
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -1,5 +1,7 @@
 -*- text -*-
 
+* Add support for 'armv8.9-a' and 'armv9.4-a' for -march in AArch64 GAS.
+
 * Add support for Intel USER_MSR instructions.
 
 * Add support for Intel AVX10.1.
index 14788ce180f47fb6ee183d31455a1593f4c33877..7d7e54965f12e074a5cc0437accd770e1f1776e1 100644 (file)
@@ -10241,11 +10241,13 @@ static const struct aarch64_arch_option_table aarch64_archs[] = {
   {"armv8.6-a", AARCH64_ARCH_FEATURES (V8_6A)},
   {"armv8.7-a", AARCH64_ARCH_FEATURES (V8_7A)},
   {"armv8.8-a", AARCH64_ARCH_FEATURES (V8_8A)},
+  {"armv8.9-a", AARCH64_ARCH_FEATURES (V8_9A)},
   {"armv8-r",  AARCH64_ARCH_FEATURES (V8R)},
   {"armv9-a",  AARCH64_ARCH_FEATURES (V9A)},
   {"armv9.1-a",        AARCH64_ARCH_FEATURES (V9_1A)},
   {"armv9.2-a",        AARCH64_ARCH_FEATURES (V9_2A)},
   {"armv9.3-a",        AARCH64_ARCH_FEATURES (V9_3A)},
+  {"armv9.4-a",        AARCH64_ARCH_FEATURES (V9_4A)},
   {NULL, AARCH64_NO_FEATURES}
 };
 
index fd67c77bbf879376690c3d465dd2516622e04dd2..9b73fbf70b2af243c6583439eff8bd1338daa751 100644 (file)
@@ -114,8 +114,8 @@ instruction which will not execute on the target architecture.  The
 following architecture names are recognized: @code{armv8-a},
 @code{armv8.1-a}, @code{armv8.2-a}, @code{armv8.3-a}, @code{armv8.4-a}
 @code{armv8.5-a}, @code{armv8.6-a}, @code{armv8.7-a}, @code{armv8.8-a},
-@code{armv8-r}, @code{armv9-a}, @code{armv9.1-a}, @code{armv9.2-a},
-and @code{armv9.3-a}.
+@code{armv8.9-a}, @code{armv8-r}, @code{armv9-a}, @code{armv9.1-a},
+@code{armv9.2-a}, @code{armv9.3-a} and @code{armv9.4-a}.
 
 If both @option{-mcpu} and @option{-march} are specified, the
 assembler will use the setting for @option{-mcpu}.  If neither are
index d4ec60c1354f6910be8135f7a35a68b02d60abe0..631ecf1a4fd64906d7e3357c64ba70507a5c7886 100644 (file)
@@ -157,11 +157,12 @@ enum aarch64_feature_bit {
   AARCH64_FEATURE_V8_8A,
   /* Common Short Sequence Compression instructions.  */
   AARCH64_FEATURE_CSSC,
+  /* Armv8.9-A processors.  */
+  AARCH64_FEATURE_V8_9A,
   /* SME2.  */
   AARCH64_FEATURE_SME2,
   DUMMY1,
   DUMMY2,
-  DUMMY3,
   AARCH64_NUM_FEATURES
 };
 
@@ -216,6 +217,7 @@ enum aarch64_feature_bit {
 #define AARCH64_ARCH_V8_8A_FEATURES(X) (AARCH64_FEATBIT (X, V8_8A)     \
                                         | AARCH64_FEATBIT (X, MOPS)    \
                                         | AARCH64_FEATBIT (X, HBC))
+#define AARCH64_ARCH_V8_9A_FEATURES(X) (AARCH64_FEATBIT (X, V8_9A))
 
 #define AARCH64_ARCH_V9A_FEATURES(X)   (AARCH64_FEATBIT (X, V9A)       \
                                         | AARCH64_FEATBIT (X, F16)     \
@@ -224,6 +226,7 @@ enum aarch64_feature_bit {
 #define AARCH64_ARCH_V9_1A_FEATURES(X) AARCH64_ARCH_V8_6A_FEATURES (X)
 #define AARCH64_ARCH_V9_2A_FEATURES(X) AARCH64_ARCH_V8_7A_FEATURES (X)
 #define AARCH64_ARCH_V9_3A_FEATURES(X) AARCH64_ARCH_V8_8A_FEATURES (X)
+#define AARCH64_ARCH_V9_4A_FEATURES(X) AARCH64_ARCH_V8_9A_FEATURES (X)
 
 /* Architectures are the sum of the base and extensions.  */
 #define AARCH64_ARCH_V8A(X)    (AARCH64_FEATBIT (X, V8) \
@@ -244,6 +247,8 @@ enum aarch64_feature_bit {
                                 | AARCH64_ARCH_V8_7A_FEATURES (X))
 #define AARCH64_ARCH_V8_8A(X)  (AARCH64_ARCH_V8_7A (X) \
                                 | AARCH64_ARCH_V8_8A_FEATURES (X))
+#define AARCH64_ARCH_V8_9A(X)  (AARCH64_ARCH_V8_8A (X) \
+                                | AARCH64_ARCH_V8_9A_FEATURES (X))
 #define AARCH64_ARCH_V8R(X)    ((AARCH64_ARCH_V8_4A (X)        \
                                  | AARCH64_FEATBIT (X, V8R))   \
                                 & ~AARCH64_FEATBIT (X, V8A)    \
@@ -257,6 +262,8 @@ enum aarch64_feature_bit {
                                 | AARCH64_ARCH_V9_2A_FEATURES (X))
 #define AARCH64_ARCH_V9_3A(X)  (AARCH64_ARCH_V9_2A (X) \
                                 | AARCH64_ARCH_V9_3A_FEATURES (X))
+#define AARCH64_ARCH_V9_4A(X)  (AARCH64_ARCH_V9_3A (X) \
+                                | AARCH64_ARCH_V9_4A_FEATURES (X))
 
 #define AARCH64_ARCH_NONE(X)   0