History log of /seL4-camkes-master/projects/musllibc/src/math/x86_64/exp2l.s
Revision Date Author Comments
# 18938c29 23-Apr-2015 Rich Felker <dalias@aerifal.cx>

fix regression in x86_64 math asm with old binutils

the implicit-operand form of fucomip is rejected by binutils 2.19 and
perhaps other versions still in use. writing both operands explicitly
fixes the issue. there is no change to the resulting output.

commit a732e80d33b4fd6f510f7cec4f5573ef5d89bc4e was the source of this
regression.


# a732e80d 05-Nov-2014 Szabolcs Nagy <nsz@port70.net>

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.


# 02343946 04-Sep-2013 Szabolcs Nagy <nsz@port70.net>

math: fix expm1l on x86_64 (avoid underflow for large negative x)

copy the fix from i386: return -1 instead of exp2l(x)-1 when x <= -65


# 07039ed8 05-Sep-2013 Szabolcs Nagy <nsz@port70.net>

math: fix exp2l asm on x86 (raise underflow correctly)

there were two problems:
* omitted underflow on subnormal results: exp2l(-16383.5) was calculated
as sqrt(2)*2^-16384, the last bits of sqrt(2) are zero so the down scaling
does not underflow eventhough the result is in subnormal range
* spurious underflow for subnormal inputs: exp2l(0x1p-16400) was evaluated
as f2xm1(x)+1 and f2xm1 raised underflow (because inexact subnormal result)

the first issue is fixed by raising underflow manually if x is in
(-32768,-16382] and not integer (x-0x1p63+0x1p63 != x)

the second issue is fixed by treating x in (-0x1p64,0x1p64) specially

for these fixes the special case handling was completely rewritten


# 525ad96e 16-Dec-2012 Szabolcs Nagy <nsz@port70.net>

math: move x86_64 exp2l implementation to exp2l.s from expl.s


# 30df206c 20-Mar-2012 Rich Felker <dalias@aerifal.cx>

x86_64 math asm, long double functions only

this has not been tested heavily, but it's known to at least assemble
and run in basic usage cases. it's nearly identical to the
corresponding i386 code, and thus expected to be just as correct or
just as incorrect.