From e6724881e63b36f7b174030d003b47b9c6a111a2 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Fri, 28 Dec 2001 01:23:05 -0800 Subject: [PATCH] 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 --- gcc/ChangeLog | 8 ++++++++ gcc/real.c | 24 ++++++++++++++++++++---- gcc/real.h | 4 ---- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b11afd83e23..19958f4e528 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2001-12-28 Richard Henderson + + * 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 * combine.c (try_combine): Mask off sign bits when combining diff --git a/gcc/real.c b/gcc/real.c index dd62aeca23a..de737f67069 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -425,8 +425,10 @@ static void e64toe PARAMS ((UEMUSHORT *, UEMUSHORT *)); static void e113toe PARAMS ((UEMUSHORT *, UEMUSHORT *)); #endif static void e24toe PARAMS ((UEMUSHORT *, UEMUSHORT *)); +#if (INTEL_EXTENDED_IEEE_FORMAT == 0) static void etoe113 PARAMS ((UEMUSHORT *, UEMUSHORT *)); static void toe113 PARAMS ((UEMUSHORT *, UEMUSHORT *)); +#endif static void etoe64 PARAMS ((UEMUSHORT *, UEMUSHORT *)); static void toe64 PARAMS ((UEMUSHORT *, UEMUSHORT *)); static void etoe53 PARAMS ((UEMUSHORT *, UEMUSHORT *)); @@ -524,7 +526,10 @@ endian (e, x, mode) t = (unsigned long) e[7] & 0xffff; t |= th << 16; x[3] = (long) t; +#else + x[3] = 0; #endif + /* FALLTHRU */ case XFmode: /* Swap halfwords in the third long. */ @@ -532,7 +537,7 @@ endian (e, x, mode) t = (unsigned long) e[5] & 0xffff; t |= th << 16; x[2] = (long) t; - /* fall into the double case */ + /* FALLTHRU */ case DFmode: /* Swap halfwords in the second word. */ @@ -540,7 +545,7 @@ endian (e, x, mode) t = (unsigned long) e[3] & 0xffff; t |= th << 16; x[1] = (long) t; - /* fall into the float case */ + /* FALLTHRU */ case SFmode: case HFmode: @@ -568,7 +573,10 @@ endian (e, x, mode) t = (unsigned long) e[6] & 0xffff; t |= th << 16; x[3] = (long) t; +#else + x[3] = 0; #endif + /* FALLTHRU */ case XFmode: /* Pack the third long. @@ -578,7 +586,7 @@ endian (e, x, mode) t = (unsigned long) e[4] & 0xffff; t |= th << 16; x[2] = (long) t; - /* fall into the double case */ + /* FALLTHRU */ case DFmode: /* Pack the second long */ @@ -586,7 +594,7 @@ endian (e, x, mode) t = (unsigned long) e[2] & 0xffff; t |= th << 16; x[1] = (long) t; - /* fall into the float case */ + /* FALLTHRU */ case SFmode: case HFmode: @@ -1256,7 +1264,11 @@ etartdouble (r, l) UEMUSHORT e[NE]; GET_REAL (&r, e); +#if INTEL_EXTENDED_IEEE_FORMAT == 0 etoe113 (e, e); +#else + etoe64 (e, e); +#endif endian (e, l, TFmode); } @@ -3535,6 +3547,7 @@ e24toe (pe, y) #endif /* not IBM */ } +#if (INTEL_EXTENDED_IEEE_FORMAT == 0) /* Convert e-type X to IEEE 128-bit long double format E. */ static void @@ -3627,6 +3640,7 @@ toe113 (a, b) *q-- = *p++; } } +#endif /* Convert e-type X to IEEE double extended format E. */ @@ -5515,9 +5529,11 @@ read_expnt: case 64: toe64 (yy, y); break; +#if (INTEL_EXTENDED_IEEE_FORMAT == 0) case 113: toe113 (yy, y); break; +#endif case NBITS: emovo (yy, y); break; diff --git a/gcc/real.h b/gcc/real.h index 1e4dab188e2..b9ee36356f2 100644 --- a/gcc/real.h +++ b/gcc/real.h @@ -208,15 +208,11 @@ extern REAL_VALUE_TYPE ereal_from_double PARAMS ((HOST_WIDE_INT *)); ereal_from_uint (&d, lo, hi, mode) /* 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) \ (LONG_DOUBLE_TYPE_SIZE == 64 ? etardouble ((IN), (OUT)) \ : LONG_DOUBLE_TYPE_SIZE == 96 ? etarldouble ((IN), (OUT)) \ : LONG_DOUBLE_TYPE_SIZE == 128 ? etartdouble ((IN), (OUT)) \ : abort()) -#endif #define REAL_VALUE_TO_TARGET_DOUBLE(IN, OUT) (etardouble ((IN), (OUT))) /* IN is a REAL_VALUE_TYPE. OUT is a long. */ -- 2.30.2