fa1e55b0a0
PR other/53317 gcc/testsuite: * gcc.dg/torture/fp-int-convert-float128-timode-2.c: New test. libgcc: * soft-fp/adddf3.c: Update from glibc. * soft-fp/addsf3.c: Likewise. * soft-fp/addtf3.c: Likewise. * soft-fp/divdf3.c: Likewise. * soft-fp/divsf3.c: Likewise. * soft-fp/divtf3.c: Likewise. * soft-fp/double.h: Likewise. * soft-fp/eqdf2.c: Likewise. * soft-fp/eqsf2.c: Likewise. * soft-fp/eqtf2.c: Likewise. * soft-fp/extenddftf2.c: Likewise. * soft-fp/extended.h: Likewise. * soft-fp/extendsfdf2.c: Likewise. * soft-fp/extendsftf2.c: Likewise. * soft-fp/fixdfdi.c: Likewise. * soft-fp/fixdfsi.c: Likewise. * soft-fp/fixsfdi.c: Likewise. * soft-fp/fixsfsi.c: Likewise. * soft-fp/fixtfdi.c: Likewise. * soft-fp/fixtfsi.c: Likewise. * soft-fp/fixunsdfdi.c: Likewise. * soft-fp/fixunsdfsi.c: Likewise. * soft-fp/fixunssfdi.c: Likewise. * soft-fp/fixunssfsi.c: Likewise. * soft-fp/fixunstfdi.c: Likewise. * soft-fp/fixunstfsi.c: Likewise. * soft-fp/floatdidf.c: Likewise. * soft-fp/floatdisf.c: Likewise. * soft-fp/floatditf.c: Likewise. * soft-fp/floatsidf.c: Likewise. * soft-fp/floatsisf.c: Likewise. * soft-fp/floatsitf.c: Likewise. * soft-fp/floatundidf.c: Likewise. * soft-fp/floatundisf.c: Likewise. * soft-fp/floatunditf.c: Likewise. * soft-fp/floatunsidf.c: Likewise. * soft-fp/floatunsisf.c: Likewise. * soft-fp/floatunsitf.c: Likewise. * soft-fp/gedf2.c: Likewise. * soft-fp/gesf2.c: Likewise. * soft-fp/getf2.c: Likewise. * soft-fp/ledf2.c: Likewise. * soft-fp/lesf2.c: Likewise. * soft-fp/letf2.c: Likewise. * soft-fp/muldf3.c: Likewise. * soft-fp/mulsf3.c: Likewise. * soft-fp/multf3.c: Likewise. * soft-fp/negdf2.c: Likewise. * soft-fp/negsf2.c: Likewise. * soft-fp/negtf2.c: Likewise. * soft-fp/op-1.h: Likewise. * soft-fp/op-2.h: Likewise. * soft-fp/op-4.h: Likewise. * soft-fp/op-8.h: Likewise. * soft-fp/op-common.h: Likewise. * soft-fp/quad.h: Likewise. * soft-fp/single.h: Likewise. * soft-fp/soft-fp.h: Likewise. * soft-fp/subdf3.c: Likewise. * soft-fp/subsf3.c: Likewise. * soft-fp/subtf3.c: Likewise. * soft-fp/truncdfsf2.c: Likewise. * soft-fp/trunctfdf2.c: Likewise. * soft-fp/trunctfsf2.c: Likewise. * soft-fp/unorddf2.c: Likewise. * soft-fp/unordsf2.c: Likewise. * soft-fp/unordtf2.c: Likewise. * config/aarch64/sfp-machine.h (_FP_QNANNEGATEDP): Define to 0. * config/arm/sfp-machine.h (_FP_QNANNEGATEDP): Likewise. * config/c6x/sfp-machine.h (_FP_QNANNEGATEDP): Likewise. * config/i386/sfp-machine.h (_FP_QNANNEGATEDP): Likewise. * config/ia64/sfp-machine.h (_FP_QNANNEGATEDP): Likewise. * config/lm32/sfp-machine.h (_FP_QNANNEGATEDP): Likewise. * config/moxie/sfp-machine.h (_FP_QNANNEGATEDP): Likewise. * config/rs6000/sfp-machine.h (_FP_QNANNEGATEDP): Likewise. * config/score/sfp-machine.h (_FP_QNANNEGATEDP): Likewise. * config/tilegx/sfp-machine32.h (_FP_QNANNEGATEDP): Likewise. * config/tilegx/sfp-machine64.h (_FP_QNANNEGATEDP): Likewise. * config/tilepro/sfp-machine.h (_FP_QNANNEGATEDP): Likewise. From-SVN: r200318
84 lines
2.4 KiB
C
84 lines
2.4 KiB
C
#ifdef __MINGW32__
|
|
/* Make sure we are using gnu-style bitfield handling. */
|
|
#define _FP_STRUCT_LAYOUT __attribute__ ((gcc_struct))
|
|
#endif
|
|
|
|
/* The type of the result of a floating point comparison. This must
|
|
match `__libgcc_cmp_return__' in GCC for the target. */
|
|
typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
|
|
#define CMPtype __gcc_CMPtype
|
|
|
|
#ifdef __x86_64__
|
|
#include "config/i386/64/sfp-machine.h"
|
|
#else
|
|
#include "config/i386/32/sfp-machine.h"
|
|
#endif
|
|
|
|
#define _FP_KEEPNANFRACP 1
|
|
#define _FP_QNANNEGATEDP 0
|
|
|
|
#define _FP_NANSIGN_S 1
|
|
#define _FP_NANSIGN_D 1
|
|
#define _FP_NANSIGN_E 1
|
|
#define _FP_NANSIGN_Q 1
|
|
|
|
/* Here is something Intel misdesigned: the specs don't define
|
|
the case where we have two NaNs with same mantissas, but
|
|
different sign. Different operations pick up different NaNs. */
|
|
#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \
|
|
do { \
|
|
if (_FP_FRAC_GT_##wc(X, Y) \
|
|
|| (_FP_FRAC_EQ_##wc(X,Y) && (OP == '+' || OP == '*'))) \
|
|
{ \
|
|
R##_s = X##_s; \
|
|
_FP_FRAC_COPY_##wc(R,X); \
|
|
} \
|
|
else \
|
|
{ \
|
|
R##_s = Y##_s; \
|
|
_FP_FRAC_COPY_##wc(R,Y); \
|
|
} \
|
|
R##_c = FP_CLS_NAN; \
|
|
} while (0)
|
|
|
|
#ifndef _SOFT_FLOAT
|
|
#define FP_EX_INVALID 0x01
|
|
#define FP_EX_DENORM 0x02
|
|
#define FP_EX_DIVZERO 0x04
|
|
#define FP_EX_OVERFLOW 0x08
|
|
#define FP_EX_UNDERFLOW 0x10
|
|
#define FP_EX_INEXACT 0x20
|
|
#define FP_EX_ALL \
|
|
(FP_EX_INVALID | FP_EX_DENORM | FP_EX_DIVZERO | FP_EX_OVERFLOW \
|
|
| FP_EX_UNDERFLOW | FP_EX_INEXACT)
|
|
|
|
void __sfp_handle_exceptions (int);
|
|
|
|
#define FP_HANDLE_EXCEPTIONS \
|
|
do { \
|
|
if (__builtin_expect (_fex, 0)) \
|
|
__sfp_handle_exceptions (_fex); \
|
|
} while (0);
|
|
|
|
#define FP_TRAPPING_EXCEPTIONS ((_fcw >> FP_EX_SHIFT) & FP_EX_ALL)
|
|
|
|
#define FP_ROUNDMODE (_fcw & FP_RND_MASK)
|
|
#endif
|
|
|
|
#define __LITTLE_ENDIAN 1234
|
|
#define __BIG_ENDIAN 4321
|
|
|
|
#define __BYTE_ORDER __LITTLE_ENDIAN
|
|
|
|
/* Define ALIASNAME as a strong alias for NAME. */
|
|
#if defined __MACH__
|
|
/* Mach-O doesn't support aliasing. If these functions ever return
|
|
anything but CMPtype we need to revisit this... */
|
|
#define strong_alias(name, aliasname) \
|
|
CMPtype aliasname (TFtype a, TFtype b) { return name(a, b); }
|
|
#else
|
|
# define strong_alias(name, aliasname) _strong_alias(name, aliasname)
|
|
# define _strong_alias(name, aliasname) \
|
|
extern __typeof (name) aliasname __attribute__ ((alias (#name)));
|
|
#endif
|