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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 19 Jul 2005 21:35:51 +0300, Ivan Yosifov wrote:

<snip>

> -march implies -mtune and also implies thing like -msse2 for the
> instruction set where applicable. 
> I think -march=pentium4 is equivalent to -mmmx -msse -msse2
> -mtune=pentium4 ( if I have not fogotten anything ).  
> Pentium4 supports things like sse2 and mmx which AFAIK plain i686 does
> not. I first thought that maybe the kernel was destabilized by such
> optimizations, but k8 has all of them and more ( sse3 ). 
> So, if it is ok to build the k8 kernel with -march=k8 why is it not ok
> to built the p4 kernel with -march=pentium4 ? 
> I may be wrong, but any way I think of it it looks like a performance
> hit to build a p4 kernel with -march=i686.
> 

Well, it may seem logical to think that but proving it is another matter
entirely. The flags that you refer to (-mmmx, -msse and -msse2) enable
support for vector extensions through various built-in functions. But this
does not necessarily mean that the code is somehow transformed to make use
of these functions, nor that the compiler decides to makes effective use
of these extensions via the optimisation process. As far as I'm aware,
only >=gcc-4.0 has support for auto-vectorisation although I am not
certain as to how effective it is. Jakub Jellinek has some wise words to
say on the topic in general:

https://www.redhat.com/archives/fedora-devel-list/2005-January/msg00742.html

Where genuine performance tests are conducted the results are not always
in accordance with what one might expect. Only hours ago I was reading a
LFS thread where someone had noted poorer performance using the "prescott"
target as opposed to "i386" for example. That Red Hat also choose to use
-march=i386 is interesting (as noted in the link above, with the exception
of the kernel and glibc) ...

Also, I believe that the -march=pentium4 option /was/ actually used up
until kernel 2.6.10 where it was dropped because of a risk that some
versions of gcc would cause the kernel to use SSE registers for data
movement (which is a no-no).

Cheers,

--Kerin Millar

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

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux