diff options
author | Szabolcs Nagy <nsz@port70.net> | 2014-11-05 21:40:29 +0100 |
---|---|---|
committer | Szabolcs Nagy <nsz@port70.net> | 2014-11-05 21:40:29 +0100 |
commit | a732e80d33b4fd6f510f7cec4f5573ef5d89bc4e (patch) | |
tree | 66494d38f5374808c3816c83395d5f5850abb607 /src/math/x32/fmodl.s | |
parent | de2b9c21d94e0b76b629fec0060d043f535eef01 (diff) | |
download | musl-a732e80d33b4fd6f510f7cec4f5573ef5d89bc4e.tar.gz musl-a732e80d33b4fd6f510f7cec4f5573ef5d89bc4e.tar.bz2 musl-a732e80d33b4fd6f510f7cec4f5573ef5d89bc4e.tar.xz musl-a732e80d33b4fd6f510f7cec4f5573ef5d89bc4e.zip |
math: fix x86_64 and x32 asm not to use sahf instruction
Some early x86_64 cpus (released before 2006) did not support sahf/lahf
instructions so they should be avoided (intel manual says they are only
supported if CPUID.80000001H:ECX.LAHF-SAHF[bit 0] = 1).
The workaround simplifies exp2l and expm1l because fucomip can be
used instead of the fucomp;fnstsw;sahf sequence copied from i386.
In fmodl and remainderl sahf is replaced by a simple bit test.
Diffstat (limited to 'src/math/x32/fmodl.s')
-rw-r--r-- | src/math/x32/fmodl.s | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/math/x32/fmodl.s b/src/math/x32/fmodl.s index 9e4378ab..b9513204 100644 --- a/src/math/x32/fmodl.s +++ b/src/math/x32/fmodl.s @@ -5,7 +5,7 @@ fmodl: fldt 8(%esp) 1: fprem fstsw %ax - sahf - jp 1b + testb $4,%ah + jnz 1b fstp %st(1) ret |