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
52define feature armv3m
53
54# 26-bit mode support
55define feature mode26
56
57# 32-bit mode support
58define feature mode32
59
60# Architecture rel 4
61define feature armv4
62
63# Architecture rel 5
64define feature armv5
65
66# Thumb aware.
67define feature thumb
68
69# Architecture rel 5e.
70define feature armv5e
71
72# XScale.
73define feature xscale
74
75# Architecture rel 6.
76define feature armv6
77
78# Architecture rel 6k.
79define feature armv6k
80
81# Thumb-2.
82define feature thumb2
83
84# Instructions not present in 'M' profile.
85define feature notm
86
87# Architecture uses be8 mode in big-endian.
88define feature be8
89
90# Thumb division instructions.
91define feature tdiv
92
93# Architecture rel 7e-m.
94define feature armv7em
95
96# Architecture rel 7.
97define feature armv7
98
99# MP extension to ArmV7-A
100define feature mp
101
102# SEC extension to ArmV7-A
103define feature sec
104
105# ARM division instructions.
106define feature adiv
107
108# Architecture rel 8.
109define feature armv8
110
111# ARMv8 CRC32 instructions.
112define feature crc32
113
114# XScale v2 (Wireless MMX).
115define feature iwmmxt
116
117# XScale Wireless MMX2.
118define feature iwmmxt2
119
120# Architecture rel 8.1.
121define feature armv8_1
122
123# Architecture rel 8.2.
124define feature armv8_2
125
126# Architecture rel 8.3.
127define feature armv8_3
128
129# Architecture rel 8.4.
130define feature armv8_4
131
132# M-Profile security extensions.
133define feature cmse
134
135# Floating point and Neon extensions.
136# VFPv1 is not supported in GCC.
137
138# Vector floating point v2.
139define feature vfpv2
140
141# Vector floating point v3.
142define feature vfpv3
143
144# Vector floating point v4.
145define feature vfpv4
146
147# Floating point v5.
148define feature fpv5
149
150# ARMv7-A LPAE.
151define feature lpae
152
153# Advanced SIMD instructions.
154define feature neon
155
156# Conversions to/from fp16 (VFPv3 extension).
157define feature fp16conv
158
159# Double precision operations supported.
160define feature fp_dbl
161
162# 32 Double precision registers.
163define feature fp_d32
164
165# Crypto extension to ARMv8.
166define feature crypto
167
168# FP16 data processing (half-precision float).
169define feature fp16
170
171# Dot Product instructions extension to ARMv8.2-a.
172define feature dotprod
173
174# Half-precision floating-point instructions in ARMv8.4-A.
175define 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.
181define feature quirk_no_volatile_ce
182
183# Previously mis-identified by GCC.
184define feature quirk_armv6kz
185
186# Cortex-M3 LDRD quirk.
187define feature quirk_cm3_ldrd
188
189# (Very) slow multiply operations.  Should probably be a tuning bit.
190define 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.
208define 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.
213define fgroup ALL_SIMD_INTERNAL	fp_d32 neon ALL_CRYPTO
214define 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.
218define 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.
222define fgroup ALL_FP	fp16 ALL_FPU_INTERNAL
223
224define fgroup ARMv2       notm
225define fgroup ARMv3       ARMv2 mode32
226define fgroup ARMv3m      ARMv3 armv3m
227define fgroup ARMv4       ARMv3m armv4
228define fgroup ARMv4t      ARMv4 thumb
229define fgroup ARMv5       ARMv4 armv5
230define fgroup ARMv5t      ARMv5 thumb
231define fgroup ARMv5e      ARMv5 armv5e
232define fgroup ARMv5te     ARMv5e thumb
233define fgroup ARMv5tej    ARMv5te
234define fgroup ARMv6       ARMv5te armv6 be8
235define fgroup ARMv6j      ARMv6
236define fgroup ARMv6k      ARMv6 armv6k
237define fgroup ARMv6z      ARMv6
238define fgroup ARMv6kz     ARMv6k quirk_armv6kz
239define fgroup ARMv6zk     ARMv6k
240define fgroup ARMv6t2     ARMv6 thumb2
241# This is suspect.  ARMv6-m doesn't really pull in any useful features
242# from ARMv5* or ARMv6.
243define 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.  */
246define fgroup ARMv7       ARMv6m thumb2 armv7
247
248define fgroup ARMv7a      ARMv7 notm armv6k
249define fgroup ARMv7ve     ARMv7a adiv tdiv lpae mp sec
250define fgroup ARMv7r      ARMv7a tdiv
251define fgroup ARMv7m      ARMv7 tdiv
252define fgroup ARMv7em     ARMv7m armv7em
253define fgroup ARMv8a      ARMv7ve armv8
254define fgroup ARMv8_1a    ARMv8a crc32 armv8_1
255define fgroup ARMv8_2a    ARMv8_1a armv8_2
256define fgroup ARMv8_3a    ARMv8_2a armv8_3
257define fgroup ARMv8_4a    ARMv8_3a armv8_4
258define fgroup ARMv8m_base ARMv6m armv8 cmse tdiv
259define fgroup ARMv8m_main ARMv7m armv8 cmse
260define fgroup ARMv8r      ARMv8a
261
262# Useful combinations.
263define fgroup VFPv2	vfpv2
264define fgroup VFPv3	VFPv2 vfpv3
265define fgroup VFPv4	VFPv3 vfpv4 fp16conv
266define fgroup FPv5	VFPv4 fpv5
267
268define fgroup FP_DBL	fp_dbl
269define fgroup FP_D32	FP_DBL fp_d32
270define fgroup FP_ARMv8	FPv5 FP_D32
271define fgroup NEON	FP_D32 neon
272define fgroup CRYPTO	NEON crypto
273define 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.
279define 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
292begin arch armv2
293 tune for arm2
294 tune flags CO_PROC NO_MODE32
295 base 2
296 isa ARMv2 mode26
297end arch armv2
298
299begin arch armv2a
300 tune for arm2
301 tune flags CO_PROC NO_MODE32
302 base 2
303 isa ARMv2 mode26
304end arch armv2a
305
306begin arch armv3
307 tune for arm6
308 tune flags CO_PROC
309 base 3
310 isa ARMv3 mode26
311end arch armv3
312
313begin arch armv3m
314 tune for arm7m
315 tune flags CO_PROC
316 base 3M
317 isa ARMv3m mode26
318end arch armv3m
319
320begin arch armv4
321 tune for arm7tdmi
322 tune flags CO_PROC
323 base 4
324 isa ARMv4 mode26
325end 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.
329begin arch armv4t
330 tune for arm7tdmi
331 tune flags CO_PROC
332 base 4T
333 isa ARMv4t
334end arch armv4t
335
336begin arch armv5
337 tune for arm10tdmi
338 tune flags CO_PROC
339 base 5
340 isa ARMv5
341end arch armv5
342
343begin arch armv5t
344 tune for arm10tdmi
345 tune flags CO_PROC
346 base 5T
347 isa ARMv5t
348end arch armv5t
349
350begin 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
358end arch armv5e
359
360begin 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
368end arch armv5te
369
370begin 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
378end arch armv5tej
379
380begin 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
388end arch armv6
389
390begin 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
398end arch armv6j
399
400begin 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
408end arch armv6k
409
410begin 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
418end arch armv6z
419
420begin 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
428end arch armv6kz
429
430begin 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
438end arch armv6zk
439
440begin 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
448end arch armv6t2
449
450begin arch armv6-m
451 tune for cortex-m1
452 base 6M
453 profile M
454 isa ARMv6m
455end 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.
459begin arch armv6s-m
460 tune for cortex-m1
461 base 6M
462 profile M
463 isa ARMv6m
464end arch armv6s-m
465
466begin 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
475end arch armv7
476
477begin 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
500end arch armv7-a
501
502begin 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
523end arch armv7ve
524
525begin 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
541end arch armv7-r
542
543begin 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.
551end arch armv7-m
552
553begin 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
566end arch armv7e-m
567
568begin 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
579end arch armv8-a
580
581begin 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
591end arch armv8.1-a
592
593begin 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
606end arch armv8.2-a
607
608begin 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
621end arch armv8.3-a
622
623begin 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
634end arch armv8.4-a
635
636begin arch armv8-m.base
637 tune for cortex-m23
638 base 8M_BASE
639 profile M
640 isa ARMv8m_base
641end arch armv8-m.base
642
643begin 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
655end arch armv8-m.main
656
657begin 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
671end arch armv8-r
672
673begin arch iwmmxt
674 tune for iwmmxt
675 tune flags LDSCHED STRONG XSCALE
676 base 5TE
677 isa ARMv5te xscale iwmmxt
678end arch iwmmxt
679
680begin arch iwmmxt2
681 tune for iwmmxt2
682 tune flags LDSCHED STRONG XSCALE
683 base 5TE
684 isa ARMv5te xscale iwmmxt iwmmxt2
685end 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
710begin cpu arm2
711 tune flags CO_PROC NO_MODE32
712 architecture armv2
713 costs slowmul
714end cpu arm2
715
716begin cpu arm250
717 tune flags CO_PROC NO_MODE32
718 architecture armv2
719 costs slowmul
720end cpu arm250
721
722begin cpu arm3
723 tune flags CO_PROC NO_MODE32
724 architecture armv2
725 costs slowmul
726end cpu arm3
727
728
729# V3 Architecture Processors
730begin cpu arm6
731 tune flags CO_PROC
732 architecture armv3
733 costs slowmul
734end cpu arm6
735
736begin cpu arm60
737 tune flags CO_PROC
738 architecture armv3
739 costs slowmul
740end cpu arm60
741
742begin cpu arm600
743 tune flags CO_PROC WBUF
744 architecture armv3
745 costs slowmul
746end cpu arm600
747
748begin cpu arm610
749 tune flags WBUF
750 architecture armv3
751 costs slowmul
752end cpu arm610
753
754begin cpu arm620
755 tune flags CO_PROC WBUF
756 architecture armv3
757 costs slowmul
758end cpu arm620
759
760begin cpu arm7
761 tune flags CO_PROC
762 architecture armv3
763 costs slowmul
764end cpu arm7
765
766begin cpu arm7d
767 tune flags CO_PROC
768 architecture armv3
769 costs slowmul
770end cpu arm7d
771
772begin cpu arm7di
773 tune flags CO_PROC
774 architecture armv3
775 costs slowmul
776end cpu arm7di
777
778begin cpu arm70
779 tune flags CO_PROC
780 architecture armv3
781 costs slowmul
782end cpu arm70
783
784begin cpu arm700
785 tune flags CO_PROC WBUF
786 architecture armv3
787 costs slowmul
788end cpu arm700
789
790begin cpu arm700i
791 tune flags CO_PROC WBUF
792 architecture armv3
793 costs slowmul
794end cpu arm700i
795
796begin cpu arm710
797 tune flags WBUF
798 architecture armv3
799 costs slowmul
800end cpu arm710
801
802begin cpu arm720
803 tune flags WBUF
804 architecture armv3
805 costs slowmul
806end cpu arm720
807
808begin cpu arm710c
809 tune flags WBUF
810 architecture armv3
811 costs slowmul
812end cpu arm710c
813
814begin cpu arm7100
815 tune flags WBUF
816 architecture armv3
817 costs slowmul
818end cpu arm7100
819
820begin cpu arm7500
821 tune flags WBUF
822 architecture armv3
823 costs slowmul
824end cpu arm7500
825
826# Doesn't have an external co-proc, but does have embedded FPA
827# (the FPA part is no-longer supported).
828begin cpu arm7500fe
829 tune flags CO_PROC WBUF
830 architecture armv3
831 costs slowmul
832end 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.
838begin cpu arm7m
839 tune flags CO_PROC
840 architecture armv3m
841 costs fastmul
842end cpu arm7m
843
844begin cpu arm7dm
845 tune flags CO_PROC
846 architecture armv3m
847 costs fastmul
848end cpu arm7dm
849
850begin cpu arm7dmi
851 tune flags CO_PROC
852 architecture armv3m
853 costs fastmul
854end cpu arm7dmi
855
856
857# V4 Architecture Processors
858begin cpu arm8
859 tune flags LDSCHED
860 architecture armv4
861 costs fastmul
862end cpu arm8
863
864begin cpu arm810
865 tune flags LDSCHED
866 architecture armv4
867 costs fastmul
868end cpu arm810
869
870begin cpu strongarm
871 tune flags LDSCHED STRONG
872 architecture armv4
873 costs strongarm
874end cpu strongarm
875
876begin cpu strongarm110
877 tune flags LDSCHED STRONG
878 architecture armv4
879 costs strongarm
880end cpu strongarm110
881
882begin cpu strongarm1100
883 tune flags LDSCHED STRONG
884 architecture armv4
885 costs strongarm
886end cpu strongarm1100
887
888begin cpu strongarm1110
889 tune flags LDSCHED STRONG
890 architecture armv4
891 costs strongarm
892end cpu strongarm1110
893
894begin cpu fa526
895 tune flags LDSCHED
896 architecture armv4
897 costs fastmul
898end cpu fa526
899
900begin cpu fa626
901 tune flags LDSCHED
902 architecture armv4
903 costs fastmul
904end cpu fa626
905
906
907# V4T Architecture Processors
908begin cpu arm7tdmi
909 tune flags CO_PROC
910 architecture armv4t
911 costs fastmul
912end cpu arm7tdmi
913
914begin cpu arm7tdmi-s
915 cname arm7tdmis
916 tune flags CO_PROC
917 architecture armv4t
918 costs fastmul
919end cpu arm7tdmi-s
920
921begin cpu arm710t
922 tune flags WBUF
923 architecture armv4t
924 costs fastmul
925end cpu arm710t
926
927begin cpu arm720t
928 tune flags WBUF
929 architecture armv4t
930 costs fastmul
931end cpu arm720t
932
933begin cpu arm740t
934 tune flags WBUF
935 architecture armv4t
936 costs fastmul
937end cpu arm740t
938
939begin cpu arm9
940 tune flags LDSCHED
941 architecture armv4t
942 costs fastmul
943end cpu arm9
944
945begin cpu arm9tdmi
946 tune flags LDSCHED
947 architecture armv4t
948 costs fastmul
949end cpu arm9tdmi
950
951begin cpu arm920
952 tune flags LDSCHED
953 architecture armv4t
954 costs fastmul
955end cpu arm920
956
957begin cpu arm920t
958 tune flags LDSCHED
959 architecture armv4t
960 costs fastmul
961end cpu arm920t
962
963begin cpu arm922t
964 tune flags LDSCHED
965 architecture armv4t
966 costs fastmul
967end cpu arm922t
968
969begin cpu arm940t
970 tune flags LDSCHED
971 architecture armv4t
972 costs fastmul
973end cpu arm940t
974
975begin cpu ep9312
976 tune flags LDSCHED
977 architecture armv4t
978 costs fastmul
979end cpu ep9312
980
981
982# V5T Architecture Processors
983# These used VFPv1 which isn't supported by GCC
984begin cpu arm10tdmi
985 tune flags LDSCHED
986 architecture armv5t
987 costs fastmul
988end cpu arm10tdmi
989
990begin cpu arm1020t
991 tune flags LDSCHED
992 architecture armv5t
993 costs fastmul
994end cpu arm1020t
995
996
997# V5TE Architecture Processors
998begin cpu arm9e
999 tune flags LDSCHED
1000 architecture armv5te
1001 fpu vfpv2
1002 option nofp remove ALL_FP
1003 costs 9e
1004end cpu arm9e
1005
1006begin 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
1013end cpu arm946e-s
1014
1015begin 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
1022end cpu arm966e-s
1023
1024begin 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
1031end cpu arm968e-s
1032
1033begin cpu arm10e
1034 tune flags LDSCHED
1035 architecture armv5te
1036 fpu vfpv2
1037 option nofp remove ALL_FP
1038 costs fastmul
1039end cpu arm10e
1040
1041begin cpu arm1020e
1042 tune flags LDSCHED
1043 architecture armv5te
1044 fpu vfpv2
1045 option nofp remove ALL_FP
1046 costs fastmul
1047end cpu arm1020e
1048
1049begin cpu arm1022e
1050 tune flags LDSCHED
1051 architecture armv5te
1052 fpu vfpv2
1053 option nofp remove ALL_FP
1054 costs fastmul
1055end cpu arm1022e
1056
1057begin cpu xscale
1058 tune flags LDSCHED XSCALE
1059 architecture armv5te
1060 isa xscale
1061 costs xscale
1062end cpu xscale
1063
1064begin cpu iwmmxt
1065 tune flags LDSCHED XSCALE
1066 architecture iwmmxt
1067 costs xscale
1068end cpu iwmmxt
1069
1070begin cpu iwmmxt2
1071 tune flags LDSCHED XSCALE
1072 architecture iwmmxt2
1073 costs xscale
1074end cpu iwmmxt2
1075
1076begin cpu fa606te
1077 tune flags LDSCHED
1078 architecture armv5te
1079 costs 9e
1080end cpu fa606te
1081
1082begin cpu fa626te
1083 tune flags LDSCHED
1084 architecture armv5te
1085 costs 9e
1086end cpu fa626te
1087
1088begin cpu fmp626
1089 tune flags LDSCHED
1090 architecture armv5te
1091 costs 9e
1092end cpu fmp626
1093
1094begin cpu fa726te
1095 tune flags LDSCHED
1096 architecture armv5te
1097 costs fa726te
1098end cpu fa726te
1099
1100
1101# V5TEJ Architecture Processors
1102begin 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
1109end cpu arm926ej-s
1110
1111begin 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
1118end cpu arm1026ej-s
1119
1120
1121# V6 Architecture Processors
1122begin cpu arm1136j-s
1123 cname arm1136js
1124 tune flags LDSCHED
1125 architecture armv6j
1126 costs 9e
1127end cpu arm1136j-s
1128
1129begin cpu arm1136jf-s
1130 cname arm1136jfs
1131 tune flags LDSCHED
1132 architecture armv6j
1133 fpu vfpv2
1134 costs 9e
1135end cpu arm1136jf-s
1136
1137begin cpu arm1176jz-s
1138 cname arm1176jzs
1139 tune flags LDSCHED
1140 architecture armv6kz
1141 costs 9e
1142end cpu arm1176jz-s
1143
1144begin cpu arm1176jzf-s
1145 cname arm1176jzfs
1146 tune flags LDSCHED
1147 architecture armv6kz
1148 fpu vfpv2
1149 costs 9e
1150end cpu arm1176jzf-s
1151
1152begin cpu mpcorenovfp
1153 tune flags LDSCHED
1154 architecture armv6k
1155 costs 9e
1156end cpu mpcorenovfp
1157
1158begin cpu mpcore
1159 tune flags LDSCHED
1160 architecture armv6k
1161 fpu vfpv2
1162 costs 9e
1163end cpu mpcore
1164
1165begin cpu arm1156t2-s
1166 cname arm1156t2s
1167 tune flags LDSCHED
1168 architecture armv6t2
1169 costs v6t2
1170end cpu arm1156t2-s
1171
1172begin cpu arm1156t2f-s
1173 cname arm1156t2fs
1174 tune flags LDSCHED
1175 architecture armv6t2
1176 fpu vfpv2
1177 costs v6t2
1178end cpu arm1156t2f-s
1179
1180
1181# V6M Architecture Processors
1182begin cpu cortex-m1
1183 cname cortexm1
1184 tune flags LDSCHED
1185 architecture armv6s-m
1186 costs v6m
1187end cpu cortex-m1
1188
1189begin cpu cortex-m0
1190 cname cortexm0
1191 tune flags LDSCHED
1192 architecture armv6s-m
1193 costs v6m
1194end cpu cortex-m0
1195
1196begin cpu cortex-m0plus
1197 cname cortexm0plus
1198 tune flags LDSCHED
1199 architecture armv6s-m
1200 costs v6m
1201end cpu cortex-m0plus
1202
1203
1204# V6M Architecture Processors for small-multiply implementations.
1205begin 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
1211end cpu cortex-m1.small-multiply
1212
1213begin 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
1219end cpu cortex-m0.small-multiply
1220
1221begin 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
1227end cpu cortex-m0plus.small-multiply
1228
1229
1230# V7 Architecture Processors
1231begin 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
1252end cpu generic-armv7-a
1253
1254begin 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
1262end cpu cortex-a5
1263
1264begin 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
1272end cpu cortex-a7
1273
1274begin 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
1281end cpu cortex-a8
1282
1283begin 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
1291end cpu cortex-a9
1292
1293begin 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
1301end cpu cortex-a12
1302
1303begin 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
1310end cpu cortex-a15
1311
1312begin 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
1319end cpu cortex-a17
1320
1321begin cpu cortex-r4
1322 cname cortexr4
1323 tune flags LDSCHED
1324 architecture armv7-r
1325 costs cortex
1326end cpu cortex-r4
1327
1328begin cpu cortex-r4f
1329 cname cortexr4f
1330 tune flags LDSCHED
1331 architecture armv7-r
1332 fpu vfpv3-d16
1333 costs cortex
1334end cpu cortex-r4f
1335
1336begin 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
1344end cpu cortex-r5
1345
1346begin 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
1354end cpu cortex-r7
1355
1356begin 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
1365end cpu cortex-r8
1366
1367begin 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
1376end cpu cortex-m7
1377
1378begin 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
1385end cpu cortex-m4
1386
1387begin cpu cortex-m3
1388 cname cortexm3
1389 tune flags LDSCHED
1390 architecture armv7-m
1391 isa quirk_cm3_ldrd
1392 costs v7m
1393end cpu cortex-m3
1394
1395begin cpu marvell-pj4
1396 tune flags LDSCHED
1397 architecture armv7-a+mp+sec
1398 costs marvell_pj4
1399end cpu marvell-pj4
1400
1401
1402# V7 big.LITTLE implementations
1403begin 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
1411end cpu cortex-a15.cortex-a7
1412
1413begin 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
1421end cpu cortex-a17.cortex-a7
1422
1423
1424# V8 A-profile Architecture Processors
1425begin 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
1434end cpu cortex-a32
1435
1436begin 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
1445end cpu cortex-a35
1446
1447begin 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
1455end cpu cortex-a53
1456
1457begin 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
1464end cpu cortex-a57
1465
1466begin 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
1474end cpu cortex-a72
1475
1476begin 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
1484end cpu cortex-a73
1485
1486begin 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
1493end cpu exynos-m1
1494
1495begin 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
1501end cpu xgene1
1502
1503# V8 A-profile big.LITTLE implementations
1504begin 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
1512end cpu cortex-a57.cortex-a53
1513
1514begin 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
1522end cpu cortex-a72.cortex-a53
1523
1524begin 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
1532end cpu cortex-a73.cortex-a35
1533
1534begin 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
1542end cpu cortex-a73.cortex-a53
1543
1544
1545# ARMv8.2 A-profile Architecture Processors
1546begin 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
1555end cpu cortex-a55
1556
1557begin 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
1565end cpu cortex-a75
1566
1567
1568# ARMv8.2 A-profile ARM DynamIQ big.LITTLE implementations
1569begin 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
1577end cpu cortex-a75.cortex-a55
1578
1579# V8 M-profile implementations.
1580begin cpu cortex-m23
1581 cname cortexm23
1582 tune flags LDSCHED
1583 architecture armv8-m.base
1584 costs v6m
1585end cpu cortex-m23
1586
1587begin 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
1595end cpu cortex-m33
1596
1597# V8 R-profile implementations.
1598begin 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
1605end cpu cortex-r52
1606
1607# FPU entries
1608# format:
1609# begin fpu <name>
1610#   isa <isa-flags-list>
1611# end fpu <name>
1612
1613begin fpu vfp
1614 isa VFPv2 FP_DBL
1615end fpu vfp
1616
1617begin fpu vfpv2
1618 isa VFPv2 FP_DBL
1619end fpu vfpv2
1620
1621begin fpu vfpv3
1622 isa VFPv3 FP_D32
1623end fpu vfpv3
1624
1625begin fpu vfpv3-fp16
1626 isa VFPv3 FP_D32 fp16conv
1627end fpu vfpv3-fp16
1628
1629begin fpu vfpv3-d16
1630 isa VFPv3 FP_DBL
1631end fpu vfpv3-d16
1632
1633begin fpu vfpv3-d16-fp16
1634 isa VFPv3 FP_DBL fp16conv
1635end fpu vfpv3-d16-fp16
1636
1637begin fpu vfpv3xd
1638 isa VFPv3
1639end fpu vfpv3xd
1640
1641begin fpu vfpv3xd-fp16
1642 isa VFPv3 fp16conv
1643end fpu vfpv3xd-fp16
1644
1645begin fpu neon
1646 isa VFPv3 NEON
1647end fpu neon
1648
1649begin fpu neon-vfpv3
1650 isa VFPv3 NEON
1651end fpu neon-vfpv3
1652
1653begin fpu neon-fp16
1654 isa VFPv3 NEON fp16conv
1655end fpu neon-fp16
1656
1657begin fpu vfpv4
1658 isa VFPv4 FP_D32
1659end fpu vfpv4
1660
1661begin fpu neon-vfpv4
1662 isa VFPv4 NEON
1663end fpu neon-vfpv4
1664
1665begin fpu vfpv4-d16
1666 isa VFPv4 FP_DBL
1667end fpu vfpv4-d16
1668
1669begin fpu fpv4-sp-d16
1670 isa VFPv4
1671end fpu fpv4-sp-d16
1672
1673begin fpu fpv5-sp-d16
1674 isa FPv5
1675end fpu fpv5-sp-d16
1676
1677begin fpu fpv5-d16
1678 isa FPv5 FP_DBL
1679end fpu fpv5-d16
1680
1681begin fpu fp-armv8
1682 isa FP_ARMv8
1683end fpu fp-armv8
1684
1685begin fpu neon-fp-armv8
1686 isa FP_ARMv8 NEON
1687end fpu neon-fp-armv8
1688
1689begin fpu crypto-neon-fp-armv8
1690 isa FP_ARMv8 CRYPTO
1691end fpu crypto-neon-fp-armv8
1692
1693# Compatibility aliases.
1694begin fpu vfp3
1695 isa VFPv3 FP_D32
1696end fpu vfp3
1697