aarch64.opt revision 1.8
1; Machine description for AArch64 architecture. 2; Copyright (C) 2009-2019 Free Software Foundation, Inc. 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 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 34unsigned long aarch64_isa_flags = 0 35 36TargetVariable 37unsigned aarch64_enable_bti = 2 38 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 66mbig-endian 67Target Report RejectNegative Mask(BIG_END) 68Assume target CPU is configured as big endian. 69 70mgeneral-regs-only 71Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Save 72Generate code which uses only the general registers. 73 74mfix-cortex-a53-835769 75Target Report Var(aarch64_fix_a53_err835769) Init(2) Save 76Workaround for ARM Cortex-A53 Erratum number 835769. 77 78mfix-cortex-a53-843419 79Target Report Var(aarch64_fix_a53_err843419) Init(2) Save 80Workaround for ARM Cortex-A53 Erratum number 843419. 81 82mlittle-endian 83Target Report RejectNegative InverseMask(BIG_END) 84Assume target CPU is configured as little endian. 85 86mcmodel= 87Target RejectNegative Joined Enum(cmodel) Var(aarch64_cmodel_var) Init(AARCH64_CMODEL_SMALL) Save 88Specify the code model. 89 90mstrict-align 91Target Report Mask(STRICT_ALIGN) Save 92Don't assume that unaligned accesses are handled by the system. 93 94momit-leaf-frame-pointer 95Target Report Var(flag_omit_leaf_frame_pointer) Init(2) Save 96Omit the frame pointer in leaf functions. 97 98mtls-dialect= 99Target RejectNegative Joined Enum(tls_type) Var(aarch64_tls_dialect) Init(TLS_DESCRIPTORS) Save 100Specify TLS dialect. 101 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 121march= 122Target RejectNegative Negative(march=) ToLower Joined Var(aarch64_arch_string) 123Use features of architecture ARCH. 124 125mcpu= 126Target RejectNegative Negative(mcpu=) ToLower Joined Var(aarch64_cpu_string) 127Use features of and optimize for CPU. 128 129mtune= 130Target RejectNegative Negative(mtune=) ToLower Joined Var(aarch64_tune_string) 131Optimize for CPU. 132 133mabi= 134Target RejectNegative Joined Enum(aarch64_abi) Var(aarch64_abi) Init(AARCH64_ABI_DEFAULT) 135Generate code that conforms to the specified ABI. 136 137moverride= 138Target RejectNegative ToLower Joined Var(aarch64_override_tune_string) 139-moverride=<string> Power users only! Override CPU optimization parameters. 140 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) 150 151mpc-relative-literal-loads 152Target Report Save Var(pcrelative_literal_loads) Init(2) Save 153PC relative literal loads. 154 155mbranch-protection= 156Target RejectNegative Joined Var(aarch64_branch_protection_string) Save 157Use branch-protection features. 158 159msign-return-address= 160Target Deprecated RejectNegative Joined Enum(aarch64_ra_sign_scope_t) Var(aarch64_ra_sign_scope) Init(AARCH64_FUNCTION_NONE) Save 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 176mlow-precision-recip-sqrt 177Target Var(flag_mrecip_low_precision_sqrt) Optimization 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 183Target Var(flag_mlow_precision_sqrt) Optimization 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. 188 189mlow-precision-div 190Target Var(flag_mlow_precision_div) Optimization 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. 194 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) 219-msve-vector-bits=<number> Set the number of bits in an SVE vector register. 220 221mverbose-cost-dump 222Target Undocumented Var(flag_aarch64_verbose_cost) 223Enables verbose cost model dumping in the debug dump files. 224 225mtrack-speculation 226Target Var(aarch64_track_speculation) 227Generate code to track when the CPU might be speculating incorrectly. 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 258