diff options
author | Andrew Carlotti <andrew.carlotti@arm.com> | 2025-01-16 02:34:44 +0000 |
---|---|---|
committer | Andrew Carlotti <andrew.carlotti@arm.com> | 2025-01-17 16:19:56 +0000 |
commit | 3b44637d9d891bf80db26d053561e843dc4d9f48 (patch) | |
tree | 05d2bcaa3ae3a3d1a9a12edb95affcdbcf4d9bd4 /include | |
parent | 400f304b4fad79a952d959a42a719ac90ab3d50d (diff) | |
download | binutils-3b44637d9d891bf80db26d053561e843dc4d9f48.zip binutils-3b44637d9d891bf80db26d053561e843dc4d9f48.tar.gz binutils-3b44637d9d891bf80db26d053561e843dc4d9f48.tar.bz2 |
aarch64: Fix sve2p1 gating and add missing instructions
Many FEAT_SVE2p1 instructions need to be enabled by either of two
different features (one for streaming mode, and one for non-streaming
mode). This patch adds correct gating conditions for these
instructions.
There were also a few sve2p1 instructions missing altogether, so add
those as well.
The testsuite is modified to check for all alternative enablement
conditions. In many cases this is done by adding an alternative
assembler commands to existing test files. For some SME/SME2 tests,
only some of the instructions are enabled by +sve2p1, so these are
copied into a separate test. For original SVE2p1 tests, the non-SME2p1
instructions have been moved to a separate test file.
There are also new tests for the newly added instructions. These
include a couple of fixme comments relating to bad error reporting,
which should be investigated later.
Diffstat (limited to 'include')
-rw-r--r-- | include/opcode/aarch64.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/include/opcode/aarch64.h b/include/opcode/aarch64.h index 7553735..dfe3f05 100644 --- a/include/opcode/aarch64.h +++ b/include/opcode/aarch64.h @@ -268,6 +268,8 @@ enum aarch64_feature_bit { AARCH64_FEATURE_SVE_B16B16, /* SME non-widening BFloat16 instructions. */ AARCH64_FEATURE_SME_B16B16, + /* Armv9.5-A processors. */ + AARCH64_FEATURE_V9_5A, /* Virtual features. These are used to gate instructions that are enabled by either of two (or more) sets of command line flags. */ @@ -279,8 +281,12 @@ enum aarch64_feature_bit { AARCH64_FEATURE_FP8DOT2_SVE, /* +sme-f16f16 or +sme-f8f16 */ AARCH64_FEATURE_SME_F16F16_F8F16, - /* Armv9.5-A processors. */ - AARCH64_FEATURE_V9_5A, + /* +sve2p1 or +sme */ + AARCH64_FEATURE_SVE2p1_SME, + /* +sve2p1 or +sme2 */ + AARCH64_FEATURE_SVE2p1_SME2, + /* +sve2p1 or +sme2p1 */ + AARCH64_FEATURE_SVE2p1_SME2p1, AARCH64_NUM_FEATURES }; |