Single-precision FP instructions may end up being done
with double-precision accuracy. Worse yet, whether or
not this happens may depend on the compiler
optimization level (based on whether the value is
promoted to a register or stored in memory and reloaded).
This doesn't matter if we compile in SS-compatible
mode, where all SP operands are forced to be done with
DP precision anyway (since that's what SimpleScalar does).
The best solution I've come up with is to keep two
copies of each FP reg in memory (one SP and one DP) and
a flag indicating which is valid at any particular
time. If SP results are always stored to the SP copy,
we can't accidentally get too much precision.