Revision e2f42204

b/fpu/softfloat-specialize.h
603 603
    commonNaNT z;
604 604

  
605 605
    if ( floatx80_is_signaling_nan( a ) ) float_raise( float_flag_invalid STATUS_VAR);
606
    z.sign = a.high>>15;
607
    z.low = 0;
608
    z.high = a.low;
606
    if ( a.low >> 63 ) {
607
        z.sign = a.high >> 15;
608
        z.low = 0;
609
        z.high = a.low << 1;
610
    } else {
611
        z.sign = floatx80_default_nan_high >> 15;
612
        z.low = 0;
613
        z.high = floatx80_default_nan_low << 1;
614
    }
609 615
    return z;
610 616
}
611 617

  
......
624 630
        return z;
625 631
    }
626 632

  
627
    if (a.high)
628
        z.low = a.high;
629
    else
633
    if (a.high >> 1) {
634
        z.low = LIT64( 0x8000000000000000 ) | a.high >> 1;
635
        z.high = ( ( (uint16_t) a.sign )<<15 ) | 0x7FFF;
636
    } else {
630 637
        z.low = floatx80_default_nan_low;
631
    z.high = ( ( (uint16_t) a.sign )<<15 ) | 0x7FFF;
638
        z.high = floatx80_default_nan_high;
639
    }
640

  
632 641
    return z;
633 642
}
634 643

  

Also available in: Unified diff