mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-12-19 01:19:41 +08:00
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.
This commit is contained in:
@@ -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. */
|
||||
|
||||
Reference in New Issue
Block a user