OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [newlib-1.18.0/] [newlib-1.18.0-or32-1.0rc1/] [newlib/] [libc/] [include/] [machine/] [ieeefp.h] - Diff between revs 207 and 345

Only display areas with differences | Details | Blame | View Log

Rev 207 Rev 345
#ifndef __IEEE_BIG_ENDIAN
#ifndef __IEEE_BIG_ENDIAN
#ifndef __IEEE_LITTLE_ENDIAN
#ifndef __IEEE_LITTLE_ENDIAN
 
 
/* This file can define macros to choose variations of the IEEE float
/* This file can define macros to choose variations of the IEEE float
   format:
   format:
 
 
   _FLT_LARGEST_EXPONENT_IS_NORMAL
   _FLT_LARGEST_EXPONENT_IS_NORMAL
 
 
        Defined if the float format uses the largest exponent for finite
        Defined if the float format uses the largest exponent for finite
        numbers rather than NaN and infinity representations.  Such a
        numbers rather than NaN and infinity representations.  Such a
        format cannot represent NaNs or infinities at all, but it's FLT_MAX
        format cannot represent NaNs or infinities at all, but it's FLT_MAX
        is twice the IEEE value.
        is twice the IEEE value.
 
 
   _FLT_NO_DENORMALS
   _FLT_NO_DENORMALS
 
 
        Defined if the float format does not support IEEE denormals.  Every
        Defined if the float format does not support IEEE denormals.  Every
        float with a zero exponent is taken to be a zero representation.
        float with a zero exponent is taken to be a zero representation.
 
 
   ??? At the moment, there are no equivalent macros above for doubles and
   ??? At the moment, there are no equivalent macros above for doubles and
   the macros are not fully supported by --enable-newlib-hw-fp.
   the macros are not fully supported by --enable-newlib-hw-fp.
 
 
   __IEEE_BIG_ENDIAN
   __IEEE_BIG_ENDIAN
 
 
        Defined if the float format is big endian.  This is mutually exclusive
        Defined if the float format is big endian.  This is mutually exclusive
        with __IEEE_LITTLE_ENDIAN.
        with __IEEE_LITTLE_ENDIAN.
 
 
   __IEEE_LITTLE_ENDIAN
   __IEEE_LITTLE_ENDIAN
 
 
        Defined if the float format is little endian.  This is mutually exclusive
        Defined if the float format is little endian.  This is mutually exclusive
        with __IEEE_BIG_ENDIAN.
        with __IEEE_BIG_ENDIAN.
 
 
   Note that one of __IEEE_BIG_ENDIAN or __IEEE_LITTLE_ENDIAN must be specified for a
   Note that one of __IEEE_BIG_ENDIAN or __IEEE_LITTLE_ENDIAN must be specified for a
   platform or error will occur.
   platform or error will occur.
 
 
   __IEEE_BYTES_LITTLE_ENDIAN
   __IEEE_BYTES_LITTLE_ENDIAN
 
 
        This flag is used in conjunction with __IEEE_BIG_ENDIAN to describe a situation
        This flag is used in conjunction with __IEEE_BIG_ENDIAN to describe a situation
        whereby multiple words of an IEEE floating point are in big endian order, but the
        whereby multiple words of an IEEE floating point are in big endian order, but the
        words themselves are little endian with respect to the bytes.
        words themselves are little endian with respect to the bytes.
 
 
   _DOUBLE_IS_32BITS
   _DOUBLE_IS_32BITS
 
 
        This is used on platforms that support double by using the 32-bit IEEE
        This is used on platforms that support double by using the 32-bit IEEE
        float type.
        float type.
 
 
   _FLOAT_ARG
   _FLOAT_ARG
 
 
        This represents what type a float arg is passed as.  It is used when the type is
        This represents what type a float arg is passed as.  It is used when the type is
        not promoted to double.
        not promoted to double.
 
 
*/
*/
 
 
#if (defined(__arm__) || defined(__thumb__)) && !defined(__MAVERICK__)
#if (defined(__arm__) || defined(__thumb__)) && !defined(__MAVERICK__)
/* ARM traditionally used big-endian words; and within those words the
/* ARM traditionally used big-endian words; and within those words the
   byte ordering was big or little endian depending upon the target.
   byte ordering was big or little endian depending upon the target.
   Modern floating-point formats are naturally ordered; in this case
   Modern floating-point formats are naturally ordered; in this case
   __VFP_FP__ will be defined, even if soft-float.  */
   __VFP_FP__ will be defined, even if soft-float.  */
