xref: /haiku/src/system/libroot/posix/musl/math/x86/scalbn.s (revision f504f61099b010fbfa94b1cc63d2e9072c7f7185)
1*f504f610SAugustin Cavalier.global ldexp
2*f504f610SAugustin Cavalier.type ldexp,@function
3*f504f610SAugustin Cavalierldexp:
4*f504f610SAugustin Cavalier	nop
5*f504f610SAugustin Cavalier
6*f504f610SAugustin Cavalier.global scalbln
7*f504f610SAugustin Cavalier.type scalbln,@function
8*f504f610SAugustin Cavalierscalbln:
9*f504f610SAugustin Cavalier	nop
10*f504f610SAugustin Cavalier
11*f504f610SAugustin Cavalier.global scalbn
12*f504f610SAugustin Cavalier.type scalbn,@function
13*f504f610SAugustin Cavalierscalbn:
14*f504f610SAugustin Cavalier	mov 12(%esp),%eax
15*f504f610SAugustin Cavalier	add $0x3ffe,%eax
16*f504f610SAugustin Cavalier	cmp $0x7ffd,%eax
17*f504f610SAugustin Cavalier	jb 1f
18*f504f610SAugustin Cavalier	sub $0x3ffe,%eax
19*f504f610SAugustin Cavalier	sar $31,%eax
20*f504f610SAugustin Cavalier	xor $0xfff,%eax
21*f504f610SAugustin Cavalier	add $0x3ffe,%eax
22*f504f610SAugustin Cavalier1:	inc %eax
23*f504f610SAugustin Cavalier	fldl 4(%esp)
24*f504f610SAugustin Cavalier	mov %eax,12(%esp)
25*f504f610SAugustin Cavalier	mov $0x80000000,%eax
26*f504f610SAugustin Cavalier	mov %eax,8(%esp)
27*f504f610SAugustin Cavalier	xor %eax,%eax
28*f504f610SAugustin Cavalier	mov %eax,4(%esp)
29*f504f610SAugustin Cavalier	fldt 4(%esp)
30*f504f610SAugustin Cavalier	fmulp
31*f504f610SAugustin Cavalier	fstpl 4(%esp)
32*f504f610SAugustin Cavalier	fldl 4(%esp)
33*f504f610SAugustin Cavalier	ret
34