On 11/15/2011 09:18 AM, Rayson Ho wrote: > Hi Dror, > > Did you try with the -fno-math-errno flag?? Yes, that works fine. > > I know the stuff documented in the math_error manpage. But in the end the > compiler still needs to generate code that handles older programs that use > errno. I think that it's perfectly reasonable for Open64 to match gcc. But, if that wasn't an issue, there are plenty of other compiler flags in Open64 that affect floating point results: -O3 does some stuff by default, -OPT:roundoff=n, -OPT:IEEE_arithmetic, -funsafe-math-optimizations. I would have chosen to tie this behavior to one or more of those.
Dror > > The fetestexcept() library routine uses the x86 fnstsw& SSE stmxcsr > instructions to get the FPU status. The processor itself does not know > anything about the errno variable, which is a memory location that is not > more special than another else in the address space of the program. > > Rayson > > ================================= > Grid Engine / Open Grid Scheduler > http://gridscheduler.sourceforge.net/ > > Scalable Grid Engine Support Program > http://www.scalablelogic.com/ > > > > > > > ----- Original Message ----- > From: Dror Maydan<may...@tensilica.com> > To: "s...@cup.hp.com"<s...@cup.hp.com> > Cc: "open64-devel@lists.sourceforge.net"<open64-devel@lists.sourceforge.net> > Sent: Tuesday, November 15, 2011 11:55 AM > Subject: Re: [Open64-devel] sqrtf > > On 11/15/2011 08:16 AM, Steve Ellcey wrote: >> On Mon, 2011-11-14 at 17:49 -0800, Dror Maydan wrote: >> This is done to set errno. If the sqrt instruction returns a NaN, then >> the library function is called to make sure that errno is set correctly >> for the error that occurred. >> >>> Seems like a pretty high performance penalty for this behavior. >> The assumption is that errors will not happen very often. > Sure, but there is still a performance penalty just for doing the test; > it's hard to effectively software pipeline such loops. > > It seemed a bit strange to me since there is a hardware exception > handling mechanism that is supposed to handle error cases. If I do a > "man math_error" on Linux, it seems to imply that the standards allow > the use of the floating-point exception mechanism rather than errno. > > In any event, I understand the background. > > Thanks, > Dror >>> Dror >>> >>> PS gcc seems to do the same thing >> It can be turned off for GCC (and probably open64) with -fno-math-errno. >> >> Steve Ellcey >> s...@cup.hp.com >> > > ------------------------------------------------------------------------------ > RSA(R) Conference 2012 > Save $700 by Nov 18 > Register now > http://p.sf.net/sfu/rsa-sfdev2dev1 > _______________________________________________ > Open64-devel mailing list > Open64-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/open64-devel > > > ------------------------------------------------------------------------------ > RSA(R) Conference 2012 > Save $700 by Nov 18 > Register now > http://p.sf.net/sfu/rsa-sfdev2dev1 > _______________________________________________ > Open64-devel mailing list > Open64-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/open64-devel ------------------------------------------------------------------------------ RSA(R) Conference 2012 Save $700 by Nov 18 Register now http://p.sf.net/sfu/rsa-sfdev2dev1 _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel