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