www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - DMD 32 bit Linux code gen now uses XMM for float & double

reply Walter Bright <newshound2 digitalmars.com> writes:
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 27
parent reply 9il <ilyayaroshenko gmail.com> writes:
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
parent Walter Bright <newshound2 digitalmars.com> writes:
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.
May 27