Re: Linux-2.0.11

Robert L Krawitz (rlk@tiac.net)
Wed, 7 Aug 1996 09:11:13 -0400


Date: Tue, 6 Aug 1996 21:01:28 +0200
From: Philippe Strauss <root@urbanet.ch>

Anyway, since the i386, the instruction set has only been very
slightly augmented on each new ix86 (only some stuff to make SMP
boards without too much pain on 586). The number of register has growed,
thats the reason of the -m486 flag of gcc. There is then no obvious
reason to make specific extensions of gcc on each stepping of brand
new intel, AMD, Cyrix or whatever.

The number of user registers on each chip is the same (as opposed to
the model specific registers of the Pentium, which aren't general
purpose registers). There are very definite reasons to have different
optimizers in gcc for each chip. The Pentium, for example, has much
more complicated pipelines than earlier processors, and choosing
instructions that pair in the two pipes can improve performance quite
a bit.

The reason why the kernel config ask you about your CPU is to try to
turn on the best optimization for your CPU, but in no way gcc (at time
of this writing) will generate code only for P6 or AMD kX.
You can play with -malign-jumps=2 -malign-loops=2 -malign-functions=2
which align jumps/loops/functions on 64bits boundaries, the
performance improvement is most of the time psychologic :*)

Actually, -malign-foobar=2 aligns (jumps|loops|functions) to 4-byte
(2^2) boundaries.

-- 
Robert Krawitz <rlk@tiac.net>           http://www.tiac.net/users/rlk/

Member of the League for Programming Freedom -- mail lpf@uunet.uu.net Tall Clubs International -- tci-request@aptinc.com or 1-800-521-2512