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