master
 1/**
 2 * This file has no copyright assigned and is placed in the Public Domain.
 3 * This file is part of the mingw-w64 runtime package.
 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 5 */
 6/*
 7 * Written by J.T. Conklin <jtc@netbsd.org>.
 8 * Changes for long double by Ulrich Drepper <drepper@cygnus.com>
 9 * Public domain.
10 */
11#include <_mingw_mac.h>
12
13	.file	"copysignl.S"
14	.text
15#ifdef __x86_64__
16	.align 8
17#else
18	.align 4
19#endif
20
21	.globl __MINGW_USYMBOL(copysignl)
22	.def	__MINGW_USYMBOL(copysignl);	.scl	2;	.type	32;	.endef
23__MINGW_USYMBOL(copysignl):
24#if defined(_AMD64_) || defined(__x86_64__)
25	movq	(%rdx), %rax
26	movq	%rax, (%rcx)
27	movq	8(%rdx), %rax
28	movq	8(%r8), %rdx
29	andq	$0x7fff, %rax
30	andq	$0x8000, %rdx
31	orq	%rdx, %rax
32	movq	%rax, 8(%rcx)
33	movq	%rcx, %rax
34	ret
35#elif defined(_X86_) || defined(__i386__)
36	movl	24(%esp),%edx
37	movl	12(%esp),%eax
38	andl	$0x8000,%edx
39	andl	$0x7fff,%eax
40	orl	%edx,%eax
41	movl	%eax,12(%esp)
42	fldt	4(%esp)
43	ret
44#endif