On Fri, 21 Mar 2014, Joseph S. Myers wrote:

> > I ask this for another reason as well: since we're adding IFUNC 
> > capability to MIPS, we may need to harden the dynamic loader to protect 
> > $f12 and $f14. If signaling NaN was raised on the load, then we have 
> > more problems to deal with...
> 
> I haven't looked at the details of what MIPS hardware does with signaling 
> NaN loads - but in general uses of signaling NaNs work better if loads 
> don't trigger the NaN, only arithmetic, conversions and other operations 
> that IEEE 754 specifies should trigger it, so loads and stores always 
> preserve the original bit-patterns.  (Cf. the bugs on x86 where a union 
> gets copied via its double member, even though some other member is 
> active, and so gets corrupted because the signaling NaN gets converted to 
> quiet along the way.)

 Coprocessor loads (LWC1/LDC1/MTC1/MTHC1/DMTC1) and stores 
(SWC1/SDC1/MFC1/MFHC1/DMFC1) are not arithmetic and never trap on any bit 
patterns.  I reckon GCC already takes advantage of this and stores 
integers temporarily in FPRs in some cases.

  Maciej

Reply via email to