On Sun, Feb 21, 2010 at 6:34 PM, Joseph S. Myers <jos...@codesourcery.com> wrote: > On Sun, 21 Feb 2010, Geert Bosch wrote: > >> > As I understand it, whether -mfpmath=387 (with excess precision) or >> > -mfpmath=sse is the default is also considered part of the platform API >> > (like whether char is signed or unsigned by default, for example), in >> > addition to the ABI issues that can slow things down when SSE is used. >> >> No, this is not a new ABI. The ABI stays exactly the same. The I of > > Correct - I said API, not ABI. The API for C programs on x86 GNU/Linux > involves FLT_EVAL_METHOD == 2, whereas that on x86 Darwin involves > FLT_EVAL_METHOD == 0 and that on FreeBSD involves FLT_EVAL_METHOD == 2 > but with FPU rounding precision set to 53 bits so only excess range, not > precision, applies. > > You can support multiple APIs within one ABI - you can support both > versions of -mfpmath just as you can support both signed and unsigned > char, or both signed and unsigned bit-fields. It is not however > appropriate for -march options (whether explicit, or configured defaults > from the noncanonical target name or otherwise) to change either ABI or > API. Configure options to configure with a different API would be fine, > as would target names such as i686-pc-linux-gnussemath.
We could very well enable -mfpmath=sse as a side-effect of -ffast-math though. Richard.