Add assember CFI directives to millicode division and remainder routines.
[official-gcc.git] / gcc / config / arm / t-aprofile
blob5aaf98ff806cba9b58b9b0dc7e269d5455775cc7
1 # Copyright (C) 2012-2023 Free Software Foundation, Inc.
3 # This file is part of GCC.
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.
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.
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/>.
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.
27 # Arch and FPU variants to build libraries with
29 MULTI_ARCH_OPTS_A       = march=armv7-a/march=armv7-a+fp/march=armv7-a+simd/march=armv7ve+simd/march=armv8-a/march=armv8-a+simd
30 MULTI_ARCH_DIRS_A       = v7-a v7-a+fp v7-a+simd v7ve+simd v8-a v8-a+simd
32 # ARMv7-A - build nofp, fp-d16 and SIMD variants
34 MULTILIB_REQUIRED       += mthumb/march=armv7-a/mfloat-abi=soft
35 MULTILIB_REQUIRED       += mthumb/march=armv7-a+fp/mfloat-abi=hard
36 MULTILIB_REQUIRED       += mthumb/march=armv7-a+fp/mfloat-abi=softfp
37 MULTILIB_REQUIRED       += mthumb/march=armv7-a+simd/mfloat-abi=hard
38 MULTILIB_REQUIRED       += mthumb/march=armv7-a+simd/mfloat-abi=softfp
40 # ARMv7VE - only build a SIMD (+VFPv4) variant.
41 MULTILIB_REQUIRED       += mthumb/march=armv7ve+simd/mfloat-abi=hard
42 MULTILIB_REQUIRED       += mthumb/march=armv7ve+simd/mfloat-abi=softfp
44 # ARMv8-A - build nofp and SIMD variants.
45 MULTILIB_REQUIRED       += mthumb/march=armv8-a/mfloat-abi=soft
46 MULTILIB_REQUIRED       += mthumb/march=armv8-a+simd/mfloat-abi=hard
47 MULTILIB_REQUIRED       += mthumb/march=armv8-a+simd/mfloat-abi=softfp
49 # Matches
51 # Arch Matches
52 # Map all basic v7-a arch extensions to v7-a
53 MULTILIB_MATCHES        += $(foreach ARCH, $(v7_a_arch_variants), \
54                              march?armv7-a=march?armv7-a$(ARCH))
56 # Map all v7-a FP variants to vfpv3-d16 (+fp)
57 MULTILIB_MATCHES        += $(foreach ARCH, $(filter-out +fp, $(v7_a_nosimd_variants)), \
58                              march?armv7-a+fp=march?armv7-a$(ARCH))
60 MULTILIB_MATCHES        += $(foreach ARCHVAR, $(v7_a_arch_variants), \
61                              $(foreach ARCH, $(v7_a_nosimd_variants), \
62                                march?armv7-a+fp=march?armv7-a$(ARCHVAR)$(ARCH)))
64 # Map all v7-a SIMD variants to neon-vfpv3 (+simd)
65 MULTILIB_MATCHES        += $(foreach ARCH, $(filter-out +simd, $(v7_a_simd_variants)), \
66                              march?armv7-a+simd=march?armv7-a$(ARCH))
68 MULTILIB_MATCHES        += $(foreach ARCHVAR, $(v7_a_arch_variants), \
69                              $(foreach ARCH, $(v7_a_simd_variants), \
70                                march?armv7-a+simd=march?armv7-a$(ARCHVAR)$(ARCH)))
72 # Neither FP nor SIMD: map v7ve to v7-a
73 MULTILIB_MATCHES        += march?armv7-a=march?armv7ve
75 # ARMv7ve FP-only variants: map down to v7-a+fp
76 MULTILIB_MATCHES        += $(foreach ARCH, $(v7ve_nosimd_variants), \
77                              march?armv7-a+fp=march?armv7ve$(ARCH))
79 # ARMv7ve with SIMD, but SIMD is less capable than the default - map down to v7-a+simd
80 MULTILIB_MATCHES        += $(foreach ARCH, $(v7ve_vfpv3_simd_variants), \
81                              march?armv7-a+simd=march?armv7ve$(ARCH))
83 # ARMv8 without SIMD: map down to base architecture
84 MULTILIB_MATCHES        += $(foreach ARCH, $(v8_a_nosimd_variants), \
85                              march?armv8-a=march?armv8-a$(ARCH))
87 # ARMv8 with SIMD: map down to base arch + simd
88 MULTILIB_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))
93 # Baseline v8.1-a: map down to baseline v8-a
94 MULTILIB_MATCHES        += march?armv8-a=march?armv8.1-a
96 # Map all v8.1-a SIMD variants to v8-a+simd
97 MULTILIB_MATCHES        += $(foreach ARCH, $(v8_1_a_simd_variants), \
98                              march?armv8-a+simd=march?armv8.1-a$(ARCH))
100 # Baseline v8.2-a: map down to baseline v8-a
101 MULTILIB_MATCHES        += march?armv8-a=march?armv8.2-a
103 # Baseline v8.3-a: map down to baseline v8-a
104 MULTILIB_MATCHES        += march?armv8-a=march?armv8.3-a
106 # Map all v8.2-a and v8.3-a SIMD variants to v8-a+simd
107 MULTILIB_MATCHES        += $(foreach ARCH, $(v8_2_a_simd_variants), \
108                              march?armv8-a+simd=march?armv8.2-a$(ARCH) \
109                              march?armv8-a+simd=march?armv8.3-a$(ARCH))
111 # Baseline v8.4-a: map down to baseline v8-a
112 MULTILIB_MATCHES        += march?armv8-a=march?armv8.4-a
114 # Map all v8.4-a SIMD variants to v8-a+simd
115 MULTILIB_MATCHES        += $(foreach ARCH, $(v8_4_a_simd_variants), \
116                              march?armv8-a+simd=march?armv8.4-a$(ARCH))
118 # Baseline v8.5-a: map down to baseline v8-a
119 MULTILIB_MATCHES        += march?armv8-a=march?armv8.5-a
121 # Map all v8.5-a SIMD variants to v8-a+simd
122 MULTILIB_MATCHES        += $(foreach ARCH, $(v8_5_a_simd_variants), \
123                              march?armv8-a+simd=march?armv8.5-a$(ARCH))
125 # Baseline v8.6-a: map down to baseline v8-a
126 MULTILIB_MATCHES        += march?armv8-a=march?armv8.6-a
128 # Map all v8.6-a SIMD variants to v8-a+simd
129 MULTILIB_MATCHES        += $(foreach ARCH, $(v8_6_a_simd_variants), \
130                              march?armv8-a+simd=march?armv8.6-a$(ARCH))
132 # Armv9 without SIMD: map down to base architecture
133 MULTILIB_MATCHES    += march?armv8-a=march?armv9-a
134 # No variants without SIMD.
136 # Armv9 with SIMD: map down to base arch + simd
137 MULTILIB_MATCHES    += $(foreach ARCH, $(v9_a_simd_variants), \
138                              march?armv8-a+simd=march?armv9-a$(ARCH))
140 # Use Thumb libraries for everything.
142 MULTILIB_REUSE          += mthumb/march.armv7-a/mfloat-abi.soft=marm/march.armv7-a/mfloat-abi.soft
144 MULTILIB_REUSE          += mthumb/march.armv8-a/mfloat-abi.soft=marm/march.armv8-a/mfloat-abi.soft
146 MULTILIB_REUSE          += $(foreach ABI, hard softfp, \
147                              $(foreach ARCH, armv7-a+fp armv7-a+simd armv7ve+simd armv8-a+simd, \
148                                mthumb/march.$(ARCH)/mfloat-abi.$(ABI)=marm/march.$(ARCH)/mfloat-abi.$(ABI)))
150 # Softfp but no FP, use the soft-float libraries.
151 MULTILIB_REUSE          += $(foreach MODE, arm thumb, \
152                              $(foreach ARCH, armv7-a armv8-a, \
153                                mthumb/march.$(ARCH)/mfloat-abi.soft=m$(MODE)/march.$(ARCH)/mfloat-abi.softfp))