xref: /openbsd-src/lib/libm/arch/amd64/s_copysign.S (revision f2da64fbbbf1b03f09f390ab01267c93dfd77c4c)
1/*	$OpenBSD: s_copysign.S,v 1.5 2016/09/12 19:47:01 guenther Exp $ */
2/*
3 * Written by J.T. Conklin <jtc@NetBSD.org>.
4 * Public domain.
5 */
6
7#include <machine/asm.h>
8
9.Lpos:
10	.quad	0x8000000000000000
11.Lneg:
12	.quad	0x7fffffffffffffff
13
14ENTRY(copysign)
15	movq	.Lpos(%rip),%xmm2
16	movq	.Lneg(%rip),%xmm3
17	pand	%xmm2,%xmm1
18	pand	%xmm3,%xmm0
19	por	%xmm1,%xmm0
20	ret
21END(copysign)
22