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
1:	pushl $0x467ff000
R
Rich Felker 已提交
72
	flds (%esp)
R
Rich Felker 已提交
73 74
	xorl %eax,%eax
	pushl $0x80000000
R
Rich Felker 已提交
75 76 77 78 79 80 81
	push %eax
	fld %st(1)
	fabs
	fucom %st(1)
	fnstsw
	fstp %st(0)
	fstp %st(0)
R
Rich Felker 已提交
82 83
	sahf
	ja 2f
R
Rich Felker 已提交
84 85 86
	fld %st(0)
	fistpl 8(%esp)
	fildl 8(%esp)
R
Rich Felker 已提交
87 88
	fxch %st(1)
	fsub %st(1)
R
Rich Felker 已提交
89 90
	mov $0x3fff,%eax
	add %eax,8(%esp)
R
Rich Felker 已提交
91 92 93
	f2xm1
	fld1
	faddp
R
Rich Felker 已提交
94 95
	fldt (%esp)
	fmulp
R
Rich Felker 已提交
96
	fstp %st(1)
R
Rich Felker 已提交
97 98 99
	add $12,%esp
	ret

R
Rich Felker 已提交
100 101 102 103 104 105 106
2:	fld %st(0)
	fstpt (%esp)
	mov 9(%esp),%ah
	and $0x7f,%ah
	cmp $0x7f,%ah
	jne 1f
	decb 9(%esp)
R
Rich Felker 已提交
107 108
	fstp %st(0)
	fldt (%esp)
R
Rich Felker 已提交
109 110 111 112 113 114 115 116 117 118
1:	fld %st(0)
	frndint
	fxch %st(1)
	fsub %st(1)
	f2xm1
	fld1
	faddp
	fscale
	fstp %st(1)
	add $12,%esp
R
Rich Felker 已提交
119
	ret