Revision 8559666d fpu/softfloat-specialize.h
b/fpu/softfloat-specialize.h | ||
---|---|---|
30 | 30 |
|
31 | 31 |
=============================================================================*/ |
32 | 32 |
|
33 |
#if defined(TARGET_MIPS) || defined(TARGET_SH4) |
|
34 |
#define SNAN_BIT_IS_ONE 1 |
|
35 |
#else |
|
36 |
#define SNAN_BIT_IS_ONE 0 |
|
37 |
#endif |
|
38 |
|
|
39 | 33 |
/*---------------------------------------------------------------------------- |
40 | 34 |
| Raises the exceptions specified by `flags'. Floating-point traps can be |
41 | 35 |
| defined here if desired. It is currently not possible for such a trap |
... | ... | |
57 | 51 |
} commonNaNT; |
58 | 52 |
|
59 | 53 |
/*---------------------------------------------------------------------------- |
60 |
| The pattern for a default generated half-precision NaN. |
|
61 |
*----------------------------------------------------------------------------*/ |
|
62 |
#if defined(TARGET_ARM) |
|
63 |
#define float16_default_nan make_float16(0x7E00) |
|
64 |
#elif SNAN_BIT_IS_ONE |
|
65 |
#define float16_default_nan make_float16(0x7DFF) |
|
66 |
#else |
|
67 |
#define float16_default_nan make_float16(0xFE00) |
|
68 |
#endif |
|
69 |
|
|
70 |
/*---------------------------------------------------------------------------- |
|
71 | 54 |
| Returns 1 if the half-precision floating-point value `a' is a quiet |
72 | 55 |
| NaN; otherwise returns 0. |
73 | 56 |
*----------------------------------------------------------------------------*/ |
... | ... | |
158 | 141 |
} |
159 | 142 |
|
160 | 143 |
/*---------------------------------------------------------------------------- |
161 |
| The pattern for a default generated single-precision NaN. |
|
162 |
*----------------------------------------------------------------------------*/ |
|
163 |
#if defined(TARGET_SPARC) |
|
164 |
#define float32_default_nan make_float32(0x7FFFFFFF) |
|
165 |
#elif defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_ALPHA) |
|
166 |
#define float32_default_nan make_float32(0x7FC00000) |
|
167 |
#elif SNAN_BIT_IS_ONE |
|
168 |
#define float32_default_nan make_float32(0x7FBFFFFF) |
|
169 |
#else |
|
170 |
#define float32_default_nan make_float32(0xFFC00000) |
|
171 |
#endif |
|
172 |
|
|
173 |
/*---------------------------------------------------------------------------- |
|
174 | 144 |
| Returns 1 if the single-precision floating-point value `a' is a quiet |
175 | 145 |
| NaN; otherwise returns 0. |
176 | 146 |
*----------------------------------------------------------------------------*/ |
... | ... | |
413 | 383 |
} |
414 | 384 |
|
415 | 385 |
/*---------------------------------------------------------------------------- |
416 |
| The pattern for a default generated double-precision NaN. |
|
417 |
*----------------------------------------------------------------------------*/ |
|
418 |
#if defined(TARGET_SPARC) |
|
419 |
#define float64_default_nan make_float64(LIT64( 0x7FFFFFFFFFFFFFFF )) |
|
420 |
#elif defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_ALPHA) |
|
421 |
#define float64_default_nan make_float64(LIT64( 0x7FF8000000000000 )) |
|
422 |
#elif SNAN_BIT_IS_ONE |
|
423 |
#define float64_default_nan make_float64(LIT64( 0x7FF7FFFFFFFFFFFF )) |
|
424 |
#else |
|
425 |
#define float64_default_nan make_float64(LIT64( 0xFFF8000000000000 )) |
|
426 |
#endif |
|
427 |
|
|
428 |
/*---------------------------------------------------------------------------- |
|
429 | 386 |
| Returns 1 if the double-precision floating-point value `a' is a quiet |
430 | 387 |
| NaN; otherwise returns 0. |
431 | 388 |
*----------------------------------------------------------------------------*/ |
... | ... | |
564 | 521 |
#ifdef FLOATX80 |
565 | 522 |
|
566 | 523 |
/*---------------------------------------------------------------------------- |
567 |
| The pattern for a default generated extended double-precision NaN. The |
|
568 |
| `high' and `low' values hold the most- and least-significant bits, |
|
569 |
| respectively. |
|
570 |
*----------------------------------------------------------------------------*/ |
|
571 |
#if SNAN_BIT_IS_ONE |
|
572 |
#define floatx80_default_nan_high 0x7FFF |
|
573 |
#define floatx80_default_nan_low LIT64( 0xBFFFFFFFFFFFFFFF ) |
|
574 |
#else |
|
575 |
#define floatx80_default_nan_high 0xFFFF |
|
576 |
#define floatx80_default_nan_low LIT64( 0xC000000000000000 ) |
|
577 |
#endif |
|
578 |
|
|
579 |
/*---------------------------------------------------------------------------- |
|
580 | 524 |
| Returns 1 if the extended double-precision floating-point value `a' is a |
581 | 525 |
| quiet NaN; otherwise returns 0. This slightly differs from the same |
582 | 526 |
| function for other types as floatx80 has an explicit bit. |
... | ... | |
728 | 672 |
#ifdef FLOAT128 |
729 | 673 |
|
730 | 674 |
/*---------------------------------------------------------------------------- |
731 |
| The pattern for a default generated quadruple-precision NaN. The `high' and |
|
732 |
| `low' values hold the most- and least-significant bits, respectively. |
|
733 |
*----------------------------------------------------------------------------*/ |
|
734 |
#if SNAN_BIT_IS_ONE |
|
735 |
#define float128_default_nan_high LIT64( 0x7FFF7FFFFFFFFFFF ) |
|
736 |
#define float128_default_nan_low LIT64( 0xFFFFFFFFFFFFFFFF ) |
|
737 |
#else |
|
738 |
#define float128_default_nan_high LIT64( 0xFFFF800000000000 ) |
|
739 |
#define float128_default_nan_low LIT64( 0x0000000000000000 ) |
|
740 |
#endif |
|
741 |
|
|
742 |
/*---------------------------------------------------------------------------- |
|
743 | 675 |
| Returns 1 if the quadruple-precision floating-point value `a' is a quiet |
744 | 676 |
| NaN; otherwise returns 0. |
745 | 677 |
*----------------------------------------------------------------------------*/ |
Also available in: Unified diff