Maciej W. Rozycki wrote:
On Tue, 9 Oct 2007, Franck Bui-Huu wrote:
What would be the gain for the kernel from using "-march=4ksd" rather
than "-march=mips32r2"?
It actually results in a kernel image ~30kbytes smaller for the former
case. It has been discussed sometimes ago on this list. I'm sorry but
I don't know why...
Perhaps the pipeline description for the 4KSd CPU is different from the
default for the MIPS32r2 ISA. Barring a study of GCC sources, if that
really troubles you, you could build the same version of the kernel with
these options:
1. "-march=mips32r2"
2. "-march=4ksd"
3. "-march=mips32r2 -mtune=4ksd"
and compare the results.
I expect the results of #2 and #3 to be the same
and it would just back up my suggestion about keeping CPU-specific
optimisations separate from the CPU selection.
Actually the -march=4ksd option will allow gcc to use of the SmartMIPS
lwxs (indexed load) instruction, which could save a few instructions
here and there.
Please also note that our
optimisation model is for speed (-O2) rather than size (-Os), so if
"-mtune=4ksd" yields smaller code than "-mtune=mips32r2", it just means it
is safe for this CPU to shrink code where appropriate without losing
performance. One obvious place for such a choice is the use of the
hardware multiplier vs shifts and additions where one multiplicand is a
constant.
Yes, that's also worth testing.
Nigel