DMD 2.090.1: SIGILL, Illegal instruction on (ahem) intel Pentium III

Johan j at j.nl
Thu Feb 27 19:24:39 UTC 2020


On Thursday, 27 February 2020 at 18:07:40 UTC, Rainer Schuetze 
wrote:
>
>
> On 27/02/2020 11:30, kdevel wrote:
>> On Thursday, 27 February 2020 at 07:44:57 UTC, Seb wrote:
>>> On Thursday, 27 February 2020 at 00:36:49 UTC, kdevel wrote:
>> 
>> [...]
>> 
>>>> Program received signal SIGILL, Illegal instruction.
>> 
>> [...]
>> 
>>>> Does this exception relate to [1] and shall I file a bug or 
>>>> do I have to decommission my PIII?
>> 
>> [...]
>> 
>>> I think so.
>> 
>> File a bug report?
>> 
>>> Have you tried:
>>> 1) LDC on your machine?
>> 
>> Not yet.
>> 
>>> 2) the DMD version before this change?
>> 
>> 2.086.1 good
>> 2.087.0 bad
>> 
>
> From the 2.087 changelog:
>
> "32 Bit Linux now uses XMM registers for float and double 
> rather than
> the x87.
> This should substantially speed up routine float and double 
> processing.
> SIMD vector operations, however, are still not support on 32 
> bit Linux
> code because of issues with 16 byte stack alignment.
>
> This means that generated code will no longer work on older x86 
> processors that do not have XMM registers. If this is an issue, 
> please file a bug report."

Detail: the problem is not the absence of XMM (Pentium3 has SSE, 
hence has XMM registers), but that DMD is emitting an SSE2 
instruction (movsd).

LDC will work fine if told what processor you have: 
https://d.godbolt.org/z/5hrzgm
-m32 -mcpu=pentium3   (-mcpu=native should also work).

cheers,
   Johan





More information about the Digitalmars-d-learn mailing list