]>
Commit | Line | Data |
---|---|---|
a92ffb3e RE |
1 | # CPU, FPU and architecture specifications for ARM. |
2 | # | |
85ec4feb | 3 | # Copyright (C) 2011-2018 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 | ||
51 | # Extended multiply | |
52 | define feature armv3m | |
53 | ||
54 | # 26-bit mode support | |
55 | define feature mode26 | |
56 | ||
57 | # 32-bit mode support | |
58 | define feature mode32 | |
59 | ||
60 | # Architecture rel 4 | |
61 | define feature armv4 | |
62 | ||
63 | # Architecture rel 5 | |
64 | define feature armv5 | |
65 | ||
66 | # Thumb aware. | |
67 | define feature thumb | |
68 | ||
69 | # Architecture rel 5e. | |
70 | define feature armv5e | |
71 | ||
72 | # XScale. | |
73 | define feature xscale | |
74 | ||
75 | # Architecture rel 6. | |
76 | define feature armv6 | |
77 | ||
78 | # Architecture rel 6k. | |
79 | define feature armv6k | |
80 | ||
81 | # Thumb-2. | |
82 | define feature thumb2 | |
83 | ||
84 | # Instructions not present in 'M' profile. | |
85 | define feature notm | |
86 | ||
87 | # Architecture uses be8 mode in big-endian. | |
88 | define feature be8 | |
89 | ||
90 | # Thumb division instructions. | |
91 | define feature tdiv | |
92 | ||
93 | # Architecture rel 7e-m. | |
94 | define feature armv7em | |
95 | ||
96 | # Architecture rel 7. | |
97 | define feature armv7 | |
98 | ||
99 | # ARM division instructions. | |
100 | define feature adiv | |
101 | ||
102 | # Architecture rel 8. | |
103 | define feature armv8 | |
104 | ||
105 | # ARMv8 CRC32 instructions. | |
106 | define feature crc32 | |
107 | ||
108 | # XScale v2 (Wireless MMX). | |
109 | define feature iwmmxt | |
110 | ||
111 | # XScale Wireless MMX2. | |
112 | define feature iwmmxt2 | |
113 | ||
114 | # Architecture rel 8.1. | |
115 | define feature armv8_1 | |
116 | ||
1ad9b03f | 117 | # Architecture rel 8.2. |
bdb0828f RE |
118 | define feature armv8_2 |
119 | ||
1ad9b03f TC |
120 | # Architecture rel 8.3. |
121 | define feature armv8_3 | |
122 | ||
946c6c45 KT |
123 | # Architecture rel 8.4. |
124 | define feature armv8_4 | |
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 | ||
186 | # Feature groups. Conventionally all (or mostly) upper case. | |
ba09dd21 TC |
187 | # ALL_FPU lists all the feature bits associated with the floating-point |
188 | # unit; these will all be removed if the floating-point unit is disabled | |
189 | # (eg -mfloat-abi=soft). ALL_FPU_INTERNAL must ONLY contain features that | |
190 | # form part of a named -mfpu option; it is used to map the capabilities | |
191 | # back to a named FPU for the benefit of the assembler. | |
192 | # | |
193 | # ALL_SIMD_INTERNAL and ALL_SIMD are similarly defined to help with the | |
194 | # construction of ALL_FPU and ALL_FPU_INTERNAL; they describe the SIMD | |
195 | # extensions that are either part of a named FPU or optional extensions | |
196 | # respectively. | |
197 | ||
bdb0828f RE |
198 | |
199 | # List of all cryptographic extensions to stripout if crypto is | |
200 | # disabled. Currently, that's trivial, but we define it anyway for | |
201 | # consistency with the SIMD and FP disable lists. | |
202 | define fgroup ALL_CRYPTO crypto | |
203 | ||
204 | # List of all SIMD bits to strip out if SIMD is disabled. This does | |
205 | # strip off 32 D-registers, but does not remove support for | |
206 | # double-precision FP. | |
ba09dd21 | 207 | define fgroup ALL_SIMD_INTERNAL fp_d32 neon ALL_CRYPTO |
06e95715 | 208 | define fgroup ALL_SIMD ALL_SIMD_INTERNAL dotprod fp16fml |
bdb0828f RE |
209 | |
210 | # List of all FPU bits to strip out if -mfpu is used to override the | |
211 | # default. fp16 is deliberately missing from this list. | |
ba09dd21 | 212 | define fgroup ALL_FPU_INTERNAL vfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD_INTERNAL |
bdb0828f RE |
213 | |
214 | # Similarly, but including fp16 and other extensions that aren't part of | |
215 | # -mfpu support. | |
216 | define fgroup ALL_FP fp16 ALL_FPU_INTERNAL | |
217 | ||
218 | define fgroup ARMv2 notm | |
219 | define fgroup ARMv3 ARMv2 mode32 | |
220 | define fgroup ARMv3m ARMv3 armv3m | |
221 | define fgroup ARMv4 ARMv3m armv4 | |
222 | define fgroup ARMv4t ARMv4 thumb | |
223 | define fgroup ARMv5 ARMv4 armv5 | |
224 | define fgroup ARMv5t ARMv5 thumb | |
225 | define fgroup ARMv5e ARMv5 armv5e | |
226 | define fgroup ARMv5te ARMv5e thumb | |
227 | define fgroup ARMv5tej ARMv5te | |
228 | define fgroup ARMv6 ARMv5te armv6 be8 | |
229 | define fgroup ARMv6j ARMv6 | |
230 | define fgroup ARMv6k ARMv6 armv6k | |
231 | define fgroup ARMv6z ARMv6 | |
232 | define fgroup ARMv6kz ARMv6k quirk_armv6kz | |
233 | define fgroup ARMv6zk ARMv6k | |
234 | define fgroup ARMv6t2 ARMv6 thumb2 | |
235 | # This is suspect. ARMv6-m doesn't really pull in any useful features | |
236 | # from ARMv5* or ARMv6. | |
237 | define fgroup ARMv6m mode32 armv3m armv4 thumb armv5 armv5e armv6 | |
238 | # This is suspect, the 'common' ARMv7 subset excludes the thumb2 'DSP' and | |
239 | # integer SIMD instructions that are in ARMv6T2. */ | |
240 | define fgroup ARMv7 ARMv6m thumb2 armv7 | |
241 | ||
242 | define fgroup ARMv7a ARMv7 notm armv6k | |
243 | define fgroup ARMv7ve ARMv7a adiv tdiv lpae | |
244 | define fgroup ARMv7r ARMv7a tdiv | |
245 | define fgroup ARMv7m ARMv7 tdiv | |
246 | define fgroup ARMv7em ARMv7m armv7em | |
247 | define fgroup ARMv8a ARMv7ve armv8 | |
248 | define fgroup ARMv8_1a ARMv8a crc32 armv8_1 | |
249 | define fgroup ARMv8_2a ARMv8_1a armv8_2 | |
1ad9b03f | 250 | define fgroup ARMv8_3a ARMv8_2a armv8_3 |
946c6c45 | 251 | define fgroup ARMv8_4a ARMv8_3a armv8_4 |
bdb0828f RE |
252 | define fgroup ARMv8m_base ARMv6m armv8 cmse tdiv |
253 | define fgroup ARMv8m_main ARMv7m armv8 cmse | |
254 | define fgroup ARMv8r ARMv8a | |
255 | ||
256 | # Useful combinations. | |
257 | define fgroup VFPv2 vfpv2 | |
258 | define fgroup VFPv3 VFPv2 vfpv3 | |
259 | define fgroup VFPv4 VFPv3 vfpv4 fp16conv | |
260 | define fgroup FPv5 VFPv4 fpv5 | |
261 | ||
262 | define fgroup FP_DBL fp_dbl | |
263 | define fgroup FP_D32 FP_DBL fp_d32 | |
264 | define fgroup FP_ARMv8 FPv5 FP_D32 | |
265 | define fgroup NEON FP_D32 neon | |
266 | define fgroup CRYPTO NEON crypto | |
ba09dd21 | 267 | define fgroup DOTPROD NEON dotprod |
bdb0828f RE |
268 | |
269 | # List of all quirk bits to strip out when comparing CPU features with | |
270 | # architectures. | |
271 | define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd | |
272 | ||
a92ffb3e RE |
273 | # Architecture entries |
274 | # format: | |
275 | # begin arch <name> | |
276 | # tune for <cpu> | |
277 | # [tune flags <list>] | |
278 | # base <name> | |
8afb5358 | 279 | # [profile <A|R|M>] |
a92ffb3e RE |
280 | # isa <isa-flags-list> |
281 | # end arch <name> | |
282 | # | |
283 | ||
284 | begin arch armv2 | |
285 | tune for arm2 | |
286 | tune flags CO_PROC NO_MODE32 | |
287 | base 2 | |
bdb0828f | 288 | isa ARMv2 mode26 |
a92ffb3e RE |
289 | end arch armv2 |
290 | ||
291 | begin arch armv2a | |
292 | tune for arm2 | |
293 | tune flags CO_PROC NO_MODE32 | |
294 | base 2 | |
bdb0828f | 295 | isa ARMv2 mode26 |
a92ffb3e RE |
296 | end arch armv2a |
297 | ||
298 | begin arch armv3 | |
299 | tune for arm6 | |
300 | tune flags CO_PROC | |
301 | base 3 | |
bdb0828f | 302 | isa ARMv3 mode26 |
a92ffb3e RE |
303 | end arch armv3 |
304 | ||
305 | begin arch armv3m | |
306 | tune for arm7m | |
307 | tune flags CO_PROC | |
308 | base 3M | |
bdb0828f | 309 | isa ARMv3m mode26 |
a92ffb3e RE |
310 | end arch armv3m |
311 | ||
312 | begin arch armv4 | |
313 | tune for arm7tdmi | |
314 | tune flags CO_PROC | |
315 | base 4 | |
bdb0828f | 316 | isa ARMv4 mode26 |
a92ffb3e RE |
317 | end arch armv4 |
318 | ||
bdb0828f | 319 | # Strictly, mode26 is a permitted option for v4t, but there are no |
a92ffb3e RE |
320 | # implementations that support it, so we will leave it out for now. |
321 | begin arch armv4t | |
322 | tune for arm7tdmi | |
323 | tune flags CO_PROC | |
324 | base 4T | |
325 | isa ARMv4t | |
326 | end arch armv4t | |
327 | ||
328 | begin arch armv5 | |
329 | tune for arm10tdmi | |
330 | tune flags CO_PROC | |
331 | base 5 | |
332 | isa ARMv5 | |
333 | end arch armv5 | |
334 | ||
335 | begin arch armv5t | |
336 | tune for arm10tdmi | |
337 | tune flags CO_PROC | |
338 | base 5T | |
339 | isa ARMv5t | |
340 | end arch armv5t | |
341 | ||
342 | begin arch armv5e | |
343 | tune for arm1026ej-s | |
344 | tune flags CO_PROC | |
345 | base 5E | |
346 | isa ARMv5e | |
76d7d533 | 347 | option fp add VFPv2 FP_DBL |
357e1023 | 348 | optalias vfpv2 fp |
e87afe54 | 349 | option nofp remove ALL_FP |
a92ffb3e RE |
350 | end arch armv5e |
351 | ||
352 | begin arch armv5te | |
353 | tune for arm1026ej-s | |
354 | tune flags CO_PROC | |
355 | base 5TE | |
356 | isa ARMv5te | |
76d7d533 | 357 | option fp add VFPv2 FP_DBL |
357e1023 | 358 | optalias vfpv2 fp |
e87afe54 | 359 | option nofp remove ALL_FP |
a92ffb3e RE |
360 | end arch armv5te |
361 | ||
362 | begin arch armv5tej | |
363 | tune for arm1026ej-s | |
364 | tune flags CO_PROC | |
365 | base 5TEJ | |
366 | isa ARMv5tej | |
76d7d533 | 367 | option fp add VFPv2 FP_DBL |
357e1023 | 368 | optalias vfpv2 fp |
e87afe54 | 369 | option nofp remove ALL_FP |
a92ffb3e RE |
370 | end arch armv5tej |
371 | ||
372 | begin arch armv6 | |
373 | tune for arm1136j-s | |
374 | tune flags CO_PROC | |
375 | base 6 | |
376 | isa ARMv6 | |
76d7d533 | 377 | option fp add VFPv2 FP_DBL |
357e1023 | 378 | optalias vfpv2 fp |
e87afe54 | 379 | option nofp remove ALL_FP |
a92ffb3e RE |
380 | end arch armv6 |
381 | ||
382 | begin arch armv6j | |
383 | tune for arm1136j-s | |
384 | tune flags CO_PROC | |
385 | base 6J | |
386 | isa ARMv6j | |
76d7d533 | 387 | option fp add VFPv2 FP_DBL |
357e1023 | 388 | optalias vfpv2 fp |
e87afe54 | 389 | option nofp remove ALL_FP |
a92ffb3e RE |
390 | end arch armv6j |
391 | ||
392 | begin arch armv6k | |
393 | tune for mpcore | |
394 | tune flags CO_PROC | |
395 | base 6K | |
396 | isa ARMv6k | |
76d7d533 | 397 | option fp add VFPv2 FP_DBL |
357e1023 | 398 | optalias vfpv2 fp |
e87afe54 | 399 | option nofp remove ALL_FP |
a92ffb3e RE |
400 | end arch armv6k |
401 | ||
402 | begin arch armv6z | |
403 | tune for arm1176jz-s | |
404 | tune flags CO_PROC | |
405 | base 6Z | |
406 | isa ARMv6z | |
76d7d533 | 407 | option fp add VFPv2 FP_DBL |
357e1023 | 408 | optalias vfpv2 fp |
e87afe54 | 409 | option nofp remove ALL_FP |
a92ffb3e RE |
410 | end arch armv6z |
411 | ||
412 | begin arch armv6kz | |
413 | tune for arm1176jz-s | |
414 | tune flags CO_PROC | |
415 | base 6KZ | |
416 | isa ARMv6kz | |
76d7d533 | 417 | option fp add VFPv2 FP_DBL |
357e1023 | 418 | optalias vfpv2 fp |
e87afe54 | 419 | option nofp remove ALL_FP |
a92ffb3e RE |
420 | end arch armv6kz |
421 | ||
422 | begin arch armv6zk | |
423 | tune for arm1176jz-s | |
424 | tune flags CO_PROC | |
425 | base 6KZ | |
426 | isa ARMv6kz | |
76d7d533 | 427 | option fp add VFPv2 FP_DBL |
357e1023 | 428 | optalias vfpv2 fp |
e87afe54 | 429 | option nofp remove ALL_FP |
a92ffb3e RE |
430 | end arch armv6zk |
431 | ||
432 | begin arch armv6t2 | |
433 | tune for arm1156t2-s | |
434 | tune flags CO_PROC | |
435 | base 6T2 | |
436 | isa ARMv6t2 | |
76d7d533 | 437 | option fp add VFPv2 FP_DBL |
357e1023 | 438 | optalias vfpv2 fp |
e87afe54 | 439 | option nofp remove ALL_FP |
a92ffb3e RE |
440 | end arch armv6t2 |
441 | ||
442 | begin arch armv6-m | |
443 | tune for cortex-m1 | |
444 | base 6M | |
8afb5358 | 445 | profile M |
a92ffb3e RE |
446 | isa ARMv6m |
447 | end arch armv6-m | |
448 | ||
449 | begin arch armv6s-m | |
450 | tune for cortex-m1 | |
451 | base 6M | |
8afb5358 | 452 | profile M |
a92ffb3e RE |
453 | isa ARMv6m |
454 | end arch armv6s-m | |
455 | ||
456 | begin arch armv7 | |
457 | tune for cortex-a8 | |
458 | tune flags CO_PROC | |
459 | base 7 | |
460 | isa ARMv7 | |
76d7d533 RE |
461 | # fp => VFPv3-d16 (only useful for the A+R profile subset). |
462 | option fp add VFPv3 FP_DBL | |
357e1023 | 463 | optalias vfpv3-d16 fp |
ffc12690 | 464 | option nofp remove ALL_FP |
a92ffb3e RE |
465 | end arch armv7 |
466 | ||
467 | begin arch armv7-a | |
468 | tune for cortex-a8 | |
469 | tune flags CO_PROC | |
470 | base 7A | |
8afb5358 | 471 | profile A |
a92ffb3e | 472 | isa ARMv7a |
76d7d533 | 473 | # fp => VFPv3-d16, simd => neon-vfpv3 |
357e1023 RE |
474 | option fp add VFPv3 FP_DBL |
475 | optalias vfpv3-d16 fp | |
476 | option vfpv3 add VFPv3 FP_D32 | |
bdb0828f RE |
477 | option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv |
478 | option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 fp16conv | |
e87afe54 | 479 | option vfpv4-d16 add VFPv4 FP_DBL |
357e1023 RE |
480 | option vfpv4 add VFPv4 FP_D32 |
481 | option simd add VFPv3 NEON | |
482 | optalias neon simd | |
483 | optalias neon-vfpv3 simd | |
bdb0828f | 484 | option neon-fp16 add VFPv3 NEON fp16conv |
e87afe54 | 485 | option neon-vfpv4 add VFPv4 NEON |
357e1023 RE |
486 | option nosimd remove ALL_SIMD |
487 | option nofp remove ALL_FP | |
a92ffb3e RE |
488 | end arch armv7-a |
489 | ||
490 | begin arch armv7ve | |
491 | tune for cortex-a8 | |
492 | tune flags CO_PROC | |
493 | base 7A | |
8afb5358 | 494 | profile A |
a92ffb3e | 495 | isa ARMv7ve |
76d7d533 | 496 | # fp => VFPv4-d16, simd => neon-vfpv4 |
e87afe54 RE |
497 | option vfpv3-d16 add VFPv3 FP_DBL |
498 | option vfpv3 add VFPv3 FP_D32 | |
bdb0828f RE |
499 | option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv |
500 | option vfpv3-fp16 add VFPv3 FP_DBL FP_D32 fp16conv | |
e87afe54 | 501 | option fp add VFPv4 FP_DBL |
357e1023 | 502 | optalias vfpv4-d16 fp |
e87afe54 RE |
503 | option vfpv4 add VFPv4 FP_D32 |
504 | option neon add VFPv3 NEON | |
357e1023 | 505 | optalias neon-vfpv3 neon |
bdb0828f | 506 | option neon-fp16 add VFPv3 NEON fp16conv |
e87afe54 | 507 | option simd add VFPv4 NEON |
357e1023 RE |
508 | optalias neon-vfpv4 simd |
509 | option nosimd remove ALL_SIMD | |
510 | option nofp remove ALL_FP | |
a92ffb3e RE |
511 | end arch armv7ve |
512 | ||
513 | begin arch armv7-r | |
514 | tune for cortex-r4 | |
515 | tune flags CO_PROC | |
516 | base 7R | |
8afb5358 | 517 | profile R |
a92ffb3e | 518 | isa ARMv7r |
76d7d533 | 519 | # ARMv7-r uses VFPv3-d16 |
76d7d533 | 520 | option fp.sp add VFPv3 |
ffc12690 | 521 | optalias vfpv3xd fp.sp |
e87afe54 | 522 | option fp add VFPv3 FP_DBL |
ffc12690 | 523 | optalias vfpv3-d16 fp |
bdb0828f | 524 | option idiv add adiv |
e87afe54 | 525 | option nofp remove ALL_FP |
bdb0828f | 526 | option noidiv remove adiv |
a92ffb3e RE |
527 | end arch armv7-r |
528 | ||
529 | begin arch armv7-m | |
530 | tune for cortex-m3 | |
531 | tune flags CO_PROC | |
532 | base 7M | |
8afb5358 | 533 | profile M |
a92ffb3e | 534 | isa ARMv7m |
76d7d533 RE |
535 | # In theory FP is permitted in v7-m, but in practice no implementations exist. |
536 | # leave it out for now. | |
a92ffb3e RE |
537 | end arch armv7-m |
538 | ||
539 | begin arch armv7e-m | |
540 | tune for cortex-m4 | |
541 | tune flags CO_PROC | |
542 | base 7EM | |
8afb5358 | 543 | profile M |
a92ffb3e | 544 | isa ARMv7em |
76d7d533 RE |
545 | # fp => VFPv4-sp-d16; fpv5 => FPv5-sp-d16; fp.dp => FPv5-d16 |
546 | option fp add VFPv4 | |
ffc12690 | 547 | optalias vfpv4-sp-d16 fp |
76d7d533 RE |
548 | option fpv5 add FPv5 |
549 | option fp.dp add FPv5 FP_DBL | |
ffc12690 | 550 | optalias fpv5-d16 fp.dp |
e87afe54 | 551 | option nofp remove ALL_FP |
a92ffb3e RE |
552 | end arch armv7e-m |
553 | ||
554 | begin arch armv8-a | |
555 | tune for cortex-a53 | |
556 | tune flags CO_PROC | |
557 | base 8A | |
8afb5358 | 558 | profile A |
a92ffb3e | 559 | isa ARMv8a |
bdb0828f | 560 | option crc add crc32 |
250e088b | 561 | option simd add FP_ARMv8 NEON |
e87afe54 | 562 | option crypto add FP_ARMv8 CRYPTO |
e87afe54 | 563 | option nocrypto remove ALL_CRYPTO |
357e1023 | 564 | option nofp remove ALL_FP |
a92ffb3e RE |
565 | end arch armv8-a |
566 | ||
a92ffb3e RE |
567 | begin arch armv8.1-a |
568 | tune for cortex-a53 | |
569 | tune flags CO_PROC | |
570 | base 8A | |
8afb5358 | 571 | profile A |
a92ffb3e | 572 | isa ARMv8_1a |
250e088b | 573 | option simd add FP_ARMv8 NEON |
e87afe54 | 574 | option crypto add FP_ARMv8 CRYPTO |
e87afe54 | 575 | option nocrypto remove ALL_CRYPTO |
357e1023 | 576 | option nofp remove ALL_FP |
a92ffb3e RE |
577 | end arch armv8.1-a |
578 | ||
579 | begin arch armv8.2-a | |
580 | tune for cortex-a53 | |
581 | tune flags CO_PROC | |
582 | base 8A | |
8afb5358 | 583 | profile A |
a92ffb3e | 584 | isa ARMv8_2a |
250e088b | 585 | option simd add FP_ARMv8 NEON |
bdb0828f | 586 | option fp16 add fp16 FP_ARMv8 NEON |
06e95715 | 587 | option fp16fml add fp16fml fp16 FP_ARMv8 NEON |
e87afe54 | 588 | option crypto add FP_ARMv8 CRYPTO |
e87afe54 | 589 | option nocrypto remove ALL_CRYPTO |
357e1023 | 590 | option nofp remove ALL_FP |
ba09dd21 | 591 | option dotprod add FP_ARMv8 DOTPROD |
a92ffb3e RE |
592 | end arch armv8.2-a |
593 | ||
1ad9b03f TC |
594 | begin arch armv8.3-a |
595 | tune for cortex-a53 | |
596 | tune flags CO_PROC | |
597 | base 8A | |
598 | profile A | |
599 | isa ARMv8_3a | |
600 | option simd add FP_ARMv8 NEON | |
601 | option fp16 add fp16 FP_ARMv8 NEON | |
06e95715 | 602 | option fp16fml add fp16fml fp16 FP_ARMv8 NEON |
1ad9b03f TC |
603 | option crypto add FP_ARMv8 CRYPTO |
604 | option nocrypto remove ALL_CRYPTO | |
605 | option nofp remove ALL_FP | |
606 | option dotprod add FP_ARMv8 DOTPROD | |
607 | end arch armv8.3-a | |
608 | ||
946c6c45 KT |
609 | begin arch armv8.4-a |
610 | tune for cortex-a53 | |
611 | tune flags CO_PROC | |
612 | base 8A | |
613 | profile A | |
614 | isa ARMv8_4a | |
615 | option simd add FP_ARMv8 DOTPROD | |
06e95715 | 616 | option fp16 add fp16 fp16fml FP_ARMv8 DOTPROD |
946c6c45 KT |
617 | option crypto add FP_ARMv8 CRYPTO DOTPROD |
618 | option nocrypto remove ALL_CRYPTO | |
619 | option nofp remove ALL_FP | |
620 | end arch armv8.4-a | |
621 | ||
a92ffb3e RE |
622 | begin arch armv8-m.base |
623 | tune for cortex-m23 | |
624 | base 8M_BASE | |
8afb5358 | 625 | profile M |
a92ffb3e RE |
626 | isa ARMv8m_base |
627 | end arch armv8-m.base | |
628 | ||
629 | begin arch armv8-m.main | |
630 | tune for cortex-m7 | |
631 | tune flags CO_PROC | |
632 | base 8M_MAIN | |
8afb5358 | 633 | profile M |
a92ffb3e | 634 | isa ARMv8m_main |
bdb0828f | 635 | option dsp add armv7em |
76d7d533 RE |
636 | # fp => FPv5-sp-d16; fp.dp => FPv5-d16 |
637 | option fp add FPv5 | |
638 | option fp.dp add FPv5 FP_DBL | |
e87afe54 | 639 | option nofp remove ALL_FP |
bdb0828f | 640 | option nodsp remove armv7em |
a92ffb3e RE |
641 | end arch armv8-m.main |
642 | ||
9296dd9b | 643 | begin arch armv8-r |
2376caf9 | 644 | tune for cortex-r52 |
9296dd9b TP |
645 | tune flags CO_PROC |
646 | base 8R | |
647 | profile R | |
648 | isa ARMv8r | |
bdb0828f | 649 | option crc add crc32 |
9296dd9b TP |
650 | # fp.sp => fp-armv8 (d16); simd => simd + fp-armv8 + d32 + double precision |
651 | # note: no fp option for fp-armv8 (d16) + double precision at the moment | |
c8d61ab8 | 652 | option fp.sp add FPv5 |
9296dd9b TP |
653 | option simd add FP_ARMv8 NEON |
654 | option crypto add FP_ARMv8 CRYPTO | |
655 | option nocrypto remove ALL_CRYPTO | |
656 | option nofp remove ALL_FP | |
657 | end arch armv8-r | |
658 | ||
a92ffb3e RE |
659 | begin arch iwmmxt |
660 | tune for iwmmxt | |
661 | tune flags LDSCHED STRONG XSCALE | |
662 | base 5TE | |
bdb0828f | 663 | isa ARMv5te xscale iwmmxt |
a92ffb3e RE |
664 | end arch iwmmxt |
665 | ||
666 | begin arch iwmmxt2 | |
667 | tune for iwmmxt2 | |
668 | tune flags LDSCHED STRONG XSCALE | |
669 | base 5TE | |
bdb0828f | 670 | isa ARMv5te xscale iwmmxt iwmmxt2 |
a92ffb3e RE |
671 | end arch iwmmxt2 |
672 | ||
673 | # CPU entries | |
674 | # format: | |
675 | # begin cpu <name> | |
676 | # [cname <c-compatible-name>] | |
677 | # [tune for <cpu-name>] | |
678 | # [tune flags <list>] | |
679 | # architecture <name> | |
680 | # [fpu <name>] | |
681 | # [isa <additional-isa-flags-list>] | |
250e088b | 682 | # [option <name> add|remove <isa-list>]* |
357e1023 | 683 | # [optalias <name> <optname>]* |
a92ffb3e RE |
684 | # [costs <name>] |
685 | # end cpu <name> | |
686 | # | |
687 | # If omitted, cname is formed from transforming the cpuname to convert | |
688 | # non-valid punctuation characters to '_'. | |
689 | # If specified, tune for specifies a CPU target to use for tuning this core. | |
690 | # isa flags are appended to those defined by the architecture. | |
357e1023 RE |
691 | # Each add option must have a distinct feature set and each remove |
692 | # option must similarly have a distinct feature set. Option aliases can be | |
693 | # added with the optalias statement | |
a92ffb3e RE |
694 | |
695 | # V2/V2A Architecture Processors | |
696 | begin cpu arm2 | |
697 | tune flags CO_PROC NO_MODE32 | |
698 | architecture armv2 | |
699 | costs slowmul | |
700 | end cpu arm2 | |
701 | ||
702 | begin cpu arm250 | |
703 | tune flags CO_PROC NO_MODE32 | |
704 | architecture armv2 | |
705 | costs slowmul | |
706 | end cpu arm250 | |
707 | ||
708 | begin cpu arm3 | |
709 | tune flags CO_PROC NO_MODE32 | |
710 | architecture armv2 | |
711 | costs slowmul | |
712 | end cpu arm3 | |
713 | ||
714 | ||
715 | # V3 Architecture Processors | |
716 | begin cpu arm6 | |
717 | tune flags CO_PROC | |
718 | architecture armv3 | |
719 | costs slowmul | |
720 | end cpu arm6 | |
721 | ||
722 | begin cpu arm60 | |
723 | tune flags CO_PROC | |
724 | architecture armv3 | |
725 | costs slowmul | |
726 | end cpu arm60 | |
727 | ||
728 | begin cpu arm600 | |
729 | tune flags CO_PROC WBUF | |
730 | architecture armv3 | |
731 | costs slowmul | |
732 | end cpu arm600 | |
733 | ||
734 | begin cpu arm610 | |
735 | tune flags WBUF | |
736 | architecture armv3 | |
737 | costs slowmul | |
738 | end cpu arm610 | |
739 | ||
740 | begin cpu arm620 | |
741 | tune flags CO_PROC WBUF | |
742 | architecture armv3 | |
743 | costs slowmul | |
744 | end cpu arm620 | |
745 | ||
746 | begin cpu arm7 | |
747 | tune flags CO_PROC | |
748 | architecture armv3 | |
749 | costs slowmul | |
750 | end cpu arm7 | |
751 | ||
752 | begin cpu arm7d | |
753 | tune flags CO_PROC | |
754 | architecture armv3 | |
755 | costs slowmul | |
756 | end cpu arm7d | |
757 | ||
758 | begin cpu arm7di | |
759 | tune flags CO_PROC | |
760 | architecture armv3 | |
761 | costs slowmul | |
762 | end cpu arm7di | |
763 | ||
764 | begin cpu arm70 | |
765 | tune flags CO_PROC | |
766 | architecture armv3 | |
767 | costs slowmul | |
768 | end cpu arm70 | |
769 | ||
770 | begin cpu arm700 | |
771 | tune flags CO_PROC WBUF | |
772 | architecture armv3 | |
773 | costs slowmul | |
774 | end cpu arm700 | |
775 | ||
776 | begin cpu arm700i | |
777 | tune flags CO_PROC WBUF | |
778 | architecture armv3 | |
779 | costs slowmul | |
780 | end cpu arm700i | |
781 | ||
782 | begin cpu arm710 | |
783 | tune flags WBUF | |
784 | architecture armv3 | |
785 | costs slowmul | |
786 | end cpu arm710 | |
787 | ||
788 | begin cpu arm720 | |
789 | tune flags WBUF | |
790 | architecture armv3 | |
791 | costs slowmul | |
792 | end cpu arm720 | |
793 | ||
794 | begin cpu arm710c | |
795 | tune flags WBUF | |
796 | architecture armv3 | |
797 | costs slowmul | |
798 | end cpu arm710c | |
799 | ||
800 | begin cpu arm7100 | |
801 | tune flags WBUF | |
802 | architecture armv3 | |
803 | costs slowmul | |
804 | end cpu arm7100 | |
805 | ||
806 | begin cpu arm7500 | |
807 | tune flags WBUF | |
808 | architecture armv3 | |
809 | costs slowmul | |
810 | end cpu arm7500 | |
811 | ||
812 | # Doesn't have an external co-proc, but does have embedded FPA | |
813 | # (the FPA part is no-longer supported). | |
814 | begin cpu arm7500fe | |
815 | tune flags CO_PROC WBUF | |
816 | architecture armv3 | |
817 | costs slowmul | |
818 | end cpu arm7500fe | |
819 | ||
820 | ||
821 | # V3M Architecture Processors | |
822 | # arm7m doesn't exist on its own, but only with "D", (and "I"), but | |
823 | # those don't alter the code, so arm7m is sometimes used. | |
824 | begin cpu arm7m | |
825 | tune flags CO_PROC | |
826 | architecture armv3m | |
827 | costs fastmul | |
828 | end cpu arm7m | |
829 | ||
830 | begin cpu arm7dm | |
831 | tune flags CO_PROC | |
832 | architecture armv3m | |
833 | costs fastmul | |
834 | end cpu arm7dm | |
835 | ||
836 | begin cpu arm7dmi | |
837 | tune flags CO_PROC | |
838 | architecture armv3m | |
839 | costs fastmul | |
840 | end cpu arm7dmi | |
841 | ||
842 | ||
843 | # V4 Architecture Processors | |
844 | begin cpu arm8 | |
845 | tune flags LDSCHED | |
846 | architecture armv4 | |
847 | costs fastmul | |
848 | end cpu arm8 | |
849 | ||
850 | begin cpu arm810 | |
851 | tune flags LDSCHED | |
852 | architecture armv4 | |
853 | costs fastmul | |
854 | end cpu arm810 | |
855 | ||
856 | begin cpu strongarm | |
857 | tune flags LDSCHED STRONG | |
858 | architecture armv4 | |
859 | costs strongarm | |
860 | end cpu strongarm | |
861 | ||
862 | begin cpu strongarm110 | |
863 | tune flags LDSCHED STRONG | |
864 | architecture armv4 | |
865 | costs strongarm | |
866 | end cpu strongarm110 | |
867 | ||
868 | begin cpu strongarm1100 | |
869 | tune flags LDSCHED STRONG | |
870 | architecture armv4 | |
871 | costs strongarm | |
872 | end cpu strongarm1100 | |
873 | ||
874 | begin cpu strongarm1110 | |
875 | tune flags LDSCHED STRONG | |
876 | architecture armv4 | |
877 | costs strongarm | |
878 | end cpu strongarm1110 | |
879 | ||
880 | begin cpu fa526 | |
881 | tune flags LDSCHED | |
882 | architecture armv4 | |
883 | costs fastmul | |
884 | end cpu fa526 | |
885 | ||
886 | begin cpu fa626 | |
887 | tune flags LDSCHED | |
888 | architecture armv4 | |
889 | costs fastmul | |
890 | end cpu fa626 | |
891 | ||
892 | ||
893 | # V4T Architecture Processors | |
894 | begin cpu arm7tdmi | |
895 | tune flags CO_PROC | |
896 | architecture armv4t | |
897 | costs fastmul | |
898 | end cpu arm7tdmi | |
899 | ||
900 | begin cpu arm7tdmi-s | |
901 | cname arm7tdmis | |
902 | tune flags CO_PROC | |
903 | architecture armv4t | |
904 | costs fastmul | |
905 | end cpu arm7tdmi-s | |
906 | ||
907 | begin cpu arm710t | |
908 | tune flags WBUF | |
909 | architecture armv4t | |
910 | costs fastmul | |
911 | end cpu arm710t | |
912 | ||
913 | begin cpu arm720t | |
914 | tune flags WBUF | |
915 | architecture armv4t | |
916 | costs fastmul | |
917 | end cpu arm720t | |
918 | ||
919 | begin cpu arm740t | |
920 | tune flags WBUF | |
921 | architecture armv4t | |
922 | costs fastmul | |
923 | end cpu arm740t | |
924 | ||
925 | begin cpu arm9 | |
926 | tune flags LDSCHED | |
927 | architecture armv4t | |
928 | costs fastmul | |
929 | end cpu arm9 | |
930 | ||
931 | begin cpu arm9tdmi | |
932 | tune flags LDSCHED | |
933 | architecture armv4t | |
934 | costs fastmul | |
935 | end cpu arm9tdmi | |
936 | ||
937 | begin cpu arm920 | |
938 | tune flags LDSCHED | |
939 | architecture armv4t | |
940 | costs fastmul | |
941 | end cpu arm920 | |
942 | ||
943 | begin cpu arm920t | |
944 | tune flags LDSCHED | |
945 | architecture armv4t | |
946 | costs fastmul | |
947 | end cpu arm920t | |
948 | ||
949 | begin cpu arm922t | |
950 | tune flags LDSCHED | |
951 | architecture armv4t | |
952 | costs fastmul | |
953 | end cpu arm922t | |
954 | ||
955 | begin cpu arm940t | |
956 | tune flags LDSCHED | |
957 | architecture armv4t | |
958 | costs fastmul | |
959 | end cpu arm940t | |
960 | ||
961 | begin cpu ep9312 | |
962 | tune flags LDSCHED | |
963 | architecture armv4t | |
964 | costs fastmul | |
965 | end cpu ep9312 | |
966 | ||
967 | ||
968 | # V5T Architecture Processors | |
e87afe54 | 969 | # These used VFPv1 which isn't supported by GCC |
a92ffb3e RE |
970 | begin cpu arm10tdmi |
971 | tune flags LDSCHED | |
972 | architecture armv5t | |
973 | costs fastmul | |
974 | end cpu arm10tdmi | |
975 | ||
976 | begin cpu arm1020t | |
977 | tune flags LDSCHED | |
978 | architecture armv5t | |
979 | costs fastmul | |
980 | end cpu arm1020t | |
981 | ||
982 | ||
983 | # V5TE Architecture Processors | |
984 | begin cpu arm9e | |
985 | tune flags LDSCHED | |
986 | architecture armv5te | |
e87afe54 RE |
987 | fpu vfpv2 |
988 | option nofp remove ALL_FP | |
a92ffb3e RE |
989 | costs 9e |
990 | end cpu arm9e | |
991 | ||
992 | begin cpu arm946e-s | |
993 | cname arm946es | |
994 | tune flags LDSCHED | |
995 | architecture armv5te | |
e87afe54 RE |
996 | fpu vfpv2 |
997 | option nofp remove ALL_FP | |
a92ffb3e RE |
998 | costs 9e |
999 | end cpu arm946e-s | |
1000 | ||
1001 | begin cpu arm966e-s | |
1002 | cname arm966es | |
1003 | tune flags LDSCHED | |
1004 | architecture armv5te | |
e87afe54 RE |
1005 | fpu vfpv2 |
1006 | option nofp remove ALL_FP | |
a92ffb3e RE |
1007 | costs 9e |
1008 | end cpu arm966e-s | |
1009 | ||
1010 | begin cpu arm968e-s | |
1011 | cname arm968es | |
1012 | tune flags LDSCHED | |
1013 | architecture armv5te | |
e87afe54 RE |
1014 | fpu vfpv2 |
1015 | option nofp remove ALL_FP | |
a92ffb3e RE |
1016 | costs 9e |
1017 | end cpu arm968e-s | |
1018 | ||
1019 | begin cpu arm10e | |
1020 | tune flags LDSCHED | |
1021 | architecture armv5te | |
e87afe54 RE |
1022 | fpu vfpv2 |
1023 | option nofp remove ALL_FP | |
a92ffb3e RE |
1024 | costs fastmul |
1025 | end cpu arm10e | |
1026 | ||
1027 | begin cpu arm1020e | |
1028 | tune flags LDSCHED | |
1029 | architecture armv5te | |
e87afe54 RE |
1030 | fpu vfpv2 |
1031 | option nofp remove ALL_FP | |
a92ffb3e RE |
1032 | costs fastmul |
1033 | end cpu arm1020e | |
1034 | ||
1035 | begin cpu arm1022e | |
1036 | tune flags LDSCHED | |
1037 | architecture armv5te | |
e87afe54 RE |
1038 | fpu vfpv2 |
1039 | option nofp remove ALL_FP | |
a92ffb3e RE |
1040 | costs fastmul |
1041 | end cpu arm1022e | |
1042 | ||
1043 | begin cpu xscale | |
1044 | tune flags LDSCHED XSCALE | |
1045 | architecture armv5te | |
bdb0828f | 1046 | isa xscale |
a92ffb3e RE |
1047 | costs xscale |
1048 | end cpu xscale | |
1049 | ||
1050 | begin cpu iwmmxt | |
1051 | tune flags LDSCHED XSCALE | |
1052 | architecture iwmmxt | |
1053 | costs xscale | |
1054 | end cpu iwmmxt | |
1055 | ||
1056 | begin cpu iwmmxt2 | |
1057 | tune flags LDSCHED XSCALE | |
1058 | architecture iwmmxt2 | |
1059 | costs xscale | |
1060 | end cpu iwmmxt2 | |
1061 | ||
1062 | begin cpu fa606te | |
1063 | tune flags LDSCHED | |
1064 | architecture armv5te | |
1065 | costs 9e | |
1066 | end cpu fa606te | |
1067 | ||
1068 | begin cpu fa626te | |
1069 | tune flags LDSCHED | |
1070 | architecture armv5te | |
1071 | costs 9e | |
1072 | end cpu fa626te | |
1073 | ||
1074 | begin cpu fmp626 | |
1075 | tune flags LDSCHED | |
1076 | architecture armv5te | |
1077 | costs 9e | |
1078 | end cpu fmp626 | |
1079 | ||
1080 | begin cpu fa726te | |
1081 | tune flags LDSCHED | |
1082 | architecture armv5te | |
1083 | costs fa726te | |
1084 | end cpu fa726te | |
1085 | ||
1086 | ||
1087 | # V5TEJ Architecture Processors | |
1088 | begin cpu arm926ej-s | |
1089 | cname arm926ejs | |
1090 | tune flags LDSCHED | |
1091 | architecture armv5tej | |
e87afe54 RE |
1092 | fpu vfpv2 |
1093 | option nofp remove ALL_FP | |
a92ffb3e RE |
1094 | costs 9e |
1095 | end cpu arm926ej-s | |
1096 | ||
1097 | begin cpu arm1026ej-s | |
1098 | cname arm1026ejs | |
1099 | tune flags LDSCHED | |
1100 | architecture armv5tej | |
e87afe54 RE |
1101 | fpu vfpv2 |
1102 | option nofp remove ALL_FP | |
a92ffb3e RE |
1103 | costs 9e |
1104 | end cpu arm1026ej-s | |
1105 | ||
1106 | ||
1107 | # V6 Architecture Processors | |
1108 | begin cpu arm1136j-s | |
1109 | cname arm1136js | |
1110 | tune flags LDSCHED | |
1111 | architecture armv6j | |
1112 | costs 9e | |
1113 | end cpu arm1136j-s | |
1114 | ||
1115 | begin cpu arm1136jf-s | |
1116 | cname arm1136jfs | |
1117 | tune flags LDSCHED | |
1118 | architecture armv6j | |
1119 | fpu vfpv2 | |
1120 | costs 9e | |
1121 | end cpu arm1136jf-s | |
1122 | ||
1123 | begin cpu arm1176jz-s | |
1124 | cname arm1176jzs | |
1125 | tune flags LDSCHED | |
1126 | architecture armv6kz | |
1127 | costs 9e | |
1128 | end cpu arm1176jz-s | |
1129 | ||
1130 | begin cpu arm1176jzf-s | |
1131 | cname arm1176jzfs | |
1132 | tune flags LDSCHED | |
1133 | architecture armv6kz | |
1134 | fpu vfpv2 | |
1135 | costs 9e | |
1136 | end cpu arm1176jzf-s | |
1137 | ||
1138 | begin cpu mpcorenovfp | |
1139 | tune flags LDSCHED | |
1140 | architecture armv6k | |
1141 | costs 9e | |
1142 | end cpu mpcorenovfp | |
1143 | ||
1144 | begin cpu mpcore | |
1145 | tune flags LDSCHED | |
1146 | architecture armv6k | |
1147 | fpu vfpv2 | |
1148 | costs 9e | |
1149 | end cpu mpcore | |
1150 | ||
1151 | begin cpu arm1156t2-s | |
1152 | cname arm1156t2s | |
1153 | tune flags LDSCHED | |
1154 | architecture armv6t2 | |
1155 | costs v6t2 | |
1156 | end cpu arm1156t2-s | |
1157 | ||
1158 | begin cpu arm1156t2f-s | |
1159 | cname arm1156t2fs | |
1160 | tune flags LDSCHED | |
1161 | architecture armv6t2 | |
1162 | fpu vfpv2 | |
1163 | costs v6t2 | |
1164 | end cpu arm1156t2f-s | |
1165 | ||
1166 | ||
1167 | # V6M Architecture Processors | |
1168 | begin cpu cortex-m1 | |
1169 | cname cortexm1 | |
1170 | tune flags LDSCHED | |
1171 | architecture armv6-m | |
1172 | costs v6m | |
1173 | end cpu cortex-m1 | |
1174 | ||
1175 | begin cpu cortex-m0 | |
1176 | cname cortexm0 | |
1177 | tune flags LDSCHED | |
1178 | architecture armv6-m | |
1179 | costs v6m | |
1180 | end cpu cortex-m0 | |
1181 | ||
1182 | begin cpu cortex-m0plus | |
1183 | cname cortexm0plus | |
1184 | tune flags LDSCHED | |
1185 | architecture armv6-m | |
1186 | costs v6m | |
1187 | end cpu cortex-m0plus | |
1188 | ||
1189 | ||
1190 | # V6M Architecture Processors for small-multiply implementations. | |
1191 | begin cpu cortex-m1.small-multiply | |
1192 | cname cortexm1smallmultiply | |
1193 | tune for cortex-m1 | |
1194 | tune flags LDSCHED SMALLMUL | |
1195 | architecture armv6-m | |
1196 | costs v6m | |
1197 | end cpu cortex-m1.small-multiply | |
1198 | ||
1199 | begin cpu cortex-m0.small-multiply | |
1200 | cname cortexm0smallmultiply | |
1201 | tune for cortex-m0 | |
1202 | tune flags LDSCHED SMALLMUL | |
1203 | architecture armv6-m | |
1204 | costs v6m | |
1205 | end cpu cortex-m0.small-multiply | |
1206 | ||
1207 | begin cpu cortex-m0plus.small-multiply | |
1208 | cname cortexm0plussmallmultiply | |
48c0758a | 1209 | tune for cortex-m0plus |
a92ffb3e RE |
1210 | tune flags LDSCHED SMALLMUL |
1211 | architecture armv6-m | |
1212 | costs v6m | |
1213 | end cpu cortex-m0plus.small-multiply | |
1214 | ||
1215 | ||
1216 | # V7 Architecture Processors | |
1217 | begin cpu generic-armv7-a | |
1218 | cname genericv7a | |
1219 | tune flags LDSCHED | |
1220 | architecture armv7-a | |
e87afe54 | 1221 | fpu vfpv3-d16 |
e87afe54 | 1222 | option vfpv3-d16 add VFPv3 FP_DBL |
357e1023 | 1223 | option vfpv3 add VFPv3 FP_D32 |
bdb0828f RE |
1224 | option vfpv3-d16-fp16 add VFPv3 FP_DBL fp16conv |
1225 | option vfpv3-fp16 add VFPv3 FP_D32 fp16conv | |
e87afe54 | 1226 | option vfpv4-d16 add VFPv4 FP_DBL |
357e1023 RE |
1227 | option vfpv4 add VFPv4 FP_D32 |
1228 | option simd add VFPv3 NEON | |
1229 | optalias neon simd | |
1230 | optalias neon-vfpv3 simd | |
bdb0828f | 1231 | option neon-fp16 add VFPv3 NEON fp16conv |
e87afe54 | 1232 | option neon-vfpv4 add VFPv4 NEON |
e87afe54 | 1233 | option nosimd remove ALL_SIMD |
357e1023 | 1234 | option nofp remove ALL_FP |
a92ffb3e RE |
1235 | costs cortex |
1236 | end cpu generic-armv7-a | |
1237 | ||
1238 | begin cpu cortex-a5 | |
1239 | cname cortexa5 | |
1240 | tune flags LDSCHED | |
1241 | architecture armv7-a | |
e87afe54 RE |
1242 | fpu neon-fp16 |
1243 | option nosimd remove ALL_SIMD | |
1244 | option nofp remove ALL_FP | |
a92ffb3e RE |
1245 | costs cortex_a5 |
1246 | end cpu cortex-a5 | |
1247 | ||
1248 | begin cpu cortex-a7 | |
1249 | cname cortexa7 | |
1250 | tune flags LDSCHED | |
1251 | architecture armv7ve | |
e87afe54 RE |
1252 | fpu neon-vfpv4 |
1253 | option nosimd remove ALL_SIMD | |
1254 | option nofp remove ALL_FP | |
a92ffb3e RE |
1255 | costs cortex_a7 |
1256 | end cpu cortex-a7 | |
1257 | ||
1258 | begin cpu cortex-a8 | |
1259 | cname cortexa8 | |
1260 | tune flags LDSCHED | |
1261 | architecture armv7-a | |
250e088b | 1262 | fpu neon-vfpv3 |
e87afe54 | 1263 | option nofp remove ALL_FP |
a92ffb3e RE |
1264 | costs cortex_a8 |
1265 | end cpu cortex-a8 | |
1266 | ||
1267 | begin cpu cortex-a9 | |
1268 | cname cortexa9 | |
1269 | tune flags LDSCHED | |
1270 | architecture armv7-a | |
e87afe54 | 1271 | fpu neon-fp16 |
e87afe54 | 1272 | option nosimd remove ALL_SIMD |
357e1023 | 1273 | option nofp remove ALL_FP |
a92ffb3e RE |
1274 | costs cortex_a9 |
1275 | end cpu cortex-a9 | |
1276 | ||
1277 | begin cpu cortex-a12 | |
1278 | cname cortexa12 | |
1279 | tune for cortex-a17 | |
1280 | tune flags LDSCHED | |
1281 | architecture armv7ve | |
e87afe54 RE |
1282 | fpu neon-vfpv4 |
1283 | option nofp remove ALL_FP | |
a92ffb3e RE |
1284 | costs cortex_a12 |
1285 | end cpu cortex-a12 | |
1286 | ||
1287 | begin cpu cortex-a15 | |
1288 | cname cortexa15 | |
1289 | tune flags LDSCHED | |
1290 | architecture armv7ve | |
e87afe54 RE |
1291 | fpu neon-vfpv4 |
1292 | option nofp remove ALL_FP | |
a92ffb3e RE |
1293 | costs cortex_a15 |
1294 | end cpu cortex-a15 | |
1295 | ||
1296 | begin cpu cortex-a17 | |
1297 | cname cortexa17 | |
1298 | tune flags LDSCHED | |
1299 | architecture armv7ve | |
e87afe54 RE |
1300 | fpu neon-vfpv4 |
1301 | option nofp remove ALL_FP | |
a92ffb3e RE |
1302 | costs cortex_a12 |
1303 | end cpu cortex-a17 | |
1304 | ||
1305 | begin cpu cortex-r4 | |
1306 | cname cortexr4 | |
1307 | tune flags LDSCHED | |
1308 | architecture armv7-r | |
1309 | costs cortex | |
1310 | end cpu cortex-r4 | |
1311 | ||
1312 | begin cpu cortex-r4f | |
1313 | cname cortexr4f | |
1314 | tune flags LDSCHED | |
1315 | architecture armv7-r | |
e87afe54 | 1316 | fpu vfpv3-d16 |
a92ffb3e RE |
1317 | costs cortex |
1318 | end cpu cortex-r4f | |
1319 | ||
1320 | begin cpu cortex-r5 | |
1321 | cname cortexr5 | |
1322 | tune flags LDSCHED | |
e87afe54 RE |
1323 | architecture armv7-r+idiv |
1324 | fpu vfpv3-d16 | |
1325 | option nofp.dp remove FP_DBL | |
1326 | option nofp remove ALL_FP | |
a92ffb3e RE |
1327 | costs cortex |
1328 | end cpu cortex-r5 | |
1329 | ||
1330 | begin cpu cortex-r7 | |
1331 | cname cortexr7 | |
1332 | tune flags LDSCHED | |
e87afe54 RE |
1333 | architecture armv7-r+idiv |
1334 | fpu vfpv3-d16 | |
1335 | option nofp remove ALL_FP | |
a92ffb3e RE |
1336 | costs cortex |
1337 | end cpu cortex-r7 | |
1338 | ||
1339 | begin cpu cortex-r8 | |
1340 | cname cortexr8 | |
1341 | tune for cortex-r7 | |
1342 | tune flags LDSCHED | |
e87afe54 RE |
1343 | architecture armv7-r+idiv |
1344 | fpu vfpv3-d16 | |
1345 | option nofp remove ALL_FP | |
a92ffb3e RE |
1346 | costs cortex |
1347 | end cpu cortex-r8 | |
1348 | ||
1349 | begin cpu cortex-m7 | |
1350 | cname cortexm7 | |
1351 | tune flags LDSCHED | |
1352 | architecture armv7e-m | |
1353 | isa quirk_no_volatile_ce | |
e87afe54 RE |
1354 | fpu fpv5-d16 |
1355 | option nofp.dp remove FP_DBL | |
1356 | option nofp remove ALL_FP | |
a92ffb3e RE |
1357 | costs cortex_m7 |
1358 | end cpu cortex-m7 | |
1359 | ||
1360 | begin cpu cortex-m4 | |
1361 | cname cortexm4 | |
1362 | tune flags LDSCHED | |
1363 | architecture armv7e-m | |
e87afe54 RE |
1364 | fpu fpv4-sp-d16 |
1365 | option nofp remove ALL_FP | |
a92ffb3e RE |
1366 | costs v7m |
1367 | end cpu cortex-m4 | |
1368 | ||
1369 | begin cpu cortex-m3 | |
1370 | cname cortexm3 | |
1371 | tune flags LDSCHED | |
1372 | architecture armv7-m | |
1373 | isa quirk_cm3_ldrd | |
1374 | costs v7m | |
1375 | end cpu cortex-m3 | |
1376 | ||
1377 | begin cpu marvell-pj4 | |
1378 | tune flags LDSCHED | |
1379 | architecture armv7-a | |
1380 | costs marvell_pj4 | |
1381 | end cpu marvell-pj4 | |
1382 | ||
1383 | ||
1384 | # V7 big.LITTLE implementations | |
1385 | begin cpu cortex-a15.cortex-a7 | |
1386 | cname cortexa15cortexa7 | |
1387 | tune for cortex-a7 | |
1388 | tune flags LDSCHED | |
1389 | architecture armv7ve | |
e87afe54 RE |
1390 | fpu neon-vfpv4 |
1391 | option nofp remove ALL_FP | |
a92ffb3e RE |
1392 | costs cortex_a15 |
1393 | end cpu cortex-a15.cortex-a7 | |
1394 | ||
1395 | begin cpu cortex-a17.cortex-a7 | |
1396 | cname cortexa17cortexa7 | |
1397 | tune for cortex-a7 | |
1398 | tune flags LDSCHED | |
1399 | architecture armv7ve | |
e87afe54 RE |
1400 | fpu neon-vfpv4 |
1401 | option nofp remove ALL_FP | |
a92ffb3e RE |
1402 | costs cortex_a12 |
1403 | end cpu cortex-a17.cortex-a7 | |
1404 | ||
1405 | ||
1406 | # V8 A-profile Architecture Processors | |
1407 | begin cpu cortex-a32 | |
1408 | cname cortexa32 | |
1409 | tune for cortex-a53 | |
1410 | tune flags LDSCHED | |
1411 | architecture armv8-a+crc | |
e87afe54 RE |
1412 | fpu neon-fp-armv8 |
1413 | option crypto add FP_ARMv8 CRYPTO | |
1414 | option nofp remove ALL_FP | |
a92ffb3e RE |
1415 | costs cortex_a35 |
1416 | end cpu cortex-a32 | |
1417 | ||
1418 | begin cpu cortex-a35 | |
1419 | cname cortexa35 | |
1420 | tune for cortex-a53 | |
1421 | tune flags LDSCHED | |
1422 | architecture armv8-a+crc | |
e87afe54 RE |
1423 | fpu neon-fp-armv8 |
1424 | option crypto add FP_ARMv8 CRYPTO | |
1425 | option nofp remove ALL_FP | |
a92ffb3e RE |
1426 | costs cortex_a35 |
1427 | end cpu cortex-a35 | |
1428 | ||
1429 | begin cpu cortex-a53 | |
1430 | cname cortexa53 | |
1431 | tune flags LDSCHED | |
1432 | architecture armv8-a+crc | |
e87afe54 RE |
1433 | fpu neon-fp-armv8 |
1434 | option crypto add FP_ARMv8 CRYPTO | |
1435 | option nofp remove ALL_FP | |
a92ffb3e RE |
1436 | costs cortex_a53 |
1437 | end cpu cortex-a53 | |
1438 | ||
1439 | begin cpu cortex-a57 | |
1440 | cname cortexa57 | |
1441 | tune flags LDSCHED | |
1442 | architecture armv8-a+crc | |
e87afe54 RE |
1443 | fpu neon-fp-armv8 |
1444 | option crypto add FP_ARMv8 CRYPTO | |
a92ffb3e RE |
1445 | costs cortex_a57 |
1446 | end cpu cortex-a57 | |
1447 | ||
1448 | begin cpu cortex-a72 | |
1449 | cname cortexa72 | |
1450 | tune for cortex-a57 | |
1451 | tune flags LDSCHED | |
1452 | architecture armv8-a+crc | |
e87afe54 RE |
1453 | fpu neon-fp-armv8 |
1454 | option crypto add FP_ARMv8 CRYPTO | |
a92ffb3e RE |
1455 | costs cortex_a57 |
1456 | end cpu cortex-a72 | |
1457 | ||
1458 | begin cpu cortex-a73 | |
1459 | cname cortexa73 | |
1460 | tune for cortex-a57 | |
1461 | tune flags LDSCHED | |
1462 | architecture armv8-a+crc | |
e87afe54 RE |
1463 | fpu neon-fp-armv8 |
1464 | option crypto add FP_ARMv8 CRYPTO | |
a92ffb3e RE |
1465 | costs cortex_a73 |
1466 | end cpu cortex-a73 | |
1467 | ||
1468 | begin cpu exynos-m1 | |
1469 | cname exynosm1 | |
1470 | tune flags LDSCHED | |
1471 | architecture armv8-a+crc | |
e87afe54 RE |
1472 | fpu neon-fp-armv8 |
1473 | option crypto add FP_ARMv8 CRYPTO | |
a92ffb3e RE |
1474 | costs exynosm1 |
1475 | end cpu exynos-m1 | |
1476 | ||
a92ffb3e RE |
1477 | begin cpu xgene1 |
1478 | tune flags LDSCHED | |
1479 | architecture armv8-a | |
e87afe54 RE |
1480 | fpu neon-fp-armv8 |
1481 | option crypto add FP_ARMv8 CRYPTO | |
a92ffb3e RE |
1482 | costs xgene1 |
1483 | end cpu xgene1 | |
1484 | ||
a92ffb3e RE |
1485 | # V8 A-profile big.LITTLE implementations |
1486 | begin cpu cortex-a57.cortex-a53 | |
1487 | cname cortexa57cortexa53 | |
1488 | tune for cortex-a53 | |
1489 | tune flags LDSCHED | |
1490 | architecture armv8-a+crc | |
e87afe54 RE |
1491 | fpu neon-fp-armv8 |
1492 | option crypto add FP_ARMv8 CRYPTO | |
a92ffb3e RE |
1493 | costs cortex_a57 |
1494 | end cpu cortex-a57.cortex-a53 | |
1495 | ||
1496 | begin cpu cortex-a72.cortex-a53 | |
1497 | cname cortexa72cortexa53 | |
1498 | tune for cortex-a53 | |
1499 | tune flags LDSCHED | |
1500 | architecture armv8-a+crc | |
e87afe54 RE |
1501 | fpu neon-fp-armv8 |
1502 | option crypto add FP_ARMv8 CRYPTO | |
a92ffb3e RE |
1503 | costs cortex_a57 |
1504 | end cpu cortex-a72.cortex-a53 | |
1505 | ||
1506 | begin cpu cortex-a73.cortex-a35 | |
1507 | cname cortexa73cortexa35 | |
1508 | tune for cortex-a53 | |
1509 | tune flags LDSCHED | |
1510 | architecture armv8-a+crc | |
e87afe54 RE |
1511 | fpu neon-fp-armv8 |
1512 | option crypto add FP_ARMv8 CRYPTO | |
a92ffb3e RE |
1513 | costs cortex_a73 |
1514 | end cpu cortex-a73.cortex-a35 | |
1515 | ||
1516 | begin cpu cortex-a73.cortex-a53 | |
1517 | cname cortexa73cortexa53 | |
1518 | tune for cortex-a53 | |
1519 | tune flags LDSCHED | |
1520 | architecture armv8-a+crc | |
e87afe54 RE |
1521 | fpu neon-fp-armv8 |
1522 | option crypto add FP_ARMv8 CRYPTO | |
a92ffb3e RE |
1523 | costs cortex_a73 |
1524 | end cpu cortex-a73.cortex-a53 | |
1525 | ||
1526 | ||
1d79dcb8 JG |
1527 | # ARMv8.2 A-profile Architecture Processors |
1528 | begin cpu cortex-a55 | |
1529 | cname cortexa55 | |
1530 | tune for cortex-a53 | |
1531 | tune flags LDSCHED | |
ba09dd21 | 1532 | architecture armv8.2-a+fp16+dotprod |
1d79dcb8 JG |
1533 | fpu neon-fp-armv8 |
1534 | option crypto add FP_ARMv8 CRYPTO | |
1535 | option nofp remove ALL_FP | |
1536 | costs cortex_a53 | |
1537 | end cpu cortex-a55 | |
1538 | ||
1539 | begin cpu cortex-a75 | |
1540 | cname cortexa75 | |
1541 | tune for cortex-a57 | |
1542 | tune flags LDSCHED | |
ba09dd21 | 1543 | architecture armv8.2-a+fp16+dotprod |
1d79dcb8 JG |
1544 | fpu neon-fp-armv8 |
1545 | option crypto add FP_ARMv8 CRYPTO | |
1546 | costs cortex_a73 | |
1547 | end cpu cortex-a75 | |
1548 | ||
1549 | ||
1550 | # ARMv8.2 A-profile ARM DynamIQ big.LITTLE implementations | |
1551 | begin cpu cortex-a75.cortex-a55 | |
1552 | cname cortexa75cortexa55 | |
1553 | tune for cortex-a53 | |
1554 | tune flags LDSCHED | |
ba09dd21 | 1555 | architecture armv8.2-a+fp16+dotprod |
1d79dcb8 JG |
1556 | fpu neon-fp-armv8 |
1557 | option crypto add FP_ARMv8 CRYPTO | |
1558 | costs cortex_a73 | |
1559 | end cpu cortex-a75.cortex-a55 | |
1560 | ||
a92ffb3e RE |
1561 | # V8 M-profile implementations. |
1562 | begin cpu cortex-m23 | |
1563 | cname cortexm23 | |
1564 | tune flags LDSCHED | |
1565 | architecture armv8-m.base | |
1566 | costs v6m | |
1567 | end cpu cortex-m23 | |
1568 | ||
1569 | begin cpu cortex-m33 | |
1570 | cname cortexm33 | |
1571 | tune flags LDSCHED | |
1572 | architecture armv8-m.main+dsp | |
e87afe54 RE |
1573 | fpu fpv5-sp-d16 |
1574 | option nofp remove ALL_FP | |
525f700d | 1575 | option nodsp remove armv7em |
a92ffb3e RE |
1576 | costs v7m |
1577 | end cpu cortex-m33 | |
1578 | ||
2376caf9 TP |
1579 | # V8 R-profile implementations. |
1580 | begin cpu cortex-r52 | |
1581 | cname cortexr52 | |
1582 | tune flags LDSCHED | |
1583 | architecture armv8-r+crc+simd | |
1584 | fpu neon-fp-armv8 | |
1585 | option nofp.dp remove FP_DBL ALL_SIMD | |
1586 | costs cortex | |
1587 | end cpu cortex-r52 | |
1588 | ||
a92ffb3e RE |
1589 | # FPU entries |
1590 | # format: | |
1591 | # begin fpu <name> | |
1592 | # isa <isa-flags-list> | |
1593 | # end fpu <name> | |
1594 | ||
1595 | begin fpu vfp | |
1596 | isa VFPv2 FP_DBL | |
1597 | end fpu vfp | |
1598 | ||
1599 | begin fpu vfpv2 | |
1600 | isa VFPv2 FP_DBL | |
1601 | end fpu vfpv2 | |
1602 | ||
1603 | begin fpu vfpv3 | |
1604 | isa VFPv3 FP_D32 | |
1605 | end fpu vfpv3 | |
1606 | ||
1607 | begin fpu vfpv3-fp16 | |
bdb0828f | 1608 | isa VFPv3 FP_D32 fp16conv |
a92ffb3e RE |
1609 | end fpu vfpv3-fp16 |
1610 | ||
1611 | begin fpu vfpv3-d16 | |
1612 | isa VFPv3 FP_DBL | |
1613 | end fpu vfpv3-d16 | |
1614 | ||
1615 | begin fpu vfpv3-d16-fp16 | |
bdb0828f | 1616 | isa VFPv3 FP_DBL fp16conv |
a92ffb3e RE |
1617 | end fpu vfpv3-d16-fp16 |
1618 | ||
1619 | begin fpu vfpv3xd | |
1620 | isa VFPv3 | |
1621 | end fpu vfpv3xd | |
1622 | ||
1623 | begin fpu vfpv3xd-fp16 | |
bdb0828f | 1624 | isa VFPv3 fp16conv |
a92ffb3e RE |
1625 | end fpu vfpv3xd-fp16 |
1626 | ||
1627 | begin fpu neon | |
1628 | isa VFPv3 NEON | |
1629 | end fpu neon | |
1630 | ||
1631 | begin fpu neon-vfpv3 | |
1632 | isa VFPv3 NEON | |
1633 | end fpu neon-vfpv3 | |
1634 | ||
1635 | begin fpu neon-fp16 | |
bdb0828f | 1636 | isa VFPv3 NEON fp16conv |
a92ffb3e RE |
1637 | end fpu neon-fp16 |
1638 | ||
1639 | begin fpu vfpv4 | |
1640 | isa VFPv4 FP_D32 | |
1641 | end fpu vfpv4 | |
1642 | ||
1643 | begin fpu neon-vfpv4 | |
1644 | isa VFPv4 NEON | |
1645 | end fpu neon-vfpv4 | |
1646 | ||
1647 | begin fpu vfpv4-d16 | |
1648 | isa VFPv4 FP_DBL | |
1649 | end fpu vfpv4-d16 | |
1650 | ||
1651 | begin fpu fpv4-sp-d16 | |
1652 | isa VFPv4 | |
1653 | end fpu fpv4-sp-d16 | |
1654 | ||
1655 | begin fpu fpv5-sp-d16 | |
1656 | isa FPv5 | |
1657 | end fpu fpv5-sp-d16 | |
1658 | ||
1659 | begin fpu fpv5-d16 | |
1660 | isa FPv5 FP_DBL | |
1661 | end fpu fpv5-d16 | |
1662 | ||
1663 | begin fpu fp-armv8 | |
c8d61ab8 | 1664 | isa FP_ARMv8 |
a92ffb3e RE |
1665 | end fpu fp-armv8 |
1666 | ||
1667 | begin fpu neon-fp-armv8 | |
1668 | isa FP_ARMv8 NEON | |
1669 | end fpu neon-fp-armv8 | |
1670 | ||
1671 | begin fpu crypto-neon-fp-armv8 | |
1672 | isa FP_ARMv8 CRYPTO | |
1673 | end fpu crypto-neon-fp-armv8 | |
1674 | ||
1675 | # Compatibility aliases. | |
1676 | begin fpu vfp3 | |
1677 | isa VFPv3 FP_D32 | |
1678 | end fpu vfp3 |