[arch-dev-public] i686 and SSE2

Jan Alexander Steffens jan.steffens at gmail.com
Fri Sep 16 08:19:04 UTC 2016

I recently ran into a problem again because Rust understands "i686" to
imply up to SSE2; "i586" is supposed to be used for older processors. The
Firefox build system now uses "i586", our Rust only has "i686", and our
i686 as GCC understands it is something in-between Rust's interpretations.

We also have other packages that require SSE2 on i686; I recall WebkitGTK;
removing SSE2 support here would mean removing the JIT, increasing
compatibility but slowing down JavaScript massively. I've also heard that
Go, Ruby and Chromium are similarly affected.

I brought this up with Allan and he was in support of "upgrading" our i686
to include SSE2. Are you in favor?

Would "-march=pentium-m" be best way of doing this? It seems simple, but
are there other effects we don't want? Perhaps "-march=pentium-m
-mtune=generic" or "-march=i686 -mtune=generic -msse -msse2" would work

Should we leave the situation as-is? I.e. only some functionality requires
SSE2. There's no way to tell until you run into a SIGILL.

Should we enforce no SSE2 on i686? Can we even do that?

I also wish we had some data on SSE2 support across i686 machines. Perhaps
we should upgrade pkgstats to record *all* the cpuflags? We would gain data
for future decisions, too.

More information about the arch-dev-public mailing list