Is -march/-mtune=native actually supported on FreeBSD arm* or aarch64?
Dimitry Andric
dim at FreeBSD.org
Fri Jan 5 12:57:41 UTC 2018
On 5 Jan 2018, at 06:52, Jan Beich <jbeich at FreeBSD.org> wrote:
>
> Some ports pass -march=native and/or -mtune=native. Both are extensively
> documented by GCC for x86. For other architectures some excerpts say
> "native" is only supported on Linux (via /proc/cpuinfo). For example,
>
> $ uname -p
> armv6
> $ echo 'int main() {}' >a.c
> $ clang -march=native a.c
> clang: error: the clang compiler does not support '-march=native'
> $ clang -mtune=native a.c
> $ pkg install -qy gcc7
> $ gcc7 -march=native a.c
> $ gcc7 -mtune=native a.c
>
> $ uname -p
> aarch64
> $ echo 'int main() {}' >a.c
> $ clang -march=native a.c
> clang: error: the clang compiler does not support '-march=native'
> $ clang -mtune=native a.c
> clang: error: the clang compiler does not support '-mtune=native'
> $ pkg install -qy gcc7
> $ gcc7 -march=native a.c
> $ gcc7 -mtune=native a.c
>
> What's the rationale for Clang vs. GCC difference? Is it safe to run
> FreeBSD arm* -mtune=native binaries on CPUs older than build machine?
On non-x86, llvm has not implemented CPU detection, as far as I know.
And since we don't export any CPU identification sysctl or even a
/proc/cpuinfo, getting that information from userland is tricky. (I've
seen programs that attempt to parse /var/run/dmesg.boot, but it is
very error-prone, obviously.)
It is safer to just specify the target CPU explicitly, IMO.
-Dimitry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 223 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.freebsd.org/pipermail/freebsd-toolchain/attachments/20180105/8fef1ce4/attachment.sig>
More information about the freebsd-toolchain
mailing list