std.math performance (SSE vs. real)
Iain Buclaw via Digitalmars-d
digitalmars-d at puremagic.com
Wed Jul 2 09:03:29 PDT 2014
On 2 July 2014 12:42, via Digitalmars-d <digitalmars-d at puremagic.com> wrote:
> On Wednesday, 2 July 2014 at 08:52:25 UTC, Iain Buclaw via Digitalmars-d
> wrote:
>>
>> The crucial thing here is that the layout of float/double types are
>> IEEE 754 are compatible. :)
>
>
> That's nice of course, if you import/export, but hardly the only crucial
> thing.
>
> Implied correctness and warnings when assumptions break is also important…
>
>
>> These behaviours you describe only affect the FP control functions in
>> std.math, which are the only thing platform specific, and can only be
>> written in inline assembly anyway...
>
>
> It affects the backend.
Only matters if you have to implement it in your backend
> It affects vectorization. (NEON is not IEEE754 AFAIK)
Vectors are treated differently from floats
> It affects what a conforming D compiler is allowed to do.
That depends what you mean be 'conforming'.
> 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.
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.
This is certainly not unusual for druntime (eg: minilibd)
Regards
Iain
More information about the Digitalmars-d
mailing list