X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=libgcc%2Fconfig%2Fi386%2F64%2Fsfp-machine.h;h=7a2a4beaaaf416ef9c70da01e4b5e408ca0f8a06;hp=5adf6dbbaa46d102db963762f46f79203d6141f8;hb=047a5c569454531659505201f30b19db6eee3f64;hpb=f7ef49daae907e2f7d2cc52eb410cacdfc94d6f9 diff --git a/libgcc/config/i386/64/sfp-machine.h b/libgcc/config/i386/64/sfp-machine.h index 5adf6dbbaa4..7a2a4beaaaf 100644 --- a/libgcc/config/i386/64/sfp-machine.h +++ b/libgcc/config/i386/64/sfp-machine.h @@ -1,14 +1,8 @@ #define _FP_W_TYPE_SIZE 64 -#ifdef _WIN64 - #define _FP_W_TYPE unsigned long long - #define _FP_WS_TYPE signed long long - #define _FP_I_TYPE long long -#else - #define _FP_W_TYPE unsigned long - #define _FP_WS_TYPE signed long - #define _FP_I_TYPE long -#endif +#define _FP_W_TYPE unsigned long long +#define _FP_WS_TYPE signed long long +#define _FP_I_TYPE long long typedef int TItype __attribute__ ((mode (TI))); typedef unsigned int UTItype __attribute__ ((mode (TI))); @@ -79,17 +73,25 @@ struct fenv 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 \ do { \ if (_fex & FP_EX_INVALID) \ { \ float f = 0.0; \ - __asm__ __volatile__ ("divss %0, %0 " : : "x" (f)); \ + __asm__ __volatile__ (ASM_INVALID : : "x" (f)); \ } \ if (_fex & FP_EX_DIVZERO) \ { \ 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) \ { \