]>
Commit | Line | Data |
---|---|---|
a92ffb3e RE |
1 | # CPU, FPU and architecture specifications for ARM. |
2 | # | |
8d9254fc | 3 | # Copyright (C) 2011-2020 Free Software Foundation, Inc. |
a92ffb3e RE |
4 | # |
5 | # This file is part of GCC. | |
6 | # | |
7 | # GCC is free software; you can redistribute it and/or modify it under | |
8 | # the terms of the GNU General Public License as published by the Free | |
9 | # Software Foundation; either version 3, or (at your option) any later | |
10 | # version. | |
11 | # | |
12 | # GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
13 | # WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 | # for more details. | |
16 | # | |
17 | # You should have received a copy of the GNU General Public License | |
18 | # along with GCC; see the file COPYING3. If not see | |
19 | # <http://www.gnu.org/licenses/>. | |
20 | ||
21 | # This file describes all the various CPUs, FPUs and architectures supported | |
22 | # by the compiler. It is pre-processed by parsecpu.awk for a number of | |
23 | # purposes. | |
24 | # | |
25 | # The general form is a sequence of begin..end blocks with the following | |
26 | # syntax: | |
27 | # begin <object-type> <name> | |
28 | # attribute-statement* | |
29 | # end <object-type> <name> | |
30 | # | |
31 | # where object type is one of "cpu" "arch" "fpu". Each object type has | |
32 | # a specific set of permitted attributes, some of which are optional; further | |
33 | # details can be found below. | |
34 | # | |
35 | # Some objects cross-reference other objects by name. Objects are permitted | |
36 | # in any order and it is not necessary to place a cross-referenced object | |
37 | # earlier in the file. | |
38 | # | |
39 | # The object names for cpu, arch and fpu objects are used for the public option | |
40 | # names in the final compiler. The order within each group is preserved and | |
41 | # forms the order for the list within the compiler. | |
42 | ||
bdb0828f RE |
43 | # Most objects in this file support forward references. The major |
44 | # exception is feature groups, which may only refer to previously | |
45 | # defined features or feature groups. This is done to avoid the risk | |
46 | # of feature groups recursively referencing each other and causing | |
47 | # the parser to hang. | |
48 | ||
49 | # Features - general convention: all lower case. | |
50 | ||
bdb0828f RE |
51 | # Architecture rel 4 |
52 | define feature armv4 | |
53 | ||
bdb0828f RE |
54 | # Thumb aware. |
55 | define feature thumb | |
56 | ||
c3f808d3 KT |
57 | # Architecture rel 5t. |
58 | define feature armv5t | |
59 | ||
60 | # Architecture rel 5te. | |
61 | define feature armv5te | |
bdb0828f RE |
62 | |
63 | # XScale. | |
64 | define feature xscale | |
65 | ||
66 | # Architecture rel 6. | |
67 | define feature armv6 | |
68 | ||
69 | # Architecture rel 6k. | |
70 | define feature armv6k | |
71 | ||
72 | # Thumb-2. | |
73 | define feature thumb2 | |
74 | ||
75 | # Instructions not present in 'M' profile. | |
76 | define feature notm | |
77 | ||
78 | # Architecture uses be8 mode in big-endian. | |
79 | define feature be8 | |
80 | ||
81 | # Thumb division instructions. | |
82 | define feature tdiv | |
83 | ||
84 | # Architecture rel 7e-m. | |
85 | define feature armv7em | |
86 | ||
87 | # Architecture rel 7. | |
88 | define feature armv7 | |
89 | ||
cab81ec0 RE |
90 | # MP extension to ArmV7-A |
91 | define feature mp | |
92 | ||
93 | # SEC extension to ArmV7-A | |
94 | define feature sec | |
95 | ||
bdb0828f RE |
96 | # ARM division instructions. |
97 | define feature adiv | |
98 | ||
99 | # Architecture rel 8. | |
100 | define feature armv8 | |
101 | ||
102 | # ARMv8 CRC32 instructions. | |
103 | define feature crc32 | |
104 | ||
105 | # XScale v2 (Wireless MMX). | |
106 | define feature iwmmxt | |
107 | ||
108 | # XScale Wireless MMX2. | |
109 | define feature iwmmxt2 | |
110 | ||
111 | # Architecture rel 8.1. | |
112 | define feature armv8_1 | |
113 | ||
1ad9b03f | 114 | # Architecture rel 8.2. |
bdb0828f RE |
115 | define feature armv8_2 |
116 | ||
1ad9b03f TC |
117 | # Architecture rel 8.3. |
118 | define feature armv8_3 | |
119 | ||
946c6c45 KT |
120 | # Architecture rel 8.4. |
121 | define feature armv8_4 | |
122 | ||
ae78a89f SD |
123 | # Architecture rel 8.5. |
124 | define feature armv8_5 | |
125 | ||
bdb0828f RE |
126 | # M-Profile security extensions. |
127 | define feature cmse | |
128 | ||
129 | # Floating point and Neon extensions. | |
130 | # VFPv1 is not supported in GCC. | |
131 | ||
132 | # Vector floating point v2. | |
133 | define feature vfpv2 | |
134 | ||
135 | # Vector floating point v3. | |
136 | define feature vfpv3 | |
137 | ||
138 | # Vector floating point v4. | |
139 | define feature vfpv4 | |
140 | ||
141 | # Floating point v5. | |
142 | define feature fpv5 | |
143 | ||
144 | # ARMv7-A LPAE. | |
145 | define feature lpae | |
146 | ||
147 | # Advanced SIMD instructions. | |
148 | define feature neon | |
149 | ||
150 | # Conversions to/from fp16 (VFPv3 extension). | |
151 | define feature fp16conv | |
152 | ||
153 | # Double precision operations supported. | |
154 | define feature fp_dbl | |
155 | ||
156 | # 32 Double precision registers. | |
157 | define feature fp_d32 | |
158 | ||
159 | # Crypto extension to ARMv8. | |
160 | define feature crypto | |
161 | ||
162 | # FP16 data processing (half-precision float). | |
163 | define feature fp16 | |
164 | ||
ba09dd21 TC |
165 | # Dot Product instructions extension to ARMv8.2-a. |
166 | define feature dotprod | |
bdb0828f | 167 | |
06e95715 KT |
168 | # Half-precision floating-point instructions in ARMv8.4-A. |
169 | define feature fp16fml | |
170 | ||
bdb0828f RE |
171 | # ISA Quirks (errata?). Don't forget to add this to the fgroup |
172 | # ALL_QUIRKS below. | |
173 | ||
174 | # No volatile memory in IT blocks. | |
175 | define feature quirk_no_volatile_ce | |
176 | ||
177 | # Previously mis-identified by GCC. | |
178 | define feature quirk_armv6kz | |
179 | ||
180 | # Cortex-M3 LDRD quirk. | |
181 | define feature quirk_cm3_ldrd | |
182 | ||
183 | # (Very) slow multiply operations. Should probably be a tuning bit. | |
184 | define feature smallmul | |
185 | ||
ae78a89f SD |
186 | # Speculation Barrier Instruction for v8-A architectures, added by |
187 | # default to v8.5-A | |
188 | define feature sb | |
189 | ||
190 | # Execution and Data Prediction Restriction Instruction for | |
191 | # v8-A architectures, added by default from v8.5-A | |
192 | define feature predres | |
193 | ||
bdb0828f | 194 | # Feature groups. Conventionally all (or mostly) upper case. |
ba09dd21 TC |
195 | # ALL_FPU lists all the feature bits associated with the floating-point |
196 | # unit; these will all be removed if the floating-point unit is disabled | |
197 | # (eg -mfloat-abi=soft). ALL_FPU_INTERNAL must ONLY contain features that | |
198 | # form part of a named -mfpu option; it is used to map the capabilities | |
199 | # back to a named FPU for the benefit of the assembler. | |
200 | # | |
201 | # ALL_SIMD_INTERNAL and ALL_SIMD are similarly defined to help with the | |
202 | # construction of ALL_FPU and ALL_FPU_INTERNAL; they describe the SIMD | |
203 | # extensions that are either part of a named FPU or optional extensions | |
204 | # respectively. | |
205 | ||
bdb0828f RE |
206 | |
207 | # List of all cryptographic extensions to stripout if crypto is | |
208 | # disabled. Currently, that's trivial, but we define it anyway for | |
209 | # consistency with the SIMD and FP disable lists. | |
210 | define fgroup ALL_CRYPTO crypto | |
211 | ||
212 | # List of all SIMD bits to strip out if SIMD is disabled. This does | |
213 | # strip off 32 D-registers, but does not remove support for | |
214 | # double-precision FP. | |
ba09dd21 | 215 | define fgroup ALL_SIMD_INTERNAL fp_d32 neon ALL_CRYPTO |
fd9058b6 RE |
216 | define fgroup ALL_SIMD_EXTERNAL dotprod fp16fml |
217 | define fgroup ALL_SIMD ALL_SIMD_INTERNAL ALL_SIMD_EXTERNAL | |
bdb0828f RE |
218 | |
219 | # List of all FPU bits to strip out if -mfpu is used to override the | |
220 | # default. fp16 is deliberately missing from this list. | |
ba09dd21 | 221 | define fgroup ALL_FPU_INTERNAL vfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD_INTERNAL |
bdb0828f RE |
222 | # Similarly, but including fp16 and other extensions that aren't part of |
223 | # -mfpu support. | |
fd9058b6 RE |
224 | define fgroup ALL_FPU_EXTERNAL fp16 |
225 | ||
226 | # Everything related to the FPU extensions (FP or SIMD). | |
227 | define fgroup ALL_FP ALL_FPU_EXTERNAL ALL_FPU_INTERNAL ALL_SIMD | |
bdb0828f | 228 | |
5511d3fa | 229 | define fgroup ARMv4 armv4 notm |
bdb0828f | 230 | define fgroup ARMv4t ARMv4 thumb |
c3f808d3 KT |
231 | define fgroup ARMv5t ARMv4t armv5t |
232 | define fgroup ARMv5te ARMv5t armv5te | |
bdb0828f RE |
233 | define fgroup ARMv5tej ARMv5te |
234 | define fgroup ARMv6 ARMv5te armv6 be8 | |
235 | define fgroup ARMv6j ARMv6 | |
236 | define fgroup ARMv6k ARMv6 armv6k | |
237 | define fgroup ARMv6z ARMv6 | |
238 | define fgroup ARMv6kz ARMv6k quirk_armv6kz | |
239 | define fgroup ARMv6zk ARMv6k | |
240 | define fgroup ARMv6t2 ARMv6 thumb2 | |
241 | # This is suspect. ARMv6-m doesn't really pull in any useful features | |
242 | # from ARMv5* or ARMv6. | |
5511d3fa | 243 | define fgroup ARMv6m armv4 thumb armv5t armv5te armv6 be8 |
bdb0828f RE |
244 | # This is suspect, the 'common' ARMv7 subset excludes the thumb2 'DSP' and |
245 | # integer SIMD instructions that are in ARMv6T2. */ | |
246 | define fgroup ARMv7 ARMv6m thumb2 armv7 | |
247 | ||
248 | define fgroup ARMv7a ARMv7 notm armv6k | |
cab81ec0 | 249 | define fgroup ARMv7ve ARMv7a adiv tdiv lpae mp sec |
bdb0828f RE |
250 | define fgroup ARMv7r ARMv7a tdiv |
251 | define fgroup ARMv7m ARMv7 tdiv | |
252 | define fgroup ARMv7em ARMv7m armv7em | |
253 | define fgroup ARMv8a ARMv7ve armv8 | |
254 | define fgroup ARMv8_1a ARMv8a crc32 armv8_1 | |
255 | define fgroup ARMv8_2a ARMv8_1a armv8_2 | |
1ad9b03f | 256 | define fgroup ARMv8_3a ARMv8_2a armv8_3 |
946c6c45 | 257 | define fgroup ARMv8_4a ARMv8_3a armv8_4 |
ae78a89f | 258 | define fgroup ARMv8_5a ARMv8_4a armv8_5 sb predres |
bdb0828f RE |
259 | define fgroup ARMv8m_base ARMv6m armv8 cmse tdiv |
260 | define fgroup ARMv8m_main ARMv7m armv8 cmse | |
261 | define fgroup ARMv8r ARMv8a | |
262 | ||
263 | # Useful combinations. | |
264 | define fgroup VFPv2 vfpv2 | |
265 | define fgroup VFPv3 VFPv2 vfpv3 | |
266 | define fgroup VFPv4 VFPv3 vfpv4 fp16conv | |
267 | define fgroup FPv5 VFPv4 fpv5 | |
268 | ||
269 | define fgroup FP_DBL fp_dbl | |
270 | define fgroup FP_D32 FP_DBL fp_d32 | |
271 | define fgroup FP_ARMv8 FPv5 FP_D32 | |
272 | define fgroup NEON FP_D32 neon | |
273 | define fgroup CRYPTO NEON crypto | |
ba09dd21 | 274 | define fgroup DOTPROD NEON dotprod |
bdb0828f RE |
275 | |
276 | # List of all quirk bits to strip out when comparing CPU features with | |
277 | # architectures. | |
34a1d5c2 RE |
278 | # xscale isn't really a 'quirk', but it isn't an architecture either and we |
279 | # need to ignore it for matching purposes. | |
280 | define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd xscale | |
bdb0828f | 281 | |
a92ffb3e RE |
282 | # Architecture entries |
283 | # format: | |
284 | # begin arch <name> | |
285 | # tune for <cpu> | |
286 | # [tune flags <list>] | |
287 | # base <name> | |
8afb5358 | 288 | # [profile <A|R|M>] |
a92ffb3e RE |
289 | # isa <isa-flags-list> |
290 | # end arch <name> | |
291 | # | |
292 | ||
a92ffb3e RE |
293 | begin arch armv4 |
294 | tune for arm7tdmi | |
295 | tune flags CO_PROC | |
296 | base 4 | |
7aa13250 | 297 | isa ARMv4 |
a92ffb3e RE |
298 | end arch armv4 |
299 | ||
a92ffb3e RE |
300 | begin arch armv4t |
301 | tune for arm7tdmi | |
302 | tune flags CO_PROC | |
303 | base 4T | |
304 | isa ARMv4t | |
305 | end arch armv4t | |
306 | ||
a92ffb3e RE |
307 | begin arch armv5t |
308 | tune for arm10tdmi | |
309 | tune flags CO_PROC | |
310 | base 5T | |
311 | isa ARMv5t | |
312 | end arch armv5t | |
313 | ||
a92ffb3e RE |
314 | begin arch armv5te |
315 | tune for arm1026ej-s | |
316 | tune flags CO_PROC | |
317 | base 5TE | |
318 | isa ARMv5te | |
76d7d533 | 319 | option fp add VFPv2 FP_DBL |
357e1023 | 320 | optalias vfpv2 fp |
e87afe54 | 321 | option nofp remove ALL_FP |
a92ffb3e RE |
322 | end arch armv5te |
323 | ||
324 | begin arch armv5tej | |
325 | tune for arm1026ej-s | |
326 | tune flags CO_PROC | |
327 | base 5TEJ | |
328 | isa ARMv5tej | |
76d7d533 | 329 | option fp add VFPv2 FP_DBL |
357e1023 | 330 | optalias vfpv2 fp |
e87afe54 | 331 | option nofp remove ALL_FP |
a92ffb3e RE |
332 | end arch armv5tej |
333 | ||
334 | begin arch armv6 | |
335 | tune for arm1136j-s | |
336 | tune flags CO_PROC | |
337 | base 6 | |
338 | isa ARMv6 | |
76d7d533 | 339 | option fp add VFPv2 FP_DBL |
357e1023 | 340 | optalias vfpv2 fp |
e87afe54 | 341 | option nofp remove ALL_FP |
a92ffb3e RE |
342 | end arch armv6 |
343 | ||
344 | begin arch armv6j | |
345 | tune for arm1136j-s | |
346 | tune flags CO_PROC | |
347 | base 6J | |
348 | isa ARMv6j | |
76d7d533 | 349 | option fp add VFPv2 FP_DBL |
357e1023 | 350 | optalias vfpv2 fp |
e87afe54 | 351 | option nofp remove ALL_FP |
a92ffb3e RE |
352 | end arch armv6j |
353 | ||
354 | begin arch armv6k | |
355 | tune for mpcore | |
356 | tune flags CO_PROC | |
357 | base 6K | |
358 | isa ARMv6k | |
76d7d533 | 359 | option fp add VFPv2 FP_DBL |
357e1023 | 360 | optalias vfpv2 fp |
e87afe54 | 361 | option nofp remove ALL_FP |
a92ffb3e RE |
362 | end arch armv6k |
363 | ||
364 | begin arch armv6z | |
365 | tune for arm1176jz-s | |
366 | tune flags CO_PROC | |
367 | base 6Z | |
368 | isa ARMv6z | |
76d7d533 | 369 | option fp add VFPv2 FP_DBL |
357e1023 | 370 | optalias vfpv2 fp |
e87afe54 | 371 | option nofp remove ALL_FP |
a92ffb3e RE |
372 | end arch armv6z |
373 | ||
374 | begin arch armv6kz | |
375 | tune for arm1176jz-s | |
376 | tune flags CO_PROC | |
377 | base 6KZ | |
378 | isa ARMv6kz | |
76d7d533 | 379 | option fp add VFPv2 FP_DBL |
357e1023 | 380 | optalias vfpv2 fp |
e87afe54 | 381 | option nofp remove ALL_FP |
a92ffb3e RE |
382 | end arch armv6kz |
383 | ||
384 | begin arch armv6zk | |
385 | tune for arm1176jz-s | |
386 | tune flags CO_PROC | |
387 | base 6KZ | |
388 | isa ARMv6kz | |
76d7d533 | 389 | option fp add VFPv2 FP_DBL |
357e1023 | 390 | optalias vfpv2 fp |
e87afe54 | 391 | option nofp remove ALL_FP |
a92ffb3e RE |
392 | end arch armv6zk |
393 | ||
394 | begin arch armv6t2 | |
395 | tune for arm1156t2-s | |
396 | tune flags CO_PROC | |
397 | base 6T2 | |
398 | isa ARMv6t2 | |
76d7d533 | 399 | option fp add VFPv2 FP_DBL |
357e1023 | 400 | optalias vfpv2 fp |
e87afe54 | 401 | option nofp remove ALL_FP |
a92ffb3e RE |
402 | end arch armv6t2 |
403 | ||
404 | begin arch armv6-m | |
405 | tune for cortex-m1 | |
406 | base 6M | |
8afb5358 | 407 | profile M |
a92ffb3e RE |
408 | isa ARMv6m |
409 | end arch armv6-m | |
410 | ||
c40a8be8 RE |
411 | # This is now equivalent to armv6-m, but we keep it because some |
412 | # versions of GAS still distinguish between the two. | |
a92ffb3e RE |
413 | begin arch armv6s-m |
414 | tune for cortex-m1 | |
415 | base 6M | |
8afb5358 | 416 | profile M |
a92ffb3e RE |
417 | isa ARMv6m |
418 | end arch armv6s-m | |
419 | ||
420 | begin arch armv7 | |
24851701 | 421 | tune for cortex-a53 |
a92ffb3e RE |
422 | tune flags CO_PROC |
423 | base 7 | |
424 | isa ARMv7 | |
76d7d533 RE |
425 | # fp => VFPv3-d16 (only useful for the A+R profile subset). |
426 | option fp add VFPv3 FP_DBL | |
357e1023 | 427 | optalias vfpv3-d16 fp |
ffc12690 | 428 | option nofp remove ALL_FP |
a92ffb3e RE |
429 | end arch armv7 |
430 | ||
431 | begin arch armv7-a | |
24851701 | 432 | tune for cortex-a53 |
a92ffb3e RE |
433 | tune flags CO_PROC |
434 | base 7A | |
8afb5358 | 435 | profile A |
a92ffb3e | 436 | isa ARMv7a |
cab81ec0 RE |
437 | option mp add mp |
438 | option sec add sec | |
76d7d533 | 439 | # fp => VFPv3-d16, simd => neon-vfpv3 |
357e1023 RE |
440 | option fp add VFPv3 FP_DBL |
441 | optalias vfpv3-d16 fp | |
442 | option vfpv3 add VFPv3 FP_D32 | |
bdb0828f RE |
443 | option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv |
444 | option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 fp16conv | |
e87afe54 | 445 | option vfpv4-d16 add VFPv4 FP_DBL |
357e1023 RE |
446 | option vfpv4 add VFPv4 FP_D32 |
447 | option simd add VFPv3 NEON | |
448 | optalias neon simd | |
449 | optalias neon-vfpv3 simd | |
bdb0828f | 450 | option neon-fp16 add VFPv3 NEON fp16conv |
e87afe54 | 451 | option neon-vfpv4 add VFPv4 NEON |
357e1023 RE |
452 | option nosimd remove ALL_SIMD |
453 | option nofp remove ALL_FP | |
a92ffb3e RE |
454 | end arch armv7-a |
455 | ||
456 | begin arch armv7ve | |
24851701 | 457 | tune for cortex-a53 |
a92ffb3e RE |
458 | tune flags CO_PROC |
459 | base 7A | |
8afb5358 | 460 | profile A |
a92ffb3e | 461 | isa ARMv7ve |
76d7d533 | 462 | # fp => VFPv4-d16, simd => neon-vfpv4 |
e87afe54 RE |
463 | option vfpv3-d16 add VFPv3 FP_DBL |
464 | option vfpv3 add VFPv3 FP_D32 | |
bdb0828f RE |
465 | option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv |
466 | option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 fp16conv | |
e87afe54 | 467 | option fp add VFPv4 FP_DBL |
357e1023 | 468 | optalias vfpv4-d16 fp |
e87afe54 RE |
469 | option vfpv4 add VFPv4 FP_D32 |
470 | option neon add VFPv3 NEON | |
357e1023 | 471 | optalias neon-vfpv3 neon |
bdb0828f | 472 | option neon-fp16 add VFPv3 NEON fp16conv |
e87afe54 | 473 | option simd add VFPv4 NEON |
357e1023 RE |
474 | optalias neon-vfpv4 simd |
475 | option nosimd remove ALL_SIMD | |
476 | option nofp remove ALL_FP | |
a92ffb3e RE |
477 | end arch armv7ve |
478 | ||
479 | begin arch armv7-r | |
480 | tune for cortex-r4 | |
481 | tune flags CO_PROC | |
482 | base 7R | |
8afb5358 | 483 | profile R |
a92ffb3e | 484 | isa ARMv7r |
76d7d533 | 485 | # ARMv7-r uses VFPv3-d16 |
76d7d533 | 486 | option fp.sp add VFPv3 |
ffc12690 | 487 | optalias vfpv3xd fp.sp |
e87afe54 | 488 | option fp add VFPv3 FP_DBL |
ffc12690 | 489 | optalias vfpv3-d16 fp |
479db227 AV |
490 | option vfpv3xd-fp16 add VFPv3 fp16conv |
491 | option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv | |
bdb0828f | 492 | option idiv add adiv |
e87afe54 | 493 | option nofp remove ALL_FP |
bdb0828f | 494 | option noidiv remove adiv |
a92ffb3e RE |
495 | end arch armv7-r |
496 | ||
497 | begin arch armv7-m | |
498 | tune for cortex-m3 | |
499 | tune flags CO_PROC | |
500 | base 7M | |
8afb5358 | 501 | profile M |
a92ffb3e | 502 | isa ARMv7m |
76d7d533 RE |
503 | # In theory FP is permitted in v7-m, but in practice no implementations exist. |
504 | # leave it out for now. | |
a92ffb3e RE |
505 | end arch armv7-m |
506 | ||
507 | begin arch armv7e-m | |
508 | tune for cortex-m4 | |
509 | tune flags CO_PROC | |
510 | base 7EM | |
8afb5358 | 511 | profile M |
a92ffb3e | 512 | isa ARMv7em |
76d7d533 RE |
513 | # fp => VFPv4-sp-d16; fpv5 => FPv5-sp-d16; fp.dp => FPv5-d16 |
514 | option fp add VFPv4 | |
ffc12690 | 515 | optalias vfpv4-sp-d16 fp |
76d7d533 RE |
516 | option fpv5 add FPv5 |
517 | option fp.dp add FPv5 FP_DBL | |
ffc12690 | 518 | optalias fpv5-d16 fp.dp |
e87afe54 | 519 | option nofp remove ALL_FP |
a92ffb3e RE |
520 | end arch armv7e-m |
521 | ||
522 | begin arch armv8-a | |
523 | tune for cortex-a53 | |
524 | tune flags CO_PROC | |
525 | base 8A | |
8afb5358 | 526 | profile A |
a92ffb3e | 527 | isa ARMv8a |
bdb0828f | 528 | option crc add crc32 |
250e088b | 529 | option simd add FP_ARMv8 NEON |
e87afe54 | 530 | option crypto add FP_ARMv8 CRYPTO |
e87afe54 | 531 | option nocrypto remove ALL_CRYPTO |
357e1023 | 532 | option nofp remove ALL_FP |
ae78a89f SD |
533 | option sb add sb |
534 | option predres add predres | |
a92ffb3e RE |
535 | end arch armv8-a |
536 | ||
a92ffb3e RE |
537 | begin arch armv8.1-a |
538 | tune for cortex-a53 | |
539 | tune flags CO_PROC | |
540 | base 8A | |
8afb5358 | 541 | profile A |
a92ffb3e | 542 | isa ARMv8_1a |
250e088b | 543 | option simd add FP_ARMv8 NEON |
e87afe54 | 544 | option crypto add FP_ARMv8 CRYPTO |
e87afe54 | 545 | option nocrypto remove ALL_CRYPTO |
357e1023 | 546 | option nofp remove ALL_FP |
ae78a89f SD |
547 | option sb add sb |
548 | option predres add predres | |
a92ffb3e RE |
549 | end arch armv8.1-a |
550 | ||
551 | begin arch armv8.2-a | |
552 | tune for cortex-a53 | |
553 | tune flags CO_PROC | |
554 | base 8A | |
8afb5358 | 555 | profile A |
a92ffb3e | 556 | isa ARMv8_2a |
250e088b | 557 | option simd add FP_ARMv8 NEON |
bdb0828f | 558 | option fp16 add fp16 FP_ARMv8 NEON |
06e95715 | 559 | option fp16fml add fp16fml fp16 FP_ARMv8 NEON |
e87afe54 | 560 | option crypto add FP_ARMv8 CRYPTO |
e87afe54 | 561 | option nocrypto remove ALL_CRYPTO |
357e1023 | 562 | option nofp remove ALL_FP |
ba09dd21 | 563 | option dotprod add FP_ARMv8 DOTPROD |
ae78a89f SD |
564 | option sb add sb |
565 | option predres add predres | |
a92ffb3e RE |
566 | end arch armv8.2-a |
567 | ||
1ad9b03f TC |
568 | begin arch armv8.3-a |
569 | tune for cortex-a53 | |
570 | tune flags CO_PROC | |
571 | base 8A | |
572 | profile A | |
573 | isa ARMv8_3a | |
574 | option simd add FP_ARMv8 NEON | |
575 | option fp16 add fp16 FP_ARMv8 NEON | |
06e95715 | 576 | option fp16fml add fp16fml fp16 FP_ARMv8 NEON |
1ad9b03f TC |
577 | option crypto add FP_ARMv8 CRYPTO |
578 | option nocrypto remove ALL_CRYPTO | |
579 | option nofp remove ALL_FP | |
580 | option dotprod add FP_ARMv8 DOTPROD | |
ae78a89f SD |
581 | option sb add sb |
582 | option predres add predres | |
1ad9b03f TC |
583 | end arch armv8.3-a |
584 | ||
946c6c45 KT |
585 | begin arch armv8.4-a |
586 | tune for cortex-a53 | |
587 | tune flags CO_PROC | |
588 | base 8A | |
589 | profile A | |
590 | isa ARMv8_4a | |
591 | option simd add FP_ARMv8 DOTPROD | |
06e95715 | 592 | option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD |
946c6c45 KT |
593 | option crypto add FP_ARMv8 CRYPTO DOTPROD |
594 | option nocrypto remove ALL_CRYPTO | |
595 | option nofp remove ALL_FP | |
ae78a89f SD |
596 | option sb add sb |
597 | option predres add predres | |
946c6c45 KT |
598 | end arch armv8.4-a |
599 | ||
ae78a89f SD |
600 | begin arch armv8.5-a |
601 | tune for cortex-a53 | |
602 | tune flags CO_PROC | |
603 | base 8A | |
604 | profile A | |
605 | isa ARMv8_5a | |
606 | option simd add FP_ARMv8 DOTPROD | |
607 | option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD | |
608 | option crypto add FP_ARMv8 CRYPTO DOTPROD | |
609 | option nocrypto remove ALL_CRYPTO | |
610 | option nofp remove ALL_FP | |
611 | end arch armv8.5-a | |
612 | ||
a92ffb3e RE |
613 | begin arch armv8-m.base |
614 | tune for cortex-m23 | |
615 | base 8M_BASE | |
8afb5358 | 616 | profile M |
a92ffb3e RE |
617 | isa ARMv8m_base |
618 | end arch armv8-m.base | |
619 | ||
620 | begin arch armv8-m.main | |
621 | tune for cortex-m7 | |
622 | tune flags CO_PROC | |
623 | base 8M_MAIN | |
8afb5358 | 624 | profile M |
a92ffb3e | 625 | isa ARMv8m_main |
bdb0828f | 626 | option dsp add armv7em |
76d7d533 RE |
627 | # fp => FPv5-sp-d16; fp.dp => FPv5-d16 |
628 | option fp add FPv5 | |
629 | option fp.dp add FPv5 FP_DBL | |
e87afe54 | 630 | option nofp remove ALL_FP |
bdb0828f | 631 | option nodsp remove armv7em |
a92ffb3e RE |
632 | end arch armv8-m.main |
633 | ||
9296dd9b | 634 | begin arch armv8-r |
2376caf9 | 635 | tune for cortex-r52 |
9296dd9b TP |
636 | tune flags CO_PROC |
637 | base 8R | |
638 | profile R | |
639 | isa ARMv8r | |
bdb0828f | 640 | option crc add crc32 |
9296dd9b TP |
641 | # fp.sp => fp-armv8 (d16); simd => simd + fp-armv8 + d32 + double precision |
642 | # note: no fp option for fp-armv8 (d16) + double precision at the moment | |
c8d61ab8 | 643 | option fp.sp add FPv5 |
9296dd9b TP |
644 | option simd add FP_ARMv8 NEON |
645 | option crypto add FP_ARMv8 CRYPTO | |
646 | option nocrypto remove ALL_CRYPTO | |
647 | option nofp remove ALL_FP | |
648 | end arch armv8-r | |
649 | ||
a92ffb3e RE |
650 | begin arch iwmmxt |
651 | tune for iwmmxt | |
652 | tune flags LDSCHED STRONG XSCALE | |
653 | base 5TE | |
bdb0828f | 654 | isa ARMv5te xscale iwmmxt |
a92ffb3e RE |
655 | end arch iwmmxt |
656 | ||
657 | begin arch iwmmxt2 | |
658 | tune for iwmmxt2 | |
659 | tune flags LDSCHED STRONG XSCALE | |
660 | base 5TE | |
bdb0828f | 661 | isa ARMv5te xscale iwmmxt iwmmxt2 |
a92ffb3e RE |
662 | end arch iwmmxt2 |
663 | ||
664 | # CPU entries | |
665 | # format: | |
666 | # begin cpu <name> | |
667 | # [cname <c-compatible-name>] | |
d4f680c6 | 668 | # [alias <name>+] |
a92ffb3e RE |
669 | # [tune for <cpu-name>] |
670 | # [tune flags <list>] | |
671 | # architecture <name> | |
a92ffb3e | 672 | # [isa <additional-isa-flags-list>] |
250e088b | 673 | # [option <name> add|remove <isa-list>]* |
357e1023 | 674 | # [optalias <name> <optname>]* |
a92ffb3e | 675 | # [costs <name>] |
b02160e5 RE |
676 | # [vendor <vendor-id> |
677 | # [part <part-id> [minrev [maxrev]]] | |
a92ffb3e RE |
678 | # end cpu <name> |
679 | # | |
680 | # If omitted, cname is formed from transforming the cpuname to convert | |
681 | # non-valid punctuation characters to '_'. | |
d4f680c6 RE |
682 | # Any number of alias names may be specified for a CPU. If the name starts |
683 | # with a '!' then it will be recognized as a valid name, but will not | |
684 | # be printed in any help text listing permitted CPUs. | |
a92ffb3e RE |
685 | # If specified, tune for specifies a CPU target to use for tuning this core. |
686 | # isa flags are appended to those defined by the architecture. | |
357e1023 RE |
687 | # Each add option must have a distinct feature set and each remove |
688 | # option must similarly have a distinct feature set. Option aliases can be | |
dff2abcb | 689 | # added with the optalias statement. |
b02160e5 RE |
690 | # Vendor, part and revision information is used for native CPU and architecture |
691 | # detection. All values must be in hex (lower case) with the leading '0x' | |
692 | # omitted. For example the cortex-a9 will have vendor 41 and part c09. | |
693 | # Revision information is used to match a subrange of part | |
694 | # revisions: minrev <= detected <= maxrev. | |
695 | # If a minrev or maxrev are omitted then minrev defaults to zero and maxrev | |
696 | # to infinity. | |
697 | # Revision information is not implemented yet; no part uses it. | |
a92ffb3e | 698 | |
a92ffb3e RE |
699 | # V4 Architecture Processors |
700 | begin cpu arm8 | |
701 | tune flags LDSCHED | |
702 | architecture armv4 | |
703 | costs fastmul | |
704 | end cpu arm8 | |
705 | ||
706 | begin cpu arm810 | |
707 | tune flags LDSCHED | |
708 | architecture armv4 | |
709 | costs fastmul | |
710 | end cpu arm810 | |
711 | ||
712 | begin cpu strongarm | |
d4f680c6 | 713 | alias strongarm110 !strongarm1100 !strongarm1110 |
a92ffb3e RE |
714 | tune flags LDSCHED STRONG |
715 | architecture armv4 | |
716 | costs strongarm | |
717 | end cpu strongarm | |
718 | ||
a92ffb3e RE |
719 | begin cpu fa526 |
720 | tune flags LDSCHED | |
721 | architecture armv4 | |
722 | costs fastmul | |
723 | end cpu fa526 | |
724 | ||
725 | begin cpu fa626 | |
726 | tune flags LDSCHED | |
727 | architecture armv4 | |
728 | costs fastmul | |
729 | end cpu fa626 | |
730 | ||
731 | ||
732 | # V4T Architecture Processors | |
733 | begin cpu arm7tdmi | |
69104d52 | 734 | alias arm7tdmi-s |
a92ffb3e RE |
735 | tune flags CO_PROC |
736 | architecture armv4t | |
737 | costs fastmul | |
738 | end cpu arm7tdmi | |
739 | ||
a92ffb3e | 740 | begin cpu arm710t |
69104d52 | 741 | alias arm720t arm740t |
a92ffb3e RE |
742 | tune flags WBUF |
743 | architecture armv4t | |
744 | costs fastmul | |
745 | end cpu arm710t | |
746 | ||
a92ffb3e RE |
747 | begin cpu arm9 |
748 | tune flags LDSCHED | |
749 | architecture armv4t | |
750 | costs fastmul | |
751 | end cpu arm9 | |
752 | ||
753 | begin cpu arm9tdmi | |
754 | tune flags LDSCHED | |
755 | architecture armv4t | |
756 | costs fastmul | |
757 | end cpu arm9tdmi | |
758 | ||
a92ffb3e | 759 | begin cpu arm920t |
69104d52 | 760 | alias arm920 arm922t arm940t ep9312 |
a92ffb3e RE |
761 | tune flags LDSCHED |
762 | architecture armv4t | |
763 | costs fastmul | |
764 | end cpu arm920t | |
765 | ||
a92ffb3e RE |
766 | |
767 | # V5T Architecture Processors | |
e87afe54 | 768 | # These used VFPv1 which isn't supported by GCC |
a92ffb3e | 769 | begin cpu arm10tdmi |
69104d52 | 770 | alias arm1020t |
a92ffb3e RE |
771 | tune flags LDSCHED |
772 | architecture armv5t | |
773 | costs fastmul | |
774 | end cpu arm10tdmi | |
775 | ||
a92ffb3e RE |
776 | |
777 | # V5TE Architecture Processors | |
778 | begin cpu arm9e | |
69104d52 | 779 | alias arm946e-s arm966e-s arm968e-s |
a92ffb3e | 780 | tune flags LDSCHED |
dff2abcb | 781 | architecture armv5te+fp |
e87afe54 | 782 | option nofp remove ALL_FP |
a92ffb3e RE |
783 | costs 9e |
784 | end cpu arm9e | |
785 | ||
a92ffb3e | 786 | begin cpu arm10e |
69104d52 | 787 | alias arm1020e arm1022e |
a92ffb3e | 788 | tune flags LDSCHED |
dff2abcb | 789 | architecture armv5te+fp |
e87afe54 | 790 | option nofp remove ALL_FP |
a92ffb3e RE |
791 | costs fastmul |
792 | end cpu arm10e | |
793 | ||
a92ffb3e RE |
794 | begin cpu xscale |
795 | tune flags LDSCHED XSCALE | |
796 | architecture armv5te | |
bdb0828f | 797 | isa xscale |
a92ffb3e RE |
798 | costs xscale |
799 | end cpu xscale | |
800 | ||
801 | begin cpu iwmmxt | |
802 | tune flags LDSCHED XSCALE | |
803 | architecture iwmmxt | |
804 | costs xscale | |
805 | end cpu iwmmxt | |
806 | ||
807 | begin cpu iwmmxt2 | |
808 | tune flags LDSCHED XSCALE | |
809 | architecture iwmmxt2 | |
810 | costs xscale | |
811 | end cpu iwmmxt2 | |
812 | ||
813 | begin cpu fa606te | |
814 | tune flags LDSCHED | |
815 | architecture armv5te | |
816 | costs 9e | |
817 | end cpu fa606te | |
818 | ||
819 | begin cpu fa626te | |
820 | tune flags LDSCHED | |
821 | architecture armv5te | |
822 | costs 9e | |
823 | end cpu fa626te | |
824 | ||
825 | begin cpu fmp626 | |
826 | tune flags LDSCHED | |
827 | architecture armv5te | |
828 | costs 9e | |
829 | end cpu fmp626 | |
830 | ||
831 | begin cpu fa726te | |
832 | tune flags LDSCHED | |
833 | architecture armv5te | |
834 | costs fa726te | |
835 | end cpu fa726te | |
836 | ||
837 | ||
838 | # V5TEJ Architecture Processors | |
839 | begin cpu arm926ej-s | |
840 | cname arm926ejs | |
841 | tune flags LDSCHED | |
dff2abcb | 842 | architecture armv5tej+fp |
e87afe54 | 843 | option nofp remove ALL_FP |
a92ffb3e | 844 | costs 9e |
b02160e5 RE |
845 | vendor 41 |
846 | part 926 | |
a92ffb3e RE |
847 | end cpu arm926ej-s |
848 | ||
849 | begin cpu arm1026ej-s | |
850 | cname arm1026ejs | |
851 | tune flags LDSCHED | |
dff2abcb | 852 | architecture armv5tej+fp |
e87afe54 | 853 | option nofp remove ALL_FP |
a92ffb3e | 854 | costs 9e |
b02160e5 RE |
855 | vendor 41 |
856 | part a26 | |
a92ffb3e RE |
857 | end cpu arm1026ej-s |
858 | ||
859 | ||
860 | # V6 Architecture Processors | |
861 | begin cpu arm1136j-s | |
862 | cname arm1136js | |
863 | tune flags LDSCHED | |
864 | architecture armv6j | |
865 | costs 9e | |
866 | end cpu arm1136j-s | |
867 | ||
868 | begin cpu arm1136jf-s | |
869 | cname arm1136jfs | |
870 | tune flags LDSCHED | |
dff2abcb | 871 | architecture armv6j+fp |
a92ffb3e | 872 | costs 9e |
b02160e5 RE |
873 | vendor 41 |
874 | part b36 | |
a92ffb3e RE |
875 | end cpu arm1136jf-s |
876 | ||
877 | begin cpu arm1176jz-s | |
878 | cname arm1176jzs | |
879 | tune flags LDSCHED | |
880 | architecture armv6kz | |
881 | costs 9e | |
882 | end cpu arm1176jz-s | |
883 | ||
884 | begin cpu arm1176jzf-s | |
885 | cname arm1176jzfs | |
886 | tune flags LDSCHED | |
dff2abcb | 887 | architecture armv6kz+fp |
a92ffb3e | 888 | costs 9e |
b02160e5 RE |
889 | vendor 41 |
890 | part b76 | |
a92ffb3e RE |
891 | end cpu arm1176jzf-s |
892 | ||
893 | begin cpu mpcorenovfp | |
894 | tune flags LDSCHED | |
895 | architecture armv6k | |
896 | costs 9e | |
897 | end cpu mpcorenovfp | |
898 | ||
899 | begin cpu mpcore | |
900 | tune flags LDSCHED | |
dff2abcb | 901 | architecture armv6k+fp |
a92ffb3e | 902 | costs 9e |
b02160e5 RE |
903 | vendor 41 |
904 | part b02 | |
a92ffb3e RE |
905 | end cpu mpcore |
906 | ||
907 | begin cpu arm1156t2-s | |
908 | cname arm1156t2s | |
909 | tune flags LDSCHED | |
910 | architecture armv6t2 | |
911 | costs v6t2 | |
912 | end cpu arm1156t2-s | |
913 | ||
914 | begin cpu arm1156t2f-s | |
915 | cname arm1156t2fs | |
916 | tune flags LDSCHED | |
dff2abcb | 917 | architecture armv6t2+fp |
a92ffb3e | 918 | costs v6t2 |
b02160e5 RE |
919 | vendor 41 |
920 | part b56 | |
a92ffb3e RE |
921 | end cpu arm1156t2f-s |
922 | ||
923 | ||
924 | # V6M Architecture Processors | |
925 | begin cpu cortex-m1 | |
926 | cname cortexm1 | |
927 | tune flags LDSCHED | |
c40a8be8 | 928 | architecture armv6s-m |
a92ffb3e | 929 | costs v6m |
b02160e5 RE |
930 | vendor 41 |
931 | part c21 | |
a92ffb3e RE |
932 | end cpu cortex-m1 |
933 | ||
934 | begin cpu cortex-m0 | |
935 | cname cortexm0 | |
936 | tune flags LDSCHED | |
c40a8be8 | 937 | architecture armv6s-m |
a92ffb3e | 938 | costs v6m |
b02160e5 RE |
939 | vendor 41 |
940 | part c20 | |
a92ffb3e RE |
941 | end cpu cortex-m0 |
942 | ||
943 | begin cpu cortex-m0plus | |
944 | cname cortexm0plus | |
945 | tune flags LDSCHED | |
c40a8be8 | 946 | architecture armv6s-m |
a92ffb3e RE |
947 | costs v6m |
948 | end cpu cortex-m0plus | |
949 | ||
950 | ||
951 | # V6M Architecture Processors for small-multiply implementations. | |
952 | begin cpu cortex-m1.small-multiply | |
953 | cname cortexm1smallmultiply | |
954 | tune for cortex-m1 | |
955 | tune flags LDSCHED SMALLMUL | |
c40a8be8 | 956 | architecture armv6s-m |
a92ffb3e RE |
957 | costs v6m |
958 | end cpu cortex-m1.small-multiply | |
959 | ||
960 | begin cpu cortex-m0.small-multiply | |
961 | cname cortexm0smallmultiply | |
962 | tune for cortex-m0 | |
963 | tune flags LDSCHED SMALLMUL | |
c40a8be8 | 964 | architecture armv6s-m |
a92ffb3e RE |
965 | costs v6m |
966 | end cpu cortex-m0.small-multiply | |
967 | ||
968 | begin cpu cortex-m0plus.small-multiply | |
969 | cname cortexm0plussmallmultiply | |
48c0758a | 970 | tune for cortex-m0plus |
a92ffb3e | 971 | tune flags LDSCHED SMALLMUL |
c40a8be8 | 972 | architecture armv6s-m |
a92ffb3e RE |
973 | costs v6m |
974 | end cpu cortex-m0plus.small-multiply | |
975 | ||
976 | ||
977 | # V7 Architecture Processors | |
978 | begin cpu generic-armv7-a | |
979 | cname genericv7a | |
980 | tune flags LDSCHED | |
dff2abcb | 981 | architecture armv7-a+fp |
cab81ec0 RE |
982 | option mp add mp |
983 | option sec add sec | |
e87afe54 | 984 | option vfpv3-d16 add VFPv3 FP_DBL |
357e1023 | 985 | option vfpv3 add VFPv3 FP_D32 |
bdb0828f RE |
986 | option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv |
987 | option vfpv3-fp16 add VFPv3 FP_D32 fp16conv | |
e87afe54 | 988 | option vfpv4-d16 add VFPv4 FP_DBL |
357e1023 RE |
989 | option vfpv4 add VFPv4 FP_D32 |
990 | option simd add VFPv3 NEON | |
991 | optalias neon simd | |
992 | optalias neon-vfpv3 simd | |
bdb0828f | 993 | option neon-fp16 add VFPv3 NEON fp16conv |
e87afe54 | 994 | option neon-vfpv4 add VFPv4 NEON |
e87afe54 | 995 | option nosimd remove ALL_SIMD |
357e1023 | 996 | option nofp remove ALL_FP |
a92ffb3e RE |
997 | costs cortex |
998 | end cpu generic-armv7-a | |
999 | ||
1000 | begin cpu cortex-a5 | |
1001 | cname cortexa5 | |
1002 | tune flags LDSCHED | |
cab81ec0 | 1003 | architecture armv7-a+mp+sec+neon-fp16 |
e87afe54 RE |
1004 | option nosimd remove ALL_SIMD |
1005 | option nofp remove ALL_FP | |
a92ffb3e | 1006 | costs cortex_a5 |
b02160e5 RE |
1007 | vendor 41 |
1008 | part c05 | |
a92ffb3e RE |
1009 | end cpu cortex-a5 |
1010 | ||
1011 | begin cpu cortex-a7 | |
1012 | cname cortexa7 | |
1013 | tune flags LDSCHED | |
dff2abcb | 1014 | architecture armv7ve+simd |
e87afe54 RE |
1015 | option nosimd remove ALL_SIMD |
1016 | option nofp remove ALL_FP | |
a92ffb3e | 1017 | costs cortex_a7 |
b02160e5 RE |
1018 | vendor 41 |
1019 | part c07 | |
a92ffb3e RE |
1020 | end cpu cortex-a7 |
1021 | ||
1022 | begin cpu cortex-a8 | |
1023 | cname cortexa8 | |
1024 | tune flags LDSCHED | |
cab81ec0 | 1025 | architecture armv7-a+sec+simd |
e87afe54 | 1026 | option nofp remove ALL_FP |
a92ffb3e | 1027 | costs cortex_a8 |
b02160e5 RE |
1028 | vendor 41 |
1029 | part c08 | |
a92ffb3e RE |
1030 | end cpu cortex-a8 |
1031 | ||
1032 | begin cpu cortex-a9 | |
1033 | cname cortexa9 | |
1034 | tune flags LDSCHED | |
cab81ec0 | 1035 | architecture armv7-a+mp+sec+neon-fp16 |
e87afe54 | 1036 | option nosimd remove ALL_SIMD |
357e1023 | 1037 | option nofp remove ALL_FP |
a92ffb3e | 1038 | costs cortex_a9 |
b02160e5 RE |
1039 | vendor 41 |
1040 | part c09 | |
a92ffb3e RE |
1041 | end cpu cortex-a9 |
1042 | ||
1043 | begin cpu cortex-a12 | |
1044 | cname cortexa12 | |
1045 | tune for cortex-a17 | |
1046 | tune flags LDSCHED | |
dff2abcb | 1047 | architecture armv7ve+simd |
e87afe54 | 1048 | option nofp remove ALL_FP |
a92ffb3e | 1049 | costs cortex_a12 |
b02160e5 RE |
1050 | vendor 41 |
1051 | part c0d | |
a92ffb3e RE |
1052 | end cpu cortex-a12 |
1053 | ||
1054 | begin cpu cortex-a15 | |
1055 | cname cortexa15 | |
1056 | tune flags LDSCHED | |
dff2abcb | 1057 | architecture armv7ve+simd |
e87afe54 | 1058 | option nofp remove ALL_FP |
a92ffb3e | 1059 | costs cortex_a15 |
b02160e5 RE |
1060 | vendor 41 |
1061 | part c0f | |
a92ffb3e RE |
1062 | end cpu cortex-a15 |
1063 | ||
1064 | begin cpu cortex-a17 | |
1065 | cname cortexa17 | |
1066 | tune flags LDSCHED | |
dff2abcb | 1067 | architecture armv7ve+simd |
e87afe54 | 1068 | option nofp remove ALL_FP |
a92ffb3e | 1069 | costs cortex_a12 |
b02160e5 RE |
1070 | vendor 41 |
1071 | part c0e | |
a92ffb3e RE |
1072 | end cpu cortex-a17 |
1073 | ||
1074 | begin cpu cortex-r4 | |
1075 | cname cortexr4 | |
1076 | tune flags LDSCHED | |
1077 | architecture armv7-r | |
1078 | costs cortex | |
1079 | end cpu cortex-r4 | |
1080 | ||
1081 | begin cpu cortex-r4f | |
1082 | cname cortexr4f | |
1083 | tune flags LDSCHED | |
dff2abcb | 1084 | architecture armv7-r+fp |
a92ffb3e | 1085 | costs cortex |
b02160e5 RE |
1086 | vendor 41 |
1087 | part c14 | |
a92ffb3e RE |
1088 | end cpu cortex-r4f |
1089 | ||
1090 | begin cpu cortex-r5 | |
1091 | cname cortexr5 | |
1092 | tune flags LDSCHED | |
dff2abcb | 1093 | architecture armv7-r+idiv+fp |
e87afe54 RE |
1094 | option nofp.dp remove FP_DBL |
1095 | option nofp remove ALL_FP | |
a92ffb3e | 1096 | costs cortex |
b02160e5 RE |
1097 | vendor 41 |
1098 | part c15 | |
a92ffb3e RE |
1099 | end cpu cortex-r5 |
1100 | ||
1101 | begin cpu cortex-r7 | |
1102 | cname cortexr7 | |
1103 | tune flags LDSCHED | |
479db227 AV |
1104 | architecture armv7-r+idiv+vfpv3-d16-fp16 |
1105 | option nofp.dp remove FP_DBL | |
e87afe54 | 1106 | option nofp remove ALL_FP |
a92ffb3e | 1107 | costs cortex |
b02160e5 RE |
1108 | vendor 41 |
1109 | part c17 | |
a92ffb3e RE |
1110 | end cpu cortex-r7 |
1111 | ||
1112 | begin cpu cortex-r8 | |
1113 | cname cortexr8 | |
1114 | tune for cortex-r7 | |
1115 | tune flags LDSCHED | |
479db227 AV |
1116 | architecture armv7-r+idiv+vfpv3-d16-fp16 |
1117 | option nofp.dp remove FP_DBL | |
e87afe54 | 1118 | option nofp remove ALL_FP |
a92ffb3e | 1119 | costs cortex |
b02160e5 RE |
1120 | vendor 41 |
1121 | part c18 | |
a92ffb3e RE |
1122 | end cpu cortex-r8 |
1123 | ||
1124 | begin cpu cortex-m7 | |
1125 | cname cortexm7 | |
1126 | tune flags LDSCHED | |
dff2abcb | 1127 | architecture armv7e-m+fp.dp |
a92ffb3e | 1128 | isa quirk_no_volatile_ce |
e87afe54 RE |
1129 | option nofp.dp remove FP_DBL |
1130 | option nofp remove ALL_FP | |
a92ffb3e RE |
1131 | costs cortex_m7 |
1132 | end cpu cortex-m7 | |
1133 | ||
1134 | begin cpu cortex-m4 | |
1135 | cname cortexm4 | |
1136 | tune flags LDSCHED | |
dff2abcb | 1137 | architecture armv7e-m+fp |
e87afe54 | 1138 | option nofp remove ALL_FP |
a92ffb3e | 1139 | costs v7m |
b02160e5 RE |
1140 | vendor 41 |
1141 | part c24 | |
a92ffb3e RE |
1142 | end cpu cortex-m4 |
1143 | ||
1144 | begin cpu cortex-m3 | |
1145 | cname cortexm3 | |
1146 | tune flags LDSCHED | |
1147 | architecture armv7-m | |
1148 | isa quirk_cm3_ldrd | |
1149 | costs v7m | |
b02160e5 RE |
1150 | vendor 41 |
1151 | part c23 | |
a92ffb3e RE |
1152 | end cpu cortex-m3 |
1153 | ||
1154 | begin cpu marvell-pj4 | |
1155 | tune flags LDSCHED | |
cdb77369 | 1156 | architecture armv7-a+mp+sec+fp |
a92ffb3e RE |
1157 | costs marvell_pj4 |
1158 | end cpu marvell-pj4 | |
1159 | ||
1160 | ||
1161 | # V7 big.LITTLE implementations | |
1162 | begin cpu cortex-a15.cortex-a7 | |
1163 | cname cortexa15cortexa7 | |
1164 | tune for cortex-a7 | |
1165 | tune flags LDSCHED | |
dff2abcb | 1166 | architecture armv7ve+simd |
e87afe54 | 1167 | option nofp remove ALL_FP |
a92ffb3e RE |
1168 | costs cortex_a15 |
1169 | end cpu cortex-a15.cortex-a7 | |
1170 | ||
1171 | begin cpu cortex-a17.cortex-a7 | |
1172 | cname cortexa17cortexa7 | |
1173 | tune for cortex-a7 | |
1174 | tune flags LDSCHED | |
dff2abcb | 1175 | architecture armv7ve+simd |
e87afe54 | 1176 | option nofp remove ALL_FP |
a92ffb3e RE |
1177 | costs cortex_a12 |
1178 | end cpu cortex-a17.cortex-a7 | |
1179 | ||
1180 | ||
1181 | # V8 A-profile Architecture Processors | |
1182 | begin cpu cortex-a32 | |
1183 | cname cortexa32 | |
1184 | tune for cortex-a53 | |
1185 | tune flags LDSCHED | |
dff2abcb | 1186 | architecture armv8-a+crc+simd |
e87afe54 RE |
1187 | option crypto add FP_ARMv8 CRYPTO |
1188 | option nofp remove ALL_FP | |
a92ffb3e | 1189 | costs cortex_a35 |
b02160e5 RE |
1190 | vendor 41 |
1191 | part d01 | |
a92ffb3e RE |
1192 | end cpu cortex-a32 |
1193 | ||
1194 | begin cpu cortex-a35 | |
1195 | cname cortexa35 | |
1196 | tune for cortex-a53 | |
1197 | tune flags LDSCHED | |
dff2abcb | 1198 | architecture armv8-a+crc+simd |
e87afe54 RE |
1199 | option crypto add FP_ARMv8 CRYPTO |
1200 | option nofp remove ALL_FP | |
a92ffb3e | 1201 | costs cortex_a35 |
b02160e5 RE |
1202 | vendor 41 |
1203 | part d04 | |
a92ffb3e RE |
1204 | end cpu cortex-a35 |
1205 | ||
1206 | begin cpu cortex-a53 | |
1207 | cname cortexa53 | |
1208 | tune flags LDSCHED | |
dff2abcb | 1209 | architecture armv8-a+crc+simd |
e87afe54 RE |
1210 | option crypto add FP_ARMv8 CRYPTO |
1211 | option nofp remove ALL_FP | |
a92ffb3e | 1212 | costs cortex_a53 |
b02160e5 RE |
1213 | vendor 41 |
1214 | part d03 | |
a92ffb3e RE |
1215 | end cpu cortex-a53 |
1216 | ||
1217 | begin cpu cortex-a57 | |
1218 | cname cortexa57 | |
1219 | tune flags LDSCHED | |
dff2abcb | 1220 | architecture armv8-a+crc+simd |
e87afe54 | 1221 | option crypto add FP_ARMv8 CRYPTO |
a92ffb3e | 1222 | costs cortex_a57 |
b02160e5 RE |
1223 | vendor 41 |
1224 | part d07 | |
a92ffb3e RE |
1225 | end cpu cortex-a57 |
1226 | ||
1227 | begin cpu cortex-a72 | |
1228 | cname cortexa72 | |
1229 | tune for cortex-a57 | |
1230 | tune flags LDSCHED | |
dff2abcb | 1231 | architecture armv8-a+crc+simd |
e87afe54 | 1232 | option crypto add FP_ARMv8 CRYPTO |
a92ffb3e | 1233 | costs cortex_a57 |
b02160e5 RE |
1234 | vendor 41 |
1235 | part d08 | |
a92ffb3e RE |
1236 | end cpu cortex-a72 |
1237 | ||
1238 | begin cpu cortex-a73 | |
1239 | cname cortexa73 | |
1240 | tune for cortex-a57 | |
1241 | tune flags LDSCHED | |
dff2abcb | 1242 | architecture armv8-a+crc+simd |
e87afe54 | 1243 | option crypto add FP_ARMv8 CRYPTO |
a92ffb3e | 1244 | costs cortex_a73 |
b02160e5 RE |
1245 | vendor 41 |
1246 | part d09 | |
a92ffb3e RE |
1247 | end cpu cortex-a73 |
1248 | ||
1249 | begin cpu exynos-m1 | |
1250 | cname exynosm1 | |
1251 | tune flags LDSCHED | |
dff2abcb | 1252 | architecture armv8-a+crc+simd |
e87afe54 | 1253 | option crypto add FP_ARMv8 CRYPTO |
a92ffb3e RE |
1254 | costs exynosm1 |
1255 | end cpu exynos-m1 | |
1256 | ||
a92ffb3e RE |
1257 | begin cpu xgene1 |
1258 | tune flags LDSCHED | |
dff2abcb | 1259 | architecture armv8-a+simd |
e87afe54 | 1260 | option crypto add FP_ARMv8 CRYPTO |
a92ffb3e RE |
1261 | costs xgene1 |
1262 | end cpu xgene1 | |
1263 | ||
a92ffb3e RE |
1264 | # V8 A-profile big.LITTLE implementations |
1265 | begin cpu cortex-a57.cortex-a53 | |
1266 | cname cortexa57cortexa53 | |
1267 | tune for cortex-a53 | |
1268 | tune flags LDSCHED | |
dff2abcb | 1269 | architecture armv8-a+crc+simd |
e87afe54 | 1270 | option crypto add FP_ARMv8 CRYPTO |
a92ffb3e RE |
1271 | costs cortex_a57 |
1272 | end cpu cortex-a57.cortex-a53 | |
1273 | ||
1274 | begin cpu cortex-a72.cortex-a53 | |
1275 | cname cortexa72cortexa53 | |
1276 | tune for cortex-a53 | |
1277 | tune flags LDSCHED | |
dff2abcb | 1278 | architecture armv8-a+crc+simd |
e87afe54 | 1279 | option crypto add FP_ARMv8 CRYPTO |
a92ffb3e RE |
1280 | costs cortex_a57 |
1281 | end cpu cortex-a72.cortex-a53 | |
1282 | ||
1283 | begin cpu cortex-a73.cortex-a35 | |
1284 | cname cortexa73cortexa35 | |
1285 | tune for cortex-a53 | |
1286 | tune flags LDSCHED | |
dff2abcb | 1287 | architecture armv8-a+crc+simd |
e87afe54 | 1288 | option crypto add FP_ARMv8 CRYPTO |
a92ffb3e RE |
1289 | costs cortex_a73 |
1290 | end cpu cortex-a73.cortex-a35 | |
1291 | ||
1292 | begin cpu cortex-a73.cortex-a53 | |
1293 | cname cortexa73cortexa53 | |
1294 | tune for cortex-a53 | |
1295 | tune flags LDSCHED | |
dff2abcb | 1296 | architecture armv8-a+crc+simd |
e87afe54 | 1297 | option crypto add FP_ARMv8 CRYPTO |
a92ffb3e RE |
1298 | costs cortex_a73 |
1299 | end cpu cortex-a73.cortex-a53 | |
1300 | ||
1301 | ||
1d79dcb8 JG |
1302 | # ARMv8.2 A-profile Architecture Processors |
1303 | begin cpu cortex-a55 | |
1304 | cname cortexa55 | |
1305 | tune for cortex-a53 | |
1306 | tune flags LDSCHED | |
fd9058b6 | 1307 | architecture armv8.2-a+fp16+dotprod |
1d79dcb8 JG |
1308 | option crypto add FP_ARMv8 CRYPTO |
1309 | option nofp remove ALL_FP | |
1310 | costs cortex_a53 | |
b02160e5 RE |
1311 | vendor 41 |
1312 | part d05 | |
1d79dcb8 JG |
1313 | end cpu cortex-a55 |
1314 | ||
1315 | begin cpu cortex-a75 | |
1316 | cname cortexa75 | |
1317 | tune for cortex-a57 | |
1318 | tune flags LDSCHED | |
fd9058b6 | 1319 | architecture armv8.2-a+fp16+dotprod |
1d79dcb8 JG |
1320 | option crypto add FP_ARMv8 CRYPTO |
1321 | costs cortex_a73 | |
b02160e5 RE |
1322 | vendor 41 |
1323 | part d0a | |
1d79dcb8 JG |
1324 | end cpu cortex-a75 |
1325 | ||
ed4e2a17 KT |
1326 | begin cpu cortex-a76 |
1327 | cname cortexa76 | |
1328 | tune for cortex-a57 | |
1329 | tune flags LDSCHED | |
fd9058b6 | 1330 | architecture armv8.2-a+fp16+dotprod |
ed4e2a17 KT |
1331 | option crypto add FP_ARMv8 CRYPTO |
1332 | costs cortex_a57 | |
b02160e5 RE |
1333 | vendor 41 |
1334 | part d0b | |
ed4e2a17 | 1335 | end cpu cortex-a76 |
1d79dcb8 | 1336 | |
a50f4236 DZ |
1337 | begin cpu cortex-a76ae |
1338 | cname cortexa76ae | |
1339 | tune for cortex-a57 | |
1340 | tune flags LDSCHED | |
fd9058b6 | 1341 | architecture armv8.2-a+fp16+dotprod |
a50f4236 DZ |
1342 | option crypto add FP_ARMv8 CRYPTO |
1343 | costs cortex_a57 | |
1344 | vendor 41 | |
1345 | part d0e | |
1346 | end cpu cortex-a76ae | |
1347 | ||
1348 | begin cpu cortex-a77 | |
1349 | cname cortexa77 | |
1350 | tune for cortex-a57 | |
1351 | tune flags LDSCHED | |
fd9058b6 | 1352 | architecture armv8.2-a+fp16+dotprod |
a50f4236 DZ |
1353 | option crypto add FP_ARMv8 CRYPTO |
1354 | costs cortex_a57 | |
1355 | vendor 41 | |
1356 | part d0d | |
1357 | end cpu cortex-a77 | |
1358 | ||
81a5f36d KT |
1359 | begin cpu neoverse-n1 |
1360 | cname neoversen1 | |
1361 | alias !ares | |
6279fcd6 KT |
1362 | tune for cortex-a57 |
1363 | tune flags LDSCHED | |
fd9058b6 | 1364 | architecture armv8.2-a+fp16+dotprod |
6279fcd6 KT |
1365 | option crypto add FP_ARMv8 CRYPTO |
1366 | costs cortex_a57 | |
1367 | vendor 41 | |
1368 | part d0c | |
81a5f36d | 1369 | end cpu neoverse-n1 |
6279fcd6 | 1370 | |
1d79dcb8 JG |
1371 | # ARMv8.2 A-profile ARM DynamIQ big.LITTLE implementations |
1372 | begin cpu cortex-a75.cortex-a55 | |
1373 | cname cortexa75cortexa55 | |
1374 | tune for cortex-a53 | |
1375 | tune flags LDSCHED | |
fd9058b6 | 1376 | architecture armv8.2-a+fp16+dotprod |
1d79dcb8 JG |
1377 | option crypto add FP_ARMv8 CRYPTO |
1378 | costs cortex_a73 | |
1379 | end cpu cortex-a75.cortex-a55 | |
1380 | ||
ed4e2a17 KT |
1381 | begin cpu cortex-a76.cortex-a55 |
1382 | cname cortexa76cortexa55 | |
1383 | tune for cortex-a53 | |
1384 | tune flags LDSCHED | |
fd9058b6 | 1385 | architecture armv8.2-a+fp16+dotprod |
ed4e2a17 KT |
1386 | option crypto add FP_ARMv8 CRYPTO |
1387 | costs cortex_a57 | |
1388 | end cpu cortex-a76.cortex-a55 | |
1389 | ||
a92ffb3e RE |
1390 | # V8 M-profile implementations. |
1391 | begin cpu cortex-m23 | |
1392 | cname cortexm23 | |
1393 | tune flags LDSCHED | |
1394 | architecture armv8-m.base | |
1395 | costs v6m | |
1396 | end cpu cortex-m23 | |
1397 | ||
1398 | begin cpu cortex-m33 | |
1399 | cname cortexm33 | |
1400 | tune flags LDSCHED | |
dff2abcb | 1401 | architecture armv8-m.main+dsp+fp |
e87afe54 | 1402 | option nofp remove ALL_FP |
525f700d | 1403 | option nodsp remove armv7em |
a92ffb3e RE |
1404 | costs v7m |
1405 | end cpu cortex-m33 | |
1406 | ||
a50f4236 DZ |
1407 | begin cpu cortex-m35p |
1408 | cname cortexm35p | |
1409 | tune flags LDSCHED | |
1410 | architecture armv8-m.main+dsp+fp | |
1411 | option nofp remove ALL_FP | |
1412 | option nodsp remove armv7em | |
1413 | costs v7m | |
1414 | end cpu cortex-m35p | |
1415 | ||
2376caf9 TP |
1416 | # V8 R-profile implementations. |
1417 | begin cpu cortex-r52 | |
1418 | cname cortexr52 | |
1419 | tune flags LDSCHED | |
1420 | architecture armv8-r+crc+simd | |
2376caf9 TP |
1421 | option nofp.dp remove FP_DBL ALL_SIMD |
1422 | costs cortex | |
b02160e5 RE |
1423 | vendor 41 |
1424 | part d13 | |
2376caf9 TP |
1425 | end cpu cortex-r52 |
1426 | ||
a92ffb3e RE |
1427 | # FPU entries |
1428 | # format: | |
1429 | # begin fpu <name> | |
1430 | # isa <isa-flags-list> | |
1431 | # end fpu <name> | |
1432 | ||
1433 | begin fpu vfp | |
1434 | isa VFPv2 FP_DBL | |
1435 | end fpu vfp | |
1436 | ||
1437 | begin fpu vfpv2 | |
1438 | isa VFPv2 FP_DBL | |
1439 | end fpu vfpv2 | |
1440 | ||
1441 | begin fpu vfpv3 | |
1442 | isa VFPv3 FP_D32 | |
1443 | end fpu vfpv3 | |
1444 | ||
1445 | begin fpu vfpv3-fp16 | |
bdb0828f | 1446 | isa VFPv3 FP_D32 fp16conv |
a92ffb3e RE |
1447 | end fpu vfpv3-fp16 |
1448 | ||
1449 | begin fpu vfpv3-d16 | |
1450 | isa VFPv3 FP_DBL | |
1451 | end fpu vfpv3-d16 | |
1452 | ||
1453 | begin fpu vfpv3-d16-fp16 | |
bdb0828f | 1454 | isa VFPv3 FP_DBL fp16conv |
a92ffb3e RE |
1455 | end fpu vfpv3-d16-fp16 |
1456 | ||
1457 | begin fpu vfpv3xd | |
1458 | isa VFPv3 | |
1459 | end fpu vfpv3xd | |
1460 | ||
1461 | begin fpu vfpv3xd-fp16 | |
bdb0828f | 1462 | isa VFPv3 fp16conv |
a92ffb3e RE |
1463 | end fpu vfpv3xd-fp16 |
1464 | ||
1465 | begin fpu neon | |
1466 | isa VFPv3 NEON | |
1467 | end fpu neon | |
1468 | ||
1469 | begin fpu neon-vfpv3 | |
1470 | isa VFPv3 NEON | |
1471 | end fpu neon-vfpv3 | |
1472 | ||
1473 | begin fpu neon-fp16 | |
bdb0828f | 1474 | isa VFPv3 NEON fp16conv |
a92ffb3e RE |
1475 | end fpu neon-fp16 |
1476 | ||
1477 | begin fpu vfpv4 | |
1478 | isa VFPv4 FP_D32 | |
1479 | end fpu vfpv4 | |
1480 | ||
1481 | begin fpu neon-vfpv4 | |
1482 | isa VFPv4 NEON | |
1483 | end fpu neon-vfpv4 | |
1484 | ||
1485 | begin fpu vfpv4-d16 | |
1486 | isa VFPv4 FP_DBL | |
1487 | end fpu vfpv4-d16 | |
1488 | ||
1489 | begin fpu fpv4-sp-d16 | |
1490 | isa VFPv4 | |
1491 | end fpu fpv4-sp-d16 | |
1492 | ||
1493 | begin fpu fpv5-sp-d16 | |
1494 | isa FPv5 | |
1495 | end fpu fpv5-sp-d16 | |
1496 | ||
1497 | begin fpu fpv5-d16 | |
1498 | isa FPv5 FP_DBL | |
1499 | end fpu fpv5-d16 | |
1500 | ||
1501 | begin fpu fp-armv8 | |
c8d61ab8 | 1502 | isa FP_ARMv8 |
a92ffb3e RE |
1503 | end fpu fp-armv8 |
1504 | ||
1505 | begin fpu neon-fp-armv8 | |
1506 | isa FP_ARMv8 NEON | |
1507 | end fpu neon-fp-armv8 | |
1508 | ||
1509 | begin fpu crypto-neon-fp-armv8 | |
1510 | isa FP_ARMv8 CRYPTO | |
1511 | end fpu crypto-neon-fp-armv8 | |
1512 | ||
1513 | # Compatibility aliases. | |
1514 | begin fpu vfp3 | |
1515 | isa VFPv3 FP_D32 | |
1516 | end fpu vfp3 |