8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / lib / libc / sparcv9 / fp / _Qp_uxtoq.c
blob8f3ff72b45f669d1326e4b11817b8f9fe4bb6d6b
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
20 * CDDL HEADER END
23 * Copyright (c) 1994-1997, by Sun Microsystems, Inc.
24 * All rights reserved.
27 #pragma ident "%Z%%M% %I% %E% SMI"
29 #include "quad.h"
32 * _Qp_uxtoq(pz, x) sets *pz = (long double)x.
34 void
35 _Qp_uxtoq(union longdouble *pz, unsigned long x)
37 unsigned int e;
39 /* test for zero */
40 if (x == 0) {
41 Z.l.msw = Z.l.frac2 = Z.l.frac3 = Z.l.frac4 = 0;
42 QUAD_RETURN(Z);
45 /* find the most significant bit */
46 for (e = 63; (x & (1l << e)) == 0; e--)
49 if (e > 48) {
50 Z.l.msw = (x >> (e - 16)) & 0xffff;
51 Z.l.frac2 = x >> (e - 48);
52 Z.l.frac3 = x << (80 - e);
53 } else if (e > 16) {
54 Z.l.msw = (x >> (e - 16)) & 0xffff;
55 Z.l.frac2 = x << (48 - e);
56 Z.l.frac3 = 0;
57 } else {
58 Z.l.msw = (x << (16 - e)) & 0xffff;
59 Z.l.frac2 = Z.l.frac3 = 0;
61 Z.l.frac4 = 0;
62 Z.l.msw |= ((e + 0x3fff) << 16);
63 QUAD_RETURN(Z);