Import OpenBSD's libm (trunk, 4 July 2015) to a new vendor branch
[dragonfly.git] / contrib / openbsd_libm / arch / amd64 / s_copysign.S
1 /*      $OpenBSD: s_copysign.S,v 1.4 2011/07/09 18:00:53 martynas 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
14 ENTRY(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