s_scalbn.S revision 1.10 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.10 2013/02/11 01:19:33 matt Exp $")
9
10 #ifdef WEAK_ALIAS
11 WEAK_ALIAS(scalbn,_scalbln)
12 WEAK_ALIAS(scalbln,_scalbln)
13 #endif
14 #ifdef __x86_64__
15 ENTRY(_scalbn)
16 movl %edi,-12(%rsp)
17 fildl -12(%rsp)
18 movsd %xmm0,-8(%rsp)
19 fldl -8(%rsp)
20 fscale
21 fstpl -8(%rsp)
22 movsd -8(%rsp),%xmm0
23 fstp %st(0)
24 ret
25 #elif defined(STRONG_ALIAS)
26 STRONG_ALIAS(_scalbn, scalbln)
27 #endif
28
29 ENTRY(_scalbln)
30 #ifdef __x86_64__
31 movq %rdx,-16(%rsp)
32 fildq -16(%rsp)
33 movsd %xmm0,-8(%rsp)
34 fldl -8(%rsp)
35 fscale
36 fstpl -8(%rsp)
37 movsd -8(%rsp),%xmm0
38 fstp %st(0)
39 #else
40 fildl 12(%esp)
41 fldl 4(%esp)
42 fscale
43 fstp %st(1) /* clean up stack */
44 #endif
45 ret
46