xref: /openbsd-src/lib/libm/arch/amd64/s_copysign.S (revision 3ba7702be0c7af3f580acc0a15f2fb78868ef980)
1/*	$OpenBSD: s_copysign.S,v 1.8 2018/07/03 22:43:34 mortimer Exp $ */
2/*
3 * Written by J.T. Conklin <jtc@NetBSD.org>.
4 * Public domain.
5 */
6
7#include <machine/asm.h>
8
9#include "abi.h"
10
11	.section .rodata
12.Lpos:
13	.quad	0x8000000000000000
14.Lneg:
15	.quad	0x7fffffffffffffff
16
17ENTRY(copysign)
18	RETGUARD_SETUP(copysign, r11)
19	movq	.Lpos(%rip),%xmm2
20	movq	.Lneg(%rip),%xmm3
21	pand	%xmm2,%xmm1
22	pand	%xmm3,%xmm0
23	por	%xmm1,%xmm0
24	RETGUARD_CHECK(copysign, r11)
25	ret
26END_STD(copysign)
27