4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
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]
22 * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
25 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
26 * Use is subject to license terms.
32 LIBM_ANSI_PRAGMA_WEAK
(isnanl
,function
)
35 movl
12(%esp
),%eax
/ ax
<-- sign bit
and exp
37 jz
.not_nan / jump if exp is all 0
39 jz
.nan_or_inf / jump if exp is all 1
40 testl $
0x80000000,8(%esp
)
41 jz
.got_nan / jump if leading bit is 0
45 .nan_or_inf: / note that %eax = 0 from before
46 cmpl $
0x80000000,8(%esp
) / what is first half of significand?
47 jnz
.got_nan / jump if not equal to 0x80000000
48 testl $
0xffffffff,4(%esp
) / is second half of significand
0?
49 jnz
.got_nan / jump if not equal to 0