xref: /netbsd-src/external/gpl3/gcc/usr.bin/gcc/arch/earmhfeb/arm-isa.h (revision cf89d143ddc4c4858b3b762976d9b0ce1d6c4300)
1 /* This file is automatically generated.  DO NOT EDIT! */
2 /* Generated from: NetBSD: mknative-gcc,v 1.117 2023/07/31 01:48:37 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-2022 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 enum isa_feature {
28   isa_nobit = 0,
29   isa_bit_cdecp1,
30   isa_bit_vfpv2,
31   isa_bit_adiv,
32   isa_bit_cdecp2,
33   isa_bit_vfpv3,
34   isa_bit_cdecp3,
35   isa_bit_vfpv4,
36   isa_bit_cdecp4,
37   isa_bit_cdecp5,
38   isa_bit_cdecp6,
39   isa_bit_cdecp7,
40   isa_bit_quirk_aes_1742098,
41   isa_bit_smallmul,
42   isa_bit_mve,
43   isa_bit_iwmmxt,
44   isa_bit_armv5te,
45   isa_bit_i8mm,
46   isa_bit_fp16fml,
47   isa_bit_xscale,
48   isa_bit_quirk_no_asmcpu,
49   isa_bit_bf16,
50   isa_bit_sb,
51   isa_bit_thumb,
52   isa_bit_quirk_cm3_ldrd,
53   isa_bit_be8,
54   isa_bit_armv5t,
55   isa_bit_dotprod,
56   isa_bit_lpae,
57   isa_bit_armv4,
58   isa_bit_armv8_1m_main,
59   isa_bit_quirk_armv6kz,
60   isa_bit_neon,
61   isa_bit_armv6,
62   isa_bit_crc32,
63   isa_bit_armv7,
64   isa_bit_armv7em,
65   isa_bit_cmse,
66   isa_bit_armv8,
67   isa_bit_fpv5,
68   isa_bit_armv9,
69   isa_bit_vfp_base,
70   isa_bit_quirk_vlldm,
71   isa_bit_tdiv,
72   isa_bit_quirk_no_volatile_ce,
73   isa_bit_fp_d32,
74   isa_bit_thumb2,
75   isa_bit_iwmmxt2,
76   isa_bit_notm,
77   isa_bit_fp16,
78   isa_bit_armv8_1,
79   isa_bit_fp16conv,
80   isa_bit_armv8_2,
81   isa_bit_armv6k,
82   isa_bit_armv8_3,
83   isa_bit_armv8_4,
84   isa_bit_mp,
85   isa_bit_armv8_5,
86   isa_bit_crypto,
87   isa_bit_armv8_6,
88   isa_bit_mve_float,
89   isa_bit_fp_dbl,
90   isa_bit_sec,
91   isa_bit_cdecp0,
92   isa_bit_predres,
93   isa_num_bits
94 };
95 
96 #define ISA_CRYPTO \
97   isa_bit_crypto, \
98   isa_bit_neon, \
99   isa_bit_fp_dbl, \
100   isa_bit_fp_d32
101 
102 #define ISA_ARMv8_1a \
103   isa_bit_crc32, \
104   isa_bit_be8, \
105   isa_bit_lpae, \
106   isa_bit_notm, \
107   isa_bit_thumb, \
108   isa_bit_adiv, \
109   isa_bit_armv8_1, \
110   isa_bit_sec, \
111   isa_bit_armv5t, \
112   isa_bit_armv6k, \
113   isa_bit_thumb2, \
114   isa_bit_armv5te, \
115   isa_bit_mp, \
116   isa_bit_armv4, \
117   isa_bit_armv6, \
118   isa_bit_armv7, \
119   isa_bit_armv8, \
120   isa_bit_tdiv
121 
122 #define ISA_ARMv5t \
123   isa_bit_thumb, \
124   isa_bit_armv5t, \
125   isa_bit_armv4, \
126   isa_bit_notm
127 
128 #define ISA_ALL_FPU_EXTERNAL \
129   isa_bit_fp16, \
130   isa_bit_bf16
131 
132 #define ISA_ALL_CRYPTO \
133   isa_bit_crypto
134 
135 #define ISA_DOTPROD \
136   isa_bit_neon, \
137   isa_bit_dotprod, \
138   isa_bit_fp_dbl, \
139   isa_bit_fp_d32
140 
141 #define ISA_ARMv9a \
142   isa_bit_armv6k, \
143   isa_bit_thumb2, \
144   isa_bit_be8, \
145   isa_bit_adiv, \
146   isa_bit_armv4, \
147   isa_bit_armv6, \
148   isa_bit_armv7, \
149   isa_bit_armv8, \
150   isa_bit_armv9, \
151   isa_bit_armv8_1, \
152   isa_bit_armv8_2, \
153   isa_bit_armv8_3, \
154   isa_bit_crc32, \
155   isa_bit_armv8_4, \
156   isa_bit_armv8_5, \
157   isa_bit_sec, \
158   isa_bit_predres, \
159   isa_bit_mp, \
160   isa_bit_tdiv, \
161   isa_bit_armv5te, \
162   isa_bit_thumb, \
163   isa_bit_sb, \
164   isa_bit_lpae, \
165   isa_bit_notm, \
166   isa_bit_armv5t
167 
168 #define ISA_ARMv8_6a \
169   isa_bit_notm, \
170   isa_bit_sb, \
171   isa_bit_armv8_1, \
172   isa_bit_armv8_2, \
173   isa_bit_armv8_3, \
174   isa_bit_armv8_4, \
175   isa_bit_armv8_5, \
176   isa_bit_armv8_6, \
177   isa_bit_armv4, \
178   isa_bit_armv6, \
179   isa_bit_armv7, \
180   isa_bit_armv8, \
181   isa_bit_be8, \
182   isa_bit_predres, \
183   isa_bit_adiv, \
184   isa_bit_armv5te, \
185   isa_bit_crc32, \
186   isa_bit_armv5t, \
187   isa_bit_armv6k, \
188   isa_bit_thumb2, \
189   isa_bit_sec, \
190   isa_bit_thumb, \
191   isa_bit_tdiv, \
192   isa_bit_mp, \
193   isa_bit_lpae
194 
195 #define ISA_ARMv7m \
196   isa_bit_thumb, \
197   isa_bit_be8, \
198   isa_bit_armv5te, \
199   isa_bit_armv4, \
200   isa_bit_armv6, \
201   isa_bit_armv7, \
202   isa_bit_thumb2, \
203   isa_bit_armv5t, \
204   isa_bit_tdiv
205 
206 #define ISA_MVE_FP \
207   isa_bit_mve, \
208   isa_bit_fpv5, \
209   isa_bit_mve_float, \
210   isa_bit_fp16, \
211   isa_bit_vfpv2, \
212   isa_bit_vfpv3, \
213   isa_bit_vfpv4, \
214   isa_bit_fp16conv, \
215   isa_bit_armv7em
216 
217 #define ISA_ARMv8m_main \
218   isa_bit_armv5te, \
219   isa_bit_cmse, \
220   isa_bit_armv5t, \
221   isa_bit_thumb2, \
222   isa_bit_thumb, \
223   isa_bit_be8, \
224   isa_bit_armv4, \
225   isa_bit_armv6, \
226   isa_bit_armv7, \
227   isa_bit_armv8, \
228   isa_bit_tdiv
229 
230 #define ISA_ARMv8m_base \
231   isa_bit_tdiv, \
232   isa_bit_armv5te, \
233   isa_bit_cmse, \
234   isa_bit_thumb, \
235   isa_bit_armv5t, \
236   isa_bit_be8, \
237   isa_bit_armv4, \
238   isa_bit_armv6, \
239   isa_bit_armv8
240 
241 #define ISA_FPv5 \
242   isa_bit_fp16conv, \
243   isa_bit_fpv5, \
244   isa_bit_vfpv2, \
245   isa_bit_vfpv3, \
246   isa_bit_vfpv4
247 
248 #define ISA_ARMv7r \
249   isa_bit_tdiv, \
250   isa_bit_armv5te, \
251   isa_bit_be8, \
252   isa_bit_notm, \
253   isa_bit_armv4, \
254   isa_bit_armv6, \
255   isa_bit_armv7, \
256   isa_bit_thumb2, \
257   isa_bit_thumb, \
258   isa_bit_armv5t, \
259   isa_bit_armv6k
260 
261 #define ISA_ARMv8_3a \
262   isa_bit_thumb, \
263   isa_bit_tdiv, \
264   isa_bit_lpae, \
265   isa_bit_notm, \
266   isa_bit_sec, \
267   isa_bit_armv5t, \
268   isa_bit_armv6k, \
269   isa_bit_thumb2, \
270   isa_bit_armv4, \
271   isa_bit_armv6, \
272   isa_bit_armv7, \
273   isa_bit_armv8, \
274   isa_bit_adiv, \
275   isa_bit_mp, \
276   isa_bit_armv8_1, \
277   isa_bit_armv8_2, \
278   isa_bit_armv8_3, \
279   isa_bit_crc32, \
280   isa_bit_be8, \
281   isa_bit_armv5te
282 
283 #define ISA_ALL_SIMD_EXTERNAL \
284   isa_bit_fp16fml, \
285   isa_bit_dotprod, \
286   isa_bit_i8mm
287 
288 #define ISA_VFPv2 \
289   isa_bit_vfpv2
290 
291 #define ISA_FP_DBL \
292   isa_bit_fp_dbl
293 
294 #define ISA_VFPv3 \
295   isa_bit_vfpv2, \
296   isa_bit_vfpv3
297 
298 #define ISA_VFPv4 \
299   isa_bit_fp16conv, \
300   isa_bit_vfpv2, \
301   isa_bit_vfpv3, \
302   isa_bit_vfpv4
303 
304 #define ISA_ARMv7ve \
305   isa_bit_armv4, \
306   isa_bit_armv6, \
307   isa_bit_armv7, \
308   isa_bit_tdiv, \
309   isa_bit_mp, \
310   isa_bit_lpae, \
311   isa_bit_be8, \
312   isa_bit_notm, \
313   isa_bit_adiv, \
314   isa_bit_thumb, \
315   isa_bit_thumb2, \
316   isa_bit_armv5te, \
317   isa_bit_armv5t, \
318   isa_bit_armv6k, \
319   isa_bit_sec
320 
321 #define ISA_ARMv4t \
322   isa_bit_notm, \
323   isa_bit_thumb, \
324   isa_bit_armv4
325 
326 #define ISA_ARMv6j \
327   isa_bit_notm, \
328   isa_bit_armv5te, \
329   isa_bit_be8, \
330   isa_bit_thumb, \
331   isa_bit_armv4, \
332   isa_bit_armv6, \
333   isa_bit_armv5t
334 
335 #define ISA_ALL_FP \
336   isa_bit_fp_d32, \
337   isa_bit_neon, \
338   isa_bit_dotprod, \
339   isa_bit_vfpv2, \
340   isa_bit_vfpv3, \
341   isa_bit_vfpv4, \
342   isa_bit_fpv5, \
343   isa_bit_fp16conv, \
344   isa_bit_fp16fml, \
345   isa_bit_crypto, \
346   isa_bit_i8mm, \
347   isa_bit_fp16, \
348   isa_bit_fp_dbl, \
349   isa_bit_bf16
350 
351 #define ISA_ARMv6k \
352   isa_bit_thumb, \
353   isa_bit_armv5te, \
354   isa_bit_armv4, \
355   isa_bit_armv6, \
356   isa_bit_notm, \
357   isa_bit_armv5t, \
358   isa_bit_be8, \
359   isa_bit_armv6k
360 
361 #define ISA_FP_D32 \
362   isa_bit_fp_d32, \
363   isa_bit_fp_dbl
364 
365 #define ISA_ALL_QUIRKS \
366   isa_bit_quirk_aes_1742098, \
367   isa_bit_quirk_cm3_ldrd, \
368   isa_bit_quirk_vlldm, \
369   isa_bit_xscale, \
370   isa_bit_quirk_no_asmcpu, \
371   isa_bit_quirk_armv6kz, \
372   isa_bit_quirk_no_volatile_ce
373 
374 #define ISA_ARMv8_5a \
375   isa_bit_predres, \
376   isa_bit_armv5te, \
377   isa_bit_sec, \
378   isa_bit_tdiv, \
379   isa_bit_armv4, \
380   isa_bit_armv6, \
381   isa_bit_armv7, \
382   isa_bit_armv8, \
383   isa_bit_armv5t, \
384   isa_bit_mp, \
385   isa_bit_armv6k, \
386   isa_bit_thumb2, \
387   isa_bit_lpae, \
388   isa_bit_notm, \
389   isa_bit_crc32, \
390   isa_bit_sb, \
391   isa_bit_be8, \
392   isa_bit_adiv, \
393   isa_bit_thumb, \
394   isa_bit_armv8_1, \
395   isa_bit_armv8_2, \
396   isa_bit_armv8_3, \
397   isa_bit_armv8_4, \
398   isa_bit_armv8_5
399 
400 #define ISA_ARMv8a \
401   isa_bit_armv5t, \
402   isa_bit_armv6k, \
403   isa_bit_thumb2, \
404   isa_bit_tdiv, \
405   isa_bit_sec, \
406   isa_bit_mp, \
407   isa_bit_lpae, \
408   isa_bit_notm, \
409   isa_bit_armv4, \
410   isa_bit_armv6, \
411   isa_bit_armv7, \
412   isa_bit_armv8, \
413   isa_bit_adiv, \
414   isa_bit_armv5te, \
415   isa_bit_be8, \
416   isa_bit_thumb
417 
418 #define ISA_ARMv6m \
419   isa_bit_armv5te, \
420   isa_bit_thumb, \
421   isa_bit_armv5t, \
422   isa_bit_armv4, \
423   isa_bit_armv6, \
424   isa_bit_be8
425 
426 #define ISA_ALL_FPU_INTERNAL \
427   isa_bit_crypto, \
428   isa_bit_neon, \
429   isa_bit_fp_dbl, \
430   isa_bit_fp_d32, \
431   isa_bit_fp16conv, \
432   isa_bit_fpv5, \
433   isa_bit_vfpv2, \
434   isa_bit_vfpv3, \
435   isa_bit_vfpv4
436 
437 #define ISA_IGNORE_FOR_MULTILIB \
438   isa_bit_cdecp0, \
439   isa_bit_cdecp1, \
440   isa_bit_cdecp2, \
441   isa_bit_cdecp3, \
442   isa_bit_cdecp4, \
443   isa_bit_cdecp5, \
444   isa_bit_cdecp6, \
445   isa_bit_cdecp7
446 
447 #define ISA_ARMv5tej \
448   isa_bit_armv5t, \
449   isa_bit_armv4, \
450   isa_bit_notm, \
451   isa_bit_armv5te, \
452   isa_bit_thumb
453 
454 #define ISA_ALL_SIMD \
455   isa_bit_i8mm, \
456   isa_bit_fp_d32, \
457   isa_bit_fp16fml, \
458   isa_bit_neon, \
459   isa_bit_dotprod, \
460   isa_bit_crypto
461 
462 #define ISA_MVE \
463   isa_bit_mve, \
464   isa_bit_armv7em
465 
466 #define ISA_ARMv8_2a \
467   isa_bit_mp, \
468   isa_bit_thumb, \
469   isa_bit_be8, \
470   isa_bit_armv5t, \
471   isa_bit_tdiv, \
472   isa_bit_armv6k, \
473   isa_bit_armv8_1, \
474   isa_bit_armv8_2, \
475   isa_bit_thumb2, \
476   isa_bit_lpae, \
477   isa_bit_notm, \
478   isa_bit_armv4, \
479   isa_bit_armv6, \
480   isa_bit_armv7, \
481   isa_bit_armv8, \
482   isa_bit_armv5te, \
483   isa_bit_sec, \
484   isa_bit_crc32, \
485   isa_bit_adiv
486 
487 #define ISA_NEON \
488   isa_bit_fp_dbl, \
489   isa_bit_fp_d32, \
490   isa_bit_neon
491 
492 #define ISA_ARMv5te \
493   isa_bit_thumb, \
494   isa_bit_armv4, \
495   isa_bit_notm, \
496   isa_bit_armv5t, \
497   isa_bit_armv5te
498 
499 #define ISA_ARMv4 \
500   isa_bit_armv4, \
501   isa_bit_notm
502 
503 #define ISA_ARMv8_1m_main \
504   isa_bit_thumb2, \
505   isa_bit_armv5te, \
506   isa_bit_thumb, \
507   isa_bit_tdiv, \
508   isa_bit_cmse, \
509   isa_bit_be8, \
510   isa_bit_armv4, \
511   isa_bit_armv8_1m_main, \
512   isa_bit_armv6, \
513   isa_bit_armv7, \
514   isa_bit_armv8, \
515   isa_bit_armv5t
516 
517 #define ISA_ARMv6 \
518   isa_bit_armv5t, \
519   isa_bit_armv4, \
520   isa_bit_armv6, \
521   isa_bit_be8, \
522   isa_bit_thumb, \
523   isa_bit_armv5te, \
524   isa_bit_notm
525 
526 #define ISA_ARMv7 \
527   isa_bit_thumb2, \
528   isa_bit_be8, \
529   isa_bit_thumb, \
530   isa_bit_armv4, \
531   isa_bit_armv6, \
532   isa_bit_armv7, \
533   isa_bit_armv5te, \
534   isa_bit_armv5t
535 
536 #define ISA_ARMv6zk \
537   isa_bit_armv4, \
538   isa_bit_armv6, \
539   isa_bit_armv5te, \
540   isa_bit_notm, \
541   isa_bit_thumb, \
542   isa_bit_armv5t, \
543   isa_bit_armv6k, \
544   isa_bit_be8
545 
546 #define ISA_ARMv6kz \
547   isa_bit_armv5t, \
548   isa_bit_armv6k, \
549   isa_bit_thumb, \
550   isa_bit_notm, \
551   isa_bit_quirk_armv6kz, \
552   isa_bit_be8, \
553   isa_bit_armv4, \
554   isa_bit_armv6, \
555   isa_bit_armv5te
556 
557 #define ISA_ARMv6z \
558   isa_bit_notm, \
559   isa_bit_armv4, \
560   isa_bit_armv6, \
561   isa_bit_armv5te, \
562   isa_bit_thumb, \
563   isa_bit_be8, \
564   isa_bit_armv5t
565 
566 #define ISA_ARMv8r \
567   isa_bit_adiv, \
568   isa_bit_armv5te, \
569   isa_bit_armv4, \
570   isa_bit_armv6, \
571   isa_bit_armv7, \
572   isa_bit_armv8, \
573   isa_bit_mp, \
574   isa_bit_be8, \
575   isa_bit_tdiv, \
576   isa_bit_lpae, \
577   isa_bit_notm, \
578   isa_bit_thumb, \
579   isa_bit_armv5t, \
580   isa_bit_armv6k, \
581   isa_bit_thumb2, \
582   isa_bit_sec
583 
584 #define ISA_FP_ARMv8 \
585   isa_bit_fpv5, \
586   isa_bit_vfpv2, \
587   isa_bit_vfpv3, \
588   isa_bit_vfpv4, \
589   isa_bit_fp16conv, \
590   isa_bit_fp_dbl, \
591   isa_bit_fp_d32
592 
593 #define ISA_ALL_SIMD_INTERNAL \
594   isa_bit_neon, \
595   isa_bit_crypto, \
596   isa_bit_fp_d32
597 
598 #define ISA_ARMv8_4a \
599   isa_bit_thumb, \
600   isa_bit_mp, \
601   isa_bit_armv5te, \
602   isa_bit_adiv, \
603   isa_bit_be8, \
604   isa_bit_armv4, \
605   isa_bit_armv6, \
606   isa_bit_armv7, \
607   isa_bit_armv8, \
608   isa_bit_armv5t, \
609   isa_bit_armv6k, \
610   isa_bit_thumb2, \
611   isa_bit_crc32, \
612   isa_bit_tdiv, \
613   isa_bit_sec, \
614   isa_bit_armv8_1, \
615   isa_bit_armv8_2, \
616   isa_bit_armv8_3, \
617   isa_bit_armv8_4, \
618   isa_bit_lpae, \
619   isa_bit_notm
620 
621 #define ISA_ARMv7a \
622   isa_bit_armv5t, \
623   isa_bit_thumb, \
624   isa_bit_armv6k, \
625   isa_bit_thumb2, \
626   isa_bit_be8, \
627   isa_bit_armv4, \
628   isa_bit_armv6, \
629   isa_bit_armv7, \
630   isa_bit_armv5te, \
631   isa_bit_notm
632 
633 #define ISA_ARMv6t2 \
634   isa_bit_notm, \
635   isa_bit_armv4, \
636   isa_bit_armv6, \
637   isa_bit_armv5te, \
638   isa_bit_armv5t, \
639   isa_bit_thumb2, \
640   isa_bit_be8, \
641   isa_bit_thumb
642 
643 #define ISA_ARMv7em \
644   isa_bit_armv4, \
645   isa_bit_armv6, \
646   isa_bit_armv7, \
647   isa_bit_be8, \
648   isa_bit_armv5t, \
649   isa_bit_armv7em, \
650   isa_bit_thumb2, \
651   isa_bit_armv5te, \
652   isa_bit_thumb, \
653   isa_bit_tdiv
654 
655 struct fbit_implication {
656   /* Represents a feature implication, where:
657      ante IMPLIES cons
658      meaning that if ante is enabled then we should
659      also implicitly enable cons.  */
660   enum isa_feature ante;
661   enum isa_feature cons;
662 };
663 
664 static const struct fbit_implication all_implied_fbits[] =
665 {
666   { isa_bit_vfpv2, isa_bit_vfp_base },
667   { isa_bit_vfpv3, isa_bit_vfp_base },
668   { isa_bit_vfpv4, isa_bit_vfp_base },
669   { isa_bit_fp16, isa_bit_vfp_base },
670   { isa_bit_fp16conv, isa_bit_vfp_base },
671   { isa_bit_mve, isa_bit_vfp_base },
672   { isa_bit_fp_d32, isa_bit_vfp_base },
673   { isa_bit_fp16fml, isa_bit_vfp_base },
674   { isa_bit_i8mm, isa_bit_vfp_base },
675   { isa_bit_dotprod, isa_bit_vfp_base },
676   { isa_bit_crypto, isa_bit_vfp_base },
677   { isa_bit_bf16, isa_bit_vfp_base },
678   { isa_bit_fp_dbl, isa_bit_vfp_base },
679   { isa_bit_armv7em, isa_bit_vfp_base },
680   { isa_bit_neon, isa_bit_vfp_base },
681   { isa_bit_mve_float, isa_bit_vfp_base },
682   { isa_bit_fpv5, isa_bit_vfp_base },
683   { isa_nobit, isa_nobit }
684 };
685 
686