]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/arm/t-aprofile
Update copyright years.
[thirdparty/gcc.git] / gcc / config / arm / t-aprofile
CommitLineData
8d9254fc 1# Copyright (C) 2012-2020 Free Software Foundation, Inc.
c9acb877
MGD
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
2f738ca5 27# Arch and FPU variants to build libraries with
c9acb877 28
93aa40fe
RE
29MULTI_ARCH_OPTS_A = march=armv7-a/march=armv7-a+fp/march=armv7-a+simd/march=armv7ve+simd/march=armv8-a/march=armv8-a+simd
30MULTI_ARCH_DIRS_A = v7-a v7-a+fp v7-a+simd v7ve+simd v8-a v8-a+simd
c9acb877 31
93aa40fe 32# ARMv7-A - build nofp, fp-d16 and SIMD variants
c9acb877 33
93aa40fe
RE
34MULTILIB_REQUIRED += mthumb/march=armv7-a/mfloat-abi=soft
35MULTILIB_REQUIRED += mthumb/march=armv7-a+fp/mfloat-abi=hard
36MULTILIB_REQUIRED += mthumb/march=armv7-a+fp/mfloat-abi=softfp
37MULTILIB_REQUIRED += mthumb/march=armv7-a+simd/mfloat-abi=hard
38MULTILIB_REQUIRED += mthumb/march=armv7-a+simd/mfloat-abi=softfp
c9acb877 39
93aa40fe
RE
40# ARMv7VE - only build a SIMD (+VFPv4) variant.
41MULTILIB_REQUIRED += mthumb/march=armv7ve+simd/mfloat-abi=hard
42MULTILIB_REQUIRED += mthumb/march=armv7ve+simd/mfloat-abi=softfp
03c9d859 43
93aa40fe
RE
44# ARMv8-A - build nofp and SIMD variants.
45MULTILIB_REQUIRED += mthumb/march=armv8-a/mfloat-abi=soft
46MULTILIB_REQUIRED += mthumb/march=armv8-a+simd/mfloat-abi=hard
47MULTILIB_REQUIRED += mthumb/march=armv8-a+simd/mfloat-abi=softfp
03c9d859 48
93aa40fe 49# Matches
03c9d859 50
93aa40fe 51# Arch Matches
cab81ec0
RE
52# Map all basic v7-a arch extensions to v7-a
53MULTILIB_MATCHES += $(foreach ARCH, $(v7_a_arch_variants), \
54 march?armv7-a=march?armv7-a$(ARCH))
55
93aa40fe
RE
56# Map all v7-a FP variants to vfpv3-d16 (+fp)
57MULTILIB_MATCHES += $(foreach ARCH, $(filter-out +fp, $(v7_a_nosimd_variants)), \
58 march?armv7-a+fp=march?armv7-a$(ARCH))
03c9d859 59
cab81ec0
RE
60MULTILIB_MATCHES += $(foreach ARCHVAR, $(v7_a_arch_variants), \
61 $(foreach ARCH, $(v7_a_nosimd_variants), \
62 march?armv7-a+fp=march?armv7-a$(ARCHVAR)$(ARCH)))
63
93aa40fe
RE
64# Map all v7-a SIMD variants to neon-vfpv3 (+simd)
65MULTILIB_MATCHES += $(foreach ARCH, $(filter-out +simd, $(v7_a_simd_variants)), \
66 march?armv7-a+simd=march?armv7-a$(ARCH))
c9acb877 67
cab81ec0
RE
68MULTILIB_MATCHES += $(foreach ARCHVAR, $(v7_a_arch_variants), \
69 $(foreach ARCH, $(v7_a_simd_variants), \
70 march?armv7-a+simd=march?armv7-a$(ARCHVAR)$(ARCH)))
71
93aa40fe
RE
72# Neither FP nor SIMD: map v7ve to v7-a
73MULTILIB_MATCHES += march?armv7-a=march?armv7ve
c9acb877 74
93aa40fe
RE
75# ARMv7ve FP-only variants: map down to v7-a+fp
76MULTILIB_MATCHES += $(foreach ARCH, $(v7ve_nosimd_variants), \
77 march?armv7-a+fp=march?armv7ve$(ARCH))
2f738ca5 78
93aa40fe
RE
79# ARMv7ve with SIMD, but SIMD is less capable than the default - map down to v7-a+simd
80MULTILIB_MATCHES += $(foreach ARCH, $(v7ve_vfpv3_simd_variants), \
81 march?armv7-a+simd=march?armv7ve$(ARCH))
c9acb877 82
93aa40fe
RE
83# ARMv8 without SIMD: map down to base architecture
84MULTILIB_MATCHES += $(foreach ARCH, $(v8_a_nosimd_variants), \
85 march?armv8-a=march?armv8-a$(ARCH))
86
87# ARMv8 with SIMD: map down to base arch + simd
88MULTILIB_MATCHES += march?armv8-a+simd=march?armv8-a+crc+simd \
89 $(foreach ARCH, $(filter-out +simd, $(v8_a_simd_variants)), \
90 march?armv8-a+simd=march?armv8-a$(ARCH) \
91 march?armv8-a+simd=march?armv8-a+crc$(ARCH))
92
93# Baseline v8.1-a: map down to baseline v8-a
94MULTILIB_MATCHES += march?armv8-a=march?armv8.1-a
95
96# Map all v8.1-a SIMD variants to v8-a+simd
97MULTILIB_MATCHES += $(foreach ARCH, $(v8_1_a_simd_variants), \
98 march?armv8-a+simd=march?armv8.1-a$(ARCH))
99
100# Baseline v8.2-a: map down to baseline v8-a
101MULTILIB_MATCHES += march?armv8-a=march?armv8.2-a
102
a00a4222
KT
103# Baseline v8.3-a: map down to baseline v8-a
104MULTILIB_MATCHES += march?armv8-a=march?armv8.3-a
105
106# Map all v8.2-a and v8.3-a SIMD variants to v8-a+simd
93aa40fe 107MULTILIB_MATCHES += $(foreach ARCH, $(v8_2_a_simd_variants), \
a00a4222
KT
108 march?armv8-a+simd=march?armv8.2-a$(ARCH) \
109 march?armv8-a+simd=march?armv8.3-a$(ARCH))
93aa40fe 110
946c6c45
KT
111# Baseline v8.4-a: map down to baseline v8-a
112MULTILIB_MATCHES += march?armv8-a=march?armv8.4-a
113
114# Map all v8.4-a SIMD variants to v8-a+simd
115MULTILIB_MATCHES += $(foreach ARCH, $(v8_4_a_simd_variants), \
116 march?armv8-a+simd=march?armv8.4-a$(ARCH))
117
ae78a89f
SD
118# Baseline v8.5-a: map down to baseline v8-a
119MULTILIB_MATCHES += march?armv8-a=march?armv8.5-a
120
121# Map all v8.5-a SIMD variants to v8-a+simd
122MULTILIB_MATCHES += $(foreach ARCH, $(v8_5_a_simd_variants), \
123 march?armv8-a+simd=march?armv8.5-a$(ARCH))
124
93aa40fe
RE
125# Use Thumb libraries for everything.
126
127MULTILIB_REUSE += mthumb/march.armv7-a/mfloat-abi.soft=marm/march.armv7-a/mfloat-abi.soft
128
129MULTILIB_REUSE += mthumb/march.armv8-a/mfloat-abi.soft=marm/march.armv8-a/mfloat-abi.soft
130
131MULTILIB_REUSE += $(foreach ABI, hard softfp, \
132 $(foreach ARCH, armv7-a+fp armv7-a+simd armv7ve+simd armv8-a+simd, \
133 mthumb/march.$(ARCH)/mfloat-abi.$(ABI)=marm/march.$(ARCH)/mfloat-abi.$(ABI)))
134
135# Softfp but no FP, use the soft-float libraries.
136MULTILIB_REUSE += $(foreach MODE, arm thumb, \
137 $(foreach ARCH, armv7-a armv8-a, \
138 mthumb/march.$(ARCH)/mfloat-abi.soft=m$(MODE)/march.$(ARCH)/mfloat-abi.softfp))