On Tue, 19 Apr 2011 14:18:46 -0400, Sean Kelly <[email protected]>
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.
Section 8.1.5.2 of the Intel 64 SDM says the following:
"The precision-control (PC) field (bits 8 and 9 of the x87 FPU control
word) determines the precision (64, 53, or 24 bits) of floating-point
calculations made by the x87 FPU (see Table 8-2). The default precision
is double extended precision, which uses the full 64-bit significand
available with the double extended-precision floating-point format of
the x87 FPU data registers. This setting is best suited for most
applications, because it allows applications to take full advantage of
the maximum precision available with the x87 FPU data registers."
So it sounds like finit/fninit does what we want.
Yes, that sounds right. Thanks for clarifying.