These options are defined for AArch64 implementations:
-mabi=
name
ilp32
’ for SysV-like data model where int, long int and pointer are 32-bit, and ‘lp64
’ for SysV-like data model where int is 32-bit, but long int and pointer are 64-bit. The default depends on the specific target configuration. Note that the LP64 and ILP32 ABIs are not link-compatible; you must compile your entire program with the same ABI, and link with a compatible set of libraries.
-mbig-endian
aarch64_be-*-*
’ target. -mgeneral-regs-only
-mlittle-endian
aarch64-*-*
’ but not an ‘aarch64_be-*-*
’ target. -mcmodel=tiny
small
’. -mcmodel=small
-mcmodel=large
-mstrict-align
-momit-leaf-frame-pointer
-mno-omit-leaf-frame-pointer
-mtls-dialect=desc
-mtls-dialect=traditional
-mtls-size=
size
-mfix-cortex-a53-835769
-mno-fix-cortex-a53-835769
-mfix-cortex-a53-843419
-mno-fix-cortex-a53-843419
-mlow-precision-recip-sqrt
-mno-low-precision-recip-sqrt
-ffast-math
enables the reciprocal square root approximation, which in turn depends on the target processor. -march=
name
The permissible values for arch are ‘armv8-a
’, ‘armv8.1-a
’ or native.
The value ‘armv8.1-a
’ implies ‘armv8-a
’ and enables compiler support for the ARMv8.1 architecture extension. In particular, it enables the ‘+crc
’ and ‘+lse
’ features.
The value ‘native
’ is available on native AArch64 GNU/Linux and causes the compiler to pick the architecture of the host system. This option has no effect if the compiler is unable to recognize the architecture of the host system,
The permissible values for feature are listed in the sub-section on -march
and -mcpu
Feature Modifiers. Where conflicting feature modifiers are specified, the right-most feature is used.
GCC uses name to determine what kind of instructions it can emit when generating assembly code. If -march
is specified without either of -mtune
or -mcpu
also being specified, the code is tuned to perform well across a range of target processors implementing the target architecture.
-mtune=
name
generic
’, ‘cortex-a35
’, ‘cortex-a53
’, ‘cortex-a57
’, ‘cortex-a72
’, ‘exynos-m1
’, ‘qdf24xx
’, ‘thunderx
’, ‘xgene1
’. Additionally, this option can specify that GCC should tune the performance of the code for a big.LITTLE system. Permissible values for this option are: ‘cortex-a57.cortex-a53
’, ‘cortex-a72.cortex-a53
’.
Additionally on native AArch64 GNU/Linux systems the value ‘native
’ is available. This option causes the compiler to pick the architecture of and tune the performance of the code for the processor of the host system. This option has no effect if the compiler is unable to recognize the architecture of the host system.
Where none of -mtune=
, -mcpu=
or -march=
are specified, the code is tuned to perform well across a range of target processors.
This option cannot be suffixed by feature modifiers.
-mcpu=
name
-mtune
. The permissible values for feature are documented in the sub-section on -march
and -mcpu
Feature Modifiers. Where conflicting feature modifiers are specified, the right-most feature is used. Additionally on native AArch64 GNU/Linux systems the value ‘native
’ is available. This option causes the compiler to tune the performance of the code for the processor of the host system. This option has no effect if the compiler is unable to recognize the architecture of the host system.
GCC uses name to determine what kind of instructions it can emit when generating assembly code (as if by -march
) and to determine the target processor for which to tune for performance (as if by -mtune
). Where this option is used in conjunction with -march
or -mtune
, those options take precedence over the appropriate part of this option.
-moverride=
string
-mtune=
switch. The syntax, semantics, and accepted values for string in this option are not guaranteed to be consistent across releases. This option is only intended to be useful when developing GCC.
-mpc-relative-literal-loads
-mcmodel=tiny
. -march
and -mcpu
Feature ModifiersFeature modifiers used with -march
and -mcpu
can be any of the following and their inverses nofeature:
crc
’-march=armv8.1-a
. crypto
’fp
’-march
and -mcpu
. simd
’-march
and -mcpu
. lse
’-march=armv8.1-a
. That is, crypto
implies simd
implies fp
. Conversely, nofp
(or equivalently, -mgeneral-regs-only
) implies nosimd
implies nocrypto
.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.3.0/gcc/AArch64-Options.html