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

	.file	"floor.S"
	.text
	.p2align 4,,15
.globl __MINGW_USYMBOL(floor)
	.def	__MINGW_USYMBOL(floor);	.scl	2;	.type	32;	.endef
#ifdef _WIN64
	.seh_proc __MINGW_USYMBOL(floor)
#endif
__MINGW_USYMBOL(floor):
#ifdef _WIN64
	pushq	%rbx
	.seh_pushreg	%rbx
	subq	$16, %rsp
	.seh_stackalloc	16
	.seh_endprologue
	movsd	%xmm0, 8(%rsp)
	movq	8(%rsp), %r9
	movq	%r9, %rdx
	movl	%r9d, %r10d
	shrq	$32, %rdx
	movl	%edx, %eax
	movl	%edx, %r11d
	sarl	$20, %eax
	andl	$2047, %eax
	leal	-1023(%rax), %r8d
	cmpl	$51, %r8d
	jle	.L2
	cmpl	$1024, %r8d
	je	.L27
.L3:
	addq	$16, %rsp
	popq	%rbx
	ret
	.p2align 4,,10
.L2:
	cmpl	$19, %r8d
	jg	.L4
	testl	%r8d, %r8d
	js	.L28
	movl	$1048575, %eax
	movl	%r8d, %ecx
	shrl	%cl, %eax
	testl	%r9d, %r9d
	jne	.L8
	testl	%edx, %eax
	je	.L3
.L8:
	movsd	.hugeval(%rip), %xmm1
	xorpd	%xmm2, %xmm2
	addsd	%xmm0, %xmm1
	ucomisd	%xmm1, %xmm2
	jae	.L3
	xorl	%r9d, %r9d
	testl	%edx, %edx
	jns	.L9
	movl	$1048576, %r9d
	movl	%r8d, %ecx
	sarl	%cl, %r9d
.L9:
	addl	%r9d, %edx
	notl	%eax
	andl	%edx, %eax
	salq	$32, %rax
	movq	%rax, 8(%rsp)
	movsd	8(%rsp), %xmm0
	addq	$16, %rsp
	popq	%rbx
	ret
	.p2align 4,,10
.L4:
	leal	-1043(%rax), %ecx
	movl	$-1, %ebx
	shrl	%cl, %ebx
	testl	%r9d, %ebx
	je	.L3
	movsd	.hugeval(%rip), %xmm1
	xorpd	%xmm2, %xmm2
	addsd	%xmm0, %xmm1
	ucomisd	%xmm1, %xmm2
	jae	.L3
	testl	%edx, %edx
	js	.L29
.L11:
	notl	%ebx
	salq	$32, %r11
	andl	%ebx, %r10d
	orq	%r10, %r11
	movq	%r11, 8(%rsp)
	movsd	8(%rsp), %xmm0
	addq	$16, %rsp
	popq	%rbx
	ret
	.p2align 4,,10
.L27:
	addsd	%xmm0, %xmm0
	addq	$16, %rsp
	popq	%rbx
	ret
	.p2align 4,,10
.L28:
	movsd	.hugeval(%rip), %xmm2
	xorpd	%xmm1, %xmm1
	addsd	%xmm0, %xmm2
	ucomisd	%xmm1, %xmm2
	jbe	.L3
	testl	%edx, %edx
	js	.L7
	movapd	%xmm1, %xmm0
	jmp	.L3
	.p2align 4,,10
.L7:
	andl	$2147483647, %edx
	orl	%r9d, %edx
	je	.L3
	movabsq	$-4616189618054758400, %rax
	movq	%rax, 8(%rsp)
	movsd	8(%rsp), %xmm0
	jmp	.L3
	.p2align 4,,10
.L29:
	cmpl	$20, %r8d
	je	.L25
	movl	$1075, %ecx
	movl	$1, %r10d
	subl	%eax, %ecx
	sall	%cl, %r10d
	addl	%r9d, %r10d
	jae	.L11
.L25:
	leal	1(%rdx), %r11d
	jmp	.L11
	.seh_endproc

	.section .rdata,"dr"
	.align 8
.hugeval:
	.long	-2013235812
	.long	2117592124
#else
	fldl	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	$0x400,%edx		/* round towards -oo */
	orl	4(%esp),%edx
	andl	$0xf7ff,%edx
	movl	%edx,(%esp)
	fldcw	(%esp)			/* load modified control word */

	frndint				/* round */

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

	addl	$8,%esp
	ret
#endif
