Bug#1127352: gcc-15: Please raise i386 baseline to include MMX, SSE, SSE2 in forky

Simon McVittie smcv at debian.org
Sat Feb 7 11:10:21 GMT 2026


Package: gcc-15
Severity: wishlist
Tags: forky sid
X-Debbugs-Cc: debian-release at lists.debian.org, debian-amd64 at lists.debian.org, bunk at debian.org, llvm-defaults at packages.debian.org
User: debian-qa at lists.debian.org
Usertags: i386

On Thu, 11 Sep 2025 at 14:38:10 +0200, on Bug#1095863, Paul Gevers wrote:
>I've been thinking a tiny bit about what I think that "baseline" means 
>and it seems to align with the ArchitectureSpecificsMemo wiki page 
>[1]: "indicating the oldest or least capable CPU on which the 
>architecture can be used". It goes on to say: "The baseline is mostly 
>defined by the gcc-N package". How I now understand this now is that 
>normally gcc will provide the setting for most packages to build a 
>baseline compliant package, but that doesn't exactly mean these 
>packages build for exactly the baseline (it can be lower). So, with 
>the acceptance to have rustc/llvm build with SSE2/MMX, we actually 
>raised the baseline, it was just not reflected in gcc.
>
>Now that the forky development is open, gcc should probably do its 
>thing to bump its baseline on i386. There was consensus in the tread 
>ending at [2] to bump the baseline to include SSE2/MMX, and several 
>remarks were made to make it the same as the current amd64 baseline 
>(without objections). At this moment, I agree with the latter.
>
>[1] https://wiki.debian.org/ArchitectureSpecificsMemo#Architecture_baselines
>[2] https://lists.debian.org/debian-devel/2025/01/msg00034.html

I would like to make this request official: please bump gcc's baseline 
for i386 to be at least i686 + MMX + SSE + SSE2. We already announced in 
the Debian 13 release notes that the purpose of the i386 port is to be 
run on an x86_64 CPU in a chroot or container, or via multiarch or 
multilib. Halfway through the Debian 14 cycle seems like enough of a 
grace period before really enforcing this.

Given that announcement (and the fact that Ubuntu similarly only 
supports a subset of i386 as a multiarch foreign architecture), if it is 
possible to make the 32-bit compiler default to the equivalent of 
-march=x86-64 (to use the 32-bit ABI with a baseline that is allowed to 
use any x86-64-v1-compatible instruction), then I think that would be 
the best thing to do.

Or, the default could be -march=pentium4 (a closer equivalent of what 
LLVM already did). According to gcc documentation, that assumes the 
presence of MMX, SSE, SSE2 and FXSR, all of which are guaranteed to be 
available in x86-64-v1 according to the psABI 
(https://gitlab.com/x86-psABIs/x86-64-ABI/-/blob/master/x86-64-ABI/low-level-sys-info.tex) 
if I'm reading correctly.

Either way, it could also be a good improvement to make -mfpmath=sse the 
default, which I believe would make arithmetic on i386 behave the same 
way as on amd64 and every other release architecture (64-bit rather than 
80-bit intermediate values), removing a frequent source of i386-specific 
test failures. That could be a subsequent transition rather than part of 
raising the baseline, if preferred.

Thanks,
     smcv



More information about the Pkg-llvm-team mailing list