CPUTYPE=native handling

Alexander Best arundel at freebsd.org
Tue Nov 8 21:23:52 UTC 2011


On Tue Nov  8 11, Roman Divacky wrote:
> clang will use "core2" for family=6 and model=15
> 
> check llvm/lib/Support/Host.cpp
> 
> what is the problem? The fact that our gcc from the middle-ages
> does not recognize that?

actually a few months ago quite a lot of gcc commits happend to add newer
optimisations (such as core2) to gcc and some commits aimed at modifying gcc,
so it would make the best -march=native choice there is.

what's the clang command (similar to gcc -march=native -E -v - </dev/null),
one can use to check what actual optimisation clang turns "native" into?

also there seem to be cross-compilation issues. when people are running i386
and want to cross-compile for amd64 and put CPUTYPE=core2 (or any other amd64
cpu) into their make.conf, this gets downgraded by bsd.cpu.mk to prescott.

see http://www.freebsd.org/cgi/query-pr.cgi?pr=conf/84800
and
http://www.mail-archive.com/freebsd-hackers@freebsd.org/msg161451.html

cheers.
alex

> 
> On Tue, Nov 08, 2011 at 09:04:20PM +0000, Alexander Best wrote:
> > On Tue Nov  8 11, Roman Divacky wrote:
> > > On Tue, Nov 08, 2011 at 08:55:39AM +0100, Dimitry Andric wrote:
> > > > On 2011-11-08 01:25, Alexander Best wrote:
> > > > > i've seen dozens of issues, where people set CPUTYPE=native. although this
> > > > > works in a lot of cases, it doesn't in others. why don't we simply add
> > > > > something like
> > > > > 
> > > > > . if ${CPUTYPE} == "native"
> > > > > .  error "bla"
> > > > > . endif
> > > > > 
> > > > > in share/mk/bsd.cpu.mk for now? or at least for the archs, where "native" is
> > > > > known to cause problems.
> > > > 
> > > > What does this solve?  Don't you think it is better to try to fix the
> > > > actual problems?  Some people like being able to optimize for their
> > > 
> > > Yes, we definitely should aim for fixing the problems instead of working
> > > around them.
> > > 
> > > This way both clang and freebsd benefits.
> > 
> > for me -march=native reports:
> > 
> > otaku% gcc -march=native -E -v - </dev/null
> > Using built-in specs.
> > Target: amd64-undermydesk-freebsd
> > Configured with: FreeBSD/amd64 system compiler
> > Thread model: posix
> > gcc version 4.2.2 20070831 prerelease [FreeBSD]
> >  /usr/libexec/cc1 -E -quiet -v -D_LONGLONG - -march=nocona -mtune=generic
> > #include "..." search starts here:
> > #include <...> search starts here:
> >  /usr/include/gcc/4.2
> >  /usr/include
> > End of search list.
> > # 1 "<stdin>"
> > # 1 "<built-in>"
> > # 1 "<command-line>"
> > # 1 "<stdin>"
> > 
> > where instead of nocona, core2 would have been the better choice:
> > 
> > [1.000000] CPU: Intel(R) Pentium(R) Dual  CPU  E2160  @ 1.80GHz (1800.00-MHz K8-class CPU)
> > [1.000000]   Origin = "GenuineIntel"  Id = 0x6fd  Family = 6  Model = f  Stepping = 13
> > [1.000000]   Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
> > [1.000000]   Features2=0xe39d<SSE3,DTES64,MON,DS_CPL,EST,TM2,SSSE3,CX16,xTPR,PDCM>
> > [1.000000]   AMD Features=0x20100800<SYSCALL,NX,LM>
> > [1.000000]   AMD Features2=0x1<LAHF>
> > [1.000000]   TSC: P-state invariant, performance statistics
> > 
> > cheers.
> > alex
> > 
> > > 
> > > roman


More information about the freebsd-toolchain mailing list