[RFC, MIPS] Relax NaN rules
Maciej W. Rozycki
macro@codesourcery.com
Mon Mar 24 23:27:00 GMT 2014
On Mon, 24 Mar 2014, Matthew Fortune wrote:
> Yes this is a lot simpler than the 3rd mode but disabling the NAN2008 ELF
> Flag checks is even more honest as that is what would happen at the
> kernel-userland boundary anyway, so why enforce it elsewhere.
>
> I know I am pushing hard on this topic but I am significantly concerned
> about the impact a whole new build variant has for MIPS and signalling nan
> encoding is a rather trivial topic to cause it.
>
> Can anyone pinpoint something 'real' that would currently work but would
> fail if the snan encoding changed and was ignored/intermixed? Even if
> there is some genuine use-case then we can still give those
> users the ability to carefully control nan encoding with the work already
> done.
What I'm concerned the most about is the matter is so obscure to people
outside a narrow group of hardware/kernel/toolchain/library experts (that
regrettably does not include distribution packagers) that once that "don't
care" approach is set in the environment it'll be used universally because
it's the path of least resistance that'll cause the least trouble for
distributions.
And then it'll hit another group who are expert on using IEEE maths for
their scientific, etc. purposes and require correct results including NaN
special cases, but then are not necessarily expertly enough or have no
resources to rebuild their kernel/toolchain/library environment to their
needs, or maybe even understand why exactly it does not work as they want.
Plus the incorrect NaN case may actually show up only very infrequently,
may require lots of effort to track down, and may eventually ruin their
work.
Whereas the compromise I proposed will always produce correct results and
I believe will draw anyone's interested attention immediately to bad FP
performance where the wrong binary is used for what hardware used supports
and performance matters. That with a suitable kernel message, e.g.:
<process foo>: Unsupported FP mode requested, switching to software FP
emulation, please recompile with `-mnan=2008' for full performance.
or suchlike I believe will do and point people in the right direction (and
likewise for `-mnan=legacy').
The added benefit will be if a popular piece of software is going to
suffer from that, then people will complain to their distribution supplier
giving the vendor a chance to fix the problem up and supply the binary and
any dependent libraries compiled in the desired NaN mode. Pretty much
like some libraries/executables already supplied by distribution vendors
optimised for particular processor families or features, e.g. in the x86
world (the `cmov' feature/instruction subset comes to my mind).
Any real cons to doing this? Besides having to invest some effort (but
not really that much) into the kernel to implement this switching and
reporting mechanism -- but in real world there's no free lunch and I think
this investment will be worth it.
Maciej
More information about the Gcc
mailing list