Commit bfa0c519 by Richard Henderson Committed by Loren J. Rittle

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
parent c1a62440
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> 2003-06-24 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.md (4 anonymous patterns): Give internal * config/h8300/h8300.md (4 anonymous patterns): Give internal
......
...@@ -133,3 +133,13 @@ Boston, MA 02111-1307, USA. */ ...@@ -133,3 +133,13 @@ Boston, MA 02111-1307, USA. */
#undef DEFAULT_PCC_STRUCT_RETURN #undef DEFAULT_PCC_STRUCT_RETURN
#define DEFAULT_PCC_STRUCT_RETURN 0 #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)
...@@ -3326,6 +3326,25 @@ const struct real_format ieee_extended_intel_128_format = ...@@ -3326,6 +3326,25 @@ const struct real_format ieee_extended_intel_128_format =
true 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 /* IBM 128-bit extended precision format: a pair of IEEE double precision
numbers whose sum is equal to the extended precision value. The number numbers whose sum is equal to the extended precision value. The number
......
...@@ -234,6 +234,7 @@ extern const struct real_format ieee_double_format; ...@@ -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 mips_double_format;
extern const struct real_format ieee_extended_motorola_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_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 ieee_extended_intel_128_format;
extern const struct real_format ibm_extended_format; extern const struct real_format ibm_extended_format;
extern const struct real_format mips_extended_format; extern const struct real_format mips_extended_format;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment