summaryrefslogtreecommitdiff
path: root/arch/arm64/disassembler/feature_flags.h
blob: 349f0cc69c45ffd9fb022bf7ac7d47f497e28ce0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
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