Support --with-fpmath=sse for x86.

2010-02-26  H.J. Lu  <hongjiu.lu@intel.com>

	* config.gcc: Support --with-fpmath=sse for x86.

	* config/i386/ssemath.h: New.

	* doc/install.texi (--with-fpmath=sse): Documented.

From-SVN: r157090
This commit is contained in:
H.J. Lu 2010-02-26 14:52:01 +00:00 committed by H.J. Lu
parent 482b2e5b35
commit a3af5e2615
4 changed files with 71 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2010-02-26 H.J. Lu <hongjiu.lu@intel.com>
* config.gcc: Support --with-fpmath=sse for x86.
* config/i386/ssemath.h: New.
* doc/install.texi (--with-fpmath=sse): Documented.
2010-02-26 Richard Guenther <rguenther@suse.de> 2010-02-26 Richard Guenther <rguenther@suse.de>
PR tree-optimization/43188 PR tree-optimization/43188

View File

@ -2835,7 +2835,18 @@ esac
# This block sets nothing except for with_arch. # This block sets nothing except for with_arch.
if test x$with_arch = x ; then if test x$with_arch = x ; then
case ${target} in case ${target} in
i[34567]86-*-*|x86_64-*-*) i[34567]86-*-darwin*)
# Don't set default arch for Darwin since it will set the default
# ISA to SSE2.
;;
i[34567]86-*-*)
# Don't set default arch if --with-fpmath is used since it will set
# the default ISA to SSE2.
if test x$with_fpmath = x; then
with_arch=$arch
fi
;;
x86_64-*-*)
with_arch=$arch with_arch=$arch
;; ;;
esac esac
@ -2856,6 +2867,27 @@ if test x$with_arch = x ; then
esac esac
fi fi
# Support --with-fpmath.
if test x$with_fpmath != x; then
case ${target} in
i[34567]86-*-* | x86_64-*-*)
case ${with_fpmath} in
sse)
tm_file="${tm_file} i386/ssemath.h"
;;
*)
echo "Invalid --with-fpmath=$with_fpmath" 1>&2
exit 1
;;
esac
;;
*)
echo "--with-fpmath isn't supported for $target." 1>&2
exit 1
;;
esac
fi
# Similarly for --with-schedule. # Similarly for --with-schedule.
if test x$with_schedule = x; then if test x$with_schedule = x; then
case ${target} in case ${target} in

25
gcc/config/i386/ssemath.h Normal file
View File

@ -0,0 +1,25 @@
/* Copyright (C) 2010
Free Software Foundation, Inc.
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
GCC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
#undef TARGET_FPMATH_DEFAULT
#define TARGET_FPMATH_DEFAULT (TARGET_SSE2 ? FPMATH_SSE : FPMATH_387)
#undef TARGET_SUBTARGET32_ISA_DEFAULT
#define TARGET_SUBTARGET32_ISA_DEFAULT \
(OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_SSE2)

View File

@ -1170,6 +1170,11 @@ of the arguments depend on the target.
Specify if the compiler should default to @option{-marm} or @option{-mthumb}. Specify if the compiler should default to @option{-marm} or @option{-mthumb}.
This option is only supported on ARM targets. This option is only supported on ARM targets.
@item --with-fpmath=sse
Specify if the compiler should default to @option{-msse2} and
@option{-mfpmath=sse}. This option is only supported on i386 and
x86-64 targets.
@item --with-divide=@var{type} @item --with-divide=@var{type}
Specify how the compiler should generate code for checking for Specify how the compiler should generate code for checking for
division by zero. This option is only supported on the MIPS target. division by zero. This option is only supported on the MIPS target.