aarch64: Add support for FEAT_SVE2p1.

Hi,

This patch add support for FEAT_SVE2p1 (SVE2.1 Extension) feature
along with +sve2p1 optional flag to enabe this feature.

Also support for following SVE2p1 instructions is added
addqv, andqv, smaxqv, sminqv, umaxqv, uminqv and uminqv.

Regression testing for aarch64-none-elf target and found no regressions.

Ok for binutils-master?

Regards,
Srinath.
This commit is contained in:
Srinath Parvathaneni
2024-01-15 09:35:55 +00:00
committed by Nick Clifton
parent 89e06ec152
commit 88601c2d94
11 changed files with 195 additions and 2 deletions
+8 -2
View File
@@ -226,6 +226,8 @@ enum aarch64_feature_bit {
AARCH64_FEATURE_B16B16,
/* SME2.1 instructions. */
AARCH64_FEATURE_SME2p1,
/* SVE2.1 instructions. */
AARCH64_FEATURE_SVE2p1,
AARCH64_NUM_FEATURES
};
@@ -1000,6 +1002,7 @@ enum aarch64_insn_class
cssc,
gcs,
the,
sve2_urqvs
};
/* Opcode enumerators. */
@@ -1272,7 +1275,9 @@ extern const aarch64_opcode aarch64_opcode_table[];
allow. This impacts the constraintts on assembly but yelds no
impact on disassembly. */
#define F_OPD_NARROW (1ULL << 33)
/* Next bit is 34. */
/* For the instruction with size[22:23] field. */
#define F_OPD_SIZE (1ULL << 34)
/* Next bit is 35. */
/* Instruction constraints. */
/* This instruction has a predication constraint on the instruction at PC+4. */
@@ -1339,7 +1344,8 @@ static inline bool
opcode_has_special_coder (const aarch64_opcode *opcode)
{
return (opcode->flags & (F_SF | F_LSE_SZ | F_SIZEQ | F_FPTYPE | F_SSIZE | F_T
| F_GPRSIZE_IN_Q | F_LDS_SIZE | F_MISC | F_N | F_COND)) != 0;
| F_GPRSIZE_IN_Q | F_LDS_SIZE | F_MISC | F_N | F_COND
| F_OPD_SIZE)) != 0;
}
struct aarch64_name_value_pair