From ba05e6332574e2e2ad32e00fe60b70c9d99636e7 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Tue, 23 Aug 2011 21:49:57 +0200 Subject: [PATCH] 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: r178009 --- libgcc/ChangeLog | 8 +++++++- libgcc/config.host | 11 +++++++++++ libgcc/config/i386/64/sfp-machine.h | 12 ++++++++++-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index e6e6eade9d3a..f69d09804c4a 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,9 @@ +2011-08-23 Uros Bizjak + + * config/i386/64/sfp-machine.h (ASM_INVALID): New define. + (ASM_DIVZERO): Ditto. + (FP_HANLDE_EXCEPTIONS): Use ASM_INVALID and ASM_DIVZERO. + 2011-04-28 Release Manager * GCC 4.5.3 released. @@ -21,7 +27,7 @@ 2010-09-12 Gerald Pfeifer Andrew Pinski - PR target/40959 + PR target/40959 * config.host (ia64*-*-freebsd*): Set extra_parts. Set tmake_file. 2010-07-31 Release Manager diff --git a/libgcc/config.host b/libgcc/config.host index c5f3d6e070ed..1536eef342ac 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -134,6 +134,9 @@ s390*-*-*) sh[123456789lbe]*-*-*) cpu_type=sh ;; +ba-*) + cpu_type=ba + ;; esac # Common parts for widely ported systems. @@ -253,6 +256,14 @@ fr30-*-elf) ;; frv-*-elf) ;; +ba-*-elf*) + extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crti.o crtn.o" + tmake_file="ba/t-default" + ;; +ba-*linux*) + extra_parts="$extra_parts crti.o crtn.o" + tmake_file="ba/t-default" + ;; frv-*-*linux*) ;; h8300-*-rtems*) diff --git a/libgcc/config/i386/64/sfp-machine.h b/libgcc/config/i386/64/sfp-machine.h index 5adf6dbbaa46..5186c24ffc7c 100644 --- a/libgcc/config/i386/64/sfp-machine.h +++ b/libgcc/config/i386/64/sfp-machine.h @@ -79,17 +79,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) \ { \ -- 2.47.2