xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/config/arm/t-aprofile (revision 929c70cba110089af68ff46da658d45500ef61a1)
1# Copyright (C) 2012-2017 Free Software Foundation, Inc.
2#
3# This file is part of GCC.
4#
5# GCC is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 3, or (at your option)
8# any later version.
9#
10# GCC is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with GCC; see the file COPYING3.  If not see
17# <http://www.gnu.org/licenses/>.
18
19# This is a target makefile fragment that attempts to get
20# multilibs built for the range of CPU's, FPU's and ABI's that
21# are relevant for the A-profile architecture.  It should
22# not be used in conjunction with another make file fragment and
23# assumes --with-arch, --with-cpu, --with-fpu, --with-float, --with-mode
24# have their default values during the configure step.  We enforce
25# this during the top-level configury.
26
27MULTILIB_OPTIONS     =
28MULTILIB_DIRNAMES    =
29MULTILIB_EXCEPTIONS  =
30MULTILIB_MATCHES     =
31MULTILIB_REUSE	     =
32
33# We have the following hierachy:
34#   ISA: A32 (.) or T32 (thumb)
35#   Architecture: ARMv7-A (v7-a), ARMv7VE (v7ve), or ARMv8-A (v8-a).
36#   FPU: VFPv3-D16 (fpv3), NEONv1 (simdv1), VFPv4-D16 (fpv4),
37#        NEON-VFPV4 (simdvfpv4), NEON for ARMv8 (simdv8), or None (.).
38#   Float-abi: Soft (.), softfp (softfp), or hard (hardfp).
39
40MULTILIB_OPTIONS       += mthumb
41MULTILIB_DIRNAMES      += thumb
42
43MULTILIB_OPTIONS       += march=armv7-a/march=armv7ve/march=armv8-a
44MULTILIB_DIRNAMES      += v7-a v7ve v8-a
45
46MULTILIB_OPTIONS       += mfpu=vfpv3-d16/mfpu=neon/mfpu=vfpv4-d16/mfpu=neon-vfpv4/mfpu=neon-fp-armv8
47MULTILIB_DIRNAMES      += fpv3 simdv1 fpv4 simdvfpv4 simdv8
48
49MULTILIB_OPTIONS       += mfloat-abi=softfp/mfloat-abi=hard
50MULTILIB_DIRNAMES      += softfp hard
51
52
53# Option combinations to build library with
54
55# Default CPU/Arch (ARM is implicitly included because it uses the default
56# multilib)
57MULTILIB_REQUIRED      += mthumb
58
59# ARMv7-A
60MULTILIB_REQUIRED      += *march=armv7-a
61MULTILIB_REQUIRED      += *march=armv7-a/mfpu=vfpv3-d16/mfloat-abi=*
62MULTILIB_REQUIRED      += *march=armv7-a/mfpu=neon/mfloat-abi=*
63
64# ARMv7VE
65MULTILIB_REQUIRED      += *march=armv7ve
66MULTILIB_REQUIRED      += *march=armv7ve/mfpu=vfpv4-d16/mfloat-abi=*
67MULTILIB_REQUIRED      += *march=armv7ve/mfpu=neon-vfpv4/mfloat-abi=*
68
69# ARMv8-A
70MULTILIB_REQUIRED      += *march=armv8-a
71MULTILIB_REQUIRED      += *march=armv8-a/mfpu=neon-fp-armv8/mfloat-abi=*
72
73
74# CPU Matches
75MULTILIB_MATCHES       += march?armv7-a=mcpu?cortex-a8
76MULTILIB_MATCHES       += march?armv7-a=mcpu?cortex-a9
77MULTILIB_MATCHES       += march?armv7-a=mcpu?cortex-a5
78MULTILIB_MATCHES       += march?armv7ve=mcpu?cortex-a7
79MULTILIB_MATCHES       += march?armv7ve=mcpu?cortex-a15
80MULTILIB_MATCHES       += march?armv7ve=mcpu?cortex-a12
81MULTILIB_MATCHES       += march?armv7ve=mcpu?cortex-a17
82MULTILIB_MATCHES       += march?armv7ve=mcpu?cortex-a15.cortex-a7
83MULTILIB_MATCHES       += march?armv7ve=mcpu?cortex-a17.cortex-a7
84MULTILIB_MATCHES       += march?armv8-a=mcpu?cortex-a32
85MULTILIB_MATCHES       += march?armv8-a=mcpu?cortex-a35
86MULTILIB_MATCHES       += march?armv8-a=mcpu?cortex-a53
87MULTILIB_MATCHES       += march?armv8-a=mcpu?cortex-a57
88MULTILIB_MATCHES       += march?armv8-a=mcpu?cortex-a57.cortex-a53
89MULTILIB_MATCHES       += march?armv8-a=mcpu?cortex-a72
90MULTILIB_MATCHES       += march?armv8-a=mcpu?cortex-a72.cortex-a53
91MULTILIB_MATCHES       += march?armv8-a=mcpu?cortex-a73
92MULTILIB_MATCHES       += march?armv8-a=mcpu?cortex-a73.cortex-a35
93MULTILIB_MATCHES       += march?armv8-a=mcpu?cortex-a73.cortex-a53
94MULTILIB_MATCHES       += march?armv8-a=mcpu?exynos-m1
95MULTILIB_MATCHES       += march?armv8-a=mcpu?xgene1
96
97# Arch Matches
98MULTILIB_MATCHES       += march?armv8-a=march?armv8-a+crc
99MULTILIB_MATCHES       += march?armv8-a=march?armv8.1-a
100MULTILIB_MATCHES       += march?armv8-a=march?armv8.1-a+crc
101MULTILIB_MATCHES       += march?armv8-a=march?armv8.2-a
102MULTILIB_MATCHES       += march?armv8-a=march?armv8.2-a+fp16
103
104# FPU matches
105MULTILIB_MATCHES       += mfpu?vfpv3-d16=mfpu?vfpv3
106MULTILIB_MATCHES       += mfpu?vfpv3-d16=mfpu?vfpv3-fp16
107MULTILIB_MATCHES       += mfpu?vfpv3-d16=mfpu?vfpv3-d16-fp16
108MULTILIB_MATCHES       += mfpu?neon=mfpu?neon-fp16
109MULTILIB_MATCHES       += mfpu?vfpv4-d16=mfpu?vfpv4
110MULTILIB_MATCHES       += mfpu?vfpv4-d16=mfpu?fpv5-d16
111MULTILIB_MATCHES       += mfpu?vfpv4-d16=mfpu?fp-armv8
112MULTILIB_MATCHES       += mfpu?neon-fp-armv8=mfpu?crypto-neon-fp-armv8
113MULTILIB_MATCHES       += mfpu?vfp=mfpu?vfpv2
114MULTILIB_MATCHES       += mfpu?neon=mfpu?neon-vfpv3
115
116
117# Map all requests for vfpv3 with a later CPU to vfpv3-d16 v7-a.
118# So if new CPUs are added above at the newer architecture levels,
119# do something to map them below here.
120# We take the approach of mapping down to v7-a regardless of what
121# the fp option is if the integer architecture brings things down.
122# This applies to any similar combination at the v7ve and v8-a arch
123# levels.
124
125MULTILIB_REUSE	      += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.hard
126MULTILIB_REUSE	      += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.softfp
127MULTILIB_REUSE	      += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.hard
128MULTILIB_REUSE	      += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.softfp
129MULTILIB_REUSE	      += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.hard
130MULTILIB_REUSE	      += march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.softfp
131
132
133MULTILIB_REUSE	      += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7ve/mfpu.neon/mfloat-abi.hard
134MULTILIB_REUSE	      += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7ve/mfpu.neon/mfloat-abi.softfp
135MULTILIB_REUSE	      += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv8-a/mfpu.neon/mfloat-abi.hard
136MULTILIB_REUSE	      += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv8-a/mfpu.neon/mfloat-abi.softfp
137MULTILIB_REUSE	      += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.hard
138MULTILIB_REUSE	      += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.softfp
139MULTILIB_REUSE	      += march.armv7-a/mfpu.neon/mfloat-abi.hard=march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.hard
140MULTILIB_REUSE	      += march.armv7-a/mfpu.neon/mfloat-abi.softfp=march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.softfp
141
142
143MULTILIB_REUSE	      += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.hard
144MULTILIB_REUSE	      += march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.softfp
145
146
147MULTILIB_REUSE	      += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.hard
148MULTILIB_REUSE	      += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.softfp
149MULTILIB_REUSE	      += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.hard
150MULTILIB_REUSE	      += march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.softfp
151
152
153
154# And again for mthumb.
155
156MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.hard
157MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.vfpv3-d16/mfloat-abi.softfp
158MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.hard
159MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv3-d16/mfloat-abi.softfp
160MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.hard
161MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.vfpv3-d16/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.vfpv4-d16/mfloat-abi.softfp
162
163
164MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.neon/mfloat-abi.hard
165MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.neon/mfloat-abi.softfp
166MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.neon/mfloat-abi.hard
167MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.neon/mfloat-abi.softfp
168MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.hard
169MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.neon-vfpv4/mfloat-abi.softfp
170MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.hard=mthumb/march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.hard
171MULTILIB_REUSE	      += mthumb/march.armv7-a/mfpu.neon/mfloat-abi.softfp=mthumb/march.armv7-a/mfpu.neon-fp-armv8/mfloat-abi.softfp
172
173
174MULTILIB_REUSE	      += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.hard
175MULTILIB_REUSE	      += mthumb/march.armv7ve/mfpu.vfpv4-d16/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.vfpv4-d16/mfloat-abi.softfp
176
177
178MULTILIB_REUSE	      += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=mthumb/march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.hard
179MULTILIB_REUSE	      += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=mthumb/march.armv8-a/mfpu.neon-vfpv4/mfloat-abi.softfp
180MULTILIB_REUSE	      += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.hard=mthumb/march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.hard
181MULTILIB_REUSE	      += mthumb/march.armv7ve/mfpu.neon-vfpv4/mfloat-abi.softfp=mthumb/march.armv7ve/mfpu.neon-fp-armv8/mfloat-abi.softfp
182