/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#include <sys/isa_defs.h>
#ifdef _LITTLE_ENDIAN
#define LO(x) *(unsigned*)x
#else
#define HI(x) *(int*)x
#endif
#ifdef __RESTRICT
#define restrict _Restrict
#else
#define restrict
#endif
extern const double __vlibm_TBL_sincos_hi[], __vlibm_TBL_sincos_lo[];
static const double
-4.999999999999931701464060878888294524481e-0001 },
4.166666666394861917535640593963708222319e-0002 },
-1.388888552656142867832756687736851681462e-0003 },
2.478519423681460796618128289454530524759e-0005 };
extern void __vlibm_vcos_big(int, double *, int, double *, int, int);
void
{
nsave = n;
xsave = x;
ysave = y;
biguns = 0;
do
{
unsigned hx;
hx &= ~0x80000000;
{
biguns = 1;
x += stridex;
y += stridey;
i = 0;
if (--n <= 0)
break;
goto loop0;
}
x0 = *x;
py0 = y;
x += stridex;
y += stridey;
i = 1;
if (--n <= 0)
break;
hx &= ~0x80000000;
{
biguns = 1;
x += stridex;
y += stridey;
i = 1;
if (--n <= 0)
break;
goto loop1;
}
x1 = *x;
py1 = y;
x += stridex;
y += stridey;
i = 2;
if (--n <= 0)
break;
hx &= ~0x80000000;
{
biguns = 1;
x += stridex;
y += stridey;
i = 2;
if (--n <= 0)
break;
goto loop2;
}
x2 = *x;
py2 = y;
switch (i)
{
case 0:
xsb0 |= 1;
xsb1 |= 1;
xsb2 |= 1;
break;
case 1:
y0_or_zero[0] = y0;
xsb1 |= 1;
xsb2 |= 1;
break;
case 2:
y1_or_zero[0] = y1;
xsb0 |= 1;
xsb2 |= 1;
break;
case 3:
y0_or_zero[0] = y0;
y1_or_zero[0] = y1;
xsb2 |= 1;
break;
case 4:
y2_or_zero[0] = y2;
xsb0 |= 1;
xsb1 |= 1;
break;
case 5:
y0_or_zero[0] = y0;
y2_or_zero[0] = y2;
xsb1 |= 1;
break;
case 6:
y1_or_zero[0] = y1;
y2_or_zero[0] = y2;
xsb0 |= 1;
break;
case 7:
y0_or_zero[0] = y0;
y1_or_zero[0] = y1;
y2_or_zero[0] = y2;
break;
}
x += stridex;
y += stridey;
i = 0;
} while (--n > 0);
if (i > 0)
{
if (i > 1)
{
{
y1_or_zero[0] = y1;
}
else
{
xsb1 |= 1;
}
}
{
y0_or_zero[0] = y0;
}
else
{
xsb0 |= 1;
}
}
if (biguns)
}