xref: /netbsd-src/external/gpl3/gcc.old/usr.bin/gcc/arch/arm/arm-cpu-cdata.h (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
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