summaryrefslogtreecommitdiff
path: root/arch/arm64/disassembler/feature_flags.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2024-03-05 19:50:13 -0500
committerRusty Wagner <rusty.wagner@gmail.com>2024-03-05 20:34:34 -0500
commite093c21ed880ac3eb72119be15093ee04f8ce299 (patch)
tree9f720ebdc0ae415734b1199ed341668c69710a94 /arch/arm64/disassembler/feature_flags.h
parent0609276712622908254065546102381466033141 (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.h197
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