xref: /openbsd-src/lib/libm/arch/amd64/s_scalbnf.S (revision 3ba7702be0c7af3f580acc0a15f2fb78868ef980)
1*3ba7702bSmortimer/*	$OpenBSD: s_scalbnf.S,v 1.6 2018/07/03 22:43:34 mortimer Exp $ */
23ccbf660Sderaadt/*
33ccbf660Sderaadt * Written by J.T. Conklin <jtc@NetBSD.org>.
43ccbf660Sderaadt * Public domain.
53ccbf660Sderaadt */
63ccbf660Sderaadt
73ccbf660Sderaadt#include <machine/asm.h>
83ccbf660Sderaadt
93ccbf660Sderaadt#include "abi.h"
103ccbf660Sderaadt
112b052163Smartynas.global ldexpf
122b052163Smartynas	ldexpf = scalbnf
132b052163Smartynas
143ccbf660SderaadtENTRY(scalbnf)
15*3ba7702bSmortimer	RETGUARD_SETUP(scalbnf, r11)
16222844efSmartynas	movss	%xmm0,-8(%rsp)
17222844efSmartynas	movl	%edi,-4(%rsp)
18222844efSmartynas	fildl	-4(%rsp)
19222844efSmartynas	flds	-8(%rsp)
203ccbf660Sderaadt	fscale
213ccbf660Sderaadt	fstp	%st(1)		/* bug fix for fp stack overflow */
22222844efSmartynas	fstps	-8(%rsp)
23222844efSmartynas	movss	-8(%rsp),%xmm0
24*3ba7702bSmortimer	RETGUARD_CHECK(scalbnf, r11)
253ccbf660Sderaadt	ret
262f2c0062SguentherEND_STD(scalbnf)
27