aarch64: Add support for Armv9.1-A to Armv9.3-A
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 16 Dec 2021 09:32:00 +0000 (09:32 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 16 Dec 2021 09:32:00 +0000 (09:32 +0000)
commit3518022233e6b757c57d3deb7723fd91214fe036
treedce33920495be659550b38c847c95483e2d926f9
parent23ff54c27d535727c1c467abdd4bed8fbd46d4a6
aarch64: Add support for Armv9.1-A to Armv9.3-A

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.

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.
19 files changed:
gas/NEWS
gas/config/tc-aarch64.c
gas/doc/c-aarch64.texi
gas/testsuite/gas/aarch64/armv9_1.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_1.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_1_invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_1_invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_1_invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_2.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_2.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_2_invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_2_invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_2_invalid.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_3.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_3.s [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_invalid.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_invalid.l [new file with mode: 0644]
gas/testsuite/gas/aarch64/armv9_invalid.s [new file with mode: 0644]
include/opcode/aarch64.h