[ARM] Rewire -mfpu=fp-armv8 as VFPv5 + D32 + DP
[official-gcc.git] / gcc / config / arm / arm-cpus.in
blobe2ff297aed7514073dbb3bf5ee86964f202e5a14
1 # CPU, FPU and architecture specifications for ARM.
3 # Copyright (C) 2011-2017 Free Software Foundation, Inc.
5 # This file is part of GCC.
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.
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.
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/>.
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.
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>
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.
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.
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.
43 # Architecture entries
44 # format:
45 # begin arch <name>
46 #   tune for <cpu>
47 #   [tune flags <list>]
48 #   base <name>
49 #   [profile <A|R|M>]
50 #   isa <isa-flags-list>
51 # end arch <name>
54 begin arch armv2
55  tune for arm2
56  tune flags CO_PROC NO_MODE32
57  base 2
58  isa ARMv2 bit_mode26
59 end arch armv2
61 begin arch armv2a
62  tune for arm2
63  tune flags CO_PROC NO_MODE32
64  base 2
65  isa ARMv2 bit_mode26
66 end arch armv2a
68 begin arch armv3
69  tune for arm6
70  tune flags CO_PROC
71  base 3
72  isa ARMv3 bit_mode26
73 end arch armv3
75 begin arch armv3m
76  tune for arm7m
77  tune flags CO_PROC
78  base 3M
79  isa ARMv3m bit_mode26
80 end arch armv3m
82 begin arch armv4
83  tune for arm7tdmi
84  tune flags CO_PROC
85  base 4
86  isa ARMv4 bit_mode26
87 end arch armv4
89 # Strictly, bit_mode26 is a permitted option for v4t, but there are no
90 # implementations that support it, so we will leave it out for now.
91 begin arch armv4t
92  tune for arm7tdmi
93  tune flags CO_PROC
94  base 4T
95  isa ARMv4t
96 end arch armv4t
98 begin arch armv5
99  tune for arm10tdmi
100  tune flags CO_PROC
101  base 5
102  isa ARMv5
103 end arch armv5
105 begin arch armv5t
106  tune for arm10tdmi
107  tune flags CO_PROC
108  base 5T
109  isa ARMv5t
110 end arch armv5t
112 begin arch armv5e
113  tune for arm1026ej-s
114  tune flags CO_PROC
115  base 5E
116  isa ARMv5e
117  option fp add VFPv2 FP_DBL
118  optalias vfpv2 fp
119  option nofp remove ALL_FP
120 end arch armv5e
122 begin arch armv5te
123  tune for arm1026ej-s
124  tune flags CO_PROC
125  base 5TE
126  isa ARMv5te
127  option fp add VFPv2 FP_DBL
128  optalias vfpv2 fp
129  option nofp remove ALL_FP
130 end arch armv5te
132 begin arch armv5tej
133  tune for arm1026ej-s
134  tune flags CO_PROC
135  base 5TEJ
136  isa ARMv5tej
137  option fp add VFPv2 FP_DBL
138  optalias vfpv2 fp
139  option nofp remove ALL_FP
140 end arch armv5tej
142 begin arch armv6
143  tune for arm1136j-s
144  tune flags CO_PROC
145  base 6
146  isa ARMv6
147  option fp add VFPv2 FP_DBL
148  optalias vfpv2 fp
149  option nofp remove ALL_FP
150 end arch armv6
152 begin arch armv6j
153  tune for arm1136j-s
154  tune flags CO_PROC
155  base 6J
156  isa ARMv6j
157  option fp add VFPv2 FP_DBL
158  optalias vfpv2 fp
159  option nofp remove ALL_FP
160 end arch armv6j
162 begin arch armv6k
163  tune for mpcore
164  tune flags CO_PROC
165  base 6K
166  isa ARMv6k
167  option fp add VFPv2 FP_DBL
168  optalias vfpv2 fp
169  option nofp remove ALL_FP
170 end arch armv6k
172 begin arch armv6z
173  tune for arm1176jz-s
174  tune flags CO_PROC
175  base 6Z
176  isa ARMv6z
177  option fp add VFPv2 FP_DBL
178  optalias vfpv2 fp
179  option nofp remove ALL_FP
180 end arch armv6z
182 begin arch armv6kz
183  tune for arm1176jz-s
184  tune flags CO_PROC
185  base 6KZ
186  isa ARMv6kz
187  option fp add VFPv2 FP_DBL
188  optalias vfpv2 fp
189  option nofp remove ALL_FP
190 end arch armv6kz
192 begin arch armv6zk
193  tune for arm1176jz-s
194  tune flags CO_PROC
195  base 6KZ
196  isa ARMv6kz
197  option fp add VFPv2 FP_DBL
198  optalias vfpv2 fp
199  option nofp remove ALL_FP
200 end arch armv6zk
202 begin arch armv6t2
203  tune for arm1156t2-s
204  tune flags CO_PROC
205  base 6T2
206  isa ARMv6t2
207  option fp add VFPv2 FP_DBL
208  optalias vfpv2 fp
209  option nofp remove ALL_FP
210 end arch armv6t2
212 begin arch armv6-m
213  tune for cortex-m1
214  base 6M
215  profile M
216  isa ARMv6m
217 end arch armv6-m
219 begin arch armv6s-m
220  tune for cortex-m1
221  base 6M
222  profile M
223  isa ARMv6m
224 end arch armv6s-m
226 begin arch armv7
227  tune for cortex-a8
228  tune flags CO_PROC
229  base 7
230  isa ARMv7
231 # fp => VFPv3-d16 (only useful for the A+R profile subset).
232  option fp add VFPv3 FP_DBL
233  optalias vfpv3-d16 fp
234  option nofp remove ALL_FP
235 end arch armv7
237 begin arch armv7-a
238  tune for cortex-a8
239  tune flags CO_PROC
240  base 7A
241  profile A
242  isa ARMv7a
243 # fp => VFPv3-d16, simd => neon-vfpv3
244  option fp             add VFPv3 FP_DBL
245  optalias vfpv3-d16    fp
246  option vfpv3          add VFPv3 FP_D32
247  option vfpv3-d16-fp16 add VFPv3 FP_DBL bit_fp16conv
248  option vfpv3-fp16     add VFPv3 FP_DBL FP_D32 bit_fp16conv
249  option vfpv4-d16      add VFPv4 FP_DBL
250  option vfpv4          add VFPv4 FP_D32
251  option simd           add VFPv3 NEON
252  optalias neon         simd
253  optalias neon-vfpv3   simd
254  option neon-fp16      add VFPv3 NEON bit_fp16conv
255  option neon-vfpv4     add VFPv4 NEON
256  option nosimd      remove ALL_SIMD
257  option nofp        remove ALL_FP
258 end arch armv7-a
260 begin arch armv7ve
261  tune for cortex-a8
262  tune flags CO_PROC
263  base 7A
264  profile A
265  isa ARMv7ve
266 # fp => VFPv4-d16, simd => neon-vfpv4
267  option vfpv3-d16      add VFPv3 FP_DBL
268  option vfpv3          add VFPv3 FP_D32
269  option vfpv3-d16-fp16 add VFPv3 FP_DBL bit_fp16conv
270  option vfpv3-fp16     add VFPv3 FP_DBL FP_D32 bit_fp16conv
271  option fp             add VFPv4 FP_DBL
272  optalias vfpv4-d16    fp
273  option vfpv4          add VFPv4 FP_D32
274  option neon           add VFPv3 NEON
275  optalias neon-vfpv3   neon
276  option neon-fp16      add VFPv3 NEON bit_fp16conv
277  option simd           add VFPv4 NEON
278  optalias neon-vfpv4   simd
279  option nosimd      remove ALL_SIMD
280  option nofp        remove ALL_FP
281 end arch armv7ve
283 begin arch armv7-r
284  tune for cortex-r4
285  tune flags CO_PROC
286  base 7R
287  profile R
288  isa ARMv7r
289 # ARMv7-r uses VFPv3-d16
290  option fp.sp add VFPv3
291  optalias vfpv3xd fp.sp
292  option fp add VFPv3 FP_DBL
293  optalias vfpv3-d16 fp
294  option idiv add bit_adiv
295  option nofp remove ALL_FP
296  option noidiv remove bit_adiv
297 end arch armv7-r
299 begin arch armv7-m
300  tune for cortex-m3
301  tune flags CO_PROC
302  base 7M
303  profile M
304  isa ARMv7m
305 # In theory FP is permitted in v7-m, but in practice no implementations exist.
306 # leave it out for now.
307 end arch armv7-m
309 begin arch armv7e-m
310  tune for cortex-m4
311  tune flags CO_PROC
312  base 7EM
313  profile M
314  isa ARMv7em
315 # fp => VFPv4-sp-d16; fpv5 => FPv5-sp-d16; fp.dp => FPv5-d16
316  option fp add VFPv4
317  optalias vfpv4-sp-d16 fp
318  option fpv5 add FPv5
319  option fp.dp add FPv5 FP_DBL
320  optalias fpv5-d16 fp.dp
321  option nofp remove ALL_FP
322 end arch armv7e-m
324 begin arch armv8-a
325  tune for cortex-a53
326  tune flags CO_PROC
327  base 8A
328  profile A
329  isa ARMv8a
330  option crc add bit_crc32
331  option simd add FP_ARMv8 NEON
332  option crypto add FP_ARMv8 CRYPTO
333  option nocrypto remove ALL_CRYPTO
334  option nofp remove ALL_FP
335 end arch armv8-a
337 begin arch armv8.1-a
338  tune for cortex-a53
339  tune flags CO_PROC
340  base 8A
341  profile A
342  isa ARMv8_1a
343  option simd add FP_ARMv8 NEON
344  option crypto add FP_ARMv8 CRYPTO
345  option nocrypto remove ALL_CRYPTO
346  option nofp remove ALL_FP
347 end arch armv8.1-a
349 begin arch armv8.2-a
350  tune for cortex-a53
351  tune flags CO_PROC
352  base 8A
353  profile A
354  isa ARMv8_2a
355  option simd add FP_ARMv8 NEON
356  option fp16 add bit_fp16 FP_ARMv8 NEON
357  option crypto add FP_ARMv8 CRYPTO
358  option nocrypto remove ALL_CRYPTO
359  option nofp remove ALL_FP
360 end arch armv8.2-a
362 begin arch armv8-m.base
363  tune for cortex-m23
364  base 8M_BASE
365  profile M
366  isa ARMv8m_base
367 end arch armv8-m.base
369 begin arch armv8-m.main
370  tune for cortex-m7
371  tune flags CO_PROC
372  base 8M_MAIN
373  profile M
374  isa ARMv8m_main
375  option dsp add bit_ARMv7em
376 # fp => FPv5-sp-d16; fp.dp => FPv5-d16
377  option fp add FPv5
378  option fp.dp add FPv5 FP_DBL
379  option nofp remove ALL_FP
380  option nodsp remove bit_ARMv7em
381 end arch armv8-m.main
383 begin arch armv8-r
384  tune for cortex-r4
385  tune flags CO_PROC
386  base 8R
387  profile R
388  isa ARMv8r
389  option crc add bit_crc32
390 # fp.sp => fp-armv8 (d16); simd => simd + fp-armv8 + d32 + double precision
391 # note: no fp option for fp-armv8 (d16) + double precision at the moment
392  option fp.sp add FPv5
393  option simd add FP_ARMv8 NEON
394  option crypto add FP_ARMv8 CRYPTO
395  option nocrypto remove ALL_CRYPTO
396  option nofp remove ALL_FP
397 end arch armv8-r
399 begin arch iwmmxt
400  tune for iwmmxt
401  tune flags LDSCHED STRONG XSCALE
402  base 5TE
403  isa ARMv5te bit_xscale bit_iwmmxt
404 end arch iwmmxt
406 begin arch iwmmxt2
407  tune for iwmmxt2
408  tune flags LDSCHED STRONG XSCALE
409  base 5TE
410  isa ARMv5te bit_xscale bit_iwmmxt bit_iwmmxt2
411 end arch iwmmxt2
413 # CPU entries
414 # format:
415 # begin cpu <name>
416 #   [cname <c-compatible-name>]
417 #   [tune for <cpu-name>]
418 #   [tune flags <list>]
419 #   architecture <name>
420 #   [fpu <name>]
421 #   [isa <additional-isa-flags-list>]
422 #   [option <name> add|remove <isa-list>]*
423 #   [optalias <name> <optname>]*
424 #   [costs <name>]
425 # end cpu <name>
427 # If omitted, cname is formed from transforming the cpuname to convert
428 # non-valid punctuation characters to '_'.
429 # If specified, tune for specifies a CPU target to use for tuning this core.
430 # isa flags are appended to those defined by the architecture.
431 # Each add option must have a distinct feature set and each remove
432 # option must similarly have a distinct feature set.  Option aliases can be
433 # added with the optalias statement
435 # V2/V2A Architecture Processors
436 begin cpu arm2
437  tune flags CO_PROC NO_MODE32
438  architecture armv2
439  costs slowmul
440 end cpu arm2
442 begin cpu arm250
443  tune flags CO_PROC NO_MODE32
444  architecture armv2
445  costs slowmul
446 end cpu arm250
448 begin cpu arm3
449  tune flags CO_PROC NO_MODE32
450  architecture armv2
451  costs slowmul
452 end cpu arm3
455 # V3 Architecture Processors
456 begin cpu arm6
457  tune flags CO_PROC
458  architecture armv3
459  costs slowmul
460 end cpu arm6
462 begin cpu arm60
463  tune flags CO_PROC
464  architecture armv3
465  costs slowmul
466 end cpu arm60
468 begin cpu arm600
469  tune flags CO_PROC WBUF
470  architecture armv3
471  costs slowmul
472 end cpu arm600
474 begin cpu arm610
475  tune flags WBUF
476  architecture armv3
477  costs slowmul
478 end cpu arm610
480 begin cpu arm620
481  tune flags CO_PROC WBUF
482  architecture armv3
483  costs slowmul
484 end cpu arm620
486 begin cpu arm7
487  tune flags CO_PROC
488  architecture armv3
489  costs slowmul
490 end cpu arm7
492 begin cpu arm7d
493  tune flags CO_PROC
494  architecture armv3
495  costs slowmul
496 end cpu arm7d
498 begin cpu arm7di
499  tune flags CO_PROC
500  architecture armv3
501  costs slowmul
502 end cpu arm7di
504 begin cpu arm70
505  tune flags CO_PROC
506  architecture armv3
507  costs slowmul
508 end cpu arm70
510 begin cpu arm700
511  tune flags CO_PROC WBUF
512  architecture armv3
513  costs slowmul
514 end cpu arm700
516 begin cpu arm700i
517  tune flags CO_PROC WBUF
518  architecture armv3
519  costs slowmul
520 end cpu arm700i
522 begin cpu arm710
523  tune flags WBUF
524  architecture armv3
525  costs slowmul
526 end cpu arm710
528 begin cpu arm720
529  tune flags WBUF
530  architecture armv3
531  costs slowmul
532 end cpu arm720
534 begin cpu arm710c
535  tune flags WBUF
536  architecture armv3
537  costs slowmul
538 end cpu arm710c
540 begin cpu arm7100
541  tune flags WBUF
542  architecture armv3
543  costs slowmul
544 end cpu arm7100
546 begin cpu arm7500
547  tune flags WBUF
548  architecture armv3
549  costs slowmul
550 end cpu arm7500
552 # Doesn't have an external co-proc, but does have embedded FPA
553 # (the FPA part is no-longer supported).
554 begin cpu arm7500fe
555  tune flags CO_PROC WBUF
556  architecture armv3
557  costs slowmul
558 end cpu arm7500fe
561 # V3M Architecture Processors
562 # arm7m doesn't exist on its own, but only with "D", (and "I"), but
563 # those don't alter the code, so arm7m is sometimes used.
564 begin cpu arm7m
565  tune flags CO_PROC
566  architecture armv3m
567  costs fastmul
568 end cpu arm7m
570 begin cpu arm7dm
571  tune flags CO_PROC
572  architecture armv3m
573  costs fastmul
574 end cpu arm7dm
576 begin cpu arm7dmi
577  tune flags CO_PROC
578  architecture armv3m
579  costs fastmul
580 end cpu arm7dmi
583 # V4 Architecture Processors
584 begin cpu arm8
585  tune flags LDSCHED
586  architecture armv4
587  costs fastmul
588 end cpu arm8
590 begin cpu arm810
591  tune flags LDSCHED
592  architecture armv4
593  costs fastmul
594 end cpu arm810
596 begin cpu strongarm
597  tune flags LDSCHED STRONG
598  architecture armv4
599  costs strongarm
600 end cpu strongarm
602 begin cpu strongarm110
603  tune flags LDSCHED STRONG
604  architecture armv4
605  costs strongarm
606 end cpu strongarm110
608 begin cpu strongarm1100
609  tune flags LDSCHED STRONG
610  architecture armv4
611  costs strongarm
612 end cpu strongarm1100
614 begin cpu strongarm1110
615  tune flags LDSCHED STRONG
616  architecture armv4
617  costs strongarm
618 end cpu strongarm1110
620 begin cpu fa526
621  tune flags LDSCHED
622  architecture armv4
623  costs fastmul
624 end cpu fa526
626 begin cpu fa626
627  tune flags LDSCHED
628  architecture armv4
629  costs fastmul
630 end cpu fa626
633 # V4T Architecture Processors
634 begin cpu arm7tdmi
635  tune flags CO_PROC
636  architecture armv4t
637  costs fastmul
638 end cpu arm7tdmi
640 begin cpu arm7tdmi-s
641  cname arm7tdmis
642  tune flags CO_PROC
643  architecture armv4t
644  costs fastmul
645 end cpu arm7tdmi-s
647 begin cpu arm710t
648  tune flags WBUF
649  architecture armv4t
650  costs fastmul
651 end cpu arm710t
653 begin cpu arm720t
654  tune flags WBUF
655  architecture armv4t
656  costs fastmul
657 end cpu arm720t
659 begin cpu arm740t
660  tune flags WBUF
661  architecture armv4t
662  costs fastmul
663 end cpu arm740t
665 begin cpu arm9
666  tune flags LDSCHED
667  architecture armv4t
668  costs fastmul
669 end cpu arm9
671 begin cpu arm9tdmi
672  tune flags LDSCHED
673  architecture armv4t
674  costs fastmul
675 end cpu arm9tdmi
677 begin cpu arm920
678  tune flags LDSCHED
679  architecture armv4t
680  costs fastmul
681 end cpu arm920
683 begin cpu arm920t
684  tune flags LDSCHED
685  architecture armv4t
686  costs fastmul
687 end cpu arm920t
689 begin cpu arm922t
690  tune flags LDSCHED
691  architecture armv4t
692  costs fastmul
693 end cpu arm922t
695 begin cpu arm940t
696  tune flags LDSCHED
697  architecture armv4t
698  costs fastmul
699 end cpu arm940t
701 begin cpu ep9312
702  tune flags LDSCHED
703  architecture armv4t
704  costs fastmul
705 end cpu ep9312
708 # V5T Architecture Processors
709 # These used VFPv1 which isn't supported by GCC
710 begin cpu arm10tdmi
711  tune flags LDSCHED
712  architecture armv5t
713  costs fastmul
714 end cpu arm10tdmi
716 begin cpu arm1020t
717  tune flags LDSCHED
718  architecture armv5t
719  costs fastmul
720 end cpu arm1020t
723 # V5TE Architecture Processors
724 begin cpu arm9e
725  tune flags LDSCHED
726  architecture armv5te
727  fpu vfpv2
728  option nofp remove ALL_FP
729  costs 9e
730 end cpu arm9e
732 begin cpu arm946e-s
733  cname arm946es
734  tune flags LDSCHED
735  architecture armv5te
736  fpu vfpv2
737  option nofp remove ALL_FP
738  costs 9e
739 end cpu arm946e-s
741 begin cpu arm966e-s
742  cname arm966es
743  tune flags LDSCHED
744  architecture armv5te
745  fpu vfpv2
746  option nofp remove ALL_FP
747  costs 9e
748 end cpu arm966e-s
750 begin cpu arm968e-s
751  cname arm968es
752  tune flags LDSCHED
753  architecture armv5te
754  fpu vfpv2
755  option nofp remove ALL_FP
756  costs 9e
757 end cpu arm968e-s
759 begin cpu arm10e
760  tune flags LDSCHED
761  architecture armv5te
762  fpu vfpv2
763  option nofp remove ALL_FP
764  costs fastmul
765 end cpu arm10e
767 begin cpu arm1020e
768  tune flags LDSCHED
769  architecture armv5te
770  fpu vfpv2
771  option nofp remove ALL_FP
772  costs fastmul
773 end cpu arm1020e
775 begin cpu arm1022e
776  tune flags LDSCHED
777  architecture armv5te
778  fpu vfpv2
779  option nofp remove ALL_FP
780  costs fastmul
781 end cpu arm1022e
783 begin cpu xscale
784  tune flags LDSCHED XSCALE
785  architecture armv5te
786  isa bit_xscale
787  costs xscale
788 end cpu xscale
790 begin cpu iwmmxt
791  tune flags LDSCHED XSCALE
792  architecture iwmmxt
793  costs xscale
794 end cpu iwmmxt
796 begin cpu iwmmxt2
797  tune flags LDSCHED XSCALE
798  architecture iwmmxt2
799  costs xscale
800 end cpu iwmmxt2
802 begin cpu fa606te
803  tune flags LDSCHED
804  architecture armv5te
805  costs 9e
806 end cpu fa606te
808 begin cpu fa626te
809  tune flags LDSCHED
810  architecture armv5te
811  costs 9e
812 end cpu fa626te
814 begin cpu fmp626
815  tune flags LDSCHED
816  architecture armv5te
817  costs 9e
818 end cpu fmp626
820 begin cpu fa726te
821  tune flags LDSCHED
822  architecture armv5te
823  costs fa726te
824 end cpu fa726te
827 # V5TEJ Architecture Processors
828 begin cpu arm926ej-s
829  cname arm926ejs
830  tune flags LDSCHED
831  architecture armv5tej
832  fpu vfpv2
833  option nofp remove ALL_FP
834  costs 9e
835 end cpu arm926ej-s
837 begin cpu arm1026ej-s
838  cname arm1026ejs
839  tune flags LDSCHED
840  architecture armv5tej
841  fpu vfpv2
842  option nofp remove ALL_FP
843  costs 9e
844 end cpu arm1026ej-s
847 # V6 Architecture Processors
848 begin cpu arm1136j-s
849  cname arm1136js
850  tune flags LDSCHED
851  architecture armv6j
852  costs 9e
853 end cpu arm1136j-s
855 begin cpu arm1136jf-s
856  cname arm1136jfs
857  tune flags LDSCHED
858  architecture armv6j
859  fpu vfpv2
860  costs 9e
861 end cpu arm1136jf-s
863 begin cpu arm1176jz-s
864  cname arm1176jzs
865  tune flags LDSCHED
866  architecture armv6kz
867  costs 9e
868 end cpu arm1176jz-s
870 begin cpu arm1176jzf-s
871  cname arm1176jzfs
872  tune flags LDSCHED
873  architecture armv6kz
874  fpu vfpv2
875  costs 9e
876 end cpu arm1176jzf-s
878 begin cpu mpcorenovfp
879  tune flags LDSCHED
880  architecture armv6k
881  costs 9e
882 end cpu mpcorenovfp
884 begin cpu mpcore
885  tune flags LDSCHED
886  architecture armv6k
887  fpu vfpv2
888  costs 9e
889 end cpu mpcore
891 begin cpu arm1156t2-s
892  cname arm1156t2s
893  tune flags LDSCHED
894  architecture armv6t2
895  costs v6t2
896 end cpu arm1156t2-s
898 begin cpu arm1156t2f-s
899  cname arm1156t2fs
900  tune flags LDSCHED
901  architecture armv6t2
902  fpu vfpv2
903  costs v6t2
904 end cpu arm1156t2f-s
907 # V6M Architecture Processors
908 begin cpu cortex-m1
909  cname cortexm1
910  tune flags LDSCHED
911  architecture armv6-m
912  costs v6m
913 end cpu cortex-m1
915 begin cpu cortex-m0
916  cname cortexm0
917  tune flags LDSCHED
918  architecture armv6-m
919  costs v6m
920 end cpu cortex-m0
922 begin cpu cortex-m0plus
923  cname cortexm0plus
924  tune flags LDSCHED
925  architecture armv6-m
926  costs v6m
927 end cpu cortex-m0plus
930 # V6M Architecture Processors for small-multiply implementations.
931 begin cpu cortex-m1.small-multiply
932  cname cortexm1smallmultiply
933  tune for cortex-m1
934  tune flags LDSCHED SMALLMUL
935  architecture armv6-m
936  costs v6m
937 end cpu cortex-m1.small-multiply
939 begin cpu cortex-m0.small-multiply
940  cname cortexm0smallmultiply
941  tune for cortex-m0
942  tune flags LDSCHED SMALLMUL
943  architecture armv6-m
944  costs v6m
945 end cpu cortex-m0.small-multiply
947 begin cpu cortex-m0plus.small-multiply
948  cname cortexm0plussmallmultiply
949  tune for cortex-m0plus
950  tune flags LDSCHED SMALLMUL
951  architecture armv6-m
952  costs v6m
953 end cpu cortex-m0plus.small-multiply
956 # V7 Architecture Processors
957 begin cpu generic-armv7-a
958  cname genericv7a
959  tune flags LDSCHED
960  architecture armv7-a
961  fpu vfpv3-d16
962  option vfpv3-d16 add VFPv3 FP_DBL
963  option vfpv3 add VFPv3 FP_D32
964  option vfpv3-d16-fp16 add VFPv3 FP_DBL bit_fp16conv
965  option vfpv3-fp16 add VFPv3 FP_D32 bit_fp16conv
966  option vfpv4-d16 add VFPv4 FP_DBL
967  option vfpv4 add VFPv4 FP_D32
968  option simd add VFPv3 NEON
969  optalias neon simd
970  optalias neon-vfpv3 simd
971  option neon-fp16 add VFPv3 NEON bit_fp16conv
972  option neon-vfpv4 add VFPv4 NEON
973  option nosimd remove ALL_SIMD
974  option nofp remove ALL_FP
975  costs cortex
976 end cpu generic-armv7-a
978 begin cpu cortex-a5
979  cname cortexa5
980  tune flags LDSCHED
981  architecture armv7-a
982  fpu neon-fp16
983  option nosimd remove ALL_SIMD
984  option nofp remove ALL_FP
985  costs cortex_a5
986 end cpu cortex-a5
988 begin cpu cortex-a7
989  cname cortexa7
990  tune flags LDSCHED
991  architecture armv7ve
992  fpu neon-vfpv4
993  option nosimd remove ALL_SIMD
994  option nofp remove ALL_FP
995  costs cortex_a7
996 end cpu cortex-a7
998 begin cpu cortex-a8
999  cname cortexa8
1000  tune flags LDSCHED
1001  architecture armv7-a
1002  fpu neon-vfpv3
1003  option nofp remove ALL_FP
1004  costs cortex_a8
1005 end cpu cortex-a8
1007 begin cpu cortex-a9
1008  cname cortexa9
1009  tune flags LDSCHED
1010  architecture armv7-a
1011  fpu neon-fp16
1012  option nosimd remove ALL_SIMD
1013  option nofp remove ALL_FP
1014  costs cortex_a9
1015 end cpu cortex-a9
1017 begin cpu cortex-a12
1018  cname cortexa12
1019  tune for cortex-a17
1020  tune flags LDSCHED
1021  architecture armv7ve
1022  fpu neon-vfpv4
1023  option nofp remove ALL_FP
1024  costs cortex_a12
1025 end cpu cortex-a12
1027 begin cpu cortex-a15
1028  cname cortexa15
1029  tune flags LDSCHED
1030  architecture armv7ve
1031  fpu neon-vfpv4
1032  option nofp remove ALL_FP
1033  costs cortex_a15
1034 end cpu cortex-a15
1036 begin cpu cortex-a17
1037  cname cortexa17
1038  tune flags LDSCHED
1039  architecture armv7ve
1040  fpu neon-vfpv4
1041  option nofp remove ALL_FP
1042  costs cortex_a12
1043 end cpu cortex-a17
1045 begin cpu cortex-r4
1046  cname cortexr4
1047  tune flags LDSCHED
1048  architecture armv7-r
1049  costs cortex
1050 end cpu cortex-r4
1052 begin cpu cortex-r4f
1053  cname cortexr4f
1054  tune flags LDSCHED
1055  architecture armv7-r
1056  fpu vfpv3-d16
1057  costs cortex
1058 end cpu cortex-r4f
1060 begin cpu cortex-r5
1061  cname cortexr5
1062  tune flags LDSCHED
1063  architecture armv7-r+idiv
1064  fpu vfpv3-d16
1065  option nofp.dp remove FP_DBL
1066  option nofp remove ALL_FP
1067  costs cortex
1068 end cpu cortex-r5
1070 begin cpu cortex-r7
1071  cname cortexr7
1072  tune flags LDSCHED
1073  architecture armv7-r+idiv
1074  fpu vfpv3-d16
1075  option nofp remove ALL_FP
1076  costs cortex
1077 end cpu cortex-r7
1079 begin cpu cortex-r8
1080  cname cortexr8
1081  tune for cortex-r7
1082  tune flags LDSCHED
1083  architecture armv7-r+idiv
1084  fpu vfpv3-d16
1085  option nofp remove ALL_FP
1086  costs cortex
1087 end cpu cortex-r8
1089 begin cpu cortex-m7
1090  cname cortexm7
1091  tune flags LDSCHED
1092  architecture armv7e-m
1093  isa quirk_no_volatile_ce
1094  fpu fpv5-d16
1095  option nofp.dp remove FP_DBL
1096  option nofp remove ALL_FP
1097  costs cortex_m7
1098 end cpu cortex-m7
1100 begin cpu cortex-m4
1101  cname cortexm4
1102  tune flags LDSCHED
1103  architecture armv7e-m
1104  fpu fpv4-sp-d16
1105  option nofp remove ALL_FP
1106  costs v7m
1107 end cpu cortex-m4
1109 begin cpu cortex-m3
1110  cname cortexm3
1111  tune flags LDSCHED
1112  architecture armv7-m
1113  isa quirk_cm3_ldrd
1114  costs v7m
1115 end cpu cortex-m3
1117 begin cpu marvell-pj4
1118  tune flags LDSCHED
1119  architecture armv7-a
1120  costs marvell_pj4
1121 end cpu marvell-pj4
1124 # V7 big.LITTLE implementations
1125 begin cpu cortex-a15.cortex-a7
1126  cname cortexa15cortexa7
1127  tune for cortex-a7
1128  tune flags LDSCHED
1129  architecture armv7ve
1130  fpu neon-vfpv4
1131  option nofp remove ALL_FP
1132  costs cortex_a15
1133 end cpu cortex-a15.cortex-a7
1135 begin cpu cortex-a17.cortex-a7
1136  cname cortexa17cortexa7
1137  tune for cortex-a7
1138  tune flags LDSCHED
1139  architecture armv7ve
1140  fpu neon-vfpv4
1141  option nofp remove ALL_FP
1142  costs cortex_a12
1143 end cpu cortex-a17.cortex-a7
1146 # V8 A-profile Architecture Processors
1147 begin cpu cortex-a32
1148  cname cortexa32
1149  tune for cortex-a53
1150  tune flags LDSCHED
1151  architecture armv8-a+crc
1152  fpu neon-fp-armv8
1153  option crypto add FP_ARMv8 CRYPTO
1154  option nofp remove ALL_FP
1155  costs cortex_a35
1156 end cpu cortex-a32
1158 begin cpu cortex-a35
1159  cname cortexa35
1160  tune for cortex-a53
1161  tune flags LDSCHED
1162  architecture armv8-a+crc
1163  fpu neon-fp-armv8
1164  option crypto add FP_ARMv8 CRYPTO
1165  option nofp remove ALL_FP
1166  costs cortex_a35
1167 end cpu cortex-a35
1169 begin cpu cortex-a53
1170  cname cortexa53
1171  tune flags LDSCHED
1172  architecture armv8-a+crc
1173  fpu neon-fp-armv8
1174  option crypto add FP_ARMv8 CRYPTO
1175  option nofp remove ALL_FP
1176  costs cortex_a53
1177 end cpu cortex-a53
1179 begin cpu cortex-a57
1180  cname cortexa57
1181  tune flags LDSCHED
1182  architecture armv8-a+crc
1183  fpu neon-fp-armv8
1184  option crypto add FP_ARMv8 CRYPTO
1185  costs cortex_a57
1186 end cpu cortex-a57
1188 begin cpu cortex-a72
1189  cname cortexa72
1190  tune for cortex-a57
1191  tune flags LDSCHED
1192  architecture armv8-a+crc
1193  fpu neon-fp-armv8
1194  option crypto add FP_ARMv8 CRYPTO
1195  costs cortex_a57
1196 end cpu cortex-a72
1198 begin cpu cortex-a73
1199  cname cortexa73
1200  tune for cortex-a57
1201  tune flags LDSCHED
1202  architecture armv8-a+crc
1203  fpu neon-fp-armv8
1204  option crypto add FP_ARMv8 CRYPTO
1205  costs cortex_a73
1206 end cpu cortex-a73
1208 begin cpu exynos-m1
1209  cname exynosm1
1210  tune flags LDSCHED
1211  architecture armv8-a+crc
1212  fpu neon-fp-armv8
1213  option crypto add FP_ARMv8 CRYPTO
1214  costs exynosm1
1215 end cpu exynos-m1
1217 begin cpu xgene1
1218  tune flags LDSCHED
1219  architecture armv8-a
1220  fpu neon-fp-armv8
1221  option crypto add FP_ARMv8 CRYPTO
1222  costs xgene1
1223 end cpu xgene1
1225 # V8 A-profile big.LITTLE implementations
1226 begin cpu cortex-a57.cortex-a53
1227  cname cortexa57cortexa53
1228  tune for cortex-a53
1229  tune flags LDSCHED
1230  architecture armv8-a+crc
1231  fpu neon-fp-armv8
1232  option crypto add FP_ARMv8 CRYPTO
1233  costs cortex_a57
1234 end cpu cortex-a57.cortex-a53
1236 begin cpu cortex-a72.cortex-a53
1237  cname cortexa72cortexa53
1238  tune for cortex-a53
1239  tune flags LDSCHED
1240  architecture armv8-a+crc
1241  fpu neon-fp-armv8
1242  option crypto add FP_ARMv8 CRYPTO
1243  costs cortex_a57
1244 end cpu cortex-a72.cortex-a53
1246 begin cpu cortex-a73.cortex-a35
1247  cname cortexa73cortexa35
1248  tune for cortex-a53
1249  tune flags LDSCHED
1250  architecture armv8-a+crc
1251  fpu neon-fp-armv8
1252  option crypto add FP_ARMv8 CRYPTO
1253  costs cortex_a73
1254 end cpu cortex-a73.cortex-a35
1256 begin cpu cortex-a73.cortex-a53
1257  cname cortexa73cortexa53
1258  tune for cortex-a53
1259  tune flags LDSCHED
1260  architecture armv8-a+crc
1261  fpu neon-fp-armv8
1262  option crypto add FP_ARMv8 CRYPTO
1263  costs cortex_a73
1264 end cpu cortex-a73.cortex-a53
1267 # ARMv8.2 A-profile Architecture Processors
1268 begin cpu cortex-a55
1269  cname cortexa55
1270  tune for cortex-a53
1271  tune flags LDSCHED
1272  architecture armv8.2-a+fp16
1273  fpu neon-fp-armv8
1274  option crypto add FP_ARMv8 CRYPTO
1275  option nofp remove ALL_FP
1276  costs cortex_a53
1277 end cpu cortex-a55
1279 begin cpu cortex-a75
1280  cname cortexa75
1281  tune for cortex-a57
1282  tune flags LDSCHED
1283  architecture armv8.2-a+fp16
1284  fpu neon-fp-armv8
1285  option crypto add FP_ARMv8 CRYPTO
1286  costs cortex_a73
1287 end cpu cortex-a75
1290 # ARMv8.2 A-profile ARM DynamIQ big.LITTLE implementations
1291 begin cpu cortex-a75.cortex-a55
1292  cname cortexa75cortexa55
1293  tune for cortex-a53
1294  tune flags LDSCHED
1295  architecture armv8.2-a+fp16
1296  fpu neon-fp-armv8
1297  option crypto add FP_ARMv8 CRYPTO
1298  costs cortex_a73
1299 end cpu cortex-a75.cortex-a55
1301 # V8 M-profile implementations.
1302 begin cpu cortex-m23
1303  cname cortexm23
1304  tune flags LDSCHED
1305  architecture armv8-m.base
1306  costs v6m
1307 end cpu cortex-m23
1309 begin cpu cortex-m33
1310  cname cortexm33
1311  tune flags LDSCHED
1312  architecture armv8-m.main+dsp
1313  fpu fpv5-sp-d16
1314  option nofp remove ALL_FP
1315  costs v7m
1316 end cpu cortex-m33
1318 # FPU entries
1319 # format:
1320 # begin fpu <name>
1321 #   isa <isa-flags-list>
1322 # end fpu <name>
1324 begin fpu vfp
1325  isa VFPv2 FP_DBL
1326 end fpu vfp
1328 begin fpu vfpv2
1329  isa VFPv2 FP_DBL
1330 end fpu vfpv2
1332 begin fpu vfpv3
1333  isa VFPv3 FP_D32
1334 end fpu vfpv3
1336 begin fpu vfpv3-fp16
1337  isa VFPv3 FP_D32 bit_fp16conv
1338 end fpu vfpv3-fp16
1340 begin fpu vfpv3-d16
1341  isa VFPv3 FP_DBL
1342 end fpu vfpv3-d16
1344 begin fpu vfpv3-d16-fp16
1345  isa VFPv3 FP_DBL bit_fp16conv
1346 end fpu vfpv3-d16-fp16
1348 begin fpu vfpv3xd
1349  isa VFPv3
1350 end fpu vfpv3xd
1352 begin fpu vfpv3xd-fp16
1353  isa VFPv3 bit_fp16conv
1354 end fpu vfpv3xd-fp16
1356 begin fpu neon
1357  isa VFPv3 NEON
1358 end fpu neon
1360 begin fpu neon-vfpv3
1361  isa VFPv3 NEON
1362 end fpu neon-vfpv3
1364 begin fpu neon-fp16
1365  isa VFPv3 NEON bit_fp16conv
1366 end fpu neon-fp16
1368 begin fpu vfpv4
1369  isa VFPv4 FP_D32
1370 end fpu vfpv4
1372 begin fpu neon-vfpv4
1373  isa VFPv4 NEON
1374 end fpu neon-vfpv4
1376 begin fpu vfpv4-d16
1377  isa VFPv4 FP_DBL
1378 end fpu vfpv4-d16
1380 begin fpu fpv4-sp-d16
1381  isa VFPv4
1382 end fpu fpv4-sp-d16
1384 begin fpu fpv5-sp-d16
1385  isa FPv5
1386 end fpu fpv5-sp-d16
1388 begin fpu fpv5-d16
1389  isa FPv5 FP_DBL
1390 end fpu fpv5-d16
1392 begin fpu fp-armv8
1393  isa FP_ARMv8
1394 end fpu fp-armv8
1396 begin fpu neon-fp-armv8
1397  isa FP_ARMv8 NEON
1398 end fpu neon-fp-armv8
1400 begin fpu crypto-neon-fp-armv8
1401  isa FP_ARMv8 CRYPTO
1402 end fpu crypto-neon-fp-armv8
1404 # Compatibility aliases.
1405 begin fpu vfp3
1406  isa VFPv3 FP_D32
1407 end fpu vfp3