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_scalbnf.S,v 1.14 2013/05/20 20:27:43 mlelstv Exp $") 9 10 #ifdef WEAK_ALIAS 11 WEAK_ALIAS(scalbnf,_scalbnf) 12 WEAK_ALIAS(scalblnf,_scalblnf) 13 WEAK_ALIAS(ldexpf,_scalbnf) 14 #endif 15 16 #ifdef __x86_64__ 17 ENTRY(_scalbnf) 18 movl %edi,-8(%rsp) 19 fildl -8(%rsp) 20 movss %xmm0,-4(%rsp) 21 flds -4(%rsp) 22 fscale 23 fstps -4(%rsp) 24 movss -4(%rsp),%xmm0 25 fstp %st(0) 26 ret 27 #elif defined(STRONG_ALIAS) 28 STRONG_ALIAS(_scalbnf,_scalblnf) 29 #endif 30 31 ENTRY(_scalblnf) 32 #ifdef __x86_64__ 33 movq %rdi,-16(%rsp) 34 fildq -16(%rsp) 35 movss %xmm0,-4(%rsp) 36 flds -4(%rsp) 37 fscale 38 fstps -4(%rsp) 39 movss -4(%rsp),%xmm0 40 fstp %st(0) 41 #else 42 fildl 8(%esp) 43 flds 4(%esp) 44 fscale 45 fstp %st(1) /* clean up stack */ 46 #endif 47 ret 48