Release Building and /etc/make.conf

Bruce Evans bde at
Tue Jan 20 20:59:05 PST 2004

On Tue, 20 Jan 2004, John Baldwin wrote:

> On Tuesday 20 January 2004 09:41 am, Bruce Evans wrote:
> > should rarely be edited, but /etc.make.conf is per-machine so
> > you can put anything you want in it.  However, defaulting to
> > -mcpu=pentiumpro is just a bug, so I edit it out of  It
> > just micro-pessimizes for all CPUs that aren't pentium pros.  This is
> > almost harmless for i386's because no one uses them, and almost harmless
> > for P3's and maybe P4's because they share some bottlenecks with
> > pentiumpros, but Athlons handle naive i386 code better than pentiums so
> > many of the pentiumpro optimizations are pessimizations for athlons.
> The choice if ppro was Peter's suggestion.  Feel free to offer a better
> default CPU to tune for.

i386 (or equivalently, no special tuning) is the best default, at least
in non-FPU-intensive applications.  In my integer crunching application/
benchmark (searching a game tree), it even gives better results than
-mcpu=pentiumpro on a pentiumpro class machine (a 366MHz Celeron).
-mcpu=athlon-xp gives even better results.

All with -O3 -fomit-frame-pointer
-mcpu-athlon-xp        48.42 real        47.31 user         0.41 sys
                       51.22 real        50.10 user         0.30 sys
-mcpu=i386             51.98 real        50.18 user         0.34 sys
-mcpu=pentiumpro       56.38 real        55.26 user         0.34 sys
-mcpu=pentium2         56.24 real        55.25 user         0.36 sys
-mcpu=pentium3         56.59 real        55.25 user         0.40 sys
-mcpu=pentium4         58.52 real        56.96 user         0.36 sys
-mcpu=i486             79.17 real        77.69 user         0.32 sys
-mcpu=i586             74.80 real        73.07 user         0.48 sys

This is just one benchmark, chosen for its potential optimizability.
I only did non-exhaustive benchmarks for the makeworld benchmark.  I
removed the -mpentiumpro change when I saw the kernel size bloat that
it gave.

> > Note that CPUTYPE has worse bugs for i386's.  Setting it to a supported
> > CPU gives -march instead of -mcpu, so using it gives unportable binaries,
> > and provides no way to get the corresponding -mcpu settings.
> > OTOH, CPUTYPE for alphas gives only -mcpu.
> That is by design.  Note that on all non-i386 architectures such as alpha,
> etc. -mcpu means the same thing as -march.  The other architectures use
> -mtune to get the same effect as -mcpu on i386.

Doesn't make it any less of a bug.

[Context with same benchmark on an athlon-xp lost.]


More information about the freebsd-current mailing list