xref: /openbsd/lib/libm/arch/amd64/s_ceil.S (revision e5dd7070)
1/*	$OpenBSD: s_ceil.S,v 1.5 2018/07/03 22:43:34 mortimer Exp $ */
2/*
3 * Written by J.T. Conklin <jtc@NetBSD.org>.
4 * Public domain.
5 */
6
7#include <machine/asm.h>
8
9#include "abi.h"
10
11ENTRY(ceil)
12	RETGUARD_SETUP(ceil, r11)
13	fstcw	-12(%rsp)
14	movw	-12(%rsp),%dx
15	orw	$0x0800,%dx
16	andw	$0xfbff,%dx
17	movw	%dx,-16(%rsp)
18	fldcw	-16(%rsp)
19	movsd	%xmm0,-8(%rsp)
20	fldl	-8(%rsp)
21	frndint
22	fldcw	-12(%rsp)
23	fstpl	-8(%rsp)
24	movsd	-8(%rsp),%xmm0
25	RETGUARD_CHECK(ceil, r11)
26	ret
27END_STD(ceil)
28