Index: fusl/src/math/i386/exp.s |
diff --git a/fusl/src/math/i386/exp.s b/fusl/src/math/i386/exp.s |
deleted file mode 100644 |
index c7aa5b6eaa37a8385ff3998cf5b690884295618d..0000000000000000000000000000000000000000 |
--- a/fusl/src/math/i386/exp.s |
+++ /dev/null |
@@ -1,152 +0,0 @@ |
-.global expm1f |
-.type expm1f,@function |
-expm1f: |
- flds 4(%esp) |
- mov 4(%esp),%eax |
- add %eax,%eax |
- cmp $0x01000000,%eax |
- jae 1f |
- # subnormal x, return x with underflow |
- fnstsw %ax |
- and $16,%ax |
- jnz 2f |
- fld %st(0) |
- fmul %st(1) |
- fstps 4(%esp) |
-2: ret |
- |
-.global expm1l |
-.type expm1l,@function |
-expm1l: |
- fldt 4(%esp) |
- jmp 1f |
- |
-.global expm1 |
-.type expm1,@function |
-expm1: |
- fldl 4(%esp) |
- mov 8(%esp),%eax |
- add %eax,%eax |
- cmp $0x00200000,%eax |
- jae 1f |
- # subnormal x, return x with underflow |
- fnstsw %ax |
- and $16,%ax |
- jnz 2f |
- fsts 4(%esp) |
-2: ret |
-1: fldl2e |
- fmulp |
- mov $0xc2820000,%eax |
- push %eax |
- flds (%esp) |
- pop %eax |
- fucomp %st(1) |
- fnstsw %ax |
- sahf |
- fld1 |
- jb 1f |
- # x*log2e < -65, return -1 without underflow |
- fstp %st(1) |
- fchs |
- ret |
-1: fld %st(1) |
- fabs |
- fucom %st(1) |
- fnstsw %ax |
- fstp %st(0) |
- fstp %st(0) |
- sahf |
- ja 1f |
- f2xm1 |
- ret |
-1: call 1f |
- fld1 |
- fsubrp |
- ret |
- |
-.global exp2f |
-.type exp2f,@function |
-exp2f: |
- flds 4(%esp) |
- jmp 1f |
- |
-.global exp2l |
-.global __exp2l |
-.hidden __exp2l |
-.type exp2l,@function |
-exp2l: |
-__exp2l: |
- fldt 4(%esp) |
- jmp 1f |
- |
-.global expf |
-.type expf,@function |
-expf: |
- flds 4(%esp) |
- jmp 2f |
- |
-.global exp |
-.type exp,@function |
-exp: |
- fldl 4(%esp) |
-2: fldl2e |
- fmulp |
- jmp 1f |
- |
-.global exp2 |
-.type exp2,@function |
-exp2: |
- fldl 4(%esp) |
-1: sub $12,%esp |
- fld %st(0) |
- fstpt (%esp) |
- mov 8(%esp),%ax |
- and $0x7fff,%ax |
- cmp $0x3fff+13,%ax |
- jb 4f # |x| < 8192 |
- cmp $0x3fff+15,%ax |
- jae 3f # |x| >= 32768 |
- fsts (%esp) |
- cmpl $0xc67ff800,(%esp) |
- jb 2f # x > -16382 |
- movl $0x5f000000,(%esp) |
- flds (%esp) # 0x1p63 |
- fld %st(1) |
- fsub %st(1) |
- faddp |
- fucomp %st(1) |
- fnstsw |
- sahf |
- je 2f # x - 0x1p63 + 0x1p63 == x |
- movl $1,(%esp) |
- flds (%esp) # 0x1p-149 |
- fdiv %st(1) |
- fstps (%esp) # raise underflow |
-2: fld1 |
- fld %st(1) |
- frndint |
- fxch %st(2) |
- fsub %st(2) # st(0)=x-rint(x), st(1)=1, st(2)=rint(x) |
- f2xm1 |
- faddp # 2^(x-rint(x)) |
-1: fscale |
- fstp %st(1) |
- add $12,%esp |
- ret |
-3: xor %eax,%eax |
-4: cmp $0x3fff-64,%ax |
- fld1 |
- jb 1b # |x| < 0x1p-64 |
- fstpt (%esp) |
- fistl 8(%esp) |
- fildl 8(%esp) |
- fsubrp %st(1) |
- addl $0x3fff,8(%esp) |
- f2xm1 |
- fld1 |
- faddp # 2^(x-rint(x)) |
- fldt (%esp) # 2^rint(x) |
- fmulp |
- add $12,%esp |
- ret |