xref: /openbsd/lib/libm/arch/amd64/s_copysignf.S (revision 4bdff4be)
1/*	$OpenBSD: s_copysignf.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.Lneg:
13	.long 0x7fffffff
14.Lpos:
15	.long 0x80000000
16
17ENTRY(copysignf)
18	RETGUARD_SETUP(copysignf, r11)
19	movss    .Lpos(%rip),%xmm2
20	movss    .Lneg(%rip),%xmm3
21	pand    %xmm2,%xmm1
22	pand    %xmm3,%xmm0
23	por     %xmm1,%xmm0
24	RETGUARD_CHECK(copysignf, r11)
25	ret
26END_STD(copysignf)
27