* [PATCH] aarch64: Add support for Armv9.1-A to Armv9.3-A
@ 2021-12-09 13:48 Richard Sandiford
2021-12-15 13:14 ` Nick Clifton
0 siblings, 1 reply; 2+ messages in thread
From: Richard Sandiford @ 2021-12-09 13:48 UTC (permalink / raw)
To: binutils
This patch adds AArch64 support for -march=armv9.[123]-a.
The behaviour of the new options can be expressed using a
combination of existing feature flags, so we don't need to
eat into the vanishing number of spare AARCH64_FEATURE_* bits.
Hoewver, it was more convenient to separate out the |s of
feature flags so that Armv9.1-A could reuse the set for
Armv8.6-A, and so on.
Tested on aarch64-linux-gnu. OK to install?
Richard
include/
* opcode/aarch64.h (AARCH64_ARCH_V8_FEATURES): New macro,
split out from...
(AARCH64_ARCH_V8): ...here.
(AARCH64_ARCH_V8_1_FEATURES): New macro, split out from...
(AARCH64_ARCH_V8_1): ...here.
(AARCH64_ARCH_V8_2_FEATURES): New macro, split out from...
(AARCH64_ARCH_V8_2): ...here.
(AARCH64_ARCH_V8_3_FEATURES): New macro, split out from...
(AARCH64_ARCH_V8_3): ...here.
(AARCH64_ARCH_V8_4_FEATURES): New macro, split out from...
(AARCH64_ARCH_V8_4): ...here.
(AARCH64_ARCH_V8_5_FEATURES): New macro, split out from...
(AARCH64_ARCH_V8_5): ...here.
(AARCH64_ARCH_V8_6_FEATURES): New macro, split out from...
(AARCH64_ARCH_V8_6): ...here.
(AARCH64_ARCH_V8_7_FEATURES): New macro, split out from...
(AARCH64_ARCH_V8_7): ...here.
(AARCH64_ARCH_V8_8_FEATURES): New macro, split out from...
(AARCH64_ARCH_V8_8): ...here.
(AARCH64_ARCH_V9_FEATURES): New macro, split out from...
(AARCH64_ARCH_V9): ...here.
(AARCH64_ARCH_V9_1_FEATURES, AARCH64_ARCH_V9_1): New macros.
(AARCH64_ARCH_V9_2_FEATURES, AARCH64_ARCH_V9_2): New macros.
(AARCH64_ARCH_V9_3_FEATURES, AARCH64_ARCH_V9_3): New macros.
gas/
* doc/c-aarch64.texi: Add armv9.1-a, armv9-2-a and armv9.3-a.
* config/tc-aarch64.c (aarch64_archs): Likewise.
* NEWS: Mention the above.
* testsuite/gas/aarch64/armv9_invalid.d,
testsuite/gas/aarch64/armv9_invalid.s,
testsuite/gas/aarch64/armv9_invalid.l: New test.
* testsuite/gas/aarch64/armv9_1.d,
testsuite/gas/aarch64/armv9_1.s: Likewise.
* testsuite/gas/aarch64/armv9_1_invalid.d,
testsuite/gas/aarch64/armv9_1_invalid.s,
testsuite/gas/aarch64/armv9_1_invalid.l: Likewise.
* testsuite/gas/aarch64/armv9_2.d,
testsuite/gas/aarch64/armv9_2.s: Likewise.
* testsuite/gas/aarch64/armv9_2_invalid.d,
testsuite/gas/aarch64/armv9_2_invalid.s,
testsuite/gas/aarch64/armv9_2_invalid.l: Likewise.
* testsuite/gas/aarch64/armv9_3.d,
testsuite/gas/aarch64/armv9_3.s: Likewise.
---
gas/NEWS | 3 +-
gas/config/tc-aarch64.c | 3 +
gas/doc/c-aarch64.texi | 3 +-
gas/testsuite/gas/aarch64/armv9_1.d | 12 +++
gas/testsuite/gas/aarch64/armv9_1.s | 5 +
gas/testsuite/gas/aarch64/armv9_1_invalid.d | 1 +
gas/testsuite/gas/aarch64/armv9_1_invalid.l | 2 +
gas/testsuite/gas/aarch64/armv9_1_invalid.s | 2 +
gas/testsuite/gas/aarch64/armv9_2.d | 13 +++
gas/testsuite/gas/aarch64/armv9_2.s | 6 ++
gas/testsuite/gas/aarch64/armv9_2_invalid.d | 1 +
gas/testsuite/gas/aarch64/armv9_2_invalid.l | 5 +
gas/testsuite/gas/aarch64/armv9_2_invalid.s | 6 ++
gas/testsuite/gas/aarch64/armv9_3.d | 17 ++++
gas/testsuite/gas/aarch64/armv9_3.s | 11 +++
gas/testsuite/gas/aarch64/armv9_invalid.d | 1 +
gas/testsuite/gas/aarch64/armv9_invalid.l | 3 +
gas/testsuite/gas/aarch64/armv9_invalid.s | 3 +
include/opcode/aarch64.h | 102 ++++++++++++--------
19 files changed, 157 insertions(+), 42 deletions(-)
create mode 100644 gas/testsuite/gas/aarch64/armv9_1.d
create mode 100644 gas/testsuite/gas/aarch64/armv9_1.s
create mode 100644 gas/testsuite/gas/aarch64/armv9_1_invalid.d
create mode 100644 gas/testsuite/gas/aarch64/armv9_1_invalid.l
create mode 100644 gas/testsuite/gas/aarch64/armv9_1_invalid.s
create mode 100644 gas/testsuite/gas/aarch64/armv9_2.d
create mode 100644 gas/testsuite/gas/aarch64/armv9_2.s
create mode 100644 gas/testsuite/gas/aarch64/armv9_2_invalid.d
create mode 100644 gas/testsuite/gas/aarch64/armv9_2_invalid.l
create mode 100644 gas/testsuite/gas/aarch64/armv9_2_invalid.s
create mode 100644 gas/testsuite/gas/aarch64/armv9_3.d
create mode 100644 gas/testsuite/gas/aarch64/armv9_3.s
create mode 100644 gas/testsuite/gas/aarch64/armv9_invalid.d
create mode 100644 gas/testsuite/gas/aarch64/armv9_invalid.l
create mode 100644 gas/testsuite/gas/aarch64/armv9_invalid.s
diff --git a/gas/NEWS b/gas/NEWS
index 7d9bb6ba4b0..d0dca5bb035 100644
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -28,7 +28,8 @@
x86 assembler have been reduced from 12 bytes to 10 bytes to match the
output of .tfloat directive.
-* Add support for 'armv8.8-a' and 'armv9-a' for -march in AArch64 GAS.
+* Add support for 'armv8.8-a', 'armv9-a', 'armv9.1-a', 'armv9.2-a' and
+ 'armv9.3-a' for -march in AArch64 GAS.
* Add support for 'armv9-a' for -march in Arm GAS.
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index 7277f38a4bb..cc7725483aa 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -9872,6 +9872,9 @@ static const struct aarch64_arch_option_table aarch64_archs[] = {
{"armv8.8-a", AARCH64_ARCH_V8_8},
{"armv8-r", AARCH64_ARCH_V8_R},
{"armv9-a", AARCH64_ARCH_V9},
+ {"armv9.1-a", AARCH64_ARCH_V9_1},
+ {"armv9.2-a", AARCH64_ARCH_V9_2},
+ {"armv9.3-a", AARCH64_ARCH_V9_3},
{NULL, AARCH64_ARCH_NONE}
};
diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi
index 29bfd49207f..8f1f8675b18 100644
--- a/gas/doc/c-aarch64.texi
+++ b/gas/doc/c-aarch64.texi
@@ -111,7 +111,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}, and @code{armv9-a}.
+@code{armv8-r}, @code{armv9-a}, @code{armv9.1-a}, @code{armv9.2-a},
+and @code{armv9.3-a}.
If both @option{-mcpu} and @option{-march} are specified, the
assembler will use the setting for @option{-mcpu}. If neither are
diff --git a/gas/testsuite/gas/aarch64/armv9_1.d b/gas/testsuite/gas/aarch64/armv9_1.d
new file mode 100644
index 00000000000..1e6954ba3a5
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_1.d
@@ -0,0 +1,12 @@
+#objdump: -dr
+
+.*
+
+
+Disassembly of section \.text:
+
+0+ <\.text>:
+[^:]*: d50330ff sb
+[^:]*: 453f1800 rshrnb z0\.h, z0\.s, #1
+[^:]*: 658aa000 bfcvt z0\.h, p0/m, z0\.s
+[^:]*: 45029820 smmla z0\.s, z1.b, z2\.b
diff --git a/gas/testsuite/gas/aarch64/armv9_1.s b/gas/testsuite/gas/aarch64/armv9_1.s
new file mode 100644
index 00000000000..2d3c9ea5fca
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_1.s
@@ -0,0 +1,5 @@
+ .arch armv9.1-a
+ sb
+ rshrnb z0.h, z0.s, #1
+ bfcvt z0.h, p0/m, z0.s
+ smmla z0.s, z1.b, z2.b
diff --git a/gas/testsuite/gas/aarch64/armv9_1_invalid.d b/gas/testsuite/gas/aarch64/armv9_1_invalid.d
new file mode 100644
index 00000000000..9dffedcb5a8
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_1_invalid.d
@@ -0,0 +1 @@
+#error_output: armv9_1_invalid.l
diff --git a/gas/testsuite/gas/aarch64/armv9_1_invalid.l b/gas/testsuite/gas/aarch64/armv9_1_invalid.l
new file mode 100644
index 00000000000..83be9ceaddd
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_1_invalid.l
@@ -0,0 +1,2 @@
+[^:]*: Assembler messages:
+[^:]*:2: Error: selected processor does not support `ld64b x0,\[x8\]'
diff --git a/gas/testsuite/gas/aarch64/armv9_1_invalid.s b/gas/testsuite/gas/aarch64/armv9_1_invalid.s
new file mode 100644
index 00000000000..d41e04371f7
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_1_invalid.s
@@ -0,0 +1,2 @@
+ .arch armv9.1-a
+ ld64b x0, [x8]
diff --git a/gas/testsuite/gas/aarch64/armv9_2.d b/gas/testsuite/gas/aarch64/armv9_2.d
new file mode 100644
index 00000000000..590a67dc4c8
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_2.d
@@ -0,0 +1,13 @@
+#objdump: -dr
+
+.*
+
+
+Disassembly of section \.text:
+
+0+ <\.text>:
+[^:]*: d50330ff sb
+[^:]*: 453f1800 rshrnb z0\.h, z0\.s, #1
+[^:]*: 658aa000 bfcvt z0\.h, p0/m, z0\.s
+[^:]*: 45029820 smmla z0\.s, z1.b, z2\.b
+[^:]*: f83fd100 ld64b x0, \[x8\]
diff --git a/gas/testsuite/gas/aarch64/armv9_2.s b/gas/testsuite/gas/aarch64/armv9_2.s
new file mode 100644
index 00000000000..4a6e34bc685
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_2.s
@@ -0,0 +1,6 @@
+ .arch armv9.2-a
+ sb
+ rshrnb z0.h, z0.s, #1
+ bfcvt z0.h, p0/m, z0.s
+ smmla z0.s, z1.b, z2.b
+ ld64b x0, [x8]
diff --git a/gas/testsuite/gas/aarch64/armv9_2_invalid.d b/gas/testsuite/gas/aarch64/armv9_2_invalid.d
new file mode 100644
index 00000000000..b8e21e577c2
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_2_invalid.d
@@ -0,0 +1 @@
+#error_output: armv9_2_invalid.l
diff --git a/gas/testsuite/gas/aarch64/armv9_2_invalid.l b/gas/testsuite/gas/aarch64/armv9_2_invalid.l
new file mode 100644
index 00000000000..750c2f09631
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_2_invalid.l
@@ -0,0 +1,5 @@
+[^:]*: Assembler messages:
+[^:]*:2: Error: selected processor does not support `cpyfp \[x0\]!,\[x1\]!,x30!'
+[^:]*:3: Error: selected processor does not support `cpyfm \[x0\]!,\[x1\]!,x30!'
+[^:]*:4: Error: selected processor does not support `cpyfe \[x0\]!,\[x1\]!,x30!'
+[^:]*:6: Error: selected processor does not support `bc\.eq 1b'
diff --git a/gas/testsuite/gas/aarch64/armv9_2_invalid.s b/gas/testsuite/gas/aarch64/armv9_2_invalid.s
new file mode 100644
index 00000000000..bac9a8bd55d
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_2_invalid.s
@@ -0,0 +1,6 @@
+ .arch armv9.2-a
+ cpyfp [x0]!, [x1]!, x30!
+ cpyfm [x0]!, [x1]!, x30!
+ cpyfe [x0]!, [x1]!, x30!
+1:
+ bc.eq 1b
diff --git a/gas/testsuite/gas/aarch64/armv9_3.d b/gas/testsuite/gas/aarch64/armv9_3.d
new file mode 100644
index 00000000000..b94c85e5f26
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_3.d
@@ -0,0 +1,17 @@
+#objdump: -dr
+
+.*
+
+
+Disassembly of section \.text:
+
+0+ <\.text>:
+[^:]*: d50330ff sb
+[^:]*: 453f1800 rshrnb z0\.h, z0\.s, #1
+[^:]*: 658aa000 bfcvt z0\.h, p0/m, z0\.s
+[^:]*: 45029820 smmla z0\.s, z1.b, z2\.b
+[^:]*: f83fd100 ld64b x0, \[x8\]
+[^:]*: 190107c0 cpyfp \[x0\]!, \[x1\]!, x30!
+[^:]*: 194107c0 cpyfm \[x0\]!, \[x1\]!, x30!
+[^:]*: 198107c0 cpyfe \[x0\]!, \[x1\]!, x30!
+[^:]*: 54000010 bc\.eq .*
diff --git a/gas/testsuite/gas/aarch64/armv9_3.s b/gas/testsuite/gas/aarch64/armv9_3.s
new file mode 100644
index 00000000000..e8bcba3d2a5
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_3.s
@@ -0,0 +1,11 @@
+ .arch armv9.3-a
+ sb
+ rshrnb z0.h, z0.s, #1
+ bfcvt z0.h, p0/m, z0.s
+ smmla z0.s, z1.b, z2.b
+ ld64b x0, [x8]
+ cpyfp [x0]!, [x1]!, x30!
+ cpyfm [x0]!, [x1]!, x30!
+ cpyfe [x0]!, [x1]!, x30!
+1:
+ bc.eq 1b
diff --git a/gas/testsuite/gas/aarch64/armv9_invalid.d b/gas/testsuite/gas/aarch64/armv9_invalid.d
new file mode 100644
index 00000000000..582b60f0558
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_invalid.d
@@ -0,0 +1 @@
+#error_output: armv9_invalid.l
diff --git a/gas/testsuite/gas/aarch64/armv9_invalid.l b/gas/testsuite/gas/aarch64/armv9_invalid.l
new file mode 100644
index 00000000000..073c018e012
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_invalid.l
@@ -0,0 +1,3 @@
+[^:]*: Assembler messages:
+[^:]*:2: Error: selected processor does not support `bfcvt z0\.h,p0/m,z0\.s'
+[^:]*:3: Error: selected processor does not support `smmla z0\.s,z1.b,z2\.b'
diff --git a/gas/testsuite/gas/aarch64/armv9_invalid.s b/gas/testsuite/gas/aarch64/armv9_invalid.s
new file mode 100644
index 00000000000..f1380204b14
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/armv9_invalid.s
@@ -0,0 +1,3 @@
+ .arch armv9-a
+ bfcvt z0.h, p0/m, z0.s
+ smmla z0.s, z1.b, z2.b
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h
index 4d4f108f39a..7bd011c4530 100644
--- a/include/opcode/aarch64.h
+++ b/include/opcode/aarch64.h
@@ -101,60 +101,82 @@ typedef uint32_t aarch64_insn;
/* Crypto instructions are the combination of AES and SHA2. */
#define AARCH64_FEATURE_CRYPTO (AARCH64_FEATURE_SHA2 | AARCH64_FEATURE_AES)
+#define AARCH64_ARCH_V8_FEATURES (AARCH64_FEATURE_V8_A \
+ | AARCH64_FEATURE_FP \
+ | AARCH64_FEATURE_RAS \
+ | AARCH64_FEATURE_SIMD)
+#define AARCH64_ARCH_V8_1_FEATURES (AARCH64_FEATURE_V8_1 \
+ | AARCH64_FEATURE_CRC \
+ | AARCH64_FEATURE_LSE \
+ | AARCH64_FEATURE_PAN \
+ | AARCH64_FEATURE_LOR \
+ | AARCH64_FEATURE_RDMA)
+#define AARCH64_ARCH_V8_2_FEATURES (AARCH64_FEATURE_V8_2)
+#define AARCH64_ARCH_V8_3_FEATURES (AARCH64_FEATURE_V8_3 \
+ | AARCH64_FEATURE_PAC \
+ | AARCH64_FEATURE_RCPC \
+ | AARCH64_FEATURE_COMPNUM)
+#define AARCH64_ARCH_V8_4_FEATURES (AARCH64_FEATURE_V8_4 \
+ | AARCH64_FEATURE_DOTPROD \
+ | AARCH64_FEATURE_FLAGM \
+ | AARCH64_FEATURE_F16_FML)
+#define AARCH64_ARCH_V8_5_FEATURES (AARCH64_FEATURE_V8_5 \
+ | AARCH64_FEATURE_FLAGMANIP \
+ | AARCH64_FEATURE_FRINTTS \
+ | AARCH64_FEATURE_SB \
+ | AARCH64_FEATURE_PREDRES \
+ | AARCH64_FEATURE_CVADP \
+ | AARCH64_FEATURE_BTI \
+ | AARCH64_FEATURE_SCXTNUM \
+ | AARCH64_FEATURE_ID_PFR2 \
+ | AARCH64_FEATURE_SSBS)
+#define AARCH64_ARCH_V8_6_FEATURES (AARCH64_FEATURE_V8_6 \
+ | AARCH64_FEATURE_BFLOAT16 \
+ | AARCH64_FEATURE_I8MM)
+#define AARCH64_ARCH_V8_7_FEATURES (AARCH64_FEATURE_V8_7 \
+ | AARCH64_FEATURE_LS64)
+#define AARCH64_ARCH_V8_8_FEATURES (AARCH64_FEATURE_V8_8 \
+ | AARCH64_FEATURE_MOPS \
+ | AARCH64_FEATURE_HBC)
+
+#define AARCH64_ARCH_V9_FEATURES (AARCH64_FEATURE_V9 \
+ | AARCH64_FEATURE_SVE \
+ | AARCH64_FEATURE_SVE2)
+#define AARCH64_ARCH_V9_1_FEATURES (AARCH64_ARCH_V8_6_FEATURES)
+#define AARCH64_ARCH_V9_2_FEATURES (AARCH64_ARCH_V8_7_FEATURES)
+#define AARCH64_ARCH_V9_3_FEATURES (AARCH64_ARCH_V8_8_FEATURES)
+
/* Architectures are the sum of the base and extensions. */
#define AARCH64_ARCH_V8 AARCH64_FEATURE (AARCH64_FEATURE_V8, \
- AARCH64_FEATURE_V8_A \
- | AARCH64_FEATURE_FP \
- | AARCH64_FEATURE_RAS \
- | AARCH64_FEATURE_SIMD)
+ AARCH64_ARCH_V8_FEATURES)
#define AARCH64_ARCH_V8_1 AARCH64_FEATURE (AARCH64_ARCH_V8, \
- AARCH64_FEATURE_CRC \
- | AARCH64_FEATURE_V8_1 \
- | AARCH64_FEATURE_LSE \
- | AARCH64_FEATURE_PAN \
- | AARCH64_FEATURE_LOR \
- | AARCH64_FEATURE_RDMA)
+ AARCH64_ARCH_V8_1_FEATURES)
#define AARCH64_ARCH_V8_2 AARCH64_FEATURE (AARCH64_ARCH_V8_1, \
- AARCH64_FEATURE_V8_2)
+ AARCH64_ARCH_V8_2_FEATURES)
#define AARCH64_ARCH_V8_3 AARCH64_FEATURE (AARCH64_ARCH_V8_2, \
- AARCH64_FEATURE_V8_3 \
- | AARCH64_FEATURE_PAC \
- | AARCH64_FEATURE_RCPC \
- | AARCH64_FEATURE_COMPNUM)
+ AARCH64_ARCH_V8_3_FEATURES)
#define AARCH64_ARCH_V8_4 AARCH64_FEATURE (AARCH64_ARCH_V8_3, \
- AARCH64_FEATURE_V8_4 \
- | AARCH64_FEATURE_DOTPROD \
- | AARCH64_FEATURE_FLAGM \
- | AARCH64_FEATURE_F16_FML)
+ AARCH64_ARCH_V8_4_FEATURES)
#define AARCH64_ARCH_V8_5 AARCH64_FEATURE (AARCH64_ARCH_V8_4, \
- AARCH64_FEATURE_V8_5 \
- | AARCH64_FEATURE_FLAGMANIP \
- | AARCH64_FEATURE_FRINTTS \
- | AARCH64_FEATURE_SB \
- | AARCH64_FEATURE_PREDRES \
- | AARCH64_FEATURE_CVADP \
- | AARCH64_FEATURE_BTI \
- | AARCH64_FEATURE_SCXTNUM \
- | AARCH64_FEATURE_ID_PFR2 \
- | AARCH64_FEATURE_SSBS)
+ AARCH64_ARCH_V8_5_FEATURES)
#define AARCH64_ARCH_V8_6 AARCH64_FEATURE (AARCH64_ARCH_V8_5, \
- AARCH64_FEATURE_V8_6 \
- | AARCH64_FEATURE_BFLOAT16 \
- | AARCH64_FEATURE_I8MM)
+ AARCH64_ARCH_V8_6_FEATURES)
#define AARCH64_ARCH_V8_7 AARCH64_FEATURE (AARCH64_ARCH_V8_6, \
- AARCH64_FEATURE_V8_7 \
- | AARCH64_FEATURE_LS64)
+ AARCH64_ARCH_V8_7_FEATURES)
#define AARCH64_ARCH_V8_8 AARCH64_FEATURE (AARCH64_ARCH_V8_7, \
- AARCH64_FEATURE_V8_8 \
- | AARCH64_FEATURE_MOPS \
- | AARCH64_FEATURE_HBC)
+ AARCH64_ARCH_V8_8_FEATURES)
#define AARCH64_ARCH_V8_R (AARCH64_FEATURE (AARCH64_ARCH_V8_4, \
AARCH64_FEATURE_V8_R) \
& ~(AARCH64_FEATURE_V8_A | AARCH64_FEATURE_LOR))
+
#define AARCH64_ARCH_V9 AARCH64_FEATURE (AARCH64_ARCH_V8_5, \
- AARCH64_FEATURE_SVE \
- | AARCH64_FEATURE_SVE2 \
- | AARCH64_FEATURE_V9)
+ AARCH64_ARCH_V9_FEATURES)
+#define AARCH64_ARCH_V9_1 AARCH64_FEATURE (AARCH64_ARCH_V9, \
+ AARCH64_ARCH_V9_1_FEATURES)
+#define AARCH64_ARCH_V9_2 AARCH64_FEATURE (AARCH64_ARCH_V9_1, \
+ AARCH64_ARCH_V9_2_FEATURES)
+#define AARCH64_ARCH_V9_3 AARCH64_FEATURE (AARCH64_ARCH_V9_2, \
+ AARCH64_ARCH_V9_3_FEATURES)
#define AARCH64_ARCH_NONE AARCH64_FEATURE (0, 0)
#define AARCH64_ANY AARCH64_FEATURE (-1, 0) /* Any basic core. */
--
2.25.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] aarch64: Add support for Armv9.1-A to Armv9.3-A
2021-12-09 13:48 [PATCH] aarch64: Add support for Armv9.1-A to Armv9.3-A Richard Sandiford
@ 2021-12-15 13:14 ` Nick Clifton
0 siblings, 0 replies; 2+ messages in thread
From: Nick Clifton @ 2021-12-15 13:14 UTC (permalink / raw)
To: binutils, richard.sandiford
Hi Richard,
> This patch adds AArch64 support for -march=armv9.[123]-a.
> The behaviour of the new options can be expressed using a
> combination of existing feature flags, so we don't need to
> eat into the vanishing number of spare AARCH64_FEATURE_* bits.
> Hoewver, it was more convenient to separate out the |s of
> feature flags so that Armv9.1-A could reuse the set for
> Armv8.6-A, and so on.
>
> Tested on aarch64-linux-gnu. OK to install?
Approved - please apply.
Cheers
Nick
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-12-15 13:14 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-09 13:48 [PATCH] aarch64: Add support for Armv9.1-A to Armv9.3-A Richard Sandiford
2021-12-15 13:14 ` Nick Clifton
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).