13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
23 */
24 /*
25 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
26 * Use is subject to license terms.
27 */
28
29 .file "copysignf.s"
30
31 #include "libm.h"
32 LIBM_ANSI_PRAGMA_WEAK(copysignf,function)
33 #include "libm_synonyms.h"
34
35 ENTRY(copysignf)
36 movl 4(%esp),%eax / eax <-- x
37 movl 8(%esp),%ecx / ecx <-- y
38 andl $0x7fffffff,%eax / eax <-- abs(x)
39 andl $0x80000000,%ecx / ecx[31] <-- sign_bit(y)
40 orl %ecx,%eax / eax <-- copysign(x,y)
41 subl $4,%esp / set up loading dock for result
42 movl %eax,(%esp) / copy result to loading dock
43 flds (%esp) / load copysign(x,y)
44 fwait / in case fldl causes exception
45 addl $4,%esp / restore stack-pointer for return
46 ret
47 .align 4
48 SET_SIZE(copysignf)
|
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
23 */
24 /*
25 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
26 * Use is subject to license terms.
27 */
28
29 .file "copysignf.s"
30
31 #include "libm.h"
32 LIBM_ANSI_PRAGMA_WEAK(copysignf,function)
33
34 ENTRY(copysignf)
35 movl 4(%esp),%eax / eax <-- x
36 movl 8(%esp),%ecx / ecx <-- y
37 andl $0x7fffffff,%eax / eax <-- abs(x)
38 andl $0x80000000,%ecx / ecx[31] <-- sign_bit(y)
39 orl %ecx,%eax / eax <-- copysign(x,y)
40 subl $4,%esp / set up loading dock for result
41 movl %eax,(%esp) / copy result to loading dock
42 flds (%esp) / load copysign(x,y)
43 fwait / in case fldl causes exception
44 addl $4,%esp / restore stack-pointer for return
45 ret
46 .align 4
47 SET_SIZE(copysignf)
|