Home | History | Annotate | Line # | Download | only in i387
s_scalbn.S revision 1.11
      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.11 2013/04/27 18:36:41 joerg 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 %rdi,-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