Re: Noob question. Why is the for-pentium4 kernel built with -march=i686 ?

From: Dave Neuer
Date: Wed Jul 20 2005 - 09:31:45 EST


On 7/20/05, Simon Strandman <simon.strandman@xxxxxxxxx> wrote:
> Denis Vlasenko skrev:
>
> >
> >Why do you care? I bet that differences between i686 code and pentium4 code
> >are well below noise level.
> >--
> >vda
> >
> For x86_64 the flags -mno-sse -mno-mmx -mno-sse2 -mno-3dnow are always
> used for compilation. Why is'nt the same thing done for x86 instead of
> using -march=i686 -mtune=?.
>
> -march=athlon and -march=k6 includes -m3dnow and -mmmx, are those ok for
> the kernel but -msse isn't?
>

As Kerin pointed out, gcc 4.0 supports auto-vectorization, so in
theory, these options might provide better performance on some
compilers. Apparently SSE is not enabled by default any more for P4
because of a known bug w/ some compilers. People using gcc > 4.0 can
obviously override it.

Really, w/out the presence of auto-vectorization support in the
compiler none of the vector extensions are necessary. The only things
that really matter are -mcpu and -mtune: what instruction set your CPU
supports and the optimum instruction scheduling characteristics for
your CPU, respectively.

Dave
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/