diff mbox

Enable SSE math on i386 with -Ofast

Message ID 20131008233945.GB19260@kam.mff.cuni.cz
State New
Headers show

Commit Message

Jan Hubicka Oct. 8, 2013, 11:39 p.m. UTC
Hi,
this is patch I ended up comitting after some furhter testing.  The difference to initial
version is that it now eanbles SSE math with -ffast-math too and it does so outside the
ugly target macro.

Bootstrapped/regtested x86_64-linux, tested with -m32
Honza

	* config/i386/i386.c (ix86_option_override_internal): Switch
	to SSE math for -ffast-math when target ISA supports SSE2.
diff mbox

Patch

Index: config/i386/i386.c
===================================================================
--- config/i386/i386.c	(revision 203252)
+++ config/i386/i386.c	(working copy)
@@ -3769,6 +3769,19 @@  ix86_option_override_internal (bool main
 	    }
 	}
     }
+  /* 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;