merge from gcc

This commit is contained in:
DJ Delorie 2008-06-11 01:17:34 +00:00
parent 06c74433a7
commit 5f5dfcbe1b
14 changed files with 93 additions and 13 deletions

View File

@ -1,3 +1,16 @@
2008-06-10 Joseph Myers <joseph@codesourcery.com>
* dconfig.h: New.
* decContext.c, decExcept.c, decExcept.h, decLibrary.c,
decNumber.c, decNumberLocal.h, decRound.c, dpd/decimal128.c,
dpd/decimal32.c, dpd/decimal64.c: Include dconfig.h not config.h.
* dpd/decimal128Local.h (decimal128SetSign, decimal128ClearSign,
decimal128FlipSign): Use WORDS_BIGENDIAN not
FLOAT_WORDS_BIG_ENDIAN.
* bid/host-ieee128.c: Include dconfig.h.
(__host_to_ieee_128, __ieee_to_host_128): Swap 64-bit halves of
value if WORDS_BIGENDIAN.
2008-04-18 Paolo Bonzini <bonzini@gnu.org>
PR bootstrap/35457

View File

@ -29,20 +29,35 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
#include <string.h>
#include "dconfig.h"
#include "bid-dpd.h"
#include "decimal128.h"
void __host_to_ieee_128 (_Decimal128 in, decimal128 *out);
void __ieee_to_host_128 (decimal128 in, _Decimal128 *out);
/* The code for converting 128-bit values between DPD and BID presumes
that the 64-bit halves of the 128-bit value are in little-endian
order, so they need swapping on big-endian hosts. */
void
__host_to_ieee_128 (_Decimal128 in, decimal128 *out)
{
#if WORDS_BIGENDIAN
memcpy ((char *) out, (char *) &in + 8, 8);
memcpy ((char *) out + 8, (char *) &in, 8);
#else
memcpy ((char *) out, (char *) &in, 16);
#endif
}
void
__ieee_to_host_128 (decimal128 in, _Decimal128 *out)
{
#if WORDS_BIGENDIAN
memcpy ((char *) out, (char *) &in + 8, 8);
memcpy ((char *) out + 8, (char *) &in, 8);
#else
memcpy ((char *) out, (char *) &in, 16);
#endif
}

52
libdecnumber/dconfig.h Normal file
View File

@ -0,0 +1,52 @@
/* Configure decNumber for either host or target.
Copyright (C) 2008 Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2, or (at your option) any later
version.
In addition to the permissions in the GNU General Public License,
the Free Software Foundation gives you unlimited permission to link
the compiled version of this file into combinations with other
programs, and to distribute those combinations without any
restriction coming from the use of this file. (The General Public
License restrictions do apply in other respects; for example, they
cover modification of the file, and distribution when not linked
into a combine executable.)
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA. */
#ifdef IN_LIBGCC2
#include "tconfig.h"
#include "coretypes.h"
#include "tm.h"
#ifndef LIBGCC2_WORDS_BIG_ENDIAN
#define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
#endif
#ifndef LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
#define LIBGCC2_FLOAT_WORDS_BIG_ENDIAN LIBGCC2_WORDS_BIG_ENDIAN
#endif
#if LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
#define WORDS_BIGENDIAN 1
#endif
#else
#include "config.h"
#endif

View File

@ -37,7 +37,7 @@
#include <string.h> /* for strcmp */
#include <stdio.h> /* for printf if DECCHECK */
#include "config.h" /* for GCC definitions */
#include "dconfig.h" /* for GCC definitions */
#include "decContext.h" /* context and base types */
#include "decNumberLocal.h" /* decNumber local types, etc. */

View File

@ -28,7 +28,7 @@
02110-1301, USA. */
#include <fenv.h>
#include "config.h"
#include "dconfig.h"
#include "decContext.h"
#include "decExcept.h"

View File

@ -28,7 +28,7 @@
02110-1301, USA. */
#include <fenv.h>
#include "config.h"
#include "dconfig.h"
#include "decContext.h"
#define DFP_EXCEPTIONS_ENABLED 1

View File

@ -27,7 +27,7 @@
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA. */
#include "config.h"
#include "dconfig.h"
#include "decContext.h"
#include "decimal128.h"
#include "decimal64.h"

View File

@ -170,7 +170,7 @@
#include <stdio.h> /* for printf [if needed] */
#include <string.h> /* for strcpy */
#include <ctype.h> /* for lower */
#include "config.h" /* for GCC definitions */
#include "dconfig.h" /* for GCC definitions */
#include "decNumber.h" /* base number library */
#include "decNumberLocal.h" /* decNumber local types, etc. */

View File

@ -44,7 +44,7 @@
#include <stdlib.h> /* for abs */
#include <string.h> /* for memset, strcpy */
#include "config.h" /* for WORDS_BIGENDIAN */
#include "dconfig.h" /* for WORDS_BIGENDIAN */
/* Conditional code flag -- set this to match hardware platform */
/* 1=little-endian, 0=big-endian */

View File

@ -28,7 +28,7 @@
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA. */
#include "config.h"
#include "dconfig.h"
#include "decContext.h"
#include "decRound.h"

View File

@ -42,7 +42,7 @@
#include <string.h> /* [for memset/memcpy] */
#include <stdio.h> /* [for printf] */
#include "config.h" /* GCC definitions */
#include "dconfig.h" /* GCC definitions */
#define DECNUMDIGITS 34 /* make decNumbers with space for 34 */
#include "decNumber.h" /* base number library */
#include "decNumberLocal.h" /* decNumber local types, etc. */

View File

@ -34,14 +34,14 @@
/* Set sign; this assumes the sign was previously zero. */
#define decimal128SetSign(d,b) \
{ (d)->bytes[FLOAT_WORDS_BIG_ENDIAN ? 0 : 15] |= ((unsigned) (b) << 7); }
{ (d)->bytes[WORDS_BIGENDIAN ? 0 : 15] |= ((unsigned) (b) << 7); }
/* Clear sign. */
#define decimal128ClearSign(d) \
{ (d)->bytes[FLOAT_WORDS_BIG_ENDIAN ? 0 : 15] &= ~0x80; }
{ (d)->bytes[WORDS_BIGENDIAN ? 0 : 15] &= ~0x80; }
/* Flip sign. */
#define decimal128FlipSign(d) \
{ (d)->bytes[FLOAT_WORDS_BIG_ENDIAN ? 0 : 15] ^= 0x80; }
{ (d)->bytes[WORDS_BIGENDIAN ? 0 : 15] ^= 0x80; }
#endif

View File

@ -42,7 +42,7 @@
#include <string.h> /* [for memset/memcpy] */
#include <stdio.h> /* [for printf] */
#include "config.h" /* GCC definitions */
#include "dconfig.h" /* GCC definitions */
#define DECNUMDIGITS 7 /* make decNumbers with space for 7 */
#include "decNumber.h" /* base number library */
#include "decNumberLocal.h" /* decNumber local types, etc. */

View File

@ -42,7 +42,7 @@
#include <string.h> /* [for memset/memcpy] */
#include <stdio.h> /* [for printf] */
#include "config.h" /* GCC definitions */
#include "dconfig.h" /* GCC definitions */
#define DECNUMDIGITS 16 /* make decNumbers with space for 16 */
#include "decNumber.h" /* base number library */
#include "decNumberLocal.h" /* decNumber local types, etc. */