diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-10-08 23:33:34 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-10-08 23:33:34 +0000 |
commit | b6d0ea24172ec1b0dc9c16abab856a262edb07d6 (patch) | |
tree | 092d6cf781ffef0ae94442e2b14d8b9742d75de1 | |
parent | 240cc9cfe2a4180e3faa9f8c437ade4ae8900dbf (diff) | |
download | gcc-b6d0ea24172ec1b0dc9c16abab856a262edb07d6.tar.gz |
* config/i386/i386.c (ix86_option_override_internal): Switch
to SSE math for -ffast-math when target ISA supports SSE2.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@203291 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 13 |
2 files changed, 18 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5bc285e92f..fa1ef08d9ba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-10-08 Jan Hubicka <jh@suse.cz> + + * config/i386/i386.c (ix86_option_override_internal): Switch + to SSE math for -ffast-math when target ISA supports SSE2. + 2013-10-08 Andrew MacLeod <amacleod@redhat.com> * tree-flow.h: Remove some prototypes. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 1713ad6f06d..168a2ac50ea 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3769,6 +3769,19 @@ ix86_option_override_internal (bool main_args_p) } } } + /* For all chips supporting SSE2, -mfpmath=sse performs better than + fpmath=387. The second is however default at many targets since the + extra 80bit precision of temporaries is considered to be part of ABI. + Overwrite the default at least for -ffast-math. + TODO: -mfpmath=both seems to produce same performing code with bit + smaller binaries. It is however not clear if register allocation is + ready for this setting. + Also -mfpmath=387 is overall a lot more compact (bout 4-5%) than SSE + codegen. We may switch to 387 with -ffast-math for size optimized + functions. */ + else if (fast_math_flags_set_p (&global_options) + && TARGET_SSE2) + ix86_fpmath = FPMATH_SSE; else ix86_fpmath = TARGET_FPMATH_DEFAULT; |