mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-26 07:19:16 +08:00
aarch64: Improve naming conventions for A and R-profile architecture
Historically, flags and variables relating to architectural revisions for the A-profile architecture omitted the trailing `A' such that, for example, assembling for `-march=armv8.4-a' set the `AARCH64_ARCH_V8_4' flag in the assembler. This leads to some ambiguity, since Binutils also targets the R-profile Arm architecture. Therefore, it seems prudent to have everything associated with the A-profile cores end in `A' and likewise `R' for the R-profile. Referring back to the example above, the flag set for `-march=armv8.4-a' is better characterized if labeled `AARCH64_ARCH_V8_4A'. The only exception to the rule of appending `A' to variables is found in the handling of the `AARCH64_FEATURE_V8' macro, as it is the baseline from which ALL processors derive and should therefore be left unchanged. In reflecting the `ARM' architectural nomenclature choices, where we have `ARM_ARCH_V8A' and `ARM_ARCH_V8R', the choice is made to not have an underscore separating the numerical revision number and the A/R-profile indicator suffix. This has meant that renaming of R-profile related flags and variables was warranted, thus going from `.*_[vV]8_[rR]' to `.*_[vV]8[rR]'. Finally, this is more in line with conventions within GCC and adds consistency across the toolchain. gas/ChangeLog: * gas/config/tc-aarch64.c: (aarch64_cpus): Reference to arch feature macros updated. (aarch64_archs): Likewise. include/ChangeLog: * include/opcode/aarch64.h: (AARCH64_FEATURE_V8A): Updated name: V8_A -> V8A. (AARCH64_FEATURE_V8_1A): A-suffix added. (AARCH64_FEATURE_V8_2A): Likewise. (AARCH64_FEATURE_V8_3A): Likewise. (AARCH64_FEATURE_V8_4A): Likewise. (AARCH64_FEATURE_V8_5A): Likewise. (AARCH64_FEATURE_V8_6A): Likewise. (AARCH64_FEATURE_V8_7A): Likewise. (AARCH64_FEATURE_V8_8A):Likewise. (AARCH64_FEATURE_V9A): Likewise. (AARCH64_FEATURE_V8R): Updated name: V8_R -> V8R. (AARCH64_ARCH_V8A_FEATURES): Updated name: V8_A -> V8A. (AARCH64_ARCH_V8_1A_FEATURES): A-suffix added. (AARCH64_ARCH_V8_2A_FEATURES): Likewise. (AARCH64_ARCH_V8_3A_FEATURES): Likewise. (AARCH64_ARCH_V8_4A_FEATURES): Likewise. (AARCH64_ARCH_V8_5A_FEATURES): Likewise. (AARCH64_ARCH_V8_6A_FEATURES): Likewise. (AARCH64_ARCH_V8_7A_FEATURES): Likewise. (AARCH64_ARCH_V8_8A_FEATURES): Likewise. (AARCH64_ARCH_V9A_FEATURES): Likewise. (AARCH64_ARCH_V9_1A_FEATURES): Likewise. (AARCH64_ARCH_V9_2A_FEATURES): Likewise. (AARCH64_ARCH_V9_3A_FEATURES): Likewise. (AARCH64_ARCH_V8A): Updated name: V8_A -> V8A. (AARCH64_ARCH_V8_1A): A-suffix added. (AARCH64_ARCH_V8_2A): Likewise. (AARCH64_ARCH_V8_3A): Likewise. (AARCH64_ARCH_V8_4A): Likewise. (AARCH64_ARCH_V8_5A): Likewise. (AARCH64_ARCH_V8_6A): Likewise. (AARCH64_ARCH_V8_7A): Likewise. (AARCH64_ARCH_V8_8A): Likewise. (AARCH64_ARCH_V9A): Likewise. (AARCH64_ARCH_V9_1A): Likewise. (AARCH64_ARCH_V9_2A): Likewise. (AARCH64_ARCH_V9_3A): Likewise. (AARCH64_ARCH_V8_R): Updated name: V8_R -> V8R. opcodes/ChangeLog: * opcodes/aarch64-opc.c (SR_V8A): Updated name: V8_A -> V8A. (SR_V8_1A): A-suffix added. (SR_V8_2A): Likewise. (SR_V8_3A): Likewise. (SR_V8_4A): Likewise. (SR_V8_6A): Likewise. (SR_V8_7A): Likewise. (SR_V8_8A): Likewise. (aarch64_sys_regs): Reference to arch feature macros updated. (aarch64_pstatefields): Reference to arch feature macros updated. (aarch64_sys_ins_reg_supported_p): Reference to arch feature macros updated. * opcodes/aarch64-tbl.h: (aarch64_feature_v8_2a): a-suffix added. (aarch64_feature_v8_3a): Likewise. (aarch64_feature_fp_v8_3a): Likewise. (aarch64_feature_v8_4a): Likewise. (aarch64_feature_fp_16_v8_2a): Likewise. (aarch64_feature_v8_5a): Likewise. (aarch64_feature_v8_6a): Likewise. (aarch64_feature_v8_7a): Likewise. (aarch64_feature_v8r): Updated name: v8_r-> v8r. (ARMV8R): Updated name: V8_R-> V8R. (ARMV8_2A): A-suffix added. (ARMV8_3A): Likewise. (FP_V8_3A): Likewise. (ARMV8_4A): Likewise. (FP_F16_V8_2A): Likewise. (ARMV8_5): Likewise. (ARMV8_6A): Likewise. (ARMV8_6A_SVE): Likewise. (ARMV8_7A): Likewise. (V8_2A_INSN): `A' added to macro symbol. (V8_3A_INSN): Likewise. (V8_4A_INSN): Likewise. (FP16_V8_2A_INSN): Likewise. (V8_5A_INSN): Likewise. (V8_6A_INSN): Likewise. (V8_7A_INSN): Likewise. (V8R_INSN): Updated name: V8_R-> V8R.
This commit is contained in:

