Home | History | Annotate | Line # | Download | only in i387
      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