diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2003-04-01 21:45:28 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2003-04-01 21:45:28 +0000 |
commit | fe0002ee9dd1311b3dc451132198def49a465203 (patch) | |
tree | 43a194f1d77d2dbf0fec3807a54f212259cb8abd /gcc/config | |
parent | 481a818131a2b5fae84cb3e1ad637edadfde657a (diff) | |
download | gcc-fe0002ee9dd1311b3dc451132198def49a465203.zip gcc-fe0002ee9dd1311b3dc451132198def49a465203.tar.gz gcc-fe0002ee9dd1311b3dc451132198def49a465203.tar.bz2 |
real.h (EXP_BITS): Make room for...
* real.h (EXP_BITS): Make room for...
(struct real_value): ... added canonical bit.
(struct real_format): Added pnan.
(mips_single_format, mips_double_format, mips_extended_format,
mips_quad_format): New.
* real.c: Copy p to pnan in all formats.
(get_canonical_qnan, get_canonical_snan): Set canonical bit.
(real_nan): Use pnan to compute significand's shift.
(real_identical): Disregard significand in canonical
NaNs.
(real_hash): Likewise. Take signalling into account.
(encode_ieee_single, encode_ieee_double, encode_ieee_quad):
Disregard significand bits in canonical NaNs. Set all bits of
canonical NaN if !qnan_msb_set.
(encode_ibm_extended, decode_ibm_extended): Likewise. Use
qnan_msb_set to tell the base double format.
(ibm_extended_format): Use 53 as pnan.
(mips_single_format, mips_double_format, mips_extended_format,
mips_quad_format): Copied from the corresponding ieee/ibm
formats, with qnan_msb_set false.
* config/mips/iris6.h (MIPS_TFMODE_FORMAT): Use mips_extended_format.
* config/mips/linux64.h (MIPS_TFMODE_FORMAT): Use mips_quad_format.
* config/mips/mips.c (override_options): Use mips_single_format
and mips_double_format. Default TFmode to mips_quad_format.
* config/mips/t-linux64 (tp-bit.c): Define QUIET_NAN_NEGATED.
* config/mips/t-irix6: Likewise.
* config/mips/t-mips (fp-bit.c, dp-bit.c): Likewise.
* config/fp-bit.c (pack_d, unpack_d): Obey it.
From-SVN: r65146
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/fp-bit.c | 8 | ||||
-rw-r--r-- | gcc/config/mips/iris6.h | 2 | ||||
-rw-r--r-- | gcc/config/mips/linux64.h | 2 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 4 | ||||
-rw-r--r-- | gcc/config/mips/t-iris6 | 1 | ||||
-rw-r--r-- | gcc/config/mips/t-linux64 | 1 | ||||
-rw-r--r-- | gcc/config/mips/t-mips | 2 |
7 files changed, 18 insertions, 2 deletions
diff --git a/gcc/config/fp-bit.c b/gcc/config/fp-bit.c index 3e0b843..2832f96 100644 --- a/gcc/config/fp-bit.c +++ b/gcc/config/fp-bit.c @@ -210,7 +210,11 @@ pack_d ( fp_number_type * src) exp = EXPMAX; if (src->class == CLASS_QNAN || 1) { +#ifdef QUIET_NAN_NEGATED + fraction |= QUIET_NAN - 1; +#else fraction |= QUIET_NAN; +#endif } } else if (isinf (src)) @@ -521,7 +525,11 @@ unpack_d (FLO_union_type * src, fp_number_type * dst) else { /* Nonzero fraction, means nan */ +#ifdef QUIET_NAN_NEGATED + if ((fraction & QUIET_NAN) == 0) +#else if (fraction & QUIET_NAN) +#endif { dst->class = CLASS_QNAN; } diff --git a/gcc/config/mips/iris6.h b/gcc/config/mips/iris6.h index dd69c15..69f01aa 100644 --- a/gcc/config/mips/iris6.h +++ b/gcc/config/mips/iris6.h @@ -525,4 +525,4 @@ do { \ -_SYSTYPE_SVR4 -woff 131 \ %{mabi=32: -32}%{mabi=n32: -n32}%{mabi=64: -64}%{!mabi*: -n32}" -#define MIPS_TFMODE_FORMAT ibm_extended_format +#define MIPS_TFMODE_FORMAT mips_extended_format diff --git a/gcc/config/mips/linux64.h b/gcc/config/mips/linux64.h index db1d4e0..c78e789 100644 --- a/gcc/config/mips/linux64.h +++ b/gcc/config/mips/linux64.h @@ -98,4 +98,4 @@ Boston, MA 02111-1307, USA. */ for long double. There's no need to override this here, since ieee_quad_format is the default, but let's put this here to make sure nobody thinks we just forgot to set it to something else. */ -#define MIPS_TFMODE_FORMAT ieee_quad_format +#define MIPS_TFMODE_FORMAT mips_quad_format diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index b806fb1..6425f23 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -5714,8 +5714,12 @@ override_options () else mips16 = 0; + real_format_for_mode[SFmode - QFmode] = &mips_single_format; + real_format_for_mode[DFmode - QFmode] = &mips_double_format; #ifdef MIPS_TFMODE_FORMAT real_format_for_mode[TFmode - QFmode] = &MIPS_TFMODE_FORMAT; +#else + real_format_for_mode[TFmode - QFmode] = &mips_quad_format; #endif mips_print_operand_punct['?'] = 1; diff --git a/gcc/config/mips/t-iris6 b/gcc/config/mips/t-iris6 index a1be0b9..d403df4 100644 --- a/gcc/config/mips/t-iris6 +++ b/gcc/config/mips/t-iris6 @@ -27,6 +27,7 @@ tp-bit.c: $(srcdir)/config/fp-bit.c echo '#ifdef __MIPSEL__' > tp-bit.c echo '# define FLOAT_BIT_ORDER_MISMATCH' >> tp-bit.c echo '#endif' >> tp-bit.c + echo '#define QUIET_NAN_NEGATED' >> dp-bit.c echo '#if __LDBL_MANT_DIG__ == 106' >> tp-bit.c echo '# define TFLOAT' >> tp-bit.c cat $(srcdir)/config/fp-bit.c >> tp-bit.c diff --git a/gcc/config/mips/t-linux64 b/gcc/config/mips/t-linux64 index cf63928..a0792f2 100644 --- a/gcc/config/mips/t-linux64 +++ b/gcc/config/mips/t-linux64 @@ -13,6 +13,7 @@ tp-bit.c: $(srcdir)/config/fp-bit.c echo '# define FLOAT_BIT_ORDER_MISMATCH' >> tp-bit.c echo '#endif' >> tp-bit.c echo '#if __LDBL_MANT_DIG__ == 113' >> tp-bit.c + echo '#define QUIET_NAN_NEGATED' >> dp-bit.c echo '# define TFLOAT' >> tp-bit.c cat $(srcdir)/config/fp-bit.c >> tp-bit.c echo '#endif' >> tp-bit.c diff --git a/gcc/config/mips/t-mips b/gcc/config/mips/t-mips index 292386d..497f4fb 100644 --- a/gcc/config/mips/t-mips +++ b/gcc/config/mips/t-mips @@ -9,6 +9,7 @@ dp-bit.c: $(srcdir)/config/fp-bit.c echo '#ifdef __MIPSEL__' > dp-bit.c echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c echo '#endif' >> dp-bit.c + echo '#define QUIET_NAN_NEGATED' >> dp-bit.c cat $(srcdir)/config/fp-bit.c >> dp-bit.c fp-bit.c: $(srcdir)/config/fp-bit.c @@ -16,4 +17,5 @@ fp-bit.c: $(srcdir)/config/fp-bit.c echo '#ifdef __MIPSEL__' >> fp-bit.c echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c echo '#endif' >> fp-bit.c + echo '#define QUIET_NAN_NEGATED' >> fp-bit.c cat $(srcdir)/config/fp-bit.c >> fp-bit.c |