Commit e6724881 by Richard Henderson Committed by Richard Henderson

real.c (etoe113, toe113): Ifndef INTEL_EXTENDED_IEEE_FORMAT.

        * real.c (etoe113, toe113): Ifndef INTEL_EXTENDED_IEEE_FORMAT.
        (endian): Clear word 3 for INTEL_EXTENDED_IEEE_FORMAT.
        (etartdouble): Invoke etoe64 for INTEL_EXTENDED_IEEE_FORMAT.
        * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Don't special case
        INTEL_EXTENDED_IEEE_FORMAT.

From-SVN: r48342
parent 9346c2ff
2001-12-28 Richard Henderson <rth@redhat.com>
* real.c (etoe113, toe113): Ifndef INTEL_EXTENDED_IEEE_FORMAT.
(endian): Clear word 3 for INTEL_EXTENDED_IEEE_FORMAT.
(etartdouble): Invoke etoe64 for INTEL_EXTENDED_IEEE_FORMAT.
* real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Don't special case
INTEL_EXTENDED_IEEE_FORMAT.
2001-12-27 Geoff Keating <geoffk@redhat.com> 2001-12-27 Geoff Keating <geoffk@redhat.com>
* combine.c (try_combine): Mask off sign bits when combining * combine.c (try_combine): Mask off sign bits when combining
......
...@@ -425,8 +425,10 @@ static void e64toe PARAMS ((UEMUSHORT *, UEMUSHORT *)); ...@@ -425,8 +425,10 @@ static void e64toe PARAMS ((UEMUSHORT *, UEMUSHORT *));
static void e113toe PARAMS ((UEMUSHORT *, UEMUSHORT *)); static void e113toe PARAMS ((UEMUSHORT *, UEMUSHORT *));
#endif #endif
static void e24toe PARAMS ((UEMUSHORT *, UEMUSHORT *)); static void e24toe PARAMS ((UEMUSHORT *, UEMUSHORT *));
#if (INTEL_EXTENDED_IEEE_FORMAT == 0)
static void etoe113 PARAMS ((UEMUSHORT *, UEMUSHORT *)); static void etoe113 PARAMS ((UEMUSHORT *, UEMUSHORT *));
static void toe113 PARAMS ((UEMUSHORT *, UEMUSHORT *)); static void toe113 PARAMS ((UEMUSHORT *, UEMUSHORT *));
#endif
static void etoe64 PARAMS ((UEMUSHORT *, UEMUSHORT *)); static void etoe64 PARAMS ((UEMUSHORT *, UEMUSHORT *));
static void toe64 PARAMS ((UEMUSHORT *, UEMUSHORT *)); static void toe64 PARAMS ((UEMUSHORT *, UEMUSHORT *));
static void etoe53 PARAMS ((UEMUSHORT *, UEMUSHORT *)); static void etoe53 PARAMS ((UEMUSHORT *, UEMUSHORT *));
...@@ -524,7 +526,10 @@ endian (e, x, mode) ...@@ -524,7 +526,10 @@ endian (e, x, mode)
t = (unsigned long) e[7] & 0xffff; t = (unsigned long) e[7] & 0xffff;
t |= th << 16; t |= th << 16;
x[3] = (long) t; x[3] = (long) t;
#else
x[3] = 0;
#endif #endif
/* FALLTHRU */
case XFmode: case XFmode:
/* Swap halfwords in the third long. */ /* Swap halfwords in the third long. */
...@@ -532,7 +537,7 @@ endian (e, x, mode) ...@@ -532,7 +537,7 @@ endian (e, x, mode)
t = (unsigned long) e[5] & 0xffff; t = (unsigned long) e[5] & 0xffff;
t |= th << 16; t |= th << 16;
x[2] = (long) t; x[2] = (long) t;
/* fall into the double case */ /* FALLTHRU */
case DFmode: case DFmode:
/* Swap halfwords in the second word. */ /* Swap halfwords in the second word. */
...@@ -540,7 +545,7 @@ endian (e, x, mode) ...@@ -540,7 +545,7 @@ endian (e, x, mode)
t = (unsigned long) e[3] & 0xffff; t = (unsigned long) e[3] & 0xffff;
t |= th << 16; t |= th << 16;
x[1] = (long) t; x[1] = (long) t;
/* fall into the float case */ /* FALLTHRU */
case SFmode: case SFmode:
case HFmode: case HFmode:
...@@ -568,7 +573,10 @@ endian (e, x, mode) ...@@ -568,7 +573,10 @@ endian (e, x, mode)
t = (unsigned long) e[6] & 0xffff; t = (unsigned long) e[6] & 0xffff;
t |= th << 16; t |= th << 16;
x[3] = (long) t; x[3] = (long) t;
#else
x[3] = 0;
#endif #endif
/* FALLTHRU */
case XFmode: case XFmode:
/* Pack the third long. /* Pack the third long.
...@@ -578,7 +586,7 @@ endian (e, x, mode) ...@@ -578,7 +586,7 @@ endian (e, x, mode)
t = (unsigned long) e[4] & 0xffff; t = (unsigned long) e[4] & 0xffff;
t |= th << 16; t |= th << 16;
x[2] = (long) t; x[2] = (long) t;
/* fall into the double case */ /* FALLTHRU */
case DFmode: case DFmode:
/* Pack the second long */ /* Pack the second long */
...@@ -586,7 +594,7 @@ endian (e, x, mode) ...@@ -586,7 +594,7 @@ endian (e, x, mode)
t = (unsigned long) e[2] & 0xffff; t = (unsigned long) e[2] & 0xffff;
t |= th << 16; t |= th << 16;
x[1] = (long) t; x[1] = (long) t;
/* fall into the float case */ /* FALLTHRU */
case SFmode: case SFmode:
case HFmode: case HFmode:
...@@ -1256,7 +1264,11 @@ etartdouble (r, l) ...@@ -1256,7 +1264,11 @@ etartdouble (r, l)
UEMUSHORT e[NE]; UEMUSHORT e[NE];
GET_REAL (&r, e); GET_REAL (&r, e);
#if INTEL_EXTENDED_IEEE_FORMAT == 0
etoe113 (e, e); etoe113 (e, e);
#else
etoe64 (e, e);
#endif
endian (e, l, TFmode); endian (e, l, TFmode);
} }
...@@ -3535,6 +3547,7 @@ e24toe (pe, y) ...@@ -3535,6 +3547,7 @@ e24toe (pe, y)
#endif /* not IBM */ #endif /* not IBM */
} }
#if (INTEL_EXTENDED_IEEE_FORMAT == 0)
/* Convert e-type X to IEEE 128-bit long double format E. */ /* Convert e-type X to IEEE 128-bit long double format E. */
static void static void
...@@ -3627,6 +3640,7 @@ toe113 (a, b) ...@@ -3627,6 +3640,7 @@ toe113 (a, b)
*q-- = *p++; *q-- = *p++;
} }
} }
#endif
/* Convert e-type X to IEEE double extended format E. */ /* Convert e-type X to IEEE double extended format E. */
...@@ -5515,9 +5529,11 @@ read_expnt: ...@@ -5515,9 +5529,11 @@ read_expnt:
case 64: case 64:
toe64 (yy, y); toe64 (yy, y);
break; break;
#if (INTEL_EXTENDED_IEEE_FORMAT == 0)
case 113: case 113:
toe113 (yy, y); toe113 (yy, y);
break; break;
#endif
case NBITS: case NBITS:
emovo (yy, y); emovo (yy, y);
break; break;
......
...@@ -208,15 +208,11 @@ extern REAL_VALUE_TYPE ereal_from_double PARAMS ((HOST_WIDE_INT *)); ...@@ -208,15 +208,11 @@ extern REAL_VALUE_TYPE ereal_from_double PARAMS ((HOST_WIDE_INT *));
ereal_from_uint (&d, lo, hi, mode) ereal_from_uint (&d, lo, hi, mode)
/* IN is a REAL_VALUE_TYPE. OUT is an array of longs. */ /* IN is a REAL_VALUE_TYPE. OUT is an array of longs. */
#if (INTEL_EXTENDED_IEEE_FORMAT != 0) && (MAX_LONG_DOUBLE_TYPE_SIZE == 128)
#define REAL_VALUE_TO_TARGET_LONG_DOUBLE(IN, OUT) (etarldouble ((IN), (OUT)))
#else
#define REAL_VALUE_TO_TARGET_LONG_DOUBLE(IN, OUT) \ #define REAL_VALUE_TO_TARGET_LONG_DOUBLE(IN, OUT) \
(LONG_DOUBLE_TYPE_SIZE == 64 ? etardouble ((IN), (OUT)) \ (LONG_DOUBLE_TYPE_SIZE == 64 ? etardouble ((IN), (OUT)) \
: LONG_DOUBLE_TYPE_SIZE == 96 ? etarldouble ((IN), (OUT)) \ : LONG_DOUBLE_TYPE_SIZE == 96 ? etarldouble ((IN), (OUT)) \
: LONG_DOUBLE_TYPE_SIZE == 128 ? etartdouble ((IN), (OUT)) \ : LONG_DOUBLE_TYPE_SIZE == 128 ? etartdouble ((IN), (OUT)) \
: abort()) : abort())
#endif
#define REAL_VALUE_TO_TARGET_DOUBLE(IN, OUT) (etardouble ((IN), (OUT))) #define REAL_VALUE_TO_TARGET_DOUBLE(IN, OUT) (etardouble ((IN), (OUT)))
/* IN is a REAL_VALUE_TYPE. OUT is a long. */ /* IN is a REAL_VALUE_TYPE. OUT is a long. */
......
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