On Fri, 4 Oct 2013, Jan Hubicka wrote:

> Hi,
> this patch makes -Ofast to also imply -mfpmath=sse.  It is important win on
> SPECfP (2000 and 2006). Even though for exmaple the following
> float a(float b)
> {
>    return b+10;
> }
> 
> results in somewhat ridiculous
> a:
> .LFB0:  
>         .cfi_startproc
>         subl    $4, %esp
>         .cfi_def_cfa_offset 8
>         movss   .LC0, %xmm0
>         addss   8(%esp), %xmm0
>         movss   %xmm0, (%esp)
>         flds    (%esp)
>         addl    $4, %esp
>         .cfi_def_cfa_offset 4
>         ret
> 
> I wonder if we can get rid at least of the redundant stack alignment on ESP...
> 
> Bootstrapped/regtested x86_64-linux, will commit it on weekend if there are no
> complains.  I wonder if -ffast-math should do the same - it is documented as 
> enabling
> explicit set of options, bu that can be changed I guess.

I wonder if we can restrict -mfpmath=sse to local functions where we can
change the ABI ... (do we change the local functions ABI with 
-mfpmath=sse?)

Richard.

>       * invoke.texi (Ofast): Update documentation.
>       * i386.h (TARGET_FPMATH_DEFAULT): Enable SSE math with -Ofast.
> Index: doc/invoke.texi
> ===================================================================
> --- doc/invoke.texi     (revision 203161)
> +++ doc/invoke.texi     (working copy)
> @@ -6796,6 +6796,7 @@ Disregard strict standards compliance.
>  valid for all standard-compliant programs.
>  It turns on @option{-ffast-math} and the Fortran-specific
>  @option{-fno-protect-parens} and @option{-fstack-arrays}.
> +On i386 target it also enable @option{-mfpmath=sse}.
>  
>  @item -Og
>  @opindex Og
> Index: config/i386/i386.h
> ===================================================================
> --- config/i386/i386.h        (revision 203161)
> +++ config/i386/i386.h        (working copy)
> @@ -209,7 +209,8 @@ extern const struct processor_costs ix86
>  
>  #ifndef TARGET_FPMATH_DEFAULT
>  #define TARGET_FPMATH_DEFAULT \
> -  (TARGET_64BIT && TARGET_SSE ? FPMATH_SSE : FPMATH_387)
> +  ((TARGET_64BIT && TARGET_SSE) \
> +   || (TARGET_SSE && optimize_fast) ? FPMATH_SSE : FPMATH_387)
>  #endif
>  
>  #define TARGET_FLOAT_RETURNS_IN_80387 TARGET_FLOAT_RETURNS
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746
GF: Jeff Hawn, Jennifer Guild, Felix Imend

Reply via email to