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