math: fix x86_64 and x32 asm not to use sahf instruction
authorSzabolcs Nagy <nsz@port70.net>
Wed, 5 Nov 2014 20:40:29 +0000 (21:40 +0100)
committerSzabolcs Nagy <nsz@port70.net>
Wed, 5 Nov 2014 20:40:29 +0000 (21:40 +0100)
commita732e80d33b4fd6f510f7cec4f5573ef5d89bc4e
tree66494d38f5374808c3816c83395d5f5850abb607
parentde2b9c21d94e0b76b629fec0060d043f535eef01
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.
src/math/x32/exp2l.s
src/math/x32/fmodl.s
src/math/x32/remainderl.s
src/math/x86_64/exp2l.s
src/math/x86_64/fmodl.s
src/math/x86_64/remainderl.s