intel i5 - core? or core2?
Anonymous
swell.k at gmail.com
Sat Aug 21 16:25:45 UTC 2010
"Domagoj S." <rank1seeker at gmail.com> writes:
> 8.1 RELEASE 32bit
>
> # gcc --version
> gcc (GCC) 4.2.1 20070719 [FreeBSD]
>
> As per: http://gcc.gnu.org/gcc-4.2/changes.html
> core2 is supported
It's not! `core' and `core2' for -mtune/-march introduced since gcc43.
$ echo 'int main(){}' | gcc -xc - -o/dev/null -march=core
:1: error: bad value (core) for -march= switch
:1: error: bad value (core) for -mtune= switch
$ echo 'int main(){}' | gcc -xc - -o/dev/null -march=core2
:1: error: bad value (core2) for -march= switch
:1: error: bad value (core2) for -mtune= switch
Setting CPUTYPE to `core2' on amd64 will only add `sse3' to MACHINE_CPU,
even when the underlying compiler/assembler actually supports more
features, e.g. ssse3, sse4.1, etc., cf. conf/112997.
BTW, while clang in base (on /head) supports -march=core2 it's still
better to stick to -march=native, e.g. on my box
CPU: Intel(R) Core(TM)2 Duo CPU E8400 @ 3.00GHz (3177.07-MHz K8-class CPU)
`native' on clang implies `penryn', not a `core2'. While `native' on
gcc45 implies `core2' + extra cflags[1].
[1] -mcx16 -msahf -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144
>
> Setting CPUTYPE(for i386) to: "nocona", "core" or "core2", will at
> the end, ALWAYS set CPUTYPE to: "prescott", which again results in
> set:
> MACHINE_CPU = sse3 sse2 sse i686 mmx i586 i486 i386
You can populate MACHINE_CPU directly, e.g.
CPUTYPE ?= native
MACHINE_CPU != echo ${MACHINE_ARCH}; ${CC} -E -dM -v -march=${CPUTYPE} - </dev/null 2>&1 \
| awk '/SSE|MMX/ && !/MATH/ { FS="__"; gsub("_",".",$$2); print tolower($$2) }'
MACHINE_CPU += i486 i586 i686
Note sure how well it'll work for cross-arch compilation, though.
>
> CPUTYPE?=native is nowhere mentioned "in FreeBSD"
That cruft in bsd.cpu.mk was written in pre-gcc4 days, i.e. when it
didn't support -march=native. Besides, if not maintained to accommodate
for newer gcc's from ports those aliases are more harmful than
useful. And not much code uses MACHINE_CPU in base anyway, only
libcrypto and libz.
More information about the freebsd-hackers
mailing list