diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2024-03-05 19:50:13 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2024-03-05 20:34:34 -0500 |
| commit | e093c21ed880ac3eb72119be15093ee04f8ce299 (patch) | |
| tree | 9f720ebdc0ae415734b1199ed341668c69710a94 /arch/arm64/disassembler/feature_flags.h | |
| parent | 0609276712622908254065546102381466033141 (diff) | |
Move architecture modules into the API repo
Diffstat (limited to 'arch/arm64/disassembler/feature_flags.h')
| -rw-r--r-- | arch/arm64/disassembler/feature_flags.h | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/arch/arm64/disassembler/feature_flags.h b/arch/arm64/disassembler/feature_flags.h new file mode 100644 index 00000000..349f0cc6 --- /dev/null +++ b/arch/arm64/disassembler/feature_flags.h @@ -0,0 +1,197 @@ +/* GENERATED FILE */ +#pragma once +// 41 HasXXX() functions used by decode: +#define HasBF16() (ctx->features0 & ARCH_FEATURE_BF16) +#define HasBTI() (ctx->features0 & ARCH_FEATURE_BTI) +#define HasDGH() (ctx->features0 & ARCH_FEATURE_DGH) +#define HasDotProd() (ctx->features0 & ARCH_FEATURE_DotProd) +#define HasF32MM() (ctx->features0 & ARCH_FEATURE_F32MM) +#define HasF64MM() (ctx->features0 & ARCH_FEATURE_F64MM) +#define HasFCMA() (ctx->features0 & ARCH_FEATURE_FCMA) +#define HasFHM() (ctx->features0 & ARCH_FEATURE_FHM) +#define HasFP16() (ctx->features0 & ARCH_FEATURE_FP16) +#define HasFRINTTS() (ctx->features0 & ARCH_FEATURE_FRINTTS) +#define HasFlagM() (ctx->features0 & ARCH_FEATURE_FlagM) +#define HasFlagM2() (ctx->features0 & ARCH_FEATURE_FlagM2) +#define HasI8MM() (ctx->features0 & ARCH_FEATURE_I8MM) +#define HasJSCVT() (ctx->features0 & ARCH_FEATURE_JSCVT) +#define HasLOR() (ctx->features0 & ARCH_FEATURE_LOR) +#define HasLRCPC() (ctx->features0 & ARCH_FEATURE_LRCPC) +#define HasLRCPC2() (ctx->features0 & ARCH_FEATURE_LRCPC2) +#define HasLS64() (ctx->features0 & ARCH_FEATURE_LS64) +#define HasLS64_V() (ctx->features0 & ARCH_FEATURE_LS64_V) +#define HasLSE() (ctx->features0 & ARCH_FEATURE_LSE) +#define HasMTE() (ctx->features0 & ARCH_FEATURE_MTE) +#define HasMTE2() (ctx->features0 & ARCH_FEATURE_MTE2) +#define HasPAuth() (ctx->features0 & ARCH_FEATURE_PAuth) +#define HasRAS() (ctx->features0 & ARCH_FEATURE_RAS) +#define HasRDM() (ctx->features0 & ARCH_FEATURE_RDM) +#define HasSHA3() (ctx->features0 & ARCH_FEATURE_SHA3) +#define HasSHA512() (ctx->features0 & ARCH_FEATURE_SHA512) +#define HasSM3() (ctx->features0 & ARCH_FEATURE_SM3) +#define HasSM4() (ctx->features0 & ARCH_FEATURE_SM4) +#define HasSME() (ctx->features0 & ARCH_FEATURE_SME) +#define HasSME_F64F64() (ctx->features0 & ARCH_FEATURE_SME_F64F64) +#define HasSME_I16I64() (ctx->features0 & ARCH_FEATURE_SME_I16I64) +#define HasSPE() (ctx->features0 & ARCH_FEATURE_SPE) +#define HasSVE_AES() (ctx->features0 & ARCH_FEATURE_SVE_AES) +#define HasSVE_BitPerm() (ctx->features0 & ARCH_FEATURE_SVE_BitPerm) +#define HasSVE_SHA3() (ctx->features0 & ARCH_FEATURE_SVE_SHA3) +#define HasSVE_SM4() (ctx->features0 & ARCH_FEATURE_SVE_SM4) +#define HasTME() (ctx->features0 & ARCH_FEATURE_TME) +#define HasTRF() (ctx->features0 & ARCH_FEATURE_TRF) +#define HasWFxT() (ctx->features0 & ARCH_FEATURE_WFxT) +#define HasXS() (ctx->features0 & ARCH_FEATURE_XS) + +// 52 HaveXXX() functions used by pcode: +#define HaveAESExt() (ctx->features1 & ARCH_FEATURE_AESExt) +#define HaveAtomicExt() (ctx->features1 & ARCH_FEATURE_AtomicExt) +#define HaveBF16Ext() (ctx->features1 & ARCH_FEATURE_BF16Ext) +#define HaveBTIExt() (ctx->features1 & ARCH_FEATURE_BTIExt) +#define HaveBit128PMULLExt() (ctx->features1 & ARCH_FEATURE_Bit128PMULLExt) +#define HaveCRCExt() (ctx->features1 & ARCH_FEATURE_CRCExt) +#define HaveDGHExt() (ctx->features1 & ARCH_FEATURE_DGHExt) +#define HaveDITExt() (ctx->features1 & ARCH_FEATURE_DITExt) +#define HaveDOTPExt() (ctx->features1 & ARCH_FEATURE_DOTPExt) +#define HaveFCADDExt() (ctx->features1 & ARCH_FEATURE_FCADDExt) +#define HaveFJCVTZSExt() (ctx->features1 & ARCH_FEATURE_FJCVTZSExt) +#define HaveFP16Ext() (ctx->features1 & ARCH_FEATURE_FP16Ext) +#define HaveFP16MulNoRoundingToFP32Ext() (ctx->features1 & ARCH_FEATURE_FP16MulNoRoundingToFP32Ext) +#define HaveFeatLS64() (ctx->features1 & ARCH_FEATURE_FeatLS64) +#define HaveFeatWFxT() (ctx->features1 & ARCH_FEATURE_FeatWFxT) +#define HaveFeatXS() (ctx->features1 & ARCH_FEATURE_FeatXS) +#define HaveFlagFormatExt() (ctx->features1 & ARCH_FEATURE_FlagFormatExt) +#define HaveFlagManipulateExt() (ctx->features1 & ARCH_FEATURE_FlagManipulateExt) +#define HaveFrintExt() (ctx->features1 & ARCH_FEATURE_FrintExt) +#define HaveInt8MatMulExt() (ctx->features1 & ARCH_FEATURE_Int8MatMulExt) +#define HaveMTE2Ext() (ctx->features1 & ARCH_FEATURE_MTE2Ext) +#define HaveMTEExt() (ctx->features1 & ARCH_FEATURE_MTEExt) +#define HaveNVExt() (ctx->features1 & ARCH_FEATURE_NVExt) +#define HavePACExt() (ctx->features1 & ARCH_FEATURE_PACExt) +#define HavePANExt() (ctx->features1 & ARCH_FEATURE_PANExt) +#define HaveQRDMLAHExt() (ctx->features1 & ARCH_FEATURE_QRDMLAHExt) +#define HaveRASExt() (ctx->features1 & ARCH_FEATURE_RASExt) +#define HaveSBExt() (ctx->features1 & ARCH_FEATURE_SBExt) +#define HaveSHA1Ext() (ctx->features1 & ARCH_FEATURE_SHA1Ext) +#define HaveSHA256Ext() (ctx->features1 & ARCH_FEATURE_SHA256Ext) +#define HaveSHA3Ext() (ctx->features1 & ARCH_FEATURE_SHA3Ext) +#define HaveSHA512Ext() (ctx->features1 & ARCH_FEATURE_SHA512Ext) +#define HaveSM3Ext() (ctx->features1 & ARCH_FEATURE_SM3Ext) +#define HaveSM4Ext() (ctx->features1 & ARCH_FEATURE_SM4Ext) +#define HaveSME() (ctx->features1 & ARCH_FEATURE_SME) +#define HaveSMEF64F64() (ctx->features1 & ARCH_FEATURE_SMEF64F64) +#define HaveSMEI16I64() (ctx->features1 & ARCH_FEATURE_SMEI16I64) +#define HaveSSBSExt() (ctx->features1 & ARCH_FEATURE_SSBSExt) +#define HaveSVE() (ctx->features1 & ARCH_FEATURE_SVE) +#define HaveSVE2() (ctx->features1 & ARCH_FEATURE_SVE2) +#define HaveSVE2AES() (ctx->features1 & ARCH_FEATURE_SVE2AES) +#define HaveSVE2BitPerm() (ctx->features1 & ARCH_FEATURE_SVE2BitPerm) +#define HaveSVE2PMULL128() (ctx->features1 & ARCH_FEATURE_SVE2PMULL128) +#define HaveSVE2SHA3() (ctx->features1 & ARCH_FEATURE_SVE2SHA3) +#define HaveSVE2SM4() (ctx->features1 & ARCH_FEATURE_SVE2SM4) +#define HaveSVEFP32MatMulExt() (ctx->features1 & ARCH_FEATURE_SVEFP32MatMulExt) +#define HaveSVEFP64MatMulExt() (ctx->features1 & ARCH_FEATURE_SVEFP64MatMulExt) +#define HaveSelfHostedTrace() (ctx->features1 & ARCH_FEATURE_SelfHostedTrace) +#define HaveStatisticalProfiling() (ctx->features1 & ARCH_FEATURE_StatisticalProfiling) +#define HaveTME() (ctx->features1 & ARCH_FEATURE_TME) +#define HaveUAOExt() (ctx->features1 & ARCH_FEATURE_UAOExt) +#define HaveVirtHostExt() (ctx->features1 & ARCH_FEATURE_VirtHostExt) + +// defines for features referenced at decode +#define ARCH_FEATURE_BF16 ((uint64_t)1<<0) +#define ARCH_FEATURE_BTI ((uint64_t)1<<1) +#define ARCH_FEATURE_DGH ((uint64_t)1<<2) +#define ARCH_FEATURE_DotProd ((uint64_t)1<<3) +#define ARCH_FEATURE_F32MM ((uint64_t)1<<4) +#define ARCH_FEATURE_F64MM ((uint64_t)1<<5) +#define ARCH_FEATURE_FCMA ((uint64_t)1<<6) +#define ARCH_FEATURE_FHM ((uint64_t)1<<7) +#define ARCH_FEATURE_FP16 ((uint64_t)1<<8) +#define ARCH_FEATURE_FRINTTS ((uint64_t)1<<9) +#define ARCH_FEATURE_FlagM ((uint64_t)1<<10) +#define ARCH_FEATURE_FlagM2 ((uint64_t)1<<11) +#define ARCH_FEATURE_I8MM ((uint64_t)1<<12) +#define ARCH_FEATURE_JSCVT ((uint64_t)1<<13) +#define ARCH_FEATURE_LOR ((uint64_t)1<<14) +#define ARCH_FEATURE_LRCPC ((uint64_t)1<<15) +#define ARCH_FEATURE_LRCPC2 ((uint64_t)1<<16) +#define ARCH_FEATURE_LS64 ((uint64_t)1<<17) +#define ARCH_FEATURE_LS64_V ((uint64_t)1<<18) +#define ARCH_FEATURE_LSE ((uint64_t)1<<19) +#define ARCH_FEATURE_MTE ((uint64_t)1<<20) +#define ARCH_FEATURE_MTE2 ((uint64_t)1<<21) +#define ARCH_FEATURE_PAuth ((uint64_t)1<<22) +#define ARCH_FEATURE_RAS ((uint64_t)1<<23) +#define ARCH_FEATURE_RDM ((uint64_t)1<<24) +#define ARCH_FEATURE_SHA3 ((uint64_t)1<<25) +#define ARCH_FEATURE_SHA512 ((uint64_t)1<<26) +#define ARCH_FEATURE_SM3 ((uint64_t)1<<27) +#define ARCH_FEATURE_SM4 ((uint64_t)1<<28) +#define ARCH_FEATURE_SME ((uint64_t)1<<29) +#define ARCH_FEATURE_SME_F64F64 ((uint64_t)1<<30) +#define ARCH_FEATURE_SME_I16I64 ((uint64_t)1<<31) +#define ARCH_FEATURE_SPE ((uint64_t)1<<32) +#define ARCH_FEATURE_SVE_AES ((uint64_t)1<<33) +#define ARCH_FEATURE_SVE_BitPerm ((uint64_t)1<<34) +#define ARCH_FEATURE_SVE_SHA3 ((uint64_t)1<<35) +#define ARCH_FEATURE_SVE_SM4 ((uint64_t)1<<36) +#define ARCH_FEATURE_TME ((uint64_t)1<<37) +#define ARCH_FEATURE_TRF ((uint64_t)1<<38) +#define ARCH_FEATURE_WFxT ((uint64_t)1<<39) +#define ARCH_FEATURE_XS ((uint64_t)1<<40) + +// defines for features referenced by pcode +#define ARCH_FEATURE_AESExt ((uint64_t)1<<0) +#define ARCH_FEATURE_AtomicExt ((uint64_t)1<<1) +#define ARCH_FEATURE_BF16Ext ((uint64_t)1<<2) +#define ARCH_FEATURE_BTIExt ((uint64_t)1<<3) +#define ARCH_FEATURE_Bit128PMULLExt ((uint64_t)1<<4) +#define ARCH_FEATURE_CRCExt ((uint64_t)1<<5) +#define ARCH_FEATURE_DGHExt ((uint64_t)1<<6) +#define ARCH_FEATURE_DITExt ((uint64_t)1<<7) +#define ARCH_FEATURE_DOTPExt ((uint64_t)1<<8) +#define ARCH_FEATURE_FCADDExt ((uint64_t)1<<9) +#define ARCH_FEATURE_FJCVTZSExt ((uint64_t)1<<10) +#define ARCH_FEATURE_FP16Ext ((uint64_t)1<<11) +#define ARCH_FEATURE_FP16MulNoRoundingToFP32Ext ((uint64_t)1<<12) +#define ARCH_FEATURE_FeatLS64 ((uint64_t)1<<13) +#define ARCH_FEATURE_FeatWFxT ((uint64_t)1<<14) +#define ARCH_FEATURE_FeatXS ((uint64_t)1<<15) +#define ARCH_FEATURE_FlagFormatExt ((uint64_t)1<<16) +#define ARCH_FEATURE_FlagManipulateExt ((uint64_t)1<<17) +#define ARCH_FEATURE_FrintExt ((uint64_t)1<<18) +#define ARCH_FEATURE_Int8MatMulExt ((uint64_t)1<<19) +#define ARCH_FEATURE_MTE2Ext ((uint64_t)1<<20) +#define ARCH_FEATURE_MTEExt ((uint64_t)1<<21) +#define ARCH_FEATURE_NVExt ((uint64_t)1<<22) +#define ARCH_FEATURE_PACExt ((uint64_t)1<<23) +#define ARCH_FEATURE_PANExt ((uint64_t)1<<24) +#define ARCH_FEATURE_QRDMLAHExt ((uint64_t)1<<25) +#define ARCH_FEATURE_RASExt ((uint64_t)1<<26) +#define ARCH_FEATURE_SBExt ((uint64_t)1<<27) +#define ARCH_FEATURE_SHA1Ext ((uint64_t)1<<28) +#define ARCH_FEATURE_SHA256Ext ((uint64_t)1<<29) +#define ARCH_FEATURE_SHA3Ext ((uint64_t)1<<30) +#define ARCH_FEATURE_SHA512Ext ((uint64_t)1<<31) +#define ARCH_FEATURE_SM3Ext ((uint64_t)1<<32) +#define ARCH_FEATURE_SM4Ext ((uint64_t)1<<33) +//#define ARCH_FEATURE_SME ((uint64_t)1<<34) +#define ARCH_FEATURE_SMEF64F64 ((uint64_t)1<<35) +#define ARCH_FEATURE_SMEI16I64 ((uint64_t)1<<36) +#define ARCH_FEATURE_SSBSExt ((uint64_t)1<<37) +#define ARCH_FEATURE_SVE ((uint64_t)1<<38) +#define ARCH_FEATURE_SVE2 ((uint64_t)1<<39) +#define ARCH_FEATURE_SVE2AES ((uint64_t)1<<40) +#define ARCH_FEATURE_SVE2BitPerm ((uint64_t)1<<41) +#define ARCH_FEATURE_SVE2PMULL128 ((uint64_t)1<<42) +#define ARCH_FEATURE_SVE2SHA3 ((uint64_t)1<<43) +#define ARCH_FEATURE_SVE2SM4 ((uint64_t)1<<44) +#define ARCH_FEATURE_SVEFP32MatMulExt ((uint64_t)1<<45) +#define ARCH_FEATURE_SVEFP64MatMulExt ((uint64_t)1<<46) +#define ARCH_FEATURE_SelfHostedTrace ((uint64_t)1<<47) +#define ARCH_FEATURE_StatisticalProfiling ((uint64_t)1<<48) +//#define ARCH_FEATURE_TME ((uint64_t)1<<49) +#define ARCH_FEATURE_UAOExt ((uint64_t)1<<50) +#define ARCH_FEATURE_VirtHostExt ((uint64_t)1<<51) + +#define ARCH_FEATURES_ALL 0xFFFFFFFFFFFFFFFF |
