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(Saphira)
58ARM_PROCESSOR_FAMILY(Carmel)
59ARM_PROCESSOR_FAMILY(CortexA72)
60ARM_PROCESSOR_FAMILY(ThunderXT83)
61ARM_PROCESSOR_FAMILY(NeoverseV3)
62ARM_PROCESSOR_FAMILY(ThunderXT88)
63ARM_PROCESSOR_FAMILY(CortexA320)
64ARM_PROCESSOR_FAMILY(Falkor)
65ARM_PROCESSOR_FAMILY(C1Ultra)
66ARM_PROCESSOR_FAMILY(CortexX3)
67ARM_PROCESSOR_FAMILY(C1Pro)
68ARM_PROCESSOR_FAMILY(CortexA720)
69ARM_PROCESSOR_FAMILY(CortexX1)
70ARM_PROCESSOR_FAMILY(CortexA78)
71ARM_PROCESSOR_FAMILY(NeoverseE1)
72ARM_PROCESSOR_FAMILY(CortexA715)
73ARM_PROCESSOR_FAMILY(AppleA15)
74ARM_PROCESSOR_FAMILY(CortexR82AE)
75ARM_PROCESSOR_FAMILY(AppleA10)
76ARM_PROCESSOR_FAMILY(CortexX925)
77ARM_PROCESSOR_FAMILY(CortexA65)
78ARM_PROCESSOR_FAMILY(NeoverseV3AE)
79
80#undef ARM_PROCESSOR_FAMILY
81
82#ifndef ARM_ARCHITECTURE
83#define ARM_ARCHITECTURE(ENUM)
84#endif
85
86
87#undef ARM_ARCHITECTURE
88
89#ifdef EMIT_ARCHEXTKIND_ENUM
90enum ArchExtKind : unsigned {
91 AEK_AES,
92 AEK_ALTERNATIVENZCV,
93 AEK_AM,
94 AEK_AMVS,
95 AEK_BF16,
96 AEK_BRBE,
97 AEK_BTI,
98 AEK_BTIE,
99 AEK_CCDP,
100 AEK_CCIDX,
101 AEK_CCPP,
102 AEK_CHK,
103 AEK_CLRBHB,
104 AEK_CMPBR,
105 AEK_FCMA,
106 AEK_CPA,
107 AEK_CRC,
108 AEK_CRYPTO,
109 AEK_CSSC,
110 AEK_D128,
111 AEK_DIT,
112 AEK_DOTPROD,
113 AEK_ENHANCEDCOUNTERVIRTUALIZATION,
114 AEK_ETE,
115 AEK_F16F32DOT,
116 AEK_F16F32MM,
117 AEK_F16MM,
118 AEK_F32MM,
119 AEK_F64MM,
120 AEK_F8F16MM,
121 AEK_F8F32MM,
122 AEK_FAMINMAX,
123 AEK_FINEGRAINEDTRAPS,
124 AEK_FLAGM,
125 AEK_FP,
126 AEK_FP16FML,
127 AEK_FP8,
128 AEK_FP8DOT2,
129 AEK_FP8DOT4,
130 AEK_FP8FMA,
131 AEK_FPAC,
132 AEK_FPRCVT,
133 AEK_FRINT3264,
134 AEK_FP16,
135 AEK_GCIE,
136 AEK_GCS,
137 AEK_HBC,
138 AEK_HINTE,
139 AEK_I8MM,
140 AEK_ITE,
141 AEK_JSCVT,
142 AEK_LOR,
143 AEK_LS64,
144 AEK_LSCP,
145 AEK_LSE,
146 AEK_LSE128,
147 AEK_LSE2,
148 AEK_LSFE,
149 AEK_LSUI,
150 AEK_LUT,
151 AEK_MEC,
152 AEK_MOPS,
153 AEK_MOPS_GO,
154 AEK_MPAM,
155 AEK_MTE,
156 AEK_MTETC,
157 AEK_SIMD,
158 AEK_NMI,
159 AEK_NV,
160 AEK_OCCMO,
161 AEK_PAN,
162 AEK_PAN_RWV,
163 AEK_PAUTH,
164 AEK_PAUTHLR,
165 AEK_PERFMON,
166 AEK_POE2,
167 AEK_POPS,
168 AEK_PREDRES,
169 AEK_PRFM_SLC,
170 AEK_RAND,
171 AEK_RAS,
172 AEK_RASV2,
173 AEK_RCPC,
174 AEK_RCPC_IMMO,
175 AEK_RCPC3,
176 AEK_RDM,
177 AEK_RME,
178 AEK_SB,
179 AEK_SEL2,
180 AEK_SHA2,
181 AEK_SHA3,
182 AEK_SM4,
183 AEK_SME,
184 AEK_SMEB16B16,
185 AEK_SMEF16F16,
186 AEK_SMEF64F64,
187 AEK_SMEF8F16,
188 AEK_SMEF8F32,
189 AEK_SMEFA64,
190 AEK_SMEI16I64,
191 AEK_SME_LUTV2,
192 AEK_SME_MOP4,
193 AEK_SME_TMOP,
194 AEK_SME2,
195 AEK_SME2P1,
196 AEK_SME2P2,
197 AEK_SME2P3,
198 AEK_PROFILE,
199 AEK_SPE_EEF,
200 AEK_SPECRES2,
201 AEK_SPECRESTRICT,
202 AEK_SSBS,
203 AEK_SSVE_AES,
204 AEK_SSVE_BITPERM,
205 AEK_SSVE_FEXPA,
206 AEK_SSVE_FP8DOT2,
207 AEK_SSVE_FP8DOT4,
208 AEK_SSVE_FP8FMA,
209 AEK_SVE,
210 AEK_SVEAES,
211 AEK_SVE_AES2,
212 AEK_SVEB16B16,
213 AEK_SVE_B16MM,
214 AEK_SVE_BFSCALE,
215 AEK_SVEBITPERM,
216 AEK_SVE_F16F32MM,
217 AEK_SVESHA3,
218 AEK_SVESM4,
219 AEK_SVE2,
220 AEK_SVE2AES,
221 AEK_SVE2BITPERM,
222 AEK_SVE2SHA3,
223 AEK_SVE2SM4,
224 AEK_SVE2P1,
225 AEK_SVE2P2,
226 AEK_SVE2P3,
227 AEK_TEV,
228 AEK_THE,
229 AEK_TLB_RMI,
230 AEK_TLBID,
231 AEK_TLBIW,
232 AEK_TRACEV8_4,
233 AEK_TRBE,
234 AEK_PSUAO,
235 AEK_VH,
236 AEK_WFXT,
237 AEK_XS,
238 AEK_NUM_EXTENSIONS
239};
240#undef EMIT_ARCHEXTKIND_ENUM
241#endif // EMIT_ARCHEXTKIND_ENUM
242#ifdef EMIT_EXTENSIONS
243inline constexpr ExtensionInfo Extensions[] = {
244 {1, 0, AArch64::AEK_AES, 5, 26, 45, 50},
245 {0, 0, AArch64::AEK_ALTERNATIVENZCV, 55, 67, 129, 138},
246 {0, 0, AArch64::AEK_AM, 147, 158, 203, 207},
247 {0, 0, AArch64::AEK_AMVS, 211, 224, 282, 288},
248 {294, 0, AArch64::AEK_BF16, 299, 309, 335, 341},
249 {347, 0, AArch64::AEK_BRBE, 352, 362, 400, 406},
250 {412, 0, AArch64::AEK_BTI, 416, 425, 461, 466},
251 {471, 0, AArch64::AEK_BTIE, 476, 486, 541, 547},
252 {0, 0, AArch64::AEK_CCDP, 553, 563, 621, 627},
253 {0, 0, AArch64::AEK_CCIDX, 633, 644, 697, 704},
254 {0, 0, AArch64::AEK_CCPP, 711, 720, 778, 784},
255 {0, 0, AArch64::AEK_CHK, 790, 799, 847, 852},
256 {0, 0, AArch64::AEK_CLRBHB, 857, 869, 898, 906},
257 {914, 0, AArch64::AEK_CMPBR, 920, 931, 985, 992},
258 {999, 0, AArch64::AEK_FCMA, 1004, 1014, 1069, 1080},
259 {1091, 0, AArch64::AEK_CPA, 1095, 1104, 1148, 1153},
260 {1158, 0, AArch64::AEK_CRC, 1162, 1173, 1219, 1224},
261 {1229, 0, AArch64::AEK_CRYPTO, 1236, 1248, 1282, 1290},
262 {1298, 0, AArch64::AEK_CSSC, 1303, 1313, 1374, 1380},
263 {1386, 0, AArch64::AEK_D128, 1391, 1446, 1529, 1535},
264 {1541, 0, AArch64::AEK_DIT, 1545, 1554, 1608, 1613},
265 {1618, 0, AArch64::AEK_DOTPROD, 1626, 1639, 1666, 1675},
266 {0, 0, AArch64::AEK_ENHANCEDCOUNTERVIRTUALIZATION, 1684, 1693, 1742, 1747},
267 {0, 0, AArch64::AEK_ETE, 1752, 1761, 1793, 1798},
268 {1803, 0, AArch64::AEK_F16F32DOT, 1813, 1828, 1917, 1928},
269 {1939, 0, AArch64::AEK_F16F32MM, 1948, 1962, 2055, 2065},
270 {2075, 0, AArch64::AEK_F16MM, 2081, 2092, 2164, 2171},
271 {2178, 0, AArch64::AEK_F32MM, 2184, 2195, 2233, 2240},
272 {2247, 0, AArch64::AEK_F64MM, 2253, 2264, 2302, 2309},
273 {2316, 0, AArch64::AEK_F8F16MM, 2324, 2337, 2398, 2407},
274 {2416, 0, AArch64::AEK_F8F32MM, 2424, 2437, 2500, 2509},
275 {2518, 0, AArch64::AEK_FAMINMAX, 2527, 2541, 2577, 2587},
276 {0, 0, AArch64::AEK_FINEGRAINEDTRAPS, 2597, 2606, 2657, 2662},
277 {2667, 0, AArch64::AEK_FLAGM, 2673, 2684, 2732, 2739},
278 {2746, 0, AArch64::AEK_FP, 2749, 2757, 2800, 2810},
279 {2820, 0, AArch64::AEK_FP16FML, 2828, 2837, 2866, 2875},
280 {2884, 0, AArch64::AEK_FP8, 2888, 2897, 2921, 2926},
281 {2931, 0, AArch64::AEK_FP8DOT2, 2939, 2952, 2986, 2995},
282 {3004, 0, AArch64::AEK_FP8DOT4, 3012, 3025, 3059, 3068},
283 {3077, 0, AArch64::AEK_FP8FMA, 3084, 3096, 3143, 3151},
284 {0, 0, AArch64::AEK_FPAC, 3159, 3169, 3230, 3236},
285 {3242, 0, AArch64::AEK_FPRCVT, 3249, 3261, 3377, 3385},
286 {0, 0, AArch64::AEK_FRINT3264, 3393, 3406, 3551, 3560},
287 {3569, 0, AArch64::AEK_FP16, 3574, 3584, 3637, 3647},
288 {3657, 0, AArch64::AEK_GCIE, 3662, 3672, 3740, 3746},
289 {3752, 0, AArch64::AEK_GCS, 3756, 3765, 3811, 3816},
290 {3821, 0, AArch64::AEK_HBC, 3825, 3834, 3889, 3894},
291 {3899, 0, AArch64::AEK_HINTE, 3905, 3916, 3959, 3966},
292 {3973, 0, AArch64::AEK_I8MM, 3978, 3988, 4026, 4032},
293 {4038, 0, AArch64::AEK_ITE, 4042, 4051, 4094, 4099},
294 {4104, 0, AArch64::AEK_JSCVT, 4110, 4121, 4176, 4184},
295 {0, 0, AArch64::AEK_LOR, 4192, 4201, 4253, 4258},
296 {4263, 0, AArch64::AEK_LS64, 4268, 4310, 4361, 4367},
297 {4373, 0, AArch64::AEK_LSCP, 4378, 4388, 4451, 4457},
298 {4463, 0, AArch64::AEK_LSE, 4467, 4476, 4542, 4547},
299 {4552, 0, AArch64::AEK_LSE128, 4559, 4571, 4616, 4624},
300 {0, 0, AArch64::AEK_LSE2, 4632, 4642, 4707, 4713},
301 {4719, 0, AArch64::AEK_LSFE, 4724, 4734, 4801, 4807},
302 {4813, 0, AArch64::AEK_LSUI, 4818, 4828, 4882, 4888},
303 {4894, 0, AArch64::AEK_LUT, 4898, 4907, 4940, 4945},
304 {0, 0, AArch64::AEK_MEC, 4950, 4959, 5003, 5008},
305 {5013, 0, AArch64::AEK_MOPS, 5018, 5028, 5089, 5095},
306 {5101, 0, AArch64::AEK_MOPS_GO, 5109, 5122, 5162, 5171},
307 {0, 0, AArch64::AEK_MPAM, 5180, 5190, 5259, 5265},
308 {5271, 0, AArch64::AEK_MTE, 5278, 5298, 5330, 5335},
309 {5340, 0, AArch64::AEK_MTETC, 5346, 5357, 5397, 5404},
310 {5411, 0, AArch64::AEK_SIMD, 5416, 5429, 5463, 5469},
311 {0, 0, AArch64::AEK_NMI, 5475, 5500, 5541, 5546},
312 {0, 0, AArch64::AEK_NV, 5551, 5569, 5621, 5625},
313 {5629, 0, AArch64::AEK_OCCMO, 5635, 5646, 5708, 5715},
314 {0, 0, AArch64::AEK_PAN, 5722, 5731, 5782, 5787},
315 {0, 0, AArch64::AEK_PAN_RWV, 5792, 5802, 5848, 5857},
316 {5866, 0, AArch64::AEK_PAUTH, 5872, 5883, 5933, 5940},
317 {5947, 0, AArch64::AEK_PAUTHLR, 5956, 5970, 6004, 6014},
318 {6024, 0, AArch64::AEK_PERFMON, 6030, 6041, 6095, 6104},
319 {6113, 0, AArch64::AEK_POE2, 6118, 6130, 6190, 6196},
320 {6202, 0, AArch64::AEK_POPS, 6207, 6217, 6283, 6289},
321 {6295, 0, AArch64::AEK_PREDRES, 6303, 6316, 6389, 6398},
322 {0, 0, AArch64::AEK_PRFM_SLC, 6407, 6420, 6459, 6476},
323 {6493, 0, AArch64::AEK_RAND, 6497, 6506, 6551, 6557},
324 {6563, 0, AArch64::AEK_RAS, 6567, 6590, 6663, 6668},
325 {6673, 0, AArch64::AEK_RASV2, 6679, 6690, 6763, 6770},
326 {6777, 0, AArch64::AEK_RCPC, 6782, 6793, 6827, 6833},
327 {0, 0, AArch64::AEK_RCPC_IMMO, 6839, 6851, 6909, 6920},
328 {6931, 0, AArch64::AEK_RCPC3, 6937, 6949, 7045, 7052},
329 {7059, 7063, AArch64::AEK_RDM, 7068, 7077, 7145, 7150},
330 {0, 0, AArch64::AEK_RME, 7155, 7164, 7198, 7203},
331 {7208, 0, AArch64::AEK_SB, 7211, 7219, 7256, 7260},
332 {0, 0, AArch64::AEK_SEL2, 7264, 7274, 7326, 7332},
333 {7338, 0, AArch64::AEK_SHA2, 7343, 7366, 7397, 7403},
334 {7409, 0, AArch64::AEK_SHA3, 7414, 7437, 7468, 7474},
335 {7480, 0, AArch64::AEK_SM4, 7484, 7503, 7530, 7535},
336 {7540, 0, AArch64::AEK_SME, 7544, 7553, 7592, 7597},
337 {7602, 0, AArch64::AEK_SMEB16B16, 7613, 7629, 7691, 7703},
338 {7715, 0, AArch64::AEK_SMEF16F16, 7726, 7742, 7787, 7799},
339 {7811, 0, AArch64::AEK_SMEF64F64, 7822, 7838, 7897, 7909},
340 {7921, 0, AArch64::AEK_SMEF8F16, 7931, 7946, 8004, 8015},
341 {8026, 0, AArch64::AEK_SMEF8F32, 8036, 8051, 8109, 8120},
342 {8131, 0, AArch64::AEK_SMEFA64, 8140, 8154, 8212, 8222},
343 {8232, 0, AArch64::AEK_SMEI16I64, 8243, 8259, 8318, 8330},
344 {8342, 0, AArch64::AEK_SME_LUTV2, 8352, 8367, 8425, 8436},
345 {8447, 0, AArch64::AEK_SME_MOP4, 8456, 8470, 8521, 8531},
346 {8541, 0, AArch64::AEK_SME_TMOP, 8550, 8564, 8623, 8633},
347 {8643, 0, AArch64::AEK_SME2, 8648, 8658, 8713, 8719},
348 {8725, 0, AArch64::AEK_SME2P1, 8732, 8744, 8794, 8802},
349 {8810, 0, AArch64::AEK_SME2P2, 8817, 8829, 8889, 8897},
350 {8905, 0, AArch64::AEK_SME2P3, 8912, 8924, 8984, 8992},
351 {9000, 0, AArch64::AEK_PROFILE, 9008, 9017, 9056, 9061},
352 {0, 0, AArch64::AEK_SPE_EEF, 9066, 9079, 9140, 9149},
353 {9158, 0, AArch64::AEK_SPECRES2, 9167, 9181, 9224, 9234},
354 {0, 0, AArch64::AEK_SPECRESTRICT, 9244, 9256, 9301, 9315},
355 {9329, 0, AArch64::AEK_SSBS, 9334, 9356, 9397, 9403},
356 {9409, 0, AArch64::AEK_SSVE_AES, 9418, 9432, 9487, 9497},
357 {9507, 0, AArch64::AEK_SSVE_BITPERM, 9520, 9538, 9597, 9611},
358 {9625, 0, AArch64::AEK_SSVE_FEXPA, 9636, 9652, 9703, 9715},
359 {9727, 0, AArch64::AEK_SSVE_FP8DOT2, 9740, 9758, 9805, 9819},
360 {9833, 0, AArch64::AEK_SSVE_FP8DOT4, 9846, 9864, 9911, 9925},
361 {9939, 0, AArch64::AEK_SSVE_FP8FMA, 9951, 9968, 10010, 10023},
362 {10036, 0, AArch64::AEK_SVE, 10040, 10049, 10101, 10106},
363 {10111, 0, AArch64::AEK_SVEAES, 10119, 10151, 10216, 10225},
364 {10234, 0, AArch64::AEK_SVE_AES2, 10243, 10257, 10354, 10364},
365 {10374, 0, AArch64::AEK_SVEB16B16, 10385, 10401, 10482, 10494},
366 {10506, 0, AArch64::AEK_SVE_B16MM, 10516, 10531, 10601, 10612},
367 {10623, 0, AArch64::AEK_SVE_BFSCALE, 10635, 10652, 10703, 10716},
368 {10729, 0, AArch64::AEK_SVEBITPERM, 10741, 10758, 10799, 10812},
369 {10825, 0, AArch64::AEK_SVE_F16F32MM, 10838, 10856, 10915, 10929},
370 {10943, 0, AArch64::AEK_SVESHA3, 10952, 10966, 10995, 11005},
371 {11015, 0, AArch64::AEK_SVESM4, 11023, 11036, 11064, 11073},
372 {11082, 0, AArch64::AEK_SVE2, 11087, 11097, 11152, 11158},
373 {11164, 0, AArch64::AEK_SVE2AES, 0, 11173, 11201, 11211},
374 {11221, 0, AArch64::AEK_SVE2BITPERM, 0, 11234, 11266, 11280},
375 {11294, 0, AArch64::AEK_SVE2SHA3, 0, 11304, 11333, 11344},
376 {11355, 0, AArch64::AEK_SVE2SM4, 0, 11364, 11392, 11402},
377 {11412, 0, AArch64::AEK_SVE2P1, 11419, 11431, 11481, 11489},
378 {11497, 0, AArch64::AEK_SVE2P2, 11504, 11516, 11576, 11584},
379 {11592, 0, AArch64::AEK_SVE2P3, 11599, 11611, 11671, 11679},
380 {11687, 0, AArch64::AEK_TEV, 11691, 11700, 11749, 11754},
381 {11759, 0, AArch64::AEK_THE, 11763, 11772, 11821, 11826},
382 {0, 0, AArch64::AEK_TLB_RMI, 11831, 11859, 11915, 11924},
383 {11933, 0, AArch64::AEK_TLBID, 11939, 11950, 11990, 11997},
384 {12004, 0, AArch64::AEK_TLBIW, 12010, 12021, 12065, 12072},
385 {0, 0, AArch64::AEK_TRACEV8_4, 12079, 12088, 12121, 12132},
386 {0, 0, AArch64::AEK_TRBE, 12143, 12153, 12183, 12189},
387 {0, 0, AArch64::AEK_PSUAO, 12195, 12204, 12232, 12239},
388 {0, 0, AArch64::AEK_VH, 12246, 12255, 12295, 12299},
389 {12303, 0, AArch64::AEK_WFXT, 12308, 12318, 12361, 12367},
390 {0, 0, AArch64::AEK_XS, 12373, 12381, 12434, 12438},
391};
392#undef EMIT_EXTENSIONS
393#endif // EMIT_EXTENSIONS
394
395#ifdef EMIT_FMV_INFO
396const std::vector<llvm::AArch64::FMVInfo>& llvm::AArch64::getFMVInfo() {
397 static std::vector<FMVInfo> I;
398 if(I.size()) return I;
399 I.reserve(53);
400 I.emplace_back("aes", FEAT_PMULL, PRIOR_PMULL, AEK_AES);
401 I.emplace_back("bf16", FEAT_BF16, PRIOR_BF16, AEK_BF16);
402 I.emplace_back("bti", FEAT_BTI, PRIOR_BTI, AEK_BTI);
403 I.emplace_back("crc", FEAT_CRC, PRIOR_CRC, AEK_CRC);
404 I.emplace_back("dit", FEAT_DIT, PRIOR_DIT, AEK_DIT);
405 I.emplace_back("dotprod", FEAT_DOTPROD, PRIOR_DOTPROD, AEK_DOTPROD);
406 I.emplace_back("dpb", FEAT_DPB, PRIOR_DPB, AEK_CCPP);
407 I.emplace_back("dpb2", FEAT_DPB2, PRIOR_DPB2, AEK_CCDP);
408 I.emplace_back("f32mm", FEAT_SVE_F32MM, PRIOR_SVE_F32MM, AEK_F32MM);
409 I.emplace_back("f64mm", FEAT_SVE_F64MM, PRIOR_SVE_F64MM, AEK_F64MM);
410 I.emplace_back("fcma", FEAT_FCMA, PRIOR_FCMA, AEK_FCMA);
411 I.emplace_back("flagm", FEAT_FLAGM, PRIOR_FLAGM, AEK_FLAGM);
412 I.emplace_back("flagm2", FEAT_FLAGM2, PRIOR_FLAGM2, AEK_ALTERNATIVENZCV);
413 I.emplace_back("fp", FEAT_FP, PRIOR_FP, AEK_FP);
414 I.emplace_back("fp16", FEAT_FP16, PRIOR_FP16, AEK_FP16);
415 I.emplace_back("fp16fml", FEAT_FP16FML, PRIOR_FP16FML, AEK_FP16FML);
416 I.emplace_back("frintts", FEAT_FRINTTS, PRIOR_FRINTTS, AEK_FRINT3264);
417 I.emplace_back("i8mm", FEAT_I8MM, PRIOR_I8MM, AEK_I8MM);
418 I.emplace_back("jscvt", FEAT_JSCVT, PRIOR_JSCVT, AEK_JSCVT);
419 I.emplace_back("lse", FEAT_LSE, PRIOR_LSE, AEK_LSE);
420 I.emplace_back("memtag", FEAT_MEMTAG2, PRIOR_MEMTAG2, AEK_MTE);
421 I.emplace_back("mops", FEAT_MOPS, PRIOR_MOPS, AEK_MOPS);
422 I.emplace_back("rcpc", FEAT_RCPC, PRIOR_RCPC, AEK_RCPC);
423 I.emplace_back("rcpc2", FEAT_RCPC2, PRIOR_RCPC2, AEK_RCPC_IMMO);
424 I.emplace_back("rcpc3", FEAT_RCPC3, PRIOR_RCPC3, AEK_RCPC3);
425 I.emplace_back("rdm", FEAT_RDM, PRIOR_RDM, AEK_RDM);
426 I.emplace_back("rng", FEAT_RNG, PRIOR_RNG, AEK_RAND);
427 I.emplace_back("sb", FEAT_SB, PRIOR_SB, AEK_SB);
428 I.emplace_back("sha2", FEAT_SHA2, PRIOR_SHA2, AEK_SHA2);
429 I.emplace_back("sha3", FEAT_SHA3, PRIOR_SHA3, AEK_SHA3);
430 I.emplace_back("simd", FEAT_SIMD, PRIOR_SIMD, AEK_SIMD);
431 I.emplace_back("sm4", FEAT_SM4, PRIOR_SM4, AEK_SM4);
432 I.emplace_back("sme", FEAT_SME, PRIOR_SME, AEK_SME);
433 I.emplace_back("sme-f64f64", FEAT_SME_F64, PRIOR_SME_F64, AEK_SMEF64F64);
434 I.emplace_back("sme-i16i64", FEAT_SME_I64, PRIOR_SME_I64, AEK_SMEI16I64);
435 I.emplace_back("sme2", FEAT_SME2, PRIOR_SME2, AEK_SME2);
436 I.emplace_back("ssbs", FEAT_SSBS2, PRIOR_SSBS2, AEK_SSBS);
437 I.emplace_back("sve", FEAT_SVE, PRIOR_SVE, AEK_SVE);
438 I.emplace_back("sve2", FEAT_SVE2, PRIOR_SVE2, AEK_SVE2);
439 I.emplace_back("sve2-aes", FEAT_SVE_PMULL128, PRIOR_SVE_PMULL128, AEK_SVE2AES);
440 I.emplace_back("sve2-bitperm", FEAT_SVE_BITPERM, PRIOR_SVE_BITPERM, AEK_SVE2BITPERM);
441 I.emplace_back("sve2-sha3", FEAT_SVE_SHA3, PRIOR_SVE_SHA3, AEK_SVE2SHA3);
442 I.emplace_back("sve2-sm4", FEAT_SVE_SM4, PRIOR_SVE_SM4, AEK_SVE2SM4);
443 I.emplace_back("wfxt", FEAT_WFXT, PRIOR_WFXT, AEK_WFXT);
444 I.emplace_back("cssc", FEAT_CSSC, PRIOR_CSSC, AEK_CSSC);
445 I.emplace_back("P0", std::nullopt, PRIOR_P0, std::nullopt);
446 I.emplace_back("P1", std::nullopt, PRIOR_P1, std::nullopt);
447 I.emplace_back("P2", std::nullopt, PRIOR_P2, std::nullopt);
448 I.emplace_back("P3", std::nullopt, PRIOR_P3, std::nullopt);
449 I.emplace_back("P4", std::nullopt, PRIOR_P4, std::nullopt);
450 I.emplace_back("P5", std::nullopt, PRIOR_P5, std::nullopt);
451 I.emplace_back("P6", std::nullopt, PRIOR_P6, std::nullopt);
452 I.emplace_back("P7", std::nullopt, PRIOR_P7, std::nullopt);
453 return I;
454}
455#undef EMIT_FMV_INFO
456#endif // EMIT_FMV_INFO
457
458#ifdef EMIT_EXTENSION_DEPENDENCIES
459inline constexpr ExtensionDependency ExtensionDependencies[] = {
460 {AEK_SIMD, AEK_AES},
461 {AEK_FLAGM, AEK_ALTERNATIVENZCV},
462 {AEK_AM, AEK_AMVS},
463 {AEK_SIMD, AEK_BF16},
464 {AEK_CCPP, AEK_CCDP},
465 {AEK_SIMD, AEK_FCMA},
466 {AEK_AES, AEK_CRYPTO},
467 {AEK_SIMD, AEK_CRYPTO},
468 {AEK_SHA2, AEK_CRYPTO},
469 {AEK_LSE128, AEK_D128},
470 {AEK_SIMD, AEK_DOTPROD},
471 {AEK_TRBE, AEK_ETE},
472 {AEK_FP16, AEK_F16F32DOT},
473 {AEK_SIMD, AEK_F16F32DOT},
474 {AEK_FP16, AEK_F16F32MM},
475 {AEK_SIMD, AEK_F16F32MM},
476 {AEK_FP16, AEK_F16MM},
477 {AEK_SIMD, AEK_F16MM},
478 {AEK_SVE, AEK_F32MM},
479 {AEK_SVE, AEK_F64MM},
480 {AEK_FP8, AEK_F8F16MM},
481 {AEK_SIMD, AEK_F8F16MM},
482 {AEK_FP8, AEK_F8F32MM},
483 {AEK_SIMD, AEK_F8F32MM},
484 {AEK_SIMD, AEK_FAMINMAX},
485 {AEK_FP16, AEK_FP16FML},
486 {AEK_SIMD, AEK_FP16FML},
487 {AEK_SIMD, AEK_FP8},
488 {AEK_FP8, AEK_FP8DOT2},
489 {AEK_FP8, AEK_FP8DOT4},
490 {AEK_FP8, AEK_FP8FMA},
491 {AEK_FP, AEK_FPRCVT},
492 {AEK_FP, AEK_FRINT3264},
493 {AEK_FP, AEK_FP16},
494 {AEK_CHK, AEK_GCS},
495 {AEK_SIMD, AEK_I8MM},
496 {AEK_ETE, AEK_ITE},
497 {AEK_TRBE, AEK_ITE},
498 {AEK_FP, AEK_JSCVT},
499 {AEK_LSE, AEK_LSE128},
500 {AEK_FP, AEK_LSFE},
501 {AEK_SIMD, AEK_LUT},
502 {AEK_RME, AEK_MEC},
503 {AEK_MOPS, AEK_MOPS_GO},
504 {AEK_MTE, AEK_MOPS_GO},
505 {AEK_MTE, AEK_MTETC},
506 {AEK_FP, AEK_SIMD},
507 {AEK_PAN, AEK_PAN_RWV},
508 {AEK_RAS, AEK_RASV2},
509 {AEK_RCPC, AEK_RCPC_IMMO},
510 {AEK_RCPC_IMMO, AEK_RCPC3},
511 {AEK_SIMD, AEK_RDM},
512 {AEK_SIMD, AEK_SHA2},
513 {AEK_SIMD, AEK_SHA3},
514 {AEK_SHA2, AEK_SHA3},
515 {AEK_SIMD, AEK_SM4},
516 {AEK_BF16, AEK_SME},
517 {AEK_FP16, AEK_SME},
518 {AEK_SME2, AEK_SMEB16B16},
519 {AEK_SVEB16B16, AEK_SMEB16B16},
520 {AEK_SME2, AEK_SMEF16F16},
521 {AEK_SME, AEK_SMEF64F64},
522 {AEK_FP8, AEK_SMEF8F16},
523 {AEK_SME2, AEK_SMEF8F16},
524 {AEK_FP8, AEK_SMEF8F32},
525 {AEK_SME2, AEK_SMEF8F32},
526 {AEK_SME, AEK_SMEFA64},
527 {AEK_SVE2, AEK_SMEFA64},
528 {AEK_SME, AEK_SMEI16I64},
529 {AEK_SME2, AEK_SME_LUTV2},
530 {AEK_SME2, AEK_SME_MOP4},
531 {AEK_SME2, AEK_SME_TMOP},
532 {AEK_SME, AEK_SME2},
533 {AEK_SME2, AEK_SME2P1},
534 {AEK_SME2P1, AEK_SME2P2},
535 {AEK_SME2P2, AEK_SME2P3},
536 {AEK_PREDRES, AEK_SPECRES2},
537 {AEK_SME2, AEK_SSVE_AES},
538 {AEK_SVEAES, AEK_SSVE_AES},
539 {AEK_SME2, AEK_SSVE_BITPERM},
540 {AEK_SVEBITPERM, AEK_SSVE_BITPERM},
541 {AEK_SME2, AEK_SSVE_FEXPA},
542 {AEK_FP8, AEK_SSVE_FP8DOT2},
543 {AEK_SME2, AEK_SSVE_FP8DOT2},
544 {AEK_FP8, AEK_SSVE_FP8DOT4},
545 {AEK_SME2, AEK_SSVE_FP8DOT4},
546 {AEK_FP8, AEK_SSVE_FP8FMA},
547 {AEK_SME2, AEK_SSVE_FP8FMA},
548 {AEK_FP16, AEK_SVE},
549 {AEK_AES, AEK_SVEAES},
550 {AEK_SVE, AEK_SVE_B16MM},
551 {AEK_SVE, AEK_SVE_F16F32MM},
552 {AEK_SHA3, AEK_SVESHA3},
553 {AEK_SM4, AEK_SVESM4},
554 {AEK_SVE, AEK_SVE2},
555 {AEK_SVEAES, AEK_SVE2AES},
556 {AEK_SVE2, AEK_SVE2AES},
557 {AEK_SVEBITPERM, AEK_SVE2BITPERM},
558 {AEK_SVE2, AEK_SVE2BITPERM},
559 {AEK_SVESHA3, AEK_SVE2SHA3},
560 {AEK_SVE2, AEK_SVE2SHA3},
561 {AEK_SVESM4, AEK_SVE2SM4},
562 {AEK_SVE2, AEK_SVE2SM4},
563 {AEK_SVE2, AEK_SVE2P1},
564 {AEK_SVE2P1, AEK_SVE2P2},
565 {AEK_SVE2P2, AEK_SVE2P3},
566 {AEK_RCPC, AEK_RCPC3},
567};
568#undef EMIT_EXTENSION_DEPENDENCIES
569#endif // EMIT_EXTENSION_DEPENDENCIES
570
571#ifdef EMIT_ARCHITECTURES
572
573/// The set of all architectures
574inline constexpr std::array<ArchInfo, 19> ArchInfos = {{
575 {
576 VersionTuple{8, 0},
577 AProfile,
578 12442,
579 12450,
580 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, }))
581 },
582 {
583 VersionTuple{8, 0},
584 RProfile,
585 12455,
586 12463,
587 (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, }))
588 },
589 {
590 VersionTuple{8, 1},
591 AProfile,
592 12468,
593 12478,
594 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, }))
595 },
596 {
597 VersionTuple{8, 2},
598 AProfile,
599 12485,
600 12495,
601 (AArch64::ExtensionBitset({AArch64::AEK_FP, AArch64::AEK_SIMD, AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM, AArch64::AEK_RAS, }))
602 },
603 {
604 VersionTuple{8, 3},
605 AProfile,
606 12502,
607 12512,
608 (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, }))
609 },
610 {
611 VersionTuple{8, 4},
612 AProfile,
613 12519,
614 12529,
615 (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, }))
616 },
617 {
618 VersionTuple{8, 5},
619 AProfile,
620 12536,
621 12546,
622 (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, }))
623 },
624 {
625 VersionTuple{8, 6},
626 AProfile,
627 12553,
628 12563,
629 (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, }))
630 },
631 {
632 VersionTuple{8, 7},
633 AProfile,
634 12570,
635 12580,
636 (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, }))
637 },
638 {
639 VersionTuple{8, 8},
640 AProfile,
641 12587,
642 12597,
643 (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, }))
644 },
645 {
646 VersionTuple{8, 9},
647 AProfile,
648 12604,
649 12614,
650 (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, }))
651 },
652 {
653 VersionTuple{9, 0},
654 AProfile,
655 12621,
656 12629,
657 (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, }))
658 },
659 {
660 VersionTuple{9, 1},
661 AProfile,
662 12634,
663 12644,
664 (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, }))
665 },
666 {
667 VersionTuple{9, 2},
668 AProfile,
669 12651,
670 12661,
671 (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, }))
672 },
673 {
674 VersionTuple{9, 3},
675 AProfile,
676 12668,
677 12678,
678 (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, }))
679 },
680 {
681 VersionTuple{9, 4},
682 AProfile,
683 12685,
684 12695,
685 (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, }))
686 },
687 {
688 VersionTuple{9, 5},
689 AProfile,
690 12702,
691 12712,
692 (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, }))
693 },
694 {
695 VersionTuple{9, 6},
696 AProfile,
697 12719,
698 12729,
699 (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, }))
700 },
701 {
702 VersionTuple{9, 7},
703 AProfile,
704 12736,
705 12746,
706 (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, }))
707 },
708}};
709static constexpr const ArchInfo &ARMV8A = ArchInfos[0];
710static constexpr const ArchInfo &ARMV8R = ArchInfos[1];
711static constexpr const ArchInfo &ARMV8_1A = ArchInfos[2];
712static constexpr const ArchInfo &ARMV8_2A = ArchInfos[3];
713static constexpr const ArchInfo &ARMV8_3A = ArchInfos[4];
714static constexpr const ArchInfo &ARMV8_4A = ArchInfos[5];
715static constexpr const ArchInfo &ARMV8_5A = ArchInfos[6];
716static constexpr const ArchInfo &ARMV8_6A = ArchInfos[7];
717static constexpr const ArchInfo &ARMV8_7A = ArchInfos[8];
718static constexpr const ArchInfo &ARMV8_8A = ArchInfos[9];
719static constexpr const ArchInfo &ARMV8_9A = ArchInfos[10];
720static constexpr const ArchInfo &ARMV9A = ArchInfos[11];
721static constexpr const ArchInfo &ARMV9_1A = ArchInfos[12];
722static constexpr const ArchInfo &ARMV9_2A = ArchInfos[13];
723static constexpr const ArchInfo &ARMV9_3A = ArchInfos[14];
724static constexpr const ArchInfo &ARMV9_4A = ArchInfos[15];
725static constexpr const ArchInfo &ARMV9_5A = ArchInfos[16];
726static constexpr const ArchInfo &ARMV9_6A = ArchInfos[17];
727static constexpr const ArchInfo &ARMV9_7A = ArchInfos[18];
728#undef EMIT_ARCHITECTURES
729#endif // EMIT_ARCHITECTURES
730
731#ifdef EMIT_CPU_ALIAS
732inline constexpr Alias CpuAliases[] = {
733 {12753, 12764},
734 {12776, 12786},
735 {12800, 12808},
736 {12817, 12808},
737 {12826, 12808},
738 {12835, 12844},
739 {12854, 12844},
740 {12863, 12872},
741 {12882, 12872},
742 {12891, 12872},
743 {12900, 12909},
744 {12919, 12928},
745 {12938, 12947},
746 {12957, 12947},
747 {12966, 12947},
748 {12976, 12986},
749 {12995, 13005},
750 {13014, 13005},
751};
752#undef EMIT_CPU_ALIAS
753#endif // EMIT_CPU_ALIAS
754
755#ifdef EMIT_CPU_INFO
756inline constexpr CpuInfo CpuInfos[] = {
757 {
758 13027,
759 0 /* ARMV8A */,
760 AArch64::ExtensionBitset({
761 AArch64::AEK_FP,
762 AArch64::AEK_SIMD,
763 AArch64::AEK_ETE,
764 })
765 },
766 {
767 13035,
768 0 /* ARMV8A */,
769 AArch64::ExtensionBitset({
770 AArch64::AEK_CRC,
771 AArch64::AEK_SHA2,
772 AArch64::AEK_AES,
773 AArch64::AEK_FP,
774 AArch64::AEK_SIMD,
775 AArch64::AEK_PERFMON,
776 })
777 },
778 {
779 13046,
780 0 /* ARMV8A */,
781 AArch64::ExtensionBitset({
782 AArch64::AEK_CRC,
783 AArch64::AEK_SHA2,
784 AArch64::AEK_AES,
785 AArch64::AEK_FP,
786 AArch64::AEK_SIMD,
787 AArch64::AEK_PERFMON,
788 })
789 },
790 {
791 13057,
792 13 /* ARMV9_2A */,
793 AArch64::ExtensionBitset({
794 AArch64::AEK_SIMD,
795 AArch64::AEK_MTE,
796 AArch64::AEK_SVEBITPERM,
797 AArch64::AEK_FP16FML,
798 AArch64::AEK_FP16,
799 AArch64::AEK_ETE,
800 AArch64::AEK_PERFMON,
801 AArch64::AEK_CCIDX,
802 AArch64::AEK_CCPP,
803 AArch64::AEK_FCMA,
804 AArch64::AEK_CRC,
805 AArch64::AEK_DOTPROD,
806 AArch64::AEK_JSCVT,
807 AArch64::AEK_LOR,
808 AArch64::AEK_LSE,
809 AArch64::AEK_PAN,
810 AArch64::AEK_PAN_RWV,
811 AArch64::AEK_PAUTH,
812 AArch64::AEK_PSUAO,
813 AArch64::AEK_RAS,
814 AArch64::AEK_RDM,
815 AArch64::AEK_TRBE,
816 AArch64::AEK_VH,
817 AArch64::AEK_FLAGM,
818 AArch64::AEK_PREDRES,
819 AArch64::AEK_SB,
820 AArch64::AEK_SSBS,
821 AArch64::AEK_SVE,
822 AArch64::AEK_SVE2,
823 })
824 },
825 {
826 13069,
827 0 /* ARMV8A */,
828 AArch64::ExtensionBitset({
829 AArch64::AEK_CRC,
830 AArch64::AEK_SHA2,
831 AArch64::AEK_AES,
832 AArch64::AEK_FP,
833 AArch64::AEK_SIMD,
834 AArch64::AEK_PERFMON,
835 })
836 },
837 {
838 13080,
839 3 /* ARMV8_2A */,
840 AArch64::ExtensionBitset({
841 AArch64::AEK_SHA2,
842 AArch64::AEK_AES,
843 AArch64::AEK_FP,
844 AArch64::AEK_SIMD,
845 AArch64::AEK_FP16,
846 AArch64::AEK_DOTPROD,
847 AArch64::AEK_RCPC,
848 AArch64::AEK_PERFMON,
849 AArch64::AEK_CRC,
850 AArch64::AEK_LSE,
851 AArch64::AEK_RAS,
852 AArch64::AEK_RDM,
853 })
854 },
855 {
856 13091,
857 11 /* ARMV9A */,
858 AArch64::ExtensionBitset({
859 AArch64::AEK_SIMD,
860 AArch64::AEK_PERFMON,
861 AArch64::AEK_I8MM,
862 AArch64::AEK_BF16,
863 AArch64::AEK_AM,
864 AArch64::AEK_MTE,
865 AArch64::AEK_ETE,
866 AArch64::AEK_SVEBITPERM,
867 AArch64::AEK_FP16FML,
868 AArch64::AEK_CCIDX,
869 AArch64::AEK_SB,
870 AArch64::AEK_PAUTH,
871 AArch64::AEK_SSBS,
872 AArch64::AEK_SVE,
873 AArch64::AEK_SVE2,
874 AArch64::AEK_FCMA,
875 AArch64::AEK_CRC,
876 AArch64::AEK_DOTPROD,
877 AArch64::AEK_FP,
878 AArch64::AEK_FP16,
879 AArch64::AEK_JSCVT,
880 AArch64::AEK_LSE,
881 AArch64::AEK_RAS,
882 AArch64::AEK_RCPC,
883 AArch64::AEK_RDM,
884 AArch64::AEK_FPAC,
885 })
886 },
887 {
888 13103,
889 13 /* ARMV9_2A */,
890 AArch64::ExtensionBitset({
891 AArch64::AEK_PERFMON,
892 AArch64::AEK_AM,
893 AArch64::AEK_MTE,
894 AArch64::AEK_ETE,
895 AArch64::AEK_SVEBITPERM,
896 AArch64::AEK_FP16FML,
897 AArch64::AEK_CCIDX,
898 AArch64::AEK_SB,
899 AArch64::AEK_SSBS,
900 AArch64::AEK_PAUTH,
901 AArch64::AEK_FLAGM,
902 AArch64::AEK_PREDRES,
903 AArch64::AEK_SVE,
904 AArch64::AEK_SVE2,
905 AArch64::AEK_BF16,
906 AArch64::AEK_FCMA,
907 AArch64::AEK_CRC,
908 AArch64::AEK_FP,
909 AArch64::AEK_FP16,
910 AArch64::AEK_I8MM,
911 AArch64::AEK_JSCVT,
912 AArch64::AEK_SIMD,
913 AArch64::AEK_LSE,
914 AArch64::AEK_RAS,
915 AArch64::AEK_RCPC,
916 AArch64::AEK_RDM,
917 AArch64::AEK_DOTPROD,
918 AArch64::AEK_FPAC,
919 })
920 },
921 {
922 13115,
923 13 /* ARMV9_2A */,
924 AArch64::ExtensionBitset({
925 AArch64::AEK_PERFMON,
926 AArch64::AEK_AM,
927 AArch64::AEK_MTE,
928 AArch64::AEK_ETE,
929 AArch64::AEK_SVEBITPERM,
930 AArch64::AEK_FP16FML,
931 AArch64::AEK_CCIDX,
932 AArch64::AEK_SB,
933 AArch64::AEK_SSBS,
934 AArch64::AEK_PAUTH,
935 AArch64::AEK_FLAGM,
936 AArch64::AEK_PREDRES,
937 AArch64::AEK_SVE,
938 AArch64::AEK_SVE2,
939 AArch64::AEK_BF16,
940 AArch64::AEK_FCMA,
941 AArch64::AEK_CRC,
942 AArch64::AEK_FP,
943 AArch64::AEK_FP16,
944 AArch64::AEK_I8MM,
945 AArch64::AEK_JSCVT,
946 AArch64::AEK_SIMD,
947 AArch64::AEK_LSE,
948 AArch64::AEK_RAS,
949 AArch64::AEK_RCPC,
950 AArch64::AEK_RDM,
951 AArch64::AEK_DOTPROD,
952 AArch64::AEK_FPAC,
953 })
954 },
955 {
956 13129,
957 14 /* ARMV9_3A */,
958 AArch64::ExtensionBitset({
959 AArch64::AEK_SIMD,
960 AArch64::AEK_CLRBHB,
961 AArch64::AEK_CHK,
962 AArch64::AEK_FP,
963 AArch64::AEK_PERFMON,
964 AArch64::AEK_SPECRES2,
965 AArch64::AEK_SSBS,
966 AArch64::AEK_RDM,
967 AArch64::AEK_VH,
968 AArch64::AEK_BF16,
969 AArch64::AEK_DOTPROD,
970 AArch64::AEK_FP16FML,
971 AArch64::AEK_FP16,
972 AArch64::AEK_MPAM,
973 AArch64::AEK_SVE,
974 AArch64::AEK_CCIDX,
975 AArch64::AEK_FCMA,
976 AArch64::AEK_FPAC,
977 AArch64::AEK_JSCVT,
978 AArch64::AEK_AM,
979 AArch64::AEK_RAS,
980 AArch64::AEK_SEL2,
981 AArch64::AEK_TRACEV8_4,
982 AArch64::AEK_ALTERNATIVENZCV,
983 AArch64::AEK_FRINT3264,
984 AArch64::AEK_MTE,
985 AArch64::AEK_FINEGRAINEDTRAPS,
986 AArch64::AEK_RCPC3,
987 AArch64::AEK_ETE,
988 AArch64::AEK_SVEBITPERM,
989 AArch64::AEK_SVE2,
990 AArch64::AEK_TRBE,
991 AArch64::AEK_SME,
992 AArch64::AEK_SME2,
993 })
994 },
995 {
996 13137,
997 0 /* ARMV8A */,
998 AArch64::ExtensionBitset({
999 AArch64::AEK_CRC,
1000 AArch64::AEK_SHA2,
1001 AArch64::AEK_AES,
1002 AArch64::AEK_FP,
1003 AArch64::AEK_SIMD,
1004 AArch64::AEK_PERFMON,
1005 })
1006 },
1007 {
1008 13148,
1009 3 /* ARMV8_2A */,
1010 AArch64::ExtensionBitset({
1011 AArch64::AEK_SHA2,
1012 AArch64::AEK_AES,
1013 AArch64::AEK_FP,
1014 AArch64::AEK_SIMD,
1015 AArch64::AEK_FP16,
1016 AArch64::AEK_DOTPROD,
1017 AArch64::AEK_RCPC,
1018 AArch64::AEK_SSBS,
1019 AArch64::AEK_RAS,
1020 AArch64::AEK_PERFMON,
1021 AArch64::AEK_CRC,
1022 AArch64::AEK_LSE,
1023 AArch64::AEK_RDM,
1024 })
1025 },
1026 {
1027 13159,
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 13172,
1047 0 /* ARMV8A */,
1048 AArch64::ExtensionBitset({
1049 AArch64::AEK_CRC,
1050 AArch64::AEK_SHA2,
1051 AArch64::AEK_AES,
1052 AArch64::AEK_FP,
1053 AArch64::AEK_SIMD,
1054 AArch64::AEK_PERFMON,
1055 })
1056 },
1057 {
1058 13183,
1059 0 /* ARMV8A */,
1060 AArch64::ExtensionBitset({
1061 AArch64::AEK_CRC,
1062 AArch64::AEK_SHA2,
1063 AArch64::AEK_AES,
1064 AArch64::AEK_FP,
1065 AArch64::AEK_SIMD,
1066 AArch64::AEK_PERFMON,
1067 })
1068 },
1069 {
1070 13194,
1071 3 /* ARMV8_2A */,
1072 AArch64::ExtensionBitset({
1073 AArch64::AEK_SHA2,
1074 AArch64::AEK_AES,
1075 AArch64::AEK_FP,
1076 AArch64::AEK_SIMD,
1077 AArch64::AEK_FP16,
1078 AArch64::AEK_DOTPROD,
1079 AArch64::AEK_RCPC,
1080 AArch64::AEK_PERFMON,
1081 AArch64::AEK_CRC,
1082 AArch64::AEK_LSE,
1083 AArch64::AEK_RAS,
1084 AArch64::AEK_RDM,
1085 })
1086 },
1087 {
1088 13205,
1089 3 /* ARMV8_2A */,
1090 AArch64::ExtensionBitset({
1091 AArch64::AEK_SHA2,
1092 AArch64::AEK_AES,
1093 AArch64::AEK_FP,
1094 AArch64::AEK_SIMD,
1095 AArch64::AEK_FP16,
1096 AArch64::AEK_DOTPROD,
1097 AArch64::AEK_RCPC,
1098 AArch64::AEK_SSBS,
1099 AArch64::AEK_PERFMON,
1100 AArch64::AEK_CRC,
1101 AArch64::AEK_LSE,
1102 AArch64::AEK_RAS,
1103 AArch64::AEK_RDM,
1104 })
1105 },
1106 {
1107 13216,
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 13229,
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_PERFMON,
1137 AArch64::AEK_SSBS,
1138 AArch64::AEK_CRC,
1139 AArch64::AEK_LSE,
1140 AArch64::AEK_RAS,
1141 AArch64::AEK_RDM,
1142 })
1143 },
1144 {
1145 13240,
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_PROFILE,
1157 AArch64::AEK_SSBS,
1158 AArch64::AEK_CRC,
1159 AArch64::AEK_LSE,
1160 AArch64::AEK_RAS,
1161 AArch64::AEK_RDM,
1162 })
1163 },
1164 {
1165 13251,
1166 3 /* ARMV8_2A */,
1167 AArch64::ExtensionBitset({
1168 AArch64::AEK_SHA2,
1169 AArch64::AEK_AES,
1170 AArch64::AEK_FP,
1171 AArch64::AEK_SIMD,
1172 AArch64::AEK_FP16,
1173 AArch64::AEK_DOTPROD,
1174 AArch64::AEK_RCPC,
1175 AArch64::AEK_PERFMON,
1176 AArch64::AEK_PROFILE,
1177 AArch64::AEK_SSBS,
1178 AArch64::AEK_CRC,
1179 AArch64::AEK_LSE,
1180 AArch64::AEK_RAS,
1181 AArch64::AEK_RDM,
1182 })
1183 },
1184 {
1185 13264,
1186 3 /* ARMV8_2A */,
1187 AArch64::ExtensionBitset({
1188 AArch64::AEK_SHA2,
1189 AArch64::AEK_AES,
1190 AArch64::AEK_FP,
1191 AArch64::AEK_SIMD,
1192 AArch64::AEK_FP16,
1193 AArch64::AEK_DOTPROD,
1194 AArch64::AEK_FLAGM,
1195 AArch64::AEK_PAUTH,
1196 AArch64::AEK_PERFMON,
1197 AArch64::AEK_RCPC,
1198 AArch64::AEK_PROFILE,
1199 AArch64::AEK_SSBS,
1200 AArch64::AEK_CRC,
1201 AArch64::AEK_LSE,
1202 AArch64::AEK_RAS,
1203 AArch64::AEK_RDM,
1204 })
1205 },
1206 {
1207 13276,
1208 11 /* ARMV9A */,
1209 AArch64::ExtensionBitset({
1210 AArch64::AEK_SIMD,
1211 AArch64::AEK_PERFMON,
1212 AArch64::AEK_CCIDX,
1213 AArch64::AEK_SSBS,
1214 AArch64::AEK_ETE,
1215 AArch64::AEK_MTE,
1216 AArch64::AEK_FP16FML,
1217 AArch64::AEK_SVEBITPERM,
1218 AArch64::AEK_BF16,
1219 AArch64::AEK_I8MM,
1220 AArch64::AEK_PAUTH,
1221 AArch64::AEK_FLAGM,
1222 AArch64::AEK_SB,
1223 AArch64::AEK_SVE,
1224 AArch64::AEK_SVE2,
1225 AArch64::AEK_FPAC,
1226 AArch64::AEK_FCMA,
1227 AArch64::AEK_CRC,
1228 AArch64::AEK_DOTPROD,
1229 AArch64::AEK_FP,
1230 AArch64::AEK_FP16,
1231 AArch64::AEK_JSCVT,
1232 AArch64::AEK_LSE,
1233 AArch64::AEK_RAS,
1234 AArch64::AEK_RCPC,
1235 AArch64::AEK_RDM,
1236 })
1237 },
1238 {
1239 13288,
1240 11 /* ARMV9A */,
1241 AArch64::ExtensionBitset({
1242 AArch64::AEK_SIMD,
1243 AArch64::AEK_MTE,
1244 AArch64::AEK_CCIDX,
1245 AArch64::AEK_FP16FML,
1246 AArch64::AEK_SVE,
1247 AArch64::AEK_TRBE,
1248 AArch64::AEK_SVEBITPERM,
1249 AArch64::AEK_BF16,
1250 AArch64::AEK_ETE,
1251 AArch64::AEK_PERFMON,
1252 AArch64::AEK_I8MM,
1253 AArch64::AEK_PROFILE,
1254 AArch64::AEK_SB,
1255 AArch64::AEK_SSBS,
1256 AArch64::AEK_FP16,
1257 AArch64::AEK_PAUTH,
1258 AArch64::AEK_PREDRES,
1259 AArch64::AEK_FLAGM,
1260 AArch64::AEK_SVE2,
1261 AArch64::AEK_FCMA,
1262 AArch64::AEK_CRC,
1263 AArch64::AEK_DOTPROD,
1264 AArch64::AEK_FP,
1265 AArch64::AEK_JSCVT,
1266 AArch64::AEK_LSE,
1267 AArch64::AEK_RAS,
1268 AArch64::AEK_RCPC,
1269 AArch64::AEK_RDM,
1270 AArch64::AEK_FPAC,
1271 })
1272 },
1273 {
1274 13300,
1275 13 /* ARMV9_2A */,
1276 AArch64::ExtensionBitset({
1277 AArch64::AEK_MTE,
1278 AArch64::AEK_FP16FML,
1279 AArch64::AEK_CCIDX,
1280 AArch64::AEK_TRBE,
1281 AArch64::AEK_SVEBITPERM,
1282 AArch64::AEK_ETE,
1283 AArch64::AEK_PERFMON,
1284 AArch64::AEK_PROFILE,
1285 AArch64::AEK_SPE_EEF,
1286 AArch64::AEK_SB,
1287 AArch64::AEK_SSBS,
1288 AArch64::AEK_PAUTH,
1289 AArch64::AEK_FLAGM,
1290 AArch64::AEK_PREDRES,
1291 AArch64::AEK_SVE,
1292 AArch64::AEK_SVE2,
1293 AArch64::AEK_BF16,
1294 AArch64::AEK_FCMA,
1295 AArch64::AEK_CRC,
1296 AArch64::AEK_DOTPROD,
1297 AArch64::AEK_FP,
1298 AArch64::AEK_FP16,
1299 AArch64::AEK_I8MM,
1300 AArch64::AEK_JSCVT,
1301 AArch64::AEK_LSE,
1302 AArch64::AEK_SIMD,
1303 AArch64::AEK_RAS,
1304 AArch64::AEK_RCPC,
1305 AArch64::AEK_RDM,
1306 AArch64::AEK_FPAC,
1307 })
1308 },
1309 {
1310 13312,
1311 13 /* ARMV9_2A */,
1312 AArch64::ExtensionBitset({
1313 AArch64::AEK_MTE,
1314 AArch64::AEK_FP16FML,
1315 AArch64::AEK_CCIDX,
1316 AArch64::AEK_TRBE,
1317 AArch64::AEK_SVEBITPERM,
1318 AArch64::AEK_ETE,
1319 AArch64::AEK_PERFMON,
1320 AArch64::AEK_PROFILE,
1321 AArch64::AEK_SPE_EEF,
1322 AArch64::AEK_SB,
1323 AArch64::AEK_SSBS,
1324 AArch64::AEK_PAUTH,
1325 AArch64::AEK_FLAGM,
1326 AArch64::AEK_PREDRES,
1327 AArch64::AEK_SVE,
1328 AArch64::AEK_SVE2,
1329 AArch64::AEK_BF16,
1330 AArch64::AEK_FCMA,
1331 AArch64::AEK_CRC,
1332 AArch64::AEK_DOTPROD,
1333 AArch64::AEK_FP,
1334 AArch64::AEK_FP16,
1335 AArch64::AEK_I8MM,
1336 AArch64::AEK_JSCVT,
1337 AArch64::AEK_LSE,
1338 AArch64::AEK_SIMD,
1339 AArch64::AEK_RAS,
1340 AArch64::AEK_RCPC,
1341 AArch64::AEK_RDM,
1342 AArch64::AEK_FPAC,
1343 })
1344 },
1345 {
1346 13326,
1347 13 /* ARMV9_2A */,
1348 AArch64::ExtensionBitset({
1349 AArch64::AEK_MTE,
1350 AArch64::AEK_FP16FML,
1351 AArch64::AEK_CCIDX,
1352 AArch64::AEK_ETE,
1353 AArch64::AEK_PERFMON,
1354 AArch64::AEK_PROFILE,
1355 AArch64::AEK_SVEBITPERM,
1356 AArch64::AEK_SPE_EEF,
1357 AArch64::AEK_TRBE,
1358 AArch64::AEK_FLAGM,
1359 AArch64::AEK_PREDRES,
1360 AArch64::AEK_SB,
1361 AArch64::AEK_SSBS,
1362 AArch64::AEK_SVE,
1363 AArch64::AEK_SVE2,
1364 AArch64::AEK_BF16,
1365 AArch64::AEK_FCMA,
1366 AArch64::AEK_CRC,
1367 AArch64::AEK_DOTPROD,
1368 AArch64::AEK_FP,
1369 AArch64::AEK_FP16,
1370 AArch64::AEK_I8MM,
1371 AArch64::AEK_JSCVT,
1372 AArch64::AEK_LSE,
1373 AArch64::AEK_SIMD,
1374 AArch64::AEK_PAUTH,
1375 AArch64::AEK_RAS,
1376 AArch64::AEK_RCPC,
1377 AArch64::AEK_RDM,
1378 AArch64::AEK_FPAC,
1379 })
1380 },
1381 {
1382 13338,
1383 14 /* ARMV9_3A */,
1384 AArch64::ExtensionBitset({
1385 AArch64::AEK_SIMD,
1386 AArch64::AEK_CLRBHB,
1387 AArch64::AEK_CHK,
1388 AArch64::AEK_FP,
1389 AArch64::AEK_PERFMON,
1390 AArch64::AEK_SPECRES2,
1391 AArch64::AEK_SSBS,
1392 AArch64::AEK_RDM,
1393 AArch64::AEK_VH,
1394 AArch64::AEK_BF16,
1395 AArch64::AEK_DOTPROD,
1396 AArch64::AEK_FP16FML,
1397 AArch64::AEK_FP16,
1398 AArch64::AEK_MPAM,
1399 AArch64::AEK_PROFILE,
1400 AArch64::AEK_SVE,
1401 AArch64::AEK_CCIDX,
1402 AArch64::AEK_FCMA,
1403 AArch64::AEK_FPAC,
1404 AArch64::AEK_JSCVT,
1405 AArch64::AEK_AM,
1406 AArch64::AEK_RAS,
1407 AArch64::AEK_SEL2,
1408 AArch64::AEK_TRACEV8_4,
1409 AArch64::AEK_ALTERNATIVENZCV,
1410 AArch64::AEK_FRINT3264,
1411 AArch64::AEK_MTE,
1412 AArch64::AEK_FINEGRAINEDTRAPS,
1413 AArch64::AEK_SPE_EEF,
1414 AArch64::AEK_RCPC3,
1415 AArch64::AEK_ETE,
1416 AArch64::AEK_SVEBITPERM,
1417 AArch64::AEK_SVE2,
1418 AArch64::AEK_TRBE,
1419 AArch64::AEK_SME,
1420 AArch64::AEK_SME2,
1421 })
1422 },
1423 {
1424 13345,
1425 1 /* ARMV8R */,
1426 AArch64::ExtensionBitset({
1427 AArch64::AEK_PERFMON,
1428 AArch64::AEK_FP16,
1429 AArch64::AEK_FP16FML,
1430 AArch64::AEK_SSBS,
1431 AArch64::AEK_PREDRES,
1432 AArch64::AEK_SB,
1433 AArch64::AEK_RDM,
1434 AArch64::AEK_DOTPROD,
1435 AArch64::AEK_FCMA,
1436 AArch64::AEK_JSCVT,
1437 AArch64::AEK_CCDP,
1438 AArch64::AEK_FLAGM,
1439 AArch64::AEK_CRC,
1440 AArch64::AEK_LSE,
1441 AArch64::AEK_RAS,
1442 AArch64::AEK_FP,
1443 AArch64::AEK_SIMD,
1444 AArch64::AEK_PAUTH,
1445 AArch64::AEK_RCPC,
1446 AArch64::AEK_FPAC,
1447 })
1448 },
1449 {
1450 13356,
1451 1 /* ARMV8R */,
1452 AArch64::ExtensionBitset({
1453 AArch64::AEK_PERFMON,
1454 AArch64::AEK_FP16,
1455 AArch64::AEK_FP16FML,
1456 AArch64::AEK_SSBS,
1457 AArch64::AEK_PREDRES,
1458 AArch64::AEK_SB,
1459 AArch64::AEK_RDM,
1460 AArch64::AEK_DOTPROD,
1461 AArch64::AEK_FCMA,
1462 AArch64::AEK_JSCVT,
1463 AArch64::AEK_CCDP,
1464 AArch64::AEK_LSE,
1465 AArch64::AEK_FLAGM,
1466 AArch64::AEK_CRC,
1467 AArch64::AEK_FP,
1468 AArch64::AEK_SIMD,
1469 AArch64::AEK_PAUTH,
1470 AArch64::AEK_RAS,
1471 AArch64::AEK_RCPC,
1472 AArch64::AEK_FPAC,
1473 })
1474 },
1475 {
1476 13369,
1477 3 /* ARMV8_2A */,
1478 AArch64::ExtensionBitset({
1479 AArch64::AEK_SHA2,
1480 AArch64::AEK_AES,
1481 AArch64::AEK_FP,
1482 AArch64::AEK_SIMD,
1483 AArch64::AEK_RCPC,
1484 AArch64::AEK_PERFMON,
1485 AArch64::AEK_PROFILE,
1486 AArch64::AEK_FP16,
1487 AArch64::AEK_DOTPROD,
1488 AArch64::AEK_SSBS,
1489 AArch64::AEK_CRC,
1490 AArch64::AEK_LSE,
1491 AArch64::AEK_RAS,
1492 AArch64::AEK_RDM,
1493 })
1494 },
1495 {
1496 13379,
1497 3 /* ARMV8_2A */,
1498 AArch64::ExtensionBitset({
1499 AArch64::AEK_SHA2,
1500 AArch64::AEK_AES,
1501 AArch64::AEK_FP,
1502 AArch64::AEK_SIMD,
1503 AArch64::AEK_RCPC_IMMO,
1504 AArch64::AEK_PERFMON,
1505 AArch64::AEK_PROFILE,
1506 AArch64::AEK_FP16,
1507 AArch64::AEK_DOTPROD,
1508 AArch64::AEK_PAUTH,
1509 AArch64::AEK_SSBS,
1510 AArch64::AEK_FLAGM,
1511 AArch64::AEK_LSE2,
1512 AArch64::AEK_RCPC,
1513 AArch64::AEK_CRC,
1514 AArch64::AEK_LSE,
1515 AArch64::AEK_RAS,
1516 AArch64::AEK_RDM,
1517 })
1518 },
1519 {
1520 13390,
1521 11 /* ARMV9A */,
1522 AArch64::ExtensionBitset({
1523 AArch64::AEK_SIMD,
1524 AArch64::AEK_PERFMON,
1525 AArch64::AEK_I8MM,
1526 AArch64::AEK_BF16,
1527 AArch64::AEK_AM,
1528 AArch64::AEK_MTE,
1529 AArch64::AEK_ETE,
1530 AArch64::AEK_SVEBITPERM,
1531 AArch64::AEK_FP16FML,
1532 AArch64::AEK_CCIDX,
1533 AArch64::AEK_PAUTH,
1534 AArch64::AEK_SSBS,
1535 AArch64::AEK_SB,
1536 AArch64::AEK_SVE,
1537 AArch64::AEK_SVE2,
1538 AArch64::AEK_FLAGM,
1539 AArch64::AEK_FCMA,
1540 AArch64::AEK_CRC,
1541 AArch64::AEK_DOTPROD,
1542 AArch64::AEK_FP,
1543 AArch64::AEK_FP16,
1544 AArch64::AEK_JSCVT,
1545 AArch64::AEK_LSE,
1546 AArch64::AEK_RAS,
1547 AArch64::AEK_RCPC,
1548 AArch64::AEK_RDM,
1549 AArch64::AEK_FPAC,
1550 })
1551 },
1552 {
1553 13400,
1554 11 /* ARMV9A */,
1555 AArch64::ExtensionBitset({
1556 AArch64::AEK_SVE,
1557 AArch64::AEK_SIMD,
1558 AArch64::AEK_PERFMON,
1559 AArch64::AEK_ETE,
1560 AArch64::AEK_TRBE,
1561 AArch64::AEK_PROFILE,
1562 AArch64::AEK_BF16,
1563 AArch64::AEK_I8MM,
1564 AArch64::AEK_MTE,
1565 AArch64::AEK_SVEBITPERM,
1566 AArch64::AEK_FP16,
1567 AArch64::AEK_FP16FML,
1568 AArch64::AEK_CCIDX,
1569 AArch64::AEK_SB,
1570 AArch64::AEK_PAUTH,
1571 AArch64::AEK_PREDRES,
1572 AArch64::AEK_FLAGM,
1573 AArch64::AEK_SSBS,
1574 AArch64::AEK_SVE2,
1575 AArch64::AEK_FCMA,
1576 AArch64::AEK_CRC,
1577 AArch64::AEK_FP,
1578 AArch64::AEK_JSCVT,
1579 AArch64::AEK_LSE,
1580 AArch64::AEK_RAS,
1581 AArch64::AEK_RCPC,
1582 AArch64::AEK_RDM,
1583 AArch64::AEK_DOTPROD,
1584 AArch64::AEK_FPAC,
1585 })
1586 },
1587 {
1588 13410,
1589 13 /* ARMV9_2A */,
1590 AArch64::ExtensionBitset({
1591 AArch64::AEK_PERFMON,
1592 AArch64::AEK_ETE,
1593 AArch64::AEK_TRBE,
1594 AArch64::AEK_PROFILE,
1595 AArch64::AEK_MTE,
1596 AArch64::AEK_SVEBITPERM,
1597 AArch64::AEK_FP16FML,
1598 AArch64::AEK_SPE_EEF,
1599 AArch64::AEK_CCIDX,
1600 AArch64::AEK_SB,
1601 AArch64::AEK_SSBS,
1602 AArch64::AEK_PAUTH,
1603 AArch64::AEK_FLAGM,
1604 AArch64::AEK_PREDRES,
1605 AArch64::AEK_SVE,
1606 AArch64::AEK_SVE2,
1607 AArch64::AEK_FCMA,
1608 AArch64::AEK_CRC,
1609 AArch64::AEK_DOTPROD,
1610 AArch64::AEK_FP,
1611 AArch64::AEK_FP16,
1612 AArch64::AEK_I8MM,
1613 AArch64::AEK_JSCVT,
1614 AArch64::AEK_LSE,
1615 AArch64::AEK_SIMD,
1616 AArch64::AEK_RAS,
1617 AArch64::AEK_RCPC,
1618 AArch64::AEK_RDM,
1619 AArch64::AEK_BF16,
1620 AArch64::AEK_FPAC,
1621 })
1622 },
1623 {
1624 13420,
1625 13 /* ARMV9_2A */,
1626 AArch64::ExtensionBitset({
1627 AArch64::AEK_MTE,
1628 AArch64::AEK_FP16FML,
1629 AArch64::AEK_CCIDX,
1630 AArch64::AEK_ETE,
1631 AArch64::AEK_PERFMON,
1632 AArch64::AEK_PROFILE,
1633 AArch64::AEK_SVEBITPERM,
1634 AArch64::AEK_SPE_EEF,
1635 AArch64::AEK_TRBE,
1636 AArch64::AEK_FLAGM,
1637 AArch64::AEK_PREDRES,
1638 AArch64::AEK_SB,
1639 AArch64::AEK_SSBS,
1640 AArch64::AEK_SVE,
1641 AArch64::AEK_SVE2,
1642 AArch64::AEK_BF16,
1643 AArch64::AEK_FCMA,
1644 AArch64::AEK_CRC,
1645 AArch64::AEK_DOTPROD,
1646 AArch64::AEK_FP,
1647 AArch64::AEK_FP16,
1648 AArch64::AEK_I8MM,
1649 AArch64::AEK_JSCVT,
1650 AArch64::AEK_LSE,
1651 AArch64::AEK_SIMD,
1652 AArch64::AEK_PAUTH,
1653 AArch64::AEK_RAS,
1654 AArch64::AEK_RCPC,
1655 AArch64::AEK_RDM,
1656 AArch64::AEK_FPAC,
1657 })
1658 },
1659 {
1660 13432,
1661 14 /* ARMV9_3A */,
1662 AArch64::ExtensionBitset({
1663 AArch64::AEK_SIMD,
1664 AArch64::AEK_CLRBHB,
1665 AArch64::AEK_CHK,
1666 AArch64::AEK_FP,
1667 AArch64::AEK_PERFMON,
1668 AArch64::AEK_SPECRES2,
1669 AArch64::AEK_SSBS,
1670 AArch64::AEK_RDM,
1671 AArch64::AEK_VH,
1672 AArch64::AEK_BF16,
1673 AArch64::AEK_DOTPROD,
1674 AArch64::AEK_FP16FML,
1675 AArch64::AEK_FP16,
1676 AArch64::AEK_MPAM,
1677 AArch64::AEK_PROFILE,
1678 AArch64::AEK_SVE,
1679 AArch64::AEK_CCIDX,
1680 AArch64::AEK_FCMA,
1681 AArch64::AEK_FPAC,
1682 AArch64::AEK_JSCVT,
1683 AArch64::AEK_AM,
1684 AArch64::AEK_RAS,
1685 AArch64::AEK_SEL2,
1686 AArch64::AEK_TRACEV8_4,
1687 AArch64::AEK_ALTERNATIVENZCV,
1688 AArch64::AEK_FRINT3264,
1689 AArch64::AEK_MTE,
1690 AArch64::AEK_FINEGRAINEDTRAPS,
1691 AArch64::AEK_SPE_EEF,
1692 AArch64::AEK_RCPC3,
1693 AArch64::AEK_ETE,
1694 AArch64::AEK_SVEBITPERM,
1695 AArch64::AEK_SVE2,
1696 AArch64::AEK_TRBE,
1697 AArch64::AEK_SME,
1698 AArch64::AEK_SME2,
1699 })
1700 },
1701 {
1702 13443,
1703 14 /* ARMV9_3A */,
1704 AArch64::ExtensionBitset({
1705 AArch64::AEK_SIMD,
1706 AArch64::AEK_CLRBHB,
1707 AArch64::AEK_CHK,
1708 AArch64::AEK_FP,
1709 AArch64::AEK_PERFMON,
1710 AArch64::AEK_SPECRES2,
1711 AArch64::AEK_SSBS,
1712 AArch64::AEK_RDM,
1713 AArch64::AEK_VH,
1714 AArch64::AEK_BF16,
1715 AArch64::AEK_DOTPROD,
1716 AArch64::AEK_FP16FML,
1717 AArch64::AEK_FP16,
1718 AArch64::AEK_MPAM,
1719 AArch64::AEK_PROFILE,
1720 AArch64::AEK_SVE,
1721 AArch64::AEK_CCIDX,
1722 AArch64::AEK_FCMA,
1723 AArch64::AEK_FPAC,
1724 AArch64::AEK_JSCVT,
1725 AArch64::AEK_AM,
1726 AArch64::AEK_RAS,
1727 AArch64::AEK_SEL2,
1728 AArch64::AEK_TRACEV8_4,
1729 AArch64::AEK_ALTERNATIVENZCV,
1730 AArch64::AEK_FRINT3264,
1731 AArch64::AEK_MTE,
1732 AArch64::AEK_FINEGRAINEDTRAPS,
1733 AArch64::AEK_SPE_EEF,
1734 AArch64::AEK_RCPC3,
1735 AArch64::AEK_ETE,
1736 AArch64::AEK_SVEBITPERM,
1737 AArch64::AEK_SVE2,
1738 AArch64::AEK_TRBE,
1739 AArch64::AEK_SME,
1740 AArch64::AEK_SME2,
1741 })
1742 },
1743 {
1744 13452,
1745 13 /* ARMV9_2A */,
1746 AArch64::ExtensionBitset({
1747 AArch64::AEK_MTE,
1748 AArch64::AEK_FP16FML,
1749 AArch64::AEK_CCIDX,
1750 AArch64::AEK_ETE,
1751 AArch64::AEK_PERFMON,
1752 AArch64::AEK_PROFILE,
1753 AArch64::AEK_SVEBITPERM,
1754 AArch64::AEK_SPE_EEF,
1755 AArch64::AEK_TRBE,
1756 AArch64::AEK_FLAGM,
1757 AArch64::AEK_PREDRES,
1758 AArch64::AEK_SB,
1759 AArch64::AEK_SSBS,
1760 AArch64::AEK_SVE,
1761 AArch64::AEK_SVE2,
1762 AArch64::AEK_BF16,
1763 AArch64::AEK_FCMA,
1764 AArch64::AEK_CRC,
1765 AArch64::AEK_DOTPROD,
1766 AArch64::AEK_FP,
1767 AArch64::AEK_FP16,
1768 AArch64::AEK_I8MM,
1769 AArch64::AEK_JSCVT,
1770 AArch64::AEK_LSE,
1771 AArch64::AEK_SIMD,
1772 AArch64::AEK_PAUTH,
1773 AArch64::AEK_RAS,
1774 AArch64::AEK_RCPC,
1775 AArch64::AEK_RDM,
1776 AArch64::AEK_FPAC,
1777 AArch64::AEK_SVEAES,
1778 AArch64::AEK_SVESHA3,
1779 AArch64::AEK_SVESM4,
1780 })
1781 },
1782 {
1783 13457,
1784 11 /* ARMV9A */,
1785 AArch64::ExtensionBitset({
1786 AArch64::AEK_BF16,
1787 AArch64::AEK_PROFILE,
1788 AArch64::AEK_PERFMON,
1789 AArch64::AEK_ETE,
1790 AArch64::AEK_I8MM,
1791 AArch64::AEK_SIMD,
1792 AArch64::AEK_SVEBITPERM,
1793 AArch64::AEK_FP16FML,
1794 AArch64::AEK_MTE,
1795 AArch64::AEK_CCIDX,
1796 AArch64::AEK_SVE,
1797 AArch64::AEK_SVE2,
1798 AArch64::AEK_SSBS,
1799 AArch64::AEK_FP16,
1800 AArch64::AEK_DOTPROD,
1801 AArch64::AEK_FCMA,
1802 AArch64::AEK_CRC,
1803 AArch64::AEK_FP,
1804 AArch64::AEK_JSCVT,
1805 AArch64::AEK_LSE,
1806 AArch64::AEK_PAUTH,
1807 AArch64::AEK_RAS,
1808 AArch64::AEK_RCPC,
1809 AArch64::AEK_RDM,
1810 AArch64::AEK_FPAC,
1811 AArch64::AEK_SVESM4,
1812 AArch64::AEK_SVEAES,
1813 AArch64::AEK_SVESHA3,
1814 })
1815 },
1816 {
1817 13463,
1818 3 /* ARMV8_2A */,
1819 AArch64::ExtensionBitset({
1820 AArch64::AEK_SHA2,
1821 AArch64::AEK_AES,
1822 AArch64::AEK_DOTPROD,
1823 AArch64::AEK_FP,
1824 AArch64::AEK_FP16,
1825 AArch64::AEK_SIMD,
1826 AArch64::AEK_RCPC,
1827 AArch64::AEK_SSBS,
1828 AArch64::AEK_PERFMON,
1829 AArch64::AEK_CRC,
1830 AArch64::AEK_LSE,
1831 AArch64::AEK_RAS,
1832 AArch64::AEK_RDM,
1833 })
1834 },
1835 {
1836 13475,
1837 3 /* ARMV8_2A */,
1838 AArch64::ExtensionBitset({
1839 AArch64::AEK_SHA2,
1840 AArch64::AEK_AES,
1841 AArch64::AEK_DOTPROD,
1842 AArch64::AEK_FP,
1843 AArch64::AEK_FP16,
1844 AArch64::AEK_SIMD,
1845 AArch64::AEK_RCPC,
1846 AArch64::AEK_PROFILE,
1847 AArch64::AEK_SSBS,
1848 AArch64::AEK_PERFMON,
1849 AArch64::AEK_CRC,
1850 AArch64::AEK_LSE,
1851 AArch64::AEK_RAS,
1852 AArch64::AEK_RDM,
1853 })
1854 },
1855 {
1856 12764,
1857 11 /* ARMV9A */,
1858 AArch64::ExtensionBitset({
1859 AArch64::AEK_BF16,
1860 AArch64::AEK_ETE,
1861 AArch64::AEK_FP16FML,
1862 AArch64::AEK_I8MM,
1863 AArch64::AEK_MTE,
1864 AArch64::AEK_SVE2,
1865 AArch64::AEK_SVEBITPERM,
1866 AArch64::AEK_TRBE,
1867 AArch64::AEK_PERFMON,
1868 AArch64::AEK_CCIDX,
1869 AArch64::AEK_DOTPROD,
1870 AArch64::AEK_FP16,
1871 AArch64::AEK_SB,
1872 AArch64::AEK_SSBS,
1873 AArch64::AEK_SVE,
1874 AArch64::AEK_FCMA,
1875 AArch64::AEK_CRC,
1876 AArch64::AEK_FP,
1877 AArch64::AEK_JSCVT,
1878 AArch64::AEK_LSE,
1879 AArch64::AEK_SIMD,
1880 AArch64::AEK_PAUTH,
1881 AArch64::AEK_RAS,
1882 AArch64::AEK_RCPC,
1883 AArch64::AEK_RDM,
1884 AArch64::AEK_FPAC,
1885 })
1886 },
1887 {
1888 13487,
1889 13 /* ARMV9_2A */,
1890 AArch64::ExtensionBitset({
1891 AArch64::AEK_ETE,
1892 AArch64::AEK_FP16FML,
1893 AArch64::AEK_FP16,
1894 AArch64::AEK_MTE,
1895 AArch64::AEK_PERFMON,
1896 AArch64::AEK_RAND,
1897 AArch64::AEK_PROFILE,
1898 AArch64::AEK_SPE_EEF,
1899 AArch64::AEK_SVEBITPERM,
1900 AArch64::AEK_CCIDX,
1901 AArch64::AEK_SSBS,
1902 AArch64::AEK_SB,
1903 AArch64::AEK_PREDRES,
1904 AArch64::AEK_PAUTH,
1905 AArch64::AEK_FLAGM,
1906 AArch64::AEK_SVE,
1907 AArch64::AEK_SVE2,
1908 AArch64::AEK_BF16,
1909 AArch64::AEK_FCMA,
1910 AArch64::AEK_CRC,
1911 AArch64::AEK_DOTPROD,
1912 AArch64::AEK_FP,
1913 AArch64::AEK_I8MM,
1914 AArch64::AEK_JSCVT,
1915 AArch64::AEK_LSE,
1916 AArch64::AEK_RAS,
1917 AArch64::AEK_RCPC,
1918 AArch64::AEK_RDM,
1919 AArch64::AEK_SIMD,
1920 AArch64::AEK_FPAC,
1921 })
1922 },
1923 {
1924 13499,
1925 5 /* ARMV8_4A */,
1926 AArch64::ExtensionBitset({
1927 AArch64::AEK_BF16,
1928 AArch64::AEK_CCDP,
1929 AArch64::AEK_SHA2,
1930 AArch64::AEK_AES,
1931 AArch64::AEK_FP,
1932 AArch64::AEK_FP16FML,
1933 AArch64::AEK_FP16,
1934 AArch64::AEK_I8MM,
1935 AArch64::AEK_SIMD,
1936 AArch64::AEK_PERFMON,
1937 AArch64::AEK_RAND,
1938 AArch64::AEK_PROFILE,
1939 AArch64::AEK_SSBS,
1940 AArch64::AEK_SVE,
1941 AArch64::AEK_CCIDX,
1942 AArch64::AEK_SHA3,
1943 AArch64::AEK_SM4,
1944 AArch64::AEK_DOTPROD,
1945 AArch64::AEK_FCMA,
1946 AArch64::AEK_CRC,
1947 AArch64::AEK_JSCVT,
1948 AArch64::AEK_LSE,
1949 AArch64::AEK_PAUTH,
1950 AArch64::AEK_RAS,
1951 AArch64::AEK_RCPC,
1952 AArch64::AEK_RDM,
1953 AArch64::AEK_FPAC,
1954 })
1955 },
1956 {
1957 13515,
1958 5 /* ARMV8_4A */,
1959 AArch64::ExtensionBitset({
1960 AArch64::AEK_BF16,
1961 AArch64::AEK_CCDP,
1962 AArch64::AEK_SHA2,
1963 AArch64::AEK_AES,
1964 AArch64::AEK_FP,
1965 AArch64::AEK_FP16FML,
1966 AArch64::AEK_FP16,
1967 AArch64::AEK_I8MM,
1968 AArch64::AEK_SIMD,
1969 AArch64::AEK_PERFMON,
1970 AArch64::AEK_RAND,
1971 AArch64::AEK_PROFILE,
1972 AArch64::AEK_SSBS,
1973 AArch64::AEK_SVE,
1974 AArch64::AEK_CCIDX,
1975 AArch64::AEK_SHA3,
1976 AArch64::AEK_SM4,
1977 AArch64::AEK_DOTPROD,
1978 AArch64::AEK_FCMA,
1979 AArch64::AEK_CRC,
1980 AArch64::AEK_JSCVT,
1981 AArch64::AEK_LSE,
1982 AArch64::AEK_PAUTH,
1983 AArch64::AEK_RAS,
1984 AArch64::AEK_RCPC,
1985 AArch64::AEK_RDM,
1986 })
1987 },
1988 {
1989 13527,
1990 11 /* ARMV9A */,
1991 AArch64::ExtensionBitset({
1992 AArch64::AEK_BF16,
1993 AArch64::AEK_PROFILE,
1994 AArch64::AEK_PERFMON,
1995 AArch64::AEK_ETE,
1996 AArch64::AEK_I8MM,
1997 AArch64::AEK_SIMD,
1998 AArch64::AEK_SVEBITPERM,
1999 AArch64::AEK_FP16FML,
2000 AArch64::AEK_MTE,
2001 AArch64::AEK_RAND,
2002 AArch64::AEK_CCIDX,
2003 AArch64::AEK_SVE,
2004 AArch64::AEK_SVE2,
2005 AArch64::AEK_SSBS,
2006 AArch64::AEK_FP16,
2007 AArch64::AEK_DOTPROD,
2008 AArch64::AEK_FCMA,
2009 AArch64::AEK_CRC,
2010 AArch64::AEK_FP,
2011 AArch64::AEK_JSCVT,
2012 AArch64::AEK_LSE,
2013 AArch64::AEK_PAUTH,
2014 AArch64::AEK_RAS,
2015 AArch64::AEK_RCPC,
2016 AArch64::AEK_RDM,
2017 AArch64::AEK_FPAC,
2018 })
2019 },
2020 {
2021 13539,
2022 13 /* ARMV9_2A */,
2023 AArch64::ExtensionBitset({
2024 AArch64::AEK_ETE,
2025 AArch64::AEK_FP16FML,
2026 AArch64::AEK_FP16,
2027 AArch64::AEK_LS64,
2028 AArch64::AEK_MTE,
2029 AArch64::AEK_PERFMON,
2030 AArch64::AEK_RAND,
2031 AArch64::AEK_PROFILE,
2032 AArch64::AEK_CCIDX,
2033 AArch64::AEK_SPE_EEF,
2034 AArch64::AEK_SVEBITPERM,
2035 AArch64::AEK_BRBE,
2036 AArch64::AEK_SSBS,
2037 AArch64::AEK_SB,
2038 AArch64::AEK_PREDRES,
2039 AArch64::AEK_PAUTH,
2040 AArch64::AEK_FLAGM,
2041 AArch64::AEK_SVE,
2042 AArch64::AEK_SVE2,
2043 AArch64::AEK_BF16,
2044 AArch64::AEK_FCMA,
2045 AArch64::AEK_CRC,
2046 AArch64::AEK_DOTPROD,
2047 AArch64::AEK_FP,
2048 AArch64::AEK_I8MM,
2049 AArch64::AEK_JSCVT,
2050 AArch64::AEK_LSE,
2051 AArch64::AEK_SIMD,
2052 AArch64::AEK_RAS,
2053 AArch64::AEK_RCPC,
2054 AArch64::AEK_RDM,
2055 AArch64::AEK_RME,
2056 AArch64::AEK_FPAC,
2057 })
2058 },
2059 {
2060 12786,
2061 13 /* ARMV9_2A */,
2062 AArch64::ExtensionBitset({
2063 AArch64::AEK_ETE,
2064 AArch64::AEK_FP16FML,
2065 AArch64::AEK_FP16,
2066 AArch64::AEK_LS64,
2067 AArch64::AEK_MTE,
2068 AArch64::AEK_PERFMON,
2069 AArch64::AEK_RAND,
2070 AArch64::AEK_PROFILE,
2071 AArch64::AEK_SPE_EEF,
2072 AArch64::AEK_SVEBITPERM,
2073 AArch64::AEK_BRBE,
2074 AArch64::AEK_SSBS,
2075 AArch64::AEK_SB,
2076 AArch64::AEK_PREDRES,
2077 AArch64::AEK_PAUTH,
2078 AArch64::AEK_FLAGM,
2079 AArch64::AEK_CCIDX,
2080 AArch64::AEK_SVE,
2081 AArch64::AEK_SVE2,
2082 AArch64::AEK_BF16,
2083 AArch64::AEK_FCMA,
2084 AArch64::AEK_CRC,
2085 AArch64::AEK_DOTPROD,
2086 AArch64::AEK_FP,
2087 AArch64::AEK_I8MM,
2088 AArch64::AEK_JSCVT,
2089 AArch64::AEK_LSE,
2090 AArch64::AEK_SIMD,
2091 AArch64::AEK_RAS,
2092 AArch64::AEK_RCPC,
2093 AArch64::AEK_RDM,
2094 AArch64::AEK_RME,
2095 AArch64::AEK_FPAC,
2096 })
2097 },
2098 {
2099 13551,
2100 0 /* ARMV8A */,
2101 AArch64::ExtensionBitset({
2102 AArch64::AEK_CRC,
2103 AArch64::AEK_SHA2,
2104 AArch64::AEK_AES,
2105 AArch64::AEK_PERFMON,
2106 AArch64::AEK_SIMD,
2107 AArch64::AEK_FP,
2108 })
2109 },
2110 {
2111 13561,
2112 3 /* ARMV8_2A */,
2113 AArch64::ExtensionBitset({
2114 AArch64::AEK_SHA2,
2115 AArch64::AEK_AES,
2116 AArch64::AEK_DOTPROD,
2117 AArch64::AEK_FP16,
2118 AArch64::AEK_PERFMON,
2119 AArch64::AEK_CRC,
2120 AArch64::AEK_FP,
2121 AArch64::AEK_LSE,
2122 AArch64::AEK_SIMD,
2123 AArch64::AEK_RAS,
2124 AArch64::AEK_RDM,
2125 })
2126 },
2127 {
2128 13571,
2129 3 /* ARMV8_2A */,
2130 AArch64::ExtensionBitset({
2131 AArch64::AEK_SHA2,
2132 AArch64::AEK_AES,
2133 AArch64::AEK_DOTPROD,
2134 AArch64::AEK_FP16,
2135 AArch64::AEK_PERFMON,
2136 AArch64::AEK_CRC,
2137 AArch64::AEK_FP,
2138 AArch64::AEK_LSE,
2139 AArch64::AEK_SIMD,
2140 AArch64::AEK_RAS,
2141 AArch64::AEK_RDM,
2142 })
2143 },
2144 {
2145 13581,
2146 0 /* ARMV8A */,
2147 AArch64::ExtensionBitset({
2148 AArch64::AEK_CRC,
2149 AArch64::AEK_SHA2,
2150 AArch64::AEK_AES,
2151 AArch64::AEK_FP,
2152 AArch64::AEK_SIMD,
2153 AArch64::AEK_PERFMON,
2154 AArch64::AEK_RDM,
2155 })
2156 },
2157 {
2158 13588,
2159 5 /* ARMV8_4A */,
2160 AArch64::ExtensionBitset({
2161 AArch64::AEK_SHA2,
2162 AArch64::AEK_AES,
2163 AArch64::AEK_FP,
2164 AArch64::AEK_SIMD,
2165 AArch64::AEK_PROFILE,
2166 AArch64::AEK_PERFMON,
2167 AArch64::AEK_CRC,
2168 AArch64::AEK_CCIDX,
2169 AArch64::AEK_LSE,
2170 AArch64::AEK_RDM,
2171 AArch64::AEK_RAS,
2172 AArch64::AEK_RCPC,
2173 })
2174 },
2175 {
2176 13596,
2177 0 /* ARMV8A */,
2178 AArch64::ExtensionBitset({
2179 AArch64::AEK_CRC,
2180 AArch64::AEK_SHA2,
2181 AArch64::AEK_AES,
2182 AArch64::AEK_FP,
2183 AArch64::AEK_SIMD,
2184 AArch64::AEK_PERFMON,
2185 })
2186 },
2187 {
2188 13601,
2189 0 /* ARMV8A */,
2190 AArch64::ExtensionBitset({
2191 AArch64::AEK_CRC,
2192 AArch64::AEK_SHA2,
2193 AArch64::AEK_AES,
2194 AArch64::AEK_FP,
2195 AArch64::AEK_PERFMON,
2196 AArch64::AEK_SIMD,
2197 })
2198 },
2199 {
2200 13610,
2201 0 /* ARMV8A */,
2202 AArch64::ExtensionBitset({
2203 AArch64::AEK_CRC,
2204 AArch64::AEK_SHA2,
2205 AArch64::AEK_AES,
2206 AArch64::AEK_FP,
2207 AArch64::AEK_PERFMON,
2208 AArch64::AEK_SIMD,
2209 })
2210 },
2211 {
2212 13622,
2213 0 /* ARMV8A */,
2214 AArch64::ExtensionBitset({
2215 AArch64::AEK_CRC,
2216 AArch64::AEK_SHA2,
2217 AArch64::AEK_AES,
2218 AArch64::AEK_FP,
2219 AArch64::AEK_PERFMON,
2220 AArch64::AEK_SIMD,
2221 })
2222 },
2223 {
2224 13634,
2225 0 /* ARMV8A */,
2226 AArch64::ExtensionBitset({
2227 AArch64::AEK_CRC,
2228 AArch64::AEK_SHA2,
2229 AArch64::AEK_AES,
2230 AArch64::AEK_FP,
2231 AArch64::AEK_PERFMON,
2232 AArch64::AEK_SIMD,
2233 })
2234 },
2235 {
2236 13646,
2237 2 /* ARMV8_1A */,
2238 AArch64::ExtensionBitset({
2239 AArch64::AEK_CRC,
2240 AArch64::AEK_SHA2,
2241 AArch64::AEK_AES,
2242 AArch64::AEK_FP,
2243 AArch64::AEK_SIMD,
2244 AArch64::AEK_LSE,
2245 AArch64::AEK_RDM,
2246 })
2247 },
2248 {
2249 13659,
2250 4 /* ARMV8_3A */,
2251 AArch64::ExtensionBitset({
2252 AArch64::AEK_CRC,
2253 AArch64::AEK_SHA2,
2254 AArch64::AEK_AES,
2255 AArch64::AEK_FP,
2256 AArch64::AEK_SIMD,
2257 AArch64::AEK_LSE,
2258 AArch64::AEK_CCIDX,
2259 AArch64::AEK_PAUTH,
2260 AArch64::AEK_PERFMON,
2261 AArch64::AEK_FCMA,
2262 AArch64::AEK_JSCVT,
2263 AArch64::AEK_RAS,
2264 AArch64::AEK_RCPC,
2265 AArch64::AEK_RDM,
2266 })
2267 },
2268 {
2269 13673,
2270 3 /* ARMV8_2A */,
2271 AArch64::ExtensionBitset({
2272 AArch64::AEK_SHA2,
2273 AArch64::AEK_AES,
2274 AArch64::AEK_FP,
2275 AArch64::AEK_SIMD,
2276 AArch64::AEK_PERFMON,
2277 AArch64::AEK_PROFILE,
2278 AArch64::AEK_FP16,
2279 AArch64::AEK_FP16FML,
2280 AArch64::AEK_DOTPROD,
2281 AArch64::AEK_JSCVT,
2282 AArch64::AEK_FCMA,
2283 AArch64::AEK_CRC,
2284 AArch64::AEK_LSE,
2285 AArch64::AEK_RAS,
2286 AArch64::AEK_RDM,
2287 })
2288 },
2289 {
2290 13680,
2291 8 /* ARMV8_7A */,
2292 AArch64::ExtensionBitset({
2293 AArch64::AEK_SVE,
2294 AArch64::AEK_SVE2,
2295 AArch64::AEK_SVEBITPERM,
2296 AArch64::AEK_SVEAES,
2297 AArch64::AEK_SVESM4,
2298 AArch64::AEK_SVESHA3,
2299 AArch64::AEK_FP16,
2300 AArch64::AEK_FP16FML,
2301 AArch64::AEK_PERFMON,
2302 AArch64::AEK_FLAGM,
2303 AArch64::AEK_PREDRES,
2304 AArch64::AEK_SB,
2305 AArch64::AEK_SSBS,
2306 AArch64::AEK_CCIDX,
2307 AArch64::AEK_RAND,
2308 AArch64::AEK_ETE,
2309 AArch64::AEK_TRBE,
2310 AArch64::AEK_PROFILE,
2311 AArch64::AEK_SPE_EEF,
2312 AArch64::AEK_NMI,
2313 AArch64::AEK_HBC,
2314 AArch64::AEK_RCPC3,
2315 AArch64::AEK_BF16,
2316 AArch64::AEK_FCMA,
2317 AArch64::AEK_CRC,
2318 AArch64::AEK_DOTPROD,
2319 AArch64::AEK_FP,
2320 AArch64::AEK_I8MM,
2321 AArch64::AEK_JSCVT,
2322 AArch64::AEK_LSE,
2323 AArch64::AEK_SIMD,
2324 AArch64::AEK_PAUTH,
2325 AArch64::AEK_RAS,
2326 AArch64::AEK_RCPC,
2327 AArch64::AEK_RDM,
2328 AArch64::AEK_FPAC,
2329 AArch64::AEK_LS64,
2330 AArch64::AEK_RME,
2331 AArch64::AEK_BRBE,
2332 })
2333 },
2334 {
2335 12808,
2336 0 /* ARMV8A */,
2337 AArch64::ExtensionBitset({
2338 AArch64::AEK_SHA2,
2339 AArch64::AEK_AES,
2340 AArch64::AEK_FP,
2341 AArch64::AEK_SIMD,
2342 AArch64::AEK_PERFMON,
2343 })
2344 },
2345 {
2346 13686,
2347 0 /* ARMV8A */,
2348 AArch64::ExtensionBitset({
2349 AArch64::AEK_SHA2,
2350 AArch64::AEK_AES,
2351 AArch64::AEK_FP,
2352 AArch64::AEK_SIMD,
2353 AArch64::AEK_PERFMON,
2354 AArch64::AEK_CRC,
2355 AArch64::AEK_RDM,
2356 AArch64::AEK_PAN,
2357 AArch64::AEK_LOR,
2358 AArch64::AEK_VH,
2359 })
2360 },
2361 {
2362 13696,
2363 3 /* ARMV8_2A */,
2364 AArch64::ExtensionBitset({
2365 AArch64::AEK_SHA2,
2366 AArch64::AEK_AES,
2367 AArch64::AEK_FP,
2368 AArch64::AEK_SIMD,
2369 AArch64::AEK_PERFMON,
2370 AArch64::AEK_FP16,
2371 AArch64::AEK_CRC,
2372 AArch64::AEK_LSE,
2373 AArch64::AEK_RAS,
2374 AArch64::AEK_RDM,
2375 })
2376 },
2377 {
2378 12844,
2379 4 /* ARMV8_3A */,
2380 AArch64::ExtensionBitset({
2381 AArch64::AEK_SHA2,
2382 AArch64::AEK_AES,
2383 AArch64::AEK_FP,
2384 AArch64::AEK_SIMD,
2385 AArch64::AEK_PERFMON,
2386 AArch64::AEK_FP16,
2387 AArch64::AEK_FCMA,
2388 AArch64::AEK_CRC,
2389 AArch64::AEK_JSCVT,
2390 AArch64::AEK_LSE,
2391 AArch64::AEK_PAUTH,
2392 AArch64::AEK_RAS,
2393 AArch64::AEK_RCPC,
2394 AArch64::AEK_RDM,
2395 })
2396 },
2397 {
2398 12872,
2399 5 /* ARMV8_4A */,
2400 AArch64::ExtensionBitset({
2401 AArch64::AEK_SHA2,
2402 AArch64::AEK_AES,
2403 AArch64::AEK_FP,
2404 AArch64::AEK_SIMD,
2405 AArch64::AEK_PERFMON,
2406 AArch64::AEK_FP16,
2407 AArch64::AEK_FP16FML,
2408 AArch64::AEK_SHA3,
2409 AArch64::AEK_FCMA,
2410 AArch64::AEK_CRC,
2411 AArch64::AEK_JSCVT,
2412 AArch64::AEK_LSE,
2413 AArch64::AEK_PAUTH,
2414 AArch64::AEK_RAS,
2415 AArch64::AEK_RCPC,
2416 AArch64::AEK_RDM,
2417 AArch64::AEK_DOTPROD,
2418 })
2419 },
2420 {
2421 12909,
2422 5 /* ARMV8_4A */,
2423 AArch64::ExtensionBitset({
2424 AArch64::AEK_SHA2,
2425 AArch64::AEK_AES,
2426 AArch64::AEK_FP,
2427 AArch64::AEK_SIMD,
2428 AArch64::AEK_PERFMON,
2429 AArch64::AEK_FP16,
2430 AArch64::AEK_FP16FML,
2431 AArch64::AEK_SHA3,
2432 AArch64::AEK_ALTERNATIVENZCV,
2433 AArch64::AEK_FRINT3264,
2434 AArch64::AEK_SPECRESTRICT,
2435 AArch64::AEK_SSBS,
2436 AArch64::AEK_SB,
2437 AArch64::AEK_PREDRES,
2438 AArch64::AEK_CCDP,
2439 AArch64::AEK_FCMA,
2440 AArch64::AEK_CRC,
2441 AArch64::AEK_JSCVT,
2442 AArch64::AEK_LSE,
2443 AArch64::AEK_PAUTH,
2444 AArch64::AEK_RAS,
2445 AArch64::AEK_RCPC,
2446 AArch64::AEK_RDM,
2447 AArch64::AEK_DOTPROD,
2448 })
2449 },
2450 {
2451 12928,
2452 7 /* ARMV8_6A */,
2453 AArch64::ExtensionBitset({
2454 AArch64::AEK_SHA2,
2455 AArch64::AEK_AES,
2456 AArch64::AEK_FP,
2457 AArch64::AEK_SIMD,
2458 AArch64::AEK_PERFMON,
2459 AArch64::AEK_SHA3,
2460 AArch64::AEK_FP16,
2461 AArch64::AEK_FP16FML,
2462 AArch64::AEK_FCMA,
2463 AArch64::AEK_CRC,
2464 AArch64::AEK_JSCVT,
2465 AArch64::AEK_LSE,
2466 AArch64::AEK_PAUTH,
2467 AArch64::AEK_FPAC,
2468 AArch64::AEK_RAS,
2469 AArch64::AEK_RCPC,
2470 AArch64::AEK_RDM,
2471 AArch64::AEK_BF16,
2472 AArch64::AEK_DOTPROD,
2473 AArch64::AEK_I8MM,
2474 AArch64::AEK_SSBS,
2475 })
2476 },
2477 {
2478 12947,
2479 7 /* ARMV8_6A */,
2480 AArch64::ExtensionBitset({
2481 AArch64::AEK_SHA2,
2482 AArch64::AEK_AES,
2483 AArch64::AEK_FP,
2484 AArch64::AEK_SIMD,
2485 AArch64::AEK_PERFMON,
2486 AArch64::AEK_SHA3,
2487 AArch64::AEK_FP16,
2488 AArch64::AEK_FP16FML,
2489 AArch64::AEK_FCMA,
2490 AArch64::AEK_CRC,
2491 AArch64::AEK_JSCVT,
2492 AArch64::AEK_LSE,
2493 AArch64::AEK_PAUTH,
2494 AArch64::AEK_FPAC,
2495 AArch64::AEK_RAS,
2496 AArch64::AEK_RCPC,
2497 AArch64::AEK_RDM,
2498 AArch64::AEK_BF16,
2499 AArch64::AEK_DOTPROD,
2500 AArch64::AEK_I8MM,
2501 AArch64::AEK_SSBS,
2502 })
2503 },
2504 {
2505 13706,
2506 7 /* ARMV8_6A */,
2507 AArch64::ExtensionBitset({
2508 AArch64::AEK_SHA2,
2509 AArch64::AEK_AES,
2510 AArch64::AEK_FP,
2511 AArch64::AEK_SIMD,
2512 AArch64::AEK_PERFMON,
2513 AArch64::AEK_SHA3,
2514 AArch64::AEK_FP16,
2515 AArch64::AEK_FP16FML,
2516 AArch64::AEK_FCMA,
2517 AArch64::AEK_CRC,
2518 AArch64::AEK_JSCVT,
2519 AArch64::AEK_LSE,
2520 AArch64::AEK_PAUTH,
2521 AArch64::AEK_FPAC,
2522 AArch64::AEK_RAS,
2523 AArch64::AEK_RCPC,
2524 AArch64::AEK_RDM,
2525 AArch64::AEK_BF16,
2526 AArch64::AEK_DOTPROD,
2527 AArch64::AEK_I8MM,
2528 AArch64::AEK_SSBS,
2529 })
2530 },
2531 {
2532 12986,
2533 8 /* ARMV8_7A */,
2534 AArch64::ExtensionBitset({
2535 AArch64::AEK_SHA2,
2536 AArch64::AEK_FP,
2537 AArch64::AEK_SIMD,
2538 AArch64::AEK_PERFMON,
2539 AArch64::AEK_SHA3,
2540 AArch64::AEK_FP16,
2541 AArch64::AEK_FP16FML,
2542 AArch64::AEK_AES,
2543 AArch64::AEK_BF16,
2544 AArch64::AEK_SME,
2545 AArch64::AEK_SME2,
2546 AArch64::AEK_SMEF64F64,
2547 AArch64::AEK_SMEI16I64,
2548 AArch64::AEK_FCMA,
2549 AArch64::AEK_CRC,
2550 AArch64::AEK_JSCVT,
2551 AArch64::AEK_LSE,
2552 AArch64::AEK_PAUTH,
2553 AArch64::AEK_FPAC,
2554 AArch64::AEK_RAS,
2555 AArch64::AEK_RCPC,
2556 AArch64::AEK_RDM,
2557 AArch64::AEK_DOTPROD,
2558 AArch64::AEK_I8MM,
2559 })
2560 },
2561 {
2562 13005,
2563 8 /* ARMV8_7A */,
2564 AArch64::ExtensionBitset({
2565 AArch64::AEK_SHA2,
2566 AArch64::AEK_FP,
2567 AArch64::AEK_SIMD,
2568 AArch64::AEK_PERFMON,
2569 AArch64::AEK_SHA3,
2570 AArch64::AEK_FP16,
2571 AArch64::AEK_FP16FML,
2572 AArch64::AEK_AES,
2573 AArch64::AEK_BF16,
2574 AArch64::AEK_WFXT,
2575 AArch64::AEK_SME,
2576 AArch64::AEK_SME2,
2577 AArch64::AEK_SMEF64F64,
2578 AArch64::AEK_SMEI16I64,
2579 AArch64::AEK_FCMA,
2580 AArch64::AEK_CRC,
2581 AArch64::AEK_JSCVT,
2582 AArch64::AEK_LSE,
2583 AArch64::AEK_PAUTH,
2584 AArch64::AEK_FPAC,
2585 AArch64::AEK_RAS,
2586 AArch64::AEK_RCPC,
2587 AArch64::AEK_RDM,
2588 AArch64::AEK_DOTPROD,
2589 AArch64::AEK_I8MM,
2590 AArch64::AEK_MTE,
2591 AArch64::AEK_CSSC,
2592 AArch64::AEK_HBC,
2593 AArch64::AEK_SME2P1,
2594 AArch64::AEK_SMEB16B16,
2595 AArch64::AEK_SMEF16F16,
2596 AArch64::AEK_SPECRES2,
2597 })
2598 },
2599 {
2600 13716,
2601 3 /* ARMV8_2A */,
2602 AArch64::ExtensionBitset({
2603 AArch64::AEK_FP,
2604 AArch64::AEK_SIMD,
2605 AArch64::AEK_SHA2,
2606 AArch64::AEK_PERFMON,
2607 AArch64::AEK_FP16,
2608 AArch64::AEK_SVE,
2609 AArch64::AEK_FCMA,
2610 AArch64::AEK_AES,
2611 AArch64::AEK_CRC,
2612 AArch64::AEK_LSE,
2613 AArch64::AEK_RAS,
2614 AArch64::AEK_RDM,
2615 })
2616 },
2617 {
2618 13722,
2619 14 /* ARMV9_3A */,
2620 AArch64::ExtensionBitset({
2621 AArch64::AEK_PERFMON,
2622 AArch64::AEK_CCIDX,
2623 AArch64::AEK_FPAC,
2624 AArch64::AEK_FP16FML,
2625 AArch64::AEK_RAND,
2626 AArch64::AEK_SSBS,
2627 AArch64::AEK_LS64,
2628 AArch64::AEK_CLRBHB,
2629 AArch64::AEK_SPECRES2,
2630 AArch64::AEK_SVEAES,
2631 AArch64::AEK_SVESM4,
2632 AArch64::AEK_SVESHA3,
2633 AArch64::AEK_SVE2,
2634 AArch64::AEK_SVEBITPERM,
2635 AArch64::AEK_ETE,
2636 AArch64::AEK_MEC,
2637 AArch64::AEK_FAMINMAX,
2638 AArch64::AEK_FP8DOT2,
2639 AArch64::AEK_FP8DOT4,
2640 AArch64::AEK_FP8FMA,
2641 AArch64::AEK_LUT,
2642 })
2643 },
2644 {
2645 13737,
2646 3 /* ARMV8_2A */,
2647 AArch64::ExtensionBitset({
2648 AArch64::AEK_SIMD,
2649 AArch64::AEK_SHA2,
2650 AArch64::AEK_AES,
2651 AArch64::AEK_FP16,
2652 AArch64::AEK_CRC,
2653 AArch64::AEK_LSE,
2654 AArch64::AEK_RAS,
2655 AArch64::AEK_RDM,
2656 AArch64::AEK_FP,
2657 })
2658 },
2659 {
2660 13744,
2661 13 /* ARMV9_2A */,
2662 AArch64::ExtensionBitset({
2663 AArch64::AEK_BRBE,
2664 AArch64::AEK_CCIDX,
2665 AArch64::AEK_CHK,
2666 AArch64::AEK_ETE,
2667 AArch64::AEK_FAMINMAX,
2668 AArch64::AEK_FP16FML,
2669 AArch64::AEK_FP8DOT2,
2670 AArch64::AEK_FP8DOT4,
2671 AArch64::AEK_FP8FMA,
2672 AArch64::AEK_FPAC,
2673 AArch64::AEK_LS64,
2674 AArch64::AEK_LUT,
2675 AArch64::AEK_MEC,
2676 AArch64::AEK_MTE,
2677 AArch64::AEK_PERFMON,
2678 AArch64::AEK_RAND,
2679 AArch64::AEK_PROFILE,
2680 AArch64::AEK_SPE_EEF,
2681 AArch64::AEK_SSBS,
2682 AArch64::AEK_SVEBITPERM,
2683 AArch64::AEK_SVESHA3,
2684 AArch64::AEK_SVESM4,
2685 AArch64::AEK_SVEAES,
2686 AArch64::AEK_SVE2,
2687 })
2688 },
2689 {
2690 13752,
2691 13 /* ARMV9_2A */,
2692 AArch64::ExtensionBitset({
2693 AArch64::AEK_BRBE,
2694 AArch64::AEK_CCIDX,
2695 AArch64::AEK_CHK,
2696 AArch64::AEK_ETE,
2697 AArch64::AEK_FAMINMAX,
2698 AArch64::AEK_FP16FML,
2699 AArch64::AEK_FP8DOT2,
2700 AArch64::AEK_FP8DOT4,
2701 AArch64::AEK_FP8FMA,
2702 AArch64::AEK_FPAC,
2703 AArch64::AEK_LS64,
2704 AArch64::AEK_LUT,
2705 AArch64::AEK_MEC,
2706 AArch64::AEK_MTE,
2707 AArch64::AEK_PERFMON,
2708 AArch64::AEK_RAND,
2709 AArch64::AEK_PROFILE,
2710 AArch64::AEK_SPE_EEF,
2711 AArch64::AEK_SSBS,
2712 AArch64::AEK_SVEBITPERM,
2713 AArch64::AEK_SVESHA3,
2714 AArch64::AEK_SVESM4,
2715 AArch64::AEK_SVEAES,
2716 AArch64::AEK_SVE2,
2717 })
2718 },
2719 {
2720 13758,
2721 7 /* ARMV8_6A */,
2722 AArch64::ExtensionBitset({
2723 AArch64::AEK_SIMD,
2724 AArch64::AEK_PERFMON,
2725 AArch64::AEK_SSBS,
2726 AArch64::AEK_RAND,
2727 AArch64::AEK_SB,
2728 AArch64::AEK_SHA2,
2729 AArch64::AEK_SHA3,
2730 AArch64::AEK_AES,
2731 AArch64::AEK_FP16,
2732 AArch64::AEK_BF16,
2733 AArch64::AEK_FCMA,
2734 AArch64::AEK_CRC,
2735 AArch64::AEK_DOTPROD,
2736 AArch64::AEK_FP,
2737 AArch64::AEK_I8MM,
2738 AArch64::AEK_JSCVT,
2739 AArch64::AEK_CCIDX,
2740 AArch64::AEK_LSE,
2741 AArch64::AEK_PAUTH,
2742 AArch64::AEK_RAS,
2743 AArch64::AEK_RCPC,
2744 AArch64::AEK_RDM,
2745 })
2746 },
2747 {
2748 13766,
2749 7 /* ARMV8_6A */,
2750 AArch64::ExtensionBitset({
2751 AArch64::AEK_SIMD,
2752 AArch64::AEK_PERFMON,
2753 AArch64::AEK_MTE,
2754 AArch64::AEK_SSBS,
2755 AArch64::AEK_RAND,
2756 AArch64::AEK_SB,
2757 AArch64::AEK_SM4,
2758 AArch64::AEK_SHA2,
2759 AArch64::AEK_SHA3,
2760 AArch64::AEK_AES,
2761 AArch64::AEK_FP16,
2762 AArch64::AEK_BF16,
2763 AArch64::AEK_FCMA,
2764 AArch64::AEK_CRC,
2765 AArch64::AEK_DOTPROD,
2766 AArch64::AEK_FP,
2767 AArch64::AEK_I8MM,
2768 AArch64::AEK_JSCVT,
2769 AArch64::AEK_LSE,
2770 AArch64::AEK_PAUTH,
2771 AArch64::AEK_RAS,
2772 AArch64::AEK_RCPC,
2773 AArch64::AEK_CCIDX,
2774 AArch64::AEK_RDM,
2775 })
2776 },
2777 {
2778 13775,
2779 8 /* ARMV8_7A */,
2780 AArch64::ExtensionBitset({
2781 AArch64::AEK_SIMD,
2782 AArch64::AEK_PERFMON,
2783 AArch64::AEK_MTE,
2784 AArch64::AEK_SSBS,
2785 AArch64::AEK_RAND,
2786 AArch64::AEK_SB,
2787 AArch64::AEK_SM4,
2788 AArch64::AEK_SHA2,
2789 AArch64::AEK_SHA3,
2790 AArch64::AEK_AES,
2791 AArch64::AEK_CSSC,
2792 AArch64::AEK_WFXT,
2793 AArch64::AEK_FP16,
2794 AArch64::AEK_BF16,
2795 AArch64::AEK_FCMA,
2796 AArch64::AEK_CRC,
2797 AArch64::AEK_DOTPROD,
2798 AArch64::AEK_FP,
2799 AArch64::AEK_I8MM,
2800 AArch64::AEK_JSCVT,
2801 AArch64::AEK_LSE,
2802 AArch64::AEK_PAUTH,
2803 AArch64::AEK_RAS,
2804 AArch64::AEK_RCPC,
2805 AArch64::AEK_CCIDX,
2806 AArch64::AEK_RDM,
2807 })
2808 },
2809 {
2810 13784,
2811 13 /* ARMV9_2A */,
2812 AArch64::ExtensionBitset({
2813 AArch64::AEK_SIMD,
2814 AArch64::AEK_CSSC,
2815 AArch64::AEK_CCIDX,
2816 AArch64::AEK_FP8FMA,
2817 AArch64::AEK_FAMINMAX,
2818 AArch64::AEK_LUT,
2819 AArch64::AEK_SVEAES,
2820 AArch64::AEK_SVESM4,
2821 AArch64::AEK_SVESHA3,
2822 AArch64::AEK_SVE2,
2823 AArch64::AEK_SVEB16B16,
2824 AArch64::AEK_MTE,
2825 AArch64::AEK_FP16FML,
2826 AArch64::AEK_SSBS,
2827 AArch64::AEK_RAND,
2828 AArch64::AEK_PERFMON,
2829 })
2830 },
2831 {
2832 13793,
2833 7 /* ARMV8_6A */,
2834 AArch64::ExtensionBitset({
2835 AArch64::AEK_SIMD,
2836 AArch64::AEK_PERFMON,
2837 AArch64::AEK_RAND,
2838 AArch64::AEK_PAUTH,
2839 AArch64::AEK_SM4,
2840 AArch64::AEK_SHA2,
2841 AArch64::AEK_SHA3,
2842 AArch64::AEK_AES,
2843 AArch64::AEK_PROFILE,
2844 AArch64::AEK_BF16,
2845 AArch64::AEK_FCMA,
2846 AArch64::AEK_CRC,
2847 AArch64::AEK_DOTPROD,
2848 AArch64::AEK_FP,
2849 AArch64::AEK_I8MM,
2850 AArch64::AEK_SSBS,
2851 AArch64::AEK_CCIDX,
2852 AArch64::AEK_JSCVT,
2853 AArch64::AEK_LSE,
2854 AArch64::AEK_RAS,
2855 AArch64::AEK_RCPC,
2856 AArch64::AEK_RDM,
2857 })
2858 },
2859};
2860#undef EMIT_CPU_INFO
2861#endif // EMIT_CPU_INFO
2862
2863#ifdef EMIT_STRTAB
2864
2865#ifdef __GNUC__
2866#pragma GCC diagnostic push
2867#pragma GCC diagnostic ignored "-Woverlength-strings"
2868#endif
2869static constexpr char StrTabStorage[] =
2870 "\0"
2871 "aes\0"
2872 "FEAT_AES, FEAT_PMULL\0"
2873 "Enable AES support\0"
2874 "+aes\0"
2875 "-aes\0"
2876 "FEAT_FlagM2\0"
2877 "Enable alternative NZCV format for floating point comparisons\0"
2878 "+altnzcv\0"
2879 "-altnzcv\0"
2880 "FEAT_AMUv1\0"
2881 "Enable Armv8.4-A Activity Monitors extension\0"
2882 "+am\0"
2883 "-am\0"
2884 "FEAT_AMUv1p1\0"
2885 "Enable Armv8.6-A Activity Monitors Virtualization support\0"
2886 "+amvs\0"
2887 "-amvs\0"
2888 "bf16\0"
2889 "FEAT_BF16\0"
2890 "Enable BFloat16 Extension\0"
2891 "+bf16\0"
2892 "-bf16\0"
2893 "brbe\0"
2894 "FEAT_BRBE\0"
2895 "Enable Branch Record Buffer Extension\0"
2896 "+brbe\0"
2897 "-brbe\0"
2898 "bti\0"
2899 "FEAT_BTI\0"
2900 "Enable Branch Target Identification\0"
2901 "+bti\0"
2902 "-bti\0"
2903 "btie\0"
2904 "FEAT_BTIE\0"
2905 "Enable Enhanced Branch Target Identification extension\0"
2906 "+btie\0"
2907 "-btie\0"
2908 "FEAT_DPB2\0"
2909 "Enable Armv8.5-A Cache Clean to Point of Deep Persistence\0"
2910 "+ccdp\0"
2911 "-ccdp\0"
2912 "FEAT_CCIDX\0"
2913 "Enable Armv8.3-A Extend of the CCSIDR number of sets\0"
2914 "+ccidx\0"
2915 "-ccidx\0"
2916 "FEAT_DPB\0"
2917 "Enable Armv8.2-A data Cache Clean to Point of Persistence\0"
2918 "+ccpp\0"
2919 "-ccpp\0"
2920 "FEAT_CHK\0"
2921 "Enable Armv8.0-A Check Feature Status Extension\0"
2922 "+chk\0"
2923 "-chk\0"
2924 "FEAT_CLRBHB\0"
2925 "Enable Clear BHB instruction\0"
2926 "+clrbhb\0"
2927 "-clrbhb\0"
2928 "cmpbr\0"
2929 "FEAT_CMPBR\0"
2930 "Enable Armv9.6-A base compare and branch instructions\0"
2931 "+cmpbr\0"
2932 "-cmpbr\0"
2933 "fcma\0"
2934 "FEAT_FCMA\0"
2935 "Enable Armv8.3-A Floating-point complex number support\0"
2936 "+complxnum\0"
2937 "-complxnum\0"
2938 "cpa\0"
2939 "FEAT_CPA\0"
2940 "Enable Armv9.5-A Checked Pointer Arithmetic\0"
2941 "+cpa\0"
2942 "-cpa\0"
2943 "crc\0"
2944 "FEAT_CRC32\0"
2945 "Enable Armv8.0-A CRC-32 checksum instructions\0"
2946 "+crc\0"
2947 "-crc\0"
2948 "crypto\0"
2949 "FEAT_Crypto\0"
2950 "Enable cryptographic instructions\0"
2951 "+crypto\0"
2952 "-crypto\0"
2953 "cssc\0"
2954 "FEAT_CSSC\0"
2955 "Enable Common Short Sequence Compression (CSSC) instructions\0"
2956 "+cssc\0"
2957 "-cssc\0"
2958 "d128\0"
2959 "FEAT_D128, FEAT_LVA3, FEAT_SYSREG128, FEAT_SYSINSTR128\0"
2960 "Enable Armv9.4-A 128-bit Page Table Descriptors, System Registers and instructions\0"
2961 "+d128\0"
2962 "-d128\0"
2963 "dit\0"
2964 "FEAT_DIT\0"
2965 "Enable Armv8.4-A Data Independent Timing instructions\0"
2966 "+dit\0"
2967 "-dit\0"
2968 "dotprod\0"
2969 "FEAT_DotProd\0"
2970 "Enable dot product support\0"
2971 "+dotprod\0"
2972 "-dotprod\0"
2973 "FEAT_ECV\0"
2974 "Enable enhanced counter virtualization extension\0"
2975 "+ecv\0"
2976 "-ecv\0"
2977 "FEAT_ETE\0"
2978 "Enable Embedded Trace Extension\0"
2979 "+ete\0"
2980 "-ete\0"
2981 "f16f32dot\0"
2982 "FEAT_F16F32DOT\0"
2983 "Enable Armv9.7-A Advanced SIMD half-precision dot product accumulate to single-precision\0"
2984 "+f16f32dot\0"
2985 "-f16f32dot\0"
2986 "f16f32mm\0"
2987 "FEAT_F16F32MM\0"
2988 "Enable Armv9.7-A Advanced SIMD half-precision matrix multiply-accumulate to single-precision\0"
2989 "+f16f32mm\0"
2990 "-f16f32mm\0"
2991 "f16mm\0"
2992 "FEAT_F16MM\0"
2993 "Enable Armv9.7-A non-widening half-precision matrix multiply-accumulate\0"
2994 "+f16mm\0"
2995 "-f16mm\0"
2996 "f32mm\0"
2997 "FEAT_F32MM\0"
2998 "Enable Matrix Multiply FP32 Extension\0"
2999 "+f32mm\0"
3000 "-f32mm\0"
3001 "f64mm\0"
3002 "FEAT_F64MM\0"
3003 "Enable Matrix Multiply FP64 Extension\0"
3004 "+f64mm\0"
3005 "-f64mm\0"
3006 "f8f16mm\0"
3007 "FEAT_F8F16MM\0"
3008 "Enable Armv9.6-A FP8 to Half-Precision Matrix Multiplication\0"
3009 "+f8f16mm\0"
3010 "-f8f16mm\0"
3011 "f8f32mm\0"
3012 "FEAT_F8F32MM\0"
3013 "Enable Armv9.6-A FP8 to Single-Precision Matrix Multiplication\0"
3014 "+f8f32mm\0"
3015 "-f8f32mm\0"
3016 "faminmax\0"
3017 "FEAT_FAMINMAX\0"
3018 "Enable FAMIN and FAMAX instructions\0"
3019 "+faminmax\0"
3020 "-faminmax\0"
3021 "FEAT_FGT\0"
3022 "Enable fine grained virtualization traps extension\0"
3023 "+fgt\0"
3024 "-fgt\0"
3025 "flagm\0"
3026 "FEAT_FlagM\0"
3027 "Enable Armv8.4-A Flag Manipulation instructions\0"
3028 "+flagm\0"
3029 "-flagm\0"
3030 "fp\0"
3031 "FEAT_FP\0"
3032 "Enable Armv8.0-A Floating Point Extensions\0"
3033 "+fp-armv8\0"
3034 "-fp-armv8\0"
3035 "fp16fml\0"
3036 "FEAT_FHM\0"
3037 "Enable FP16 FML instructions\0"
3038 "+fp16fml\0"
3039 "-fp16fml\0"
3040 "fp8\0"
3041 "FEAT_FP8\0"
3042 "Enable FP8 instructions\0"
3043 "+fp8\0"
3044 "-fp8\0"
3045 "fp8dot2\0"
3046 "FEAT_FP8DOT2\0"
3047 "Enable FP8 2-way dot instructions\0"
3048 "+fp8dot2\0"
3049 "-fp8dot2\0"
3050 "fp8dot4\0"
3051 "FEAT_FP8DOT4\0"
3052 "Enable FP8 4-way dot instructions\0"
3053 "+fp8dot4\0"
3054 "-fp8dot4\0"
3055 "fp8fma\0"
3056 "FEAT_FP8FMA\0"
3057 "Enable Armv9.5-A FP8 multiply-add instructions\0"
3058 "+fp8fma\0"
3059 "-fp8fma\0"
3060 "FEAT_FPAC\0"
3061 "Enable Armv8.3-A Pointer Authentication Faulting enhancement\0"
3062 "+fpac\0"
3063 "-fpac\0"
3064 "fprcvt\0"
3065 "FEAT_FPRCVT\0"
3066 "Enable Armv9.6-A base convert instructions for SIMD&FP scalar register operands of different input and output sizes\0"
3067 "+fprcvt\0"
3068 "-fprcvt\0"
3069 "FEAT_FRINTTS\0"
3070 "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"
3071 "+fptoint\0"
3072 "-fptoint\0"
3073 "fp16\0"
3074 "FEAT_FP16\0"
3075 "Enable half-precision floating-point data processing\0"
3076 "+fullfp16\0"
3077 "-fullfp16\0"
3078 "gcie\0"
3079 "FEAT_GCIE\0"
3080 "Enable GICv5 (Generic Interrupt Controller) CPU Interface Extension\0"
3081 "+gcie\0"
3082 "-gcie\0"
3083 "gcs\0"
3084 "FEAT_GCS\0"
3085 "Enable Armv9.4-A Guarded Call Stack Extension\0"
3086 "+gcs\0"
3087 "-gcs\0"
3088 "hbc\0"
3089 "FEAT_HBC\0"
3090 "Enable Armv8.8-A Hinted Conditional Branches Extension\0"
3091 "+hbc\0"
3092 "-hbc\0"
3093 "hinte\0"
3094 "FEAT_HINTE\0"
3095 "Enable extended A64 hint instruction space\0"
3096 "+hinte\0"
3097 "-hinte\0"
3098 "i8mm\0"
3099 "FEAT_I8MM\0"
3100 "Enable Matrix Multiply Int8 Extension\0"
3101 "+i8mm\0"
3102 "-i8mm\0"
3103 "ite\0"
3104 "FEAT_ITE\0"
3105 "Enable Armv9.4-A Instrumentation Extension\0"
3106 "+ite\0"
3107 "-ite\0"
3108 "jscvt\0"
3109 "FEAT_JSCVT\0"
3110 "Enable Armv8.3-A JavaScript FP conversion instructions\0"
3111 "+jsconv\0"
3112 "-jsconv\0"
3113 "FEAT_LOR\0"
3114 "Enable Armv8.1-A Limited Ordering Regions extension\0"
3115 "+lor\0"
3116 "-lor\0"
3117 "ls64\0"
3118 "FEAT_LS64, FEAT_LS64_V, FEAT_LS64_ACCDATA\0"
3119 "Enable Armv8.7-A LD64B/ST64B Accelerator Extension\0"
3120 "+ls64\0"
3121 "-ls64\0"
3122 "lscp\0"
3123 "FEAT_LSCP\0"
3124 "Enable Armv9.7-A Load-acquire and store-release pair extension\0"
3125 "+lscp\0"
3126 "-lscp\0"
3127 "lse\0"
3128 "FEAT_LSE\0"
3129 "Enable Armv8.1-A Large System Extension (LSE) atomic instructions\0"
3130 "+lse\0"
3131 "-lse\0"
3132 "lse128\0"
3133 "FEAT_LSE128\0"
3134 "Enable Armv9.4-A 128-bit Atomic instructions\0"
3135 "+lse128\0"
3136 "-lse128\0"
3137 "FEAT_LSE2\0"
3138 "Enable Armv8.4-A Large System Extension 2 (LSE2) atomicity rules\0"
3139 "+lse2\0"
3140 "-lse2\0"
3141 "lsfe\0"
3142 "FEAT_LSFE\0"
3143 "Enable Armv9.6-A base Atomic floating-point in-memory instructions\0"
3144 "+lsfe\0"
3145 "-lsfe\0"
3146 "lsui\0"
3147 "FEAT_LSUI\0"
3148 "Enable Armv9.6-A unprivileged load/store instructions\0"
3149 "+lsui\0"
3150 "-lsui\0"
3151 "lut\0"
3152 "FEAT_LUT\0"
3153 "Enable Lookup Table instructions\0"
3154 "+lut\0"
3155 "-lut\0"
3156 "FEAT_MEC\0"
3157 "Enable Memory Encryption Contexts Extension\0"
3158 "+mec\0"
3159 "-mec\0"
3160 "mops\0"
3161 "FEAT_MOPS\0"
3162 "Enable Armv8.8-A memcpy and memset acceleration instructions\0"
3163 "+mops\0"
3164 "-mops\0"
3165 "mops-go\0"
3166 "FEAT_MOPS_GO\0"
3167 "Enable memset acceleration granule only\0"
3168 "+mops-go\0"
3169 "-mops-go\0"
3170 "FEAT_MPAM\0"
3171 "Enable Armv8.4-A Memory system Partitioning and Monitoring extension\0"
3172 "+mpam\0"
3173 "-mpam\0"
3174 "memtag\0"
3175 "FEAT_MTE, FEAT_MTE2\0"
3176 "Enable Memory Tagging Extension\0"
3177 "+mte\0"
3178 "-mte\0"
3179 "mtetc\0"
3180 "FEAT_MTETC\0"
3181 "Enable Virtual Memory Tagging Extension\0"
3182 "+mtetc\0"
3183 "-mtetc\0"
3184 "simd\0"
3185 "FEAT_AdvSIMD\0"
3186 "Enable Advanced SIMD instructions\0"
3187 "+neon\0"
3188 "-neon\0"
3189 "FEAT_NMI, FEAT_GICv3_NMI\0"
3190 "Enable Armv8.8-A Non-maskable Interrupts\0"
3191 "+nmi\0"
3192 "-nmi\0"
3193 "FEAT_NV, FEAT_NV2\0"
3194 "Enable Armv8.4-A Nested Virtualization Enchancement\0"
3195 "+nv\0"
3196 "-nv\0"
3197 "occmo\0"
3198 "FEAT_OCCMO\0"
3199 "Enable Armv9.6-A Outer cacheable cache maintenance operations\0"
3200 "+occmo\0"
3201 "-occmo\0"
3202 "FEAT_PAN\0"
3203 "Enable Armv8.1-A Privileged Access-Never extension\0"
3204 "+pan\0"
3205 "-pan\0"
3206 "FEAT_PAN2\0"
3207 "Enable Armv8.2-A PAN s1e1R and s1e1W Variants\0"
3208 "+pan-rwv\0"
3209 "-pan-rwv\0"
3210 "pauth\0"
3211 "FEAT_PAuth\0"
3212 "Enable Armv8.3-A Pointer Authentication extension\0"
3213 "+pauth\0"
3214 "-pauth\0"
3215 "pauth-lr\0"
3216 "FEAT_PAuth_LR\0"
3217 "Enable Armv9.5-A PAC enhancements\0"
3218 "+pauth-lr\0"
3219 "-pauth-lr\0"
3220 "pmuv3\0"
3221 "FEAT_PMUv3\0"
3222 "Enable Armv8.0-A PMUv3 Performance Monitors extension\0"
3223 "+perfmon\0"
3224 "-perfmon\0"
3225 "poe2\0"
3226 "FEAT_S1POE2\0"
3227 "Enable Stage 1 Permission Overlays Extension 2 instructions\0"
3228 "+poe2\0"
3229 "-poe2\0"
3230 "pops\0"
3231 "FEAT_PoPS\0"
3232 "Enable Armv9.6-A Point Of Physical Storage (PoPS) DC instructions\0"
3233 "+pops\0"
3234 "-pops\0"
3235 "predres\0"
3236 "FEAT_SPECRES\0"
3237 "Enable Armv8.5-A execution and data prediction invalidation instructions\0"
3238 "+predres\0"
3239 "-predres\0"
3240 "FEAT_PRFMSLC\0"
3241 "Enable SLC target for PRFM instruction\0"
3242 "+prfm-slc-target\0"
3243 "-prfm-slc-target\0"
3244 "rng\0"
3245 "FEAT_RNG\0"
3246 "Enable Random Number generation instructions\0"
3247 "+rand\0"
3248 "-rand\0"
3249 "ras\0"
3250 "FEAT_RAS, FEAT_RASv1p1\0"
3251 "Enable Armv8.0-A Reliability, Availability and Serviceability Extensions\0"
3252 "+ras\0"
3253 "-ras\0"
3254 "rasv2\0"
3255 "FEAT_RASv2\0"
3256 "Enable Armv8.9-A Reliability, Availability and Serviceability Extensions\0"
3257 "+rasv2\0"
3258 "-rasv2\0"
3259 "rcpc\0"
3260 "FEAT_LRCPC\0"
3261 "Enable support for RCPC extension\0"
3262 "+rcpc\0"
3263 "-rcpc\0"
3264 "FEAT_LRCPC2\0"
3265 "Enable Armv8.4-A RCPC instructions with Immediate Offsets\0"
3266 "+rcpc-immo\0"
3267 "-rcpc-immo\0"
3268 "rcpc3\0"
3269 "FEAT_LRCPC3\0"
3270 "Enable Armv8.9-A RCPC instructions for A64 and Advanced SIMD and floating-point instruction set\0"
3271 "+rcpc3\0"
3272 "-rcpc3\0"
3273 "rdm\0"
3274 "rdma\0"
3275 "FEAT_RDM\0"
3276 "Enable Armv8.1-A Rounding Double Multiply Add/Subtract instructions\0"
3277 "+rdm\0"
3278 "-rdm\0"
3279 "FEAT_RME\0"
3280 "Enable Realm Management Extension\0"
3281 "+rme\0"
3282 "-rme\0"
3283 "sb\0"
3284 "FEAT_SB\0"
3285 "Enable Armv8.5-A Speculation Barrier\0"
3286 "+sb\0"
3287 "-sb\0"
3288 "FEAT_SEL2\0"
3289 "Enable Armv8.4-A Secure Exception Level 2 extension\0"
3290 "+sel2\0"
3291 "-sel2\0"
3292 "sha2\0"
3293 "FEAT_SHA1, FEAT_SHA256\0"
3294 "Enable SHA1 and SHA256 support\0"
3295 "+sha2\0"
3296 "-sha2\0"
3297 "sha3\0"
3298 "FEAT_SHA3, FEAT_SHA512\0"
3299 "Enable SHA512 and SHA3 support\0"
3300 "+sha3\0"
3301 "-sha3\0"
3302 "sm4\0"
3303 "FEAT_SM4, FEAT_SM3\0"
3304 "Enable SM3 and SM4 support\0"
3305 "+sm4\0"
3306 "-sm4\0"
3307 "sme\0"
3308 "FEAT_SME\0"
3309 "Enable Scalable Matrix Extension (SME)\0"
3310 "+sme\0"
3311 "-sme\0"
3312 "sme-b16b16\0"
3313 "FEAT_SME_B16B16\0"
3314 "Enable SME2.1 ZA-targeting non-widening BFloat16 instructions\0"
3315 "+sme-b16b16\0"
3316 "-sme-b16b16\0"
3317 "sme-f16f16\0"
3318 "FEAT_SME_F16F16\0"
3319 "Enable SME non-widening Float16 instructions\0"
3320 "+sme-f16f16\0"
3321 "-sme-f16f16\0"
3322 "sme-f64f64\0"
3323 "FEAT_SME_F64F64\0"
3324 "Enable Scalable Matrix Extension (SME) F64F64 instructions\0"
3325 "+sme-f64f64\0"
3326 "-sme-f64f64\0"
3327 "sme-f8f16\0"
3328 "FEAT_SME_F8F16\0"
3329 "Enable Scalable Matrix Extension (SME) F8F16 instructions\0"
3330 "+sme-f8f16\0"
3331 "-sme-f8f16\0"
3332 "sme-f8f32\0"
3333 "FEAT_SME_F8F32\0"
3334 "Enable Scalable Matrix Extension (SME) F8F32 instructions\0"
3335 "+sme-f8f32\0"
3336 "-sme-f8f32\0"
3337 "sme-fa64\0"
3338 "FEAT_SME_FA64\0"
3339 "Enable the full A64 instruction set in streaming SVE mode\0"
3340 "+sme-fa64\0"
3341 "-sme-fa64\0"
3342 "sme-i16i64\0"
3343 "FEAT_SME_I16I64\0"
3344 "Enable Scalable Matrix Extension (SME) I16I64 instructions\0"
3345 "+sme-i16i64\0"
3346 "-sme-i16i64\0"
3347 "sme-lutv2\0"
3348 "FEAT_SME_LUTv2\0"
3349 "Enable Scalable Matrix Extension (SME) LUTv2 instructions\0"
3350 "+sme-lutv2\0"
3351 "-sme-lutv2\0"
3352 "sme-mop4\0"
3353 "FEAT_SME_MOP4\0"
3354 "Enable SME Quarter-tile outer product instructions\0"
3355 "+sme-mop4\0"
3356 "-sme-mop4\0"
3357 "sme-tmop\0"
3358 "FEAT_SME_TMOP\0"
3359 "Enable SME Structured sparsity outer product instructions.\0"
3360 "+sme-tmop\0"
3361 "-sme-tmop\0"
3362 "sme2\0"
3363 "FEAT_SME2\0"
3364 "Enable Scalable Matrix Extension 2 (SME2) instructions\0"
3365 "+sme2\0"
3366 "-sme2\0"
3367 "sme2p1\0"
3368 "FEAT_SME2p1\0"
3369 "Enable Scalable Matrix Extension 2.1 instructions\0"
3370 "+sme2p1\0"
3371 "-sme2p1\0"
3372 "sme2p2\0"
3373 "FEAT_SME2p2\0"
3374 "Enable Armv9.6-A Scalable Matrix Extension 2.2 instructions\0"
3375 "+sme2p2\0"
3376 "-sme2p2\0"
3377 "sme2p3\0"
3378 "FEAT_SME2p3\0"
3379 "Enable Armv9.7-A Scalable Matrix Extension 2.3 instructions\0"
3380 "+sme2p3\0"
3381 "-sme2p3\0"
3382 "profile\0"
3383 "FEAT_SPE\0"
3384 "Enable Statistical Profiling extension\0"
3385 "+spe\0"
3386 "-spe\0"
3387 "FEAT_SPEv1p2\0"
3388 "Enable extra register in the Statistical Profiling Extension\0"
3389 "+spe-eef\0"
3390 "-spe-eef\0"
3391 "predres2\0"
3392 "FEAT_SPECRES2\0"
3393 "Enable Speculation Restriction Instruction\0"
3394 "+specres2\0"
3395 "-specres2\0"
3396 "FEAT_CSV2_2\0"
3397 "Enable architectural speculation restriction\0"
3398 "+specrestrict\0"
3399 "-specrestrict\0"
3400 "ssbs\0"
3401 "FEAT_SSBS, FEAT_SSBS2\0"
3402 "Enable Speculative Store Bypass Safe bit\0"
3403 "+ssbs\0"
3404 "-ssbs\0"
3405 "ssve-aes\0"
3406 "FEAT_SSVE_AES\0"
3407 "Enable Armv9.6-A SVE AES support in streaming SVE mode\0"
3408 "+ssve-aes\0"
3409 "-ssve-aes\0"
3410 "ssve-bitperm\0"
3411 "FEAT_SSVE_BitPerm\0"
3412 "Enable Armv9.6-A SVE BitPerm support in streaming SVE mode\0"
3413 "+ssve-bitperm\0"
3414 "-ssve-bitperm\0"
3415 "ssve-fexpa\0"
3416 "FEAT_SSVE_FEXPA\0"
3417 "Enable SVE FEXPA instruction in Streaming SVE mode\0"
3418 "+ssve-fexpa\0"
3419 "-ssve-fexpa\0"
3420 "ssve-fp8dot2\0"
3421 "FEAT_SSVE_FP8DOT2\0"
3422 "Enable SVE2 FP8 2-way dot product instructions\0"
3423 "+ssve-fp8dot2\0"
3424 "-ssve-fp8dot2\0"
3425 "ssve-fp8dot4\0"
3426 "FEAT_SSVE_FP8DOT4\0"
3427 "Enable SVE2 FP8 4-way dot product instructions\0"
3428 "+ssve-fp8dot4\0"
3429 "-ssve-fp8dot4\0"
3430 "ssve-fp8fma\0"
3431 "FEAT_SSVE_FP8FMA\0"
3432 "Enable SVE2 FP8 multiply-add instructions\0"
3433 "+ssve-fp8fma\0"
3434 "-ssve-fp8fma\0"
3435 "sve\0"
3436 "FEAT_SVE\0"
3437 "Enable Scalable Vector Extension (SVE) instructions\0"
3438 "+sve\0"
3439 "-sve\0"
3440 "sve-aes\0"
3441 "FEAT_SVE_AES, FEAT_SVE_PMULL128\0"
3442 "Enable SVE AES and quadword SVE polynomial multiply instructions\0"
3443 "+sve-aes\0"
3444 "-sve-aes\0"
3445 "sve-aes2\0"
3446 "FEAT_SVE_AES2\0"
3447 "Enable Armv9.6-A SVE multi-vector AES and multi-vector quadword polynomial multiply instructions\0"
3448 "+sve-aes2\0"
3449 "-sve-aes2\0"
3450 "sve-b16b16\0"
3451 "FEAT_SVE_B16B16\0"
3452 "Enable SVE2 non-widening and SME2 Z-targeting non-widening BFloat16 instructions\0"
3453 "+sve-b16b16\0"
3454 "-sve-b16b16\0"
3455 "sve-b16mm\0"
3456 "FEAT_SVE_B16MM\0"
3457 "Enable Armv9.7-A SVE non-widening BFloat16 matrix multiply-accumulate\0"
3458 "+sve-b16mm\0"
3459 "-sve-b16mm\0"
3460 "sve-bfscale\0"
3461 "FEAT_SVE_BFSCALE\0"
3462 "Enable Armv9.6-A SVE BFloat16 scaling instructions\0"
3463 "+sve-bfscale\0"
3464 "-sve-bfscale\0"
3465 "sve-bitperm\0"
3466 "FEAT_SVE_BitPerm\0"
3467 "Enable bit permutation SVE2 instructions\0"
3468 "+sve-bitperm\0"
3469 "-sve-bitperm\0"
3470 "sve-f16f32mm\0"
3471 "FEAT_SVE_F16F32MM\0"
3472 "Enable Armv9.6-A FP16 to FP32 Matrix Multiply instructions\0"
3473 "+sve-f16f32mm\0"
3474 "-sve-f16f32mm\0"
3475 "sve-sha3\0"
3476 "FEAT_SVE_SHA3\0"
3477 "Enable SVE SHA3 instructions\0"
3478 "+sve-sha3\0"
3479 "-sve-sha3\0"
3480 "sve-sm4\0"
3481 "FEAT_SVE_SM4\0"
3482 "Enable SVE SM4 instructions\0"
3483 "+sve-sm4\0"
3484 "-sve-sm4\0"
3485 "sve2\0"
3486 "FEAT_SVE2\0"
3487 "Enable Scalable Vector Extension 2 (SVE2) instructions\0"
3488 "+sve2\0"
3489 "-sve2\0"
3490 "sve2-aes\0"
3491 "Shorthand for +sve2+sve-aes\0"
3492 "+sve2-aes\0"
3493 "-sve2-aes\0"
3494 "sve2-bitperm\0"
3495 "Shorthand for +sve2+sve-bitperm\0"
3496 "+sve2-bitperm\0"
3497 "-sve2-bitperm\0"
3498 "sve2-sha3\0"
3499 "Shorthand for +sve2+sve-sha3\0"
3500 "+sve2-sha3\0"
3501 "-sve2-sha3\0"
3502 "sve2-sm4\0"
3503 "Shorthand for +sve2+sve-sm4\0"
3504 "+sve2-sm4\0"
3505 "-sve2-sm4\0"
3506 "sve2p1\0"
3507 "FEAT_SVE2p1\0"
3508 "Enable Scalable Vector Extension 2.1 instructions\0"
3509 "+sve2p1\0"
3510 "-sve2p1\0"
3511 "sve2p2\0"
3512 "FEAT_SVE2p2\0"
3513 "Enable Armv9.6-A Scalable Vector Extension 2.2 instructions\0"
3514 "+sve2p2\0"
3515 "-sve2p2\0"
3516 "sve2p3\0"
3517 "FEAT_SVE2p3\0"
3518 "Enable Armv9.7-A Scalable Vector Extension 2.3 instructions\0"
3519 "+sve2p3\0"
3520 "-sve2p3\0"
3521 "tev\0"
3522 "FEAT_TEV\0"
3523 "Enable TIndex Exception-like Vector instructions\0"
3524 "+tev\0"
3525 "-tev\0"
3526 "the\0"
3527 "FEAT_THE\0"
3528 "Enable Armv8.9-A Translation Hardening Extension\0"
3529 "+the\0"
3530 "-the\0"
3531 "FEAT_TLBIOS, FEAT_TLBIRANGE\0"
3532 "Enable Armv8.4-A TLB Range and Maintenance instructions\0"
3533 "+tlb-rmi\0"
3534 "-tlb-rmi\0"
3535 "tlbid\0"
3536 "FEAT_TLBID\0"
3537 "Enable Armv9.7-A TLBI Domains extension\0"
3538 "+tlbid\0"
3539 "-tlbid\0"
3540 "tlbiw\0"
3541 "FEAT_TLBIW\0"
3542 "Enable Armv9.5-A TLBI VMALL for Dirty State\0"
3543 "+tlbiw\0"
3544 "-tlbiw\0"
3545 "FEAT_TRF\0"
3546 "Enable Armv8.4-A Trace extension\0"
3547 "+tracev8.4\0"
3548 "-tracev8.4\0"
3549 "FEAT_TRBE\0"
3550 "Enable Trace Buffer Extension\0"
3551 "+trbe\0"
3552 "-trbe\0"
3553 "FEAT_UAO\0"
3554 "Enable Armv8.2-A UAO PState\0"
3555 "+uaops\0"
3556 "-uaops\0"
3557 "FEAT_VHE\0"
3558 "Enable Armv8.1-A Virtual Host extension\0"
3559 "+vh\0"
3560 "-vh\0"
3561 "wfxt\0"
3562 "FEAT_WFxT\0"
3563 "Enable Armv8.7-A WFET and WFIT instruction\0"
3564 "+wfxt\0"
3565 "-wfxt\0"
3566 "FEAT_XS\0"
3567 "Enable Armv8.7-A limited-TLB-maintenance instruction\0"
3568 "+xs\0"
3569 "-xs\0"
3570 "armv8-a\0"
3571 "+v8a\0"
3572 "armv8-r\0"
3573 "+v8r\0"
3574 "armv8.1-a\0"
3575 "+v8.1a\0"
3576 "armv8.2-a\0"
3577 "+v8.2a\0"
3578 "armv8.3-a\0"
3579 "+v8.3a\0"
3580 "armv8.4-a\0"
3581 "+v8.4a\0"
3582 "armv8.5-a\0"
3583 "+v8.5a\0"
3584 "armv8.6-a\0"
3585 "+v8.6a\0"
3586 "armv8.7-a\0"
3587 "+v8.7a\0"
3588 "armv8.8-a\0"
3589 "+v8.8a\0"
3590 "armv8.9-a\0"
3591 "+v8.9a\0"
3592 "armv9-a\0"
3593 "+v9a\0"
3594 "armv9.1-a\0"
3595 "+v9.1a\0"
3596 "armv9.2-a\0"
3597 "+v9.2a\0"
3598 "armv9.3-a\0"
3599 "+v9.3a\0"
3600 "armv9.4-a\0"
3601 "+v9.4a\0"
3602 "armv9.5-a\0"
3603 "+v9.5a\0"
3604 "armv9.6-a\0"
3605 "+v9.6a\0"
3606 "armv9.7-a\0"
3607 "+v9.7a\0"
3608 "cobalt-100\0"
3609 "neoverse-n2\0"
3610 "armagicpu\0"
3611 "neoverse-v3ae\0"
3612 "cyclone\0"
3613 "apple-a7\0"
3614 "apple-a8\0"
3615 "apple-a9\0"
3616 "apple-s4\0"
3617 "apple-a12\0"
3618 "apple-s5\0"
3619 "apple-s6\0"
3620 "apple-a13\0"
3621 "apple-s7\0"
3622 "apple-s8\0"
3623 "apple-m1\0"
3624 "apple-a14\0"
3625 "apple-m2\0"
3626 "apple-a15\0"
3627 "apple-m3\0"
3628 "apple-a16\0"
3629 "apple-s9\0"
3630 "apple-s10\0"
3631 "apple-a18\0"
3632 "apple-m4\0"
3633 "apple-a19\0"
3634 "apple-m5\0"
3635 "apple-latest\0"
3636 "generic\0"
3637 "cortex-a34\0"
3638 "cortex-a35\0"
3639 "cortex-a320\0"
3640 "cortex-a53\0"
3641 "cortex-a55\0"
3642 "cortex-a510\0"
3643 "cortex-a520\0"
3644 "cortex-a520ae\0"
3645 "c1-nano\0"
3646 "cortex-a57\0"
3647 "cortex-a65\0"
3648 "cortex-a65ae\0"
3649 "cortex-a72\0"
3650 "cortex-a73\0"
3651 "cortex-a75\0"
3652 "cortex-a76\0"
3653 "cortex-a76ae\0"
3654 "cortex-a77\0"
3655 "cortex-a78\0"
3656 "cortex-a78ae\0"
3657 "cortex-a78c\0"
3658 "cortex-a710\0"
3659 "cortex-a715\0"
3660 "cortex-a720\0"
3661 "cortex-a720ae\0"
3662 "cortex-a725\0"
3663 "c1-pro\0"
3664 "cortex-r82\0"
3665 "cortex-r82ae\0"
3666 "cortex-x1\0"
3667 "cortex-x1c\0"
3668 "cortex-x2\0"
3669 "cortex-x3\0"
3670 "cortex-x4\0"
3671 "cortex-x925\0"
3672 "c1-premium\0"
3673 "c1-ultra\0"
3674 "gb10\0"
3675 "grace\0"
3676 "neoverse-e1\0"
3677 "neoverse-n1\0"
3678 "neoverse-n3\0"
3679 "neoverse-512tvb\0"
3680 "neoverse-v1\0"
3681 "neoverse-v2\0"
3682 "neoverse-v3\0"
3683 "exynos-m3\0"
3684 "exynos-m4\0"
3685 "exynos-m5\0"
3686 "falkor\0"
3687 "saphira\0"
3688 "kryo\0"
3689 "thunderx\0"
3690 "thunderxt88\0"
3691 "thunderxt81\0"
3692 "thunderxt83\0"
3693 "thunderx2t99\0"
3694 "thunderx3t110\0"
3695 "tsv110\0"
3696 "hip12\0"
3697 "apple-a10\0"
3698 "apple-a11\0"
3699 "apple-a17\0"
3700 "a64fx\0"
3701 "fujitsu-monaka\0"
3702 "carmel\0"
3703 "olympus\0"
3704 "rigel\0"
3705 "ampere1\0"
3706 "ampere1a\0"
3707 "ampere1b\0"
3708 "ampere1c\0"
3709 "oryon-1\0"
3710 ;
3711#ifdef __GNUC__
3712#pragma GCC diagnostic pop
3713#endif
3714
3715static constexpr llvm::StringTable
3716StrTab = StrTabStorage;
3717#undef EMIT_STRTAB
3718#endif // EMIT_STRTAB
3719
3720