#ifdef __VFP_FP__
#ifdef __VFP_FP__
# ifdef __ARMEL__
# ifdef __ARMEL__
#  define __IEEE_LITTLE_ENDIAN
#  define __IEEE_LITTLE_ENDIAN
# else
# else
#  define __IEEE_BIG_ENDIAN
#  define __IEEE_BIG_ENDIAN
# endif
# endif
#else
#else
# ifdef __ARMEL__
# ifdef __ARMEL__
#  define __IEEE_LITTLE_ENDIAN
#  define __IEEE_LITTLE_ENDIAN
# else
# else
#  define __IEEE_BIG_ENDIAN
#  define __IEEE_BIG_ENDIAN
# endif
# endif
# ifdef __ARMWEL__
# ifdef __ARMWEL__
#  define __IEEE_BYTES_LITTLE_ENDIAN
#  define __IEEE_BYTES_LITTLE_ENDIAN
# endif
# endif
#endif
#endif
#endif
#endif
 
 
#ifdef __hppa__
#ifdef __hppa__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __SPU__
#ifdef __SPU__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
 
 
#define isfinite(y) \
#define isfinite(y) \
          (__extension__ ({__typeof__(y) __y = (y); \
          (__extension__ ({__typeof__(y) __y = (y); \
                           (sizeof (__y) == sizeof (float))  ? (1) : \
                           (sizeof (__y) == sizeof (float))  ? (1) : \
                           fpclassify(__y) != FP_INFINITE && fpclassify(__y) != FP_NAN;}))
                           fpclassify(__y) != FP_INFINITE && fpclassify(__y) != FP_NAN;}))
#define isinf(__x) ((sizeof (__x) == sizeof (float))  ?  (0) : __isinfd(__x))
#define isinf(__x) ((sizeof (__x) == sizeof (float))  ?  (0) : __isinfd(__x))
#define isnan(__x) ((sizeof (__x) == sizeof (float))  ?  (0) : __isnand(__x))
#define isnan(__x) ((sizeof (__x) == sizeof (float))  ?  (0) : __isnand(__x))
 
 
/*
/*
 * Macros for use in ieeefp.h. We can't just define the real ones here
 * Macros for use in ieeefp.h. We can't just define the real ones here
 * (like those above) as we have name space issues when this is *not*
 * (like those above) as we have name space issues when this is *not*
 * included via generic the ieeefp.h.
 * included via generic the ieeefp.h.
 */
 */
