"Sean Kelly" <[email protected]> wrote in message news:[email protected]... On Apr 20, 2011, at 5:06 AM, Don wrote:
> Sean Kelly wrote: >> On Apr 16, 2011, at 1:02 PM, Robert Jacques wrote: >>> On Sat, 16 Apr 2011 15:32:12 -0400, Walter Bright >>> <[email protected]> wrote: >>>> >>>> The dmd startup code (actually the C startup code) does an fninit. I >>>> never thought about new thread starts. So, yeah, druntime should do an >>>> fninit on thread creation. >>> The documentation I've found on fninit seems to indicate it defaults to >>> 64-bit precision, which means that by default we aren't seeing the >>> benefit of D's reals. I'd much prefer 80-bit precision by default. >> There is no option to set "80-bit precision" via the FPU control word. > > ??? Yes there is. > > enum PrecisionControl : short { > PRECISION80 = 0x300, > PRECISION64 = 0x200, > PRECISION32 = 0x000 > }; > >So has Intel deprecated 80-bit FPU support? Why do the docs for this say >that 64-bit > is the highest precision? And more importantly, does this mean that we > should be setting > the PC field explicitly instead of relying on fninit? The docs say that > fninit initializes to > 64-bit precision. Or is that inaccurate as well?= You misread the docs, it's talking about precision which is just the size of the mantisa, not the actual full size of the floating point data. IE... 80 float = 64 bit precision 64 float = 53 bit precision 32 float = 24 bit precision
