exp.s 1.3 KB
Newer Older
R
Rich Felker 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
.global expm1f
.type expm1f,@function
expm1f:
	flds 4(%esp)
	jmp 1f

.global expm1l
.type expm1l,@function
expm1l:
	fldt 4(%esp)
	jmp 1f

.global expm1
.type expm1,@function
expm1:
	fldl 4(%esp)
1:	fldl2e
	fmulp
	fld1
	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

R
Rich Felker 已提交
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
.global exp2f
.type exp2f,@function
exp2f:
	flds 4(%esp)
	jmp 1f

.global exp2l
.type exp2l,@function
exp2l:
	fldt 4(%esp)
	jmp 1f

.global expf
.type expf,@function
expf:
	flds 4(%esp)
	jmp 2f

.global expl
.type expl,@function
expl:
	fldt 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)
R
Rich Felker 已提交
71 72 73 74 75 76 77 78 79 80 81
1:	mov $0x47000000,%eax
	push %eax
	flds (%esp)
	shl $7,%eax
	push %eax
	add %eax,%eax
	push %eax
	fld %st(1)
	fabs
	fucom %st(1)
	fnstsw
R
Rich Felker 已提交
82
	sahf
R
Rich Felker 已提交
83 84 85 86 87 88
	ja 2f
	fstp %st(0)
	fstp %st(0)
	fld %st(0)
	fistpl 8(%esp)
	fildl 8(%esp)
R
Rich Felker 已提交
89 90
	fxch %st(1)
	fsub %st(1)
R
Rich Felker 已提交
91 92
	mov $0x3fff,%eax
	add %eax,8(%esp)
R
Rich Felker 已提交
93 94 95
	f2xm1
	fld1
	faddp
R
Rich Felker 已提交
96 97
	fldt (%esp)
	fmulp
R
Rich Felker 已提交
98
	fstp %st(1)
R
Rich Felker 已提交
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
	add $12,%esp
	ret

2:	fstp %st(0)
	fstp %st(0)
	fsts 8(%esp)
	mov 8(%esp),%eax
	lea (%eax,%eax),%ecx
	cmp $0xff000000,%ecx
	ja 2f
	fstp %st(0)
	xor %ecx,%ecx
	inc %ecx
	add %eax,%eax
	jc 1f
	mov $0x7ffe,%ecx
1:	mov %ecx,8(%esp)
	fldt (%esp)
	fld %st(0)
	fmulp
2:	add $12,%esp
R
Rich Felker 已提交
120
	ret