Add feature name (FEAT_) support to AArch64 instructions
AArch64 instructions are characterised by a feature name starting with FEAT_, see:
https://developer.arm.com/downloads/-/exploration-tools/feature-names-for-a-profile
Implementations of the AArch64 architecture are more accurately described by FEAT_ feature names, than by vX.Y versions, see the explanation at https://github.com/DynamoRIO/dynamorio/pull/5334#issuecomment-1033999742
This issue will clarify how FEAT_ should be implemented. The following is proposed:
- A new enum
dr_isa_feat_tsimilar todr_isa_mode_tbut for AArch64 only. - API accessor functions
dr_get_isa_feat()andinstr_set_isa_feat(). - The AArch64 codec will specify the
FEAT_for all instructions after base v8.0. - The system registers
ID_AA64ISAR0_EL1,ID_AA64ISAR1_EL1andID_AA64PFR0_EL1will be read on DynamoRIO startup in order to establish whichFEAT_s are implemented by the h/w. During instruction decode and encode, the instruction'sFEAT_will be checked against theFEAT_list implemented by the h/w, delivering an error message if theFEAT_is not implemented.