xref: /openbsd-src/lib/libc/arch/amd64/gen/fabs.S (revision 631951aab24dc7dce7719dfa2487185ea5ef120f)
1*631951aaSmortimer/*	$OpenBSD: fabs.S,v 1.8 2018/07/03 23:14:05 mortimer Exp $	*/
2aeb694e3Smartynas/*	$NetBSD: fabs.S,v 1.1 2001/06/19 00:25:02 fvdl Exp $	*/
3aeb694e3Smartynas
4aeb694e3Smartynas#include <machine/asm.h>
5aeb694e3Smartynas
6aeb694e3Smartynas/*
7aeb694e3Smartynas * Ok, this sucks. Is there really no way to push an xmm register onto
8aeb694e3Smartynas * the FP stack directly?
9aeb694e3Smartynas */
10aeb694e3Smartynas
11aeb694e3SmartynasENTRY(fabs)
12*631951aaSmortimer	RETGUARD_SETUP(fabs, r11)
13aeb694e3Smartynas	movsd	%xmm0, -8(%rsp)
14aeb694e3Smartynas	fldl	-8(%rsp)
15aeb694e3Smartynas	fabs
16aeb694e3Smartynas	fstpl	-8(%rsp)
17aeb694e3Smartynas	movsd	-8(%rsp),%xmm0
18*631951aaSmortimer	RETGUARD_CHECK(fabs, r11)
19aeb694e3Smartynas	ret
2053e48b83SuebayasiEND(fabs)
21