1// Autogenerated by ARMTargetDefEmitter.cpp
2
3#ifndef ARM_PROCESSOR_FAMILY
4#define ARM_PROCESSOR_FAMILY(ENUM)
5#endif
6
7ARM_PROCESSOR_FAMILY(TSV110)
8ARM_PROCESSOR_FAMILY(CortexR82)
9ARM_PROCESSOR_FAMILY(ThunderX2T99)
10ARM_PROCESSOR_FAMILY(AppleA17)
11ARM_PROCESSOR_FAMILY(Neoverse512TVB)
12ARM_PROCESSOR_FAMILY(ThunderXT81)
13ARM_PROCESSOR_FAMILY(CortexA725)
14ARM_PROCESSOR_FAMILY(C1Premium)
15ARM_PROCESSOR_FAMILY(CortexA55)
16ARM_PROCESSOR_FAMILY(MONAKA)
17ARM_PROCESSOR_FAMILY(CortexA78AE)
18ARM_PROCESSOR_FAMILY(CortexX4)
19ARM_PROCESSOR_FAMILY(CortexA520)
20ARM_PROCESSOR_FAMILY(AppleA13)
21ARM_PROCESSOR_FAMILY(CortexA76)
22ARM_PROCESSOR_FAMILY(NeoverseN1)
23ARM_PROCESSOR_FAMILY(Kryo)
24ARM_PROCESSOR_FAMILY(AppleA11)
25ARM_PROCESSOR_FAMILY(AppleA14)
26ARM_PROCESSOR_FAMILY(NeoverseN2)
27ARM_PROCESSOR_FAMILY(AppleA16)
28ARM_PROCESSOR_FAMILY(CortexA73)
29ARM_PROCESSOR_FAMILY(CortexX2)
30ARM_PROCESSOR_FAMILY(AppleA7)
31ARM_PROCESSOR_FAMILY(C1Nano)
32ARM_PROCESSOR_FAMILY(CortexA77)
33ARM_PROCESSOR_FAMILY(CortexA53)
34ARM_PROCESSOR_FAMILY(Ampere1B)
35ARM_PROCESSOR_FAMILY(Ampere1C)
36ARM_PROCESSOR_FAMILY(Ampere1A)
37ARM_PROCESSOR_FAMILY(CortexA35)
38ARM_PROCESSOR_FAMILY(CortexA510)
39ARM_PROCESSOR_FAMILY(ExynosM3)
40ARM_PROCESSOR_FAMILY(NeoverseV1)
41ARM_PROCESSOR_FAMILY(ThunderX)
42ARM_PROCESSOR_FAMILY(CortexA710)
43ARM_PROCESSOR_FAMILY(Ampere1)
44ARM_PROCESSOR_FAMILY(AppleM4)
45ARM_PROCESSOR_FAMILY(Olympus)
46ARM_PROCESSOR_FAMILY(Oryon)
47ARM_PROCESSOR_FAMILY(CortexA78C)
48ARM_PROCESSOR_FAMILY(AppleA12)
49ARM_PROCESSOR_FAMILY(A64FX)
50ARM_PROCESSOR_FAMILY(HIP12)
51ARM_PROCESSOR_FAMILY(AppleM5)
52ARM_PROCESSOR_FAMILY(NeoverseN3)
53ARM_PROCESSOR_FAMILY(NeoverseV2)
54ARM_PROCESSOR_FAMILY(ThunderX3T110)
55ARM_PROCESSOR_FAMILY(CortexA57)
56ARM_PROCESSOR_FAMILY(CortexA75)
57ARM_PROCESSOR_FAMILY(C2Ultra)
58ARM_PROCESSOR_FAMILY(Saphira)
59ARM_PROCESSOR_FAMILY(Carmel)
60ARM_PROCESSOR_FAMILY(CortexA72)
61ARM_PROCESSOR_FAMILY(ThunderXT83)
62ARM_PROCESSOR_FAMILY(NeoverseV3)
63ARM_PROCESSOR_FAMILY(ThunderXT88)
64ARM_PROCESSOR_FAMILY(CortexA320)
65ARM_PROCESSOR_FAMILY(Falkor)
66ARM_PROCESSOR_FAMILY(C1Ultra)
67ARM_PROCESSOR_FAMILY(CortexX3)
68ARM_PROCESSOR_FAMILY(C1Pro)
69ARM_PROCESSOR_FAMILY(CortexA720)
70ARM_PROCESSOR_FAMILY(CortexX1)
71ARM_PROCESSOR_FAMILY(CortexA78)
72ARM_PROCESSOR_FAMILY(NeoverseE1)
73ARM_PROCESSOR_FAMILY(CortexA715)
74ARM_PROCESSOR_FAMILY(AppleA15)
75ARM_PROCESSOR_FAMILY(CortexR82AE)
76ARM_PROCESSOR_FAMILY(AppleA10)
77ARM_PROCESSOR_FAMILY(CortexX925)
78ARM_PROCESSOR_FAMILY(CortexA65)
79ARM_PROCESSOR_FAMILY(NeoverseV3AE)
80
81#undef ARM_PROCESSOR_FAMILY
82
83#ifndef ARM_ARCHITECTURE
84#define ARM_ARCHITECTURE(ENUM)
85#endif
86
87
88#undef ARM_ARCHITECTURE
89
90#ifdef EMIT_ARCHEXTKIND_ENUM
91enum ArchExtKind : unsigned {
92 AEK_AES,
93 AEK_ALTERNATIVENZCV,
94 AEK_AM,
95 AEK_AMVS,
96 AEK_BF16,
97 AEK_BRBE,
98 AEK_BTI,
99 AEK_BTIE,
100 AEK_CCDP,
101 AEK_CCIDX,
102 AEK_CCPP,
103 AEK_CFLT,
104 AEK_CHK,
105 AEK_CLRBHB,
106 AEK_CMPBR,
107 AEK_FCMA,
108 AEK_CPA,
109 AEK_CRC,
110 AEK_CRYPTO,
111 AEK_CSSC,
112 AEK_D128,
113 AEK_DIT,
114 AEK_DOTPROD,
115 AEK_ENHANCEDCOUNTERVIRTUALIZATION,
116 AEK_ETE,
117 AEK_F16F32DOT,
118 AEK_F16F32MM,
119 AEK_F16MM,
120 AEK_F32MM,
121 AEK_F64MM,
122 AEK_F8F16MM,
123 AEK_F8F32MM,
124 AEK_FAMINMAX,
125 AEK_FINEGRAINEDTRAPS,
126 AEK_FLAGM,
127 AEK_FP,
128 AEK_FP16FML,
129 AEK_FP8,
130 AEK_FP8DOT2,
131 AEK_FP8DOT4,
132 AEK_FP8FMA,
133 AEK_FPAC,
134 AEK_FPRCVT,
135 AEK_FRINT3264,
136 AEK_FP16,
137 AEK_GCIE,
138 AEK_GCS,
139 AEK_HBC,
140 AEK_HINTE,
141 AEK_I8MM,
142 AEK_ITE,
143 AEK_JSCVT,
144 AEK_LOR,
145 AEK_LS64,
146 AEK_LSC64B,
147 AEK_LSCP,
148 AEK_LSE,
149 AEK_LSE128,
150 AEK_LSE2,
151 AEK_LSFE,
152 AEK_LSUI,
153 AEK_LUT,
154 AEK_MEC,
155 AEK_MOPS,
156 AEK_MOPS_GO,
157 AEK_MPAM,
158 AEK_MTE,
159 AEK_MTETC,
160 AEK_SIMD,
161 AEK_NMI,
162 AEK_NV,
163 AEK_OCCMO,
164 AEK_PAN,
165 AEK_PAN_RWV,
166 AEK_PAUTH,
167 AEK_PAUTHLR,
168 AEK_PERFMON,
169 AEK_POE2,
170 AEK_POPS,
171 AEK_PREDRES,
172 AEK_PRFM_SLC,
173 AEK_RAND,
174 AEK_RAS,
175 AEK_RASV2,
176 AEK_RCPC,
177 AEK_RCPC_IMMO,
178 AEK_RCPC3,
179 AEK_RDM,
180 AEK_RME,
181 AEK_SB,
182 AEK_SEL2,
183 AEK_SHA2,
184 AEK_SHA3,
185 AEK_SM4,
186 AEK_SME,
187 AEK_SMEB16B16,
188 AEK_SMEF16F16,
189 AEK_SMEF64F64,
190 AEK_SMEF8F16,
191 AEK_SMEF8F32,
192 AEK_SMEFA64,
193 AEK_SMEI16I64,
194 AEK_SME_LUTV2,
195 AEK_SME_MOP4,
196 AEK_SME_TMOP,
197 AEK_SME2,
198 AEK_SME2P1,
199 AEK_SME2P2,
200 AEK_SME2P3,
201 AEK_PROFILE,
202 AEK_SPE_EEF,
203 AEK_SPECRES2,
204 AEK_SPECRESTRICT,
205 AEK_SSBS,
206 AEK_SSVE_AES,
207 AEK_SSVE_BITPERM,
208 AEK_SSVE_FEXPA,
209 AEK_SSVE_FP8DOT2,
210 AEK_SSVE_FP8DOT4,
211 AEK_SSVE_FP8FMA,
212 AEK_SVE,
213 AEK_SVEAES,
214 AEK_SVE_AES2,
215 AEK_SVEB16B16,
216 AEK_SVE_B16MM,
217 AEK_SVE_BFSCALE,
218 AEK_SVEBITPERM,
219 AEK_SVE_F16F32MM,
220 AEK_SVESHA3,
221 AEK_SVESM4,
222 AEK_SVE2,
223 AEK_SVE2AES,
224 AEK_SVE2BITPERM,
225 AEK_SVE2SHA3,
226 AEK_SVE2SM4,
227 AEK_SVE2P1,
228 AEK_SVE2P2,
229 AEK_SVE2P3,
230 AEK_TEV,
231 AEK_THE,
232 AEK_TLB_RMI,
233 AEK_TLBID,
234 AEK_TLBIW,
235 AEK_TRACEV8_4,
236 AEK_TRBE,
237 AEK_PSUAO,
238 AEK_VH,
239 AEK_WFXT,
240 AEK_XS,
241 AEK_NUM_EXTENSIONS
242};
243#undef EMIT_ARCHEXTKIND_ENUM
244#endif // EMIT_ARCHEXTKIND_ENUM
245#ifdef EMIT_EXTENSIONS
246inline constexpr ExtensionInfo Extensions[] = {
247 {1, 0, AArch64::AEK_AES, 5, 26, 45, 50},
248 {0, 0, AArch64::AEK_ALTERNATIVENZCV, 55, 67, 129, 138},
249 {0, 0, AArch64::AEK_AM, 147, 158, 203, 207},
250 {0, 0, AArch64::AEK_AMVS, 211, 224, 282, 288},
251 {294, 0, AArch64::AEK_BF16, 299, 309, 335, 341},
252 {347, 0, AArch64::AEK_BRBE, 352, 362, 400, 406},
253 {412, 0, AArch64::AEK_BTI, 416, 425, 461, 466},
254 {471, 0, AArch64::AEK_BTIE, 476, 486, 541, 547},
255 {0, 0, AArch64::AEK_CCDP, 553, 563, 621, 627},
256 {0, 0, AArch64::AEK_CCIDX, 633, 644, 697, 704},
257 {0, 0, AArch64::AEK_CCPP, 711, 720, 778, 784},
258 {790, 0, AArch64::AEK_CFLT, 795, 805, 853, 859},
259 {0, 0, AArch64::AEK_CHK, 865, 874, 922, 927},
260 {0, 0, AArch64::AEK_CLRBHB, 932, 944, 973, 981},
261 {989, 0, AArch64::AEK_CMPBR, 995, 1006, 1060, 1067},
262 {1074, 0, AArch64::AEK_FCMA, 1079, 1089, 1144, 1155},
263 {1166, 0, AArch64::AEK_CPA, 1170, 1179, 1223, 1228},
264 {1233, 0, AArch64::AEK_CRC, 1237, 1248, 1294, 1299},
265 {1304, 0, AArch64::AEK_CRYPTO, 1311, 1323, 1357, 1365},
266 {1373, 0, AArch64::AEK_CSSC, 1378, 1388, 1449, 1455},
267 {1461, 0, AArch64::AEK_D128, 1466, 1521, 1604, 1610},
268 {1616, 0, AArch64::AEK_DIT, 1620, 1629, 1683, 1688},
269 {1693, 0, AArch64::AEK_DOTPROD, 1701, 1714, 1741, 1750},
270 {0, 0, AArch64::AEK_ENHANCEDCOUNTERVIRTUALIZATION, 1759, 1768, 1817, 1822},
271 {0, 0, AArch64::AEK_ETE, 1827, 1836, 1868, 1873},
272 {1878, 0, AArch64::AEK_F16F32DOT, 1888, 1903, 1992, 2003},
273 {2014, 0, AArch64::AEK_F16F32MM, 2023, 2037, 2130, 2140},
274 {2150, 0, AArch64::AEK_F16MM, 2156, 2167, 2239, 2246},
275 {2253, 0, AArch64::AEK_F32MM, 2259, 2270, 2308, 2315},
276 {2322, 0, AArch64::AEK_F64MM, 2328, 2339, 2377, 2384},
277 {2391, 0, AArch64::AEK_F8F16MM, 2399, 2412, 2473, 2482},
278 {2491, 0, AArch64::AEK_F8F32MM, 2499, 2512, 2575, 2584},
279 {2593, 0, AArch64::AEK_FAMINMAX, 2602, 2616, 2652, 2662},
280 {0, 0, AArch64::AEK_FINEGRAINEDTRAPS, 2672, 2681, 2732, 2737},
281 {2742, 0, AArch64::AEK_FLAGM, 2748, 2759, 2807, 2814},
282 {2821, 0, AArch64::AEK_FP, 2824, 2832, 2875, 2885},
283 {2895, 0, AArch64::AEK_FP16FML, 2903, 2912, 2941, 2950},
284 {2959, 0, AArch64::AEK_FP8, 2963, 2972, 2996, 3001},
285 {3006, 0, AArch64::AEK_FP8DOT2, 3014, 3027, 3061, 3070},
286 {3079, 0, AArch64::AEK_FP8DOT4, 3087, 3100, 3134, 3143},
287 {3152, 0, AArch64::AEK_FP8FMA, 3159, 3171, 3218, 3226},
288 {0, 0, AArch64::AEK_FPAC, 3234, 3244, 3305, 3311},
289 {3317, 0, AArch64::AEK_FPRCVT, 3324, 3336, 3452, 3460},
290 {0, 0, AArch64::AEK_FRINT3264, 3468, 3481, 3626, 3635},
291 {3644, 0, AArch64::AEK_FP16, 3649, 3659, 3712, 3722},
292 {3732, 0, AArch64::AEK_GCIE, 3737, 3747, 3815, 3821},
293 {3827, 0, AArch64::AEK_GCS, 3831, 3840, 3886, 3891},
294 {3896, 0, AArch64::AEK_HBC, 3900, 3909, 3964, 3969},
295 {3974, 0, AArch64::AEK_HINTE, 3980, 3991, 4034, 4041},
296 {4048, 0, AArch64::AEK_I8MM, 4053, 4063, 4101, 4107},
297 {4113, 0, AArch64::AEK_ITE, 4117, 4126, 4169, 4174},
298 {4179, 0, AArch64::AEK_JSCVT, 4185, 4196, 4251, 4259},
299 {0, 0, AArch64::AEK_LOR, 4267, 4276, 4328, 4333},
300 {4338, 0, AArch64::AEK_LS64, 4343, 4385, 4436, 4442},
301 {4448, 0, AArch64::AEK_LSC64B, 4455, 4467, 4544, 4552},
302 {4560, 0, AArch64::AEK_LSCP, 4565, 4575, 4638, 4644},
303 {4650, 0, AArch64::AEK_LSE, 4654, 4663, 4729, 4734},
304 {4739, 0, AArch64::AEK_LSE128, 4746, 4758, 4803, 4811},
305 {0, 0, AArch64::AEK_LSE2, 4819, 4829, 4894, 4900},
306 {4906, 0, AArch64::AEK_LSFE, 4911, 4921, 4988, 4994},
307 {5000, 0, AArch64::AEK_LSUI, 5005, 5015, 5069, 5075},
308 {5081, 0, AArch64::AEK_LUT, 5085, 5094, 5127, 5132},
309 {0, 0, AArch64::AEK_MEC, 5137, 5146, 5190, 5195},
310 {5200, 0, AArch64::AEK_MOPS, 5205, 5215, 5276, 5282},
311 {5288, 0, AArch64::AEK_MOPS_GO, 5296, 5309, 5349, 5358},
312 {0, 0, AArch64::AEK_MPAM, 5367, 5377, 5446, 5452},
313 {5458, 0, AArch64::AEK_MTE, 5465, 5485, 5517, 5522},
314 {5527, 0, AArch64::AEK_MTETC, 5533, 5544, 5584, 5591},
315 {5598, 0, AArch64::AEK_SIMD, 5603, 5616, 5650, 5656},
316 {0, 0, AArch64::AEK_NMI, 5662, 5687, 5728, 5733},
317 {0, 0, AArch64::AEK_NV, 5738, 5756, 5808, 5812},
318 {5816, 0, AArch64::AEK_OCCMO, 5822, 5833, 5895, 5902},
319 {0, 0, AArch64::AEK_PAN, 5909, 5918, 5969, 5974},
320 {0, 0, AArch64::AEK_PAN_RWV, 5979, 5989, 6035, 6044},
321 {6053, 0, AArch64::AEK_PAUTH, 6059, 6070, 6120, 6127},
322 {6134, 0, AArch64::AEK_PAUTHLR, 6143, 6157, 6191, 6201},
323 {6211, 0, AArch64::AEK_PERFMON, 6217, 6228, 6282, 6291},
324 {6300, 0, AArch64::AEK_POE2, 6305, 6317, 6377, 6383},
325 {6389, 0, AArch64::AEK_POPS, 6394, 6404, 6470, 6476},
326 {6482, 0, AArch64::AEK_PREDRES, 6490, 6503, 6576, 6585},
327 {0, 0, AArch64::AEK_PRFM_SLC, 6594, 6607, 6646, 6663},
328 {6680, 0, AArch64::AEK_RAND, 6684, 6693, 6738, 6744},
329 {6750, 0, AArch64::AEK_RAS, 6754, 6777, 6850, 6855},
330 {6860, 0, AArch64::AEK_RASV2, 6866, 6877, 6950, 6957},
331 {6964, 0, AArch64::AEK_RCPC, 6969, 6980, 7014, 7020},
332 {0, 0, AArch64::AEK_RCPC_IMMO, 7026, 7038, 7096, 7107},
333 {7118, 0, AArch64::AEK_RCPC3, 7124, 7136, 7232, 7239},
334 {7246, 7250, AArch64::AEK_RDM, 7255, 7264, 7332, 7337},
335 {0, 0, AArch64::AEK_RME, 7342, 7351, 7385, 7390},
336 {7395, 0, AArch64::AEK_SB, 7398, 7406, 7443, 7447},
337 {0, 0, AArch64::AEK_SEL2, 7451, 7461, 7513, 7519},
338 {7525, 0, AArch64::AEK_SHA2, 7530, 7553, 7584, 7590},
339 {7596, 0, AArch64::AEK_SHA3, 7601, 7624, 7655, 7661},
340 {7667, 0, AArch64::AEK_SM4, 7671, 7690, 7717, 7722},
341 {7727, 0, AArch64::AEK_SME, 7731, 7740, 7779, 7784},
342 {7789, 0, AArch64::AEK_SMEB16B16, 7800, 7816, 7878, 7890},
343 {7902, 0, AArch64::AEK_SMEF16F16, 7913, 7929, 7974, 7986},
344 {7998, 0, AArch64::AEK_SMEF64F64, 8009, 8025, 8084, 8096},
345 {8108, 0, AArch64::AEK_SMEF8F16, 8118, 8133, 8191, 8202},
346 {8213, 0, AArch64::AEK_SMEF8F32, 8223, 8238, 8296, 8307},
347 {8318, 0, AArch64::AEK_SMEFA64, 8327, 8341, 8399, 8409},
348 {8419, 0, AArch64::AEK_SMEI16I64, 8430, 8446, 8505, 8517},
349 {8529, 0, AArch64::AEK_SME_LUTV2, 8539, 8554, 8612, 8623},
350 {8634, 0, AArch64::AEK_SME_MOP4, 8643, 8657, 8708, 8718},
351 {8728, 0, AArch64::AEK_SME_TMOP, 8737, 8751, 8810, 8820},
352 {8830, 0, AArch64::AEK_SME2, 8835, 8845, 8900, 8906},
353 {8912, 0, AArch64::AEK_SME2P1, 8919, 8931, 8981, 8989},
354 {8997, 0, AArch64::AEK_SME2P2, 9004, 9016, 9076, 9084},
355 {9092, 0, AArch64::AEK_SME2P3, 9099, 9111, 9171, 9179},
356 {9187, 0, AArch64::AEK_PROFILE, 9195, 9204, 9243, 9248},
357 {0, 0, AArch64::AEK_SPE_EEF, 9253, 9266, 9327, 9336},
358 {9345, 0, AArch64::AEK_SPECRES2, 9354, 9368, 9411, 9421},
359 {0, 0, AArch64::AEK_SPECRESTRICT, 9431, 9443, 9488, 9502},
360 {9516, 0, AArch64::AEK_SSBS, 9521, 9543, 9584, 9590},
361 {9596, 0, AArch64::AEK_SSVE_AES, 9605, 9619, 9674, 9684},
362 {9694, 0, AArch64::AEK_SSVE_BITPERM, 9707, 9725, 9784, 9798},
363 {9812, 0, AArch64::AEK_SSVE_FEXPA, 9823, 9839, 9890, 9902},
364 {9914, 0, AArch64::AEK_SSVE_FP8DOT2, 9927, 9945, 9992, 10006},
365 {10020, 0, AArch64::AEK_SSVE_FP8DOT4, 10033, 10051, 10098, 10112},
366 {10126, 0, AArch64::AEK_SSVE_FP8FMA, 10138, 10155, 10197, 10210},
367 {10223, 0, AArch64::AEK_SVE, 10227, 10236, 10288, 10293},
368 {10298, 0, AArch64::AEK_SVEAES, 10306, 10338, 10403, 10412},
369 {10421, 0, AArch64::AEK_SVE_AES2, 10430, 10444, 10541, 10551},
370 {10561, 0, AArch64::AEK_SVEB16B16, 10572, 10588, 10669, 10681},
371 {10693, 0, AArch64::AEK_SVE_B16MM, 10703, 10718, 10788, 10799},
372 {10810, 0, AArch64::AEK_SVE_BFSCALE, 10822, 10839, 10890, 10903},
373 {10916, 0, AArch64::AEK_SVEBITPERM, 10928, 10945, 10986, 10999},
374 {11012, 0, AArch64::AEK_SVE_F16F32MM, 11025, 11043, 11102, 11116},
375 {11130, 0, AArch64::AEK_SVESHA3, 11139, 11153, 11182, 11192},
376 {11202, 0, AArch64::AEK_SVESM4, 11210, 11223, 11251, 11260},
377 {11269, 0, AArch64::AEK_SVE2, 11274, 11284, 11339, 11345},
378 {11351, 0, AArch64::AEK_SVE2AES, 0, 11360, 11388, 11398},
379 {11408, 0, AArch64::AEK_SVE2BITPERM, 0, 11421, 11453, 11467},
380 {11481, 0, AArch64::AEK_SVE2SHA3, 0, 11491, 11520, 11531},
381 {11542, 0, AArch64::AEK_SVE2SM4, 0, 11551, 11579, 11589},
382 {11599, 0, AArch64::AEK_SVE2P1, 11606, 11618, 11668, 11676},
383 {11684, 0, AArch64::AEK_SVE2P2, 11691, 11703, 11763, 11771},
384 {11779, 0, AArch64::AEK_SVE2P3, 11786, 11798, 11858, 11866},
385 {11874, 0, AArch64::AEK_TEV, 11878, 11887, 11936, 11941},
386 {11946, 0, AArch64::AEK_THE, 11950, 11959, 12008, 12013},
387 {0, 0, AArch64::AEK_TLB_RMI, 12018, 12046, 12102, 12111},
388 {12120, 0, AArch64::AEK_TLBID, 12126, 12137, 12177, 12184},
389 {12191, 0, AArch64::AEK_TLBIW, 12197, 12208, 12252, 12259},
390 {0, 0, AArch64::AEK_TRACEV8_4, 12266, 12275, 12308, 12319},
391 {0, 0, AArch64::AEK_TRBE, 12330, 12340, 12370, 12376},
392 {0, 0, AArch64::AEK_PSUAO, 12382, 12391, 12419, 12426},
393 {0, 0, AArch64::AEK_VH, 12433, 12442, 12482, 12486},
394 {12490, 0, AArch64::AEK_WFXT, 12495, 12505, 12548, 12554},
395 {0, 0, AArch64::AEK_XS, 12560, 12568, 12621, 12625},
396};
397#undef EMIT_EXTENSIONS
398#endif // EMIT_EXTENSIONS
399
400#ifdef EMIT_FMV_INFO
401const std::vector<llvm::AArch64::FMVInfo>& llvm::AArch64::getFMVInfo() {
402 static std::vector<FMVInfo> I;
403 if(I.size()) return I;
404 I.reserve(53);
405 I.emplace_back("aes", FEAT_PMULL, PRIOR_PMULL, AEK_AES);
406 I.emplace_back("bf16", FEAT_BF16, PRIOR_BF16, AEK_BF16);
407 I.emplace_back("bti", FEAT_BTI, PRIOR_BTI, AEK_BTI);
408 I.emplace_back("crc", FEAT_CRC, PRIOR_CRC, AEK_CRC);
409 I.emplace_back("dit", FEAT_DIT, PRIOR_DIT, AEK_DIT);
410 I.emplace_back("dotprod", FEAT_DOTPROD, PRIOR_DOTPROD, AEK_DOTPROD);
411 I.emplace_back("dpb", FEAT_DPB, PRIOR_DPB, AEK_CCPP);
412 I.emplace_back("dpb2", FEAT_DPB2, PRIOR_DPB2, AEK_CCDP);
413 I.emplace_back("f32mm", FEAT_SVE_F32MM, PRIOR_SVE_F32MM, AEK_F32MM);
414 I.emplace_back("f64mm", FEAT_SVE_F64MM, PRIOR_SVE_F64MM, AEK_F64MM);
415 I.emplace_back("fcma", FEAT_FCMA, PRIOR_FCMA, AEK_FCMA);
416 I.emplace_back("flagm", FEAT_FLAGM, PRIOR_FLAGM, AEK_FLAGM);
417 I.emplace_back("flagm2", FEAT_FLAGM2, PRIOR_FLAGM2, AEK_ALTERNATIVENZCV);
418 I.emplace_back("fp", FEAT_FP, PRIOR_FP, AEK_FP);
419 I.emplace_back("fp16", FEAT_FP16, PRIOR_FP16, AEK_FP16);
420 I.emplace_back("fp16fml", FEAT_FP16FML, PRIOR_FP16FML, AEK_FP16FML);
421 I.emplace_back("frintts", FEAT_FRINTTS, PRIOR_FRINTTS, AEK_FRINT3264);
422 I.emplace_back("i8mm", FEAT_I8MM, PRIOR_I8MM, AEK_I8MM);
423 I.emplace_back("jscvt", FEAT_JSCVT, PRIOR_JSCVT, AEK_JSCVT);
424 I.emplace_back("lse", FEAT_LSE, PRIOR_LSE, AEK_LSE);
425 I.emplace_back("memtag", FEAT_MEMTAG2, PRIOR_MEMTAG2, AEK_MTE);
426 I.emplace_back("mops", FEAT_MOPS, PRIOR_MOPS, AEK_MOPS);
427 I.emplace_back("rcpc", FEAT_RCPC, PRIOR_RCPC, AEK_RCPC);
428 I.emplace_back("rcpc2", FEAT_RCPC2, PRIOR_RCPC2, AEK_RCPC_IMMO);
429 I.emplace_back("rcpc3", FEAT_RCPC3, PRIOR_RCPC3, AEK_RCPC3);
430 I.emplace_back("rdm", FEAT_RDM, PRIOR_RDM, AEK_RDM);
431 I.emplace_back("rng", FEAT_RNG, PRIOR_RNG, AEK_RAND);
432 I.emplace_back("sb", FEAT_SB, PRIOR_SB, AEK_SB);
433 I.emplace_back("sha2", FEAT_SHA2, PRIOR_SHA2, AEK_SHA2);
434 I.emplace_back("sha3", FEAT_SHA3, PRIOR_SHA3, AEK_SHA3);
435 I.emplace_back("simd", FEAT_SIMD, PRIOR_SIMD, AEK_SIMD);
436 I.emplace_back("sm4", FEAT_SM4, PRIOR_SM4, AEK_SM4);
437 I.emplace_back("sme", FEAT_SME, PRIOR_SME, AEK_SME);
438 I.emplace_back("sme-f64f64", FEAT_SME_F64, PRIOR_SME_F64, AEK_SMEF64F64);
439 I.emplace_back("sme-i16i64", FEAT_SME_I64, PRIOR_SME_I64, AEK_SMEI16I64);
440 I.emplace_back("sme2", FEAT_SME2, PRIOR_SME2, AEK_SME2);
441 I.emplace_back("ssbs", FEAT_SSBS2, PRIOR_SSBS2, AEK_SSBS);
442 I.emplace_back("sve", FEAT_SVE, PRIOR_SVE, AEK_SVE);
443 I.emplace_back("sve2", FEAT_SVE2, PRIOR_SVE2, AEK_SVE2);
444 I.emplace_back("sve2-aes", FEAT_SVE_PMULL128, PRIOR_SVE_PMULL128, AEK_SVE2AES);
445 I.emplace_back("sve2-bitperm", FEAT_SVE_BITPERM, PRIOR_SVE_BITPERM, AEK_SVE2BITPERM);
446 I.emplace_back("sve2-sha3", FEAT_SVE_SHA3, PRIOR_SVE_SHA3, AEK_SVE2SHA3);
447 I.emplace_back("sve2-sm4", FEAT_SVE_SM4, PRIOR_SVE_SM4, AEK_SVE2SM4);
448 I.emplace_back("wfxt", FEAT_WFXT, PRIOR_WFXT, AEK_WFXT);
449 I.emplace_back("cssc", FEAT_CSSC, PRIOR_CSSC, AEK_CSSC);
450 I.emplace_back("P0", std::nullopt, PRIOR_P0, std::nullopt);
451 I.emplace_back("P1", std::nullopt, PRIOR_P1, std::nullopt);
452 I.emplace_back("P2", std::nullopt, PRIOR_P2, std::nullopt);
453 I.emplace_back("P3", std::nullopt, PRIOR_P3, std::nullopt);
454 I.emplace_back("P4", std::nullopt, PRIOR_P4, std::nullopt);
455 I.emplace_back("P5", std::nullopt, PRIOR_P5, std::nullopt);
456 I.emplace_back("P6", std::nullopt, PRIOR_P6, std::nullopt);
457 I.emplace_back("P7", std::nullopt, PRIOR_P7, std::nullopt);
458 return I;
459}
460#undef EMIT_FMV_INFO
461#endif // EMIT_FMV_INFO
462
463#ifdef EMIT_EXTENSION_DEPENDENCIES
464inline constexpr ExtensionDependency ExtensionDependencies[] = {
465 {AEK_SIMD, AEK_AES},
466 {AEK_FLAGM, AEK_ALTERNATIVENZCV},
467 {AEK_AM, AEK_AMVS},
468 {AEK_SIMD, AEK_BF16},
469 {AEK_CCPP, AEK_CCDP},
470 {AEK_SIMD, AEK_FCMA},
471 {AEK_AES, AEK_CRYPTO},
472 {AEK_SIMD, AEK_CRYPTO},
473 {AEK_SHA2, AEK_CRYPTO},
474 {AEK_LSE128, AEK_D128},
475 {AEK_SIMD, AEK_DOTPROD},
476 {AEK_TRBE, AEK_ETE},
477 {AEK_FP16, AEK_F16F32DOT},
478 {AEK_SIMD, AEK_F16F32DOT},
479 {AEK_FP16, AEK_F16F32MM},
480 {AEK_SIMD, AEK_F16F32MM},
481 {AEK_FP16, AEK_F16MM},
482 {AEK_SIMD, AEK_F16MM},
483 {AEK_SVE, AEK_F32MM},
484 {AEK_SVE, AEK_F64MM},
485 {AEK_FP8, AEK_F8F16MM},
486 {AEK_SIMD, AEK_F8F16MM},
487 {AEK_FP8, AEK_F8F32MM},
488 {AEK_SIMD, AEK_F8F32MM},
489 {AEK_SIMD, AEK_FAMINMAX},
490 {AEK_FP16, AEK_FP16FML},
491 {AEK_SIMD, AEK_FP16FML},
492 {AEK_SIMD, AEK_FP8},
493 {AEK_FP8, AEK_FP8DOT2},
494 {AEK_FP8, AEK_FP8DOT4},
495 {AEK_FP8, AEK_FP8FMA},
496 {AEK_FP, AEK_FPRCVT},
497 {AEK_FP, AEK_FRINT3264},
498 {AEK_FP, AEK_FP16},
499 {AEK_CHK, AEK_GCS},
500 {AEK_SIMD, AEK_I8MM},
501 {AEK_ETE, AEK_ITE},
502 {AEK_TRBE, AEK_ITE},
503 {AEK_FP, AEK_JSCVT},
504 {AEK_LSCP, AEK_LSC64B},
505 {AEK_LSE, AEK_LSE128},
506 {AEK_FP, AEK_LSFE},
507 {AEK_SIMD, AEK_LUT},
508 {AEK_RME, AEK_MEC},
509 {AEK_MOPS, AEK_MOPS_GO},
510 {AEK_MTE, AEK_MOPS_GO},
511 {AEK_MTE, AEK_MTETC},
512 {AEK_FP, AEK_SIMD},
513 {AEK_PAN, AEK_PAN_RWV},
514 {AEK_RAS, AEK_RASV2},
515 {AEK_RCPC, AEK_RCPC_IMMO},
516 {AEK_RCPC_IMMO, AEK_RCPC3},
517 {AEK_SIMD, AEK_RDM},
518 {AEK_SIMD, AEK_SHA2},
519 {AEK_SIMD, AEK_SHA3},
520 {AEK_SHA2, AEK_SHA3},
521 {AEK_SIMD, AEK_SM4},
522 {AEK_BF16, AEK_SME},
523 {AEK_FP16, AEK_SME},
524 {AEK_SME2, AEK_SMEB16B16},
525 {AEK_SVEB16B16, AEK_SMEB16B16},
526 {AEK_SME2, AEK_SMEF16F16},
527 {AEK_SME, AEK_SMEF64F64},
528 {AEK_FP8, AEK_SMEF8F16},
529 {AEK_SME2, AEK_SMEF8F16},
530 {AEK_FP8, AEK_SMEF8F32},
531 {AEK_SME2, AEK_SMEF8F32},
532 {AEK_SME, AEK_SMEFA64},
533 {AEK_SVE2, AEK_SMEFA64},
534 {AEK_SME, AEK_SMEI16I64},
535 {AEK_SME2, AEK_SME_LUTV2},
536 {AEK_SME2, AEK_SME_MOP4},
537 {AEK_SME2, AEK_SME_TMOP},
538 {AEK_SME, AEK_SME2},
539 {AEK_SME2, AEK_SME2P1},
540 {AEK_SME2P1, AEK_SME2P2},
541 {AEK_SME2P2, AEK_SME2P3},
542 {AEK_PREDRES, AEK_SPECRES2},
543 {AEK_SME2, AEK_SSVE_AES},
544 {AEK_SVEAES, AEK_SSVE_AES},
545 {AEK_SME2, AEK_SSVE_BITPERM},
546 {AEK_SVEBITPERM, AEK_SSVE_BITPERM},
547 {AEK_SME2, AEK_SSVE_FEXPA},
548 {AEK_FP8, AEK_SSVE_FP8DOT2},
549 {AEK_SME2, AEK_SSVE_FP8DOT2},
550 {AEK_FP8, AEK_SSVE_FP8DOT4},
551 {AEK_SME2, AEK_SSVE_FP8DOT4},
552 {AEK_FP8, AEK_SSVE_FP8FMA},
553 {AEK_SME2, AEK_SSVE_FP8FMA},
554 {AEK_FP16, AEK_SVE},
555 {AEK_AES, AEK_SVEAES},
556 {AEK_SVE, AEK_SVE_B16MM},
557 {AEK_SVE, AEK_SVE_F16F32MM},
558 {AEK_SHA3, AEK_SVESHA3},
559 {AEK_SM4, AEK_SVESM4},
560 {AEK_SVE, AEK_SVE2},
561 {AEK_SVEAES, AEK_SVE2AES},
562 {AEK_SVE2, AEK_SVE2AES},
563 {AEK_SVEBITPERM, AEK_SVE2BITPERM},
564 {AEK_SVE2, AEK_SVE2BITPERM},
565 {AEK_SVESHA3, AEK_SVE2SHA3},
566 {AEK_SVE2, AEK_SVE2SHA3},
567 {AEK_SVESM4, AEK_SVE2SM4},
568 {AEK_SVE2, AEK_SVE2SM4},
569 {AEK_SVE2, AEK_SVE2P1},
570 {AEK_SVE2P1, AEK_SVE2P2},
571 {AEK_SVE2P2, AEK_SVE2P3},
572 {AEK_RCPC, AEK_RCPC3},
573};
574#undef EMIT_EXTENSION_DEPENDENCIES
575#endif // EMIT_EXTENSION_DEPENDENCIES
576
577#ifdef EMIT_ARCHITECTURES
578
579/// The set of all architectures
580inline constexpr std::array<ArchInfo, 20> ArchInfos = {{
581 {
582 VersionTuple{8, 0},
583 AProfile,
584 12629,
585 12637,
586 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, }))
587 },
588 {
589 VersionTuple{8, 0},
590 RProfile,
591 12642,
592 12650,
593 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_SSBS, AArch64::AEK_SB, AArch64::AEK_SSBS, AArch64::AEK_FP16, AArch64::AEK_FP16FML, AArch64::AEK_SB, }))
594 },
595 {
596 VersionTuple{8, 1},
597 AProfile,
598 12655,
599 12665,
600 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, }))
601 },
602 {
603 VersionTuple{8, 2},
604 AProfile,
605 12672,
606 12682,
607 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, }))
608 },
609 {
610 VersionTuple{8, 3},
611 AProfile,
612 12689,
613 12699,
614 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, }))
615 },
616 {
617 VersionTuple{8, 4},
618 AProfile,
619 12706,
620 12716,
621 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, }))
622 },
623 {
624 VersionTuple{8, 5},
625 AProfile,
626 12723,
627 12733,
628 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, }))
629 },
630 {
631 VersionTuple{8, 6},
632 AProfile,
633 12740,
634 12750,
635 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, }))
636 },
637 {
638 VersionTuple{8, 7},
639 AProfile,
640 12757,
641 12767,
642 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, }))
643 },
644 {
645 VersionTuple{8, 8},
646 AProfile,
647 12774,
648 12784,
649 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, }))
650 },
651 {
652 VersionTuple{8, 9},
653 AProfile,
654 12791,
655 12801,
656 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2, }))
657 },
658 {
659 VersionTuple{9, 0},
660 AProfile,
661 12808,
662 12816,
663 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, }))
664 },
665 {
666 VersionTuple{9, 1},
667 AProfile,
668 12821,
669 12831,
670 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, }))
671 },
672 {
673 VersionTuple{9, 2},
674 AProfile,
675 12838,
676 12848,
677 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, }))
678 },
679 {
680 VersionTuple{9, 3},
681 AProfile,
682 12855,
683 12865,
684 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, }))
685 },
686 {
687 VersionTuple{9, 4},
688 AProfile,
689 12872,
690 12882,
691 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2, AArch64::AEK_SVE2P1, }))
692 },
693 {
694 VersionTuple{9, 5},
695 AProfile,
696 12889,
697 12899,
698 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2, AArch64::AEK_SVE2P1, AArch64::AEK_CPA, AArch64::AEK_LUT, AArch64::AEK_FAMINMAX, }))
699 },
700 {
701 VersionTuple{9, 6},
702 AProfile,
703 12906,
704 12916,
705 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2, AArch64::AEK_SVE2P1, AArch64::AEK_CPA, AArch64::AEK_LUT, AArch64::AEK_FAMINMAX, AArch64::AEK_CMPBR, AArch64::AEK_LSUI, AArch64::AEK_OCCMO, AArch64::AEK_HINTE, }))
706 },
707 {
708 VersionTuple{9, 7},
709 AProfile,
710 12923,
711 12933,
712 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2, AArch64::AEK_SVE2P1, AArch64::AEK_CPA, AArch64::AEK_LUT, AArch64::AEK_FAMINMAX, AArch64::AEK_CMPBR, AArch64::AEK_LSUI, AArch64::AEK_OCCMO, AArch64::AEK_HINTE, AArch64::AEK_SVE2P3, AArch64::AEK_FPRCVT, AArch64::AEK_F16F32DOT, }))
713 },
714 {
715 VersionTuple{9, 8},
716 AProfile,
717 12940,
718 12950,
719 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_FP16, AArch64::AEK_SVE, AArch64::AEK_SVE2, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_RME, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MEC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, AArch64::AEK_FCMA, AArch64::AEK_JSCVT, AArch64::AEK_PAUTH, AArch64::AEK_RCPC, AArch64::AEK_CCIDX, AArch64::AEK_DOTPROD, AArch64::AEK_DIT, AArch64::AEK_FLAGM, AArch64::AEK_PREDRES, AArch64::AEK_SSBS, AArch64::AEK_BTI, AArch64::AEK_SB, AArch64::AEK_BF16, AArch64::AEK_I8MM, AArch64::AEK_WFXT, AArch64::AEK_SPE_EEF, AArch64::AEK_MOPS, AArch64::AEK_HBC, AArch64::AEK_SPECRES2, AArch64::AEK_CSSC, AArch64::AEK_RASV2, AArch64::AEK_SVE2P1, AArch64::AEK_CPA, AArch64::AEK_LUT, AArch64::AEK_FAMINMAX, AArch64::AEK_CMPBR, AArch64::AEK_LSUI, AArch64::AEK_OCCMO, AArch64::AEK_HINTE, AArch64::AEK_SVE2P3, AArch64::AEK_FPRCVT, AArch64::AEK_F16F32DOT, }))
720 },
721}};
722static constexpr const ArchInfo &ARMV8A = ArchInfos[0];
723static constexpr const ArchInfo &ARMV8R = ArchInfos[1];
724static constexpr const ArchInfo &ARMV8_1A = ArchInfos[2];
725static constexpr const ArchInfo &ARMV8_2A = ArchInfos[3];
726static constexpr const ArchInfo &ARMV8_3A = ArchInfos[4];
727static constexpr const ArchInfo &ARMV8_4A = ArchInfos[5];
728static constexpr const ArchInfo &ARMV8_5A = ArchInfos[6];
729static constexpr const ArchInfo &ARMV8_6A = ArchInfos[7];
730static constexpr const ArchInfo &ARMV8_7A = ArchInfos[8];
731static constexpr const ArchInfo &ARMV8_8A = ArchInfos[9];
732static constexpr const ArchInfo &ARMV8_9A = ArchInfos[10];
733static constexpr const ArchInfo &ARMV9A = ArchInfos[11];
734static constexpr const ArchInfo &ARMV9_1A = ArchInfos[12];
735static constexpr const ArchInfo &ARMV9_2A = ArchInfos[13];
736static constexpr const ArchInfo &ARMV9_3A = ArchInfos[14];
737static constexpr const ArchInfo &ARMV9_4A = ArchInfos[15];
738static constexpr const ArchInfo &ARMV9_5A = ArchInfos[16];
739static constexpr const ArchInfo &ARMV9_6A = ArchInfos[17];
740static constexpr const ArchInfo &ARMV9_7A = ArchInfos[18];
741static constexpr const ArchInfo &ARMV9_8A = ArchInfos[19];
742#undef EMIT_ARCHITECTURES
743#endif // EMIT_ARCHITECTURES
744
745#ifdef EMIT_CPU_ALIAS
746inline constexpr Alias CpuAliases[] = {
747 {12957, 12964},
748 {12971, 12982},
749 {12994, 13004},
750 {13018, 13026},
751 {13035, 13026},
752 {13044, 13026},
753 {13053, 13062},
754 {13072, 13062},
755 {13081, 13090},
756 {13100, 13090},
757 {13109, 13090},
758 {13118, 13127},
759 {13137, 13146},
760 {13156, 13165},
761 {13175, 13165},
762 {13184, 13165},
763 {13194, 13204},
764 {13213, 13223},
765 {13232, 13223},
766};
767#undef EMIT_CPU_ALIAS
768#endif // EMIT_CPU_ALIAS
769
770#ifdef EMIT_CPU_INFO
771inline constexpr CpuInfo CpuInfos[] = {
772 {
773 13245,
774 0 /* ARMV8A */,
775 AArch64::ExtensionBitset({
776 AArch64::AEK_FP,
777 AArch64::AEK_SIMD,
778 AArch64::AEK_ETE,
779 })
780 },
781 {
782 13253,
783 0 /* ARMV8A */,
784 AArch64::ExtensionBitset({
785 AArch64::AEK_CRC,
786 AArch64::AEK_SHA2,
787 AArch64::AEK_AES,
788 AArch64::AEK_FP,
789 AArch64::AEK_SIMD,
790 AArch64::AEK_PERFMON,
791 })
792 },
793 {
794 13264,
795 0 /* ARMV8A */,
796 AArch64::ExtensionBitset({
797 AArch64::AEK_CRC,
798 AArch64::AEK_SHA2,
799 AArch64::AEK_AES,
800 AArch64::AEK_FP,
801 AArch64::AEK_SIMD,
802 AArch64::AEK_PERFMON,
803 })
804 },
805 {
806 13275,
807 13 /* ARMV9_2A */,
808 AArch64::ExtensionBitset({
809 AArch64::AEK_SIMD,
810 AArch64::AEK_MTE,
811 AArch64::AEK_SVEBITPERM,
812 AArch64::AEK_FP16FML,
813 AArch64::AEK_FP16,
814 AArch64::AEK_ETE,
815 AArch64::AEK_PERFMON,
816 AArch64::AEK_CCIDX,
817 AArch64::AEK_CCPP,
818 AArch64::AEK_FCMA,
819 AArch64::AEK_CRC,
820 AArch64::AEK_DOTPROD,
821 AArch64::AEK_JSCVT,
822 AArch64::AEK_LOR,
823 AArch64::AEK_LSE,
824 AArch64::AEK_PAN,
825 AArch64::AEK_PAN_RWV,
826 AArch64::AEK_PAUTH,
827 AArch64::AEK_PSUAO,
828 AArch64::AEK_RAS,
829 AArch64::AEK_RDM,
830 AArch64::AEK_TRBE,
831 AArch64::AEK_VH,
832 AArch64::AEK_FLAGM,
833 AArch64::AEK_PREDRES,
834 AArch64::AEK_SB,
835 AArch64::AEK_SSBS,
836 AArch64::AEK_SVE,
837 AArch64::AEK_SVE2,
838 })
839 },
840 {
841 13287,
842 0 /* ARMV8A */,
843 AArch64::ExtensionBitset({
844 AArch64::AEK_CRC,
845 AArch64::AEK_SHA2,
846 AArch64::AEK_AES,
847 AArch64::AEK_FP,
848 AArch64::AEK_SIMD,
849 AArch64::AEK_PERFMON,
850 })
851 },
852 {
853 13298,
854 3 /* ARMV8_2A */,
855 AArch64::ExtensionBitset({
856 AArch64::AEK_SHA2,
857 AArch64::AEK_AES,
858 AArch64::AEK_FP,
859 AArch64::AEK_SIMD,
860 AArch64::AEK_FP16,
861 AArch64::AEK_DOTPROD,
862 AArch64::AEK_RCPC,
863 AArch64::AEK_PERFMON,
864 AArch64::AEK_CRC,
865 AArch64::AEK_LSE,
866 AArch64::AEK_RAS,
867 AArch64::AEK_RDM,
868 })
869 },
870 {
871 13309,
872 11 /* ARMV9A */,
873 AArch64::ExtensionBitset({
874 AArch64::AEK_SIMD,
875 AArch64::AEK_PERFMON,
876 AArch64::AEK_I8MM,
877 AArch64::AEK_BF16,
878 AArch64::AEK_AM,
879 AArch64::AEK_MTE,
880 AArch64::AEK_ETE,
881 AArch64::AEK_SVEBITPERM,
882 AArch64::AEK_FP16FML,
883 AArch64::AEK_CCIDX,
884 AArch64::AEK_SB,
885 AArch64::AEK_PAUTH,
886 AArch64::AEK_SSBS,
887 AArch64::AEK_SVE,
888 AArch64::AEK_SVE2,
889 AArch64::AEK_FCMA,
890 AArch64::AEK_CRC,
891 AArch64::AEK_DOTPROD,
892 AArch64::AEK_FP,
893 AArch64::AEK_FP16,
894 AArch64::AEK_JSCVT,
895 AArch64::AEK_LSE,
896 AArch64::AEK_RAS,
897 AArch64::AEK_RCPC,
898 AArch64::AEK_RDM,
899 AArch64::AEK_FPAC,
900 })
901 },
902 {
903 13321,
904 13 /* ARMV9_2A */,
905 AArch64::ExtensionBitset({
906 AArch64::AEK_PERFMON,
907 AArch64::AEK_AM,
908 AArch64::AEK_MTE,
909 AArch64::AEK_ETE,
910 AArch64::AEK_SVEBITPERM,
911 AArch64::AEK_FP16FML,
912 AArch64::AEK_CCIDX,
913 AArch64::AEK_SB,
914 AArch64::AEK_SSBS,
915 AArch64::AEK_PAUTH,
916 AArch64::AEK_FLAGM,
917 AArch64::AEK_PREDRES,
918 AArch64::AEK_SVE,
919 AArch64::AEK_SVE2,
920 AArch64::AEK_BF16,
921 AArch64::AEK_FCMA,
922 AArch64::AEK_CRC,
923 AArch64::AEK_FP,
924 AArch64::AEK_FP16,
925 AArch64::AEK_I8MM,
926 AArch64::AEK_JSCVT,
927 AArch64::AEK_SIMD,
928 AArch64::AEK_LSE,
929 AArch64::AEK_RAS,
930 AArch64::AEK_RCPC,
931 AArch64::AEK_RDM,
932 AArch64::AEK_DOTPROD,
933 AArch64::AEK_FPAC,
934 })
935 },
936 {
937 13333,
938 13 /* ARMV9_2A */,
939 AArch64::ExtensionBitset({
940 AArch64::AEK_PERFMON,
941 AArch64::AEK_AM,
942 AArch64::AEK_MTE,
943 AArch64::AEK_ETE,
944 AArch64::AEK_SVEBITPERM,
945 AArch64::AEK_FP16FML,
946 AArch64::AEK_CCIDX,
947 AArch64::AEK_SB,
948 AArch64::AEK_SSBS,
949 AArch64::AEK_PAUTH,
950 AArch64::AEK_FLAGM,
951 AArch64::AEK_PREDRES,
952 AArch64::AEK_SVE,
953 AArch64::AEK_SVE2,
954 AArch64::AEK_BF16,
955 AArch64::AEK_FCMA,
956 AArch64::AEK_CRC,
957 AArch64::AEK_FP,
958 AArch64::AEK_FP16,
959 AArch64::AEK_I8MM,
960 AArch64::AEK_JSCVT,
961 AArch64::AEK_SIMD,
962 AArch64::AEK_LSE,
963 AArch64::AEK_RAS,
964 AArch64::AEK_RCPC,
965 AArch64::AEK_RDM,
966 AArch64::AEK_DOTPROD,
967 AArch64::AEK_FPAC,
968 })
969 },
970 {
971 13347,
972 14 /* ARMV9_3A */,
973 AArch64::ExtensionBitset({
974 AArch64::AEK_SIMD,
975 AArch64::AEK_CLRBHB,
976 AArch64::AEK_CHK,
977 AArch64::AEK_FP,
978 AArch64::AEK_PERFMON,
979 AArch64::AEK_SPECRES2,
980 AArch64::AEK_SSBS,
981 AArch64::AEK_RDM,
982 AArch64::AEK_VH,
983 AArch64::AEK_BF16,
984 AArch64::AEK_DOTPROD,
985 AArch64::AEK_FP16FML,
986 AArch64::AEK_FP16,
987 AArch64::AEK_MPAM,
988 AArch64::AEK_SVE,
989 AArch64::AEK_CCIDX,
990 AArch64::AEK_FCMA,
991 AArch64::AEK_FPAC,
992 AArch64::AEK_JSCVT,
993 AArch64::AEK_AM,
994 AArch64::AEK_RAS,
995 AArch64::AEK_SEL2,
996 AArch64::AEK_TRACEV8_4,
997 AArch64::AEK_ALTERNATIVENZCV,
998 AArch64::AEK_FRINT3264,
999 AArch64::AEK_MTE,
1000 AArch64::AEK_FINEGRAINEDTRAPS,
1001 AArch64::AEK_RCPC3,
1002 AArch64::AEK_ETE,
1003 AArch64::AEK_SVEBITPERM,
1004 AArch64::AEK_SVE2,
1005 AArch64::AEK_TRBE,
1006 AArch64::AEK_SME,
1007 AArch64::AEK_SME2,
1008 })
1009 },
1010 {
1011 13355,
1012 0 /* ARMV8A */,
1013 AArch64::ExtensionBitset({
1014 AArch64::AEK_CRC,
1015 AArch64::AEK_SHA2,
1016 AArch64::AEK_AES,
1017 AArch64::AEK_FP,
1018 AArch64::AEK_SIMD,
1019 AArch64::AEK_PERFMON,
1020 })
1021 },
1022 {
1023 13366,
1024 3 /* ARMV8_2A */,
1025 AArch64::ExtensionBitset({
1026 AArch64::AEK_SHA2,
1027 AArch64::AEK_AES,
1028 AArch64::AEK_FP,
1029 AArch64::AEK_SIMD,
1030 AArch64::AEK_FP16,
1031 AArch64::AEK_DOTPROD,
1032 AArch64::AEK_RCPC,
1033 AArch64::AEK_SSBS,
1034 AArch64::AEK_RAS,
1035 AArch64::AEK_PERFMON,
1036 AArch64::AEK_CRC,
1037 AArch64::AEK_LSE,
1038 AArch64::AEK_RDM,
1039 })
1040 },
1041 {
1042 13377,
1043 3 /* ARMV8_2A */,
1044 AArch64::ExtensionBitset({
1045 AArch64::AEK_SHA2,
1046 AArch64::AEK_AES,
1047 AArch64::AEK_FP,
1048 AArch64::AEK_SIMD,
1049 AArch64::AEK_FP16,
1050 AArch64::AEK_DOTPROD,
1051 AArch64::AEK_RCPC,
1052 AArch64::AEK_SSBS,
1053 AArch64::AEK_RAS,
1054 AArch64::AEK_PERFMON,
1055 AArch64::AEK_CRC,
1056 AArch64::AEK_LSE,
1057 AArch64::AEK_RDM,
1058 })
1059 },
1060 {
1061 13390,
1062 0 /* ARMV8A */,
1063 AArch64::ExtensionBitset({
1064 AArch64::AEK_CRC,
1065 AArch64::AEK_SHA2,
1066 AArch64::AEK_AES,
1067 AArch64::AEK_FP,
1068 AArch64::AEK_SIMD,
1069 AArch64::AEK_PERFMON,
1070 })
1071 },
1072 {
1073 13401,
1074 0 /* ARMV8A */,
1075 AArch64::ExtensionBitset({
1076 AArch64::AEK_CRC,
1077 AArch64::AEK_SHA2,
1078 AArch64::AEK_AES,
1079 AArch64::AEK_FP,
1080 AArch64::AEK_SIMD,
1081 AArch64::AEK_PERFMON,
1082 })
1083 },
1084 {
1085 13412,
1086 3 /* ARMV8_2A */,
1087 AArch64::ExtensionBitset({
1088 AArch64::AEK_SHA2,
1089 AArch64::AEK_AES,
1090 AArch64::AEK_FP,
1091 AArch64::AEK_SIMD,
1092 AArch64::AEK_FP16,
1093 AArch64::AEK_DOTPROD,
1094 AArch64::AEK_RCPC,
1095 AArch64::AEK_PERFMON,
1096 AArch64::AEK_CRC,
1097 AArch64::AEK_LSE,
1098 AArch64::AEK_RAS,
1099 AArch64::AEK_RDM,
1100 })
1101 },
1102 {
1103 13423,
1104 3 /* ARMV8_2A */,
1105 AArch64::ExtensionBitset({
1106 AArch64::AEK_SHA2,
1107 AArch64::AEK_AES,
1108 AArch64::AEK_FP,
1109 AArch64::AEK_SIMD,
1110 AArch64::AEK_FP16,
1111 AArch64::AEK_DOTPROD,
1112 AArch64::AEK_RCPC,
1113 AArch64::AEK_SSBS,
1114 AArch64::AEK_PERFMON,
1115 AArch64::AEK_CRC,
1116 AArch64::AEK_LSE,
1117 AArch64::AEK_RAS,
1118 AArch64::AEK_RDM,
1119 })
1120 },
1121 {
1122 13434,
1123 3 /* ARMV8_2A */,
1124 AArch64::ExtensionBitset({
1125 AArch64::AEK_SHA2,
1126 AArch64::AEK_AES,
1127 AArch64::AEK_FP,
1128 AArch64::AEK_SIMD,
1129 AArch64::AEK_FP16,
1130 AArch64::AEK_DOTPROD,
1131 AArch64::AEK_RCPC,
1132 AArch64::AEK_SSBS,
1133 AArch64::AEK_PERFMON,
1134 AArch64::AEK_CRC,
1135 AArch64::AEK_LSE,
1136 AArch64::AEK_RAS,
1137 AArch64::AEK_RDM,
1138 })
1139 },
1140 {
1141 13447,
1142 3 /* ARMV8_2A */,
1143 AArch64::ExtensionBitset({
1144 AArch64::AEK_SHA2,
1145 AArch64::AEK_AES,
1146 AArch64::AEK_FP,
1147 AArch64::AEK_SIMD,
1148 AArch64::AEK_FP16,
1149 AArch64::AEK_DOTPROD,
1150 AArch64::AEK_RCPC,
1151 AArch64::AEK_PERFMON,
1152 AArch64::AEK_SSBS,
1153 AArch64::AEK_CRC,
1154 AArch64::AEK_LSE,
1155 AArch64::AEK_RAS,
1156 AArch64::AEK_RDM,
1157 })
1158 },
1159 {
1160 13458,
1161 3 /* ARMV8_2A */,
1162 AArch64::ExtensionBitset({
1163 AArch64::AEK_SHA2,
1164 AArch64::AEK_AES,
1165 AArch64::AEK_FP,
1166 AArch64::AEK_SIMD,
1167 AArch64::AEK_FP16,
1168 AArch64::AEK_DOTPROD,
1169 AArch64::AEK_RCPC,
1170 AArch64::AEK_PERFMON,
1171 AArch64::AEK_PROFILE,
1172 AArch64::AEK_SSBS,
1173 AArch64::AEK_CRC,
1174 AArch64::AEK_LSE,
1175 AArch64::AEK_RAS,
1176 AArch64::AEK_RDM,
1177 })
1178 },
1179 {
1180 13469,
1181 3 /* ARMV8_2A */,
1182 AArch64::ExtensionBitset({
1183 AArch64::AEK_SHA2,
1184 AArch64::AEK_AES,
1185 AArch64::AEK_FP,
1186 AArch64::AEK_SIMD,
1187 AArch64::AEK_FP16,
1188 AArch64::AEK_DOTPROD,
1189 AArch64::AEK_RCPC,
1190 AArch64::AEK_PERFMON,
1191 AArch64::AEK_PROFILE,
1192 AArch64::AEK_SSBS,
1193 AArch64::AEK_CRC,
1194 AArch64::AEK_LSE,
1195 AArch64::AEK_RAS,
1196 AArch64::AEK_RDM,
1197 })
1198 },
1199 {
1200 13482,
1201 3 /* ARMV8_2A */,
1202 AArch64::ExtensionBitset({
1203 AArch64::AEK_SHA2,
1204 AArch64::AEK_AES,
1205 AArch64::AEK_FP,
1206 AArch64::AEK_SIMD,
1207 AArch64::AEK_FP16,
1208 AArch64::AEK_DOTPROD,
1209 AArch64::AEK_FLAGM,
1210 AArch64::AEK_PAUTH,
1211 AArch64::AEK_PERFMON,
1212 AArch64::AEK_RCPC,
1213 AArch64::AEK_PROFILE,
1214 AArch64::AEK_SSBS,
1215 AArch64::AEK_CRC,
1216 AArch64::AEK_LSE,
1217 AArch64::AEK_RAS,
1218 AArch64::AEK_RDM,
1219 })
1220 },
1221 {
1222 13494,
1223 11 /* ARMV9A */,
1224 AArch64::ExtensionBitset({
1225 AArch64::AEK_SIMD,
1226 AArch64::AEK_PERFMON,
1227 AArch64::AEK_CCIDX,
1228 AArch64::AEK_SSBS,
1229 AArch64::AEK_ETE,
1230 AArch64::AEK_MTE,
1231 AArch64::AEK_FP16FML,
1232 AArch64::AEK_SVEBITPERM,
1233 AArch64::AEK_BF16,
1234 AArch64::AEK_I8MM,
1235 AArch64::AEK_PAUTH,
1236 AArch64::AEK_FLAGM,
1237 AArch64::AEK_SB,
1238 AArch64::AEK_SVE,
1239 AArch64::AEK_SVE2,
1240 AArch64::AEK_FPAC,
1241 AArch64::AEK_FCMA,
1242 AArch64::AEK_CRC,
1243 AArch64::AEK_DOTPROD,
1244 AArch64::AEK_FP,
1245 AArch64::AEK_FP16,
1246 AArch64::AEK_JSCVT,
1247 AArch64::AEK_LSE,
1248 AArch64::AEK_RAS,
1249 AArch64::AEK_RCPC,
1250 AArch64::AEK_RDM,
1251 })
1252 },
1253 {
1254 13506,
1255 11 /* ARMV9A */,
1256 AArch64::ExtensionBitset({
1257 AArch64::AEK_SIMD,
1258 AArch64::AEK_MTE,
1259 AArch64::AEK_CCIDX,
1260 AArch64::AEK_FP16FML,
1261 AArch64::AEK_SVE,
1262 AArch64::AEK_TRBE,
1263 AArch64::AEK_SVEBITPERM,
1264 AArch64::AEK_BF16,
1265 AArch64::AEK_ETE,
1266 AArch64::AEK_PERFMON,
1267 AArch64::AEK_I8MM,
1268 AArch64::AEK_PROFILE,
1269 AArch64::AEK_SB,
1270 AArch64::AEK_SSBS,
1271 AArch64::AEK_FP16,
1272 AArch64::AEK_PAUTH,
1273 AArch64::AEK_PREDRES,
1274 AArch64::AEK_FLAGM,
1275 AArch64::AEK_SVE2,
1276 AArch64::AEK_FCMA,
1277 AArch64::AEK_CRC,
1278 AArch64::AEK_DOTPROD,
1279 AArch64::AEK_FP,
1280 AArch64::AEK_JSCVT,
1281 AArch64::AEK_LSE,
1282 AArch64::AEK_RAS,
1283 AArch64::AEK_RCPC,
1284 AArch64::AEK_RDM,
1285 AArch64::AEK_FPAC,
1286 })
1287 },
1288 {
1289 13518,
1290 13 /* ARMV9_2A */,
1291 AArch64::ExtensionBitset({
1292 AArch64::AEK_MTE,
1293 AArch64::AEK_FP16FML,
1294 AArch64::AEK_CCIDX,
1295 AArch64::AEK_TRBE,
1296 AArch64::AEK_SVEBITPERM,
1297 AArch64::AEK_ETE,
1298 AArch64::AEK_PERFMON,
1299 AArch64::AEK_PROFILE,
1300 AArch64::AEK_SPE_EEF,
1301 AArch64::AEK_SB,
1302 AArch64::AEK_SSBS,
1303 AArch64::AEK_PAUTH,
1304 AArch64::AEK_FLAGM,
1305 AArch64::AEK_PREDRES,
1306 AArch64::AEK_SVE,
1307 AArch64::AEK_SVE2,
1308 AArch64::AEK_BF16,
1309 AArch64::AEK_FCMA,
1310 AArch64::AEK_CRC,
1311 AArch64::AEK_DOTPROD,
1312 AArch64::AEK_FP,
1313 AArch64::AEK_FP16,
1314 AArch64::AEK_I8MM,
1315 AArch64::AEK_JSCVT,
1316 AArch64::AEK_LSE,
1317 AArch64::AEK_SIMD,
1318 AArch64::AEK_RAS,
1319 AArch64::AEK_RCPC,
1320 AArch64::AEK_RDM,
1321 AArch64::AEK_FPAC,
1322 })
1323 },
1324 {
1325 13530,
1326 13 /* ARMV9_2A */,
1327 AArch64::ExtensionBitset({
1328 AArch64::AEK_MTE,
1329 AArch64::AEK_FP16FML,
1330 AArch64::AEK_CCIDX,
1331 AArch64::AEK_TRBE,
1332 AArch64::AEK_SVEBITPERM,
1333 AArch64::AEK_ETE,
1334 AArch64::AEK_PERFMON,
1335 AArch64::AEK_PROFILE,
1336 AArch64::AEK_SPE_EEF,
1337 AArch64::AEK_SB,
1338 AArch64::AEK_SSBS,
1339 AArch64::AEK_PAUTH,
1340 AArch64::AEK_FLAGM,
1341 AArch64::AEK_PREDRES,
1342 AArch64::AEK_SVE,
1343 AArch64::AEK_SVE2,
1344 AArch64::AEK_BF16,
1345 AArch64::AEK_FCMA,
1346 AArch64::AEK_CRC,
1347 AArch64::AEK_DOTPROD,
1348 AArch64::AEK_FP,
1349 AArch64::AEK_FP16,
1350 AArch64::AEK_I8MM,
1351 AArch64::AEK_JSCVT,
1352 AArch64::AEK_LSE,
1353 AArch64::AEK_SIMD,
1354 AArch64::AEK_RAS,
1355 AArch64::AEK_RCPC,
1356 AArch64::AEK_RDM,
1357 AArch64::AEK_FPAC,
1358 })
1359 },
1360 {
1361 13544,
1362 13 /* ARMV9_2A */,
1363 AArch64::ExtensionBitset({
1364 AArch64::AEK_MTE,
1365 AArch64::AEK_FP16FML,
1366 AArch64::AEK_CCIDX,
1367 AArch64::AEK_ETE,
1368 AArch64::AEK_PERFMON,
1369 AArch64::AEK_PROFILE,
1370 AArch64::AEK_SVEBITPERM,
1371 AArch64::AEK_SPE_EEF,
1372 AArch64::AEK_TRBE,
1373 AArch64::AEK_FLAGM,
1374 AArch64::AEK_PREDRES,
1375 AArch64::AEK_SB,
1376 AArch64::AEK_SSBS,
1377 AArch64::AEK_SVE,
1378 AArch64::AEK_SVE2,
1379 AArch64::AEK_BF16,
1380 AArch64::AEK_FCMA,
1381 AArch64::AEK_CRC,
1382 AArch64::AEK_DOTPROD,
1383 AArch64::AEK_FP,
1384 AArch64::AEK_FP16,
1385 AArch64::AEK_I8MM,
1386 AArch64::AEK_JSCVT,
1387 AArch64::AEK_LSE,
1388 AArch64::AEK_SIMD,
1389 AArch64::AEK_PAUTH,
1390 AArch64::AEK_RAS,
1391 AArch64::AEK_RCPC,
1392 AArch64::AEK_RDM,
1393 AArch64::AEK_FPAC,
1394 })
1395 },
1396 {
1397 12964,
1398 14 /* ARMV9_3A */,
1399 AArch64::ExtensionBitset({
1400 AArch64::AEK_SIMD,
1401 AArch64::AEK_CLRBHB,
1402 AArch64::AEK_CHK,
1403 AArch64::AEK_FP,
1404 AArch64::AEK_PERFMON,
1405 AArch64::AEK_SPECRES2,
1406 AArch64::AEK_SSBS,
1407 AArch64::AEK_RDM,
1408 AArch64::AEK_VH,
1409 AArch64::AEK_BF16,
1410 AArch64::AEK_DOTPROD,
1411 AArch64::AEK_FP16FML,
1412 AArch64::AEK_FP16,
1413 AArch64::AEK_MPAM,
1414 AArch64::AEK_PROFILE,
1415 AArch64::AEK_SVE,
1416 AArch64::AEK_CCIDX,
1417 AArch64::AEK_FCMA,
1418 AArch64::AEK_FPAC,
1419 AArch64::AEK_JSCVT,
1420 AArch64::AEK_AM,
1421 AArch64::AEK_RAS,
1422 AArch64::AEK_SEL2,
1423 AArch64::AEK_TRACEV8_4,
1424 AArch64::AEK_ALTERNATIVENZCV,
1425 AArch64::AEK_FRINT3264,
1426 AArch64::AEK_MTE,
1427 AArch64::AEK_FINEGRAINEDTRAPS,
1428 AArch64::AEK_SPE_EEF,
1429 AArch64::AEK_RCPC3,
1430 AArch64::AEK_ETE,
1431 AArch64::AEK_SVEBITPERM,
1432 AArch64::AEK_SVE2,
1433 AArch64::AEK_TRBE,
1434 AArch64::AEK_SME,
1435 AArch64::AEK_SME2,
1436 })
1437 },
1438 {
1439 13556,
1440 1 /* ARMV8R */,
1441 AArch64::ExtensionBitset({
1442 AArch64::AEK_PERFMON,
1443 AArch64::AEK_FP16,
1444 AArch64::AEK_FP16FML,
1445 AArch64::AEK_SSBS,
1446 AArch64::AEK_PREDRES,
1447 AArch64::AEK_SB,
1448 AArch64::AEK_RDM,
1449 AArch64::AEK_DOTPROD,
1450 AArch64::AEK_FCMA,
1451 AArch64::AEK_JSCVT,
1452 AArch64::AEK_CCDP,
1453 AArch64::AEK_FLAGM,
1454 AArch64::AEK_CRC,
1455 AArch64::AEK_LSE,
1456 AArch64::AEK_RAS,
1457 AArch64::AEK_FP,
1458 AArch64::AEK_SIMD,
1459 AArch64::AEK_PAUTH,
1460 AArch64::AEK_RCPC,
1461 AArch64::AEK_FPAC,
1462 })
1463 },
1464 {
1465 13567,
1466 1 /* ARMV8R */,
1467 AArch64::ExtensionBitset({
1468 AArch64::AEK_PERFMON,
1469 AArch64::AEK_FP16,
1470 AArch64::AEK_FP16FML,
1471 AArch64::AEK_SSBS,
1472 AArch64::AEK_PREDRES,
1473 AArch64::AEK_SB,
1474 AArch64::AEK_RDM,
1475 AArch64::AEK_DOTPROD,
1476 AArch64::AEK_FCMA,
1477 AArch64::AEK_JSCVT,
1478 AArch64::AEK_CCDP,
1479 AArch64::AEK_LSE,
1480 AArch64::AEK_FLAGM,
1481 AArch64::AEK_CRC,
1482 AArch64::AEK_FP,
1483 AArch64::AEK_SIMD,
1484 AArch64::AEK_PAUTH,
1485 AArch64::AEK_RAS,
1486 AArch64::AEK_RCPC,
1487 AArch64::AEK_FPAC,
1488 })
1489 },
1490 {
1491 13580,
1492 3 /* ARMV8_2A */,
1493 AArch64::ExtensionBitset({
1494 AArch64::AEK_SHA2,
1495 AArch64::AEK_AES,
1496 AArch64::AEK_FP,
1497 AArch64::AEK_SIMD,
1498 AArch64::AEK_RCPC,
1499 AArch64::AEK_PERFMON,
1500 AArch64::AEK_PROFILE,
1501 AArch64::AEK_FP16,
1502 AArch64::AEK_DOTPROD,
1503 AArch64::AEK_SSBS,
1504 AArch64::AEK_CRC,
1505 AArch64::AEK_LSE,
1506 AArch64::AEK_RAS,
1507 AArch64::AEK_RDM,
1508 })
1509 },
1510 {
1511 13590,
1512 3 /* ARMV8_2A */,
1513 AArch64::ExtensionBitset({
1514 AArch64::AEK_SHA2,
1515 AArch64::AEK_AES,
1516 AArch64::AEK_FP,
1517 AArch64::AEK_SIMD,
1518 AArch64::AEK_RCPC_IMMO,
1519 AArch64::AEK_PERFMON,
1520 AArch64::AEK_PROFILE,
1521 AArch64::AEK_FP16,
1522 AArch64::AEK_DOTPROD,
1523 AArch64::AEK_PAUTH,
1524 AArch64::AEK_SSBS,
1525 AArch64::AEK_FLAGM,
1526 AArch64::AEK_LSE2,
1527 AArch64::AEK_RCPC,
1528 AArch64::AEK_CRC,
1529 AArch64::AEK_LSE,
1530 AArch64::AEK_RAS,
1531 AArch64::AEK_RDM,
1532 })
1533 },
1534 {
1535 13601,
1536 11 /* ARMV9A */,
1537 AArch64::ExtensionBitset({
1538 AArch64::AEK_SIMD,
1539 AArch64::AEK_PERFMON,
1540 AArch64::AEK_I8MM,
1541 AArch64::AEK_BF16,
1542 AArch64::AEK_AM,
1543 AArch64::AEK_MTE,
1544 AArch64::AEK_ETE,
1545 AArch64::AEK_SVEBITPERM,
1546 AArch64::AEK_FP16FML,
1547 AArch64::AEK_CCIDX,
1548 AArch64::AEK_PAUTH,
1549 AArch64::AEK_SSBS,
1550 AArch64::AEK_SB,
1551 AArch64::AEK_SVE,
1552 AArch64::AEK_SVE2,
1553 AArch64::AEK_FLAGM,
1554 AArch64::AEK_FCMA,
1555 AArch64::AEK_CRC,
1556 AArch64::AEK_DOTPROD,
1557 AArch64::AEK_FP,
1558 AArch64::AEK_FP16,
1559 AArch64::AEK_JSCVT,
1560 AArch64::AEK_LSE,
1561 AArch64::AEK_RAS,
1562 AArch64::AEK_RCPC,
1563 AArch64::AEK_RDM,
1564 AArch64::AEK_FPAC,
1565 })
1566 },
1567 {
1568 13611,
1569 11 /* ARMV9A */,
1570 AArch64::ExtensionBitset({
1571 AArch64::AEK_SVE,
1572 AArch64::AEK_SIMD,
1573 AArch64::AEK_PERFMON,
1574 AArch64::AEK_ETE,
1575 AArch64::AEK_TRBE,
1576 AArch64::AEK_PROFILE,
1577 AArch64::AEK_BF16,
1578 AArch64::AEK_I8MM,
1579 AArch64::AEK_MTE,
1580 AArch64::AEK_SVEBITPERM,
1581 AArch64::AEK_FP16,
1582 AArch64::AEK_FP16FML,
1583 AArch64::AEK_CCIDX,
1584 AArch64::AEK_SB,
1585 AArch64::AEK_PAUTH,
1586 AArch64::AEK_PREDRES,
1587 AArch64::AEK_FLAGM,
1588 AArch64::AEK_SSBS,
1589 AArch64::AEK_SVE2,
1590 AArch64::AEK_FCMA,
1591 AArch64::AEK_CRC,
1592 AArch64::AEK_FP,
1593 AArch64::AEK_JSCVT,
1594 AArch64::AEK_LSE,
1595 AArch64::AEK_RAS,
1596 AArch64::AEK_RCPC,
1597 AArch64::AEK_RDM,
1598 AArch64::AEK_DOTPROD,
1599 AArch64::AEK_FPAC,
1600 })
1601 },
1602 {
1603 13621,
1604 13 /* ARMV9_2A */,
1605 AArch64::ExtensionBitset({
1606 AArch64::AEK_PERFMON,
1607 AArch64::AEK_ETE,
1608 AArch64::AEK_TRBE,
1609 AArch64::AEK_PROFILE,
1610 AArch64::AEK_MTE,
1611 AArch64::AEK_SVEBITPERM,
1612 AArch64::AEK_FP16FML,
1613 AArch64::AEK_SPE_EEF,
1614 AArch64::AEK_CCIDX,
1615 AArch64::AEK_SB,
1616 AArch64::AEK_SSBS,
1617 AArch64::AEK_PAUTH,
1618 AArch64::AEK_FLAGM,
1619 AArch64::AEK_PREDRES,
1620 AArch64::AEK_SVE,
1621 AArch64::AEK_SVE2,
1622 AArch64::AEK_FCMA,
1623 AArch64::AEK_CRC,
1624 AArch64::AEK_DOTPROD,
1625 AArch64::AEK_FP,
1626 AArch64::AEK_FP16,
1627 AArch64::AEK_I8MM,
1628 AArch64::AEK_JSCVT,
1629 AArch64::AEK_LSE,
1630 AArch64::AEK_SIMD,
1631 AArch64::AEK_RAS,
1632 AArch64::AEK_RCPC,
1633 AArch64::AEK_RDM,
1634 AArch64::AEK_BF16,
1635 AArch64::AEK_FPAC,
1636 })
1637 },
1638 {
1639 13631,
1640 13 /* ARMV9_2A */,
1641 AArch64::ExtensionBitset({
1642 AArch64::AEK_MTE,
1643 AArch64::AEK_FP16FML,
1644 AArch64::AEK_CCIDX,
1645 AArch64::AEK_ETE,
1646 AArch64::AEK_PERFMON,
1647 AArch64::AEK_PROFILE,
1648 AArch64::AEK_SVEBITPERM,
1649 AArch64::AEK_SPE_EEF,
1650 AArch64::AEK_TRBE,
1651 AArch64::AEK_FLAGM,
1652 AArch64::AEK_PREDRES,
1653 AArch64::AEK_SB,
1654 AArch64::AEK_SSBS,
1655 AArch64::AEK_SVE,
1656 AArch64::AEK_SVE2,
1657 AArch64::AEK_BF16,
1658 AArch64::AEK_FCMA,
1659 AArch64::AEK_CRC,
1660 AArch64::AEK_DOTPROD,
1661 AArch64::AEK_FP,
1662 AArch64::AEK_FP16,
1663 AArch64::AEK_I8MM,
1664 AArch64::AEK_JSCVT,
1665 AArch64::AEK_LSE,
1666 AArch64::AEK_SIMD,
1667 AArch64::AEK_PAUTH,
1668 AArch64::AEK_RAS,
1669 AArch64::AEK_RCPC,
1670 AArch64::AEK_RDM,
1671 AArch64::AEK_FPAC,
1672 })
1673 },
1674 {
1675 13643,
1676 14 /* ARMV9_3A */,
1677 AArch64::ExtensionBitset({
1678 AArch64::AEK_SIMD,
1679 AArch64::AEK_CLRBHB,
1680 AArch64::AEK_CHK,
1681 AArch64::AEK_FP,
1682 AArch64::AEK_PERFMON,
1683 AArch64::AEK_SPECRES2,
1684 AArch64::AEK_SSBS,
1685 AArch64::AEK_RDM,
1686 AArch64::AEK_VH,
1687 AArch64::AEK_BF16,
1688 AArch64::AEK_DOTPROD,
1689 AArch64::AEK_FP16FML,
1690 AArch64::AEK_FP16,
1691 AArch64::AEK_MPAM,
1692 AArch64::AEK_PROFILE,
1693 AArch64::AEK_SVE,
1694 AArch64::AEK_CCIDX,
1695 AArch64::AEK_FCMA,
1696 AArch64::AEK_FPAC,
1697 AArch64::AEK_JSCVT,
1698 AArch64::AEK_AM,
1699 AArch64::AEK_RAS,
1700 AArch64::AEK_SEL2,
1701 AArch64::AEK_TRACEV8_4,
1702 AArch64::AEK_ALTERNATIVENZCV,
1703 AArch64::AEK_FRINT3264,
1704 AArch64::AEK_MTE,
1705 AArch64::AEK_FINEGRAINEDTRAPS,
1706 AArch64::AEK_SPE_EEF,
1707 AArch64::AEK_RCPC3,
1708 AArch64::AEK_ETE,
1709 AArch64::AEK_SVEBITPERM,
1710 AArch64::AEK_SVE2,
1711 AArch64::AEK_TRBE,
1712 AArch64::AEK_SME,
1713 AArch64::AEK_SME2,
1714 })
1715 },
1716 {
1717 13654,
1718 14 /* ARMV9_3A */,
1719 AArch64::ExtensionBitset({
1720 AArch64::AEK_SIMD,
1721 AArch64::AEK_CLRBHB,
1722 AArch64::AEK_CHK,
1723 AArch64::AEK_FP,
1724 AArch64::AEK_PERFMON,
1725 AArch64::AEK_SPECRES2,
1726 AArch64::AEK_SSBS,
1727 AArch64::AEK_RDM,
1728 AArch64::AEK_VH,
1729 AArch64::AEK_BF16,
1730 AArch64::AEK_DOTPROD,
1731 AArch64::AEK_FP16FML,
1732 AArch64::AEK_FP16,
1733 AArch64::AEK_MPAM,
1734 AArch64::AEK_PROFILE,
1735 AArch64::AEK_SVE,
1736 AArch64::AEK_CCIDX,
1737 AArch64::AEK_FCMA,
1738 AArch64::AEK_FPAC,
1739 AArch64::AEK_JSCVT,
1740 AArch64::AEK_AM,
1741 AArch64::AEK_RAS,
1742 AArch64::AEK_SEL2,
1743 AArch64::AEK_TRACEV8_4,
1744 AArch64::AEK_ALTERNATIVENZCV,
1745 AArch64::AEK_FRINT3264,
1746 AArch64::AEK_MTE,
1747 AArch64::AEK_FINEGRAINEDTRAPS,
1748 AArch64::AEK_SPE_EEF,
1749 AArch64::AEK_RCPC3,
1750 AArch64::AEK_ETE,
1751 AArch64::AEK_SVEBITPERM,
1752 AArch64::AEK_SVE2,
1753 AArch64::AEK_TRBE,
1754 AArch64::AEK_SME,
1755 AArch64::AEK_SME2,
1756 })
1757 },
1758 {
1759 13663,
1760 14 /* ARMV9_3A */,
1761 AArch64::ExtensionBitset({
1762 AArch64::AEK_SIMD,
1763 AArch64::AEK_CLRBHB,
1764 AArch64::AEK_CHK,
1765 AArch64::AEK_FP,
1766 AArch64::AEK_PERFMON,
1767 AArch64::AEK_SPECRES2,
1768 AArch64::AEK_SSBS,
1769 AArch64::AEK_RDM,
1770 AArch64::AEK_VH,
1771 AArch64::AEK_BF16,
1772 AArch64::AEK_DOTPROD,
1773 AArch64::AEK_FP16FML,
1774 AArch64::AEK_FP16,
1775 AArch64::AEK_MPAM,
1776 AArch64::AEK_PROFILE,
1777 AArch64::AEK_SVE,
1778 AArch64::AEK_CCIDX,
1779 AArch64::AEK_FCMA,
1780 AArch64::AEK_FPAC,
1781 AArch64::AEK_JSCVT,
1782 AArch64::AEK_AM,
1783 AArch64::AEK_RAS,
1784 AArch64::AEK_SEL2,
1785 AArch64::AEK_TRACEV8_4,
1786 AArch64::AEK_ALTERNATIVENZCV,
1787 AArch64::AEK_FRINT3264,
1788 AArch64::AEK_MTE,
1789 AArch64::AEK_FINEGRAINEDTRAPS,
1790 AArch64::AEK_SPE_EEF,
1791 AArch64::AEK_RCPC3,
1792 AArch64::AEK_ETE,
1793 AArch64::AEK_SVEBITPERM,
1794 AArch64::AEK_SVE2,
1795 AArch64::AEK_TRBE,
1796 AArch64::AEK_SME,
1797 AArch64::AEK_SME2,
1798 })
1799 },
1800 {
1801 13672,
1802 13 /* ARMV9_2A */,
1803 AArch64::ExtensionBitset({
1804 AArch64::AEK_MTE,
1805 AArch64::AEK_FP16FML,
1806 AArch64::AEK_CCIDX,
1807 AArch64::AEK_ETE,
1808 AArch64::AEK_PERFMON,
1809 AArch64::AEK_PROFILE,
1810 AArch64::AEK_SVEBITPERM,
1811 AArch64::AEK_SPE_EEF,
1812 AArch64::AEK_TRBE,
1813 AArch64::AEK_FLAGM,
1814 AArch64::AEK_PREDRES,
1815 AArch64::AEK_SB,
1816 AArch64::AEK_SSBS,
1817 AArch64::AEK_SVE,
1818 AArch64::AEK_SVE2,
1819 AArch64::AEK_BF16,
1820 AArch64::AEK_FCMA,
1821 AArch64::AEK_CRC,
1822 AArch64::AEK_DOTPROD,
1823 AArch64::AEK_FP,
1824 AArch64::AEK_FP16,
1825 AArch64::AEK_I8MM,
1826 AArch64::AEK_JSCVT,
1827 AArch64::AEK_LSE,
1828 AArch64::AEK_SIMD,
1829 AArch64::AEK_PAUTH,
1830 AArch64::AEK_RAS,
1831 AArch64::AEK_RCPC,
1832 AArch64::AEK_RDM,
1833 AArch64::AEK_FPAC,
1834 AArch64::AEK_SVEAES,
1835 AArch64::AEK_SVESHA3,
1836 AArch64::AEK_SVESM4,
1837 })
1838 },
1839 {
1840 13677,
1841 11 /* ARMV9A */,
1842 AArch64::ExtensionBitset({
1843 AArch64::AEK_BF16,
1844 AArch64::AEK_PROFILE,
1845 AArch64::AEK_PERFMON,
1846 AArch64::AEK_ETE,
1847 AArch64::AEK_I8MM,
1848 AArch64::AEK_SIMD,
1849 AArch64::AEK_SVEBITPERM,
1850 AArch64::AEK_FP16FML,
1851 AArch64::AEK_MTE,
1852 AArch64::AEK_CCIDX,
1853 AArch64::AEK_SVE,
1854 AArch64::AEK_SVE2,
1855 AArch64::AEK_SSBS,
1856 AArch64::AEK_FP16,
1857 AArch64::AEK_DOTPROD,
1858 AArch64::AEK_FCMA,
1859 AArch64::AEK_CRC,
1860 AArch64::AEK_FP,
1861 AArch64::AEK_JSCVT,
1862 AArch64::AEK_LSE,
1863 AArch64::AEK_PAUTH,
1864 AArch64::AEK_RAS,
1865 AArch64::AEK_RCPC,
1866 AArch64::AEK_RDM,
1867 AArch64::AEK_FPAC,
1868 AArch64::AEK_SVESM4,
1869 AArch64::AEK_SVEAES,
1870 AArch64::AEK_SVESHA3,
1871 })
1872 },
1873 {
1874 13683,
1875 3 /* ARMV8_2A */,
1876 AArch64::ExtensionBitset({
1877 AArch64::AEK_SHA2,
1878 AArch64::AEK_AES,
1879 AArch64::AEK_DOTPROD,
1880 AArch64::AEK_FP,
1881 AArch64::AEK_FP16,
1882 AArch64::AEK_SIMD,
1883 AArch64::AEK_RCPC,
1884 AArch64::AEK_SSBS,
1885 AArch64::AEK_PERFMON,
1886 AArch64::AEK_CRC,
1887 AArch64::AEK_LSE,
1888 AArch64::AEK_RAS,
1889 AArch64::AEK_RDM,
1890 })
1891 },
1892 {
1893 13695,
1894 3 /* ARMV8_2A */,
1895 AArch64::ExtensionBitset({
1896 AArch64::AEK_SHA2,
1897 AArch64::AEK_AES,
1898 AArch64::AEK_DOTPROD,
1899 AArch64::AEK_FP,
1900 AArch64::AEK_FP16,
1901 AArch64::AEK_SIMD,
1902 AArch64::AEK_RCPC,
1903 AArch64::AEK_PROFILE,
1904 AArch64::AEK_SSBS,
1905 AArch64::AEK_PERFMON,
1906 AArch64::AEK_CRC,
1907 AArch64::AEK_LSE,
1908 AArch64::AEK_RAS,
1909 AArch64::AEK_RDM,
1910 })
1911 },
1912 {
1913 12982,
1914 11 /* ARMV9A */,
1915 AArch64::ExtensionBitset({
1916 AArch64::AEK_BF16,
1917 AArch64::AEK_ETE,
1918 AArch64::AEK_FP16FML,
1919 AArch64::AEK_I8MM,
1920 AArch64::AEK_MTE,
1921 AArch64::AEK_SVE2,
1922 AArch64::AEK_SVEBITPERM,
1923 AArch64::AEK_TRBE,
1924 AArch64::AEK_PERFMON,
1925 AArch64::AEK_CCIDX,
1926 AArch64::AEK_DOTPROD,
1927 AArch64::AEK_FP16,
1928 AArch64::AEK_SB,
1929 AArch64::AEK_SSBS,
1930 AArch64::AEK_SVE,
1931 AArch64::AEK_FCMA,
1932 AArch64::AEK_CRC,
1933 AArch64::AEK_FP,
1934 AArch64::AEK_JSCVT,
1935 AArch64::AEK_LSE,
1936 AArch64::AEK_SIMD,
1937 AArch64::AEK_PAUTH,
1938 AArch64::AEK_RAS,
1939 AArch64::AEK_RCPC,
1940 AArch64::AEK_RDM,
1941 AArch64::AEK_FPAC,
1942 })
1943 },
1944 {
1945 13707,
1946 13 /* ARMV9_2A */,
1947 AArch64::ExtensionBitset({
1948 AArch64::AEK_ETE,
1949 AArch64::AEK_FP16FML,
1950 AArch64::AEK_FP16,
1951 AArch64::AEK_MTE,
1952 AArch64::AEK_PERFMON,
1953 AArch64::AEK_RAND,
1954 AArch64::AEK_PROFILE,
1955 AArch64::AEK_SPE_EEF,
1956 AArch64::AEK_SVEBITPERM,
1957 AArch64::AEK_CCIDX,
1958 AArch64::AEK_SSBS,
1959 AArch64::AEK_SB,
1960 AArch64::AEK_PREDRES,
1961 AArch64::AEK_PAUTH,
1962 AArch64::AEK_FLAGM,
1963 AArch64::AEK_SVE,
1964 AArch64::AEK_SVE2,
1965 AArch64::AEK_BF16,
1966 AArch64::AEK_FCMA,
1967 AArch64::AEK_CRC,
1968 AArch64::AEK_DOTPROD,
1969 AArch64::AEK_FP,
1970 AArch64::AEK_I8MM,
1971 AArch64::AEK_JSCVT,
1972 AArch64::AEK_LSE,
1973 AArch64::AEK_RAS,
1974 AArch64::AEK_RCPC,
1975 AArch64::AEK_RDM,
1976 AArch64::AEK_SIMD,
1977 AArch64::AEK_FPAC,
1978 })
1979 },
1980 {
1981 13719,
1982 5 /* ARMV8_4A */,
1983 AArch64::ExtensionBitset({
1984 AArch64::AEK_BF16,
1985 AArch64::AEK_CCDP,
1986 AArch64::AEK_SHA2,
1987 AArch64::AEK_AES,
1988 AArch64::AEK_FP,
1989 AArch64::AEK_FP16FML,
1990 AArch64::AEK_FP16,
1991 AArch64::AEK_I8MM,
1992 AArch64::AEK_SIMD,
1993 AArch64::AEK_PERFMON,
1994 AArch64::AEK_RAND,
1995 AArch64::AEK_PROFILE,
1996 AArch64::AEK_SSBS,
1997 AArch64::AEK_SVE,
1998 AArch64::AEK_CCIDX,
1999 AArch64::AEK_SHA3,
2000 AArch64::AEK_SM4,
2001 AArch64::AEK_DOTPROD,
2002 AArch64::AEK_FCMA,
2003 AArch64::AEK_CRC,
2004 AArch64::AEK_JSCVT,
2005 AArch64::AEK_LSE,
2006 AArch64::AEK_PAUTH,
2007 AArch64::AEK_RAS,
2008 AArch64::AEK_RCPC,
2009 AArch64::AEK_RDM,
2010 AArch64::AEK_FPAC,
2011 })
2012 },
2013 {
2014 13735,
2015 5 /* ARMV8_4A */,
2016 AArch64::ExtensionBitset({
2017 AArch64::AEK_BF16,
2018 AArch64::AEK_CCDP,
2019 AArch64::AEK_SHA2,
2020 AArch64::AEK_AES,
2021 AArch64::AEK_FP,
2022 AArch64::AEK_FP16FML,
2023 AArch64::AEK_FP16,
2024 AArch64::AEK_I8MM,
2025 AArch64::AEK_SIMD,
2026 AArch64::AEK_PERFMON,
2027 AArch64::AEK_RAND,
2028 AArch64::AEK_PROFILE,
2029 AArch64::AEK_SSBS,
2030 AArch64::AEK_SVE,
2031 AArch64::AEK_CCIDX,
2032 AArch64::AEK_SHA3,
2033 AArch64::AEK_SM4,
2034 AArch64::AEK_DOTPROD,
2035 AArch64::AEK_FCMA,
2036 AArch64::AEK_CRC,
2037 AArch64::AEK_JSCVT,
2038 AArch64::AEK_LSE,
2039 AArch64::AEK_PAUTH,
2040 AArch64::AEK_RAS,
2041 AArch64::AEK_RCPC,
2042 AArch64::AEK_RDM,
2043 })
2044 },
2045 {
2046 13747,
2047 11 /* ARMV9A */,
2048 AArch64::ExtensionBitset({
2049 AArch64::AEK_BF16,
2050 AArch64::AEK_PROFILE,
2051 AArch64::AEK_PERFMON,
2052 AArch64::AEK_ETE,
2053 AArch64::AEK_I8MM,
2054 AArch64::AEK_SIMD,
2055 AArch64::AEK_SVEBITPERM,
2056 AArch64::AEK_FP16FML,
2057 AArch64::AEK_MTE,
2058 AArch64::AEK_RAND,
2059 AArch64::AEK_CCIDX,
2060 AArch64::AEK_SVE,
2061 AArch64::AEK_SVE2,
2062 AArch64::AEK_SSBS,
2063 AArch64::AEK_FP16,
2064 AArch64::AEK_DOTPROD,
2065 AArch64::AEK_FCMA,
2066 AArch64::AEK_CRC,
2067 AArch64::AEK_FP,
2068 AArch64::AEK_JSCVT,
2069 AArch64::AEK_LSE,
2070 AArch64::AEK_PAUTH,
2071 AArch64::AEK_RAS,
2072 AArch64::AEK_RCPC,
2073 AArch64::AEK_RDM,
2074 AArch64::AEK_FPAC,
2075 })
2076 },
2077 {
2078 13759,
2079 13 /* ARMV9_2A */,
2080 AArch64::ExtensionBitset({
2081 AArch64::AEK_ETE,
2082 AArch64::AEK_FP16FML,
2083 AArch64::AEK_FP16,
2084 AArch64::AEK_LS64,
2085 AArch64::AEK_MTE,
2086 AArch64::AEK_PERFMON,
2087 AArch64::AEK_RAND,
2088 AArch64::AEK_PROFILE,
2089 AArch64::AEK_CCIDX,
2090 AArch64::AEK_SPE_EEF,
2091 AArch64::AEK_SVEBITPERM,
2092 AArch64::AEK_BRBE,
2093 AArch64::AEK_SSBS,
2094 AArch64::AEK_SB,
2095 AArch64::AEK_PREDRES,
2096 AArch64::AEK_PAUTH,
2097 AArch64::AEK_FLAGM,
2098 AArch64::AEK_SVE,
2099 AArch64::AEK_SVE2,
2100 AArch64::AEK_BF16,
2101 AArch64::AEK_FCMA,
2102 AArch64::AEK_CRC,
2103 AArch64::AEK_DOTPROD,
2104 AArch64::AEK_FP,
2105 AArch64::AEK_I8MM,
2106 AArch64::AEK_JSCVT,
2107 AArch64::AEK_LSE,
2108 AArch64::AEK_SIMD,
2109 AArch64::AEK_RAS,
2110 AArch64::AEK_RCPC,
2111 AArch64::AEK_RDM,
2112 AArch64::AEK_RME,
2113 AArch64::AEK_FPAC,
2114 })
2115 },
2116 {
2117 13004,
2118 13 /* ARMV9_2A */,
2119 AArch64::ExtensionBitset({
2120 AArch64::AEK_ETE,
2121 AArch64::AEK_FP16FML,
2122 AArch64::AEK_FP16,
2123 AArch64::AEK_LS64,
2124 AArch64::AEK_MTE,
2125 AArch64::AEK_PERFMON,
2126 AArch64::AEK_RAND,
2127 AArch64::AEK_PROFILE,
2128 AArch64::AEK_SPE_EEF,
2129 AArch64::AEK_SVEBITPERM,
2130 AArch64::AEK_BRBE,
2131 AArch64::AEK_SSBS,
2132 AArch64::AEK_SB,
2133 AArch64::AEK_PREDRES,
2134 AArch64::AEK_PAUTH,
2135 AArch64::AEK_FLAGM,
2136 AArch64::AEK_CCIDX,
2137 AArch64::AEK_SVE,
2138 AArch64::AEK_SVE2,
2139 AArch64::AEK_BF16,
2140 AArch64::AEK_FCMA,
2141 AArch64::AEK_CRC,
2142 AArch64::AEK_DOTPROD,
2143 AArch64::AEK_FP,
2144 AArch64::AEK_I8MM,
2145 AArch64::AEK_JSCVT,
2146 AArch64::AEK_LSE,
2147 AArch64::AEK_SIMD,
2148 AArch64::AEK_RAS,
2149 AArch64::AEK_RCPC,
2150 AArch64::AEK_RDM,
2151 AArch64::AEK_RME,
2152 AArch64::AEK_FPAC,
2153 })
2154 },
2155 {
2156 13771,
2157 0 /* ARMV8A */,
2158 AArch64::ExtensionBitset({
2159 AArch64::AEK_CRC,
2160 AArch64::AEK_SHA2,
2161 AArch64::AEK_AES,
2162 AArch64::AEK_PERFMON,
2163 AArch64::AEK_SIMD,
2164 AArch64::AEK_FP,
2165 })
2166 },
2167 {
2168 13781,
2169 3 /* ARMV8_2A */,
2170 AArch64::ExtensionBitset({
2171 AArch64::AEK_SHA2,
2172 AArch64::AEK_AES,
2173 AArch64::AEK_DOTPROD,
2174 AArch64::AEK_FP16,
2175 AArch64::AEK_PERFMON,
2176 AArch64::AEK_CRC,
2177 AArch64::AEK_FP,
2178 AArch64::AEK_LSE,
2179 AArch64::AEK_SIMD,
2180 AArch64::AEK_RAS,
2181 AArch64::AEK_RDM,
2182 })
2183 },
2184 {
2185 13791,
2186 3 /* ARMV8_2A */,
2187 AArch64::ExtensionBitset({
2188 AArch64::AEK_SHA2,
2189 AArch64::AEK_AES,
2190 AArch64::AEK_DOTPROD,
2191 AArch64::AEK_FP16,
2192 AArch64::AEK_PERFMON,
2193 AArch64::AEK_CRC,
2194 AArch64::AEK_FP,
2195 AArch64::AEK_LSE,
2196 AArch64::AEK_SIMD,
2197 AArch64::AEK_RAS,
2198 AArch64::AEK_RDM,
2199 })
2200 },
2201 {
2202 13801,
2203 0 /* ARMV8A */,
2204 AArch64::ExtensionBitset({
2205 AArch64::AEK_CRC,
2206 AArch64::AEK_SHA2,
2207 AArch64::AEK_AES,
2208 AArch64::AEK_FP,
2209 AArch64::AEK_SIMD,
2210 AArch64::AEK_PERFMON,
2211 AArch64::AEK_RDM,
2212 })
2213 },
2214 {
2215 13808,
2216 5 /* ARMV8_4A */,
2217 AArch64::ExtensionBitset({
2218 AArch64::AEK_SHA2,
2219 AArch64::AEK_AES,
2220 AArch64::AEK_FP,
2221 AArch64::AEK_SIMD,
2222 AArch64::AEK_PROFILE,
2223 AArch64::AEK_PERFMON,
2224 AArch64::AEK_CRC,
2225 AArch64::AEK_CCIDX,
2226 AArch64::AEK_LSE,
2227 AArch64::AEK_RDM,
2228 AArch64::AEK_RAS,
2229 AArch64::AEK_RCPC,
2230 })
2231 },
2232 {
2233 13816,
2234 0 /* ARMV8A */,
2235 AArch64::ExtensionBitset({
2236 AArch64::AEK_CRC,
2237 AArch64::AEK_SHA2,
2238 AArch64::AEK_AES,
2239 AArch64::AEK_FP,
2240 AArch64::AEK_SIMD,
2241 AArch64::AEK_PERFMON,
2242 })
2243 },
2244 {
2245 13821,
2246 0 /* ARMV8A */,
2247 AArch64::ExtensionBitset({
2248 AArch64::AEK_CRC,
2249 AArch64::AEK_SHA2,
2250 AArch64::AEK_AES,
2251 AArch64::AEK_FP,
2252 AArch64::AEK_PERFMON,
2253 AArch64::AEK_SIMD,
2254 })
2255 },
2256 {
2257 13830,
2258 0 /* ARMV8A */,
2259 AArch64::ExtensionBitset({
2260 AArch64::AEK_CRC,
2261 AArch64::AEK_SHA2,
2262 AArch64::AEK_AES,
2263 AArch64::AEK_FP,
2264 AArch64::AEK_PERFMON,
2265 AArch64::AEK_SIMD,
2266 })
2267 },
2268 {
2269 13842,
2270 0 /* ARMV8A */,
2271 AArch64::ExtensionBitset({
2272 AArch64::AEK_CRC,
2273 AArch64::AEK_SHA2,
2274 AArch64::AEK_AES,
2275 AArch64::AEK_FP,
2276 AArch64::AEK_PERFMON,
2277 AArch64::AEK_SIMD,
2278 })
2279 },
2280 {
2281 13854,
2282 0 /* ARMV8A */,
2283 AArch64::ExtensionBitset({
2284 AArch64::AEK_CRC,
2285 AArch64::AEK_SHA2,
2286 AArch64::AEK_AES,
2287 AArch64::AEK_FP,
2288 AArch64::AEK_PERFMON,
2289 AArch64::AEK_SIMD,
2290 })
2291 },
2292 {
2293 13866,
2294 2 /* ARMV8_1A */,
2295 AArch64::ExtensionBitset({
2296 AArch64::AEK_CRC,
2297 AArch64::AEK_SHA2,
2298 AArch64::AEK_AES,
2299 AArch64::AEK_FP,
2300 AArch64::AEK_SIMD,
2301 AArch64::AEK_LSE,
2302 AArch64::AEK_RDM,
2303 })
2304 },
2305 {
2306 13879,
2307 4 /* ARMV8_3A */,
2308 AArch64::ExtensionBitset({
2309 AArch64::AEK_CRC,
2310 AArch64::AEK_SHA2,
2311 AArch64::AEK_AES,
2312 AArch64::AEK_FP,
2313 AArch64::AEK_SIMD,
2314 AArch64::AEK_LSE,
2315 AArch64::AEK_CCIDX,
2316 AArch64::AEK_PAUTH,
2317 AArch64::AEK_PERFMON,
2318 AArch64::AEK_FCMA,
2319 AArch64::AEK_JSCVT,
2320 AArch64::AEK_RAS,
2321 AArch64::AEK_RCPC,
2322 AArch64::AEK_RDM,
2323 })
2324 },
2325 {
2326 13893,
2327 3 /* ARMV8_2A */,
2328 AArch64::ExtensionBitset({
2329 AArch64::AEK_SHA2,
2330 AArch64::AEK_AES,
2331 AArch64::AEK_FP,
2332 AArch64::AEK_SIMD,
2333 AArch64::AEK_PERFMON,
2334 AArch64::AEK_PROFILE,
2335 AArch64::AEK_FP16,
2336 AArch64::AEK_FP16FML,
2337 AArch64::AEK_DOTPROD,
2338 AArch64::AEK_JSCVT,
2339 AArch64::AEK_FCMA,
2340 AArch64::AEK_CRC,
2341 AArch64::AEK_LSE,
2342 AArch64::AEK_RAS,
2343 AArch64::AEK_RDM,
2344 })
2345 },
2346 {
2347 13900,
2348 8 /* ARMV8_7A */,
2349 AArch64::ExtensionBitset({
2350 AArch64::AEK_SVE,
2351 AArch64::AEK_SVE2,
2352 AArch64::AEK_SVEBITPERM,
2353 AArch64::AEK_SVEAES,
2354 AArch64::AEK_SVESM4,
2355 AArch64::AEK_SVESHA3,
2356 AArch64::AEK_FP16,
2357 AArch64::AEK_FP16FML,
2358 AArch64::AEK_PERFMON,
2359 AArch64::AEK_FLAGM,
2360 AArch64::AEK_PREDRES,
2361 AArch64::AEK_SB,
2362 AArch64::AEK_SSBS,
2363 AArch64::AEK_CCIDX,
2364 AArch64::AEK_RAND,
2365 AArch64::AEK_ETE,
2366 AArch64::AEK_TRBE,
2367 AArch64::AEK_PROFILE,
2368 AArch64::AEK_SPE_EEF,
2369 AArch64::AEK_NMI,
2370 AArch64::AEK_HBC,
2371 AArch64::AEK_RCPC3,
2372 AArch64::AEK_BF16,
2373 AArch64::AEK_FCMA,
2374 AArch64::AEK_CRC,
2375 AArch64::AEK_DOTPROD,
2376 AArch64::AEK_FP,
2377 AArch64::AEK_I8MM,
2378 AArch64::AEK_JSCVT,
2379 AArch64::AEK_LSE,
2380 AArch64::AEK_SIMD,
2381 AArch64::AEK_PAUTH,
2382 AArch64::AEK_RAS,
2383 AArch64::AEK_RCPC,
2384 AArch64::AEK_RDM,
2385 AArch64::AEK_FPAC,
2386 AArch64::AEK_LS64,
2387 AArch64::AEK_RME,
2388 AArch64::AEK_BRBE,
2389 })
2390 },
2391 {
2392 13026,
2393 0 /* ARMV8A */,
2394 AArch64::ExtensionBitset({
2395 AArch64::AEK_SHA2,
2396 AArch64::AEK_AES,
2397 AArch64::AEK_FP,
2398 AArch64::AEK_SIMD,
2399 AArch64::AEK_PERFMON,
2400 })
2401 },
2402 {
2403 13906,
2404 0 /* ARMV8A */,
2405 AArch64::ExtensionBitset({
2406 AArch64::AEK_SHA2,
2407 AArch64::AEK_AES,
2408 AArch64::AEK_FP,
2409 AArch64::AEK_SIMD,
2410 AArch64::AEK_PERFMON,
2411 AArch64::AEK_CRC,
2412 AArch64::AEK_RDM,
2413 AArch64::AEK_PAN,
2414 AArch64::AEK_LOR,
2415 AArch64::AEK_VH,
2416 })
2417 },
2418 {
2419 13916,
2420 3 /* ARMV8_2A */,
2421 AArch64::ExtensionBitset({
2422 AArch64::AEK_SHA2,
2423 AArch64::AEK_AES,
2424 AArch64::AEK_FP,
2425 AArch64::AEK_SIMD,
2426 AArch64::AEK_PERFMON,
2427 AArch64::AEK_FP16,
2428 AArch64::AEK_CRC,
2429 AArch64::AEK_LSE,
2430 AArch64::AEK_RAS,
2431 AArch64::AEK_RDM,
2432 })
2433 },
2434 {
2435 13062,
2436 4 /* ARMV8_3A */,
2437 AArch64::ExtensionBitset({
2438 AArch64::AEK_SHA2,
2439 AArch64::AEK_AES,
2440 AArch64::AEK_FP,
2441 AArch64::AEK_SIMD,
2442 AArch64::AEK_PERFMON,
2443 AArch64::AEK_FP16,
2444 AArch64::AEK_FCMA,
2445 AArch64::AEK_CRC,
2446 AArch64::AEK_JSCVT,
2447 AArch64::AEK_LSE,
2448 AArch64::AEK_PAUTH,
2449 AArch64::AEK_RAS,
2450 AArch64::AEK_RCPC,
2451 AArch64::AEK_RDM,
2452 })
2453 },
2454 {
2455 13090,
2456 5 /* ARMV8_4A */,
2457 AArch64::ExtensionBitset({
2458 AArch64::AEK_SHA2,
2459 AArch64::AEK_AES,
2460 AArch64::AEK_FP,
2461 AArch64::AEK_SIMD,
2462 AArch64::AEK_PERFMON,
2463 AArch64::AEK_FP16,
2464 AArch64::AEK_FP16FML,
2465 AArch64::AEK_SHA3,
2466 AArch64::AEK_FCMA,
2467 AArch64::AEK_CRC,
2468 AArch64::AEK_JSCVT,
2469 AArch64::AEK_LSE,
2470 AArch64::AEK_PAUTH,
2471 AArch64::AEK_RAS,
2472 AArch64::AEK_RCPC,
2473 AArch64::AEK_RDM,
2474 AArch64::AEK_DOTPROD,
2475 })
2476 },
2477 {
2478 13127,
2479 5 /* ARMV8_4A */,
2480 AArch64::ExtensionBitset({
2481 AArch64::AEK_SHA2,
2482 AArch64::AEK_AES,
2483 AArch64::AEK_FP,
2484 AArch64::AEK_SIMD,
2485 AArch64::AEK_PERFMON,
2486 AArch64::AEK_FP16,
2487 AArch64::AEK_FP16FML,
2488 AArch64::AEK_SHA3,
2489 AArch64::AEK_ALTERNATIVENZCV,
2490 AArch64::AEK_FRINT3264,
2491 AArch64::AEK_SPECRESTRICT,
2492 AArch64::AEK_SSBS,
2493 AArch64::AEK_SB,
2494 AArch64::AEK_PREDRES,
2495 AArch64::AEK_CCDP,
2496 AArch64::AEK_FCMA,
2497 AArch64::AEK_CRC,
2498 AArch64::AEK_JSCVT,
2499 AArch64::AEK_LSE,
2500 AArch64::AEK_PAUTH,
2501 AArch64::AEK_RAS,
2502 AArch64::AEK_RCPC,
2503 AArch64::AEK_RDM,
2504 AArch64::AEK_DOTPROD,
2505 })
2506 },
2507 {
2508 13146,
2509 7 /* ARMV8_6A */,
2510 AArch64::ExtensionBitset({
2511 AArch64::AEK_SHA2,
2512 AArch64::AEK_AES,
2513 AArch64::AEK_FP,
2514 AArch64::AEK_SIMD,
2515 AArch64::AEK_PERFMON,
2516 AArch64::AEK_SHA3,
2517 AArch64::AEK_FP16,
2518 AArch64::AEK_FP16FML,
2519 AArch64::AEK_FCMA,
2520 AArch64::AEK_CRC,
2521 AArch64::AEK_JSCVT,
2522 AArch64::AEK_LSE,
2523 AArch64::AEK_PAUTH,
2524 AArch64::AEK_FPAC,
2525 AArch64::AEK_RAS,
2526 AArch64::AEK_RCPC,
2527 AArch64::AEK_RDM,
2528 AArch64::AEK_BF16,
2529 AArch64::AEK_DOTPROD,
2530 AArch64::AEK_I8MM,
2531 AArch64::AEK_SSBS,
2532 })
2533 },
2534 {
2535 13165,
2536 7 /* ARMV8_6A */,
2537 AArch64::ExtensionBitset({
2538 AArch64::AEK_SHA2,
2539 AArch64::AEK_AES,
2540 AArch64::AEK_FP,
2541 AArch64::AEK_SIMD,
2542 AArch64::AEK_PERFMON,
2543 AArch64::AEK_SHA3,
2544 AArch64::AEK_FP16,
2545 AArch64::AEK_FP16FML,
2546 AArch64::AEK_FCMA,
2547 AArch64::AEK_CRC,
2548 AArch64::AEK_JSCVT,
2549 AArch64::AEK_LSE,
2550 AArch64::AEK_PAUTH,
2551 AArch64::AEK_FPAC,
2552 AArch64::AEK_RAS,
2553 AArch64::AEK_RCPC,
2554 AArch64::AEK_RDM,
2555 AArch64::AEK_BF16,
2556 AArch64::AEK_DOTPROD,
2557 AArch64::AEK_I8MM,
2558 AArch64::AEK_SSBS,
2559 })
2560 },
2561 {
2562 13926,
2563 7 /* ARMV8_6A */,
2564 AArch64::ExtensionBitset({
2565 AArch64::AEK_SHA2,
2566 AArch64::AEK_AES,
2567 AArch64::AEK_FP,
2568 AArch64::AEK_SIMD,
2569 AArch64::AEK_PERFMON,
2570 AArch64::AEK_SHA3,
2571 AArch64::AEK_FP16,
2572 AArch64::AEK_FP16FML,
2573 AArch64::AEK_FCMA,
2574 AArch64::AEK_CRC,
2575 AArch64::AEK_JSCVT,
2576 AArch64::AEK_LSE,
2577 AArch64::AEK_PAUTH,
2578 AArch64::AEK_FPAC,
2579 AArch64::AEK_RAS,
2580 AArch64::AEK_RCPC,
2581 AArch64::AEK_RDM,
2582 AArch64::AEK_BF16,
2583 AArch64::AEK_DOTPROD,
2584 AArch64::AEK_I8MM,
2585 AArch64::AEK_SSBS,
2586 })
2587 },
2588 {
2589 13204,
2590 8 /* ARMV8_7A */,
2591 AArch64::ExtensionBitset({
2592 AArch64::AEK_SHA2,
2593 AArch64::AEK_FP,
2594 AArch64::AEK_SIMD,
2595 AArch64::AEK_PERFMON,
2596 AArch64::AEK_SHA3,
2597 AArch64::AEK_FP16,
2598 AArch64::AEK_FP16FML,
2599 AArch64::AEK_AES,
2600 AArch64::AEK_BF16,
2601 AArch64::AEK_SME,
2602 AArch64::AEK_SME2,
2603 AArch64::AEK_SMEF64F64,
2604 AArch64::AEK_SMEI16I64,
2605 AArch64::AEK_FCMA,
2606 AArch64::AEK_CRC,
2607 AArch64::AEK_JSCVT,
2608 AArch64::AEK_LSE,
2609 AArch64::AEK_PAUTH,
2610 AArch64::AEK_FPAC,
2611 AArch64::AEK_RAS,
2612 AArch64::AEK_RCPC,
2613 AArch64::AEK_RDM,
2614 AArch64::AEK_DOTPROD,
2615 AArch64::AEK_I8MM,
2616 })
2617 },
2618 {
2619 13223,
2620 8 /* ARMV8_7A */,
2621 AArch64::ExtensionBitset({
2622 AArch64::AEK_SHA2,
2623 AArch64::AEK_FP,
2624 AArch64::AEK_SIMD,
2625 AArch64::AEK_PERFMON,
2626 AArch64::AEK_SHA3,
2627 AArch64::AEK_FP16,
2628 AArch64::AEK_FP16FML,
2629 AArch64::AEK_AES,
2630 AArch64::AEK_BF16,
2631 AArch64::AEK_WFXT,
2632 AArch64::AEK_SME,
2633 AArch64::AEK_SME2,
2634 AArch64::AEK_SMEF64F64,
2635 AArch64::AEK_SMEI16I64,
2636 AArch64::AEK_FCMA,
2637 AArch64::AEK_CRC,
2638 AArch64::AEK_JSCVT,
2639 AArch64::AEK_LSE,
2640 AArch64::AEK_PAUTH,
2641 AArch64::AEK_FPAC,
2642 AArch64::AEK_RAS,
2643 AArch64::AEK_RCPC,
2644 AArch64::AEK_RDM,
2645 AArch64::AEK_DOTPROD,
2646 AArch64::AEK_I8MM,
2647 AArch64::AEK_MTE,
2648 AArch64::AEK_CSSC,
2649 AArch64::AEK_HBC,
2650 AArch64::AEK_SME2P1,
2651 AArch64::AEK_SMEB16B16,
2652 AArch64::AEK_SMEF16F16,
2653 AArch64::AEK_SPECRES2,
2654 })
2655 },
2656 {
2657 13936,
2658 3 /* ARMV8_2A */,
2659 AArch64::ExtensionBitset({
2660 AArch64::AEK_FP,
2661 AArch64::AEK_SIMD,
2662 AArch64::AEK_SHA2,
2663 AArch64::AEK_PERFMON,
2664 AArch64::AEK_FP16,
2665 AArch64::AEK_SVE,
2666 AArch64::AEK_FCMA,
2667 AArch64::AEK_AES,
2668 AArch64::AEK_CRC,
2669 AArch64::AEK_LSE,
2670 AArch64::AEK_RAS,
2671 AArch64::AEK_RDM,
2672 })
2673 },
2674 {
2675 13942,
2676 14 /* ARMV9_3A */,
2677 AArch64::ExtensionBitset({
2678 AArch64::AEK_PERFMON,
2679 AArch64::AEK_CCIDX,
2680 AArch64::AEK_FPAC,
2681 AArch64::AEK_FP16FML,
2682 AArch64::AEK_RAND,
2683 AArch64::AEK_SSBS,
2684 AArch64::AEK_LS64,
2685 AArch64::AEK_CLRBHB,
2686 AArch64::AEK_SPECRES2,
2687 AArch64::AEK_SVEAES,
2688 AArch64::AEK_SVESM4,
2689 AArch64::AEK_SVESHA3,
2690 AArch64::AEK_SVE2,
2691 AArch64::AEK_SVEBITPERM,
2692 AArch64::AEK_ETE,
2693 AArch64::AEK_MEC,
2694 AArch64::AEK_FAMINMAX,
2695 AArch64::AEK_FP8DOT2,
2696 AArch64::AEK_FP8DOT4,
2697 AArch64::AEK_FP8FMA,
2698 AArch64::AEK_LUT,
2699 })
2700 },
2701 {
2702 13957,
2703 3 /* ARMV8_2A */,
2704 AArch64::ExtensionBitset({
2705 AArch64::AEK_SIMD,
2706 AArch64::AEK_SHA2,
2707 AArch64::AEK_AES,
2708 AArch64::AEK_FP16,
2709 AArch64::AEK_CRC,
2710 AArch64::AEK_LSE,
2711 AArch64::AEK_RAS,
2712 AArch64::AEK_RDM,
2713 AArch64::AEK_FP,
2714 })
2715 },
2716 {
2717 13964,
2718 13 /* ARMV9_2A */,
2719 AArch64::ExtensionBitset({
2720 AArch64::AEK_BRBE,
2721 AArch64::AEK_CCIDX,
2722 AArch64::AEK_CHK,
2723 AArch64::AEK_ETE,
2724 AArch64::AEK_FAMINMAX,
2725 AArch64::AEK_FP16FML,
2726 AArch64::AEK_FP8DOT2,
2727 AArch64::AEK_FP8DOT4,
2728 AArch64::AEK_FP8FMA,
2729 AArch64::AEK_FPAC,
2730 AArch64::AEK_LS64,
2731 AArch64::AEK_LUT,
2732 AArch64::AEK_MEC,
2733 AArch64::AEK_MTE,
2734 AArch64::AEK_PERFMON,
2735 AArch64::AEK_RAND,
2736 AArch64::AEK_PROFILE,
2737 AArch64::AEK_SPE_EEF,
2738 AArch64::AEK_SSBS,
2739 AArch64::AEK_SVEBITPERM,
2740 AArch64::AEK_SVESHA3,
2741 AArch64::AEK_SVESM4,
2742 AArch64::AEK_SVEAES,
2743 AArch64::AEK_SVE2,
2744 })
2745 },
2746 {
2747 13972,
2748 13 /* ARMV9_2A */,
2749 AArch64::ExtensionBitset({
2750 AArch64::AEK_BRBE,
2751 AArch64::AEK_CCIDX,
2752 AArch64::AEK_CHK,
2753 AArch64::AEK_ETE,
2754 AArch64::AEK_FAMINMAX,
2755 AArch64::AEK_FP16FML,
2756 AArch64::AEK_FP8DOT2,
2757 AArch64::AEK_FP8DOT4,
2758 AArch64::AEK_FP8FMA,
2759 AArch64::AEK_FPAC,
2760 AArch64::AEK_LS64,
2761 AArch64::AEK_LUT,
2762 AArch64::AEK_MEC,
2763 AArch64::AEK_MTE,
2764 AArch64::AEK_PERFMON,
2765 AArch64::AEK_RAND,
2766 AArch64::AEK_PROFILE,
2767 AArch64::AEK_SPE_EEF,
2768 AArch64::AEK_SSBS,
2769 AArch64::AEK_SVEBITPERM,
2770 AArch64::AEK_SVESHA3,
2771 AArch64::AEK_SVESM4,
2772 AArch64::AEK_SVEAES,
2773 AArch64::AEK_SVE2,
2774 })
2775 },
2776 {
2777 13978,
2778 7 /* ARMV8_6A */,
2779 AArch64::ExtensionBitset({
2780 AArch64::AEK_SIMD,
2781 AArch64::AEK_PERFMON,
2782 AArch64::AEK_SSBS,
2783 AArch64::AEK_RAND,
2784 AArch64::AEK_SB,
2785 AArch64::AEK_SHA2,
2786 AArch64::AEK_SHA3,
2787 AArch64::AEK_AES,
2788 AArch64::AEK_FP16,
2789 AArch64::AEK_BF16,
2790 AArch64::AEK_FCMA,
2791 AArch64::AEK_CRC,
2792 AArch64::AEK_DOTPROD,
2793 AArch64::AEK_FP,
2794 AArch64::AEK_I8MM,
2795 AArch64::AEK_JSCVT,
2796 AArch64::AEK_CCIDX,
2797 AArch64::AEK_LSE,
2798 AArch64::AEK_PAUTH,
2799 AArch64::AEK_RAS,
2800 AArch64::AEK_RCPC,
2801 AArch64::AEK_RDM,
2802 })
2803 },
2804 {
2805 13986,
2806 7 /* ARMV8_6A */,
2807 AArch64::ExtensionBitset({
2808 AArch64::AEK_SIMD,
2809 AArch64::AEK_PERFMON,
2810 AArch64::AEK_MTE,
2811 AArch64::AEK_SSBS,
2812 AArch64::AEK_RAND,
2813 AArch64::AEK_SB,
2814 AArch64::AEK_SM4,
2815 AArch64::AEK_SHA2,
2816 AArch64::AEK_SHA3,
2817 AArch64::AEK_AES,
2818 AArch64::AEK_FP16,
2819 AArch64::AEK_BF16,
2820 AArch64::AEK_FCMA,
2821 AArch64::AEK_CRC,
2822 AArch64::AEK_DOTPROD,
2823 AArch64::AEK_FP,
2824 AArch64::AEK_I8MM,
2825 AArch64::AEK_JSCVT,
2826 AArch64::AEK_LSE,
2827 AArch64::AEK_PAUTH,
2828 AArch64::AEK_RAS,
2829 AArch64::AEK_RCPC,
2830 AArch64::AEK_CCIDX,
2831 AArch64::AEK_RDM,
2832 })
2833 },
2834 {
2835 13995,
2836 8 /* ARMV8_7A */,
2837 AArch64::ExtensionBitset({
2838 AArch64::AEK_SIMD,
2839 AArch64::AEK_PERFMON,
2840 AArch64::AEK_MTE,
2841 AArch64::AEK_SSBS,
2842 AArch64::AEK_RAND,
2843 AArch64::AEK_SB,
2844 AArch64::AEK_SM4,
2845 AArch64::AEK_SHA2,
2846 AArch64::AEK_SHA3,
2847 AArch64::AEK_AES,
2848 AArch64::AEK_CSSC,
2849 AArch64::AEK_WFXT,
2850 AArch64::AEK_FP16,
2851 AArch64::AEK_BF16,
2852 AArch64::AEK_FCMA,
2853 AArch64::AEK_CRC,
2854 AArch64::AEK_DOTPROD,
2855 AArch64::AEK_FP,
2856 AArch64::AEK_I8MM,
2857 AArch64::AEK_JSCVT,
2858 AArch64::AEK_LSE,
2859 AArch64::AEK_PAUTH,
2860 AArch64::AEK_RAS,
2861 AArch64::AEK_RCPC,
2862 AArch64::AEK_CCIDX,
2863 AArch64::AEK_RDM,
2864 })
2865 },
2866 {
2867 14004,
2868 13 /* ARMV9_2A */,
2869 AArch64::ExtensionBitset({
2870 AArch64::AEK_SIMD,
2871 AArch64::AEK_CSSC,
2872 AArch64::AEK_CCIDX,
2873 AArch64::AEK_FP8FMA,
2874 AArch64::AEK_FAMINMAX,
2875 AArch64::AEK_LUT,
2876 AArch64::AEK_SVEAES,
2877 AArch64::AEK_SVESM4,
2878 AArch64::AEK_SVESHA3,
2879 AArch64::AEK_SVE2,
2880 AArch64::AEK_SVEB16B16,
2881 AArch64::AEK_MTE,
2882 AArch64::AEK_FP16FML,
2883 AArch64::AEK_SSBS,
2884 AArch64::AEK_RAND,
2885 AArch64::AEK_PERFMON,
2886 })
2887 },
2888 {
2889 14013,
2890 7 /* ARMV8_6A */,
2891 AArch64::ExtensionBitset({
2892 AArch64::AEK_SIMD,
2893 AArch64::AEK_PERFMON,
2894 AArch64::AEK_RAND,
2895 AArch64::AEK_PAUTH,
2896 AArch64::AEK_SM4,
2897 AArch64::AEK_SHA2,
2898 AArch64::AEK_SHA3,
2899 AArch64::AEK_AES,
2900 AArch64::AEK_PROFILE,
2901 AArch64::AEK_BF16,
2902 AArch64::AEK_FCMA,
2903 AArch64::AEK_CRC,
2904 AArch64::AEK_DOTPROD,
2905 AArch64::AEK_FP,
2906 AArch64::AEK_I8MM,
2907 AArch64::AEK_SSBS,
2908 AArch64::AEK_CCIDX,
2909 AArch64::AEK_JSCVT,
2910 AArch64::AEK_LSE,
2911 AArch64::AEK_RAS,
2912 AArch64::AEK_RCPC,
2913 AArch64::AEK_RDM,
2914 })
2915 },
2916};
2917#undef EMIT_CPU_INFO
2918#endif // EMIT_CPU_INFO
2919
2920#ifdef EMIT_STRTAB
2921
2922#ifdef __GNUC__
2923#pragma GCC diagnostic push
2924#pragma GCC diagnostic ignored "-Woverlength-strings"
2925#endif
2926static constexpr char StrTabStorage[] =
2927 "\0"
2928 "aes\0"
2929 "FEAT_AES, FEAT_PMULL\0"
2930 "Enable AES support\0"
2931 "+aes\0"
2932 "-aes\0"
2933 "FEAT_FlagM2\0"
2934 "Enable alternative NZCV format for floating point comparisons\0"
2935 "+altnzcv\0"
2936 "-altnzcv\0"
2937 "FEAT_AMUv1\0"
2938 "Enable Armv8.4-A Activity Monitors extension\0"
2939 "+am\0"
2940 "-am\0"
2941 "FEAT_AMUv1p1\0"
2942 "Enable Armv8.6-A Activity Monitors Virtualization support\0"
2943 "+amvs\0"
2944 "-amvs\0"
2945 "bf16\0"
2946 "FEAT_BF16\0"
2947 "Enable BFloat16 Extension\0"
2948 "+bf16\0"
2949 "-bf16\0"
2950 "brbe\0"
2951 "FEAT_BRBE\0"
2952 "Enable Branch Record Buffer Extension\0"
2953 "+brbe\0"
2954 "-brbe\0"
2955 "bti\0"
2956 "FEAT_BTI\0"
2957 "Enable Branch Target Identification\0"
2958 "+bti\0"
2959 "-bti\0"
2960 "btie\0"
2961 "FEAT_BTIE\0"
2962 "Enable Enhanced Branch Target Identification extension\0"
2963 "+btie\0"
2964 "-btie\0"
2965 "FEAT_DPB2\0"
2966 "Enable Armv8.5-A Cache Clean to Point of Deep Persistence\0"
2967 "+ccdp\0"
2968 "-ccdp\0"
2969 "FEAT_CCIDX\0"
2970 "Enable Armv8.3-A Extend of the CCSIDR number of sets\0"
2971 "+ccidx\0"
2972 "-ccidx\0"
2973 "FEAT_DPB\0"
2974 "Enable Armv8.2-A data Cache Clean to Point of Persistence\0"
2975 "+ccpp\0"
2976 "-ccpp\0"
2977 "cflt\0"
2978 "FEAT_CFLT\0"
2979 "Enable Armv9.8-A Conditional Fault instructions\0"
2980 "+cflt\0"
2981 "-cflt\0"
2982 "FEAT_CHK\0"
2983 "Enable Armv8.0-A Check Feature Status Extension\0"
2984 "+chk\0"
2985 "-chk\0"
2986 "FEAT_CLRBHB\0"
2987 "Enable Clear BHB instruction\0"
2988 "+clrbhb\0"
2989 "-clrbhb\0"
2990 "cmpbr\0"
2991 "FEAT_CMPBR\0"
2992 "Enable Armv9.6-A base compare and branch instructions\0"
2993 "+cmpbr\0"
2994 "-cmpbr\0"
2995 "fcma\0"
2996 "FEAT_FCMA\0"
2997 "Enable Armv8.3-A Floating-point complex number support\0"
2998 "+complxnum\0"
2999 "-complxnum\0"
3000 "cpa\0"
3001 "FEAT_CPA\0"
3002 "Enable Armv9.5-A Checked Pointer Arithmetic\0"
3003 "+cpa\0"
3004 "-cpa\0"
3005 "crc\0"
3006 "FEAT_CRC32\0"
3007 "Enable Armv8.0-A CRC-32 checksum instructions\0"
3008 "+crc\0"
3009 "-crc\0"
3010 "crypto\0"
3011 "FEAT_Crypto\0"
3012 "Enable cryptographic instructions\0"
3013 "+crypto\0"
3014 "-crypto\0"
3015 "cssc\0"
3016 "FEAT_CSSC\0"
3017 "Enable Common Short Sequence Compression (CSSC) instructions\0"
3018 "+cssc\0"
3019 "-cssc\0"
3020 "d128\0"
3021 "FEAT_D128, FEAT_LVA3, FEAT_SYSREG128, FEAT_SYSINSTR128\0"
3022 "Enable Armv9.4-A 128-bit Page Table Descriptors, System Registers and instructions\0"
3023 "+d128\0"
3024 "-d128\0"
3025 "dit\0"
3026 "FEAT_DIT\0"
3027 "Enable Armv8.4-A Data Independent Timing instructions\0"
3028 "+dit\0"
3029 "-dit\0"
3030 "dotprod\0"
3031 "FEAT_DotProd\0"
3032 "Enable dot product support\0"
3033 "+dotprod\0"
3034 "-dotprod\0"
3035 "FEAT_ECV\0"
3036 "Enable enhanced counter virtualization extension\0"
3037 "+ecv\0"
3038 "-ecv\0"
3039 "FEAT_ETE\0"
3040 "Enable Embedded Trace Extension\0"
3041 "+ete\0"
3042 "-ete\0"
3043 "f16f32dot\0"
3044 "FEAT_F16F32DOT\0"
3045 "Enable Armv9.7-A Advanced SIMD half-precision dot product accumulate to single-precision\0"
3046 "+f16f32dot\0"
3047 "-f16f32dot\0"
3048 "f16f32mm\0"
3049 "FEAT_F16F32MM\0"
3050 "Enable Armv9.7-A Advanced SIMD half-precision matrix multiply-accumulate to single-precision\0"
3051 "+f16f32mm\0"
3052 "-f16f32mm\0"
3053 "f16mm\0"
3054 "FEAT_F16MM\0"
3055 "Enable Armv9.7-A non-widening half-precision matrix multiply-accumulate\0"
3056 "+f16mm\0"
3057 "-f16mm\0"
3058 "f32mm\0"
3059 "FEAT_F32MM\0"
3060 "Enable Matrix Multiply FP32 Extension\0"
3061 "+f32mm\0"
3062 "-f32mm\0"
3063 "f64mm\0"
3064 "FEAT_F64MM\0"
3065 "Enable Matrix Multiply FP64 Extension\0"
3066 "+f64mm\0"
3067 "-f64mm\0"
3068 "f8f16mm\0"
3069 "FEAT_F8F16MM\0"
3070 "Enable Armv9.6-A FP8 to Half-Precision Matrix Multiplication\0"
3071 "+f8f16mm\0"
3072 "-f8f16mm\0"
3073 "f8f32mm\0"
3074 "FEAT_F8F32MM\0"
3075 "Enable Armv9.6-A FP8 to Single-Precision Matrix Multiplication\0"
3076 "+f8f32mm\0"
3077 "-f8f32mm\0"
3078 "faminmax\0"
3079 "FEAT_FAMINMAX\0"
3080 "Enable FAMIN and FAMAX instructions\0"
3081 "+faminmax\0"
3082 "-faminmax\0"
3083 "FEAT_FGT\0"
3084 "Enable fine grained virtualization traps extension\0"
3085 "+fgt\0"
3086 "-fgt\0"
3087 "flagm\0"
3088 "FEAT_FlagM\0"
3089 "Enable Armv8.4-A Flag Manipulation instructions\0"
3090 "+flagm\0"
3091 "-flagm\0"
3092 "fp\0"
3093 "FEAT_FP\0"
3094 "Enable Armv8.0-A Floating Point Extensions\0"
3095 "+fp-armv8\0"
3096 "-fp-armv8\0"
3097 "fp16fml\0"
3098 "FEAT_FHM\0"
3099 "Enable FP16 FML instructions\0"
3100 "+fp16fml\0"
3101 "-fp16fml\0"
3102 "fp8\0"
3103 "FEAT_FP8\0"
3104 "Enable FP8 instructions\0"
3105 "+fp8\0"
3106 "-fp8\0"
3107 "fp8dot2\0"
3108 "FEAT_FP8DOT2\0"
3109 "Enable FP8 2-way dot instructions\0"
3110 "+fp8dot2\0"
3111 "-fp8dot2\0"
3112 "fp8dot4\0"
3113 "FEAT_FP8DOT4\0"
3114 "Enable FP8 4-way dot instructions\0"
3115 "+fp8dot4\0"
3116 "-fp8dot4\0"
3117 "fp8fma\0"
3118 "FEAT_FP8FMA\0"
3119 "Enable Armv9.5-A FP8 multiply-add instructions\0"
3120 "+fp8fma\0"
3121 "-fp8fma\0"
3122 "FEAT_FPAC\0"
3123 "Enable Armv8.3-A Pointer Authentication Faulting enhancement\0"
3124 "+fpac\0"
3125 "-fpac\0"
3126 "fprcvt\0"
3127 "FEAT_FPRCVT\0"
3128 "Enable Armv9.6-A base convert instructions for SIMD&FP scalar register operands of different input and output sizes\0"
3129 "+fprcvt\0"
3130 "-fprcvt\0"
3131 "FEAT_FRINTTS\0"
3132 "Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int\0"
3133 "+fptoint\0"
3134 "-fptoint\0"
3135 "fp16\0"
3136 "FEAT_FP16\0"
3137 "Enable half-precision floating-point data processing\0"
3138 "+fullfp16\0"
3139 "-fullfp16\0"
3140 "gcie\0"
3141 "FEAT_GCIE\0"
3142 "Enable GICv5 (Generic Interrupt Controller) CPU Interface Extension\0"
3143 "+gcie\0"
3144 "-gcie\0"
3145 "gcs\0"
3146 "FEAT_GCS\0"
3147 "Enable Armv9.4-A Guarded Call Stack Extension\0"
3148 "+gcs\0"
3149 "-gcs\0"
3150 "hbc\0"
3151 "FEAT_HBC\0"
3152 "Enable Armv8.8-A Hinted Conditional Branches Extension\0"
3153 "+hbc\0"
3154 "-hbc\0"
3155 "hinte\0"
3156 "FEAT_HINTE\0"
3157 "Enable extended A64 hint instruction space\0"
3158 "+hinte\0"
3159 "-hinte\0"
3160 "i8mm\0"
3161 "FEAT_I8MM\0"
3162 "Enable Matrix Multiply Int8 Extension\0"
3163 "+i8mm\0"
3164 "-i8mm\0"
3165 "ite\0"
3166 "FEAT_ITE\0"
3167 "Enable Armv9.4-A Instrumentation Extension\0"
3168 "+ite\0"
3169 "-ite\0"
3170 "jscvt\0"
3171 "FEAT_JSCVT\0"
3172 "Enable Armv8.3-A JavaScript FP conversion instructions\0"
3173 "+jsconv\0"
3174 "-jsconv\0"
3175 "FEAT_LOR\0"
3176 "Enable Armv8.1-A Limited Ordering Regions extension\0"
3177 "+lor\0"
3178 "-lor\0"
3179 "ls64\0"
3180 "FEAT_LS64, FEAT_LS64_V, FEAT_LS64_ACCDATA\0"
3181 "Enable Armv8.7-A LD64B/ST64B Accelerator Extension\0"
3182 "+ls64\0"
3183 "-ls64\0"
3184 "lsc64b\0"
3185 "FEAT_LSC64B\0"
3186 "Enable Armv9.8-A Single-copy atomic 64-byte load/store consistency extension\0"
3187 "+lsc64b\0"
3188 "-lsc64b\0"
3189 "lscp\0"
3190 "FEAT_LSCP\0"
3191 "Enable Armv9.7-A Load-acquire and store-release pair extension\0"
3192 "+lscp\0"
3193 "-lscp\0"
3194 "lse\0"
3195 "FEAT_LSE\0"
3196 "Enable Armv8.1-A Large System Extension (LSE) atomic instructions\0"
3197 "+lse\0"
3198 "-lse\0"
3199 "lse128\0"
3200 "FEAT_LSE128\0"
3201 "Enable Armv9.4-A 128-bit Atomic instructions\0"
3202 "+lse128\0"
3203 "-lse128\0"
3204 "FEAT_LSE2\0"
3205 "Enable Armv8.4-A Large System Extension 2 (LSE2) atomicity rules\0"
3206 "+lse2\0"
3207 "-lse2\0"
3208 "lsfe\0"
3209 "FEAT_LSFE\0"
3210 "Enable Armv9.6-A base Atomic floating-point in-memory instructions\0"
3211 "+lsfe\0"
3212 "-lsfe\0"
3213 "lsui\0"
3214 "FEAT_LSUI\0"
3215 "Enable Armv9.6-A unprivileged load/store instructions\0"
3216 "+lsui\0"
3217 "-lsui\0"
3218 "lut\0"
3219 "FEAT_LUT\0"
3220 "Enable Lookup Table instructions\0"
3221 "+lut\0"
3222 "-lut\0"
3223 "FEAT_MEC\0"
3224 "Enable Memory Encryption Contexts Extension\0"
3225 "+mec\0"
3226 "-mec\0"
3227 "mops\0"
3228 "FEAT_MOPS\0"
3229 "Enable Armv8.8-A memcpy and memset acceleration instructions\0"
3230 "+mops\0"
3231 "-mops\0"
3232 "mops-go\0"
3233 "FEAT_MOPS_GO\0"
3234 "Enable memset acceleration granule only\0"
3235 "+mops-go\0"
3236 "-mops-go\0"
3237 "FEAT_MPAM\0"
3238 "Enable Armv8.4-A Memory system Partitioning and Monitoring extension\0"
3239 "+mpam\0"
3240 "-mpam\0"
3241 "memtag\0"
3242 "FEAT_MTE, FEAT_MTE2\0"
3243 "Enable Memory Tagging Extension\0"
3244 "+mte\0"
3245 "-mte\0"
3246 "mtetc\0"
3247 "FEAT_MTETC\0"
3248 "Enable Virtual Memory Tagging Extension\0"
3249 "+mtetc\0"
3250 "-mtetc\0"
3251 "simd\0"
3252 "FEAT_AdvSIMD\0"
3253 "Enable Advanced SIMD instructions\0"
3254 "+neon\0"
3255 "-neon\0"
3256 "FEAT_NMI, FEAT_GICv3_NMI\0"
3257 "Enable Armv8.8-A Non-maskable Interrupts\0"
3258 "+nmi\0"
3259 "-nmi\0"
3260 "FEAT_NV, FEAT_NV2\0"
3261 "Enable Armv8.4-A Nested Virtualization Enchancement\0"
3262 "+nv\0"
3263 "-nv\0"
3264 "occmo\0"
3265 "FEAT_OCCMO\0"
3266 "Enable Armv9.6-A Outer cacheable cache maintenance operations\0"
3267 "+occmo\0"
3268 "-occmo\0"
3269 "FEAT_PAN\0"
3270 "Enable Armv8.1-A Privileged Access-Never extension\0"
3271 "+pan\0"
3272 "-pan\0"
3273 "FEAT_PAN2\0"
3274 "Enable Armv8.2-A PAN s1e1R and s1e1W Variants\0"
3275 "+pan-rwv\0"
3276 "-pan-rwv\0"
3277 "pauth\0"
3278 "FEAT_PAuth\0"
3279 "Enable Armv8.3-A Pointer Authentication extension\0"
3280 "+pauth\0"
3281 "-pauth\0"
3282 "pauth-lr\0"
3283 "FEAT_PAuth_LR\0"
3284 "Enable Armv9.5-A PAC enhancements\0"
3285 "+pauth-lr\0"
3286 "-pauth-lr\0"
3287 "pmuv3\0"
3288 "FEAT_PMUv3\0"
3289 "Enable Armv8.0-A PMUv3 Performance Monitors extension\0"
3290 "+perfmon\0"
3291 "-perfmon\0"
3292 "poe2\0"
3293 "FEAT_S1POE2\0"
3294 "Enable Stage 1 Permission Overlays Extension 2 instructions\0"
3295 "+poe2\0"
3296 "-poe2\0"
3297 "pops\0"
3298 "FEAT_PoPS\0"
3299 "Enable Armv9.6-A Point Of Physical Storage (PoPS) DC instructions\0"
3300 "+pops\0"
3301 "-pops\0"
3302 "predres\0"
3303 "FEAT_SPECRES\0"
3304 "Enable Armv8.5-A execution and data prediction invalidation instructions\0"
3305 "+predres\0"
3306 "-predres\0"
3307 "FEAT_PRFMSLC\0"
3308 "Enable SLC target for PRFM instruction\0"
3309 "+prfm-slc-target\0"
3310 "-prfm-slc-target\0"
3311 "rng\0"
3312 "FEAT_RNG\0"
3313 "Enable Random Number generation instructions\0"
3314 "+rand\0"
3315 "-rand\0"
3316 "ras\0"
3317 "FEAT_RAS, FEAT_RASv1p1\0"
3318 "Enable Armv8.0-A Reliability, Availability and Serviceability Extensions\0"
3319 "+ras\0"
3320 "-ras\0"
3321 "rasv2\0"
3322 "FEAT_RASv2\0"
3323 "Enable Armv8.9-A Reliability, Availability and Serviceability Extensions\0"
3324 "+rasv2\0"
3325 "-rasv2\0"
3326 "rcpc\0"
3327 "FEAT_LRCPC\0"
3328 "Enable support for RCPC extension\0"
3329 "+rcpc\0"
3330 "-rcpc\0"
3331 "FEAT_LRCPC2\0"
3332 "Enable Armv8.4-A RCPC instructions with Immediate Offsets\0"
3333 "+rcpc-immo\0"
3334 "-rcpc-immo\0"
3335 "rcpc3\0"
3336 "FEAT_LRCPC3\0"
3337 "Enable Armv8.9-A RCPC instructions for A64 and Advanced SIMD and floating-point instruction set\0"
3338 "+rcpc3\0"
3339 "-rcpc3\0"
3340 "rdm\0"
3341 "rdma\0"
3342 "FEAT_RDM\0"
3343 "Enable Armv8.1-A Rounding Double Multiply Add/Subtract instructions\0"
3344 "+rdm\0"
3345 "-rdm\0"
3346 "FEAT_RME\0"
3347 "Enable Realm Management Extension\0"
3348 "+rme\0"
3349 "-rme\0"
3350 "sb\0"
3351 "FEAT_SB\0"
3352 "Enable Armv8.5-A Speculation Barrier\0"
3353 "+sb\0"
3354 "-sb\0"
3355 "FEAT_SEL2\0"
3356 "Enable Armv8.4-A Secure Exception Level 2 extension\0"
3357 "+sel2\0"
3358 "-sel2\0"
3359 "sha2\0"
3360 "FEAT_SHA1, FEAT_SHA256\0"
3361 "Enable SHA1 and SHA256 support\0"
3362 "+sha2\0"
3363 "-sha2\0"
3364 "sha3\0"
3365 "FEAT_SHA3, FEAT_SHA512\0"
3366 "Enable SHA512 and SHA3 support\0"
3367 "+sha3\0"
3368 "-sha3\0"
3369 "sm4\0"
3370 "FEAT_SM4, FEAT_SM3\0"
3371 "Enable SM3 and SM4 support\0"
3372 "+sm4\0"
3373 "-sm4\0"
3374 "sme\0"
3375 "FEAT_SME\0"
3376 "Enable Scalable Matrix Extension (SME)\0"
3377 "+sme\0"
3378 "-sme\0"
3379 "sme-b16b16\0"
3380 "FEAT_SME_B16B16\0"
3381 "Enable SME2.1 ZA-targeting non-widening BFloat16 instructions\0"
3382 "+sme-b16b16\0"
3383 "-sme-b16b16\0"
3384 "sme-f16f16\0"
3385 "FEAT_SME_F16F16\0"
3386 "Enable SME non-widening Float16 instructions\0"
3387 "+sme-f16f16\0"
3388 "-sme-f16f16\0"
3389 "sme-f64f64\0"
3390 "FEAT_SME_F64F64\0"
3391 "Enable Scalable Matrix Extension (SME) F64F64 instructions\0"
3392 "+sme-f64f64\0"
3393 "-sme-f64f64\0"
3394 "sme-f8f16\0"
3395 "FEAT_SME_F8F16\0"
3396 "Enable Scalable Matrix Extension (SME) F8F16 instructions\0"
3397 "+sme-f8f16\0"
3398 "-sme-f8f16\0"
3399 "sme-f8f32\0"
3400 "FEAT_SME_F8F32\0"
3401 "Enable Scalable Matrix Extension (SME) F8F32 instructions\0"
3402 "+sme-f8f32\0"
3403 "-sme-f8f32\0"
3404 "sme-fa64\0"
3405 "FEAT_SME_FA64\0"
3406 "Enable the full A64 instruction set in streaming SVE mode\0"
3407 "+sme-fa64\0"
3408 "-sme-fa64\0"
3409 "sme-i16i64\0"
3410 "FEAT_SME_I16I64\0"
3411 "Enable Scalable Matrix Extension (SME) I16I64 instructions\0"
3412 "+sme-i16i64\0"
3413 "-sme-i16i64\0"
3414 "sme-lutv2\0"
3415 "FEAT_SME_LUTv2\0"
3416 "Enable Scalable Matrix Extension (SME) LUTv2 instructions\0"
3417 "+sme-lutv2\0"
3418 "-sme-lutv2\0"
3419 "sme-mop4\0"
3420 "FEAT_SME_MOP4\0"
3421 "Enable SME Quarter-tile outer product instructions\0"
3422 "+sme-mop4\0"
3423 "-sme-mop4\0"
3424 "sme-tmop\0"
3425 "FEAT_SME_TMOP\0"
3426 "Enable SME Structured sparsity outer product instructions.\0"
3427 "+sme-tmop\0"
3428 "-sme-tmop\0"
3429 "sme2\0"
3430 "FEAT_SME2\0"
3431 "Enable Scalable Matrix Extension 2 (SME2) instructions\0"
3432 "+sme2\0"
3433 "-sme2\0"
3434 "sme2p1\0"
3435 "FEAT_SME2p1\0"
3436 "Enable Scalable Matrix Extension 2.1 instructions\0"
3437 "+sme2p1\0"
3438 "-sme2p1\0"
3439 "sme2p2\0"
3440 "FEAT_SME2p2\0"
3441 "Enable Armv9.6-A Scalable Matrix Extension 2.2 instructions\0"
3442 "+sme2p2\0"
3443 "-sme2p2\0"
3444 "sme2p3\0"
3445 "FEAT_SME2p3\0"
3446 "Enable Armv9.7-A Scalable Matrix Extension 2.3 instructions\0"
3447 "+sme2p3\0"
3448 "-sme2p3\0"
3449 "profile\0"
3450 "FEAT_SPE\0"
3451 "Enable Statistical Profiling extension\0"
3452 "+spe\0"
3453 "-spe\0"
3454 "FEAT_SPEv1p2\0"
3455 "Enable extra register in the Statistical Profiling Extension\0"
3456 "+spe-eef\0"
3457 "-spe-eef\0"
3458 "predres2\0"
3459 "FEAT_SPECRES2\0"
3460 "Enable Speculation Restriction Instruction\0"
3461 "+specres2\0"
3462 "-specres2\0"
3463 "FEAT_CSV2_2\0"
3464 "Enable architectural speculation restriction\0"
3465 "+specrestrict\0"
3466 "-specrestrict\0"
3467 "ssbs\0"
3468 "FEAT_SSBS, FEAT_SSBS2\0"
3469 "Enable Speculative Store Bypass Safe bit\0"
3470 "+ssbs\0"
3471 "-ssbs\0"
3472 "ssve-aes\0"
3473 "FEAT_SSVE_AES\0"
3474 "Enable Armv9.6-A SVE AES support in streaming SVE mode\0"
3475 "+ssve-aes\0"
3476 "-ssve-aes\0"
3477 "ssve-bitperm\0"
3478 "FEAT_SSVE_BitPerm\0"
3479 "Enable Armv9.6-A SVE BitPerm support in streaming SVE mode\0"
3480 "+ssve-bitperm\0"
3481 "-ssve-bitperm\0"
3482 "ssve-fexpa\0"
3483 "FEAT_SSVE_FEXPA\0"
3484 "Enable SVE FEXPA instruction in Streaming SVE mode\0"
3485 "+ssve-fexpa\0"
3486 "-ssve-fexpa\0"
3487 "ssve-fp8dot2\0"
3488 "FEAT_SSVE_FP8DOT2\0"
3489 "Enable SVE2 FP8 2-way dot product instructions\0"
3490 "+ssve-fp8dot2\0"
3491 "-ssve-fp8dot2\0"
3492 "ssve-fp8dot4\0"
3493 "FEAT_SSVE_FP8DOT4\0"
3494 "Enable SVE2 FP8 4-way dot product instructions\0"
3495 "+ssve-fp8dot4\0"
3496 "-ssve-fp8dot4\0"
3497 "ssve-fp8fma\0"
3498 "FEAT_SSVE_FP8FMA\0"
3499 "Enable SVE2 FP8 multiply-add instructions\0"
3500 "+ssve-fp8fma\0"
3501 "-ssve-fp8fma\0"
3502 "sve\0"
3503 "FEAT_SVE\0"
3504 "Enable Scalable Vector Extension (SVE) instructions\0"
3505 "+sve\0"
3506 "-sve\0"
3507 "sve-aes\0"
3508 "FEAT_SVE_AES, FEAT_SVE_PMULL128\0"
3509 "Enable SVE AES and quadword SVE polynomial multiply instructions\0"
3510 "+sve-aes\0"
3511 "-sve-aes\0"
3512 "sve-aes2\0"
3513 "FEAT_SVE_AES2\0"
3514 "Enable Armv9.6-A SVE multi-vector AES and multi-vector quadword polynomial multiply instructions\0"
3515 "+sve-aes2\0"
3516 "-sve-aes2\0"
3517 "sve-b16b16\0"
3518 "FEAT_SVE_B16B16\0"
3519 "Enable SVE2 non-widening and SME2 Z-targeting non-widening BFloat16 instructions\0"
3520 "+sve-b16b16\0"
3521 "-sve-b16b16\0"
3522 "sve-b16mm\0"
3523 "FEAT_SVE_B16MM\0"
3524 "Enable Armv9.7-A SVE non-widening BFloat16 matrix multiply-accumulate\0"
3525 "+sve-b16mm\0"
3526 "-sve-b16mm\0"
3527 "sve-bfscale\0"
3528 "FEAT_SVE_BFSCALE\0"
3529 "Enable Armv9.6-A SVE BFloat16 scaling instructions\0"
3530 "+sve-bfscale\0"
3531 "-sve-bfscale\0"
3532 "sve-bitperm\0"
3533 "FEAT_SVE_BitPerm\0"
3534 "Enable bit permutation SVE2 instructions\0"
3535 "+sve-bitperm\0"
3536 "-sve-bitperm\0"
3537 "sve-f16f32mm\0"
3538 "FEAT_SVE_F16F32MM\0"
3539 "Enable Armv9.6-A FP16 to FP32 Matrix Multiply instructions\0"
3540 "+sve-f16f32mm\0"
3541 "-sve-f16f32mm\0"
3542 "sve-sha3\0"
3543 "FEAT_SVE_SHA3\0"
3544 "Enable SVE SHA3 instructions\0"
3545 "+sve-sha3\0"
3546 "-sve-sha3\0"
3547 "sve-sm4\0"
3548 "FEAT_SVE_SM4\0"
3549 "Enable SVE SM4 instructions\0"
3550 "+sve-sm4\0"
3551 "-sve-sm4\0"
3552 "sve2\0"
3553 "FEAT_SVE2\0"
3554 "Enable Scalable Vector Extension 2 (SVE2) instructions\0"
3555 "+sve2\0"
3556 "-sve2\0"
3557 "sve2-aes\0"
3558 "Shorthand for +sve2+sve-aes\0"
3559 "+sve2-aes\0"
3560 "-sve2-aes\0"
3561 "sve2-bitperm\0"
3562 "Shorthand for +sve2+sve-bitperm\0"
3563 "+sve2-bitperm\0"
3564 "-sve2-bitperm\0"
3565 "sve2-sha3\0"
3566 "Shorthand for +sve2+sve-sha3\0"
3567 "+sve2-sha3\0"
3568 "-sve2-sha3\0"
3569 "sve2-sm4\0"
3570 "Shorthand for +sve2+sve-sm4\0"
3571 "+sve2-sm4\0"
3572 "-sve2-sm4\0"
3573 "sve2p1\0"
3574 "FEAT_SVE2p1\0"
3575 "Enable Scalable Vector Extension 2.1 instructions\0"
3576 "+sve2p1\0"
3577 "-sve2p1\0"
3578 "sve2p2\0"
3579 "FEAT_SVE2p2\0"
3580 "Enable Armv9.6-A Scalable Vector Extension 2.2 instructions\0"
3581 "+sve2p2\0"
3582 "-sve2p2\0"
3583 "sve2p3\0"
3584 "FEAT_SVE2p3\0"
3585 "Enable Armv9.7-A Scalable Vector Extension 2.3 instructions\0"
3586 "+sve2p3\0"
3587 "-sve2p3\0"
3588 "tev\0"
3589 "FEAT_TEV\0"
3590 "Enable TIndex Exception-like Vector instructions\0"
3591 "+tev\0"
3592 "-tev\0"
3593 "the\0"
3594 "FEAT_THE\0"
3595 "Enable Armv8.9-A Translation Hardening Extension\0"
3596 "+the\0"
3597 "-the\0"
3598 "FEAT_TLBIOS, FEAT_TLBIRANGE\0"
3599 "Enable Armv8.4-A TLB Range and Maintenance instructions\0"
3600 "+tlb-rmi\0"
3601 "-tlb-rmi\0"
3602 "tlbid\0"
3603 "FEAT_TLBID\0"
3604 "Enable Armv9.7-A TLBI Domains extension\0"
3605 "+tlbid\0"
3606 "-tlbid\0"
3607 "tlbiw\0"
3608 "FEAT_TLBIW\0"
3609 "Enable Armv9.5-A TLBI VMALL for Dirty State\0"
3610 "+tlbiw\0"
3611 "-tlbiw\0"
3612 "FEAT_TRF\0"
3613 "Enable Armv8.4-A Trace extension\0"
3614 "+tracev8.4\0"
3615 "-tracev8.4\0"
3616 "FEAT_TRBE\0"
3617 "Enable Trace Buffer Extension\0"
3618 "+trbe\0"
3619 "-trbe\0"
3620 "FEAT_UAO\0"
3621 "Enable Armv8.2-A UAO PState\0"
3622 "+uaops\0"
3623 "-uaops\0"
3624 "FEAT_VHE\0"
3625 "Enable Armv8.1-A Virtual Host extension\0"
3626 "+vh\0"
3627 "-vh\0"
3628 "wfxt\0"
3629 "FEAT_WFxT\0"
3630 "Enable Armv8.7-A WFET and WFIT instruction\0"
3631 "+wfxt\0"
3632 "-wfxt\0"
3633 "FEAT_XS\0"
3634 "Enable Armv8.7-A limited-TLB-maintenance instruction\0"
3635 "+xs\0"
3636 "-xs\0"
3637 "armv8-a\0"
3638 "+v8a\0"
3639 "armv8-r\0"
3640 "+v8r\0"
3641 "armv8.1-a\0"
3642 "+v8.1a\0"
3643 "armv8.2-a\0"
3644 "+v8.2a\0"
3645 "armv8.3-a\0"
3646 "+v8.3a\0"
3647 "armv8.4-a\0"
3648 "+v8.4a\0"
3649 "armv8.5-a\0"
3650 "+v8.5a\0"
3651 "armv8.6-a\0"
3652 "+v8.6a\0"
3653 "armv8.7-a\0"
3654 "+v8.7a\0"
3655 "armv8.8-a\0"
3656 "+v8.8a\0"
3657 "armv8.9-a\0"
3658 "+v8.9a\0"
3659 "armv9-a\0"
3660 "+v9a\0"
3661 "armv9.1-a\0"
3662 "+v9.1a\0"
3663 "armv9.2-a\0"
3664 "+v9.2a\0"
3665 "armv9.3-a\0"
3666 "+v9.3a\0"
3667 "armv9.4-a\0"
3668 "+v9.4a\0"
3669 "armv9.5-a\0"
3670 "+v9.5a\0"
3671 "armv9.6-a\0"
3672 "+v9.6a\0"
3673 "armv9.7-a\0"
3674 "+v9.7a\0"
3675 "armv9.8-a\0"
3676 "+v9.8a\0"
3677 "c2-pro\0"
3678 "c1-pro\0"
3679 "cobalt-100\0"
3680 "neoverse-n2\0"
3681 "armagicpu\0"
3682 "neoverse-v3ae\0"
3683 "cyclone\0"
3684 "apple-a7\0"
3685 "apple-a8\0"
3686 "apple-a9\0"
3687 "apple-s4\0"
3688 "apple-a12\0"
3689 "apple-s5\0"
3690 "apple-s6\0"
3691 "apple-a13\0"
3692 "apple-s7\0"
3693 "apple-s8\0"
3694 "apple-m1\0"
3695 "apple-a14\0"
3696 "apple-m2\0"
3697 "apple-a15\0"
3698 "apple-m3\0"
3699 "apple-a16\0"
3700 "apple-s9\0"
3701 "apple-s10\0"
3702 "apple-a18\0"
3703 "apple-m4\0"
3704 "apple-a19\0"
3705 "apple-m5\0"
3706 "apple-latest\0"
3707 "generic\0"
3708 "cortex-a34\0"
3709 "cortex-a35\0"
3710 "cortex-a320\0"
3711 "cortex-a53\0"
3712 "cortex-a55\0"
3713 "cortex-a510\0"
3714 "cortex-a520\0"
3715 "cortex-a520ae\0"
3716 "c1-nano\0"
3717 "cortex-a57\0"
3718 "cortex-a65\0"
3719 "cortex-a65ae\0"
3720 "cortex-a72\0"
3721 "cortex-a73\0"
3722 "cortex-a75\0"
3723 "cortex-a76\0"
3724 "cortex-a76ae\0"
3725 "cortex-a77\0"
3726 "cortex-a78\0"
3727 "cortex-a78ae\0"
3728 "cortex-a78c\0"
3729 "cortex-a710\0"
3730 "cortex-a715\0"
3731 "cortex-a720\0"
3732 "cortex-a720ae\0"
3733 "cortex-a725\0"
3734 "cortex-r82\0"
3735 "cortex-r82ae\0"
3736 "cortex-x1\0"
3737 "cortex-x1c\0"
3738 "cortex-x2\0"
3739 "cortex-x3\0"
3740 "cortex-x4\0"
3741 "cortex-x925\0"
3742 "c1-premium\0"
3743 "c1-ultra\0"
3744 "c2-ultra\0"
3745 "gb10\0"
3746 "grace\0"
3747 "neoverse-e1\0"
3748 "neoverse-n1\0"
3749 "neoverse-n3\0"
3750 "neoverse-512tvb\0"
3751 "neoverse-v1\0"
3752 "neoverse-v2\0"
3753 "neoverse-v3\0"
3754 "exynos-m3\0"
3755 "exynos-m4\0"
3756 "exynos-m5\0"
3757 "falkor\0"
3758 "saphira\0"
3759 "kryo\0"
3760 "thunderx\0"
3761 "thunderxt88\0"
3762 "thunderxt81\0"
3763 "thunderxt83\0"
3764 "thunderx2t99\0"
3765 "thunderx3t110\0"
3766 "tsv110\0"
3767 "hip12\0"
3768 "apple-a10\0"
3769 "apple-a11\0"
3770 "apple-a17\0"
3771 "a64fx\0"
3772 "fujitsu-monaka\0"
3773 "carmel\0"
3774 "olympus\0"
3775 "rigel\0"
3776 "ampere1\0"
3777 "ampere1a\0"
3778 "ampere1b\0"
3779 "ampere1c\0"
3780 "oryon-1\0"
3781 ;
3782#ifdef __GNUC__
3783#pragma GCC diagnostic pop
3784#endif
3785
3786static constexpr llvm::StringTable
3787StrTab = StrTabStorage;
3788#undef EMIT_STRTAB
3789#endif // EMIT_STRTAB
3790
3791