sfp-machine.h (ASM_INVALID): New define.

* config/i386/64/sfp-machine.h (ASM_INVALID): New define.
	(ASM_DIVZERO): Ditto.
	(FP_HANLDE_EXCEPTIONS): Use ASM_INVALID and ASM_DIVZERO.

From-SVN: r177978
This commit is contained in:
Uros Bizjak 2011-08-23 01:13:57 +02:00 committed by Uros Bizjak
parent d913744e21
commit f70c879aa8
2 changed files with 16 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2011-08-23 Uros Bizjak <ubizjak@gmail.com>
* config/i386/64/sfp-machine.h (ASM_INVALID): New define.
(ASM_DIVZERO): Ditto.
(FP_HANLDE_EXCEPTIONS): Use ASM_INVALID and ASM_DIVZERO.
2011-08-18 Richard Sandiford <richard.sandiford@linaro.org> 2011-08-18 Richard Sandiford <richard.sandiford@linaro.org>
* config/arm/bpabi-lib.h (RENAME_LIBRARY_SET): Delete. * config/arm/bpabi-lib.h (RENAME_LIBRARY_SET): Delete.

View File

@ -73,17 +73,25 @@ struct fenv
unsigned short int __unused5; unsigned short int __unused5;
}; };
#ifdef __AVX__
#define ASM_INVALID "vdivss %0, %0, %0"
#define ASM_DIVZERO "vdivss %1, %0, %0"
#else
#define ASM_INVALID "divss %0, %0"
#define ASM_DIVZERO "divss %1, %0"
#endif
#define FP_HANDLE_EXCEPTIONS \ #define FP_HANDLE_EXCEPTIONS \
do { \ do { \
if (_fex & FP_EX_INVALID) \ if (_fex & FP_EX_INVALID) \
{ \ { \
float f = 0.0; \ float f = 0.0; \
__asm__ __volatile__ ("divss %0, %0 " : : "x" (f)); \ __asm__ __volatile__ (ASM_INVALID : : "x" (f)); \
} \ } \
if (_fex & FP_EX_DIVZERO) \ if (_fex & FP_EX_DIVZERO) \
{ \ { \
float f = 1.0, g = 0.0; \ float f = 1.0, g = 0.0; \
__asm__ __volatile__ ("divss %1, %0" : : "x" (f), "x" (g)); \ __asm__ __volatile__ (ASM_DIVZERO : : "x" (f), "x" (g)); \
} \ } \
if (_fex & FP_EX_OVERFLOW) \ if (_fex & FP_EX_OVERFLOW) \
{ \ { \