On 02/07/2014 01:49 PM, Peter Maydell wrote:
> /* Zero plus something non-zero : just return the something */
> + if (flags & float_muladd_halve_result) {
> + if (cExp == 0) {
> + shift32RightJamming(cSig, 1, &cSig);
> + } else if (cExp == 1) {
> + shift32RightJamming(cSig, 1, &cSig);
> + cSig |= (1 << 22);
> + cExp = 0;
> + } else {
> + cExp--;
> + }
Surely better to just use roundAndPackFloat for this case. Looks to me that
you're missing inexact and underflow exceptions at least.
> + }
> return packFloat32(cSign ^ signflip, cExp, cSig);
> }
r~