]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/aarch64/aarch64.opt
Update copyright years.
[thirdparty/gcc.git] / gcc / config / aarch64 / aarch64.opt
CommitLineData
43e9d192 1; Machine description for AArch64 architecture.
8d9254fc 2; Copyright (C) 2009-2020 Free Software Foundation, Inc.
43e9d192
IB
3; Contributed by ARM Ltd.
4;
5; This file is part of GCC.
6;
7; GCC is free software; you can redistribute it and/or modify it
8; under the terms of the GNU General Public License as published by
9; the Free Software Foundation; either version 3, or (at your option)
10; any later version.
11;
12; GCC is distributed in the hope that it will be useful, but
13; WITHOUT ANY WARRANTY; without even the implied warranty of
14; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15; General Public License 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
21HeaderInclude
22config/aarch64/aarch64-opts.h
23
361fb3ee
KT
24TargetVariable
25enum aarch64_processor explicit_tune_core = aarch64_none
26
27TargetVariable
28enum aarch64_arch explicit_arch = aarch64_no_arch
29
30TargetSave
31const char *x_aarch64_override_tune_string
32
33TargetVariable
28108a53 34uint64_t aarch64_isa_flags = 0
361fb3ee 35
30afdf34
SD
36TargetVariable
37unsigned aarch64_enable_bti = 2
38
43e9d192
IB
39; The TLS dialect names to use with -mtls-dialect.
40
41Enum
42Name(tls_type) Type(enum aarch64_tls_type)
43The possible TLS dialects:
44
45EnumValue
46Enum(tls_type) String(trad) Value(TLS_TRADITIONAL)
47
48EnumValue
49Enum(tls_type) String(desc) Value(TLS_DESCRIPTORS)
50
51; The code model option names for -mcmodel.
52
53Enum
54Name(cmodel) Type(enum aarch64_code_model)
55The code model option names for -mcmodel:
56
57EnumValue
58Enum(cmodel) String(tiny) Value(AARCH64_CMODEL_TINY)
59
60EnumValue
61Enum(cmodel) String(small) Value(AARCH64_CMODEL_SMALL)
62
63EnumValue
64Enum(cmodel) String(large) Value(AARCH64_CMODEL_LARGE)
65
43e9d192
IB
66mbig-endian
67Target Report RejectNegative Mask(BIG_END)
a7b2e184 68Assume target CPU is configured as big endian.
43e9d192
IB
69
70mgeneral-regs-only
361fb3ee 71Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Save
a7b2e184 72Generate code which uses only the general registers.
43e9d192 73
75cf1494 74mfix-cortex-a53-835769
361fb3ee 75Target Report Var(aarch64_fix_a53_err835769) Init(2) Save
a7b2e184 76Workaround for ARM Cortex-A53 Erratum number 835769.
75cf1494 77
bf05ef76 78mfix-cortex-a53-843419
48bb1a55 79Target Report Var(aarch64_fix_a53_err843419) Init(2) Save
a7b2e184 80Workaround for ARM Cortex-A53 Erratum number 843419.
bf05ef76 81
43e9d192
IB
82mlittle-endian
83Target Report RejectNegative InverseMask(BIG_END)
a7b2e184 84Assume target CPU is configured as little endian.
43e9d192
IB
85
86mcmodel=
361fb3ee 87Target RejectNegative Joined Enum(cmodel) Var(aarch64_cmodel_var) Init(AARCH64_CMODEL_SMALL) Save
a7b2e184 88Specify the code model.
43e9d192
IB
89
90mstrict-align
675d044c 91Target Report Mask(STRICT_ALIGN) Save
a7b2e184 92Don't assume that unaligned accesses are handled by the system.
43e9d192
IB
93
94momit-leaf-frame-pointer
361fb3ee 95Target Report Var(flag_omit_leaf_frame_pointer) Init(2) Save
a7b2e184 96Omit the frame pointer in leaf functions.
43e9d192
IB
97
98mtls-dialect=
361fb3ee 99Target RejectNegative Joined Enum(tls_type) Var(aarch64_tls_dialect) Init(TLS_DESCRIPTORS) Save
a7b2e184 100Specify TLS dialect.
43e9d192 101
5eee3c34
JW
102mtls-size=
103Target RejectNegative Joined Var(aarch64_tls_size) Enum(aarch64_tls_size)
104Specifies bit size of immediate TLS offsets. Valid values are 12, 24, 32, 48.
105
106Enum
107Name(aarch64_tls_size) Type(int)
108
109EnumValue
110Enum(aarch64_tls_size) String(12) Value(12)
111
112EnumValue
113Enum(aarch64_tls_size) String(24) Value(24)
114
115EnumValue
116Enum(aarch64_tls_size) String(32) Value(32)
117
118EnumValue
119Enum(aarch64_tls_size) String(48) Value(48)
120
43e9d192 121march=
6fdbe419 122Target RejectNegative Negative(march=) ToLower Joined Var(aarch64_arch_string)
266c2b54 123Use features of architecture ARCH.
43e9d192
IB
124
125mcpu=
6fdbe419 126Target RejectNegative Negative(mcpu=) ToLower Joined Var(aarch64_cpu_string)
266c2b54 127Use features of and optimize for CPU.
43e9d192
IB
128
129mtune=
6fdbe419 130Target RejectNegative Negative(mtune=) ToLower Joined Var(aarch64_tune_string)
266c2b54 131Optimize for CPU.
17a819cb
YZ
132
133mabi=
134Target RejectNegative Joined Enum(aarch64_abi) Var(aarch64_abi) Init(AARCH64_ABI_DEFAULT)
266c2b54 135Generate code that conforms to the specified ABI.
17a819cb 136
8dec06f2
JG
137moverride=
138Target RejectNegative ToLower Joined Var(aarch64_override_tune_string)
266c2b54 139-moverride=<string> Power users only! Override CPU optimization parameters.
8dec06f2 140
17a819cb
YZ
141Enum
142Name(aarch64_abi) Type(int)
143Known AArch64 ABIs (for use with the -mabi= option):
144
145EnumValue
146Enum(aarch64_abi) String(ilp32) Value(AARCH64_ABI_ILP32)
147
148EnumValue
149Enum(aarch64_abi) String(lp64) Value(AARCH64_ABI_LP64)
b4f50fd4
RR
150
151mpc-relative-literal-loads
9ee6540a 152Target Report Save Var(pcrelative_literal_loads) Init(2) Save
b4f50fd4 153PC relative literal loads.
a6fc00da 154
efac62a3
ST
155mbranch-protection=
156Target RejectNegative Joined Var(aarch64_branch_protection_string) Save
157Use branch-protection features.
158
db58fd89 159msign-return-address=
68a57628 160Target WarnRemoved RejectNegative Joined Enum(aarch64_ra_sign_scope_t) Var(aarch64_ra_sign_scope) Init(AARCH64_FUNCTION_NONE) Save
db58fd89
JW
161Select return address signing scope.
162
163Enum
164Name(aarch64_ra_sign_scope_t) Type(enum aarch64_function_type)
165Supported AArch64 return address signing scope (for use with -msign-return-address= option):
166
167EnumValue
168Enum(aarch64_ra_sign_scope_t) String(none) Value(AARCH64_FUNCTION_NONE)
169
170EnumValue
171Enum(aarch64_ra_sign_scope_t) String(non-leaf) Value(AARCH64_FUNCTION_NON_LEAF)
172
173EnumValue
174Enum(aarch64_ra_sign_scope_t) String(all) Value(AARCH64_FUNCTION_ALL)
175
a6fc00da 176mlow-precision-recip-sqrt
88e25f47 177Target Var(flag_mrecip_low_precision_sqrt) Optimization
98daafa0
EM
178Enable the reciprocal square root approximation. Enabling this reduces
179precision of reciprocal square root results to about 16 bits for
180single precision and to 32 bits for double precision.
181
182mlow-precision-sqrt
88e25f47 183Target Var(flag_mlow_precision_sqrt) Optimization
98daafa0
EM
184Enable the square root approximation. Enabling this reduces
185precision of square root results to about 16 bits for
186single precision and to 32 bits for double precision.
187If enabled, it implies -mlow-precision-recip-sqrt.
79a2bc2d
EM
188
189mlow-precision-div
88e25f47 190Target Var(flag_mlow_precision_div) Optimization
79a2bc2d
EM
191Enable the division approximation. Enabling this reduces
192precision of division results to about 16 bits for
193single precision and to 32 bits for double precision.
c10e3d7f 194
43cacb12
RS
195Enum
196Name(sve_vector_bits) Type(enum aarch64_sve_vector_bits_enum)
197The possible SVE vector lengths:
198
199EnumValue
200Enum(sve_vector_bits) String(scalable) Value(SVE_SCALABLE)
201
202EnumValue
203Enum(sve_vector_bits) String(128) Value(SVE_128)
204
205EnumValue
206Enum(sve_vector_bits) String(256) Value(SVE_256)
207
208EnumValue
209Enum(sve_vector_bits) String(512) Value(SVE_512)
210
211EnumValue
212Enum(sve_vector_bits) String(1024) Value(SVE_1024)
213
214EnumValue
215Enum(sve_vector_bits) String(2048) Value(SVE_2048)
216
217msve-vector-bits=
218Target RejectNegative Joined Enum(sve_vector_bits) Var(aarch64_sve_vector_bits) Init(SVE_SCALABLE)
f499726a 219-msve-vector-bits=<number> Set the number of bits in an SVE vector register.
43cacb12 220
c10e3d7f 221mverbose-cost-dump
88e25f47 222Target Undocumented Var(flag_aarch64_verbose_cost)
d1132c1b 223Enables verbose cost model dumping in the debug dump files.
3b0c2502
RE
224
225mtrack-speculation
226Target Var(aarch64_track_speculation)
227Generate code to track when the CPU might be speculating incorrectly.
cd0b2d36
RR
228
229mstack-protector-guard=
230Target RejectNegative Joined Enum(stack_protector_guard) Var(aarch64_stack_protector_guard) Init(SSP_GLOBAL)
231Use given stack-protector guard.
232
233Enum
234Name(stack_protector_guard) Type(enum stack_protector_guard)
235Valid arguments to -mstack-protector-guard=:
236
237EnumValue
238Enum(stack_protector_guard) String(sysreg) Value(SSP_SYSREG)
239
240EnumValue
241Enum(stack_protector_guard) String(global) Value(SSP_GLOBAL)
242
243mstack-protector-guard-reg=
244Target Joined RejectNegative String Var(aarch64_stack_protector_guard_reg_str)
245Use the system register specified on the command line as the stack protector
246guard register. This option is for use with fstack-protector-strong and
247not for use in user-land code.
248
249mstack-protector-guard-offset=
250Target Joined RejectNegative String Var(aarch64_stack_protector_guard_offset_str)
251Use an immediate to offset from the stack protector guard register, sp_el0.
252This option is for use with fstack-protector-strong and not for use in
253user-land code.
254
255TargetVariable
256long aarch64_stack_protector_guard_offset = 0
257
3950b229
RH
258moutline-atomics
259Target Report Mask(OUTLINE_ATOMICS) Save
260Generate local calls to out-of-line atomic operations.
eb23241b
RS
261
262-param=aarch64-sve-compare-costs=
263Target Joined UInteger Var(aarch64_sve_compare_costs) Init(1) IntegerRange(0, 1) Param
264When vectorizing for SVE, consider using unpacked vectors for smaller elements and use the cost model to pick the cheapest approach. Also use the cost model to choose between SVE and Advanced SIMD vectorization.