arm-cpu-cdata.h revision 1.1.1.2 1 /* This file is automatically generated. DO NOT EDIT! */
2 /* Generated from: NetBSD: mknative-gcc,v 1.108 2020/09/05 10:58:08 mrg Exp */
3 /* Generated from: NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp */
4
5 /* -*- buffer-read-only: t -*-
6 Generated automatically by parsecpu.awk from arm-cpus.in.
7 Do not edit.
8
9 Copyright (C) 2011-2019 Free Software Foundation, Inc.
10
11 This file is part of GCC.
12
13 GCC is free software; you can redistribute it and/or modify
14 it under the terms of the GNU General Public License as
15 published by the Free Software Foundation; either version 3,
16 or (at your option) any later version.
17
18 GCC is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
22
23 You should have received a copy of the GNU General Public
24 License along with GCC; see the file COPYING3. If not see
25 <http://www.gnu.org/licenses/>. */
26
27 static const cpu_alias cpu_aliastab_strongarm[] = {
28 { "strongarm110", true},
29 { "strongarm1100", false},
30 { "strongarm1110", false},
31 { NULL, false}
32 };
33
34 static const cpu_alias cpu_aliastab_arm7tdmi[] = {
35 { "arm7tdmi-s", true},
36 { NULL, false}
37 };
38
39 static const cpu_alias cpu_aliastab_arm710t[] = {
40 { "arm720t", true},
41 { "arm740t", true},
42 { NULL, false}
43 };
44
45 static const cpu_alias cpu_aliastab_arm920t[] = {
46 { "arm920", true},
47 { "arm922t", true},
48 { "arm940t", true},
49 { "ep9312", true},
50 { NULL, false}
51 };
52
53 static const cpu_alias cpu_aliastab_arm10tdmi[] = {
54 { "arm1020t", true},
55 { NULL, false}
56 };
57
58 static const cpu_arch_extension cpu_opttab_arm9e[] = {
59 {
60 "nofp", true, false,
61 {
62 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
63 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
64 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
65 }
66 },
67 { NULL, false, false, {isa_nobit}}
68 };
69
70 static const cpu_alias cpu_aliastab_arm9e[] = {
71 { "arm946e-s", true},
72 { "arm966e-s", true},
73 { "arm968e-s", true},
74 { NULL, false}
75 };
76
77 static const cpu_arch_extension cpu_opttab_arm10e[] = {
78 {
79 "nofp", true, false,
80 {
81 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
82 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
83 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
84 }
85 },
86 { NULL, false, false, {isa_nobit}}
87 };
88
89 static const cpu_alias cpu_aliastab_arm10e[] = {
90 { "arm1020e", true},
91 { "arm1022e", true},
92 { NULL, false}
93 };
94
95 static const cpu_arch_extension cpu_opttab_arm926ejs[] = {
96 {
97 "nofp", true, false,
98 {
99 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
100 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
101 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
102 }
103 },
104 { NULL, false, false, {isa_nobit}}
105 };
106
107 static const cpu_arch_extension cpu_opttab_arm1026ejs[] = {
108 {
109 "nofp", true, false,
110 {
111 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
112 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
113 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
114 }
115 },
116 { NULL, false, false, {isa_nobit}}
117 };
118
119 static const cpu_arch_extension cpu_opttab_genericv7a[] = {
120 {
121 "mp", false, false,
122 {
123 isa_bit_mp, isa_nobit
124 }
125 },
126 {
127 "sec", false, false,
128 {
129 isa_bit_sec, isa_nobit
130 }
131 },
132 {
133 "vfpv3-d16", false, false,
134 {
135 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit
136 }
137 },
138 {
139 "vfpv3", false, false,
140 {
141 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp_dbl,
142 isa_nobit
143 }
144 },
145 {
146 "vfpv3-d16-fp16", false, false,
147 {
148 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_bit_fp_dbl,
149 isa_nobit
150 }
151 },
152 {
153 "vfpv3-fp16", false, false,
154 {
155 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp16conv,
156 isa_bit_fp_dbl, isa_nobit
157 }
158 },
159 {
160 "vfpv4-d16", false, false,
161 {
162 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv,
163 isa_bit_fp_dbl, isa_nobit
164 }
165 },
166 {
167 "vfpv4", false, false,
168 {
169 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp_d32,
170 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
171 }
172 },
173 {
174 "simd", false, false,
175 {
176 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
177 isa_bit_fp_dbl, isa_nobit
178 }
179 },
180 {
181 "neon-fp16", false, false,
182 {
183 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
184 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
185 }
186 },
187 {
188 "neon-vfpv4", false, false,
189 {
190 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
191 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
192 }
193 },
194 {
195 "nosimd", true, false,
196 {
197 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32,
198 isa_bit_crypto, isa_nobit
199 }
200 },
201 {
202 "nofp", true, false,
203 {
204 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
205 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
206 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
207 }
208 },
209 {
210 "neon", false, true,
211 {
212 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
213 isa_bit_fp_dbl, isa_nobit
214 }
215 },
216 {
217 "neon-vfpv3", false, true,
218 {
219 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
220 isa_bit_fp_dbl, isa_nobit
221 }
222 },
223 { NULL, false, false, {isa_nobit}}
224 };
225
226 static const cpu_arch_extension cpu_opttab_cortexa5[] = {
227 {
228 "nosimd", true, false,
229 {
230 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32,
231 isa_bit_crypto, isa_nobit
232 }
233 },
234 {
235 "nofp", true, false,
236 {
237 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
238 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
239 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
240 }
241 },
242 { NULL, false, false, {isa_nobit}}
243 };
244
245 static const cpu_arch_extension cpu_opttab_cortexa7[] = {
246 {
247 "nosimd", true, false,
248 {
249 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32,
250 isa_bit_crypto, isa_nobit
251 }
252 },
253 {
254 "nofp", true, false,
255 {
256 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
257 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
258 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
259 }
260 },
261 { NULL, false, false, {isa_nobit}}
262 };
263
264 static const cpu_arch_extension cpu_opttab_cortexa8[] = {
265 {
266 "nofp", true, false,
267 {
268 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
269 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
270 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
271 }
272 },
273 { NULL, false, false, {isa_nobit}}
274 };
275
276 static const cpu_arch_extension cpu_opttab_cortexa9[] = {
277 {
278 "nosimd", true, false,
279 {
280 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32,
281 isa_bit_crypto, isa_nobit
282 }
283 },
284 {
285 "nofp", true, false,
286 {
287 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
288 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
289 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
290 }
291 },
292 { NULL, false, false, {isa_nobit}}
293 };
294
295 static const cpu_arch_extension cpu_opttab_cortexa12[] = {
296 {
297 "nofp", true, false,
298 {
299 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
300 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
301 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
302 }
303 },
304 { NULL, false, false, {isa_nobit}}
305 };
306
307 static const cpu_arch_extension cpu_opttab_cortexa15[] = {
308 {
309 "nofp", true, false,
310 {
311 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
312 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
313 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
314 }
315 },
316 { NULL, false, false, {isa_nobit}}
317 };
318
319 static const cpu_arch_extension cpu_opttab_cortexa17[] = {
320 {
321 "nofp", true, false,
322 {
323 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
324 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
325 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
326 }
327 },
328 { NULL, false, false, {isa_nobit}}
329 };
330
331 static const cpu_arch_extension cpu_opttab_cortexr5[] = {
332 {
333 "nofp.dp", true, false,
334 {
335 isa_bit_fp_dbl, isa_nobit
336 }
337 },
338 {
339 "nofp", true, false,
340 {
341 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
342 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
343 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
344 }
345 },
346 { NULL, false, false, {isa_nobit}}
347 };
348
349 static const cpu_arch_extension cpu_opttab_cortexr7[] = {
350 {
351 "nofp.dp", true, false,
352 {
353 isa_bit_fp_dbl, isa_nobit
354 }
355 },
356 {
357 "nofp", true, false,
358 {
359 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
360 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
361 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
362 }
363 },
364 { NULL, false, false, {isa_nobit}}
365 };
366
367 static const cpu_arch_extension cpu_opttab_cortexr8[] = {
368 {
369 "nofp.dp", true, false,
370 {
371 isa_bit_fp_dbl, isa_nobit
372 }
373 },
374 {
375 "nofp", true, false,
376 {
377 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
378 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
379 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
380 }
381 },
382 { NULL, false, false, {isa_nobit}}
383 };
384
385 static const cpu_arch_extension cpu_opttab_cortexm7[] = {
386 {
387 "nofp.dp", true, false,
388 {
389 isa_bit_fp_dbl, isa_nobit
390 }
391 },
392 {
393 "nofp", true, false,
394 {
395 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
396 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
397 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
398 }
399 },
400 { NULL, false, false, {isa_nobit}}
401 };
402
403 static const cpu_arch_extension cpu_opttab_cortexm4[] = {
404 {
405 "nofp", true, false,
406 {
407 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
408 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
409 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
410 }
411 },
412 { NULL, false, false, {isa_nobit}}
413 };
414
415 static const cpu_arch_extension cpu_opttab_cortexa15cortexa7[] = {
416 {
417 "nofp", true, false,
418 {
419 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
420 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
421 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
422 }
423 },
424 { NULL, false, false, {isa_nobit}}
425 };
426
427 static const cpu_arch_extension cpu_opttab_cortexa17cortexa7[] = {
428 {
429 "nofp", true, false,
430 {
431 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
432 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
433 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
434 }
435 },
436 { NULL, false, false, {isa_nobit}}
437 };
438
439 static const cpu_arch_extension cpu_opttab_cortexa32[] = {
440 {
441 "crypto", false, false,
442 {
443 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
444 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
445 isa_bit_fp_dbl, isa_nobit
446 }
447 },
448 {
449 "nofp", true, false,
450 {
451 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
452 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
453 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
454 }
455 },
456 { NULL, false, false, {isa_nobit}}
457 };
458
459 static const cpu_arch_extension cpu_opttab_cortexa35[] = {
460 {
461 "crypto", false, false,
462 {
463 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
464 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
465 isa_bit_fp_dbl, isa_nobit
466 }
467 },
468 {
469 "nofp", true, false,
470 {
471 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
472 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
473 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
474 }
475 },
476 { NULL, false, false, {isa_nobit}}
477 };
478
479 static const cpu_arch_extension cpu_opttab_cortexa53[] = {
480 {
481 "crypto", false, false,
482 {
483 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
484 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
485 isa_bit_fp_dbl, isa_nobit
486 }
487 },
488 {
489 "nofp", true, false,
490 {
491 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
492 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
493 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
494 }
495 },
496 { NULL, false, false, {isa_nobit}}
497 };
498
499 static const cpu_arch_extension cpu_opttab_cortexa57[] = {
500 {
501 "crypto", false, false,
502 {
503 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
504 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
505 isa_bit_fp_dbl, isa_nobit
506 }
507 },
508 { NULL, false, false, {isa_nobit}}
509 };
510
511 static const cpu_arch_extension cpu_opttab_cortexa72[] = {
512 {
513 "crypto", false, false,
514 {
515 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
516 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
517 isa_bit_fp_dbl, isa_nobit
518 }
519 },
520 { NULL, false, false, {isa_nobit}}
521 };
522
523 static const cpu_arch_extension cpu_opttab_cortexa73[] = {
524 {
525 "crypto", false, false,
526 {
527 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
528 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
529 isa_bit_fp_dbl, isa_nobit
530 }
531 },
532 { NULL, false, false, {isa_nobit}}
533 };
534
535 static const cpu_arch_extension cpu_opttab_exynosm1[] = {
536 {
537 "crypto", false, false,
538 {
539 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
540 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
541 isa_bit_fp_dbl, isa_nobit
542 }
543 },
544 { NULL, false, false, {isa_nobit}}
545 };
546
547 static const cpu_arch_extension cpu_opttab_xgene1[] = {
548 {
549 "crypto", false, false,
550 {
551 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
552 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
553 isa_bit_fp_dbl, isa_nobit
554 }
555 },
556 { NULL, false, false, {isa_nobit}}
557 };
558
559 static const cpu_arch_extension cpu_opttab_cortexa57cortexa53[] = {
560 {
561 "crypto", false, false,
562 {
563 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
564 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
565 isa_bit_fp_dbl, isa_nobit
566 }
567 },
568 { NULL, false, false, {isa_nobit}}
569 };
570
571 static const cpu_arch_extension cpu_opttab_cortexa72cortexa53[] = {
572 {
573 "crypto", false, false,
574 {
575 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
576 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
577 isa_bit_fp_dbl, isa_nobit
578 }
579 },
580 { NULL, false, false, {isa_nobit}}
581 };
582
583 static const cpu_arch_extension cpu_opttab_cortexa73cortexa35[] = {
584 {
585 "crypto", false, false,
586 {
587 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
588 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
589 isa_bit_fp_dbl, isa_nobit
590 }
591 },
592 { NULL, false, false, {isa_nobit}}
593 };
594
595 static const cpu_arch_extension cpu_opttab_cortexa73cortexa53[] = {
596 {
597 "crypto", false, false,
598 {
599 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
600 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
601 isa_bit_fp_dbl, isa_nobit
602 }
603 },
604 { NULL, false, false, {isa_nobit}}
605 };
606
607 static const cpu_arch_extension cpu_opttab_cortexa55[] = {
608 {
609 "crypto", false, false,
610 {
611 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
612 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
613 isa_bit_fp_dbl, isa_nobit
614 }
615 },
616 {
617 "nofp", true, false,
618 {
619 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
620 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
621 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
622 }
623 },
624 { NULL, false, false, {isa_nobit}}
625 };
626
627 static const cpu_arch_extension cpu_opttab_cortexa75[] = {
628 {
629 "crypto", false, false,
630 {
631 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
632 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
633 isa_bit_fp_dbl, isa_nobit
634 }
635 },
636 { NULL, false, false, {isa_nobit}}
637 };
638
639 static const cpu_arch_extension cpu_opttab_cortexa76[] = {
640 {
641 "crypto", false, false,
642 {
643 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
644 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
645 isa_bit_fp_dbl, isa_nobit
646 }
647 },
648 { NULL, false, false, {isa_nobit}}
649 };
650
651 static const cpu_arch_extension cpu_opttab_neoversen1[] = {
652 {
653 "crypto", false, false,
654 {
655 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
656 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
657 isa_bit_fp_dbl, isa_nobit
658 }
659 },
660 { NULL, false, false, {isa_nobit}}
661 };
662
663 static const cpu_alias cpu_aliastab_neoversen1[] = {
664 { "ares", false},
665 { NULL, false}
666 };
667
668 static const cpu_arch_extension cpu_opttab_cortexa75cortexa55[] = {
669 {
670 "crypto", false, false,
671 {
672 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
673 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
674 isa_bit_fp_dbl, isa_nobit
675 }
676 },
677 { NULL, false, false, {isa_nobit}}
678 };
679
680 static const cpu_arch_extension cpu_opttab_cortexa76cortexa55[] = {
681 {
682 "crypto", false, false,
683 {
684 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
685 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
686 isa_bit_fp_dbl, isa_nobit
687 }
688 },
689 { NULL, false, false, {isa_nobit}}
690 };
691
692 static const cpu_arch_extension cpu_opttab_cortexm33[] = {
693 {
694 "nofp", true, false,
695 {
696 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
697 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
698 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
699 }
700 },
701 {
702 "nodsp", true, false,
703 {
704 isa_bit_armv7em, isa_nobit
705 }
706 },
707 { NULL, false, false, {isa_nobit}}
708 };
709
710 static const cpu_arch_extension cpu_opttab_cortexr52[] = {
711 {
712 "nofp.dp", true, false,
713 {
714 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32,
715 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
716 }
717 },
718 { NULL, false, false, {isa_nobit}}
719 };
720
721 const cpu_option all_cores[] =
722 {
723 {
724 {
725 "arm8",
726 NULL,
727 {
728 isa_bit_armv4, isa_bit_notm, isa_nobit
729 }
730 },
731 NULL,
732 TARGET_ARCH_armv4
733 },
734 {
735 {
736 "arm810",
737 NULL,
738 {
739 isa_bit_armv4, isa_bit_notm, isa_nobit
740 }
741 },
742 NULL,
743 TARGET_ARCH_armv4
744 },
745 {
746 {
747 "strongarm",
748 NULL,
749 {
750 isa_bit_armv4, isa_bit_notm, isa_nobit
751 }
752 },
753 cpu_aliastab_strongarm,
754 TARGET_ARCH_armv4
755 },
756 {
757 {
758 "fa526",
759 NULL,
760 {
761 isa_bit_armv4, isa_bit_notm, isa_nobit
762 }
763 },
764 NULL,
765 TARGET_ARCH_armv4
766 },
767 {
768 {
769 "fa626",
770 NULL,
771 {
772 isa_bit_armv4, isa_bit_notm, isa_nobit
773 }
774 },
775 NULL,
776 TARGET_ARCH_armv4
777 },
778 {
779 {
780 "arm7tdmi",
781 NULL,
782 {
783 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit
784 }
785 },
786 cpu_aliastab_arm7tdmi,
787 TARGET_ARCH_armv4t
788 },
789 {
790 {
791 "arm710t",
792 NULL,
793 {
794 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit
795 }
796 },
797 cpu_aliastab_arm710t,
798 TARGET_ARCH_armv4t
799 },
800 {
801 {
802 "arm9",
803 NULL,
804 {
805 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit
806 }
807 },
808 NULL,
809 TARGET_ARCH_armv4t
810 },
811 {
812 {
813 "arm9tdmi",
814 NULL,
815 {
816 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit
817 }
818 },
819 NULL,
820 TARGET_ARCH_armv4t
821 },
822 {
823 {
824 "arm920t",
825 NULL,
826 {
827 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit
828 }
829 },
830 cpu_aliastab_arm920t,
831 TARGET_ARCH_armv4t
832 },
833 {
834 {
835 "arm10tdmi",
836 NULL,
837 {
838 isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4, isa_bit_notm,
839 isa_nobit
840 }
841 },
842 cpu_aliastab_arm10tdmi,
843 TARGET_ARCH_armv5t
844 },
845 {
846 {
847 "arm9e",
848 cpu_opttab_arm9e,
849 {
850 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t,
851 isa_bit_armv4, isa_bit_notm, isa_bit_fp_dbl, isa_nobit
852 }
853 },
854 cpu_aliastab_arm9e,
855 TARGET_ARCH_armv5te
856 },
857 {
858 {
859 "arm10e",
860 cpu_opttab_arm10e,
861 {
862 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t,
863 isa_bit_armv4, isa_bit_notm, isa_bit_fp_dbl, isa_nobit
864 }
865 },
866 cpu_aliastab_arm10e,
867 TARGET_ARCH_armv5te
868 },
869 {
870 {
871 "xscale",
872 NULL,
873 {
874 isa_bit_armv5te, isa_bit_xscale, isa_bit_thumb, isa_bit_armv5t,
875 isa_bit_armv4, isa_bit_notm, isa_nobit
876 }
877 },
878 NULL,
879 TARGET_ARCH_armv5te
880 },
881 {
882 {
883 "iwmmxt",
884 NULL,
885 {
886 isa_bit_iwmmxt, isa_bit_armv5te, isa_bit_xscale, isa_bit_thumb,
887 isa_bit_armv5t, isa_bit_armv4, isa_bit_notm, isa_nobit
888 }
889 },
890 NULL,
891 TARGET_ARCH_iwmmxt
892 },
893 {
894 {
895 "iwmmxt2",
896 NULL,
897 {
898 isa_bit_iwmmxt, isa_bit_armv5te, isa_bit_xscale, isa_bit_thumb,
899 isa_bit_armv5t, isa_bit_armv4, isa_bit_iwmmxt2, isa_bit_notm,
900 isa_nobit
901 }
902 },
903 NULL,
904 TARGET_ARCH_iwmmxt2
905 },
906 {
907 {
908 "fa606te",
909 NULL,
910 {
911 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4,
912 isa_bit_notm, isa_nobit
913 }
914 },
915 NULL,
916 TARGET_ARCH_armv5te
917 },
918 {
919 {
920 "fa626te",
921 NULL,
922 {
923 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4,
924 isa_bit_notm, isa_nobit
925 }
926 },
927 NULL,
928 TARGET_ARCH_armv5te
929 },
930 {
931 {
932 "fmp626",
933 NULL,
934 {
935 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4,
936 isa_bit_notm, isa_nobit
937 }
938 },
939 NULL,
940 TARGET_ARCH_armv5te
941 },
942 {
943 {
944 "fa726te",
945 NULL,
946 {
947 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4,
948 isa_bit_notm, isa_nobit
949 }
950 },
951 NULL,
952 TARGET_ARCH_armv5te
953 },
954 {
955 {
956 "arm926ej-s",
957 cpu_opttab_arm926ejs,
958 {
959 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t,
960 isa_bit_armv4, isa_bit_notm, isa_bit_fp_dbl, isa_nobit
961 }
962 },
963 NULL,
964 TARGET_ARCH_armv5tej
965 },
966 {
967 {
968 "arm1026ej-s",
969 cpu_opttab_arm1026ejs,
970 {
971 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t,
972 isa_bit_armv4, isa_bit_notm, isa_bit_fp_dbl, isa_nobit
973 }
974 },
975 NULL,
976 TARGET_ARCH_armv5tej
977 },
978 {
979 {
980 "arm1136j-s",
981 NULL,
982 {
983 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
984 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_nobit
985 }
986 },
987 NULL,
988 TARGET_ARCH_armv6j
989 },
990 {
991 {
992 "arm1136jf-s",
993 NULL,
994 {
995 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8,
996 isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6, isa_bit_notm,
997 isa_bit_fp_dbl, isa_nobit
998 }
999 },
1000 NULL,
1001 TARGET_ARCH_armv6j
1002 },
1003 {
1004 {
1005 "arm1176jz-s",
1006 NULL,
1007 {
1008 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1009 isa_bit_armv4, isa_bit_quirk_armv6kz, isa_bit_armv6, isa_bit_notm,
1010 isa_bit_armv6k, isa_nobit
1011 }
1012 },
1013 NULL,
1014 TARGET_ARCH_armv6kz
1015 },
1016 {
1017 {
1018 "arm1176jzf-s",
1019 NULL,
1020 {
1021 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8,
1022 isa_bit_armv5t, isa_bit_armv4, isa_bit_quirk_armv6kz, isa_bit_armv6,
1023 isa_bit_notm, isa_bit_armv6k, isa_bit_fp_dbl, isa_nobit
1024 }
1025 },
1026 NULL,
1027 TARGET_ARCH_armv6kz
1028 },
1029 {
1030 {
1031 "mpcorenovfp",
1032 NULL,
1033 {
1034 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1035 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_bit_armv6k,
1036 isa_nobit
1037 }
1038 },
1039 NULL,
1040 TARGET_ARCH_armv6k
1041 },
1042 {
1043 {
1044 "mpcore",
1045 NULL,
1046 {
1047 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8,
1048 isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6, isa_bit_notm,
1049 isa_bit_armv6k, isa_bit_fp_dbl, isa_nobit
1050 }
1051 },
1052 NULL,
1053 TARGET_ARCH_armv6k
1054 },
1055 {
1056 {
1057 "arm1156t2-s",
1058 NULL,
1059 {
1060 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1061 isa_bit_armv4, isa_bit_armv6, isa_bit_thumb2, isa_bit_notm,
1062 isa_nobit
1063 }
1064 },
1065 NULL,
1066 TARGET_ARCH_armv6t2
1067 },
1068 {
1069 {
1070 "arm1156t2f-s",
1071 NULL,
1072 {
1073 isa_bit_vfpv2, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8,
1074 isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6, isa_bit_thumb2,
1075 isa_bit_notm, isa_bit_fp_dbl, isa_nobit
1076 }
1077 },
1078 NULL,
1079 TARGET_ARCH_armv6t2
1080 },
1081 {
1082 {
1083 "cortex-m1",
1084 NULL,
1085 {
1086 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1087 isa_bit_armv4, isa_bit_armv6, isa_nobit
1088 }
1089 },
1090 NULL,
1091 TARGET_ARCH_armv6s_m
1092 },
1093 {
1094 {
1095 "cortex-m0",
1096 NULL,
1097 {
1098 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1099 isa_bit_armv4, isa_bit_armv6, isa_nobit
1100 }
1101 },
1102 NULL,
1103 TARGET_ARCH_armv6s_m
1104 },
1105 {
1106 {
1107 "cortex-m0plus",
1108 NULL,
1109 {
1110 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1111 isa_bit_armv4, isa_bit_armv6, isa_nobit
1112 }
1113 },
1114 NULL,
1115 TARGET_ARCH_armv6s_m
1116 },
1117 {
1118 {
1119 "cortex-m1.small-multiply",
1120 NULL,
1121 {
1122 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1123 isa_bit_armv4, isa_bit_armv6, isa_nobit
1124 }
1125 },
1126 NULL,
1127 TARGET_ARCH_armv6s_m
1128 },
1129 {
1130 {
1131 "cortex-m0.small-multiply",
1132 NULL,
1133 {
1134 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1135 isa_bit_armv4, isa_bit_armv6, isa_nobit
1136 }
1137 },
1138 NULL,
1139 TARGET_ARCH_armv6s_m
1140 },
1141 {
1142 {
1143 "cortex-m0plus.small-multiply",
1144 NULL,
1145 {
1146 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1147 isa_bit_armv4, isa_bit_armv6, isa_nobit
1148 }
1149 },
1150 NULL,
1151 TARGET_ARCH_armv6s_m
1152 },
1153 {
1154 {
1155 "generic-armv7-a",
1156 cpu_opttab_genericv7a,
1157 {
1158 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_armv5te, isa_bit_thumb,
1159 isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6,
1160 isa_bit_armv7, isa_bit_thumb2, isa_bit_notm, isa_bit_armv6k,
1161 isa_bit_fp_dbl, isa_nobit
1162 }
1163 },
1164 NULL,
1165 TARGET_ARCH_armv7_a
1166 },
1167 {
1168 {
1169 "cortex-a5",
1170 cpu_opttab_cortexa5,
1171 {
1172 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_armv5te, isa_bit_thumb,
1173 isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, isa_bit_neon,
1174 isa_bit_armv6, isa_bit_armv7, isa_bit_fp_d32, isa_bit_thumb2,
1175 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp,
1176 isa_bit_fp_dbl, isa_bit_sec, isa_nobit
1177 }
1178 },
1179 NULL,
1180 TARGET_ARCH_armv7_a
1181 },
1182 {
1183 {
1184 "cortex-a7",
1185 cpu_opttab_cortexa7,
1186 {
1187 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1188 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1189 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1190 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1191 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp,
1192 isa_bit_fp_dbl, isa_bit_sec, isa_nobit
1193 }
1194 },
1195 NULL,
1196 TARGET_ARCH_armv7ve
1197 },
1198 {
1199 {
1200 "cortex-a8",
1201 cpu_opttab_cortexa8,
1202 {
1203 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_armv5te, isa_bit_thumb,
1204 isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, isa_bit_neon,
1205 isa_bit_armv6, isa_bit_armv7, isa_bit_fp_d32, isa_bit_thumb2,
1206 isa_bit_notm, isa_bit_armv6k, isa_bit_fp_dbl, isa_bit_sec,
1207 isa_nobit
1208 }
1209 },
1210 NULL,
1211 TARGET_ARCH_armv7_a
1212 },
1213 {
1214 {
1215 "cortex-a9",
1216 cpu_opttab_cortexa9,
1217 {
1218 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_armv5te, isa_bit_thumb,
1219 isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, isa_bit_neon,
1220 isa_bit_armv6, isa_bit_armv7, isa_bit_fp_d32, isa_bit_thumb2,
1221 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp,
1222 isa_bit_fp_dbl, isa_bit_sec, isa_nobit
1223 }
1224 },
1225 NULL,
1226 TARGET_ARCH_armv7_a
1227 },
1228 {
1229 {
1230 "cortex-a12",
1231 cpu_opttab_cortexa12,
1232 {
1233 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1234 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1235 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1236 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1237 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp,
1238 isa_bit_fp_dbl, isa_bit_sec, isa_nobit
1239 }
1240 },
1241 NULL,
1242 TARGET_ARCH_armv7ve
1243 },
1244 {
1245 {
1246 "cortex-a15",
1247 cpu_opttab_cortexa15,
1248 {
1249 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1250 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1251 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1252 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1253 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp,
1254 isa_bit_fp_dbl, isa_bit_sec, isa_nobit
1255 }
1256 },
1257 NULL,
1258 TARGET_ARCH_armv7ve
1259 },
1260 {
1261 {
1262 "cortex-a17",
1263 cpu_opttab_cortexa17,
1264 {
1265 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1266 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1267 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1268 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1269 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp,
1270 isa_bit_fp_dbl, isa_bit_sec, isa_nobit
1271 }
1272 },
1273 NULL,
1274 TARGET_ARCH_armv7ve
1275 },
1276 {
1277 {
1278 "cortex-r4",
1279 NULL,
1280 {
1281 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1282 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv,
1283 isa_bit_thumb2, isa_bit_notm, isa_bit_armv6k, isa_nobit
1284 }
1285 },
1286 NULL,
1287 TARGET_ARCH_armv7_r
1288 },
1289 {
1290 {
1291 "cortex-r4f",
1292 NULL,
1293 {
1294 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_armv5te, isa_bit_thumb,
1295 isa_bit_be8, isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6,
1296 isa_bit_armv7, isa_bit_tdiv, isa_bit_thumb2, isa_bit_notm,
1297 isa_bit_armv6k, isa_bit_fp_dbl, isa_nobit
1298 }
1299 },
1300 NULL,
1301 TARGET_ARCH_armv7_r
1302 },
1303 {
1304 {
1305 "cortex-r5",
1306 cpu_opttab_cortexr5,
1307 {
1308 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_armv5te,
1309 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4,
1310 isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv, isa_bit_thumb2,
1311 isa_bit_notm, isa_bit_armv6k, isa_bit_fp_dbl, isa_nobit
1312 }
1313 },
1314 NULL,
1315 TARGET_ARCH_armv7_r
1316 },
1317 {
1318 {
1319 "cortex-r7",
1320 cpu_opttab_cortexr7,
1321 {
1322 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_armv5te,
1323 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4,
1324 isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv, isa_bit_thumb2,
1325 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_fp_dbl,
1326 isa_nobit
1327 }
1328 },
1329 NULL,
1330 TARGET_ARCH_armv7_r
1331 },
1332 {
1333 {
1334 "cortex-r8",
1335 cpu_opttab_cortexr8,
1336 {
1337 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_armv5te,
1338 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4,
1339 isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv, isa_bit_thumb2,
1340 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_fp_dbl,
1341 isa_nobit
1342 }
1343 },
1344 NULL,
1345 TARGET_ARCH_armv7_r
1346 },
1347 {
1348 {
1349 "cortex-m7",
1350 cpu_opttab_cortexm7,
1351 {
1352 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_armv5te,
1353 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4,
1354 isa_bit_armv6, isa_bit_armv7em, isa_bit_armv7, isa_bit_fpv5,
1355 isa_bit_tdiv, isa_bit_quirk_no_volatile_ce, isa_bit_thumb2, isa_bit_fp16conv,
1356 isa_bit_fp_dbl, isa_nobit
1357 }
1358 },
1359 NULL,
1360 TARGET_ARCH_armv7e_m
1361 },
1362 {
1363 {
1364 "cortex-m4",
1365 cpu_opttab_cortexm4,
1366 {
1367 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_armv5te,
1368 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4,
1369 isa_bit_armv6, isa_bit_armv7em, isa_bit_armv7, isa_bit_tdiv,
1370 isa_bit_thumb2, isa_bit_fp16conv, isa_nobit
1371 }
1372 },
1373 NULL,
1374 TARGET_ARCH_armv7e_m
1375 },
1376 {
1377 {
1378 "cortex-m3",
1379 NULL,
1380 {
1381 isa_bit_armv5te, isa_bit_thumb, isa_bit_quirk_cm3_ldrd, isa_bit_be8,
1382 isa_bit_armv5t, isa_bit_armv4, isa_bit_armv6, isa_bit_armv7,
1383 isa_bit_tdiv, isa_bit_thumb2, isa_nobit
1384 }
1385 },
1386 NULL,
1387 TARGET_ARCH_armv7_m
1388 },
1389 {
1390 {
1391 "marvell-pj4",
1392 NULL,
1393 {
1394 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1395 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_thumb2,
1396 isa_bit_notm, isa_bit_armv6k, isa_bit_mp, isa_bit_sec,
1397 isa_nobit
1398 }
1399 },
1400 NULL,
1401 TARGET_ARCH_armv7_a
1402 },
1403 {
1404 {
1405 "cortex-a15.cortex-a7",
1406 cpu_opttab_cortexa15cortexa7,
1407 {
1408 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1409 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1410 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1411 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1412 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp,
1413 isa_bit_fp_dbl, isa_bit_sec, isa_nobit
1414 }
1415 },
1416 NULL,
1417 TARGET_ARCH_armv7ve
1418 },
1419 {
1420 {
1421 "cortex-a17.cortex-a7",
1422 cpu_opttab_cortexa17cortexa7,
1423 {
1424 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1425 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1426 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1427 isa_bit_armv7, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1428 isa_bit_notm, isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp,
1429 isa_bit_fp_dbl, isa_bit_sec, isa_nobit
1430 }
1431 },
1432 NULL,
1433 TARGET_ARCH_armv7ve
1434 },
1435 {
1436 {
1437 "cortex-a32",
1438 cpu_opttab_cortexa32,
1439 {
1440 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1441 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1442 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1443 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1444 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1445 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1446 isa_bit_sec, isa_nobit
1447 }
1448 },
1449 NULL,
1450 TARGET_ARCH_armv8_a
1451 },
1452 {
1453 {
1454 "cortex-a35",
1455 cpu_opttab_cortexa35,
1456 {
1457 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1458 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1459 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1460 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1461 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1462 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1463 isa_bit_sec, isa_nobit
1464 }
1465 },
1466 NULL,
1467 TARGET_ARCH_armv8_a
1468 },
1469 {
1470 {
1471 "cortex-a53",
1472 cpu_opttab_cortexa53,
1473 {
1474 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1475 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1476 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1477 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1478 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1479 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1480 isa_bit_sec, isa_nobit
1481 }
1482 },
1483 NULL,
1484 TARGET_ARCH_armv8_a
1485 },
1486 {
1487 {
1488 "cortex-a57",
1489 cpu_opttab_cortexa57,
1490 {
1491 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1492 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1493 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1494 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1495 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1496 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1497 isa_bit_sec, isa_nobit
1498 }
1499 },
1500 NULL,
1501 TARGET_ARCH_armv8_a
1502 },
1503 {
1504 {
1505 "cortex-a72",
1506 cpu_opttab_cortexa72,
1507 {
1508 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1509 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1510 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1511 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1512 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1513 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1514 isa_bit_sec, isa_nobit
1515 }
1516 },
1517 NULL,
1518 TARGET_ARCH_armv8_a
1519 },
1520 {
1521 {
1522 "cortex-a73",
1523 cpu_opttab_cortexa73,
1524 {
1525 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1526 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1527 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1528 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1529 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1530 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1531 isa_bit_sec, isa_nobit
1532 }
1533 },
1534 NULL,
1535 TARGET_ARCH_armv8_a
1536 },
1537 {
1538 {
1539 "exynos-m1",
1540 cpu_opttab_exynosm1,
1541 {
1542 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1543 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1544 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1545 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1546 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1547 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1548 isa_bit_sec, isa_nobit
1549 }
1550 },
1551 NULL,
1552 TARGET_ARCH_armv8_a
1553 },
1554 {
1555 {
1556 "xgene1",
1557 cpu_opttab_xgene1,
1558 {
1559 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1560 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1561 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1562 isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5, isa_bit_tdiv,
1563 isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm, isa_bit_fp16conv,
1564 isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl, isa_bit_sec,
1565 isa_nobit
1566 }
1567 },
1568 NULL,
1569 TARGET_ARCH_armv8_a
1570 },
1571 {
1572 {
1573 "cortex-a57.cortex-a53",
1574 cpu_opttab_cortexa57cortexa53,
1575 {
1576 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1577 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1578 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1579 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1580 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1581 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1582 isa_bit_sec, isa_nobit
1583 }
1584 },
1585 NULL,
1586 TARGET_ARCH_armv8_a
1587 },
1588 {
1589 {
1590 "cortex-a72.cortex-a53",
1591 cpu_opttab_cortexa72cortexa53,
1592 {
1593 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1594 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1595 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1596 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1597 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1598 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1599 isa_bit_sec, isa_nobit
1600 }
1601 },
1602 NULL,
1603 TARGET_ARCH_armv8_a
1604 },
1605 {
1606 {
1607 "cortex-a73.cortex-a35",
1608 cpu_opttab_cortexa73cortexa35,
1609 {
1610 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1611 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1612 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1613 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1614 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1615 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1616 isa_bit_sec, isa_nobit
1617 }
1618 },
1619 NULL,
1620 TARGET_ARCH_armv8_a
1621 },
1622 {
1623 {
1624 "cortex-a73.cortex-a53",
1625 cpu_opttab_cortexa73cortexa53,
1626 {
1627 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1628 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1629 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1630 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1631 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1632 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1633 isa_bit_sec, isa_nobit
1634 }
1635 },
1636 NULL,
1637 TARGET_ARCH_armv8_a
1638 },
1639 {
1640 {
1641 "cortex-a55",
1642 cpu_opttab_cortexa55,
1643 {
1644 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1645 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1646 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon,
1647 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8,
1648 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1649 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv,
1650 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1651 isa_bit_sec, isa_nobit
1652 }
1653 },
1654 NULL,
1655 TARGET_ARCH_armv8_2_a
1656 },
1657 {
1658 {
1659 "cortex-a75",
1660 cpu_opttab_cortexa75,
1661 {
1662 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1663 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1664 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon,
1665 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8,
1666 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1667 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv,
1668 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1669 isa_bit_sec, isa_nobit
1670 }
1671 },
1672 NULL,
1673 TARGET_ARCH_armv8_2_a
1674 },
1675 {
1676 {
1677 "cortex-a76",
1678 cpu_opttab_cortexa76,
1679 {
1680 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1681 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1682 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon,
1683 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8,
1684 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1685 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv,
1686 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1687 isa_bit_sec, isa_nobit
1688 }
1689 },
1690 NULL,
1691 TARGET_ARCH_armv8_2_a
1692 },
1693 {
1694 {
1695 "neoverse-n1",
1696 cpu_opttab_neoversen1,
1697 {
1698 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1699 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1700 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon,
1701 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8,
1702 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1703 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv,
1704 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1705 isa_bit_sec, isa_nobit
1706 }
1707 },
1708 cpu_aliastab_neoversen1,
1709 TARGET_ARCH_armv8_2_a
1710 },
1711 {
1712 {
1713 "cortex-a75.cortex-a55",
1714 cpu_opttab_cortexa75cortexa55,
1715 {
1716 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1717 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1718 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon,
1719 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8,
1720 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1721 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv,
1722 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1723 isa_bit_sec, isa_nobit
1724 }
1725 },
1726 NULL,
1727 TARGET_ARCH_armv8_2_a
1728 },
1729 {
1730 {
1731 "cortex-a76.cortex-a55",
1732 cpu_opttab_cortexa76cortexa55,
1733 {
1734 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1735 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1736 isa_bit_dotprod, isa_bit_lpae, isa_bit_armv4, isa_bit_neon,
1737 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8,
1738 isa_bit_fpv5, isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2,
1739 isa_bit_notm, isa_bit_fp16, isa_bit_armv8_1, isa_bit_fp16conv,
1740 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1741 isa_bit_sec, isa_nobit
1742 }
1743 },
1744 NULL,
1745 TARGET_ARCH_armv8_2_a
1746 },
1747 {
1748 {
1749 "cortex-m23",
1750 NULL,
1751 {
1752 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1753 isa_bit_armv4, isa_bit_armv6, isa_bit_cmse, isa_bit_armv8,
1754 isa_bit_tdiv, isa_nobit
1755 }
1756 },
1757 NULL,
1758 TARGET_ARCH_armv8_m_base
1759 },
1760 {
1761 {
1762 "cortex-m33",
1763 cpu_opttab_cortexm33,
1764 {
1765 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_armv5te,
1766 isa_bit_thumb, isa_bit_be8, isa_bit_armv5t, isa_bit_armv4,
1767 isa_bit_armv6, isa_bit_armv7em, isa_bit_armv7, isa_bit_cmse,
1768 isa_bit_armv8, isa_bit_fpv5, isa_bit_tdiv, isa_bit_thumb2,
1769 isa_bit_fp16conv, isa_nobit
1770 }
1771 },
1772 NULL,
1773 TARGET_ARCH_armv8_m_main
1774 },
1775 {
1776 {
1777 "cortex-r52",
1778 cpu_opttab_cortexr52,
1779 {
1780 isa_bit_vfpv2, isa_bit_adiv, isa_bit_vfpv3, isa_bit_vfpv4,
1781 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
1782 isa_bit_lpae, isa_bit_armv4, isa_bit_neon, isa_bit_armv6,
1783 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_fpv5,
1784 isa_bit_tdiv, isa_bit_fp_d32, isa_bit_thumb2, isa_bit_notm,
1785 isa_bit_fp16conv, isa_bit_armv6k, isa_bit_mp, isa_bit_fp_dbl,
1786 isa_bit_sec, isa_nobit
1787 }
1788 },
1789 NULL,
1790 TARGET_ARCH_armv8_r
1791 },
1792 {{NULL, NULL, {isa_nobit}}, NULL, TARGET_ARCH_arm_none}
1793 };
1794 static const struct cpu_arch_extension arch_opttab_armv5te[] = {
1795 {
1796 "fp", false, false,
1797 {
1798 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1799 }
1800 },
1801 {
1802 "nofp", true, false,
1803 {
1804 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
1805 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
1806 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
1807 }
1808 },
1809 {
1810 "vfpv2", false, true,
1811 {
1812 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1813 }
1814 },
1815 { NULL, false, false, {isa_nobit}}
1816 };
1817
1818 static const struct cpu_arch_extension arch_opttab_armv5tej[] = {
1819 {
1820 "fp", false, false,
1821 {
1822 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1823 }
1824 },
1825 {
1826 "nofp", true, false,
1827 {
1828 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
1829 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
1830 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
1831 }
1832 },
1833 {
1834 "vfpv2", false, true,
1835 {
1836 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1837 }
1838 },
1839 { NULL, false, false, {isa_nobit}}
1840 };
1841
1842 static const struct cpu_arch_extension arch_opttab_armv6[] = {
1843 {
1844 "fp", false, false,
1845 {
1846 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1847 }
1848 },
1849 {
1850 "nofp", true, false,
1851 {
1852 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
1853 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
1854 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
1855 }
1856 },
1857 {
1858 "vfpv2", false, true,
1859 {
1860 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1861 }
1862 },
1863 { NULL, false, false, {isa_nobit}}
1864 };
1865
1866 static const struct cpu_arch_extension arch_opttab_armv6j[] = {
1867 {
1868 "fp", false, false,
1869 {
1870 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1871 }
1872 },
1873 {
1874 "nofp", true, false,
1875 {
1876 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
1877 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
1878 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
1879 }
1880 },
1881 {
1882 "vfpv2", false, true,
1883 {
1884 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1885 }
1886 },
1887 { NULL, false, false, {isa_nobit}}
1888 };
1889
1890 static const struct cpu_arch_extension arch_opttab_armv6k[] = {
1891 {
1892 "fp", false, false,
1893 {
1894 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1895 }
1896 },
1897 {
1898 "nofp", true, false,
1899 {
1900 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
1901 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
1902 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
1903 }
1904 },
1905 {
1906 "vfpv2", false, true,
1907 {
1908 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1909 }
1910 },
1911 { NULL, false, false, {isa_nobit}}
1912 };
1913
1914 static const struct cpu_arch_extension arch_opttab_armv6z[] = {
1915 {
1916 "fp", false, false,
1917 {
1918 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1919 }
1920 },
1921 {
1922 "nofp", true, false,
1923 {
1924 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
1925 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
1926 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
1927 }
1928 },
1929 {
1930 "vfpv2", false, true,
1931 {
1932 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1933 }
1934 },
1935 { NULL, false, false, {isa_nobit}}
1936 };
1937
1938 static const struct cpu_arch_extension arch_opttab_armv6kz[] = {
1939 {
1940 "fp", false, false,
1941 {
1942 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1943 }
1944 },
1945 {
1946 "nofp", true, false,
1947 {
1948 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
1949 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
1950 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
1951 }
1952 },
1953 {
1954 "vfpv2", false, true,
1955 {
1956 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1957 }
1958 },
1959 { NULL, false, false, {isa_nobit}}
1960 };
1961
1962 static const struct cpu_arch_extension arch_opttab_armv6zk[] = {
1963 {
1964 "fp", false, false,
1965 {
1966 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1967 }
1968 },
1969 {
1970 "nofp", true, false,
1971 {
1972 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
1973 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
1974 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
1975 }
1976 },
1977 {
1978 "vfpv2", false, true,
1979 {
1980 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1981 }
1982 },
1983 { NULL, false, false, {isa_nobit}}
1984 };
1985
1986 static const struct cpu_arch_extension arch_opttab_armv6t2[] = {
1987 {
1988 "fp", false, false,
1989 {
1990 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
1991 }
1992 },
1993 {
1994 "nofp", true, false,
1995 {
1996 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
1997 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
1998 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
1999 }
2000 },
2001 {
2002 "vfpv2", false, true,
2003 {
2004 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
2005 }
2006 },
2007 { NULL, false, false, {isa_nobit}}
2008 };
2009
2010 static const struct cpu_arch_extension arch_opttab_armv7[] = {
2011 {
2012 "fp", false, false,
2013 {
2014 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit
2015 }
2016 },
2017 {
2018 "nofp", true, false,
2019 {
2020 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2021 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2022 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2023 }
2024 },
2025 {
2026 "vfpv3-d16", false, true,
2027 {
2028 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit
2029 }
2030 },
2031 { NULL, false, false, {isa_nobit}}
2032 };
2033
2034 static const struct cpu_arch_extension arch_opttab_armv7_a[] = {
2035 {
2036 "mp", false, false,
2037 {
2038 isa_bit_mp, isa_nobit
2039 }
2040 },
2041 {
2042 "sec", false, false,
2043 {
2044 isa_bit_sec, isa_nobit
2045 }
2046 },
2047 {
2048 "fp", false, false,
2049 {
2050 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit
2051 }
2052 },
2053 {
2054 "vfpv3", false, false,
2055 {
2056 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp_dbl,
2057 isa_nobit
2058 }
2059 },
2060 {
2061 "vfpv3-d16-fp16", false, false,
2062 {
2063 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_bit_fp_dbl,
2064 isa_nobit
2065 }
2066 },
2067 {
2068 "vfpv3-fp16", false, false,
2069 {
2070 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp16conv,
2071 isa_bit_fp_dbl, isa_nobit
2072 }
2073 },
2074 {
2075 "vfpv4-d16", false, false,
2076 {
2077 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv,
2078 isa_bit_fp_dbl, isa_nobit
2079 }
2080 },
2081 {
2082 "vfpv4", false, false,
2083 {
2084 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp_d32,
2085 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2086 }
2087 },
2088 {
2089 "simd", false, false,
2090 {
2091 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
2092 isa_bit_fp_dbl, isa_nobit
2093 }
2094 },
2095 {
2096 "neon-fp16", false, false,
2097 {
2098 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
2099 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2100 }
2101 },
2102 {
2103 "neon-vfpv4", false, false,
2104 {
2105 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2106 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2107 }
2108 },
2109 {
2110 "nosimd", true, false,
2111 {
2112 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32,
2113 isa_bit_crypto, isa_nobit
2114 }
2115 },
2116 {
2117 "nofp", true, false,
2118 {
2119 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2120 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2121 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2122 }
2123 },
2124 {
2125 "vfpv3-d16", false, true,
2126 {
2127 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit
2128 }
2129 },
2130 {
2131 "neon", false, true,
2132 {
2133 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
2134 isa_bit_fp_dbl, isa_nobit
2135 }
2136 },
2137 {
2138 "neon-vfpv3", false, true,
2139 {
2140 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
2141 isa_bit_fp_dbl, isa_nobit
2142 }
2143 },
2144 { NULL, false, false, {isa_nobit}}
2145 };
2146
2147 static const struct cpu_arch_extension arch_opttab_armv7ve[] = {
2148 {
2149 "vfpv3-d16", false, false,
2150 {
2151 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit
2152 }
2153 },
2154 {
2155 "vfpv3", false, false,
2156 {
2157 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp_dbl,
2158 isa_nobit
2159 }
2160 },
2161 {
2162 "vfpv3-d16-fp16", false, false,
2163 {
2164 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_bit_fp_dbl,
2165 isa_nobit
2166 }
2167 },
2168 {
2169 "vfpv3-fp16", false, false,
2170 {
2171 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp16conv,
2172 isa_bit_fp_dbl, isa_nobit
2173 }
2174 },
2175 {
2176 "fp", false, false,
2177 {
2178 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv,
2179 isa_bit_fp_dbl, isa_nobit
2180 }
2181 },
2182 {
2183 "vfpv4", false, false,
2184 {
2185 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp_d32,
2186 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2187 }
2188 },
2189 {
2190 "neon", false, false,
2191 {
2192 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
2193 isa_bit_fp_dbl, isa_nobit
2194 }
2195 },
2196 {
2197 "neon-fp16", false, false,
2198 {
2199 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
2200 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2201 }
2202 },
2203 {
2204 "simd", false, false,
2205 {
2206 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2207 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2208 }
2209 },
2210 {
2211 "nosimd", true, false,
2212 {
2213 isa_bit_fp16fml, isa_bit_dotprod, isa_bit_neon, isa_bit_fp_d32,
2214 isa_bit_crypto, isa_nobit
2215 }
2216 },
2217 {
2218 "nofp", true, false,
2219 {
2220 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2221 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2222 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2223 }
2224 },
2225 {
2226 "vfpv4-d16", false, true,
2227 {
2228 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv,
2229 isa_bit_fp_dbl, isa_nobit
2230 }
2231 },
2232 {
2233 "neon-vfpv3", false, true,
2234 {
2235 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
2236 isa_bit_fp_dbl, isa_nobit
2237 }
2238 },
2239 {
2240 "neon-vfpv4", false, true,
2241 {
2242 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2243 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2244 }
2245 },
2246 { NULL, false, false, {isa_nobit}}
2247 };
2248
2249 static const struct cpu_arch_extension arch_opttab_armv7_r[] = {
2250 {
2251 "fp.sp", false, false,
2252 {
2253 isa_bit_vfpv2, isa_bit_vfpv3, isa_nobit
2254 }
2255 },
2256 {
2257 "fp", false, false,
2258 {
2259 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit
2260 }
2261 },
2262 {
2263 "vfpv3xd-fp16", false, false,
2264 {
2265 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_nobit
2266 }
2267 },
2268 {
2269 "vfpv3-d16-fp16", false, false,
2270 {
2271 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_bit_fp_dbl,
2272 isa_nobit
2273 }
2274 },
2275 {
2276 "idiv", false, false,
2277 {
2278 isa_bit_adiv, isa_nobit
2279 }
2280 },
2281 {
2282 "nofp", true, false,
2283 {
2284 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2285 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2286 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2287 }
2288 },
2289 {
2290 "noidiv", true, false,
2291 {
2292 isa_bit_adiv, isa_nobit
2293 }
2294 },
2295 {
2296 "vfpv3xd", false, true,
2297 {
2298 isa_bit_vfpv2, isa_bit_vfpv3, isa_nobit
2299 }
2300 },
2301 {
2302 "vfpv3-d16", false, true,
2303 {
2304 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit
2305 }
2306 },
2307 { NULL, false, false, {isa_nobit}}
2308 };
2309
2310 static const struct cpu_arch_extension arch_opttab_armv7e_m[] = {
2311 {
2312 "fp", false, false,
2313 {
2314 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv,
2315 isa_nobit
2316 }
2317 },
2318 {
2319 "fpv5", false, false,
2320 {
2321 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5,
2322 isa_bit_fp16conv, isa_nobit
2323 }
2324 },
2325 {
2326 "fp.dp", false, false,
2327 {
2328 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5,
2329 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2330 }
2331 },
2332 {
2333 "nofp", true, false,
2334 {
2335 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2336 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2337 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2338 }
2339 },
2340 {
2341 "vfpv4-sp-d16", false, true,
2342 {
2343 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv,
2344 isa_nobit
2345 }
2346 },
2347 {
2348 "fpv5-d16", false, true,
2349 {
2350 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5,
2351 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2352 }
2353 },
2354 { NULL, false, false, {isa_nobit}}
2355 };
2356
2357 static const struct cpu_arch_extension arch_opttab_armv8_a[] = {
2358 {
2359 "crc", false, false,
2360 {
2361 isa_bit_crc32, isa_nobit
2362 }
2363 },
2364 {
2365 "simd", false, false,
2366 {
2367 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2368 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl,
2369 isa_nobit
2370 }
2371 },
2372 {
2373 "crypto", false, false,
2374 {
2375 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2376 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
2377 isa_bit_fp_dbl, isa_nobit
2378 }
2379 },
2380 {
2381 "nocrypto", true, false,
2382 {
2383 isa_bit_crypto, isa_nobit
2384 }
2385 },
2386 {
2387 "nofp", true, false,
2388 {
2389 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2390 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2391 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2392 }
2393 },
2394 {
2395 "sb", false, false,
2396 {
2397 isa_bit_sb, isa_nobit
2398 }
2399 },
2400 {
2401 "predres", false, false,
2402 {
2403 isa_bit_predres, isa_nobit
2404 }
2405 },
2406 { NULL, false, false, {isa_nobit}}
2407 };
2408
2409 static const struct cpu_arch_extension arch_opttab_armv8_1_a[] = {
2410 {
2411 "simd", false, false,
2412 {
2413 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2414 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl,
2415 isa_nobit
2416 }
2417 },
2418 {
2419 "crypto", false, false,
2420 {
2421 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2422 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
2423 isa_bit_fp_dbl, isa_nobit
2424 }
2425 },
2426 {
2427 "nocrypto", true, false,
2428 {
2429 isa_bit_crypto, isa_nobit
2430 }
2431 },
2432 {
2433 "nofp", true, false,
2434 {
2435 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2436 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2437 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2438 }
2439 },
2440 {
2441 "sb", false, false,
2442 {
2443 isa_bit_sb, isa_nobit
2444 }
2445 },
2446 {
2447 "predres", false, false,
2448 {
2449 isa_bit_predres, isa_nobit
2450 }
2451 },
2452 { NULL, false, false, {isa_nobit}}
2453 };
2454
2455 static const struct cpu_arch_extension arch_opttab_armv8_2_a[] = {
2456 {
2457 "simd", false, false,
2458 {
2459 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2460 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl,
2461 isa_nobit
2462 }
2463 },
2464 {
2465 "fp16", false, false,
2466 {
2467 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2468 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2469 isa_bit_fp_dbl, isa_nobit
2470 }
2471 },
2472 {
2473 "fp16fml", false, false,
2474 {
2475 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16fml,
2476 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16,
2477 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2478 }
2479 },
2480 {
2481 "crypto", false, false,
2482 {
2483 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2484 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
2485 isa_bit_fp_dbl, isa_nobit
2486 }
2487 },
2488 {
2489 "nocrypto", true, false,
2490 {
2491 isa_bit_crypto, isa_nobit
2492 }
2493 },
2494 {
2495 "nofp", true, false,
2496 {
2497 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2498 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2499 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2500 }
2501 },
2502 {
2503 "dotprod", false, false,
2504 {
2505 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod,
2506 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv,
2507 isa_bit_fp_dbl, isa_nobit
2508 }
2509 },
2510 {
2511 "sb", false, false,
2512 {
2513 isa_bit_sb, isa_nobit
2514 }
2515 },
2516 {
2517 "predres", false, false,
2518 {
2519 isa_bit_predres, isa_nobit
2520 }
2521 },
2522 { NULL, false, false, {isa_nobit}}
2523 };
2524
2525 static const struct cpu_arch_extension arch_opttab_armv8_3_a[] = {
2526 {
2527 "simd", false, false,
2528 {
2529 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2530 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl,
2531 isa_nobit
2532 }
2533 },
2534 {
2535 "fp16", false, false,
2536 {
2537 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2538 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2539 isa_bit_fp_dbl, isa_nobit
2540 }
2541 },
2542 {
2543 "fp16fml", false, false,
2544 {
2545 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16fml,
2546 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16,
2547 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2548 }
2549 },
2550 {
2551 "crypto", false, false,
2552 {
2553 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2554 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
2555 isa_bit_fp_dbl, isa_nobit
2556 }
2557 },
2558 {
2559 "nocrypto", true, false,
2560 {
2561 isa_bit_crypto, isa_nobit
2562 }
2563 },
2564 {
2565 "nofp", true, false,
2566 {
2567 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2568 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2569 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2570 }
2571 },
2572 {
2573 "dotprod", false, false,
2574 {
2575 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod,
2576 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv,
2577 isa_bit_fp_dbl, isa_nobit
2578 }
2579 },
2580 {
2581 "sb", false, false,
2582 {
2583 isa_bit_sb, isa_nobit
2584 }
2585 },
2586 {
2587 "predres", false, false,
2588 {
2589 isa_bit_predres, isa_nobit
2590 }
2591 },
2592 { NULL, false, false, {isa_nobit}}
2593 };
2594
2595 static const struct cpu_arch_extension arch_opttab_armv8_4_a[] = {
2596 {
2597 "simd", false, false,
2598 {
2599 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod,
2600 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv,
2601 isa_bit_fp_dbl, isa_nobit
2602 }
2603 },
2604 {
2605 "fp16", false, false,
2606 {
2607 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16fml,
2608 isa_bit_dotprod, isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32,
2609 isa_bit_fp16, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2610 }
2611 },
2612 {
2613 "crypto", false, false,
2614 {
2615 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod,
2616 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv,
2617 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2618 }
2619 },
2620 {
2621 "nocrypto", true, false,
2622 {
2623 isa_bit_crypto, isa_nobit
2624 }
2625 },
2626 {
2627 "nofp", true, false,
2628 {
2629 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2630 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2631 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2632 }
2633 },
2634 {
2635 "sb", false, false,
2636 {
2637 isa_bit_sb, isa_nobit
2638 }
2639 },
2640 {
2641 "predres", false, false,
2642 {
2643 isa_bit_predres, isa_nobit
2644 }
2645 },
2646 { NULL, false, false, {isa_nobit}}
2647 };
2648
2649 static const struct cpu_arch_extension arch_opttab_armv8_5_a[] = {
2650 {
2651 "simd", false, false,
2652 {
2653 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod,
2654 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv,
2655 isa_bit_fp_dbl, isa_nobit
2656 }
2657 },
2658 {
2659 "fp16", false, false,
2660 {
2661 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16fml,
2662 isa_bit_dotprod, isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32,
2663 isa_bit_fp16, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2664 }
2665 },
2666 {
2667 "crypto", false, false,
2668 {
2669 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_dotprod,
2670 isa_bit_neon, isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv,
2671 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2672 }
2673 },
2674 {
2675 "nocrypto", true, false,
2676 {
2677 isa_bit_crypto, isa_nobit
2678 }
2679 },
2680 {
2681 "nofp", true, false,
2682 {
2683 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2684 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2685 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2686 }
2687 },
2688 { NULL, false, false, {isa_nobit}}
2689 };
2690
2691 static const struct cpu_arch_extension arch_opttab_armv8_m_main[] = {
2692 {
2693 "dsp", false, false,
2694 {
2695 isa_bit_armv7em, isa_nobit
2696 }
2697 },
2698 {
2699 "fp", false, false,
2700 {
2701 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5,
2702 isa_bit_fp16conv, isa_nobit
2703 }
2704 },
2705 {
2706 "fp.dp", false, false,
2707 {
2708 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5,
2709 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
2710 }
2711 },
2712 {
2713 "nofp", true, false,
2714 {
2715 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2716 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2717 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2718 }
2719 },
2720 {
2721 "nodsp", true, false,
2722 {
2723 isa_bit_armv7em, isa_nobit
2724 }
2725 },
2726 { NULL, false, false, {isa_nobit}}
2727 };
2728
2729 static const struct cpu_arch_extension arch_opttab_armv8_r[] = {
2730 {
2731 "crc", false, false,
2732 {
2733 isa_bit_crc32, isa_nobit
2734 }
2735 },
2736 {
2737 "fp.sp", false, false,
2738 {
2739 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5,
2740 isa_bit_fp16conv, isa_nobit
2741 }
2742 },
2743 {
2744 "simd", false, false,
2745 {
2746 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2747 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl,
2748 isa_nobit
2749 }
2750 },
2751 {
2752 "crypto", false, false,
2753 {
2754 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2755 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
2756 isa_bit_fp_dbl, isa_nobit
2757 }
2758 },
2759 {
2760 "nocrypto", true, false,
2761 {
2762 isa_bit_crypto, isa_nobit
2763 }
2764 },
2765 {
2766 "nofp", true, false,
2767 {
2768 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
2769 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16, isa_bit_fp16conv,
2770 isa_bit_crypto, isa_bit_fp_dbl, isa_nobit
2771 }
2772 },
2773 { NULL, false, false, {isa_nobit}}
2774 };
2775
2776 const arch_option all_architectures[] =
2777 {
2778 {
2779 "armv4",
2780 NULL,
2781 {
2782 isa_bit_armv4, isa_bit_notm, isa_nobit
2783 },
2784 "4", BASE_ARCH_4,
2785 0,
2786 TARGET_CPU_arm7tdmi,
2787 },
2788 {
2789 "armv4t",
2790 NULL,
2791 {
2792 isa_bit_thumb, isa_bit_armv4, isa_bit_notm, isa_nobit
2793 },
2794 "4T", BASE_ARCH_4T,
2795 0,
2796 TARGET_CPU_arm7tdmi,
2797 },
2798 {
2799 "armv5t",
2800 NULL,
2801 {
2802 isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4, isa_bit_notm,
2803 isa_nobit
2804 },
2805 "5T", BASE_ARCH_5T,
2806 0,
2807 TARGET_CPU_arm10tdmi,
2808 },
2809 {
2810 "armv5te",
2811 arch_opttab_armv5te,
2812 {
2813 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4,
2814 isa_bit_notm, isa_nobit
2815 },
2816 "5TE", BASE_ARCH_5TE,
2817 0,
2818 TARGET_CPU_arm1026ejs,
2819 },
2820 {
2821 "armv5tej",
2822 arch_opttab_armv5tej,
2823 {
2824 isa_bit_armv5te, isa_bit_thumb, isa_bit_armv5t, isa_bit_armv4,
2825 isa_bit_notm, isa_nobit
2826 },
2827 "5TEJ", BASE_ARCH_5TEJ,
2828 0,
2829 TARGET_CPU_arm1026ejs,
2830 },
2831 {
2832 "armv6",
2833 arch_opttab_armv6,
2834 {
2835 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2836 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_nobit
2837 },
2838 "6", BASE_ARCH_6,
2839 0,
2840 TARGET_CPU_arm1136js,
2841 },
2842 {
2843 "armv6j",
2844 arch_opttab_armv6j,
2845 {
2846 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2847 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_nobit
2848 },
2849 "6J", BASE_ARCH_6J,
2850 0,
2851 TARGET_CPU_arm1136js,
2852 },
2853 {
2854 "armv6k",
2855 arch_opttab_armv6k,
2856 {
2857 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2858 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_bit_armv6k,
2859 isa_nobit
2860 },
2861 "6K", BASE_ARCH_6K,
2862 0,
2863 TARGET_CPU_mpcore,
2864 },
2865 {
2866 "armv6z",
2867 arch_opttab_armv6z,
2868 {
2869 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2870 isa_bit_armv4, isa_bit_armv6, isa_bit_notm, isa_nobit
2871 },
2872 "6Z", BASE_ARCH_6Z,
2873 0,
2874 TARGET_CPU_arm1176jzs,
2875 },
2876 {
2877 "armv6kz",
2878 arch_opttab_armv6kz,
2879 {
2880 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2881 isa_bit_armv4, isa_bit_quirk_armv6kz, isa_bit_armv6, isa_bit_notm,
2882 isa_bit_armv6k, isa_nobit
2883 },
2884 "6KZ", BASE_ARCH_6KZ,
2885 0,
2886 TARGET_CPU_arm1176jzs,
2887 },
2888 {
2889 "armv6zk",
2890 arch_opttab_armv6zk,
2891 {
2892 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2893 isa_bit_armv4, isa_bit_quirk_armv6kz, isa_bit_armv6, isa_bit_notm,
2894 isa_bit_armv6k, isa_nobit
2895 },
2896 "6KZ", BASE_ARCH_6KZ,
2897 0,
2898 TARGET_CPU_arm1176jzs,
2899 },
2900 {
2901 "armv6t2",
2902 arch_opttab_armv6t2,
2903 {
2904 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2905 isa_bit_armv4, isa_bit_armv6, isa_bit_thumb2, isa_bit_notm,
2906 isa_nobit
2907 },
2908 "6T2", BASE_ARCH_6T2,
2909 0,
2910 TARGET_CPU_arm1156t2s,
2911 },
2912 {
2913 "armv6-m",
2914 NULL,
2915 {
2916 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2917 isa_bit_armv4, isa_bit_armv6, isa_nobit
2918 },
2919 "6M", BASE_ARCH_6M,
2920 'M',
2921 TARGET_CPU_cortexm1,
2922 },
2923 {
2924 "armv6s-m",
2925 NULL,
2926 {
2927 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2928 isa_bit_armv4, isa_bit_armv6, isa_nobit
2929 },
2930 "6M", BASE_ARCH_6M,
2931 'M',
2932 TARGET_CPU_cortexm1,
2933 },
2934 {
2935 "armv7",
2936 arch_opttab_armv7,
2937 {
2938 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2939 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_thumb2,
2940 isa_nobit
2941 },
2942 "7", BASE_ARCH_7,
2943 0,
2944 TARGET_CPU_cortexa8,
2945 },
2946 {
2947 "armv7-a",
2948 arch_opttab_armv7_a,
2949 {
2950 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2951 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_thumb2,
2952 isa_bit_notm, isa_bit_armv6k, isa_nobit
2953 },
2954 "7A", BASE_ARCH_7A,
2955 'A',
2956 TARGET_CPU_cortexa8,
2957 },
2958 {
2959 "armv7ve",
2960 arch_opttab_armv7ve,
2961 {
2962 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8,
2963 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6,
2964 isa_bit_armv7, isa_bit_tdiv, isa_bit_thumb2, isa_bit_notm,
2965 isa_bit_armv6k, isa_bit_mp, isa_bit_sec, isa_nobit
2966 },
2967 "7A", BASE_ARCH_7A,
2968 'A',
2969 TARGET_CPU_cortexa8,
2970 },
2971 {
2972 "armv7-r",
2973 arch_opttab_armv7_r,
2974 {
2975 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2976 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv,
2977 isa_bit_thumb2, isa_bit_notm, isa_bit_armv6k, isa_nobit
2978 },
2979 "7R", BASE_ARCH_7R,
2980 'R',
2981 TARGET_CPU_cortexr4,
2982 },
2983 {
2984 "armv7-m",
2985 NULL,
2986 {
2987 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
2988 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_tdiv,
2989 isa_bit_thumb2, isa_nobit
2990 },
2991 "7M", BASE_ARCH_7M,
2992 'M',
2993 TARGET_CPU_cortexm3,
2994 },
2995 {
2996 "armv7e-m",
2997 arch_opttab_armv7e_m,
2998 {
2999 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
3000 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7em, isa_bit_armv7,
3001 isa_bit_tdiv, isa_bit_thumb2, isa_nobit
3002 },
3003 "7EM", BASE_ARCH_7EM,
3004 'M',
3005 TARGET_CPU_cortexm4,
3006 },
3007 {
3008 "armv8-a",
3009 arch_opttab_armv8_a,
3010 {
3011 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8,
3012 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6,
3013 isa_bit_armv7, isa_bit_armv8, isa_bit_tdiv, isa_bit_thumb2,
3014 isa_bit_notm, isa_bit_armv6k, isa_bit_mp, isa_bit_sec,
3015 isa_nobit
3016 },
3017 "8A", BASE_ARCH_8A,
3018 'A',
3019 TARGET_CPU_cortexa53,
3020 },
3021 {
3022 "armv8.1-a",
3023 arch_opttab_armv8_1_a,
3024 {
3025 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8,
3026 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6,
3027 isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, isa_bit_tdiv,
3028 isa_bit_thumb2, isa_bit_notm, isa_bit_armv8_1, isa_bit_armv6k,
3029 isa_bit_mp, isa_bit_sec, isa_nobit
3030 },
3031 "8A", BASE_ARCH_8A,
3032 'A',
3033 TARGET_CPU_cortexa53,
3034 },
3035 {
3036 "armv8.2-a",
3037 arch_opttab_armv8_2_a,
3038 {
3039 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8,
3040 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6,
3041 isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, isa_bit_tdiv,
3042 isa_bit_thumb2, isa_bit_notm, isa_bit_armv8_1, isa_bit_armv8_2,
3043 isa_bit_armv6k, isa_bit_mp, isa_bit_sec, isa_nobit
3044 },
3045 "8A", BASE_ARCH_8A,
3046 'A',
3047 TARGET_CPU_cortexa53,
3048 },
3049 {
3050 "armv8.3-a",
3051 arch_opttab_armv8_3_a,
3052 {
3053 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8,
3054 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6,
3055 isa_bit_crc32, isa_bit_armv7, isa_bit_armv8, isa_bit_tdiv,
3056 isa_bit_thumb2, isa_bit_notm, isa_bit_armv8_1, isa_bit_armv6k,
3057 isa_bit_armv8_2, isa_bit_armv8_3, isa_bit_mp, isa_bit_sec,
3058 isa_nobit
3059 },
3060 "8A", BASE_ARCH_8A,
3061 'A',
3062 TARGET_CPU_cortexa53,
3063 },
3064 {
3065 "armv8.4-a",
3066 arch_opttab_armv8_4_a,
3067 {
3068 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8,
3069 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6,
3070 isa_bit_armv7, isa_bit_crc32, isa_bit_armv8, isa_bit_tdiv,
3071 isa_bit_thumb2, isa_bit_notm, isa_bit_armv8_1, isa_bit_armv8_2,
3072 isa_bit_armv6k, isa_bit_armv8_3, isa_bit_armv8_4, isa_bit_mp,
3073 isa_bit_sec, isa_nobit
3074 },
3075 "8A", BASE_ARCH_8A,
3076 'A',
3077 TARGET_CPU_cortexa53,
3078 },
3079 {
3080 "armv8.5-a",
3081 arch_opttab_armv8_5_a,
3082 {
3083 isa_bit_adiv, isa_bit_armv5te, isa_bit_sb, isa_bit_thumb,
3084 isa_bit_be8, isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4,
3085 isa_bit_armv6, isa_bit_armv7, isa_bit_crc32, isa_bit_armv8,
3086 isa_bit_tdiv, isa_bit_thumb2, isa_bit_notm, isa_bit_armv8_1,
3087 isa_bit_armv8_2, isa_bit_armv6k, isa_bit_armv8_3, isa_bit_armv8_4,
3088 isa_bit_mp, isa_bit_armv8_5, isa_bit_sec, isa_bit_predres,
3089 isa_nobit
3090 },
3091 "8A", BASE_ARCH_8A,
3092 'A',
3093 TARGET_CPU_cortexa53,
3094 },
3095 {
3096 "armv8-m.base",
3097 NULL,
3098 {
3099 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
3100 isa_bit_armv4, isa_bit_armv6, isa_bit_cmse, isa_bit_armv8,
3101 isa_bit_tdiv, isa_nobit
3102 },
3103 "8M_BASE", BASE_ARCH_8M_BASE,
3104 'M',
3105 TARGET_CPU_cortexm23,
3106 },
3107 {
3108 "armv8-m.main",
3109 arch_opttab_armv8_m_main,
3110 {
3111 isa_bit_armv5te, isa_bit_thumb, isa_bit_be8, isa_bit_armv5t,
3112 isa_bit_armv4, isa_bit_armv6, isa_bit_armv7, isa_bit_cmse,
3113 isa_bit_armv8, isa_bit_tdiv, isa_bit_thumb2, isa_nobit
3114 },
3115 "8M_MAIN", BASE_ARCH_8M_MAIN,
3116 'M',
3117 TARGET_CPU_cortexm7,
3118 },
3119 {
3120 "armv8-r",
3121 arch_opttab_armv8_r,
3122 {
3123 isa_bit_adiv, isa_bit_armv5te, isa_bit_thumb, isa_bit_be8,
3124 isa_bit_armv5t, isa_bit_lpae, isa_bit_armv4, isa_bit_armv6,
3125 isa_bit_armv7, isa_bit_armv8, isa_bit_tdiv, isa_bit_thumb2,
3126 isa_bit_notm, isa_bit_armv6k, isa_bit_mp, isa_bit_sec,
3127 isa_nobit
3128 },
3129 "8R", BASE_ARCH_8R,
3130 'R',
3131 TARGET_CPU_cortexr52,
3132 },
3133 {
3134 "iwmmxt",
3135 NULL,
3136 {
3137 isa_bit_iwmmxt, isa_bit_armv5te, isa_bit_xscale, isa_bit_thumb,
3138 isa_bit_armv5t, isa_bit_armv4, isa_bit_notm, isa_nobit
3139 },
3140 "5TE", BASE_ARCH_5TE,
3141 0,
3142 TARGET_CPU_iwmmxt,
3143 },
3144 {
3145 "iwmmxt2",
3146 NULL,
3147 {
3148 isa_bit_iwmmxt, isa_bit_armv5te, isa_bit_xscale, isa_bit_thumb,
3149 isa_bit_armv5t, isa_bit_armv4, isa_bit_iwmmxt2, isa_bit_notm,
3150 isa_nobit
3151 },
3152 "5TE", BASE_ARCH_5TE,
3153 0,
3154 TARGET_CPU_iwmmxt2,
3155 },
3156 {{NULL, NULL, {isa_nobit}},
3157 NULL, BASE_ARCH_0, 0, TARGET_CPU_arm_none}
3158 };
3159
3160 const arm_fpu_desc all_fpus[] =
3161 {
3162 {
3163 "vfp",
3164 {
3165 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
3166 }
3167 },
3168 {
3169 "vfpv2",
3170 {
3171 isa_bit_vfpv2, isa_bit_fp_dbl, isa_nobit
3172 }
3173 },
3174 {
3175 "vfpv3",
3176 {
3177 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp_dbl,
3178 isa_nobit
3179 }
3180 },
3181 {
3182 "vfpv3-fp16",
3183 {
3184 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp16conv,
3185 isa_bit_fp_dbl, isa_nobit
3186 }
3187 },
3188 {
3189 "vfpv3-d16",
3190 {
3191 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_dbl, isa_nobit
3192 }
3193 },
3194 {
3195 "vfpv3-d16-fp16",
3196 {
3197 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_bit_fp_dbl,
3198 isa_nobit
3199 }
3200 },
3201 {
3202 "vfpv3xd",
3203 {
3204 isa_bit_vfpv2, isa_bit_vfpv3, isa_nobit
3205 }
3206 },
3207 {
3208 "vfpv3xd-fp16",
3209 {
3210 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp16conv, isa_nobit
3211 }
3212 },
3213 {
3214 "neon",
3215 {
3216 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
3217 isa_bit_fp_dbl, isa_nobit
3218 }
3219 },
3220 {
3221 "neon-vfpv3",
3222 {
3223 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
3224 isa_bit_fp_dbl, isa_nobit
3225 }
3226 },
3227 {
3228 "neon-fp16",
3229 {
3230 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_neon, isa_bit_fp_d32,
3231 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
3232 }
3233 },
3234 {
3235 "vfpv4",
3236 {
3237 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp_d32,
3238 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
3239 }
3240 },
3241 {
3242 "neon-vfpv4",
3243 {
3244 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
3245 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
3246 }
3247 },
3248 {
3249 "vfpv4-d16",
3250 {
3251 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv,
3252 isa_bit_fp_dbl, isa_nobit
3253 }
3254 },
3255 {
3256 "fpv4-sp-d16",
3257 {
3258 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fp16conv,
3259 isa_nobit
3260 }
3261 },
3262 {
3263 "fpv5-sp-d16",
3264 {
3265 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5,
3266 isa_bit_fp16conv, isa_nobit
3267 }
3268 },
3269 {
3270 "fpv5-d16",
3271 {
3272 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5,
3273 isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
3274 }
3275 },
3276 {
3277 "fp-armv8",
3278 {
3279 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_fpv5,
3280 isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl, isa_nobit
3281 }
3282 },
3283 {
3284 "neon-fp-armv8",
3285 {
3286 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
3287 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_fp_dbl,
3288 isa_nobit
3289 }
3290 },
3291 {
3292 "crypto-neon-fp-armv8",
3293 {
3294 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_vfpv4, isa_bit_neon,
3295 isa_bit_fpv5, isa_bit_fp_d32, isa_bit_fp16conv, isa_bit_crypto,
3296 isa_bit_fp_dbl, isa_nobit
3297 }
3298 },
3299 {
3300 "vfp3",
3301 {
3302 isa_bit_vfpv2, isa_bit_vfpv3, isa_bit_fp_d32, isa_bit_fp_dbl,
3303 isa_nobit
3304 }
3305 },
3306 };
3307