xref: /minix3/lib/libm/arch/i387/s_scalbnl.S (revision 84d9c625bfea59e274550651111ae9edfdc40fbd)
1*84d9c625SLionel Sambuc/*
2*84d9c625SLionel Sambuc * Written by J.T. Conklin <jtc@NetBSD.org>.
3*84d9c625SLionel Sambuc * Public domain.
4*84d9c625SLionel Sambuc */
5*84d9c625SLionel Sambuc
6*84d9c625SLionel Sambuc#include <machine/asm.h>
7*84d9c625SLionel Sambuc
8*84d9c625SLionel SambucRCSID("$NetBSD: s_scalbnl.S,v 1.5 2013/05/20 20:27:43 mlelstv Exp $")
9*84d9c625SLionel Sambuc
10*84d9c625SLionel Sambuc#ifdef WEAK_ALIAS
11*84d9c625SLionel SambucWEAK_ALIAS(scalbnl,_scalbnl)
12*84d9c625SLionel SambucWEAK_ALIAS(scalblnl,_scalblnl)
13*84d9c625SLionel SambucWEAK_ALIAS(ldexpl,_scalbnl)
14*84d9c625SLionel Sambuc#endif
15*84d9c625SLionel Sambuc
16*84d9c625SLionel Sambuc#ifdef __x86_64__
17*84d9c625SLionel SambucENTRY(_scalbnl)
18*84d9c625SLionel Sambuc	movl	%edi,-4(%rsp)
19*84d9c625SLionel Sambuc	fildl	-4(%rsp)
20*84d9c625SLionel Sambuc	fldt	8(%rsp)
21*84d9c625SLionel Sambuc	fscale
22*84d9c625SLionel Sambuc	fstp	%st(1)
23*84d9c625SLionel Sambuc	ret
24*84d9c625SLionel Sambuc#elif defined(STRONG_ALIAS)
25*84d9c625SLionel SambucSTRONG_ALIAS(_scalbnl,_scalblnl)
26*84d9c625SLionel Sambuc#endif
27*84d9c625SLionel Sambuc
28*84d9c625SLionel SambucENTRY(_scalblnl)
29*84d9c625SLionel Sambuc#ifdef __x86_64__
30*84d9c625SLionel Sambuc	movq	%rdi,-8(%rsp)
31*84d9c625SLionel Sambuc	fildq	-8(%rsp)
32*84d9c625SLionel Sambuc	fldt	8(%rsp)
33*84d9c625SLionel Sambuc	fscale
34*84d9c625SLionel Sambuc	fstp	%st(1)
35*84d9c625SLionel Sambuc#else
36*84d9c625SLionel Sambuc	fildl 16(%esp)
37*84d9c625SLionel Sambuc	fldt 4(%esp)
38*84d9c625SLionel Sambuc	fscale
39*84d9c625SLionel Sambuc	fstp %st(1)		/* clean up stack */
40*84d9c625SLionel Sambuc#endif
41*84d9c625SLionel Sambuc	ret
42