committed by
Andre Vieira

parent
8032f75b29
commit
a4822788d7
@ -40,19 +40,19 @@ typedef uint32_t aarch64_insn;
|
||||
|
||||
/* The following bitmasks control CPU features. */
|
||||
#define AARCH64_FEATURE_V8 (1ULL << 0) /* All processors. */
|
||||
#define AARCH64_FEATURE_V8_6 (1ULL << 1) /* ARMv8.6 processors. */
|
||||
#define AARCH64_FEATURE_V8_6A (1ULL << 1) /* ARMv8.6 processors. */
|
||||
#define AARCH64_FEATURE_BFLOAT16 (1ULL << 2) /* Bfloat16 insns. */
|
||||
#define AARCH64_FEATURE_V8_A (1ULL << 3) /* Armv8-A processors. */
|
||||
#define AARCH64_FEATURE_V8A (1ULL << 3) /* Armv8-A processors. */
|
||||
#define AARCH64_FEATURE_SVE2 (1ULL << 4) /* SVE2 instructions. */
|
||||
#define AARCH64_FEATURE_V8_2 (1ULL << 5) /* ARMv8.2 processors. */
|
||||
#define AARCH64_FEATURE_V8_3 (1ULL << 6) /* ARMv8.3 processors. */
|
||||
#define AARCH64_FEATURE_V8_2A (1ULL << 5) /* ARMv8.2 processors. */
|
||||
#define AARCH64_FEATURE_V8_3A (1ULL << 6) /* ARMv8.3 processors. */
|
||||
#define AARCH64_FEATURE_SVE2_AES (1ULL << 7)
|
||||
#define AARCH64_FEATURE_SVE2_BITPERM (1ULL << 8)
|
||||
#define AARCH64_FEATURE_SVE2_SM4 (1ULL << 9)
|
||||
#define AARCH64_FEATURE_SVE2_SHA3 (1ULL << 10)
|
||||
#define AARCH64_FEATURE_V8_4 (1ULL << 11) /* ARMv8.4 processors. */
|
||||
#define AARCH64_FEATURE_V8_R (1ULL << 12) /* Armv8-R processors. */
|
||||
#define AARCH64_FEATURE_V8_7 (1ULL << 13) /* Armv8.7 processors. */
|
||||
#define AARCH64_FEATURE_V8_4A (1ULL << 11) /* ARMv8.4 processors. */
|
||||
#define AARCH64_FEATURE_V8R (1ULL << 12) /* Armv8-R processors. */
|
||||
#define AARCH64_FEATURE_V8_7A (1ULL << 13) /* Armv8.7 processors. */
|
||||
#define AARCH64_FEATURE_SME (1ULL << 14) /* Scalable Matrix Extension. */
|
||||
#define AARCH64_FEATURE_LS64 (1ULL << 15) /* Atomic 64-byte load/store. */
|
||||
#define AARCH64_FEATURE_PAC (1ULL << 16) /* v8.3 Pointer Authentication. */
|
||||
@ -63,7 +63,7 @@ typedef uint32_t aarch64_insn;
|
||||
#define AARCH64_FEATURE_PAN (1ULL << 21) /* PAN instructions. */
|
||||
#define AARCH64_FEATURE_LOR (1ULL << 22) /* LOR instructions. */
|
||||
#define AARCH64_FEATURE_RDMA (1ULL << 23) /* v8.1 SIMD instructions. */
|
||||
#define AARCH64_FEATURE_V8_1 (1ULL << 24) /* v8.1 features. */
|
||||
#define AARCH64_FEATURE_V8_1A (1ULL << 24) /* v8.1 features. */
|
||||
#define AARCH64_FEATURE_F16 (1ULL << 25) /* v8.2 FP16 instructions. */
|
||||
#define AARCH64_FEATURE_RAS (1ULL << 26) /* RAS Extensions. */
|
||||
#define AARCH64_FEATURE_PROFILE (1ULL << 27) /* Statistical Profiling. */
|
||||
@ -76,7 +76,7 @@ typedef uint32_t aarch64_insn;
|
||||
#define AARCH64_FEATURE_SHA3 (1ULL << 34) /* SHA3 instructions. */
|
||||
#define AARCH64_FEATURE_AES (1ULL << 35) /* AES instructions. */
|
||||
#define AARCH64_FEATURE_F16_FML (1ULL << 36) /* v8.2 FP16FML ins. */
|
||||
#define AARCH64_FEATURE_V8_5 (1ULL << 37) /* ARMv8.5 processors. */
|
||||
#define AARCH64_FEATURE_V8_5A (1ULL << 37) /* ARMv8.5 processors. */
|
||||
#define AARCH64_FEATURE_FLAGMANIP (1ULL << 38) /* v8.5 Flag Manipulation version 2. */
|
||||
#define AARCH64_FEATURE_FRINTTS (1ULL << 39) /* FRINT[32,64][Z,X] insns. */
|
||||
#define AARCH64_FEATURE_SB (1ULL << 40) /* SB instruction. */
|
||||
@ -95,36 +95,36 @@ typedef uint32_t aarch64_insn;
|
||||
#define AARCH64_FEATURE_F32MM (1ULL << 53)
|
||||
#define AARCH64_FEATURE_F64MM (1ULL << 54)
|
||||
#define AARCH64_FEATURE_FLAGM (1ULL << 55) /* v8.4 Flag Manipulation. */
|
||||
#define AARCH64_FEATURE_V9 (1ULL << 56) /* Armv9.0-A processors. */
|
||||
#define AARCH64_FEATURE_V9A (1ULL << 56) /* Armv9.0-A processors. */
|
||||
#define AARCH64_FEATURE_SME_F64F64 (1ULL << 57) /* SME F64F64. */
|
||||
#define AARCH64_FEATURE_SME_I16I64 (1ULL << 58) /* SME I16I64. */
|
||||
#define AARCH64_FEATURE_V8_8 (1ULL << 59) /* Armv8.8 processors. */
|
||||
#define AARCH64_FEATURE_V8_8A (1ULL << 59) /* Armv8.8 processors. */
|
||||
#define AARCH64_FEATURE_CSSC (1ULL << 60) /* Common Short Sequence Compression instructions. */
|
||||
#define AARCH64_FEATURE_SME2 (1ULL << 61) /* SME2. */
|
||||
|
||||
/* 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 \
|
||||
#define AARCH64_ARCH_V8A_FEATURES (AARCH64_FEATURE_V8A \
|
||||
| AARCH64_FEATURE_FP \
|
||||
| AARCH64_FEATURE_RAS \
|
||||
| AARCH64_FEATURE_SIMD)
|
||||
#define AARCH64_ARCH_V8_1_FEATURES (AARCH64_FEATURE_V8_1 \
|
||||
#define AARCH64_ARCH_V8_1A_FEATURES (AARCH64_FEATURE_V8_1A \
|
||||
| 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 \
|
||||
#define AARCH64_ARCH_V8_2A_FEATURES (AARCH64_FEATURE_V8_2A)
|
||||
#define AARCH64_ARCH_V8_3A_FEATURES (AARCH64_FEATURE_V8_3A \
|
||||
| AARCH64_FEATURE_PAC \
|
||||
| AARCH64_FEATURE_RCPC \
|
||||
| AARCH64_FEATURE_COMPNUM)
|
||||
#define AARCH64_ARCH_V8_4_FEATURES (AARCH64_FEATURE_V8_4 \
|
||||
#define AARCH64_ARCH_V8_4A_FEATURES (AARCH64_FEATURE_V8_4A \
|
||||
| AARCH64_FEATURE_DOTPROD \
|
||||
| AARCH64_FEATURE_FLAGM \
|
||||
| AARCH64_FEATURE_F16_FML)
|
||||
#define AARCH64_ARCH_V8_5_FEATURES (AARCH64_FEATURE_V8_5 \
|
||||
#define AARCH64_ARCH_V8_5A_FEATURES (AARCH64_FEATURE_V8_5A \
|
||||
| AARCH64_FEATURE_FLAGMANIP \
|
||||
| AARCH64_FEATURE_FRINTTS \
|
||||
| AARCH64_FEATURE_SB \
|
||||
@ -134,54 +134,54 @@ typedef uint32_t aarch64_insn;
|
||||
| AARCH64_FEATURE_SCXTNUM \
|
||||
| AARCH64_FEATURE_ID_PFR2 \
|
||||
| AARCH64_FEATURE_SSBS)
|
||||
#define AARCH64_ARCH_V8_6_FEATURES (AARCH64_FEATURE_V8_6 \
|
||||
#define AARCH64_ARCH_V8_6A_FEATURES (AARCH64_FEATURE_V8_6A \
|
||||
| AARCH64_FEATURE_BFLOAT16 \
|
||||
| AARCH64_FEATURE_I8MM)
|
||||
#define AARCH64_ARCH_V8_7_FEATURES (AARCH64_FEATURE_V8_7 \
|
||||
#define AARCH64_ARCH_V8_7A_FEATURES (AARCH64_FEATURE_V8_7A \
|
||||
| AARCH64_FEATURE_LS64)
|
||||
#define AARCH64_ARCH_V8_8_FEATURES (AARCH64_FEATURE_V8_8 \
|
||||
#define AARCH64_ARCH_V8_8A_FEATURES (AARCH64_FEATURE_V8_8A \
|
||||
| AARCH64_FEATURE_MOPS \
|
||||
| AARCH64_FEATURE_HBC)
|
||||
|
||||
#define AARCH64_ARCH_V9_FEATURES (AARCH64_FEATURE_V9 \
|
||||
#define AARCH64_ARCH_V9A_FEATURES (AARCH64_FEATURE_V9A \
|
||||
| AARCH64_FEATURE_F16 \
|
||||
| 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)
|
||||
#define AARCH64_ARCH_V9_1A_FEATURES (AARCH64_ARCH_V8_6A_FEATURES)
|
||||
#define AARCH64_ARCH_V9_2A_FEATURES (AARCH64_ARCH_V8_7A_FEATURES)
|
||||
#define AARCH64_ARCH_V9_3A_FEATURES (AARCH64_ARCH_V8_8A_FEATURES)
|
||||
|
||||
/* Architectures are the sum of the base and extensions. */
|
||||
#define AARCH64_ARCH_V8 AARCH64_FEATURE (AARCH64_FEATURE_V8, \
|
||||
AARCH64_ARCH_V8_FEATURES)
|
||||
#define AARCH64_ARCH_V8_1 AARCH64_FEATURE (AARCH64_ARCH_V8, \
|
||||
AARCH64_ARCH_V8_1_FEATURES)
|
||||
#define AARCH64_ARCH_V8_2 AARCH64_FEATURE (AARCH64_ARCH_V8_1, \
|
||||
AARCH64_ARCH_V8_2_FEATURES)
|
||||
#define AARCH64_ARCH_V8_3 AARCH64_FEATURE (AARCH64_ARCH_V8_2, \
|
||||
AARCH64_ARCH_V8_3_FEATURES)
|
||||
#define AARCH64_ARCH_V8_4 AARCH64_FEATURE (AARCH64_ARCH_V8_3, \
|
||||
AARCH64_ARCH_V8_4_FEATURES)
|
||||
#define AARCH64_ARCH_V8_5 AARCH64_FEATURE (AARCH64_ARCH_V8_4, \
|
||||
AARCH64_ARCH_V8_5_FEATURES)
|
||||
#define AARCH64_ARCH_V8_6 AARCH64_FEATURE (AARCH64_ARCH_V8_5, \
|
||||
AARCH64_ARCH_V8_6_FEATURES)
|
||||
#define AARCH64_ARCH_V8_7 AARCH64_FEATURE (AARCH64_ARCH_V8_6, \
|
||||
AARCH64_ARCH_V8_7_FEATURES)
|
||||
#define AARCH64_ARCH_V8_8 AARCH64_FEATURE (AARCH64_ARCH_V8_7, \
|
||||
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_V8A AARCH64_FEATURE (AARCH64_FEATURE_V8, \
|
||||
AARCH64_ARCH_V8A_FEATURES)
|
||||
#define AARCH64_ARCH_V8_1A AARCH64_FEATURE (AARCH64_ARCH_V8A, \
|
||||
AARCH64_ARCH_V8_1A_FEATURES)
|
||||
#define AARCH64_ARCH_V8_2A AARCH64_FEATURE (AARCH64_ARCH_V8_1A, \
|
||||
AARCH64_ARCH_V8_2A_FEATURES)
|
||||
#define AARCH64_ARCH_V8_3A AARCH64_FEATURE (AARCH64_ARCH_V8_2A, \
|
||||
AARCH64_ARCH_V8_3A_FEATURES)
|
||||
#define AARCH64_ARCH_V8_4A AARCH64_FEATURE (AARCH64_ARCH_V8_3A, \
|
||||
AARCH64_ARCH_V8_4A_FEATURES)
|
||||
#define AARCH64_ARCH_V8_5A AARCH64_FEATURE (AARCH64_ARCH_V8_4A, \
|
||||
AARCH64_ARCH_V8_5A_FEATURES)
|
||||
#define AARCH64_ARCH_V8_6A AARCH64_FEATURE (AARCH64_ARCH_V8_5A, \
|
||||
AARCH64_ARCH_V8_6A_FEATURES)
|
||||
#define AARCH64_ARCH_V8_7A AARCH64_FEATURE (AARCH64_ARCH_V8_6A, \
|
||||
AARCH64_ARCH_V8_7A_FEATURES)
|
||||
#define AARCH64_ARCH_V8_8A AARCH64_FEATURE (AARCH64_ARCH_V8_7A, \
|
||||
AARCH64_ARCH_V8_8A_FEATURES)
|
||||
#define AARCH64_ARCH_V8R (AARCH64_FEATURE (AARCH64_ARCH_V8_4A, \
|
||||
AARCH64_FEATURE_V8R) \
|
||||
& ~(AARCH64_FEATURE_V8A | AARCH64_FEATURE_LOR))
|
||||
|
||||
#define AARCH64_ARCH_V9 AARCH64_FEATURE (AARCH64_ARCH_V8_5, \
|
||||
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_V9A AARCH64_FEATURE (AARCH64_ARCH_V8_5A, \
|
||||
AARCH64_ARCH_V9A_FEATURES)
|
||||
#define AARCH64_ARCH_V9_1A AARCH64_FEATURE (AARCH64_ARCH_V9A, \
|
||||
AARCH64_ARCH_V9_1A_FEATURES)
|
||||
#define AARCH64_ARCH_V9_2A AARCH64_FEATURE (AARCH64_ARCH_V9_1A, \
|
||||
AARCH64_ARCH_V9_2A_FEATURES)
|
||||
#define AARCH64_ARCH_V9_3A AARCH64_FEATURE (AARCH64_ARCH_V9_2A, \
|
||||
AARCH64_ARCH_V9_3A_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