Always false float comparisons

Manu via Digitalmars-d digitalmars-d at puremagic.com
Sun May 15 22:37:34 PDT 2016


On 16 May 2016 at 14:37, Walter Bright via Digitalmars-d
<digitalmars-d at puremagic.com> wrote:
> On 5/15/2016 9:06 PM, Manu via Digitalmars-d wrote:
>>
>> Holy shit, it's just occurred to me that 'real' is only 64bits on arm
>> (and every non-x86 platform)...
>
>
> There are some that support 128 bits.
>
>> That means a compiler running on an arm host will produce a different
>> binary than a compiler running on an x86 host!! O_O
>
>
> That's probably why VC++ dropped 80 bit long double support entirely.
>
> Me, I think of that as "Who cares that you paid $$$ for an 80 bit CPU, we're
> going to give you only 64 bits."

No, you'll give me 80bit _when I type "real"_. Otherwise, if I type
'double', you'll give me that. I don't understand how that can be
controversial.
I know you love the x87, but I'm pretty sure you're among a small
minority. Personally, I don't want a single line of code that goes
anywhere near the x87 to be emit in any binary I produce. It's a
deprecated old crappy piece of hardware, and transfers between x87 and
sse regs are slow.

> It's also why I'd like to build a 128 soft fp emulator in dmd for all
> compile time float operations.

And I did also realise the reason for your desire to implement 128bit
soft-float the same moment I realised this. The situation that
different DMD builds operate at different precisions internally (based
on the host arch) is a whole new level of astonishment.
I support this soft-float, but please, build a soft-float for all
precisions, and use them everywhere that a hardware float for _the
specified precision_ is not available ;)


More information about the Digitalmars-d mailing list