std.math performance (SSE vs. real)

via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 2 11:58:11 PDT 2014


On Wednesday, 2 July 2014 at 16:03:47 UTC, Iain Buclaw via 
Digitalmars-d wrote:
>
> Only matters if you have to implement it in your backend

You have to implement it in the backend if D requires strict 
IEEE754 conformance?

> Vectors are treated differently from floats

How can you then let the compiler vectorize? You can't. Meaning, 
your code will run very slow.

>> It affects versioning.
>>
>> E.g. you can have a flags IEEE754_STRICT or IEE754_HAS_NAN etc 
>> and use
>> versioning that dectects the wrong compiler-mode.
>
> Affects only library maintainers, but I haven't looked too much 
> into
> what gcc offers as a platform regarding this.

I don't agree. If your code produce denormal numbers then it 
matters a lot if they are forced to zero or not. Just think about 
divison by zero traps. Why would this only be a library issue?

If you write portable code you shouldn't have to second guess 
what the compiler does. It either guarantees that denormal 
numbers are not flushed to zero, or it does not. If it does not 
then D does not require IEEE754 and you will have to think about 
this when you write your code.

> The ARM market is terrible, and it will certainly be the case 
> that we
> *can't* have a one size fits all solution.  But in the standard
> libraries we can certainly keep strictly in line with the most
> conforming chips, so if you wish to support X you may do so in a
> platform-specific fork.

I don't really understand the reasoning here. Is D Intel x86 
specific? Meaning, it is a system level programming language on 
x86 only and something arbitrary on other platforms?

Either D requires IEEE754 strict mode, or it does not. It matters 
what the default is.


More information about the Digitalmars-d mailing list