xref: /minix3/lib/libm/arch/i387/s_copysignf.S (revision 84d9c625bfea59e274550651111ae9edfdc40fbd)
12fe8fb19SBen Gras/*
22fe8fb19SBen Gras * Written by J.T. Conklin <jtc@NetBSD.org>.
32fe8fb19SBen Gras * Public domain.
42fe8fb19SBen Gras */
52fe8fb19SBen Gras
62fe8fb19SBen Gras#include <machine/asm.h>
72fe8fb19SBen Gras
82fe8fb19SBen Gras/*
92fe8fb19SBen Gras * XXXfvdl split this file.
102fe8fb19SBen Gras */
112fe8fb19SBen Gras
12*84d9c625SLionel SambucRCSID("$NetBSD: s_copysignf.S,v 1.7 2011/06/21 21:52:49 joerg Exp $")
132fe8fb19SBen Gras
142fe8fb19SBen Gras#ifdef __x86_64__
152fe8fb19SBen Gras.Lneg:
162fe8fb19SBen Gras	.long 0x7fffffff
172fe8fb19SBen Gras.Lpos:
182fe8fb19SBen Gras	.long 0x80000000
192fe8fb19SBen Gras#endif
202fe8fb19SBen Gras
212fe8fb19SBen GrasENTRY(copysignf)
222fe8fb19SBen Gras#ifdef __i386__
232fe8fb19SBen Gras	movl	8(%esp),%edx
242fe8fb19SBen Gras	andl	$0x80000000,%edx
252fe8fb19SBen Gras	movl	4(%esp),%eax
262fe8fb19SBen Gras	andl	$0x7fffffff,%eax
272fe8fb19SBen Gras	orl	%edx,%eax
282fe8fb19SBen Gras	movl	%eax,4(%esp)
292fe8fb19SBen Gras	flds	4(%esp)
302fe8fb19SBen Gras#else
312fe8fb19SBen Gras	movss	.Lpos(%rip),%xmm2
322fe8fb19SBen Gras	movss	.Lneg(%rip),%xmm3
33*84d9c625SLionel Sambuc	pand	%xmm2,%xmm1
34*84d9c625SLionel Sambuc	pand	%xmm3,%xmm0
35*84d9c625SLionel Sambuc	por	%xmm1,%xmm0
362fe8fb19SBen Gras#endif
372fe8fb19SBen Gras	ret
38