/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER within this package.
 */
#include <_mingw_mac.h>

	.file	"ceilf.S"
	.text
	.align 4
.globl __MINGW_USYMBOL(ceilf)
	.def	__MINGW_USYMBOL(ceilf);	.scl	2;	.type	32;	.endef
__MINGW_USYMBOL(ceilf):
#ifdef _WIN64
	subq	$24,%rsp
	movss	%xmm0,8(%rsp)
	flds	8(%rsp)

	fstcw	4(%rsp)			/* store fpu control word */

	movl	$0x0800,%edx		/* round towards +oo */
	orl		4(%rsp),%edx
	andl	$0xfbff,%edx
	movl	%edx,(%rsp)
	fldcw	(%rsp)			/* load modified control word */

	frndint				/* round */

	fldcw	4(%rsp)			/* restore original control word */
	fstps	8(%rsp)
	movss	8(%rsp),%xmm0
	addq	$24,%rsp
	ret
#else
	flds	4(%esp)
	subl	$8,%esp

	fstcw	4(%esp)			/* store fpu control word */

	/* We use here %edx although only the low 1 bits are defined.
	   But none of the operations should care and they are faster
	   than the 16 bit operations.  */
	movl	$0x0800,%edx		/* round towards +oo */
	orl	4(%esp),%edx
	andl	$0xfbff,%edx
	movl	%edx,(%esp)
	fldcw	(%esp)			/* load modified control word */

	frndint				/* round */

	fldcw	4(%esp)			/* restore original control word */

	addl	$8,%esp
	ret
#endif
