aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAndrew Carlotti <andrew.carlotti@arm.com>2025-01-16 02:34:44 +0000
committerAndrew Carlotti <andrew.carlotti@arm.com>2025-01-17 16:19:56 +0000
commit3b44637d9d891bf80db26d053561e843dc4d9f48 (patch)
tree05d2bcaa3ae3a3d1a9a12edb95affcdbcf4d9bd4 /include
parent400f304b4fad79a952d959a42a719ac90ab3d50d (diff)
downloadbinutils-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.h10
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
};