real.h (ieee_extended_intel_96_round_53_format): New.

* real.h (ieee_extended_intel_96_round_53_format): New.
	* real.c (ieee_extended_intel_96_round_53_format): New.
	* config/i386/freebsd.h (SUBTARGET_OVERRIDE_OPTIONS): Use it
	for XFmode and TFmode.

From-SVN: r68445
This commit is contained in:
Richard Henderson 2003-06-24 17:11:33 -07:00 committed by Loren J. Rittle
parent c1a6244090
commit bfa0c51930
4 changed files with 38 additions and 0 deletions

View File

@ -1,3 +1,11 @@
2003-06-24 Richard Henderson <rth@redhat.com>
(blame to: Loren James Rittle <ljrittle@acm.org>)
* real.h (ieee_extended_intel_96_round_53_format): New.
* real.c (ieee_extended_intel_96_round_53_format): New.
* config/i386/freebsd.h (SUBTARGET_OVERRIDE_OPTIONS): Use it
for XFmode and TFmode.
2003-06-24 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.md (4 anonymous patterns): Give internal

View File

@ -133,3 +133,13 @@ Boston, MA 02111-1307, USA. */
#undef DEFAULT_PCC_STRUCT_RETURN
#define DEFAULT_PCC_STRUCT_RETURN 0
/* FreeBSD sets the rounding precision of the FPU to 53 bits. Let the
compiler get the contents of <float.h> and std::numeric_limits correct. */
#define SUBTARGET_OVERRIDE_OPTIONS \
do { \
real_format_for_mode[XFmode - QFmode] \
= &ieee_extended_intel_96_round_53_format; \
real_format_for_mode[TFmode - QFmode] \
= &ieee_extended_intel_96_round_53_format; \
} while (0)

View File

@ -3326,6 +3326,25 @@ const struct real_format ieee_extended_intel_128_format =
true
};
/* The following caters to i386 systems that set the rounding precision
to 53 bits instead of 64, e.g. FreeBSD. */
const struct real_format ieee_extended_intel_96_round_53_format =
{
encode_ieee_extended,
decode_ieee_extended,
2,
1,
53,
53,
-16381,
16384,
79,
true,
true,
true,
true,
true
};
/* IBM 128-bit extended precision format: a pair of IEEE double precision
numbers whose sum is equal to the extended precision value. The number

View File

@ -234,6 +234,7 @@ extern const struct real_format ieee_double_format;
extern const struct real_format mips_double_format;
extern const struct real_format ieee_extended_motorola_format;
extern const struct real_format ieee_extended_intel_96_format;
extern const struct real_format ieee_extended_intel_96_round_53_format;
extern const struct real_format ieee_extended_intel_128_format;
extern const struct real_format ibm_extended_format;
extern const struct real_format mips_extended_format;