asm for scalbn family

unlike some implementations, these functions perform the equivalent of
gcc's -ffloat-store on the result before returning. this is necessary
to raise underflow/overflow/inexact exceptions, perform the correct
rounding with denormals, etc.
This commit is contained in:
Rich Felker 2012-03-19 05:15:30 -04:00
commit 58ff9e8eaf
9 changed files with 64 additions and 0 deletions

1
src/math/i386/ldexp.s Normal file
View file

@ -0,0 +1 @@
# see scalbn.s

1
src/math/i386/ldexpf.s Normal file
View file

@ -0,0 +1 @@
# see scalbnf.s

1
src/math/i386/ldexpl.s Normal file
View file

@ -0,0 +1 @@
# see scalbnl.s

1
src/math/i386/scalbln.s Normal file
View file

@ -0,0 +1 @@
# see scalbn.s

1
src/math/i386/scalblnf.s Normal file
View file

@ -0,0 +1 @@
# see scalbnf.s

1
src/math/i386/scalblnl.s Normal file
View file

@ -0,0 +1 @@
# see scalbnl.s

20
src/math/i386/scalbn.s Normal file
View file

@ -0,0 +1,20 @@
.global ldexp
.type ldexp,@function
ldexp:
nop
.global scalbln
.type scalbln,@function
scalbln:
nop
.global scalbn
.type scalbn,@function
scalbn:
fildl 12(%esp)
fldl 4(%esp)
fscale
fstp %st(1)
fstpl 4(%esp)
fldl 4(%esp)
ret

20
src/math/i386/scalbnf.s Normal file
View file

@ -0,0 +1,20 @@
.global ldexpf
.type ldexpf,@function
ldexpf:
nop
.global scalblnf
.type scalblnf,@function
scalblnf:
nop
.global scalbnf
.type scalbnf,@function
scalbnf:
fildl 8(%esp)
flds 4(%esp)
fscale
fstp %st(1)
fstps 4(%esp)
flds 4(%esp)
ret

18
src/math/i386/scalbnl.s Normal file
View file

@ -0,0 +1,18 @@
.global ldexpl
.type ldexpl,@function
ldexpl:
nop
.global scalblnl
.type scalblnl,@function
scalblnl:
nop
.global scalbnl
.type scalbnl,@function
scalbnl:
fildl 16(%esp)
fldt 4(%esp)
fscale
fstp %st(1)
ret