s_scalbn.S revision 1.14 1 /*
2 * Written by J.T. Conklin <jtc (at) NetBSD.org>.
3 * Public domain.
4 */
5
6 #include <machine/asm.h>
7
8 RCSID("$NetBSD: s_scalbn.S,v 1.14 2013/05/20 19:40:09 joerg Exp $")
9
10 #ifdef WEAK_ALIAS
11 WEAK_ALIAS(scalbn,_scalbn)
12 WEAK_ALIAS(scalbln,_scalbln)
13 WEAK_ALIAS(ldexp,_scalbn)
14 #endif
15 #ifdef __x86_64__
16 ENTRY(_scalbn)
17 movl %edi,-12(%rsp)
18 fildl -12(%rsp)
19 movsd %xmm0,-8(%rsp)
20 fldl -8(%rsp)
21 fscale
22 fstpl -8(%rsp)
23 movsd -8(%rsp),%xmm0
24 fstp %st(0)
25 ret
26 #elif defined(STRONG_ALIAS)
27 STRONG_ALIAS(_scalbn, scalbln)
28 #endif
29
30 ENTRY(_scalbln)
31 #ifdef __x86_64__
32 movq %rdi,-16(%rsp)
33 fildq -16(%rsp)
34 movsd %xmm0,-8(%rsp)
35 fldl -8(%rsp)
36 fscale
37 fstpl -8(%rsp)
38 movsd -8(%rsp),%xmm0
39 fstp %st(0)
40 #else
41 fildl 12(%esp)
42 fldl 4(%esp)
43 fscale
44 fstp %st(1) /* clean up stack */
45 #endif
46 ret
47