Patchwork [RFC,i386] : Implement -mfpmath=avx

login
register
mail settings
Submitter Uros Bizjak
Date Nov. 5, 2010, 12:09 p.m.
Message ID <AANLkTik1qGdzx=f5yzugxMXGwDVRWoikz_r9AAYBF+ZZ@mail.gmail.com>
Download mbox | patch
Permalink /patch/70258/
State New
Headers show

Comments

Uros Bizjak - Nov. 5, 2010, 12:09 p.m.
Hello!

Attached patch implements -mfpmath=avx in the same way as -mfpmath=sse.

2010-11-05  Uros Bizjak  <ubizjak@gmail.com>

	* config.gcc: Support --with-fpmath=avx for x86.
	* config/i386/avxmath.h: New.
	* doc/install.texi (--with-fpmath=): Document --with-fpmath=avx.

Uros.
H.J. Lu - Nov. 5, 2010, 4:30 p.m.
On Fri, Nov 5, 2010 at 5:09 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
> Hello!
>
> Attached patch implements -mfpmath=avx in the same way as -mfpmath=sse.
>
> 2010-11-05  Uros Bizjak  <ubizjak@gmail.com>
>
>        * config.gcc: Support --with-fpmath=avx for x86.
>        * config/i386/avxmath.h: New.
>        * doc/install.texi (--with-fpmath=): Document --with-fpmath=avx.
>

I like it.  Can we check it in?

Thanks.
Uros Bizjak - Nov. 5, 2010, 6:36 p.m.
On Fri, Nov 5, 2010 at 5:30 PM, H.J. Lu <hjl.tools@gmail.com> wrote:

>> Attached patch implements -mfpmath=avx in the same way as -mfpmath=sse.
>>
>> 2010-11-05  Uros Bizjak  <ubizjak@gmail.com>
>>
>>        * config.gcc: Support --with-fpmath=avx for x86.
>>        * config/i386/avxmath.h: New.
>>        * doc/install.texi (--with-fpmath=): Document --with-fpmath=avx.
>>
>
> I like it.  Can we check it in?

Committed as rev 166369 to SVN mainline after bootstrap and regression
test on x86_64-pc-linux-gnu {,-m32}.

The current testsuite results of --with-fpmath=avx configured gcc are at [1].

[1] http://gcc.gnu.org/ml/gcc-testresults/2010-11/msg00425.html

Uros.

Patch

Index: doc/install.texi
===================================================================
--- doc/install.texi	(revision 166350)
+++ doc/install.texi	(working copy)
@@ -1166,10 +1166,11 @@ 
 Specify if the compiler should default to @option{-marm} or @option{-mthumb}.
 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-fpmath=@var{isa}
+This options sets @option{-mfpmath=sse} by default and specifies the default
+ISA for floating-point arithmetics.  You can select either @samp{sse} which
+enables @option{-msse2} or @samp{avx} which enables @option{-mavx} by default.
+This option is only supported on i386 and x86-64 targets.
 
 @item --with-divide=@var{type}
 Specify how the compiler should generate code for checking for
Index: config.gcc
===================================================================
--- config.gcc	(revision 166350)
+++ config.gcc	(working copy)
@@ -2994,6 +2994,9 @@ 
   case ${target} in
     i[34567]86-*-* | x86_64-*-*)
       case ${with_fpmath} in
+      avx)
+	tm_file="${tm_file} i386/avxmath.h"
+	;;
       sse)
 	tm_file="${tm_file} i386/ssemath.h"
 	;;
Index: config/i386/avxmath.h
===================================================================
--- config/i386/avxmath.h	(revision 0)
+++ config/i386/avxmath.h	(revision 0)
@@ -0,0 +1,29 @@ 
+/* 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 FPMATH_SSE
+
+#undef TARGET_SUBTARGET_ISA_DEFAULT
+#define TARGET_SUBTARGET_ISA_DEFAULT					\
+  (OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_SSE2	\
+   | OPTION_MASK_ISA_SSE3 | OPTION_MASK_ISA_SSSE3			\
+   | OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSE4_2			\
+   | OPTION_MASK_ISA_AVX)
+