xref: /netbsd-src/external/gpl3/gcc.old/usr.bin/gcc/arch/earmeb/arm-isa.h (revision 4c3eb207d36f67d31994830c0a694161fc1ca39b)
1cef8759bSmrg /* This file is automatically generated.  DO NOT EDIT! */
2*4c3eb207Smrg /* Generated from: NetBSD: mknative-gcc,v 1.116 2022/07/22 06:50:26 mrg Exp  */
3cef8759bSmrg /* Generated from: NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp  */
4cef8759bSmrg 
5cef8759bSmrg /* -*- buffer-read-only: t -*-
6cef8759bSmrg    Generated automatically by parsecpu.awk from arm-cpus.in.
7cef8759bSmrg    Do not edit.
8cef8759bSmrg 
9*4c3eb207Smrg    Copyright (C) 2011-2020 Free Software Foundation, Inc.
10cef8759bSmrg 
11cef8759bSmrg    This file is part of GCC.
12cef8759bSmrg 
13cef8759bSmrg    GCC is free software; you can redistribute it and/or modify
14cef8759bSmrg    it under the terms of the GNU General Public License as
15cef8759bSmrg    published by the Free Software Foundation; either version 3,
16cef8759bSmrg    or (at your option) any later version.
17cef8759bSmrg 
18cef8759bSmrg    GCC is distributed in the hope that it will be useful,
19cef8759bSmrg    but WITHOUT ANY WARRANTY; without even the implied warranty of
20cef8759bSmrg    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21cef8759bSmrg    GNU General Public License for more details.
22cef8759bSmrg 
23cef8759bSmrg    You should have received a copy of the GNU General Public
24cef8759bSmrg    License along with GCC; see the file COPYING3.  If not see
25cef8759bSmrg    <http://www.gnu.org/licenses/>.  */
26cef8759bSmrg 
27cef8759bSmrg enum isa_feature {
28cef8759bSmrg   isa_nobit = 0,
29*4c3eb207Smrg   isa_bit_cdecp1,
30cef8759bSmrg   isa_bit_vfpv2,
31cef8759bSmrg   isa_bit_adiv,
32*4c3eb207Smrg   isa_bit_cdecp2,
33cef8759bSmrg   isa_bit_vfpv3,
34*4c3eb207Smrg   isa_bit_cdecp3,
35cef8759bSmrg   isa_bit_vfpv4,
36*4c3eb207Smrg   isa_bit_cdecp4,
37*4c3eb207Smrg   isa_bit_cdecp5,
38*4c3eb207Smrg   isa_bit_cdecp6,
39*4c3eb207Smrg   isa_bit_cdecp7,
40cef8759bSmrg   isa_bit_smallmul,
41*4c3eb207Smrg   isa_bit_mve,
42cef8759bSmrg   isa_bit_iwmmxt,
43627f7eb2Smrg   isa_bit_armv5te,
44*4c3eb207Smrg   isa_bit_i8mm,
45cef8759bSmrg   isa_bit_fp16fml,
46cef8759bSmrg   isa_bit_xscale,
47*4c3eb207Smrg   isa_bit_quirk_no_asmcpu,
48*4c3eb207Smrg   isa_bit_bf16,
49627f7eb2Smrg   isa_bit_sb,
50cef8759bSmrg   isa_bit_thumb,
51cef8759bSmrg   isa_bit_quirk_cm3_ldrd,
52cef8759bSmrg   isa_bit_be8,
53627f7eb2Smrg   isa_bit_armv5t,
54cef8759bSmrg   isa_bit_dotprod,
55cef8759bSmrg   isa_bit_lpae,
56cef8759bSmrg   isa_bit_armv4,
57*4c3eb207Smrg   isa_bit_armv8_1m_main,
58cef8759bSmrg   isa_bit_quirk_armv6kz,
59cef8759bSmrg   isa_bit_neon,
60cef8759bSmrg   isa_bit_armv6,
61cef8759bSmrg   isa_bit_crc32,
62cef8759bSmrg   isa_bit_armv7,
63cef8759bSmrg   isa_bit_armv7em,
64cef8759bSmrg   isa_bit_cmse,
65cef8759bSmrg   isa_bit_armv8,
66cef8759bSmrg   isa_bit_fpv5,
67*4c3eb207Smrg   isa_bit_vfp_base,
68*4c3eb207Smrg   isa_bit_quirk_vlldm,
69cef8759bSmrg   isa_bit_tdiv,
70cef8759bSmrg   isa_bit_quirk_no_volatile_ce,
71cef8759bSmrg   isa_bit_fp_d32,
72cef8759bSmrg   isa_bit_thumb2,
73cef8759bSmrg   isa_bit_iwmmxt2,
74cef8759bSmrg   isa_bit_notm,
75cef8759bSmrg   isa_bit_fp16,
76cef8759bSmrg   isa_bit_armv8_1,
77cef8759bSmrg   isa_bit_fp16conv,
78cef8759bSmrg   isa_bit_armv8_2,
79cef8759bSmrg   isa_bit_armv6k,
80cef8759bSmrg   isa_bit_armv8_3,
81cef8759bSmrg   isa_bit_armv8_4,
82cef8759bSmrg   isa_bit_mp,
83627f7eb2Smrg   isa_bit_armv8_5,
84cef8759bSmrg   isa_bit_crypto,
85*4c3eb207Smrg   isa_bit_armv8_6,
86*4c3eb207Smrg   isa_bit_mve_float,
87cef8759bSmrg   isa_bit_fp_dbl,
88cef8759bSmrg   isa_bit_sec,
89*4c3eb207Smrg   isa_bit_cdecp0,
90627f7eb2Smrg   isa_bit_predres,
91cef8759bSmrg   isa_num_bits
92cef8759bSmrg };
93cef8759bSmrg 
94cef8759bSmrg #define ISA_CRYPTO \
95cef8759bSmrg   isa_bit_crypto, \
96cef8759bSmrg   isa_bit_neon, \
97*4c3eb207Smrg   isa_bit_fp_dbl, \
98*4c3eb207Smrg   isa_bit_fp_d32
99cef8759bSmrg 
100cef8759bSmrg #define ISA_ARMv8_1a \
101cef8759bSmrg   isa_bit_crc32, \
102cef8759bSmrg   isa_bit_be8, \
103*4c3eb207Smrg   isa_bit_lpae, \
104*4c3eb207Smrg   isa_bit_notm, \
105*4c3eb207Smrg   isa_bit_thumb, \
106*4c3eb207Smrg   isa_bit_adiv, \
107*4c3eb207Smrg   isa_bit_armv8_1, \
108*4c3eb207Smrg   isa_bit_sec, \
109*4c3eb207Smrg   isa_bit_armv5t, \
110*4c3eb207Smrg   isa_bit_armv6k, \
111*4c3eb207Smrg   isa_bit_thumb2, \
112*4c3eb207Smrg   isa_bit_armv5te, \
113cef8759bSmrg   isa_bit_mp, \
114cef8759bSmrg   isa_bit_armv4, \
115cef8759bSmrg   isa_bit_armv6, \
116cef8759bSmrg   isa_bit_armv7, \
117cef8759bSmrg   isa_bit_armv8, \
118*4c3eb207Smrg   isa_bit_tdiv
119cef8759bSmrg 
120cef8759bSmrg #define ISA_ARMv5t \
121cef8759bSmrg   isa_bit_thumb, \
122627f7eb2Smrg   isa_bit_armv5t, \
123*4c3eb207Smrg   isa_bit_armv4, \
124*4c3eb207Smrg   isa_bit_notm
125*4c3eb207Smrg 
126*4c3eb207Smrg #define ISA_ALL_FPU_EXTERNAL \
127*4c3eb207Smrg   isa_bit_fp16, \
128*4c3eb207Smrg   isa_bit_bf16
129cef8759bSmrg 
130cef8759bSmrg #define ISA_ALL_CRYPTO \
131cef8759bSmrg   isa_bit_crypto
132cef8759bSmrg 
133cef8759bSmrg #define ISA_DOTPROD \
134627f7eb2Smrg   isa_bit_neon, \
135*4c3eb207Smrg   isa_bit_dotprod, \
136*4c3eb207Smrg   isa_bit_fp_dbl, \
137*4c3eb207Smrg   isa_bit_fp_d32
138cef8759bSmrg 
139*4c3eb207Smrg #define ISA_ARMv8_6a \
140*4c3eb207Smrg   isa_bit_notm, \
141*4c3eb207Smrg   isa_bit_sb, \
142*4c3eb207Smrg   isa_bit_armv8_1, \
143*4c3eb207Smrg   isa_bit_armv8_2, \
144*4c3eb207Smrg   isa_bit_armv8_3, \
145*4c3eb207Smrg   isa_bit_armv8_4, \
146*4c3eb207Smrg   isa_bit_armv8_5, \
147*4c3eb207Smrg   isa_bit_armv8_6, \
148cef8759bSmrg   isa_bit_armv4, \
149cef8759bSmrg   isa_bit_armv6, \
150cef8759bSmrg   isa_bit_armv7, \
151cef8759bSmrg   isa_bit_armv8, \
152cef8759bSmrg   isa_bit_be8, \
153*4c3eb207Smrg   isa_bit_predres, \
154*4c3eb207Smrg   isa_bit_adiv, \
155*4c3eb207Smrg   isa_bit_armv5te, \
156*4c3eb207Smrg   isa_bit_crc32, \
157627f7eb2Smrg   isa_bit_armv5t, \
158*4c3eb207Smrg   isa_bit_armv6k, \
159*4c3eb207Smrg   isa_bit_thumb2, \
160*4c3eb207Smrg   isa_bit_sec, \
161*4c3eb207Smrg   isa_bit_thumb, \
162*4c3eb207Smrg   isa_bit_tdiv, \
163*4c3eb207Smrg   isa_bit_mp, \
164*4c3eb207Smrg   isa_bit_lpae
165*4c3eb207Smrg 
166*4c3eb207Smrg #define ISA_ARMv7m \
167*4c3eb207Smrg   isa_bit_thumb, \
168*4c3eb207Smrg   isa_bit_be8, \
169*4c3eb207Smrg   isa_bit_armv5te, \
170cef8759bSmrg   isa_bit_armv4, \
171cef8759bSmrg   isa_bit_armv6, \
172*4c3eb207Smrg   isa_bit_armv7, \
173*4c3eb207Smrg   isa_bit_thumb2, \
174*4c3eb207Smrg   isa_bit_armv5t, \
175*4c3eb207Smrg   isa_bit_tdiv
176cef8759bSmrg 
177*4c3eb207Smrg #define ISA_MVE_FP \
178*4c3eb207Smrg   isa_bit_mve, \
179*4c3eb207Smrg   isa_bit_fpv5, \
180*4c3eb207Smrg   isa_bit_mve_float, \
181*4c3eb207Smrg   isa_bit_fp16, \
182cef8759bSmrg   isa_bit_vfpv2, \
183cef8759bSmrg   isa_bit_vfpv3, \
184627f7eb2Smrg   isa_bit_vfpv4, \
185*4c3eb207Smrg   isa_bit_fp16conv, \
186*4c3eb207Smrg   isa_bit_armv7em
187*4c3eb207Smrg 
188*4c3eb207Smrg #define ISA_ARMv8m_main \
189*4c3eb207Smrg   isa_bit_armv5te, \
190*4c3eb207Smrg   isa_bit_cmse, \
191*4c3eb207Smrg   isa_bit_armv5t, \
192*4c3eb207Smrg   isa_bit_thumb2, \
193*4c3eb207Smrg   isa_bit_thumb, \
194*4c3eb207Smrg   isa_bit_be8, \
195*4c3eb207Smrg   isa_bit_armv4, \
196*4c3eb207Smrg   isa_bit_armv6, \
197*4c3eb207Smrg   isa_bit_armv7, \
198*4c3eb207Smrg   isa_bit_armv8, \
199*4c3eb207Smrg   isa_bit_tdiv
200*4c3eb207Smrg 
201*4c3eb207Smrg #define ISA_ARMv8m_base \
202*4c3eb207Smrg   isa_bit_tdiv, \
203*4c3eb207Smrg   isa_bit_armv5te, \
204*4c3eb207Smrg   isa_bit_cmse, \
205*4c3eb207Smrg   isa_bit_thumb, \
206*4c3eb207Smrg   isa_bit_armv5t, \
207*4c3eb207Smrg   isa_bit_be8, \
208*4c3eb207Smrg   isa_bit_armv4, \
209*4c3eb207Smrg   isa_bit_armv6, \
210*4c3eb207Smrg   isa_bit_armv8
211*4c3eb207Smrg 
212*4c3eb207Smrg #define ISA_FPv5 \
213*4c3eb207Smrg   isa_bit_fp16conv, \
214*4c3eb207Smrg   isa_bit_fpv5, \
215*4c3eb207Smrg   isa_bit_vfpv2, \
216*4c3eb207Smrg   isa_bit_vfpv3, \
217*4c3eb207Smrg   isa_bit_vfpv4
218cef8759bSmrg 
219cef8759bSmrg #define ISA_ARMv7r \
220cef8759bSmrg   isa_bit_tdiv, \
221627f7eb2Smrg   isa_bit_armv5te, \
222cef8759bSmrg   isa_bit_be8, \
223*4c3eb207Smrg   isa_bit_notm, \
224cef8759bSmrg   isa_bit_armv4, \
225cef8759bSmrg   isa_bit_armv6, \
226cef8759bSmrg   isa_bit_armv7, \
227cef8759bSmrg   isa_bit_thumb2, \
228cef8759bSmrg   isa_bit_thumb, \
229627f7eb2Smrg   isa_bit_armv5t, \
230*4c3eb207Smrg   isa_bit_armv6k
231cef8759bSmrg 
232cef8759bSmrg #define ISA_ARMv8_3a \
233*4c3eb207Smrg   isa_bit_thumb, \
234*4c3eb207Smrg   isa_bit_tdiv, \
235*4c3eb207Smrg   isa_bit_lpae, \
236*4c3eb207Smrg   isa_bit_notm, \
237*4c3eb207Smrg   isa_bit_sec, \
238*4c3eb207Smrg   isa_bit_armv5t, \
239*4c3eb207Smrg   isa_bit_armv6k, \
240cef8759bSmrg   isa_bit_thumb2, \
241cef8759bSmrg   isa_bit_armv4, \
242cef8759bSmrg   isa_bit_armv6, \
243cef8759bSmrg   isa_bit_armv7, \
244cef8759bSmrg   isa_bit_armv8, \
245cef8759bSmrg   isa_bit_adiv, \
246cef8759bSmrg   isa_bit_mp, \
247cef8759bSmrg   isa_bit_armv8_1, \
248cef8759bSmrg   isa_bit_armv8_2, \
249cef8759bSmrg   isa_bit_armv8_3, \
250cef8759bSmrg   isa_bit_crc32, \
251*4c3eb207Smrg   isa_bit_be8, \
252627f7eb2Smrg   isa_bit_armv5te
253cef8759bSmrg 
254*4c3eb207Smrg #define ISA_ALL_SIMD_EXTERNAL \
255*4c3eb207Smrg   isa_bit_fp16fml, \
256*4c3eb207Smrg   isa_bit_dotprod, \
257*4c3eb207Smrg   isa_bit_i8mm
258*4c3eb207Smrg 
259cef8759bSmrg #define ISA_VFPv2 \
260cef8759bSmrg   isa_bit_vfpv2
261cef8759bSmrg 
262cef8759bSmrg #define ISA_FP_DBL \
263cef8759bSmrg   isa_bit_fp_dbl
264cef8759bSmrg 
265cef8759bSmrg #define ISA_VFPv3 \
266cef8759bSmrg   isa_bit_vfpv2, \
267cef8759bSmrg   isa_bit_vfpv3
268cef8759bSmrg 
269cef8759bSmrg #define ISA_VFPv4 \
270*4c3eb207Smrg   isa_bit_fp16conv, \
271cef8759bSmrg   isa_bit_vfpv2, \
272cef8759bSmrg   isa_bit_vfpv3, \
273*4c3eb207Smrg   isa_bit_vfpv4
274cef8759bSmrg 
275cef8759bSmrg #define ISA_ARMv7ve \
276*4c3eb207Smrg   isa_bit_armv4, \
277*4c3eb207Smrg   isa_bit_armv6, \
278*4c3eb207Smrg   isa_bit_armv7, \
279*4c3eb207Smrg   isa_bit_tdiv, \
280cef8759bSmrg   isa_bit_mp, \
281cef8759bSmrg   isa_bit_lpae, \
282cef8759bSmrg   isa_bit_be8, \
283cef8759bSmrg   isa_bit_notm, \
284cef8759bSmrg   isa_bit_adiv, \
285*4c3eb207Smrg   isa_bit_thumb, \
286*4c3eb207Smrg   isa_bit_thumb2, \
287*4c3eb207Smrg   isa_bit_armv5te, \
288*4c3eb207Smrg   isa_bit_armv5t, \
289*4c3eb207Smrg   isa_bit_armv6k, \
290*4c3eb207Smrg   isa_bit_sec
291cef8759bSmrg 
292cef8759bSmrg #define ISA_ARMv4t \
293cef8759bSmrg   isa_bit_notm, \
294*4c3eb207Smrg   isa_bit_thumb, \
295*4c3eb207Smrg   isa_bit_armv4
296cef8759bSmrg 
297cef8759bSmrg #define ISA_ARMv6j \
298cef8759bSmrg   isa_bit_notm, \
299*4c3eb207Smrg   isa_bit_armv5te, \
300cef8759bSmrg   isa_bit_be8, \
301cef8759bSmrg   isa_bit_thumb, \
302*4c3eb207Smrg   isa_bit_armv4, \
303*4c3eb207Smrg   isa_bit_armv6, \
304*4c3eb207Smrg   isa_bit_armv5t
305cef8759bSmrg 
306cef8759bSmrg #define ISA_ALL_FP \
307cef8759bSmrg   isa_bit_fp_d32, \
308cef8759bSmrg   isa_bit_neon, \
309*4c3eb207Smrg   isa_bit_dotprod, \
310cef8759bSmrg   isa_bit_vfpv2, \
311cef8759bSmrg   isa_bit_vfpv3, \
312cef8759bSmrg   isa_bit_vfpv4, \
313*4c3eb207Smrg   isa_bit_fpv5, \
314*4c3eb207Smrg   isa_bit_fp16conv, \
315*4c3eb207Smrg   isa_bit_fp16fml, \
316*4c3eb207Smrg   isa_bit_crypto, \
317*4c3eb207Smrg   isa_bit_i8mm, \
318*4c3eb207Smrg   isa_bit_fp16, \
319*4c3eb207Smrg   isa_bit_fp_dbl, \
320*4c3eb207Smrg   isa_bit_bf16
321cef8759bSmrg 
322cef8759bSmrg #define ISA_ARMv6k \
323cef8759bSmrg   isa_bit_thumb, \
324*4c3eb207Smrg   isa_bit_armv5te, \
325*4c3eb207Smrg   isa_bit_armv4, \
326*4c3eb207Smrg   isa_bit_armv6, \
327cef8759bSmrg   isa_bit_notm, \
328627f7eb2Smrg   isa_bit_armv5t, \
329cef8759bSmrg   isa_bit_be8, \
330*4c3eb207Smrg   isa_bit_armv6k
331cef8759bSmrg 
332cef8759bSmrg #define ISA_FP_D32 \
333cef8759bSmrg   isa_bit_fp_d32, \
334cef8759bSmrg   isa_bit_fp_dbl
335cef8759bSmrg 
336cef8759bSmrg #define ISA_ALL_QUIRKS \
337627f7eb2Smrg   isa_bit_quirk_cm3_ldrd, \
338*4c3eb207Smrg   isa_bit_quirk_vlldm, \
339*4c3eb207Smrg   isa_bit_xscale, \
340*4c3eb207Smrg   isa_bit_quirk_no_asmcpu, \
341cef8759bSmrg   isa_bit_quirk_armv6kz, \
342cef8759bSmrg   isa_bit_quirk_no_volatile_ce
343cef8759bSmrg 
344627f7eb2Smrg #define ISA_ARMv8_5a \
345627f7eb2Smrg   isa_bit_predres, \
346*4c3eb207Smrg   isa_bit_armv5te, \
347*4c3eb207Smrg   isa_bit_sec, \
348*4c3eb207Smrg   isa_bit_tdiv, \
349cef8759bSmrg   isa_bit_armv4, \
350cef8759bSmrg   isa_bit_armv6, \
351cef8759bSmrg   isa_bit_armv7, \
352cef8759bSmrg   isa_bit_armv8, \
353627f7eb2Smrg   isa_bit_armv5t, \
354627f7eb2Smrg   isa_bit_mp, \
355627f7eb2Smrg   isa_bit_armv6k, \
356*4c3eb207Smrg   isa_bit_thumb2, \
357*4c3eb207Smrg   isa_bit_lpae, \
358*4c3eb207Smrg   isa_bit_notm, \
359*4c3eb207Smrg   isa_bit_crc32, \
360*4c3eb207Smrg   isa_bit_sb, \
361*4c3eb207Smrg   isa_bit_be8, \
362*4c3eb207Smrg   isa_bit_adiv, \
363*4c3eb207Smrg   isa_bit_thumb, \
364627f7eb2Smrg   isa_bit_armv8_1, \
365627f7eb2Smrg   isa_bit_armv8_2, \
366627f7eb2Smrg   isa_bit_armv8_3, \
367627f7eb2Smrg   isa_bit_armv8_4, \
368*4c3eb207Smrg   isa_bit_armv8_5
369627f7eb2Smrg 
370627f7eb2Smrg #define ISA_ARMv8a \
371627f7eb2Smrg   isa_bit_armv5t, \
372627f7eb2Smrg   isa_bit_armv6k, \
373627f7eb2Smrg   isa_bit_thumb2, \
374627f7eb2Smrg   isa_bit_tdiv, \
375627f7eb2Smrg   isa_bit_sec, \
376*4c3eb207Smrg   isa_bit_mp, \
377*4c3eb207Smrg   isa_bit_lpae, \
378*4c3eb207Smrg   isa_bit_notm, \
379627f7eb2Smrg   isa_bit_armv4, \
380627f7eb2Smrg   isa_bit_armv6, \
381627f7eb2Smrg   isa_bit_armv7, \
382627f7eb2Smrg   isa_bit_armv8, \
383*4c3eb207Smrg   isa_bit_adiv, \
384627f7eb2Smrg   isa_bit_armv5te, \
385627f7eb2Smrg   isa_bit_be8, \
386627f7eb2Smrg   isa_bit_thumb
387cef8759bSmrg 
388cef8759bSmrg #define ISA_ARMv6m \
389*4c3eb207Smrg   isa_bit_armv5te, \
390*4c3eb207Smrg   isa_bit_thumb, \
391627f7eb2Smrg   isa_bit_armv5t, \
392cef8759bSmrg   isa_bit_armv4, \
393cef8759bSmrg   isa_bit_armv6, \
394627f7eb2Smrg   isa_bit_be8
395cef8759bSmrg 
396cef8759bSmrg #define ISA_ALL_FPU_INTERNAL \
397627f7eb2Smrg   isa_bit_crypto, \
398*4c3eb207Smrg   isa_bit_neon, \
399*4c3eb207Smrg   isa_bit_fp_dbl, \
400627f7eb2Smrg   isa_bit_fp_d32, \
401*4c3eb207Smrg   isa_bit_fp16conv, \
402*4c3eb207Smrg   isa_bit_fpv5, \
403cef8759bSmrg   isa_bit_vfpv2, \
404cef8759bSmrg   isa_bit_vfpv3, \
405cef8759bSmrg   isa_bit_vfpv4
406cef8759bSmrg 
407*4c3eb207Smrg #define ISA_IGNORE_FOR_MULTILIB \
408*4c3eb207Smrg   isa_bit_cdecp0, \
409*4c3eb207Smrg   isa_bit_cdecp1, \
410*4c3eb207Smrg   isa_bit_cdecp2, \
411*4c3eb207Smrg   isa_bit_cdecp3, \
412*4c3eb207Smrg   isa_bit_cdecp4, \
413*4c3eb207Smrg   isa_bit_cdecp5, \
414*4c3eb207Smrg   isa_bit_cdecp6, \
415*4c3eb207Smrg   isa_bit_cdecp7
416*4c3eb207Smrg 
417cef8759bSmrg #define ISA_ARMv5tej \
418627f7eb2Smrg   isa_bit_armv5t, \
419cef8759bSmrg   isa_bit_armv4, \
420*4c3eb207Smrg   isa_bit_notm, \
421627f7eb2Smrg   isa_bit_armv5te, \
422*4c3eb207Smrg   isa_bit_thumb
423cef8759bSmrg 
424cef8759bSmrg #define ISA_ALL_SIMD \
425*4c3eb207Smrg   isa_bit_i8mm, \
426cef8759bSmrg   isa_bit_fp_d32, \
427cef8759bSmrg   isa_bit_fp16fml, \
428cef8759bSmrg   isa_bit_neon, \
429cef8759bSmrg   isa_bit_dotprod, \
430cef8759bSmrg   isa_bit_crypto
431cef8759bSmrg 
432*4c3eb207Smrg #define ISA_MVE \
433*4c3eb207Smrg   isa_bit_mve, \
434*4c3eb207Smrg   isa_bit_armv7em
435*4c3eb207Smrg 
436cef8759bSmrg #define ISA_ARMv8_2a \
437*4c3eb207Smrg   isa_bit_mp, \
438*4c3eb207Smrg   isa_bit_thumb, \
439*4c3eb207Smrg   isa_bit_be8, \
440627f7eb2Smrg   isa_bit_armv5t, \
441cef8759bSmrg   isa_bit_tdiv, \
442cef8759bSmrg   isa_bit_armv6k, \
443cef8759bSmrg   isa_bit_armv8_1, \
444cef8759bSmrg   isa_bit_armv8_2, \
445cef8759bSmrg   isa_bit_thumb2, \
446cef8759bSmrg   isa_bit_lpae, \
447cef8759bSmrg   isa_bit_notm, \
448cef8759bSmrg   isa_bit_armv4, \
449cef8759bSmrg   isa_bit_armv6, \
450cef8759bSmrg   isa_bit_armv7, \
451cef8759bSmrg   isa_bit_armv8, \
452*4c3eb207Smrg   isa_bit_armv5te, \
453*4c3eb207Smrg   isa_bit_sec, \
454*4c3eb207Smrg   isa_bit_crc32, \
455cef8759bSmrg   isa_bit_adiv
456cef8759bSmrg 
457cef8759bSmrg #define ISA_NEON \
458cef8759bSmrg   isa_bit_fp_dbl, \
459*4c3eb207Smrg   isa_bit_fp_d32, \
460*4c3eb207Smrg   isa_bit_neon
461cef8759bSmrg 
462cef8759bSmrg #define ISA_ARMv5te \
463cef8759bSmrg   isa_bit_thumb, \
464*4c3eb207Smrg   isa_bit_armv4, \
465cef8759bSmrg   isa_bit_notm, \
466*4c3eb207Smrg   isa_bit_armv5t, \
467*4c3eb207Smrg   isa_bit_armv5te
468cef8759bSmrg 
469cef8759bSmrg #define ISA_ARMv4 \
470cef8759bSmrg   isa_bit_armv4, \
471cef8759bSmrg   isa_bit_notm
472cef8759bSmrg 
473*4c3eb207Smrg #define ISA_ARMv8_1m_main \
474*4c3eb207Smrg   isa_bit_thumb2, \
475627f7eb2Smrg   isa_bit_armv5te, \
476*4c3eb207Smrg   isa_bit_thumb, \
477*4c3eb207Smrg   isa_bit_tdiv, \
478*4c3eb207Smrg   isa_bit_cmse, \
479627f7eb2Smrg   isa_bit_be8, \
480627f7eb2Smrg   isa_bit_armv4, \
481*4c3eb207Smrg   isa_bit_armv8_1m_main, \
482*4c3eb207Smrg   isa_bit_armv6, \
483*4c3eb207Smrg   isa_bit_armv7, \
484*4c3eb207Smrg   isa_bit_armv8, \
485*4c3eb207Smrg   isa_bit_armv5t
486*4c3eb207Smrg 
487*4c3eb207Smrg #define ISA_ARMv6 \
488*4c3eb207Smrg   isa_bit_armv5t, \
489*4c3eb207Smrg   isa_bit_armv4, \
490*4c3eb207Smrg   isa_bit_armv6, \
491*4c3eb207Smrg   isa_bit_be8, \
492*4c3eb207Smrg   isa_bit_thumb, \
493*4c3eb207Smrg   isa_bit_armv5te, \
494*4c3eb207Smrg   isa_bit_notm
495cef8759bSmrg 
496cef8759bSmrg #define ISA_ARMv7 \
497cef8759bSmrg   isa_bit_thumb2, \
498cef8759bSmrg   isa_bit_be8, \
499*4c3eb207Smrg   isa_bit_thumb, \
500cef8759bSmrg   isa_bit_armv4, \
501cef8759bSmrg   isa_bit_armv6, \
502cef8759bSmrg   isa_bit_armv7, \
503*4c3eb207Smrg   isa_bit_armv5te, \
504*4c3eb207Smrg   isa_bit_armv5t
505cef8759bSmrg 
506cef8759bSmrg #define ISA_ARMv6zk \
507*4c3eb207Smrg   isa_bit_armv4, \
508*4c3eb207Smrg   isa_bit_armv6, \
509*4c3eb207Smrg   isa_bit_armv5te, \
510*4c3eb207Smrg   isa_bit_notm, \
511*4c3eb207Smrg   isa_bit_thumb, \
512627f7eb2Smrg   isa_bit_armv5t, \
513cef8759bSmrg   isa_bit_armv6k, \
514*4c3eb207Smrg   isa_bit_be8
515cef8759bSmrg 
516cef8759bSmrg #define ISA_ARMv6kz \
517*4c3eb207Smrg   isa_bit_armv5t, \
518*4c3eb207Smrg   isa_bit_armv6k, \
519cef8759bSmrg   isa_bit_thumb, \
520cef8759bSmrg   isa_bit_notm, \
521cef8759bSmrg   isa_bit_quirk_armv6kz, \
522cef8759bSmrg   isa_bit_be8, \
523*4c3eb207Smrg   isa_bit_armv4, \
524*4c3eb207Smrg   isa_bit_armv6, \
525627f7eb2Smrg   isa_bit_armv5te
526cef8759bSmrg 
527cef8759bSmrg #define ISA_ARMv6z \
528cef8759bSmrg   isa_bit_notm, \
529cef8759bSmrg   isa_bit_armv4, \
530cef8759bSmrg   isa_bit_armv6, \
531627f7eb2Smrg   isa_bit_armv5te, \
532*4c3eb207Smrg   isa_bit_thumb, \
533*4c3eb207Smrg   isa_bit_be8, \
534*4c3eb207Smrg   isa_bit_armv5t
535cef8759bSmrg 
536cef8759bSmrg #define ISA_ARMv8r \
537*4c3eb207Smrg   isa_bit_adiv, \
538*4c3eb207Smrg   isa_bit_armv5te, \
539cef8759bSmrg   isa_bit_armv4, \
540cef8759bSmrg   isa_bit_armv6, \
541cef8759bSmrg   isa_bit_armv7, \
542cef8759bSmrg   isa_bit_armv8, \
543*4c3eb207Smrg   isa_bit_mp, \
544*4c3eb207Smrg   isa_bit_be8, \
545*4c3eb207Smrg   isa_bit_tdiv, \
546cef8759bSmrg   isa_bit_lpae, \
547cef8759bSmrg   isa_bit_notm, \
548cef8759bSmrg   isa_bit_thumb, \
549627f7eb2Smrg   isa_bit_armv5t, \
550cef8759bSmrg   isa_bit_armv6k, \
551cef8759bSmrg   isa_bit_thumb2, \
552*4c3eb207Smrg   isa_bit_sec
553cef8759bSmrg 
554cef8759bSmrg #define ISA_FP_ARMv8 \
555*4c3eb207Smrg   isa_bit_fpv5, \
556cef8759bSmrg   isa_bit_vfpv2, \
557cef8759bSmrg   isa_bit_vfpv3, \
558cef8759bSmrg   isa_bit_vfpv4, \
559cef8759bSmrg   isa_bit_fp16conv, \
560*4c3eb207Smrg   isa_bit_fp_dbl, \
561*4c3eb207Smrg   isa_bit_fp_d32
562cef8759bSmrg 
563cef8759bSmrg #define ISA_ALL_SIMD_INTERNAL \
564*4c3eb207Smrg   isa_bit_neon, \
565cef8759bSmrg   isa_bit_crypto, \
566*4c3eb207Smrg   isa_bit_fp_d32
567cef8759bSmrg 
568cef8759bSmrg #define ISA_ARMv8_4a \
569cef8759bSmrg   isa_bit_thumb, \
570627f7eb2Smrg   isa_bit_mp, \
571*4c3eb207Smrg   isa_bit_armv5te, \
572*4c3eb207Smrg   isa_bit_adiv, \
573627f7eb2Smrg   isa_bit_be8, \
574*4c3eb207Smrg   isa_bit_armv4, \
575*4c3eb207Smrg   isa_bit_armv6, \
576*4c3eb207Smrg   isa_bit_armv7, \
577*4c3eb207Smrg   isa_bit_armv8, \
578*4c3eb207Smrg   isa_bit_armv5t, \
579*4c3eb207Smrg   isa_bit_armv6k, \
580*4c3eb207Smrg   isa_bit_thumb2, \
581*4c3eb207Smrg   isa_bit_crc32, \
582*4c3eb207Smrg   isa_bit_tdiv, \
583*4c3eb207Smrg   isa_bit_sec, \
584cef8759bSmrg   isa_bit_armv8_1, \
585cef8759bSmrg   isa_bit_armv8_2, \
586cef8759bSmrg   isa_bit_armv8_3, \
587cef8759bSmrg   isa_bit_armv8_4, \
588cef8759bSmrg   isa_bit_lpae, \
589*4c3eb207Smrg   isa_bit_notm
590cef8759bSmrg 
591cef8759bSmrg #define ISA_ARMv7a \
592627f7eb2Smrg   isa_bit_armv5t, \
593cef8759bSmrg   isa_bit_thumb, \
594cef8759bSmrg   isa_bit_armv6k, \
595cef8759bSmrg   isa_bit_thumb2, \
596*4c3eb207Smrg   isa_bit_be8, \
597cef8759bSmrg   isa_bit_armv4, \
598cef8759bSmrg   isa_bit_armv6, \
599cef8759bSmrg   isa_bit_armv7, \
600*4c3eb207Smrg   isa_bit_armv5te, \
601627f7eb2Smrg   isa_bit_notm
602cef8759bSmrg 
603cef8759bSmrg #define ISA_ARMv6t2 \
604cef8759bSmrg   isa_bit_notm, \
605cef8759bSmrg   isa_bit_armv4, \
606cef8759bSmrg   isa_bit_armv6, \
607627f7eb2Smrg   isa_bit_armv5te, \
608*4c3eb207Smrg   isa_bit_armv5t, \
609*4c3eb207Smrg   isa_bit_thumb2, \
610*4c3eb207Smrg   isa_bit_be8, \
611*4c3eb207Smrg   isa_bit_thumb
612cef8759bSmrg 
613cef8759bSmrg #define ISA_ARMv7em \
614cef8759bSmrg   isa_bit_armv4, \
615cef8759bSmrg   isa_bit_armv6, \
616cef8759bSmrg   isa_bit_armv7, \
617627f7eb2Smrg   isa_bit_be8, \
618627f7eb2Smrg   isa_bit_armv5t, \
619*4c3eb207Smrg   isa_bit_armv7em, \
620*4c3eb207Smrg   isa_bit_thumb2, \
621*4c3eb207Smrg   isa_bit_armv5te, \
622*4c3eb207Smrg   isa_bit_thumb, \
623*4c3eb207Smrg   isa_bit_tdiv
624*4c3eb207Smrg 
625*4c3eb207Smrg struct fbit_implication {
626*4c3eb207Smrg   /* Represents a feature implication, where:
627*4c3eb207Smrg      ante IMPLIES cons
628*4c3eb207Smrg      meaning that if ante is enabled then we should
629*4c3eb207Smrg      also implicitly enable cons.  */
630*4c3eb207Smrg   enum isa_feature ante;
631*4c3eb207Smrg   enum isa_feature cons;
632*4c3eb207Smrg };
633*4c3eb207Smrg 
634*4c3eb207Smrg static const struct fbit_implication all_implied_fbits[] =
635*4c3eb207Smrg {
636*4c3eb207Smrg   { isa_bit_vfpv2, isa_bit_vfp_base },
637*4c3eb207Smrg   { isa_bit_vfpv3, isa_bit_vfp_base },
638*4c3eb207Smrg   { isa_bit_vfpv4, isa_bit_vfp_base },
639*4c3eb207Smrg   { isa_bit_fp16, isa_bit_vfp_base },
640*4c3eb207Smrg   { isa_bit_fp16conv, isa_bit_vfp_base },
641*4c3eb207Smrg   { isa_bit_mve, isa_bit_vfp_base },
642*4c3eb207Smrg   { isa_bit_fp_d32, isa_bit_vfp_base },
643*4c3eb207Smrg   { isa_bit_fp16fml, isa_bit_vfp_base },
644*4c3eb207Smrg   { isa_bit_i8mm, isa_bit_vfp_base },
645*4c3eb207Smrg   { isa_bit_dotprod, isa_bit_vfp_base },
646*4c3eb207Smrg   { isa_bit_crypto, isa_bit_vfp_base },
647*4c3eb207Smrg   { isa_bit_bf16, isa_bit_vfp_base },
648*4c3eb207Smrg   { isa_bit_fp_dbl, isa_bit_vfp_base },
649*4c3eb207Smrg   { isa_bit_armv7em, isa_bit_vfp_base },
650*4c3eb207Smrg   { isa_bit_neon, isa_bit_vfp_base },
651*4c3eb207Smrg   { isa_bit_mve_float, isa_bit_vfp_base },
652*4c3eb207Smrg   { isa_bit_fpv5, isa_bit_vfp_base },
653*4c3eb207Smrg   { isa_nobit, isa_nobit }
654*4c3eb207Smrg };
655cef8759bSmrg 
656