This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
A linux/x86 patch for float.h
- To: aj at arthur dot rhein-neckar dot de
- Subject: A linux/x86 patch for float.h
- From: hjl at lucon dot org (H.J. Lu)
- Date: Sat, 13 Jun 1998 12:19:08 -0700 (PDT)
- Cc: egcs-patches at cygnus dot com
I don't think all long doubles are the same. Even on x86, not all OSes
support 80bit long double. This patch adds the 80bit long double for
Linux/x86.
Thanks.
--
H.J. Lu (hjl@gnu.org)
---
Sat Jun 13 12:14:55 1998 H.J. Lu (hjl@gnu.org)
* config/float-i386.h: New.
* configure.in (i[34567]86-*-linux-*): Set float_format to i386.
Index: configure.in
===================================================================
RCS file: /home/work/cvs/gnu/egcs/gcc/configure.in,v
retrieving revision 1.1.1.51
diff -u -r1.1.1.51 configure.in
--- configure.in 1998/06/11 14:17:52 1.1.1.51
+++ configure.in 1998/06/12 19:00:00
@@ -872,6 +872,7 @@
tm_file=i386/linux-oldld.h
fixincludes=Makefile.in #On Linux, the headers are ok already.
gnu_ld=yes
+ float_format=i386
;;
i[[34567]]86-*-linux-gnuaout*) # Intel 80386's running GNU/Linux
# with a.out format
@@ -880,6 +881,7 @@
tm_file=i386/linux-aout.h
fixincludes=Makefile.in #On Linux, the headers are ok already.
gnu_ld=yes
+ float_format=i386
;;
i[[34567]]86-*-linux-gnulibc1) # Intel 80386's running GNU/Linux
# with ELF format using the
@@ -890,6 +892,7 @@
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
fixincludes=Makefile.in #On Linux, the headers are ok already.
gnu_ld=yes
+ float_format=i386
if [[ x$enable_threads = xyes ]]; then
thread_file='single'
fi
@@ -903,6 +906,7 @@
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
fixincludes=Makefile.in #On Linux, the headers are ok already.
gnu_ld=yes
+ float_format=i386
if [[ x$enable_threads = xyes ]]; then
thread_file='posix'
fi
--- /dev/null Wed Dec 31 16:00:00 1969
+++ config/float-i386.h Sat Jun 13 12:05:01 1998
@@ -0,0 +1,104 @@
+/* float.h for target with IEEE 32/64 bit and Intel 386 style 80 bit
+ floating point formats */
+#ifndef _FLOAT_H_
+#define _FLOAT_H_
+/* Produced by enquire version 4.3, CWI, Amsterdam */
+
+ /* Radix of exponent representation */
+#undef FLT_RADIX
+#define FLT_RADIX 2
+ /* Number of base-FLT_RADIX digits in the significand of a float */
+#undef FLT_MANT_DIG
+#define FLT_MANT_DIG 24
+ /* Number of decimal digits of precision in a float */
+#undef FLT_DIG
+#define FLT_DIG 6
+ /* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown */
+#undef FLT_ROUNDS
+#define FLT_ROUNDS 1
+ /* Difference between 1.0 and the minimum float greater than 1.0 */
+#undef FLT_EPSILON
+#define FLT_EPSILON 1.19209290e-07F
+ /* Minimum int x such that FLT_RADIX**(x-1) is a normalised float */
+#undef FLT_MIN_EXP
+#define FLT_MIN_EXP (-125)
+ /* Minimum normalised float */
+#undef FLT_MIN
+#define FLT_MIN 1.17549435e-38F
+ /* Minimum int x such that 10**x is a normalised float */
+#undef FLT_MIN_10_EXP
+#define FLT_MIN_10_EXP (-37)
+ /* Maximum int x such that FLT_RADIX**(x-1) is a representable float */
+#undef FLT_MAX_EXP
+#define FLT_MAX_EXP 128
+ /* Maximum float */
+#undef FLT_MAX
+#define FLT_MAX 3.40282347e+38F
+ /* Maximum int x such that 10**x is a representable float */
+#undef FLT_MAX_10_EXP
+#define FLT_MAX_10_EXP 38
+
+ /* Number of base-FLT_RADIX digits in the significand of a double */
+#undef DBL_MANT_DIG
+#define DBL_MANT_DIG 53
+ /* Number of decimal digits of precision in a double */
+#undef DBL_DIG
+#define DBL_DIG 15
+ /* Difference between 1.0 and the minimum double greater than 1.0 */
+#undef DBL_EPSILON
+#define DBL_EPSILON 2.2204460492503131e-16
+ /* Minimum int x such that FLT_RADIX**(x-1) is a normalised double */
+#undef DBL_MIN_EXP
+#define DBL_MIN_EXP (-1021)
+ /* Minimum normalised double */
+#undef DBL_MIN
+#define DBL_MIN 2.2250738585072014e-308
+ /* Minimum int x such that 10**x is a normalised double */
+#undef DBL_MIN_10_EXP
+#define DBL_MIN_10_EXP (-307)
+ /* Maximum int x such that FLT_RADIX**(x-1) is a representable double */
+#undef DBL_MAX_EXP
+#define DBL_MAX_EXP 1024
+ /* Maximum double */
+#undef DBL_MAX
+#define DBL_MAX 1.7976931348623157e+308
+ /* Maximum int x such that 10**x is a representable double */
+#undef DBL_MAX_10_EXP
+#define DBL_MAX_10_EXP 308
+
+ /* Number of base-FLT_RADIX digits in the significand of a long double */
+#undef LDBL_MANT_DIG
+#define LDBL_MANT_DIG 64
+ /* Number of decimal digits of precision in a long double */
+#undef LDBL_DIG
+#define LDBL_DIG 18
+ /* Difference between 1.0 and the minimum long double greater than 1.0 */
+#undef LDBL_EPSILON
+#ifndef __LDBL_UNION__
+#define __LDBL_UNION__
+union __convert_long_double {
+ unsigned __convert_long_double_i[4];
+ long double __convert_long_double_d;
+};
+#endif
+#define LDBL_EPSILON (__extension__ ((union __convert_long_double) {__convert_long_double_i: {0x0, 0x80000000, 0x3fc0, 0x0}}).__convert_long_double_d)
+ /* Minimum int x such that FLT_RADIX**(x-1) is a normalised long double */
+#undef LDBL_MIN_EXP
+#define LDBL_MIN_EXP (-16381)
+ /* Minimum normalised long double */
+#undef LDBL_MIN
+#define LDBL_MIN (__extension__ ((union __convert_long_double) {__convert_long_double_i: {0x0, 0x80000000, 0x1, 0x0}}).__convert_long_double_d)
+ /* Minimum int x such that 10**x is a normalised long double */
+#undef LDBL_MIN_10_EXP
+#define LDBL_MIN_10_EXP (-4931)
+ /* Maximum int x such that FLT_RADIX**(x-1) is a representable long double */
+#undef LDBL_MAX_EXP
+#define LDBL_MAX_EXP 16384
+ /* Maximum long double */
+#undef LDBL_MAX
+#define LDBL_MAX (__extension__ ((union __convert_long_double) {__convert_long_double_i: {0xffffffff, 0xffffffff, 0x107ffe, 0x0}}).__convert_long_double_d)
+ /* Maximum int x such that 10**x is a representable long double */
+#undef LDBL_MAX_10_EXP
+#define LDBL_MAX_10_EXP 4932
+
+#endif /* _FLOAT_H___ */