Changing default CFLAGS on i386

Ryan Lortie desrt at desrt.ca
Thu Mar 6 14:44:14 UTC 2014


hi,

On Thu, Mar 6, 2014, at 2:23, Adam Conrad wrote:
> I wouldn't be entirely against this option, if the performance hit is
> measurably not awful in general purpose usage.

I'd rather approach the problem from the point of "we must have correct
code".

Once we establish that we then ask the question "do we care enough about
chips from the 1990s that we are happy to suffer substantial performance
costs in the name of backwards compatibility?".

The GCC guys seem to think that the cost here is indeed substantial
(which is why they prefer to produce incorrect output).  I have not
measured it myself and I don't even know what would be a reasonable
benchmark of typical Ubuntu usage of floats.  cairo maybe?

> This cuts out support for a lot of i686 processors we currently run on
> today, and I'm not sure that's something we want to do.

By "currently run on" do you mean that we actually run on these in
situations that we know about, or that we have the theoretical ability,
if someone wanted to...

I'm fairly sure that Unity would not run nicely on any hardware from
late 90s/early 00s.  You could maybe repurpose an extremely old machine
as an Ubuntu server and we could be cutting those people out, but they
also have many other options (such as Debian).  This could potentially
hurt some flavours like Xubuntu which might actually be capable of
running on hardware of that vintage.  

Looking at some typical historical models released by Dell, machines
that came with Pentium 2 and Pentium 3 chips tended to have between 64MB
(low) and 512MB (very high end).  256MB seems somewhat typical for
Pentium 3 machines, at least.  Clocks are in the sub-GHz range and
entirely single-core.  It's possible to imagine that XFCE could run
here, but it wouldn't exactly be nice...

>  That said, we
> also dropped support for non-PAE in our kernels, and the intersection
> of CPUs with PAE and no SSE2 is certainly a smaller set.  I'd still
> like to see a comprehensive list (think outside of just Intel here, to
> other x86 kit) of which CPUs we'd be dropping support for before we
> even considered this.

Wikipedia has
http://en.wikipedia.org/wiki/SSE2#Notable_IA-32_CPUs_not_supporting_SSE2

 * AMD CPUs prior to Athlon 64, including all Socket A-based CPUs

 * Intel CPUs prior to Pentium 4

 * VIA C3

 * Transmeta Crusoe

Intel chips discussed above.  VIA didn't get PAE until C7 (which also
got SSE2).  Transmeta is not sufficiently widely-deployed to be
interesting to us.

It seems like some late model K7 AMD chips may be the most tricky.  They
were produced as late as 2005.  The K7 apparently did support a limited
mode of PAE in the chip, but not the chipset.

That's still almost a decade ago...

A footnote: someone on IRC mentioned that pentium4 is a particularly
bizarre microarchitecture, so if we give -march=pentium4 then we should
probably also use -mtune=generic.


Cheers



More information about the ubuntu-devel mailing list