<feed xmlns='http://www.w3.org/2005/Atom'>
<title>musl/src/fenv, branch v0.9.2</title>
<subtitle>musl - an implementation of the standard library for Linux-based systems</subtitle>
<link rel='alternate' type='text/html' href='http://git.musl-libc.org/cgit/musl/'/>
<entry>
<title>try fixing/optimizing x86_64 fenv exception code</title>
<updated>2012-03-18T00:10:02+00:00</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2012-03-18T00:10:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.musl-libc.org/cgit/musl/commit/?id=b60053e7621a29ace6ab5c7b4e256e252f31ad13'/>
<id>b60053e7621a29ace6ab5c7b4e256e252f31ad13</id>
<content type='text'>
untested; may need followup-fixes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
untested; may need followup-fixes.
</pre>
</div>
</content>
</entry>
<entry>
<title>optimize x86 feclearexcept</title>
<updated>2012-03-17T23:29:00+00:00</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2012-03-17T23:29:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.musl-libc.org/cgit/musl/commit/?id=316e024f63af0d0d2bb0df3dfce2620f4be827d1'/>
<id>316e024f63af0d0d2bb0df3dfce2620f4be827d1</id>
<content type='text'>
if all exception flags will be cleared, we can avoid the expensive
store/reload of the environment and just use the fnclex instruction.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
if all exception flags will be cleared, we can avoid the expensive
store/reload of the environment and just use the fnclex instruction.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix x86_64 fe[gs]etround, analogous to nsz's x86 changes</title>
<updated>2012-03-17T22:02:20+00:00</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2012-03-17T22:02:20+00:00</published>
<link rel='alternate' type='text/html' href='http://git.musl-libc.org/cgit/musl/commit/?id=9cb6878e747909c7a45dd1c4dd550ac62e1f7690'/>
<id>9cb6878e747909c7a45dd1c4dd550ac62e1f7690</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>minor 387 fenv optimizations</title>
<updated>2012-03-17T21:49:10+00:00</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2012-03-17T21:49:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.musl-libc.org/cgit/musl/commit/?id=d5e576c7527c42b376d20ef38669ffc2a78b0a76'/>
<id>d5e576c7527c42b376d20ef38669ffc2a78b0a76</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix i386 fegetround and make fesetround faster</title>
<updated>2012-03-17T12:46:15+00:00</updated>
<author>
<name>nsz</name>
<email>nsz@port70.net</email>
</author>
<published>2012-03-17T12:46:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.musl-libc.org/cgit/musl/commit/?id=88cfaf8a142a8c57beccb89398a6421c4bbf121a'/>
<id>88cfaf8a142a8c57beccb89398a6421c4bbf121a</id>
<content type='text'>
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).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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).
</pre>
</div>
</content>
</entry>
<entry>
<title>use type directives for fenv asm functions</title>
<updated>2011-06-28T18:41:41+00:00</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2011-06-28T18:41:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.musl-libc.org/cgit/musl/commit/?id=e41182796014b0e2b52c7b3e6ee69ad7d0c3e723'/>
<id>e41182796014b0e2b52c7b3e6ee69ad7d0c3e723</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>x86_64 fenv support (untested; at least known to build successfully)</title>
<updated>2011-06-13T17:37:43+00:00</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2011-06-13T17:37:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.musl-libc.org/cgit/musl/commit/?id=773b0fe4473be18fdcc1b822630e2ebdb1719536'/>
<id>773b0fe4473be18fdcc1b822630e2ebdb1719536</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix fesetround - it was writing to status word instead of control word</title>
<updated>2011-06-13T17:37:16+00:00</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2011-06-13T17:37:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.musl-libc.org/cgit/musl/commit/?id=52cf24a0f45f208b1627a64e4af9a5ed8cb28ae7'/>
<id>52cf24a0f45f208b1627a64e4af9a5ed8cb28ae7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>floating point environment, untested</title>
<updated>2011-06-12T19:58:15+00:00</updated>
<author>
<name>Rich Felker</name>
<email>dalias@aerifal.cx</email>
</author>
<published>2011-06-12T19:58:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.musl-libc.org/cgit/musl/commit/?id=b09b78905b09016becda8df81a43e11bebd88208'/>
<id>b09b78905b09016becda8df81a43e11bebd88208</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
</feed>