#define __ieeefp_isnanf(x)      0
#define __ieeefp_isnanf(x)      0
#define __ieeefp_isinff(x)      0
#define __ieeefp_isinff(x)      0
#define __ieeefp_finitef(x)     1
#define __ieeefp_finitef(x)     1
#endif
#endif
 
 
#ifdef __sparc__
#ifdef __sparc__
#ifdef __LITTLE_ENDIAN_DATA__
#ifdef __LITTLE_ENDIAN_DATA__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#else
#else
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
#endif
#endif
 
 
#if defined(__m68k__) || defined(__mc68000__)
#if defined(__m68k__) || defined(__mc68000__)
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#ifdef __HAVE_SHORT_DOUBLE__
#ifdef __HAVE_SHORT_DOUBLE__
# define _DOUBLE_IS_32BITS
# define _DOUBLE_IS_32BITS
#endif
#endif
#endif
#endif
 
 
#if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) || defined (__H8500__) || defined (__H8300SX__)
#if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) || defined (__H8500__) || defined (__H8300SX__)
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#define _FLOAT_ARG float
#define _FLOAT_ARG float
#define _DOUBLE_IS_32BITS
#define _DOUBLE_IS_32BITS
#endif
#endif
 
 
#if defined (__xc16x__) || defined (__xc16xL__) || defined (__xc16xS__)
#if defined (__xc16x__) || defined (__xc16xL__) || defined (__xc16xS__)
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#define _FLOAT_ARG float
#define _FLOAT_ARG float
#define _DOUBLE_IS_32BITS
#define _DOUBLE_IS_32BITS
#endif
#endif
 
 
 
 
#ifdef __sh__
#ifdef __sh__
#ifdef __LITTLE_ENDIAN__
#ifdef __LITTLE_ENDIAN__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#else
#else
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
#if defined(__SH2E__) || defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__) || defined(__SH2A_SINGLE_ONLY__)
#if defined(__SH2E__) || defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__) || defined(__SH2A_SINGLE_ONLY__)
#define _DOUBLE_IS_32BITS
#define _DOUBLE_IS_32BITS
#endif
#endif
#endif
#endif
 
 
#ifdef _AM29K
#ifdef _AM29K
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef _WIN32
#ifdef _WIN32
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __i386__
#ifdef __i386__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __i960__
#ifdef __i960__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __lm32__
#ifdef __lm32__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __M32R__
#ifdef __M32R__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#if defined(_C4x) || defined(_C3x)
#if defined(_C4x) || defined(_C3x)
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#define _DOUBLE_IS_32BITS
#define _DOUBLE_IS_32BITS
#endif
#endif
 
 
#ifdef __TIC80__
#ifdef __TIC80__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __MIPSEL__
#ifdef __MIPSEL__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
#ifdef __MIPSEB__
#ifdef __MIPSEB__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __MMIX__
#ifdef __MMIX__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __D30V__
#ifdef __D30V__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
/* necv70 was __IEEE_LITTLE_ENDIAN. */
/* necv70 was __IEEE_LITTLE_ENDIAN. */
 
 
#ifdef __W65__
#ifdef __W65__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#define _DOUBLE_IS_32BITS
#define _DOUBLE_IS_32BITS
#endif
#endif
 
 
#if defined(__Z8001__) || defined(__Z8002__)
#if defined(__Z8001__) || defined(__Z8002__)
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __m88k__
#ifdef __m88k__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __mn10300__
#ifdef __mn10300__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __mn10200__
#ifdef __mn10200__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#define _DOUBLE_IS_32BITS
#define _DOUBLE_IS_32BITS
#endif
#endif
 
 
#ifdef __v800
#ifdef __v800
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __v850
#ifdef __v850
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __D10V__
#ifdef __D10V__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#if __DOUBLE__ == 32
#if __DOUBLE__ == 32
#define _DOUBLE_IS_32BITS
#define _DOUBLE_IS_32BITS
#endif
#endif
#endif
#endif
 
 
#ifdef __PPC__
#ifdef __PPC__
#if (defined(_BIG_ENDIAN) && _BIG_ENDIAN) || (defined(_AIX) && _AIX)
#if (defined(_BIG_ENDIAN) && _BIG_ENDIAN) || (defined(_AIX) && _AIX)
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#else
#else
#if (defined(_LITTLE_ENDIAN) && _LITTLE_ENDIAN) || (defined(__sun__) && __sun__) || (defined(_WIN32) && _WIN32)
#if (defined(_LITTLE_ENDIAN) && _LITTLE_ENDIAN) || (defined(__sun__) && __sun__) || (defined(_WIN32) && _WIN32)
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
#endif
#endif
#endif
#endif
 
 
#ifdef __xstormy16__
#ifdef __xstormy16__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __arc__
#ifdef __arc__
#ifdef __big_endian__
#ifdef __big_endian__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#else
#else
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
#endif
#endif
 
 
#ifdef __CRX__
#ifdef __CRX__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __fr30__
#ifdef __fr30__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __mcore__
#ifdef __mcore__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __mt__
#ifdef __mt__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __frv__
#ifdef __frv__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __moxie__
#ifdef __moxie__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __ia64__
#ifdef __ia64__
#ifdef __BIG_ENDIAN__
#ifdef __BIG_ENDIAN__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#else
#else
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
#endif
#endif
 
 
#ifdef __AVR__
#ifdef __AVR__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#define _DOUBLE_IS_32BITS
#define _DOUBLE_IS_32BITS
#endif
#endif
 
 
#if defined(__or32__) || defined(__or1k__) || defined(__or16__) || defined(__OR32__) || defined(__OR1K__) 
#if defined(__or32__) || defined(__or1k__) || defined(__or16__) || defined(__OR32__) || defined(__OR1K__) 
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __IP2K__
#ifdef __IP2K__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#define __SMALL_BITFIELDS
#define __SMALL_BITFIELDS
#define _DOUBLE_IS_32BITS
#define _DOUBLE_IS_32BITS
#endif
#endif
 
 
#ifdef __iq2000__
#ifdef __iq2000__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __MAVERICK__
#ifdef __MAVERICK__
#ifdef __ARMEL__
#ifdef __ARMEL__
#  define __IEEE_LITTLE_ENDIAN
#  define __IEEE_LITTLE_ENDIAN
#else  /* must be __ARMEB__ */
#else  /* must be __ARMEB__ */
#  define __IEEE_BIG_ENDIAN
#  define __IEEE_BIG_ENDIAN
#endif /* __ARMEL__ */
#endif /* __ARMEL__ */
#endif /* __MAVERICK__ */
#endif /* __MAVERICK__ */
 
 
#ifdef __m32c__
#ifdef __m32c__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#define __SMALL_BITFIELDS
#define __SMALL_BITFIELDS
#endif
#endif
 
 
#ifdef __CRIS__
#ifdef __CRIS__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __BFIN__
#ifdef __BFIN__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __x86_64__
#ifdef __x86_64__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifdef __mep__
#ifdef __mep__
#ifdef __LITTLE_ENDIAN__
#ifdef __LITTLE_ENDIAN__
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#else
#else
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
#endif
#endif
 
 
#ifdef __MICROBLAZE__
#ifdef __MICROBLAZE__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#endif
#endif
 
 
#ifdef __RX__
#ifdef __RX__
 
 
#ifdef __RX_BIG_ENDIAN__
#ifdef __RX_BIG_ENDIAN__
#define __IEEE_BIG_ENDIAN
#define __IEEE_BIG_ENDIAN
#else
#else
#define __IEEE_LITTLE_ENDIAN
#define __IEEE_LITTLE_ENDIAN
#endif
#endif
 
 
#ifndef __RX_64BIT_DOUBLES__
#ifndef __RX_64BIT_DOUBLES__
#define _DOUBLE_IS_32BITS
#define _DOUBLE_IS_32BITS
#endif
#endif
 
 
#ifdef __RX_16BIT_INTS__
#ifdef __RX_16BIT_INTS__
#define __SMALL_BITFIELDS
#define __SMALL_BITFIELDS
#endif
#endif
 
 
#endif
#endif
 
 
#ifndef __IEEE_BIG_ENDIAN
#ifndef __IEEE_BIG_ENDIAN
#ifndef __IEEE_LITTLE_ENDIAN
#ifndef __IEEE_LITTLE_ENDIAN
#error Endianess not declared!!
#error Endianess not declared!!
#endif /* not __IEEE_LITTLE_ENDIAN */
#endif /* not __IEEE_LITTLE_ENDIAN */
#endif /* not __IEEE_BIG_ENDIAN */
#endif /* not __IEEE_BIG_ENDIAN */
 
 
#endif /* not __IEEE_LITTLE_ENDIAN */
#endif /* not __IEEE_LITTLE_ENDIAN */
#endif /* not __IEEE_BIG_ENDIAN */
#endif /* not __IEEE_BIG_ENDIAN */
 
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.