diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2022-09-21 10:10:21 +0100 |
---|---|---|
committer | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2022-09-21 10:10:21 +0100 |
commit | dd9e5f4db2debf1429feab7f785962ccef6e0dbd (patch) | |
tree | 19ed21d6ed866632f7ba74f61a4f28ef760ae664 /gcc/value-range.cc | |
parent | d2278da1c3cb7bf8b3d96c86dbef2982bf4cc54a (diff) | |
download | gcc-dd9e5f4db2debf1429feab7f785962ccef6e0dbd.zip gcc-dd9e5f4db2debf1429feab7f785962ccef6e0dbd.tar.gz gcc-dd9e5f4db2debf1429feab7f785962ccef6e0dbd.tar.bz2 |
aarch64: Rewrite -march=native to -mcpu if no other -mcpu or -mtune is given
We have received requests to improve the out-of-the box experience and
performance of AArch64 GCC users, particularly those porting software from other
architectures. This has many aspects. One such aspect are apps built natively
with an -march=native used as a tuning flag in the Makefile.
On AArch64 this selects the right architecture features on GNU+Linux for the
host system but tunes for the "generic" CPU target.
This patch makes GCC also tune for the host CPU, as well as selecting its
architecture. That is, it translates -march=native into -mcpu=native.
This maintains the documentation that it "causes the compiler to pick the
architecture of the host system" since -mcpu=native does that, but it also
gives a better performance experience for the user.
If the user explicitly asked for a particular CPU tuning through -mcpu or
-mtune then we don't do this rewriting so that the user option is honoured.
This would have been a one-line patch if it wasn't for --with-tune
configure-time arguments. When GCC is configured with --with-tune=<CORE> the
OPTION_DEFAULT_SPECS will insert an -mtune=<CORE> in the options if no other
-mcpu or -mtune options were given. This will spook the aforementioned desired
rewriting of -march=native into -mcpu=native, though I'd argue that we want to
do the rewrite even then. Therefore, this patch moves some specs in aarch64.h
around and refactors the --with-tune rewriting into CONFIG_TUNE_SPEC so that
the materialization of the implicit -mtune=<CORE> does not happen if -march=native
is used.
Bootstrapped and tested on aarch64-none-linux-gnu and checked with the output
of -### from the driver that the option rewriting works as expected on
aarch64-linux-gnu.
gcc/ChangeLog:
* config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT,
EXTRA_SPEC_FUNCTIONS, MCPU_MTUNE_NATIVE_SPECS): Move definitions up before
OPTION_DEFAULT_SPECS.
(MCPU_MTUNE_NATIVE_SPECS): Pass "cpu" to
local_cpu_detect when rewriting -march=native and no -mcpu or -mtune
is given.
(CONFIG_TUNE_SPEC): Define.
(OPTION_DEFAULT_SPECS): Use CONFIG_TUNE_SPEC for "tune".
Diffstat (limited to 'gcc/value-range.cc')
0 files changed, 0 insertions, 0 deletions