/* 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
