12fe8fb19SBen Gras/* 22fe8fb19SBen Gras * Written by J.T. Conklin <jtc@NetBSD.org>. 32fe8fb19SBen Gras * Public domain. 42fe8fb19SBen Gras */ 52fe8fb19SBen Gras 62fe8fb19SBen Gras/* 72fe8fb19SBen Gras * XXXfvdl might as well split this file. 82fe8fb19SBen Gras */ 92fe8fb19SBen Gras 102fe8fb19SBen Gras#include <machine/asm.h> 112fe8fb19SBen Gras 12*84d9c625SLionel SambucRCSID("$NetBSD: s_copysign.S,v 1.7 2011/06/18 20:49:26 joerg Exp $") 132fe8fb19SBen Gras 142fe8fb19SBen Gras#ifdef __x86_64__ 152fe8fb19SBen Gras.Lpos: 162fe8fb19SBen Gras .quad 0x8000000000000000 172fe8fb19SBen Gras.Lneg: 182fe8fb19SBen Gras .quad 0x7fffffffffffffff 192fe8fb19SBen Gras#endif 202fe8fb19SBen Gras 212fe8fb19SBen Gras 222fe8fb19SBen GrasENTRY(copysign) 232fe8fb19SBen Gras#ifdef __i386__ 242fe8fb19SBen Gras movl 16(%esp),%edx 252fe8fb19SBen Gras andl $0x80000000,%edx 262fe8fb19SBen Gras movl 8(%esp),%eax 272fe8fb19SBen Gras andl $0x7fffffff,%eax 282fe8fb19SBen Gras orl %edx,%eax 292fe8fb19SBen Gras movl %eax,8(%esp) 302fe8fb19SBen Gras fldl 4(%esp) 312fe8fb19SBen Gras#else 322fe8fb19SBen Gras movq .Lpos(%rip),%xmm2 332fe8fb19SBen Gras movq .Lneg(%rip),%xmm3 342fe8fb19SBen Gras pand %xmm2,%xmm1 352fe8fb19SBen Gras pand %xmm3,%xmm0 362fe8fb19SBen Gras por %xmm1,%xmm0 372fe8fb19SBen Gras#endif 382fe8fb19SBen Gras ret 39