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