Thread overview
DMD 32 bit Linux code gen now uses XMM for float & double
May 28, 2019
Walter Bright
May 28, 2019
9il
May 28, 2019
Walter Bright
May 27, 2019
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.

https://github.com/dlang/dmd/pull/9895

DMD always had that capability, it just wasn't enabled for backwards compatibility with older processors.
May 28, 2019
On Tuesday, 28 May 2019 at 01:23:18 UTC, Walter Bright wrote:
> 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.
>
> https://github.com/dlang/dmd/pull/9895
>
> DMD always had that capability, it just wasn't enabled for backwards compatibility with older processors.

Thanks a lot. I expect it resolves some ancient issues I had with math functions when compiled with DMD.

Does DMD still use x87 for float/double on other targets?
May 27, 2019
On 5/27/2019 6:46 PM, 9il wrote:
> Does DMD still use x87 for float/double on other targets?

Yes - Win32 and FreeBSD32.

We'll see how this goes, and if it's good we can do the rest.