summaryrefslogtreecommitdiff
path: root/src/fenv
AgeCommit message (Collapse)AuthorFilesLines
2013-08-16support floating point environment (fenv) on armhf (hard float) subarchsRich Felker3-0/+62
patch by nsz. I've tested it on an armhf machine and it seems to be working correctly.
2012-11-18fenv support for ppc, untestedRich Felker1-0/+120
based on code sent to the mailing list by nsz, with minor changes.
2012-11-18fix feholdexcept -- it needs to clear exceptions after saving environmentRich Felker1-0/+1
2012-11-14fenv: return FE_TONEAREST in dummy fegetroundSzabolcs Nagy1-1/+1
2012-11-13math: use '#pragma STDC FENV_ACCESS ON' when fenv is accessedSzabolcs Nagy1-0/+1
2012-10-18floating point environment/exceptions support for mipsRich Felker1-0/+60
2012-03-17try fixing/optimizing x86_64 fenv exception codeRich Felker1-18/+23
untested; may need followup-fixes.
2012-03-17optimize x86 feclearexceptRich Felker1-16/+20
if all exception flags will be cleared, we can avoid the expensive store/reload of the environment and just use the fnclex instruction.
2012-03-17fix x86_64 fe[gs]etround, analogous to nsz's x86 changesRich Felker1-8/+9
2012-03-17minor 387 fenv optimizationsRich Felker1-6/+5
2012-03-17fix i386 fegetround and make fesetround fasternsz1-10/+10
Note that the new fesetround has slightly different semantics: Storing the floating-point environment with fnstenv makes the next fldenv (or fldcw) "non-signaling", so unmasked and pending exceptions does not invoke the exception handler. (These are rare since exceptions are handled immediately and by default all exceptions are masked anyway. But if one manually unmasks an exception in the control word then either sets the corresponding exception flag in the status word or the execution of an exception raising floating-point operation gets interrupted then it may happen). So the old implementation did not trap in some rare cases where the new implementation traps. However POSIX does not specify anything like the x87 exception handling traps and the fnstenv/fldenv pair is significantly slower than the fnstcw/fldcw pair (new code is about 5x faster here and it's dominated by the function call overhead).
2011-06-28use type directives for fenv asm functionsRich Felker2-0/+14
2011-06-13x86_64 fenv support (untested; at least known to build successfully)Rich Felker1-0/+88
2011-06-13fix fesetround - it was writing to status word instead of control wordRich Felker1-3/+8
2011-06-12floating point environment, untestedRich Felker6-0/+144
at present the i386 code does not support sse floating point, which is not part of the standard i386 abi. while it may be desirable to support it later, doing so will reduce performance and require some tricks to probe if sse support is present. this first commit is i386-only, but it should be trivial to port the asm to x86_64.