1*25c28e83SPiotr Jasiukajtis/*
2*25c28e83SPiotr Jasiukajtis * CDDL HEADER START
3*25c28e83SPiotr Jasiukajtis *
4*25c28e83SPiotr Jasiukajtis * The contents of this file are subject to the terms of the
5*25c28e83SPiotr Jasiukajtis * Common Development and Distribution License (the "License").
6*25c28e83SPiotr Jasiukajtis * You may not use this file except in compliance with the License.
7*25c28e83SPiotr Jasiukajtis *
8*25c28e83SPiotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*25c28e83SPiotr Jasiukajtis * or http://www.opensolaris.org/os/licensing.
10*25c28e83SPiotr Jasiukajtis * See the License for the specific language governing permissions
11*25c28e83SPiotr Jasiukajtis * and limitations under the License.
12*25c28e83SPiotr Jasiukajtis *
13*25c28e83SPiotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each
14*25c28e83SPiotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*25c28e83SPiotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the
16*25c28e83SPiotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying
17*25c28e83SPiotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner]
18*25c28e83SPiotr Jasiukajtis *
19*25c28e83SPiotr Jasiukajtis * CDDL HEADER END
20*25c28e83SPiotr Jasiukajtis */
21*25c28e83SPiotr Jasiukajtis/*
22*25c28e83SPiotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
23*25c28e83SPiotr Jasiukajtis */
24*25c28e83SPiotr Jasiukajtis/*
25*25c28e83SPiotr Jasiukajtis * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
26*25c28e83SPiotr Jasiukajtis * Use is subject to license terms.
27*25c28e83SPiotr Jasiukajtis */
28*25c28e83SPiotr Jasiukajtis
29*25c28e83SPiotr Jasiukajtis	.file	"__vpow.S"
30*25c28e83SPiotr Jasiukajtis
31*25c28e83SPiotr Jasiukajtis#include "libm.h"
32*25c28e83SPiotr Jasiukajtis
33*25c28e83SPiotr Jasiukajtis	RO_DATA
34*25c28e83SPiotr Jasiukajtis	.align	64
35*25c28e83SPiotr Jasiukajtis
36*25c28e83SPiotr Jasiukajtis.CONST_TBL:
37*25c28e83SPiotr Jasiukajtis
38*25c28e83SPiotr Jasiukajtis! __mt_constlog2[2*i] = high order rounded 32 bits log2(1+i/256)*256, i = [0, 255]
39*25c28e83SPiotr Jasiukajtis! __mt_constlog2[2*i+1] = low order least bits log2(1+i/256)*256, i = [0, 255]
40*25c28e83SPiotr Jasiukajtis
41*25c28e83SPiotr Jasiukajtis	.word	0x00000000,	0x00000000,	0x00000000,	0x00000000,
42*25c28e83SPiotr Jasiukajtis	.word	0x3ff709c4,	0x00000000,	0x3e9b5eab,	0x1dd2b66f,
43*25c28e83SPiotr Jasiukajtis	.word	0x4006fe51,	0x00000000,	0xbea2443d,	0xeba01c72,
44*25c28e83SPiotr Jasiukajtis	.word	0x40113631,	0x00000000,	0x3e97a97b,	0x0c4bb41a,
45*25c28e83SPiotr Jasiukajtis	.word	0x4016e797,	0x00000000,	0xbebe8f4b,	0x759d6476,
46*25c28e83SPiotr Jasiukajtis	.word	0x401c9364,	0x00000000,	0xbeb15ebc,	0x1e666460,
47*25c28e83SPiotr Jasiukajtis	.word	0x40211cd2,	0x00000000,	0xbeb57665,	0xf6893f5d,
48*25c28e83SPiotr Jasiukajtis	.word	0x4023ed31,	0x00000000,	0xbecae5e9,	0x7677f62d,
49*25c28e83SPiotr Jasiukajtis	.word	0x4026bad3,	0x00000000,	0x3ecd63bf,	0x61cc4d82,
50*25c28e83SPiotr Jasiukajtis	.word	0x402985c0,	0x00000000,	0xbebe5b57,	0x35cfaf8e,
51*25c28e83SPiotr Jasiukajtis	.word	0x402c4dfb,	0x00000000,	0xbec1bd55,	0x2842c1c2,
52*25c28e83SPiotr Jasiukajtis	.word	0x402f138a,	0x00000000,	0xbecf336b,	0x18178cbe,
53*25c28e83SPiotr Jasiukajtis	.word	0x4030eb39,	0x00000000,	0xbed81758,	0x19530c23,
54*25c28e83SPiotr Jasiukajtis	.word	0x40324b5b,	0x00000000,	0x3edf84d6,	0x8f2268b4,
55*25c28e83SPiotr Jasiukajtis	.word	0x4033aa30,	0x00000000,	0xbec16c07,	0x1e93fd97,
56*25c28e83SPiotr Jasiukajtis	.word	0x403507b8,	0x00000000,	0x3ecb019d,	0xdb6a796a,
57*25c28e83SPiotr Jasiukajtis	.word	0x403663f7,	0x00000000,	0xbe94dbb3,	0xa60cceb2,
58*25c28e83SPiotr Jasiukajtis	.word	0x4037beef,	0x00000000,	0xbeda51d7,	0x5fb0ef94,
59*25c28e83SPiotr Jasiukajtis	.word	0x403918a1,	0x00000000,	0x3edb918c,	0xd6ab9c8d,
60*25c28e83SPiotr Jasiukajtis	.word	0x403a7112,	0x00000000,	0xbec065bd,	0xb60a5dd4,
61*25c28e83SPiotr Jasiukajtis	.word	0x403bc842,	0x00000000,	0x3ed02b6a,	0xee98ecb1,
62*25c28e83SPiotr Jasiukajtis	.word	0x403d1e35,	0x00000000,	0xbebca47d,	0x25b2f4c7,
63*25c28e83SPiotr Jasiukajtis	.word	0x403e72ec,	0x00000000,	0x3eb17fa5,	0xb21cbdb6,
64*25c28e83SPiotr Jasiukajtis	.word	0x403fc66a,	0x00000000,	0x3eae1601,	0x49209a69,
65*25c28e83SPiotr Jasiukajtis	.word	0x40408c59,	0x00000000,	0xbeecc961,	0x871a7611,
66*25c28e83SPiotr Jasiukajtis	.word	0x404134e2,	0x00000000,	0xbee2ddbe,	0x74803297,
67*25c28e83SPiotr Jasiukajtis	.word	0x4041dcd2,	0x00000000,	0xbeea2ab5,	0x212856eb,
68*25c28e83SPiotr Jasiukajtis	.word	0x40428429,	0x00000000,	0x3ee2c1e9,	0x8fe35da3,
69*25c28e83SPiotr Jasiukajtis	.word	0x40432aea,	0x00000000,	0xbecd8751,	0xe5e0ae0d,
70*25c28e83SPiotr Jasiukajtis	.word	0x4043d114,	0x00000000,	0x3eeb66a2,	0x98fc02ce,
71*25c28e83SPiotr Jasiukajtis	.word	0x404476aa,	0x00000000,	0xbea9f022,	0xcb3b1c5b,
72*25c28e83SPiotr Jasiukajtis	.word	0x40451bac,	0x00000000,	0xbeebe168,	0xdd6dd3fe,
73*25c28e83SPiotr Jasiukajtis	.word	0x4045c01a,	0x00000000,	0x3edcfdeb,	0x43cfd006,
74*25c28e83SPiotr Jasiukajtis	.word	0x404663f7,	0x00000000,	0xbea4dbb3,	0xa60cceb2,
75*25c28e83SPiotr Jasiukajtis	.word	0x40470743,	0x00000000,	0xbed5887e,	0xc06b1ff2,
76*25c28e83SPiotr Jasiukajtis	.word	0x4047a9ff,	0x00000000,	0xbedc17d1,	0x108740d9,
77*25c28e83SPiotr Jasiukajtis	.word	0x40484c2c,	0x00000000,	0xbed7e87e,	0x268116ee,
78*25c28e83SPiotr Jasiukajtis	.word	0x4048edcb,	0x00000000,	0xbec7cad4,	0x944a32be,
79*25c28e83SPiotr Jasiukajtis	.word	0x40498edd,	0x00000000,	0x3eadf9c3,	0x7c0beb3a,
80*25c28e83SPiotr Jasiukajtis	.word	0x404a2f63,	0x00000000,	0x3ed1905c,	0x35651c43,
81*25c28e83SPiotr Jasiukajtis	.word	0x404acf5e,	0x00000000,	0x3ed6da76,	0x49f7f08f,
82*25c28e83SPiotr Jasiukajtis	.word	0x404b6ecf,	0x00000000,	0x3ec75f95,	0xe96bed8d,
83*25c28e83SPiotr Jasiukajtis	.word	0x404c0db7,	0x00000000,	0xbed91359,	0x08df8ec9,
84*25c28e83SPiotr Jasiukajtis	.word	0x404cac16,	0x00000000,	0x3ede3b86,	0xe44b6265,
85*25c28e83SPiotr Jasiukajtis	.word	0x404d49ee,	0x00000000,	0x3ee30c96,	0x5bf23d2d,
86*25c28e83SPiotr Jasiukajtis	.word	0x404de740,	0x00000000,	0xbecc4eb7,	0xf11e41be,
87*25c28e83SPiotr Jasiukajtis	.word	0x404e840c,	0x00000000,	0xbec8b195,	0xb338360c,
88*25c28e83SPiotr Jasiukajtis	.word	0x404f2053,	0x00000000,	0x3edc9047,	0x93a3ba95,
89*25c28e83SPiotr Jasiukajtis	.word	0x404fbc17,	0x00000000,	0xbee1bf65,	0xfd7715ca,
90*25c28e83SPiotr Jasiukajtis	.word	0x40502bac,	0x00000000,	0xbef76cbe,	0x67113a18,
91*25c28e83SPiotr Jasiukajtis	.word	0x4050790b,	0x00000000,	0xbee227e7,	0xfb487e73,
92*25c28e83SPiotr Jasiukajtis	.word	0x4050c629,	0x00000000,	0x3efd550a,	0xa3a93ec8,
93*25c28e83SPiotr Jasiukajtis	.word	0x40511308,	0x00000000,	0xbee2967a,	0x451a7b48,
94*25c28e83SPiotr Jasiukajtis	.word	0x40515fa6,	0x00000000,	0x3efdaec2,	0x3fd65f8e,
95*25c28e83SPiotr Jasiukajtis	.word	0x4051ac06,	0x00000000,	0xbef35b83,	0xe3eb5ce3,
96*25c28e83SPiotr Jasiukajtis	.word	0x4051f826,	0x00000000,	0xbec24ee3,	0xd9a82f2e,
97*25c28e83SPiotr Jasiukajtis	.word	0x40524408,	0x00000000,	0xbef53c7e,	0x319f6e92,
98*25c28e83SPiotr Jasiukajtis	.word	0x40528fab,	0x00000000,	0x3eead993,	0x41b181d1,
99*25c28e83SPiotr Jasiukajtis	.word	0x4052db11,	0x00000000,	0xbead932a,	0x8487642e,
100*25c28e83SPiotr Jasiukajtis	.word	0x40532639,	0x00000000,	0x3ef8daca,	0x0d66b8f9,
101*25c28e83SPiotr Jasiukajtis	.word	0x40537125,	0x00000000,	0xbee8ad99,	0x09933766,
102*25c28e83SPiotr Jasiukajtis	.word	0x4053bbd4,	0x00000000,	0xbef7d788,	0xc15a9f3d,
103*25c28e83SPiotr Jasiukajtis	.word	0x40540646,	0x00000000,	0x3eed8d82,	0x24bad97a,
104*25c28e83SPiotr Jasiukajtis	.word	0x4054507d,	0x00000000,	0xbe922b03,	0xc6b2a5f6,
105*25c28e83SPiotr Jasiukajtis	.word	0x40549a78,	0x00000000,	0x3ef2f346,	0xe2bf924b,
106*25c28e83SPiotr Jasiukajtis	.word	0x4054e439,	0x00000000,	0xbeffc5c1,	0x258110a4,
107*25c28e83SPiotr Jasiukajtis	.word	0x40552dbe,	0x00000000,	0xbead9b4a,	0x641184f9,
108*25c28e83SPiotr Jasiukajtis	.word	0x40557709,	0x00000000,	0x3edb3378,	0xcab10782,
109*25c28e83SPiotr Jasiukajtis	.word	0x4055c01a,	0x00000000,	0x3eecfdeb,	0x43cfd006,
110*25c28e83SPiotr Jasiukajtis	.word	0x405608f2,	0x00000000,	0xbef2f5ad,	0xd49a43fc,
111*25c28e83SPiotr Jasiukajtis	.word	0x40565190,	0x00000000,	0xbedb9884,	0x591add87,
112*25c28e83SPiotr Jasiukajtis	.word	0x405699f5,	0x00000000,	0x3ee2466a,	0x5c3462a4,
113*25c28e83SPiotr Jasiukajtis	.word	0x4056e222,	0x00000000,	0xbee93179,	0x90d43957,
114*25c28e83SPiotr Jasiukajtis	.word	0x40572a16,	0x00000000,	0x3eebe5e0,	0xc14a1a6d,
115*25c28e83SPiotr Jasiukajtis	.word	0x405771d3,	0x00000000,	0xbef16041,	0x3106e405,
116*25c28e83SPiotr Jasiukajtis	.word	0x4057b958,	0x00000000,	0xbef4eb95,	0x4eea2724,
117*25c28e83SPiotr Jasiukajtis	.word	0x405800a5,	0x00000000,	0x3ef8c587,	0x150cabae,
118*25c28e83SPiotr Jasiukajtis	.word	0x405847bc,	0x00000000,	0x3ee9ec30,	0xc6e3e04a,
119*25c28e83SPiotr Jasiukajtis	.word	0x40588e9c,	0x00000000,	0x3efcb82c,	0x89692d99,
120*25c28e83SPiotr Jasiukajtis	.word	0x4058d546,	0x00000000,	0x3efced70,	0xdc6acf42,
121*25c28e83SPiotr Jasiukajtis	.word	0x40591bbb,	0x00000000,	0xbefdb83a,	0x3dd2d353,
122*25c28e83SPiotr Jasiukajtis	.word	0x405961f9,	0x00000000,	0x3eb49d02,	0x6e33d676,
123*25c28e83SPiotr Jasiukajtis	.word	0x4059a802,	0x00000000,	0x3eec8f11,	0x979a5db7,
124*25c28e83SPiotr Jasiukajtis	.word	0x4059edd6,	0x00000000,	0x3efd66c9,	0x77e236c7,
125*25c28e83SPiotr Jasiukajtis	.word	0x405a3376,	0x00000000,	0x3ec4fec0,	0xa13af882,
126*25c28e83SPiotr Jasiukajtis	.word	0x405a78e1,	0x00000000,	0x3ef1bdef,	0xbd14a081,
127*25c28e83SPiotr Jasiukajtis	.word	0x405abe18,	0x00000000,	0x3efe5fc7,	0xd238691d,
128*25c28e83SPiotr Jasiukajtis	.word	0x405b031c,	0x00000000,	0xbed01f9b,	0xcb999fe9,
129*25c28e83SPiotr Jasiukajtis	.word	0x405b47ec,	0x00000000,	0xbec18efa,	0xbeb7d722,
130*25c28e83SPiotr Jasiukajtis	.word	0x405b8c89,	0x00000000,	0xbee203bc,	0xc3346511,
131*25c28e83SPiotr Jasiukajtis	.word	0x405bd0f3,	0x00000000,	0xbed6186f,	0xcf54bbd3,
132*25c28e83SPiotr Jasiukajtis	.word	0x405c152a,	0x00000000,	0x3efb0932,	0xb9700973,
133*25c28e83SPiotr Jasiukajtis	.word	0x405c5930,	0x00000000,	0xbef4b5a9,	0x2a606047,
134*25c28e83SPiotr Jasiukajtis	.word	0x405c9d03,	0x00000000,	0xbec26b70,	0x98590071,
135*25c28e83SPiotr Jasiukajtis	.word	0x405ce0a5,	0x00000000,	0xbefb7169,	0xe0cda8bd,
136*25c28e83SPiotr Jasiukajtis	.word	0x405d2415,	0x00000000,	0xbeebfa06,	0xc156f521,
137*25c28e83SPiotr Jasiukajtis	.word	0x405d6754,	0x00000000,	0xbedfcd15,	0xf101c142,
138*25c28e83SPiotr Jasiukajtis	.word	0x405daa62,	0x00000000,	0x3ee10327,	0xdc8093a5,
139*25c28e83SPiotr Jasiukajtis	.word	0x405ded40,	0x00000000,	0xbee5dee4,	0xd9d8a273,
140*25c28e83SPiotr Jasiukajtis	.word	0x405e2fed,	0x00000000,	0x3eee84b9,	0x4c06f913,
141*25c28e83SPiotr Jasiukajtis	.word	0x405e726b,	0x00000000,	0xbef7862a,	0xcb7ceb98,
142*25c28e83SPiotr Jasiukajtis	.word	0x405eb4b8,	0x00000000,	0x3ef1f456,	0xf394f972,
143*25c28e83SPiotr Jasiukajtis	.word	0x405ef6d6,	0x00000000,	0x3efcca38,	0x881f4780,
144*25c28e83SPiotr Jasiukajtis	.word	0x405f38c5,	0x00000000,	0x3ef9ef31,	0x50343f8e,
145*25c28e83SPiotr Jasiukajtis	.word	0x405f7a85,	0x00000000,	0x3efa32c1,	0xb3b3864c,
146*25c28e83SPiotr Jasiukajtis	.word	0x405fbc17,	0x00000000,	0xbef1bf65,	0xfd7715ca,
147*25c28e83SPiotr Jasiukajtis	.word	0x405ffd7a,	0x00000000,	0xbef95f00,	0x19518ce0,
148*25c28e83SPiotr Jasiukajtis	.word	0x40601f57,	0x00000000,	0x3ef3b932,	0x6ff91960,
149*25c28e83SPiotr Jasiukajtis	.word	0x40603fdb,	0x00000000,	0xbf0d1a19,	0xa0331af3,
150*25c28e83SPiotr Jasiukajtis	.word	0x40606047,	0x00000000,	0x3ee9f24e,	0xb23e991f,
151*25c28e83SPiotr Jasiukajtis	.word	0x4060809d,	0x00000000,	0xbedb011f,	0x855b4988,
152*25c28e83SPiotr Jasiukajtis	.word	0x4060a0dc,	0x00000000,	0x3efa7c70,	0xfde006c7,
153*25c28e83SPiotr Jasiukajtis	.word	0x4060c105,	0x00000000,	0x3e9ac754,	0xcb104aea,
154*25c28e83SPiotr Jasiukajtis	.word	0x4060e117,	0x00000000,	0x3f0d535f,	0x0444ebab,
155*25c28e83SPiotr Jasiukajtis	.word	0x40610114,	0x00000000,	0xbf03ab0d,	0xc56138c9,
156*25c28e83SPiotr Jasiukajtis	.word	0x406120fa,	0x00000000,	0xbef630f3,	0xfc695a97,
157*25c28e83SPiotr Jasiukajtis	.word	0x406140ca,	0x00000000,	0xbec5786a,	0xf187a96b,
158*25c28e83SPiotr Jasiukajtis	.word	0x40616084,	0x00000000,	0x3f012578,	0x0181e2b3,
159*25c28e83SPiotr Jasiukajtis	.word	0x40618029,	0x00000000,	0xbef846b4,	0x4ad8a38b,
160*25c28e83SPiotr Jasiukajtis	.word	0x40619fb8,	0x00000000,	0xbf01c336,	0xf7a3a78f,
161*25c28e83SPiotr Jasiukajtis	.word	0x4061bf31,	0x00000000,	0x3eee95d0,	0x0de3b514,
162*25c28e83SPiotr Jasiukajtis	.word	0x4061de95,	0x00000000,	0x3eed9cbb,	0xa6187a4d,
163*25c28e83SPiotr Jasiukajtis	.word	0x4061fde4,	0x00000000,	0xbef678bf,	0x6cdedf51,
164*25c28e83SPiotr Jasiukajtis	.word	0x40621d1d,	0x00000000,	0x3f06edb5,	0x668c543d,
165*25c28e83SPiotr Jasiukajtis	.word	0x40623c42,	0x00000000,	0xbef5ec6c,	0x1bfbf89a,
166*25c28e83SPiotr Jasiukajtis	.word	0x40625b51,	0x00000000,	0x3f062dcf,	0x4115a1a3,
167*25c28e83SPiotr Jasiukajtis	.word	0x40627a4c,	0x00000000,	0x3ec6172f,	0xe015e13c,
168*25c28e83SPiotr Jasiukajtis	.word	0x40629932,	0x00000000,	0xbed30dd5,	0x3f5c184c,
169*25c28e83SPiotr Jasiukajtis	.word	0x4062b803,	0x00000000,	0x3f01cfde,	0xb43cfd00,
170*25c28e83SPiotr Jasiukajtis	.word	0x4062d6c0,	0x00000000,	0x3ee35013,	0x8064a94e,
171*25c28e83SPiotr Jasiukajtis	.word	0x4062f568,	0x00000000,	0x3f0d7acf,	0xc98509e3,
172*25c28e83SPiotr Jasiukajtis	.word	0x406313fd,	0x00000000,	0xbf0d7932,	0x43718371,
173*25c28e83SPiotr Jasiukajtis	.word	0x4063327c,	0x00000000,	0x3f0aad27,	0x29b21ae5,
174*25c28e83SPiotr Jasiukajtis	.word	0x406350e8,	0x00000000,	0x3ef92b83,	0xec743665,
175*25c28e83SPiotr Jasiukajtis	.word	0x40636f40,	0x00000000,	0xbec249ba,	0x76fee235,
176*25c28e83SPiotr Jasiukajtis	.word	0x40638d84,	0x00000000,	0xbeefd0a2,	0xf6d7e41e,
177*25c28e83SPiotr Jasiukajtis	.word	0x4063abb4,	0x00000000,	0xbec57f7a,	0x64ccd537,
178*25c28e83SPiotr Jasiukajtis	.word	0x4063c9d0,	0x00000000,	0x3f09242b,	0x8488b305,
179*25c28e83SPiotr Jasiukajtis	.word	0x4063e7d9,	0x00000000,	0x3efbcfb8,	0x0b357154,
180*25c28e83SPiotr Jasiukajtis	.word	0x406405cf,	0x00000000,	0xbf0cb1c2,	0xd10504b4,
181*25c28e83SPiotr Jasiukajtis	.word	0x406423b0,	0x00000000,	0x3f0fa61a,	0xaa59c1d8,
182*25c28e83SPiotr Jasiukajtis	.word	0x4064417f,	0x00000000,	0x3ef26410,	0xb256d8d7,
183*25c28e83SPiotr Jasiukajtis	.word	0x40645f3b,	0x00000000,	0xbf09d77e,	0x31d6ca00,
184*25c28e83SPiotr Jasiukajtis	.word	0x40647ce3,	0x00000000,	0xbeda5fb4,	0xf23978de,
185*25c28e83SPiotr Jasiukajtis	.word	0x40649a78,	0x00000000,	0x3f02f346,	0xe2bf924b,
186*25c28e83SPiotr Jasiukajtis	.word	0x4064b7fb,	0x00000000,	0xbf0106da,	0x1aa0e9e7,
187*25c28e83SPiotr Jasiukajtis	.word	0x4064d56a,	0x00000000,	0x3f06ccf3,	0xb1129b7c,
188*25c28e83SPiotr Jasiukajtis	.word	0x4064f2c7,	0x00000000,	0x3f006a7c,	0xcf9dd420,
189*25c28e83SPiotr Jasiukajtis	.word	0x40651012,	0x00000000,	0xbf0e3dd5,	0xc1c885ae,
190*25c28e83SPiotr Jasiukajtis	.word	0x40652d49,	0x00000000,	0x3f00b91e,	0x4253bd27,
191*25c28e83SPiotr Jasiukajtis	.word	0x40654a6f,	0x00000000,	0xbf0cd6af,	0x1c9393cd,
192*25c28e83SPiotr Jasiukajtis	.word	0x40656781,	0x00000000,	0x3f0ee1ac,	0x0b1ec5ea,
193*25c28e83SPiotr Jasiukajtis	.word	0x40658482,	0x00000000,	0x3ef34c4e,	0x99e1c6c6,
194*25c28e83SPiotr Jasiukajtis	.word	0x4065a171,	0x00000000,	0xbf06d01c,	0xa8f50e5f,
195*25c28e83SPiotr Jasiukajtis	.word	0x4065be4d,	0x00000000,	0x3ed96a28,	0x6955d67e,
196*25c28e83SPiotr Jasiukajtis	.word	0x4065db17,	0x00000000,	0x3f0d4210,	0x4f127092,
197*25c28e83SPiotr Jasiukajtis	.word	0x4065f7d0,	0x00000000,	0xbed7c3ec,	0xa28e69ca,
198*25c28e83SPiotr Jasiukajtis	.word	0x40661477,	0x00000000,	0xbf07f393,	0xbdd98c47,
199*25c28e83SPiotr Jasiukajtis	.word	0x4066310c,	0x00000000,	0xbf0c2ab3,	0xedefe569,
200*25c28e83SPiotr Jasiukajtis	.word	0x40664d8f,	0x00000000,	0xbef44732,	0x0833c207,
201*25c28e83SPiotr Jasiukajtis	.word	0x40666a01,	0x00000000,	0xbf0c6e1d,	0xcd0cb449,
202*25c28e83SPiotr Jasiukajtis	.word	0x40668661,	0x00000000,	0xbefb4848,	0x3c643a24,
203*25c28e83SPiotr Jasiukajtis	.word	0x4066a2b0,	0x00000000,	0xbf08697c,	0x3d7dfd9b,
204*25c28e83SPiotr Jasiukajtis	.word	0x4066beed,	0x00000000,	0x3ef12866,	0xd705c554,
205*25c28e83SPiotr Jasiukajtis	.word	0x4066db19,	0x00000000,	0x3f0a9d86,	0x52765f7c,
206*25c28e83SPiotr Jasiukajtis	.word	0x4066f735,	0x00000000,	0xbf0d0e8e,	0x7a165e04,
207*25c28e83SPiotr Jasiukajtis	.word	0x4067133f,	0x00000000,	0xbf093aa4,	0xe106ba60,
208*25c28e83SPiotr Jasiukajtis	.word	0x40672f38,	0x00000000,	0xbf04bace,	0x940d18ba,
209*25c28e83SPiotr Jasiukajtis	.word	0x40674b20,	0x00000000,	0xbef4d8fc,	0x561c8d44,
210*25c28e83SPiotr Jasiukajtis	.word	0x406766f7,	0x00000000,	0x3ef5931e,	0xf6e6f15b,
211*25c28e83SPiotr Jasiukajtis	.word	0x406782be,	0x00000000,	0xbf000896,	0x6a210de0,
212*25c28e83SPiotr Jasiukajtis	.word	0x40679e74,	0x00000000,	0xbf05dbfe,	0x780eccdb,
213*25c28e83SPiotr Jasiukajtis	.word	0x4067ba19,	0x00000000,	0xbecb2bf4,	0x6fd85522,
214*25c28e83SPiotr Jasiukajtis	.word	0x4067d5ae,	0x00000000,	0xbefd2fc3,	0xaddfdee2,
215*25c28e83SPiotr Jasiukajtis	.word	0x4067f132,	0x00000000,	0x3ef0c167,	0x8ae89767,
216*25c28e83SPiotr Jasiukajtis	.word	0x40680ca6,	0x00000000,	0x3ef034a6,	0xfc6488d1,
217*25c28e83SPiotr Jasiukajtis	.word	0x4068280a,	0x00000000,	0xbef520c7,	0xc69211fe,
218*25c28e83SPiotr Jasiukajtis	.word	0x4068435d,	0x00000000,	0x3f05328d,	0xdcedf39e,
219*25c28e83SPiotr Jasiukajtis	.word	0x40685ea1,	0x00000000,	0xbf03d361,	0x367bde41,
220*25c28e83SPiotr Jasiukajtis	.word	0x406879d4,	0x00000000,	0xbebc2624,	0x7a0cdfbb,
221*25c28e83SPiotr Jasiukajtis	.word	0x406894f7,	0x00000000,	0x3f02c1bb,	0xe2d01ba9,
222*25c28e83SPiotr Jasiukajtis	.word	0x4068b00b,	0x00000000,	0xbf043a4a,	0xd5c7a4dd,
223*25c28e83SPiotr Jasiukajtis	.word	0x4068cb0e,	0x00000000,	0x3efda59d,	0xded9b445,
224*25c28e83SPiotr Jasiukajtis	.word	0x4068e602,	0x00000000,	0x3eb11eb3,	0x043f5602,
225*25c28e83SPiotr Jasiukajtis	.word	0x406900e6,	0x00000000,	0x3ee60002,	0xccfe43f5,
226*25c28e83SPiotr Jasiukajtis	.word	0x40691bbb,	0x00000000,	0xbf0db83a,	0x3dd2d353,
227*25c28e83SPiotr Jasiukajtis	.word	0x4069367f,	0x00000000,	0x3f0b682a,	0xcba73219,
228*25c28e83SPiotr Jasiukajtis	.word	0x40695135,	0x00000000,	0xbef53d8e,	0x8e4c59c3,
229*25c28e83SPiotr Jasiukajtis	.word	0x40696bdb,	0x00000000,	0xbef6a9a5,	0x050809db,
230*25c28e83SPiotr Jasiukajtis	.word	0x40698671,	0x00000000,	0x3f0db68e,	0x0ba15359,
231*25c28e83SPiotr Jasiukajtis	.word	0x4069a0f9,	0x00000000,	0xbef6278f,	0xd810b546,
232*25c28e83SPiotr Jasiukajtis	.word	0x4069bb71,	0x00000000,	0xbec528c6,	0xcdef4d8d,
233*25c28e83SPiotr Jasiukajtis	.word	0x4069d5da,	0x00000000,	0xbeb57f7a,	0x64ccd537,
234*25c28e83SPiotr Jasiukajtis	.word	0x4069f034,	0x00000000,	0xbee33716,	0xa9ae332f,
235*25c28e83SPiotr Jasiukajtis	.word	0x406a0a7f,	0x00000000,	0xbef2d9f7,	0x698ce769,
236*25c28e83SPiotr Jasiukajtis	.word	0x406a24bb,	0x00000000,	0xbef48c02,	0x44aa8cfc,
237*25c28e83SPiotr Jasiukajtis	.word	0x406a3ee8,	0x00000000,	0xbed8e3cf,	0xc25f0ce6,
238*25c28e83SPiotr Jasiukajtis	.word	0x406a5906,	0x00000000,	0x3f0044c5,	0x590979a0,
239*25c28e83SPiotr Jasiukajtis	.word	0x406a7316,	0x00000000,	0xbef7e86f,	0x9c2154fb,
240*25c28e83SPiotr Jasiukajtis	.word	0x406a8d17,	0x00000000,	0xbf03a076,	0x2ed351cd,
241*25c28e83SPiotr Jasiukajtis	.word	0x406aa709,	0x00000000,	0xbed4ffd6,	0x59064390,
242*25c28e83SPiotr Jasiukajtis	.word	0x406ac0ed,	0x00000000,	0xbf04d9bb,	0x3135f0b1,
243*25c28e83SPiotr Jasiukajtis	.word	0x406adac2,	0x00000000,	0xbee8ee37,	0xcd2ea9d3,
244*25c28e83SPiotr Jasiukajtis	.word	0x406af489,	0x00000000,	0xbf02ba1b,	0x4a95229c,
245*25c28e83SPiotr Jasiukajtis	.word	0x406b0e41,	0x00000000,	0x3ef35e64,	0x35ebd377,
246*25c28e83SPiotr Jasiukajtis	.word	0x406b27eb,	0x00000000,	0x3f02fe3c,	0x2291b5ad,
247*25c28e83SPiotr Jasiukajtis	.word	0x406b4187,	0x00000000,	0x3efa5480,	0x45ecbc5d,
248*25c28e83SPiotr Jasiukajtis	.word	0x406b5b15,	0x00000000,	0xbedee0d3,	0x3432f2c3,
249*25c28e83SPiotr Jasiukajtis	.word	0x406b7495,	0x00000000,	0xbf0c2ab3,	0x496d2d24,
250*25c28e83SPiotr Jasiukajtis	.word	0x406b8e06,	0x00000000,	0x3ef04439,	0x848e9d1e,
251*25c28e83SPiotr Jasiukajtis	.word	0x406ba76a,	0x00000000,	0xbf03186d,	0xa6fc41e0,
252*25c28e83SPiotr Jasiukajtis	.word	0x406bc0bf,	0x00000000,	0x3f05fc8d,	0x8164754e,
253*25c28e83SPiotr Jasiukajtis	.word	0x406bda07,	0x00000000,	0x3eecc67e,	0x6db516de,
254*25c28e83SPiotr Jasiukajtis	.word	0x406bf341,	0x00000000,	0x3ee14464,	0xa6bcdf48,
255*25c28e83SPiotr Jasiukajtis	.word	0x406c0c6d,	0x00000000,	0x3f011f17,	0x74d8b66a,
256*25c28e83SPiotr Jasiukajtis	.word	0x406c258c,	0x00000000,	0xbefd4cdb,	0xebaa4121,
257*25c28e83SPiotr Jasiukajtis	.word	0x406c3e9d,	0x00000000,	0xbf074797,	0xeab3259d,
258*25c28e83SPiotr Jasiukajtis	.word	0x406c57a0,	0x00000000,	0xbee44a49,	0xa82ed669,
259*25c28e83SPiotr Jasiukajtis	.word	0x406c7096,	0x00000000,	0xbf045b87,	0x8e27d0d9,
260*25c28e83SPiotr Jasiukajtis	.word	0x406c897e,	0x00000000,	0xbec7c929,	0xc9e33277,
261*25c28e83SPiotr Jasiukajtis	.word	0x406ca259,	0x00000000,	0xbef1ab66,	0x74e5008e,
262*25c28e83SPiotr Jasiukajtis	.word	0x406cbb26,	0x00000000,	0x3f09333f,	0x3d6bb35f,
263*25c28e83SPiotr Jasiukajtis	.word	0x406cd3e7,	0x00000000,	0xbf07cd5d,	0xbe4f6f23,
264*25c28e83SPiotr Jasiukajtis	.word	0x406cec9a,	0x00000000,	0xbf0848eb,	0x7f40a752,
265*25c28e83SPiotr Jasiukajtis	.word	0x406d053f,	0x00000000,	0x3f0b4982,	0x259cc626,
266*25c28e83SPiotr Jasiukajtis	.word	0x406d1dd8,	0x00000000,	0x3ee9b4c3,	0xf0c92723,
267*25c28e83SPiotr Jasiukajtis	.word	0x406d3664,	0x00000000,	0xbf036033,	0x8ab5a1f2,
268*25c28e83SPiotr Jasiukajtis	.word	0x406d4ee2,	0x00000000,	0x3f015971,	0x8aacb6ec,
269*25c28e83SPiotr Jasiukajtis	.word	0x406d6754,	0x00000000,	0xbeefcd15,	0xf101c142,
270*25c28e83SPiotr Jasiukajtis	.word	0x406d7fb9,	0x00000000,	0xbf0bd935,	0x64ee1bf6,
271*25c28e83SPiotr Jasiukajtis	.word	0x406d9810,	0x00000000,	0x3f090f59,	0x8530f102,
272*25c28e83SPiotr Jasiukajtis	.word	0x406db05b,	0x00000000,	0x3f0a28be,	0xd929effb,
273*25c28e83SPiotr Jasiukajtis	.word	0x406dc89a,	0x00000000,	0xbf053002,	0xa4e86631,
274*25c28e83SPiotr Jasiukajtis	.word	0x406de0cb,	0x00000000,	0x3efcb99c,	0x5233429f,
275*25c28e83SPiotr Jasiukajtis	.word	0x406df8f0,	0x00000000,	0x3ef04357,	0x9625f7a4,
276*25c28e83SPiotr Jasiukajtis	.word	0x406e1108,	0x00000000,	0x3f0b6bdd,	0x258a7b23,
277*25c28e83SPiotr Jasiukajtis	.word	0x406e2914,	0x00000000,	0x3ef70700,	0xa00fdd55,
278*25c28e83SPiotr Jasiukajtis	.word	0x406e4113,	0x00000000,	0x3f0bab95,	0x4f46b93f,
279*25c28e83SPiotr Jasiukajtis	.word	0x406e5906,	0x00000000,	0x3efe4411,	0x672b0c89,
280*25c28e83SPiotr Jasiukajtis	.word	0x406e70ed,	0x00000000,	0xbf06e041,	0xe4467502,
281*25c28e83SPiotr Jasiukajtis	.word	0x406e88c7,	0x00000000,	0xbf032765,	0x63557797,
282*25c28e83SPiotr Jasiukajtis	.word	0x406ea094,	0x00000000,	0x3f0d7b8f,	0x0e7b8e75,
283*25c28e83SPiotr Jasiukajtis	.word	0x406eb856,	0x00000000,	0xbeccd5dc,	0x13cad28e,
284*25c28e83SPiotr Jasiukajtis	.word	0x406ed00b,	0x00000000,	0x3f0222fb,	0x08d5c3f2,
285*25c28e83SPiotr Jasiukajtis	.word	0x406ee7b4,	0x00000000,	0x3f0c6cea,	0x541f5b70,
286*25c28e83SPiotr Jasiukajtis	.word	0x406eff52,	0x00000000,	0xbf0fd40b,	0x070e6c33,
287*25c28e83SPiotr Jasiukajtis	.word	0x406f16e3,	0x00000000,	0xbf0f8922,	0x73f1379b,
288*25c28e83SPiotr Jasiukajtis	.word	0x406f2e68,	0x00000000,	0xbf0fa051,	0xeebd4f74,
289*25c28e83SPiotr Jasiukajtis	.word	0x406f45e1,	0x00000000,	0xbf0d0c3e,	0x6aac6ca9,
290*25c28e83SPiotr Jasiukajtis	.word	0x406f5d4e,	0x00000000,	0xbf04c432,	0x5068bc88,
291*25c28e83SPiotr Jasiukajtis	.word	0x406f74af,	0x00000000,	0xbede20a0,	0xa450bc93,
292*25c28e83SPiotr Jasiukajtis	.word	0x406f8c04,	0x00000000,	0x3f08f3a3,	0x1a23946e,
293*25c28e83SPiotr Jasiukajtis	.word	0x406fa34e,	0x00000000,	0x3ee177c2,	0x3362928c,
294*25c28e83SPiotr Jasiukajtis	.word	0x406fba8c,	0x00000000,	0x3ec71513,	0x7cfebaa0,
295*25c28e83SPiotr Jasiukajtis	.word	0x406fd1be,	0x00000000,	0x3f031fca,	0xbe50ac88,
296*25c28e83SPiotr Jasiukajtis	.word	0x406fe8e5,	0x00000000,	0xbedd485c,	0xbfb44c3b,
297*25c28e83SPiotr Jasiukajtis!
298*25c28e83SPiotr Jasiukajtis	.word	0x01a56e1f,	0xc2f8f359,	! _TINY = 1.0e-300
299*25c28e83SPiotr Jasiukajtis	.word	0x7e37e43c,	0x8800759c,	! _HUGE = 1.0e+300
300*25c28e83SPiotr Jasiukajtis	.word	0x3f6d94ae,	0x0bf85de6,	! KA1_LO  = (1.41052154268147309568e-05*256)
301*25c28e83SPiotr Jasiukajtis	.word	0x40871540,	0x00000000,	! KA1_HI  = (2.8853759765625e+00*256)
302*25c28e83SPiotr Jasiukajtis	.word	0x3cd5d528,	0x93bc7fec,	! KB5     = 1.21195555854068860923e-15
303*25c28e83SPiotr Jasiukajtis	.word	0x3e2c6b08,	0xd71f5d1e,	! KB3     = 3.30830268126604677436e-09
304*25c28e83SPiotr Jasiukajtis	.word	0x3ecebfbd,	0xff82c4ed,	! KB2     = 3.66556559691003767877e-06
305*25c28e83SPiotr Jasiukajtis	.word	0x3f662e42,	0xfefa39ef,	! KB1     = 2.70760617406228636578e-03
306*25c28e83SPiotr Jasiukajtis!
307*25c28e83SPiotr Jasiukajtis! __mt_constexp2[2*i] = high order bits 2^(i/256), i = [0, 255]
308*25c28e83SPiotr Jasiukajtis! __mt_constexp2[2*i+1] = least bits 2^(i/256), i = [0, 255]
309*25c28e83SPiotr Jasiukajtis
310*25c28e83SPiotr Jasiukajtis	.word	0x3ff00000,	0x00000000,	0x00000000,	0x00000000,
311*25c28e83SPiotr Jasiukajtis	.word	0x3ff00b1a,	0xfa5abcbf,	0xbc84f6b2,	0xa7609f71,
312*25c28e83SPiotr Jasiukajtis	.word	0x3ff0163d,	0xa9fb3335,	0x3c9b6129,	0x9ab8cdb7,
313*25c28e83SPiotr Jasiukajtis	.word	0x3ff02168,	0x143b0281,	0xbc82bf31,	0x0fc54eb6,
314*25c28e83SPiotr Jasiukajtis	.word	0x3ff02c9a,	0x3e778061,	0xbc719083,	0x535b085d,
315*25c28e83SPiotr Jasiukajtis	.word	0x3ff037d4,	0x2e11bbcc,	0x3c656811,	0xeeade11a,
316*25c28e83SPiotr Jasiukajtis	.word	0x3ff04315,	0xe86e7f85,	0xbc90a31c,	0x1977c96e,
317*25c28e83SPiotr Jasiukajtis	.word	0x3ff04e5f,	0x72f654b1,	0x3c84c379,	0x3aa0d08c,
318*25c28e83SPiotr Jasiukajtis	.word	0x3ff059b0,	0xd3158574,	0x3c8d73e2,	0xa475b465,
319*25c28e83SPiotr Jasiukajtis	.word	0x3ff0650a,	0x0e3c1f89,	0xbc95cb7b,	0x5799c397,
320*25c28e83SPiotr Jasiukajtis	.word	0x3ff0706b,	0x29ddf6de,	0xbc8c91df,	0xe2b13c27,
321*25c28e83SPiotr Jasiukajtis	.word	0x3ff07bd4,	0x2b72a836,	0x3c832334,	0x54458700,
322*25c28e83SPiotr Jasiukajtis	.word	0x3ff08745,	0x18759bc8,	0x3c6186be,	0x4bb284ff,
323*25c28e83SPiotr Jasiukajtis	.word	0x3ff092bd,	0xf66607e0,	0xbc968063,	0x800a3fd1,
324*25c28e83SPiotr Jasiukajtis	.word	0x3ff09e3e,	0xcac6f383,	0x3c914878,	0x18316136,
325*25c28e83SPiotr Jasiukajtis	.word	0x3ff0a9c7,	0x9b1f3919,	0x3c85d16c,	0x873d1d38,
326*25c28e83SPiotr Jasiukajtis	.word	0x3ff0b558,	0x6cf9890f,	0x3c98a62e,	0x4adc610b,
327*25c28e83SPiotr Jasiukajtis	.word	0x3ff0c0f1,	0x45e46c85,	0x3c94f989,	0x06d21cef,
328*25c28e83SPiotr Jasiukajtis	.word	0x3ff0cc92,	0x2b7247f7,	0x3c901edc,	0x16e24f71,
329*25c28e83SPiotr Jasiukajtis	.word	0x3ff0d83b,	0x23395dec,	0xbc9bc14d,	0xe43f316a,
330*25c28e83SPiotr Jasiukajtis	.word	0x3ff0e3ec,	0x32d3d1a2,	0x3c403a17,	0x27c57b52,
331*25c28e83SPiotr Jasiukajtis	.word	0x3ff0efa5,	0x5fdfa9c5,	0xbc949db9,	0xbc54021b,
332*25c28e83SPiotr Jasiukajtis	.word	0x3ff0fb66,	0xaffed31b,	0xbc6b9bed,	0xc44ebd7b,
333*25c28e83SPiotr Jasiukajtis	.word	0x3ff10730,	0x28d7233e,	0x3c8d46eb,	0x1692fdd5,
334*25c28e83SPiotr Jasiukajtis	.word	0x3ff11301,	0xd0125b51,	0xbc96c510,	0x39449b3a,
335*25c28e83SPiotr Jasiukajtis	.word	0x3ff11edb,	0xab5e2ab6,	0xbc9ca454,	0xf703fb72,
336*25c28e83SPiotr Jasiukajtis	.word	0x3ff12abd,	0xc06c31cc,	0xbc51b514,	0xb36ca5c7,
337*25c28e83SPiotr Jasiukajtis	.word	0x3ff136a8,	0x14f204ab,	0xbc67108f,	0xba48dcf0,
338*25c28e83SPiotr Jasiukajtis	.word	0x3ff1429a,	0xaea92de0,	0xbc932fbf,	0x9af1369e,
339*25c28e83SPiotr Jasiukajtis	.word	0x3ff14e95,	0x934f312e,	0xbc8b91e8,	0x39bf44ab,
340*25c28e83SPiotr Jasiukajtis	.word	0x3ff15a98,	0xc8a58e51,	0x3c82406a,	0xb9eeab0a,
341*25c28e83SPiotr Jasiukajtis	.word	0x3ff166a4,	0x5471c3c2,	0x3c58f23b,	0x82ea1a32,
342*25c28e83SPiotr Jasiukajtis	.word	0x3ff172b8,	0x3c7d517b,	0xbc819041,	0xb9d78a76,
343*25c28e83SPiotr Jasiukajtis	.word	0x3ff17ed4,	0x8695bbc0,	0x3c709e3f,	0xe2ac5a64,
344*25c28e83SPiotr Jasiukajtis	.word	0x3ff18af9,	0x388c8dea,	0xbc911023,	0xd1970f6c,
345*25c28e83SPiotr Jasiukajtis	.word	0x3ff19726,	0x58375d2f,	0x3c94aadd,	0x85f17e08,
346*25c28e83SPiotr Jasiukajtis	.word	0x3ff1a35b,	0xeb6fcb75,	0x3c8e5b4c,	0x7b4968e4,
347*25c28e83SPiotr Jasiukajtis	.word	0x3ff1af99,	0xf8138a1c,	0x3c97bf85,	0xa4b69280,
348*25c28e83SPiotr Jasiukajtis	.word	0x3ff1bbe0,	0x84045cd4,	0xbc995386,	0x352ef607,
349*25c28e83SPiotr Jasiukajtis	.word	0x3ff1c82f,	0x95281c6b,	0x3c900977,	0x8010f8c9,
350*25c28e83SPiotr Jasiukajtis	.word	0x3ff1d487,	0x3168b9aa,	0x3c9e016e,	0x00a2643c,
351*25c28e83SPiotr Jasiukajtis	.word	0x3ff1e0e7,	0x5eb44027,	0xbc96fdd8,	0x088cb6de,
352*25c28e83SPiotr Jasiukajtis	.word	0x3ff1ed50,	0x22fcd91d,	0xbc91df98,	0x027bb78c,
353*25c28e83SPiotr Jasiukajtis	.word	0x3ff1f9c1,	0x8438ce4d,	0xbc9bf524,	0xa097af5c,
354*25c28e83SPiotr Jasiukajtis	.word	0x3ff2063b,	0x88628cd6,	0x3c8dc775,	0x814a8495,
355*25c28e83SPiotr Jasiukajtis	.word	0x3ff212be,	0x3578a819,	0x3c93592d,	0x2cfcaac9,
356*25c28e83SPiotr Jasiukajtis	.word	0x3ff21f49,	0x917ddc96,	0x3c82a97e,	0x9494a5ee,
357*25c28e83SPiotr Jasiukajtis	.word	0x3ff22bdd,	0xa27912d1,	0x3c8d34fb,	0x5577d69f,
358*25c28e83SPiotr Jasiukajtis	.word	0x3ff2387a,	0x6e756238,	0x3c99b07e,	0xb6c70573,
359*25c28e83SPiotr Jasiukajtis	.word	0x3ff2451f,	0xfb82140a,	0x3c8acfcc,	0x911ca996,
360*25c28e83SPiotr Jasiukajtis	.word	0x3ff251ce,	0x4fb2a63f,	0x3c8ac155,	0xbef4f4a4,
361*25c28e83SPiotr Jasiukajtis	.word	0x3ff25e85,	0x711ece75,	0x3c93e1a2,	0x4ac31b2c,
362*25c28e83SPiotr Jasiukajtis	.word	0x3ff26b45,	0x65e27cdd,	0x3c82bd33,	0x9940e9d9,
363*25c28e83SPiotr Jasiukajtis	.word	0x3ff2780e,	0x341ddf29,	0x3c9e067c,	0x05f9e76c,
364*25c28e83SPiotr Jasiukajtis	.word	0x3ff284df,	0xe1f56381,	0xbc9a4c3a,	0x8c3f0d7e,
365*25c28e83SPiotr Jasiukajtis	.word	0x3ff291ba,	0x7591bb70,	0xbc82cc72,	0x28401cbd,
366*25c28e83SPiotr Jasiukajtis	.word	0x3ff29e9d,	0xf51fdee1,	0x3c8612e8,	0xafad1255,
367*25c28e83SPiotr Jasiukajtis	.word	0x3ff2ab8a,	0x66d10f13,	0xbc995743,	0x191690a7,
368*25c28e83SPiotr Jasiukajtis	.word	0x3ff2b87f,	0xd0dad990,	0xbc410adc,	0xd6381aa4,
369*25c28e83SPiotr Jasiukajtis	.word	0x3ff2c57e,	0x39771b2f,	0xbc950145,	0xa6eb5124,
370*25c28e83SPiotr Jasiukajtis	.word	0x3ff2d285,	0xa6e4030b,	0x3c900247,	0x54db41d5,
371*25c28e83SPiotr Jasiukajtis	.word	0x3ff2df96,	0x1f641589,	0x3c9d16cf,	0xfbbce198,
372*25c28e83SPiotr Jasiukajtis	.word	0x3ff2ecaf,	0xa93e2f56,	0x3c71ca0f,	0x45d52383,
373*25c28e83SPiotr Jasiukajtis	.word	0x3ff2f9d2,	0x4abd886b,	0xbc653c55,	0x532bda93,
374*25c28e83SPiotr Jasiukajtis	.word	0x3ff306fe,	0x0a31b715,	0x3c86f46a,	0xd23182e4,
375*25c28e83SPiotr Jasiukajtis	.word	0x3ff31432,	0xedeeb2fd,	0x3c8959a3,	0xf3f3fcd1,
376*25c28e83SPiotr Jasiukajtis	.word	0x3ff32170,	0xfc4cd831,	0x3c8a9ce7,	0x8e18047c,
377*25c28e83SPiotr Jasiukajtis	.word	0x3ff32eb8,	0x3ba8ea32,	0xbc9c45e8,	0x3cb4f318,
378*25c28e83SPiotr Jasiukajtis	.word	0x3ff33c08,	0xb26416ff,	0x3c932721,	0x843659a6,
379*25c28e83SPiotr Jasiukajtis	.word	0x3ff34962,	0x66e3fa2d,	0xbc835a75,	0x930881a4,
380*25c28e83SPiotr Jasiukajtis	.word	0x3ff356c5,	0x5f929ff1,	0xbc8b5cee,	0x5c4e4628,
381*25c28e83SPiotr Jasiukajtis	.word	0x3ff36431,	0xa2de883b,	0xbc8c3144,	0xa06cb85e,
382*25c28e83SPiotr Jasiukajtis	.word	0x3ff371a7,	0x373aa9cb,	0xbc963aea,	0xbf42eae2,
383*25c28e83SPiotr Jasiukajtis	.word	0x3ff37f26,	0x231e754a,	0xbc99f5ca,	0x9eceb23c,
384*25c28e83SPiotr Jasiukajtis	.word	0x3ff38cae,	0x6d05d866,	0xbc9e958d,	0x3c9904bd,
385*25c28e83SPiotr Jasiukajtis	.word	0x3ff39a40,	0x1b7140ef,	0xbc99a9a5,	0xfc8e2934,
386*25c28e83SPiotr Jasiukajtis	.word	0x3ff3a7db,	0x34e59ff7,	0xbc75e436,	0xd661f5e3,
387*25c28e83SPiotr Jasiukajtis	.word	0x3ff3b57f,	0xbfec6cf4,	0x3c954c66,	0xe26fff18,
388*25c28e83SPiotr Jasiukajtis	.word	0x3ff3c32d,	0xc313a8e5,	0xbc9efff8,	0x375d29c3,
389*25c28e83SPiotr Jasiukajtis	.word	0x3ff3d0e5,	0x44ede173,	0x3c7fe8d0,	0x8c284c71,
390*25c28e83SPiotr Jasiukajtis	.word	0x3ff3dea6,	0x4c123422,	0x3c8ada09,	0x11f09ebc,
391*25c28e83SPiotr Jasiukajtis	.word	0x3ff3ec70,	0xdf1c5175,	0xbc8af663,	0x7b8c9bca,
392*25c28e83SPiotr Jasiukajtis	.word	0x3ff3fa45,	0x04ac801c,	0xbc97d023,	0xf956f9f3,
393*25c28e83SPiotr Jasiukajtis	.word	0x3ff40822,	0xc367a024,	0x3c8bddf8,	0xb6f4d048,
394*25c28e83SPiotr Jasiukajtis	.word	0x3ff4160a,	0x21f72e2a,	0xbc5ef369,	0x1c309278,
395*25c28e83SPiotr Jasiukajtis	.word	0x3ff423fb,	0x2709468a,	0xbc98462d,	0xc0b314dd,
396*25c28e83SPiotr Jasiukajtis	.word	0x3ff431f5,	0xd950a897,	0xbc81c7dd,	0xe35f7999,
397*25c28e83SPiotr Jasiukajtis	.word	0x3ff43ffa,	0x3f84b9d4,	0x3c8880be,	0x9704c003,
398*25c28e83SPiotr Jasiukajtis	.word	0x3ff44e08,	0x6061892d,	0x3c489b7a,	0x04ef80d0,
399*25c28e83SPiotr Jasiukajtis	.word	0x3ff45c20,	0x42a7d232,	0xbc686419,	0x82fb1f8e,
400*25c28e83SPiotr Jasiukajtis	.word	0x3ff46a41,	0xed1d0057,	0x3c9c944b,	0xd1648a76,
401*25c28e83SPiotr Jasiukajtis	.word	0x3ff4786d,	0x668b3237,	0xbc9c20f0,	0xed445733,
402*25c28e83SPiotr Jasiukajtis	.word	0x3ff486a2,	0xb5c13cd0,	0x3c73c1a3,	0xb69062f0,
403*25c28e83SPiotr Jasiukajtis	.word	0x3ff494e1,	0xe192aed2,	0xbc83b289,	0x5e499ea0,
404*25c28e83SPiotr Jasiukajtis	.word	0x3ff4a32a,	0xf0d7d3de,	0x3c99cb62,	0xf3d1be56,
405*25c28e83SPiotr Jasiukajtis	.word	0x3ff4b17d,	0xea6db7d7,	0xbc8125b8,	0x7f2897f0,
406*25c28e83SPiotr Jasiukajtis	.word	0x3ff4bfda,	0xd5362a27,	0x3c7d4397,	0xafec42e2,
407*25c28e83SPiotr Jasiukajtis	.word	0x3ff4ce41,	0xb817c114,	0x3c905e29,	0x690abd5d,
408*25c28e83SPiotr Jasiukajtis	.word	0x3ff4dcb2,	0x99fddd0d,	0x3c98ecdb,	0xbc6a7833,
409*25c28e83SPiotr Jasiukajtis	.word	0x3ff4eb2d,	0x81d8abff,	0xbc95257d,	0x2e5d7a52,
410*25c28e83SPiotr Jasiukajtis	.word	0x3ff4f9b2,	0x769d2ca7,	0xbc94b309,	0xd25957e3,
411*25c28e83SPiotr Jasiukajtis	.word	0x3ff50841,	0x7f4531ee,	0x3c7a249b,	0x49b7465f,
412*25c28e83SPiotr Jasiukajtis	.word	0x3ff516da,	0xa2cf6642,	0xbc8f7685,	0x69bd93ef,
413*25c28e83SPiotr Jasiukajtis	.word	0x3ff5257d,	0xe83f4eef,	0xbc7c998d,	0x43efef71,
414*25c28e83SPiotr Jasiukajtis	.word	0x3ff5342b,	0x569d4f82,	0xbc807abe,	0x1db13cad,
415*25c28e83SPiotr Jasiukajtis	.word	0x3ff542e2,	0xf4f6ad27,	0x3c87926d,	0x192d5f7e,
416*25c28e83SPiotr Jasiukajtis	.word	0x3ff551a4,	0xca5d920f,	0xbc8d689c,	0xefede59b,
417*25c28e83SPiotr Jasiukajtis	.word	0x3ff56070,	0xdde910d2,	0xbc90fb6e,	0x168eebf0,
418*25c28e83SPiotr Jasiukajtis	.word	0x3ff56f47,	0x36b527da,	0x3c99bb2c,	0x011d93ad,
419*25c28e83SPiotr Jasiukajtis	.word	0x3ff57e27,	0xdbe2c4cf,	0xbc90b98c,	0x8a57b9c4,
420*25c28e83SPiotr Jasiukajtis	.word	0x3ff58d12,	0xd497c7fd,	0x3c8295e1,	0x5b9a1de8,
421*25c28e83SPiotr Jasiukajtis	.word	0x3ff59c08,	0x27ff07cc,	0xbc97e2ce,	0xe467e60f,
422*25c28e83SPiotr Jasiukajtis	.word	0x3ff5ab07,	0xdd485429,	0x3c96324c,	0x054647ad,
423*25c28e83SPiotr Jasiukajtis	.word	0x3ff5ba11,	0xfba87a03,	0xbc9b77a1,	0x4c233e1a,
424*25c28e83SPiotr Jasiukajtis	.word	0x3ff5c926,	0x8a5946b7,	0x3c3c4b1b,	0x816986a2,
425*25c28e83SPiotr Jasiukajtis	.word	0x3ff5d845,	0x90998b93,	0xbc9cd6a7,	0xa8b45643,
426*25c28e83SPiotr Jasiukajtis	.word	0x3ff5e76f,	0x15ad2148,	0x3c9ba6f9,	0x3080e65e,
427*25c28e83SPiotr Jasiukajtis	.word	0x3ff5f6a3,	0x20dceb71,	0xbc89eadd,	0xe3cdcf92,
428*25c28e83SPiotr Jasiukajtis	.word	0x3ff605e1,	0xb976dc09,	0xbc93e242,	0x9b56de47,
429*25c28e83SPiotr Jasiukajtis	.word	0x3ff6152a,	0xe6cdf6f4,	0x3c9e4b3e,	0x4ab84c27,
430*25c28e83SPiotr Jasiukajtis	.word	0x3ff6247e,	0xb03a5585,	0xbc9383c1,	0x7e40b497,
431*25c28e83SPiotr Jasiukajtis	.word	0x3ff633dd,	0x1d1929fd,	0x3c984710,	0xbeb964e5,
432*25c28e83SPiotr Jasiukajtis	.word	0x3ff64346,	0x34ccc320,	0xbc8c483c,	0x759d8933,
433*25c28e83SPiotr Jasiukajtis	.word	0x3ff652b9,	0xfebc8fb7,	0xbc9ae3d5,	0xc9a73e09,
434*25c28e83SPiotr Jasiukajtis	.word	0x3ff66238,	0x82552225,	0xbc9bb609,	0x87591c34,
435*25c28e83SPiotr Jasiukajtis	.word	0x3ff671c1,	0xc70833f6,	0xbc8e8732,	0x586c6134,
436*25c28e83SPiotr Jasiukajtis	.word	0x3ff68155,	0xd44ca973,	0x3c6038ae,	0x44f73e65,
437*25c28e83SPiotr Jasiukajtis	.word	0x3ff690f4,	0xb19e9538,	0x3c8804bd,	0x9aeb445d,
438*25c28e83SPiotr Jasiukajtis	.word	0x3ff6a09e,	0x667f3bcd,	0xbc9bdd34,	0x13b26456,
439*25c28e83SPiotr Jasiukajtis	.word	0x3ff6b052,	0xfa75173e,	0x3c7a38f5,	0x2c9a9d0e,
440*25c28e83SPiotr Jasiukajtis	.word	0x3ff6c012,	0x750bdabf,	0xbc728956,	0x67ff0b0d,
441*25c28e83SPiotr Jasiukajtis	.word	0x3ff6cfdc,	0xddd47645,	0x3c9c7aa9,	0xb6f17309,
442*25c28e83SPiotr Jasiukajtis	.word	0x3ff6dfb2,	0x3c651a2f,	0xbc6bbe3a,	0x683c88ab,
443*25c28e83SPiotr Jasiukajtis	.word	0x3ff6ef92,	0x98593ae5,	0xbc90b974,	0x9e1ac8b2,
444*25c28e83SPiotr Jasiukajtis	.word	0x3ff6ff7d,	0xf9519484,	0xbc883c0f,	0x25860ef6,
445*25c28e83SPiotr Jasiukajtis	.word	0x3ff70f74,	0x66f42e87,	0x3c59d644,	0xd45aa65f,
446*25c28e83SPiotr Jasiukajtis	.word	0x3ff71f75,	0xe8ec5f74,	0xbc816e47,	0x86887a99,
447*25c28e83SPiotr Jasiukajtis	.word	0x3ff72f82,	0x86ead08a,	0xbc920aa0,	0x2cd62c72,
448*25c28e83SPiotr Jasiukajtis	.word	0x3ff73f9a,	0x48a58174,	0xbc90a8d9,	0x6c65d53c,
449*25c28e83SPiotr Jasiukajtis	.word	0x3ff74fbd,	0x35d7cbfd,	0x3c9047fd,	0x618a6e1c,
450*25c28e83SPiotr Jasiukajtis	.word	0x3ff75feb,	0x564267c9,	0xbc902459,	0x57316dd3,
451*25c28e83SPiotr Jasiukajtis	.word	0x3ff77024,	0xb1ab6e09,	0x3c9b7877,	0x169147f8,
452*25c28e83SPiotr Jasiukajtis	.word	0x3ff78069,	0x4fde5d3f,	0x3c9866b8,	0x0a02162d,
453*25c28e83SPiotr Jasiukajtis	.word	0x3ff790b9,	0x38ac1cf6,	0x3c9349a8,	0x62aadd3e,
454*25c28e83SPiotr Jasiukajtis	.word	0x3ff7a114,	0x73eb0187,	0xbc841577,	0xee04992f,
455*25c28e83SPiotr Jasiukajtis	.word	0x3ff7b17b,	0x0976cfdb,	0xbc9bebb5,	0x8468dc88,
456*25c28e83SPiotr Jasiukajtis	.word	0x3ff7c1ed,	0x0130c132,	0x3c9f124c,	0xd1164dd6,
457*25c28e83SPiotr Jasiukajtis	.word	0x3ff7d26a,	0x62ff86f0,	0x3c91bddb,	0xfb72b8b4,
458*25c28e83SPiotr Jasiukajtis	.word	0x3ff7e2f3,	0x36cf4e62,	0x3c705d02,	0xba15797e,
459*25c28e83SPiotr Jasiukajtis	.word	0x3ff7f387,	0x8491c491,	0xbc807f11,	0xcf9311ae,
460*25c28e83SPiotr Jasiukajtis	.word	0x3ff80427,	0x543e1a12,	0xbc927c86,	0x626d972b,
461*25c28e83SPiotr Jasiukajtis	.word	0x3ff814d2,	0xadd106d9,	0x3c946437,	0x0d151d4d,
462*25c28e83SPiotr Jasiukajtis	.word	0x3ff82589,	0x994cce13,	0xbc9d4c1d,	0xd41532d8,
463*25c28e83SPiotr Jasiukajtis	.word	0x3ff8364c,	0x1eb941f7,	0x3c999b9a,	0x31df2bd5,
464*25c28e83SPiotr Jasiukajtis	.word	0x3ff8471a,	0x4623c7ad,	0xbc88d684,	0xa341cdfb,
465*25c28e83SPiotr Jasiukajtis	.word	0x3ff857f4,	0x179f5b21,	0xbc5ba748,	0xf8b216d0,
466*25c28e83SPiotr Jasiukajtis	.word	0x3ff868d9,	0x9b4492ed,	0xbc9fc6f8,	0x9bd4f6ba,
467*25c28e83SPiotr Jasiukajtis	.word	0x3ff879ca,	0xd931a436,	0x3c85d2d7,	0xd2db47bd,
468*25c28e83SPiotr Jasiukajtis	.word	0x3ff88ac7,	0xd98a6699,	0x3c9994c2,	0xf37cb53a,
469*25c28e83SPiotr Jasiukajtis	.word	0x3ff89bd0,	0xa478580f,	0x3c9d5395,	0x4475202a,
470*25c28e83SPiotr Jasiukajtis	.word	0x3ff8ace5,	0x422aa0db,	0x3c96e9f1,	0x56864b27,
471*25c28e83SPiotr Jasiukajtis	.word	0x3ff8be05,	0xbad61778,	0x3c9ecb5e,	0xfc43446e,
472*25c28e83SPiotr Jasiukajtis	.word	0x3ff8cf32,	0x16b5448c,	0xbc70d55e,	0x32e9e3aa,
473*25c28e83SPiotr Jasiukajtis	.word	0x3ff8e06a,	0x5e0866d9,	0xbc97114a,	0x6fc9b2e6,
474*25c28e83SPiotr Jasiukajtis	.word	0x3ff8f1ae,	0x99157736,	0x3c85cc13,	0xa2e3976c,
475*25c28e83SPiotr Jasiukajtis	.word	0x3ff902fe,	0xd0282c8a,	0x3c9592ca,	0x85fe3fd2,
476*25c28e83SPiotr Jasiukajtis	.word	0x3ff9145b,	0x0b91ffc6,	0xbc9dd679,	0x2e582524,
477*25c28e83SPiotr Jasiukajtis	.word	0x3ff925c3,	0x53aa2fe2,	0xbc83455f,	0xa639db7f,
478*25c28e83SPiotr Jasiukajtis	.word	0x3ff93737,	0xb0cdc5e5,	0xbc675fc7,	0x81b57ebc,
479*25c28e83SPiotr Jasiukajtis	.word	0x3ff948b8,	0x2b5f98e5,	0xbc8dc3d6,	0x797d2d99,
480*25c28e83SPiotr Jasiukajtis	.word	0x3ff95a44,	0xcbc8520f,	0xbc764b7c,	0x96a5f039,
481*25c28e83SPiotr Jasiukajtis	.word	0x3ff96bdd,	0x9a7670b3,	0xbc5ba596,	0x7f19c896,
482*25c28e83SPiotr Jasiukajtis	.word	0x3ff97d82,	0x9fde4e50,	0xbc9d185b,	0x7c1b85d1,
483*25c28e83SPiotr Jasiukajtis	.word	0x3ff98f33,	0xe47a22a2,	0x3c7cabda,	0xa24c78ec,
484*25c28e83SPiotr Jasiukajtis	.word	0x3ff9a0f1,	0x70ca07ba,	0xbc9173bd,	0x91cee632,
485*25c28e83SPiotr Jasiukajtis	.word	0x3ff9b2bb,	0x4d53fe0d,	0xbc9dd84e,	0x4df6d518,
486*25c28e83SPiotr Jasiukajtis	.word	0x3ff9c491,	0x82a3f090,	0x3c7c7c46,	0xb071f2be,
487*25c28e83SPiotr Jasiukajtis	.word	0x3ff9d674,	0x194bb8d5,	0xbc9516be,	0xa3dd8233,
488*25c28e83SPiotr Jasiukajtis	.word	0x3ff9e863,	0x19e32323,	0x3c7824ca,	0x78e64c6e,
489*25c28e83SPiotr Jasiukajtis	.word	0x3ff9fa5e,	0x8d07f29e,	0xbc84a9ce,	0xaaf1face,
490*25c28e83SPiotr Jasiukajtis	.word	0x3ffa0c66,	0x7b5de565,	0xbc935949,	0x5d1cd533,
491*25c28e83SPiotr Jasiukajtis	.word	0x3ffa1e7a,	0xed8eb8bb,	0x3c9c6618,	0xee8be70e,
492*25c28e83SPiotr Jasiukajtis	.word	0x3ffa309b,	0xec4a2d33,	0x3c96305c,	0x7ddc36ab,
493*25c28e83SPiotr Jasiukajtis	.word	0x3ffa42c9,	0x80460ad8,	0xbc9aa780,	0x589fb120,
494*25c28e83SPiotr Jasiukajtis	.word	0x3ffa5503,	0xb23e255d,	0xbc9d2f6e,	0xdb8d41e1,
495*25c28e83SPiotr Jasiukajtis	.word	0x3ffa674a,	0x8af46052,	0x3c650f56,	0x30670366,
496*25c28e83SPiotr Jasiukajtis	.word	0x3ffa799e,	0x1330b358,	0x3c9bcb7e,	0xcac563c7,
497*25c28e83SPiotr Jasiukajtis	.word	0x3ffa8bfe,	0x53c12e59,	0xbc94f867,	0xb2ba15a9,
498*25c28e83SPiotr Jasiukajtis	.word	0x3ffa9e6b,	0x5579fdbf,	0x3c90fac9,	0x0ef7fd31,
499*25c28e83SPiotr Jasiukajtis	.word	0x3ffab0e5,	0x21356eba,	0x3c889c31,	0xdae94545,
500*25c28e83SPiotr Jasiukajtis	.word	0x3ffac36b,	0xbfd3f37a,	0xbc8f9234,	0xcae76cd0,
501*25c28e83SPiotr Jasiukajtis	.word	0x3ffad5ff,	0x3a3c2774,	0x3c97ef3b,	0xb6b1b8e5,
502*25c28e83SPiotr Jasiukajtis	.word	0x3ffae89f,	0x995ad3ad,	0x3c97a1cd,	0x345dcc81,
503*25c28e83SPiotr Jasiukajtis	.word	0x3ffafb4c,	0xe622f2ff,	0xbc94b2fc,	0x0f315ecd,
504*25c28e83SPiotr Jasiukajtis	.word	0x3ffb0e07,	0x298db666,	0xbc9bdef5,	0x4c80e425,
505*25c28e83SPiotr Jasiukajtis	.word	0x3ffb20ce,	0x6c9a8952,	0x3c94dd02,	0x4a0756cc,
506*25c28e83SPiotr Jasiukajtis	.word	0x3ffb33a2,	0xb84f15fb,	0xbc62805e,	0x3084d708,
507*25c28e83SPiotr Jasiukajtis	.word	0x3ffb4684,	0x15b749b1,	0xbc7f763d,	0xe9df7c90,
508*25c28e83SPiotr Jasiukajtis	.word	0x3ffb5972,	0x8de5593a,	0xbc9c71df,	0xbbba6de3,
509*25c28e83SPiotr Jasiukajtis	.word	0x3ffb6c6e,	0x29f1c52a,	0x3c92a8f3,	0x52883f6e,
510*25c28e83SPiotr Jasiukajtis	.word	0x3ffb7f76,	0xf2fb5e47,	0xbc75584f,	0x7e54ac3b,
511*25c28e83SPiotr Jasiukajtis	.word	0x3ffb928c,	0xf22749e4,	0xbc9b7216,	0x54cb65c6,
512*25c28e83SPiotr Jasiukajtis	.word	0x3ffba5b0,	0x30a1064a,	0xbc9efcd3,	0x0e54292e,
513*25c28e83SPiotr Jasiukajtis	.word	0x3ffbb8e0,	0xb79a6f1f,	0xbc3f52d1,	0xc9696205,
514*25c28e83SPiotr Jasiukajtis	.word	0x3ffbcc1e,	0x904bc1d2,	0x3c823dd0,	0x7a2d9e84,
515*25c28e83SPiotr Jasiukajtis	.word	0x3ffbdf69,	0xc3f3a207,	0xbc3c2623,	0x60ea5b52,
516*25c28e83SPiotr Jasiukajtis	.word	0x3ffbf2c2,	0x5bd71e09,	0xbc9efdca,	0x3f6b9c73,
517*25c28e83SPiotr Jasiukajtis	.word	0x3ffc0628,	0x6141b33d,	0xbc8d8a5a,	0xa1fbca34,
518*25c28e83SPiotr Jasiukajtis	.word	0x3ffc199b,	0xdd85529c,	0x3c811065,	0x895048dd,
519*25c28e83SPiotr Jasiukajtis	.word	0x3ffc2d1c,	0xd9fa652c,	0xbc96e516,	0x17c8a5d7,
520*25c28e83SPiotr Jasiukajtis	.word	0x3ffc40ab,	0x5fffd07a,	0x3c9b4537,	0xe083c60a,
521*25c28e83SPiotr Jasiukajtis	.word	0x3ffc5447,	0x78fafb22,	0x3c912f07,	0x2493b5af,
522*25c28e83SPiotr Jasiukajtis	.word	0x3ffc67f1,	0x2e57d14b,	0x3c92884d,	0xff483cad,
523*25c28e83SPiotr Jasiukajtis	.word	0x3ffc7ba8,	0x8988c933,	0xbc8e76bb,	0xbe255559,
524*25c28e83SPiotr Jasiukajtis	.word	0x3ffc8f6d,	0x9406e7b5,	0x3c71acbc,	0x48805c44,
525*25c28e83SPiotr Jasiukajtis	.word	0x3ffca340,	0x5751c4db,	0xbc87f2be,	0xd10d08f5,
526*25c28e83SPiotr Jasiukajtis	.word	0x3ffcb720,	0xdcef9069,	0x3c7503cb,	0xd1e949db,
527*25c28e83SPiotr Jasiukajtis	.word	0x3ffccb0f,	0x2e6d1675,	0xbc7d220f,	0x86009092,
528*25c28e83SPiotr Jasiukajtis	.word	0x3ffcdf0b,	0x555dc3fa,	0xbc8dd83b,	0x53829d72,
529*25c28e83SPiotr Jasiukajtis	.word	0x3ffcf315,	0x5b5bab74,	0xbc9a08e9,	0xb86dff57,
530*25c28e83SPiotr Jasiukajtis	.word	0x3ffd072d,	0x4a07897c,	0xbc9cbc37,	0x43797a9c,
531*25c28e83SPiotr Jasiukajtis	.word	0x3ffd1b53,	0x2b08c968,	0x3c955636,	0x219a36ee,
532*25c28e83SPiotr Jasiukajtis	.word	0x3ffd2f87,	0x080d89f2,	0xbc9d487b,	0x719d8578,
533*25c28e83SPiotr Jasiukajtis	.word	0x3ffd43c8,	0xeacaa1d6,	0x3c93db53,	0xbf5a1614,
534*25c28e83SPiotr Jasiukajtis	.word	0x3ffd5818,	0xdcfba487,	0x3c82ed02,	0xd75b3707,
535*25c28e83SPiotr Jasiukajtis	.word	0x3ffd6c76,	0xe862e6d3,	0x3c5fe87a,	0x4a8165a0,
536*25c28e83SPiotr Jasiukajtis	.word	0x3ffd80e3,	0x16c98398,	0xbc911ec1,	0x8beddfe8,
537*25c28e83SPiotr Jasiukajtis	.word	0x3ffd955d,	0x71ff6075,	0x3c9a052d,	0xbb9af6be,
538*25c28e83SPiotr Jasiukajtis	.word	0x3ffda9e6,	0x03db3285,	0x3c9c2300,	0x696db532,
539*25c28e83SPiotr Jasiukajtis	.word	0x3ffdbe7c,	0xd63a8315,	0xbc9b76f1,	0x926b8be4,
540*25c28e83SPiotr Jasiukajtis	.word	0x3ffdd321,	0xf301b460,	0x3c92da57,	0x78f018c3,
541*25c28e83SPiotr Jasiukajtis	.word	0x3ffde7d5,	0x641c0658,	0xbc9ca552,	0x8e79ba8f,
542*25c28e83SPiotr Jasiukajtis	.word	0x3ffdfc97,	0x337b9b5f,	0xbc91a5cd,	0x4f184b5c,
543*25c28e83SPiotr Jasiukajtis	.word	0x3ffe1167,	0x6b197d17,	0xbc72b529,	0xbd5c7f44,
544*25c28e83SPiotr Jasiukajtis	.word	0x3ffe2646,	0x14f5a129,	0xbc97b627,	0x817a1496,
545*25c28e83SPiotr Jasiukajtis	.word	0x3ffe3b33,	0x3b16ee12,	0xbc99f4a4,	0x31fdc68b,
546*25c28e83SPiotr Jasiukajtis	.word	0x3ffe502e,	0xe78b3ff6,	0x3c839e89,	0x80a9cc8f,
547*25c28e83SPiotr Jasiukajtis	.word	0x3ffe6539,	0x24676d76,	0xbc863ff8,	0x7522b735,
548*25c28e83SPiotr Jasiukajtis	.word	0x3ffe7a51,	0xfbc74c83,	0x3c92d522,	0xca0c8de2,
549*25c28e83SPiotr Jasiukajtis	.word	0x3ffe8f79,	0x77cdb740,	0xbc910894,	0x80b054b1,
550*25c28e83SPiotr Jasiukajtis	.word	0x3ffea4af,	0xa2a490da,	0xbc9e9c23,	0x179c2893,
551*25c28e83SPiotr Jasiukajtis	.word	0x3ffeb9f4,	0x867cca6e,	0x3c94832f,	0x2293e4f2,
552*25c28e83SPiotr Jasiukajtis	.word	0x3ffecf48,	0x2d8e67f1,	0xbc9c93f3,	0xb411ad8c,
553*25c28e83SPiotr Jasiukajtis	.word	0x3ffee4aa,	0xa2188510,	0x3c91c68d,	0xa487568d,
554*25c28e83SPiotr Jasiukajtis	.word	0x3ffefa1b,	0xee615a27,	0x3c9dc7f4,	0x86a4b6b0,
555*25c28e83SPiotr Jasiukajtis	.word	0x3fff0f9c,	0x1cb6412a,	0xbc932200,	0x65181d45,
556*25c28e83SPiotr Jasiukajtis	.word	0x3fff252b,	0x376bba97,	0x3c93a1a5,	0xbf0d8e43,
557*25c28e83SPiotr Jasiukajtis	.word	0x3fff3ac9,	0x48dd7274,	0xbc795a5a,	0x3ed837de,
558*25c28e83SPiotr Jasiukajtis	.word	0x3fff5076,	0x5b6e4540,	0x3c99d3e1,	0x2dd8a18b,
559*25c28e83SPiotr Jasiukajtis	.word	0x3fff6632,	0x798844f8,	0x3c9fa37b,	0x3539343e,
560*25c28e83SPiotr Jasiukajtis	.word	0x3fff7bfd,	0xad9cbe14,	0xbc9dbb12,	0xd006350a,
561*25c28e83SPiotr Jasiukajtis	.word	0x3fff91d8,	0x02243c89,	0xbc612ea8,	0xa779f689,
562*25c28e83SPiotr Jasiukajtis	.word	0x3fffa7c1,	0x819e90d8,	0x3c874853,	0xf3a5931e,
563*25c28e83SPiotr Jasiukajtis	.word	0x3fffbdba,	0x3692d514,	0xbc796773,	0x15098eb6,
564*25c28e83SPiotr Jasiukajtis	.word	0x3fffd3c2,	0x2b8f71f1,	0x3c62eb74,	0x966579e7,
565*25c28e83SPiotr Jasiukajtis	.word	0x3fffe9d9,	0x6b2a23d9,	0x3c74a603,	0x7442fde3,
566*25c28e83SPiotr Jasiukajtis!
567*25c28e83SPiotr Jasiukajtis	.word	0x3c900000,	0x00000000,	! 2**(-54) = 5.551115123125782702e-17
568*25c28e83SPiotr Jasiukajtis	.word	0x3ff00000,	0x00000000,	! DONE = 1.0
569*25c28e83SPiotr Jasiukajtis	.word	0x43300000,	0x00000000,	! DVAIN52 = 2**52 = 4.503599627370496e15
570*25c28e83SPiotr Jasiukajtis	.word	0xffffffff,	0x00000000,	! MHI32   = 0xffffffff00000000
571*25c28e83SPiotr Jasiukajtis	.word	0x4062776d,	0x8ce329bd,	! KA5     = (5.77078604860893737986e-01*256)
572*25c28e83SPiotr Jasiukajtis	.word	0x406ec709,	0xdc39fc99,	! KA3     = (9.61796693925765549423e-01*256)
573*25c28e83SPiotr Jasiukajtis	.word	0x40871547,	0x652b82fe,	! KA1     = (2.885390081777926774e+00*256)
574*25c28e83SPiotr Jasiukajtis	.word	0x41100000,	0x00000000,	! HTHRESH = 262144.0
575*25c28e83SPiotr Jasiukajtis	.word	0xc110cc00,	0x00000000,	! LTHRESH = -275200.0
576*25c28e83SPiotr Jasiukajtis	.word	0x3d83b2ab,	0xc07c93d0,	! KB4     = 2.23939573811855104311e-12
577*25c28e83SPiotr Jasiukajtis	.word	0x000fffff,	0xffffffff,	! MMANT
578*25c28e83SPiotr Jasiukajtis	.word	0x00000800,	0x00000000,	! MROUND
579*25c28e83SPiotr Jasiukajtis	.word	0xfffff000,	0x00000000,	! MHI20
580*25c28e83SPiotr Jasiukajtis
581*25c28e83SPiotr Jasiukajtis! local storage indices
582*25c28e83SPiotr Jasiukajtis#define	tmp0_lo		STACK_BIAS-4
583*25c28e83SPiotr Jasiukajtis#define	tmp0_hi		STACK_BIAS-8
584*25c28e83SPiotr Jasiukajtis#define	tmp1_lo		STACK_BIAS-12
585*25c28e83SPiotr Jasiukajtis#define	tmp1_hi		STACK_BIAS-16
586*25c28e83SPiotr Jasiukajtis#define	tmp2_lo		STACK_BIAS-20
587*25c28e83SPiotr Jasiukajtis#define	tmp2_hi		STACK_BIAS-24
588*25c28e83SPiotr Jasiukajtis#define	tmp3		STACK_BIAS-28
589*25c28e83SPiotr Jasiukajtis#define	tmp4		STACK_BIAS-32
590*25c28e83SPiotr Jasiukajtis#define	ind_buf		STACK_BIAS-48
591*25c28e83SPiotr Jasiukajtis#define	tmp_counter	STACK_BIAS-56
592*25c28e83SPiotr Jasiukajtis#define	tmp_px		STACK_BIAS-64
593*25c28e83SPiotr Jasiukajtis#define	tmp_py		STACK_BIAS-72
594*25c28e83SPiotr Jasiukajtis#define	tmp_mant	STACK_BIAS-80
595*25c28e83SPiotr Jasiukajtis#define	tmp5		STACK_BIAS-88
596*25c28e83SPiotr Jasiukajtis#define	tmp6		STACK_BIAS-96
597*25c28e83SPiotr Jasiukajtis
598*25c28e83SPiotr Jasiukajtis! sizeof temp storage - must be a multiple of 16 for V9
599*25c28e83SPiotr Jasiukajtis#define	tmps		96
600*25c28e83SPiotr Jasiukajtis
601*25c28e83SPiotr Jasiukajtis#define	LOGTBL		%g5
602*25c28e83SPiotr Jasiukajtis#define	EXPTBL		%g1
603*25c28e83SPiotr Jasiukajtis#define	EXPTBL_P8	%l4
604*25c28e83SPiotr Jasiukajtis
605*25c28e83SPiotr Jasiukajtis#define	MASK_0x7fffffff	%o4
606*25c28e83SPiotr Jasiukajtis#define	MASK_0x000fffff	%o3
607*25c28e83SPiotr Jasiukajtis#define	MASK_0x3ff00000	%o1
608*25c28e83SPiotr Jasiukajtis
609*25c28e83SPiotr Jasiukajtis#define	counter		%i0
610*25c28e83SPiotr Jasiukajtis#define	px		%i1
611*25c28e83SPiotr Jasiukajtis#define	stridex		%l5
612*25c28e83SPiotr Jasiukajtis#define	py		%i3
613*25c28e83SPiotr Jasiukajtis#define	stridey		%l6
614*25c28e83SPiotr Jasiukajtis#define	pz		%i5
615*25c28e83SPiotr Jasiukajtis#define	stridez		%l7
616*25c28e83SPiotr Jasiukajtis
617*25c28e83SPiotr Jasiukajtis#define	HTHRESH		%f0
618*25c28e83SPiotr Jasiukajtis#define	LTHRESH		%f2
619*25c28e83SPiotr Jasiukajtis
620*25c28e83SPiotr Jasiukajtis#define	MHI32		%f38
621*25c28e83SPiotr Jasiukajtis#define	KA1_LO		%f40
622*25c28e83SPiotr Jasiukajtis#define	KA1_HI		%f40
623*25c28e83SPiotr Jasiukajtis
624*25c28e83SPiotr Jasiukajtis#define	KB1		%f42
625*25c28e83SPiotr Jasiukajtis#define	KB2		%f42
626*25c28e83SPiotr Jasiukajtis#define	KB3		%f42
627*25c28e83SPiotr Jasiukajtis#define	KB4		%f44
628*25c28e83SPiotr Jasiukajtis#define	KB5		%f42
629*25c28e83SPiotr Jasiukajtis
630*25c28e83SPiotr Jasiukajtis#define	KA1		%f46
631*25c28e83SPiotr Jasiukajtis#define	KA3		%f28
632*25c28e83SPiotr Jasiukajtis#define	KA5		%f50
633*25c28e83SPiotr Jasiukajtis
634*25c28e83SPiotr Jasiukajtis#define	DZERO		%f24
635*25c28e83SPiotr Jasiukajtis#define	DZERO_HI	%f24
636*25c28e83SPiotr Jasiukajtis#define	DZERO_LO	%f25
637*25c28e83SPiotr Jasiukajtis#define	DONE		%f18
638*25c28e83SPiotr Jasiukajtis#define	DONE_HI		%f18
639*25c28e83SPiotr Jasiukajtis#define	DONE_LO		%f19
640*25c28e83SPiotr Jasiukajtis
641*25c28e83SPiotr Jasiukajtis#define	XKB1		%f42
642*25c28e83SPiotr Jasiukajtis#define	XKB2		%f40
643*25c28e83SPiotr Jasiukajtis#define	XKB3		%f32
644*25c28e83SPiotr Jasiukajtis#define	XKB4		%f36
645*25c28e83SPiotr Jasiukajtis#define	XKB5		%f34
646*25c28e83SPiotr Jasiukajtis
647*25c28e83SPiotr Jasiukajtis#define	s_h		%f46
648*25c28e83SPiotr Jasiukajtis#define	yr		%f30
649*25c28e83SPiotr Jasiukajtis
650*25c28e83SPiotr Jasiukajtis#define	ind_TINY	64
651*25c28e83SPiotr Jasiukajtis#define	ind_HUGE	56
652*25c28e83SPiotr Jasiukajtis#define	ind_LO		48
653*25c28e83SPiotr Jasiukajtis#define	ind_HI		40
654*25c28e83SPiotr Jasiukajtis#define	ind_KB5		32
655*25c28e83SPiotr Jasiukajtis#define	ind_KB3		24
656*25c28e83SPiotr Jasiukajtis#define	ind_KB2		16
657*25c28e83SPiotr Jasiukajtis#define	ind_KB1		8
658*25c28e83SPiotr Jasiukajtis
659*25c28e83SPiotr Jasiukajtis!--------------------------------------------------------------------
660*25c28e83SPiotr Jasiukajtis!		!!!!!	vpow algorithm	!!!!!
661*25c28e83SPiotr Jasiukajtis!
662*25c28e83SPiotr Jasiukajtis!  hx = ((unsigned*)px)[0];
663*25c28e83SPiotr Jasiukajtis!  lx = ((unsigned*)px)[1];
664*25c28e83SPiotr Jasiukajtis!  hy = ((unsigned*)py)[0];
665*25c28e83SPiotr Jasiukajtis!  ly = ((unsigned*)py)[1];
666*25c28e83SPiotr Jasiukajtis!  sx = hx >> 31;
667*25c28e83SPiotr Jasiukajtis!  sy = hy >> 31;
668*25c28e83SPiotr Jasiukajtis!  hx &= 0x7fffffff;
669*25c28e83SPiotr Jasiukajtis!  hy &= 0x7fffffff;
670*25c28e83SPiotr Jasiukajtis!  y0 = *px;
671*25c28e83SPiotr Jasiukajtis!
672*25c28e83SPiotr Jasiukajtis!  if (hy < 0x3bf00000) {						/* |Y| < 2^(-64) */
673*25c28e83SPiotr Jasiukajtis!    if ((hy | ly) == 0) {						/* pow(X,0)      */
674*25c28e83SPiotr Jasiukajtis!      *pz = DONE;
675*25c28e83SPiotr Jasiukajtis!      goto next;
676*25c28e83SPiotr Jasiukajtis!    }
677*25c28e83SPiotr Jasiukajtis!    if (hx > 0x7ff00000 || (hx == 0x7ff00000 && lx != 0)) {		/* |X| = Nan     */
678*25c28e83SPiotr Jasiukajtis!      *pz = y0 * y0;
679*25c28e83SPiotr Jasiukajtis!      goto next;
680*25c28e83SPiotr Jasiukajtis!    }
681*25c28e83SPiotr Jasiukajtis!    else if ((hx | lx) == 0 || (hx == 0x7ff00000 && lx == 0)) {	/* X = 0 or Inf  */
682*25c28e83SPiotr Jasiukajtis!      ((int*)pz)[0] = hx;
683*25c28e83SPiotr Jasiukajtis!      ((int*)pz)[1] = lx;
684*25c28e83SPiotr Jasiukajtis!      if (sy) *pz = DONE / *pz;
685*25c28e83SPiotr Jasiukajtis!      goto next;
686*25c28e83SPiotr Jasiukajtis!    }
687*25c28e83SPiotr Jasiukajtis!    else *pz = (sx) ? DZERO / DZERO : DONE;
688*25c28e83SPiotr Jasiukajtis!      goto next;
689*25c28e83SPiotr Jasiukajtis!  }
690*25c28e83SPiotr Jasiukajtis!  yisint = 0; /* Y - non-integer */
691*25c28e83SPiotr Jasiukajtis!  expy = hy >> 20; /* Y exponent */
692*25c28e83SPiotr Jasiukajtis!
693*25c28e83SPiotr Jasiukajtis!  if (hx >= 0x7ff00000 || expy >= 0x43e) {			/* X=Inf,Nan or |Y|>2^63,Inf,Nan */
694*25c28e83SPiotr Jasiukajtis!    if (hx > 0x7ff00000 || (hx == 0x7ff00000 && lx != 0) ||
695*25c28e83SPiotr Jasiukajtis!        hy > 0x7ff00000 || (hy == 0x7ff00000 && ly != 0))
696*25c28e83SPiotr Jasiukajtis!      *pz = y0 * *py; /* |X| or |Y| = Nan */
697*25c28e83SPiotr Jasiukajtis!      goto next;
698*25c28e83SPiotr Jasiukajtis!    if (hy == 0x7ff00000 && (ly == 0)) { /* |Y| = Inf */
699*25c28e83SPiotr Jasiukajtis!      if (hx == 0x3ff00000 && (lx == 0))
700*25c28e83SPiotr Jasiukajtis!        *pz = *py - *py; /* +-1 ** +-Inf */
701*25c28e83SPiotr Jasiukajtis!      else if ((hx < 0x3ff00000) != sy)
702*25c28e83SPiotr Jasiukajtis!        *pz = DZERO;
703*25c28e83SPiotr Jasiukajtis!      else {
704*25c28e83SPiotr Jasiukajtis!        ((int*)pz)[0] = hy;
705*25c28e83SPiotr Jasiukajtis!        ((int*)pz)[1] = ly;
706*25c28e83SPiotr Jasiukajtis!      }
707*25c28e83SPiotr Jasiukajtis!      goto next;
708*25c28e83SPiotr Jasiukajtis!    }
709*25c28e83SPiotr Jasiukajtis!    if (expy < 0x43e) {						/* |Y| < 2^63   */
710*25c28e83SPiotr Jasiukajtis!      if (sx) {							/* X = -Inf     */
711*25c28e83SPiotr Jasiukajtis!        if (expy >= 0x434)						/* |Y| >= 2^53  */
712*25c28e83SPiotr Jasiukajtis!          yisint##I = 2; 						/* Y - even     */
713*25c28e83SPiotr Jasiukajtis!        else {
714*25c28e83SPiotr Jasiukajtis!          if (expy >= 0x3ff) {						/* |Y| >= 1     */
715*25c28e83SPiotr Jasiukajtis!            if (expy > (20 + 0x3ff)) {
716*25c28e83SPiotr Jasiukajtis!              i0 = ly >> (52 - (expy - 0x3ff));
717*25c28e83SPiotr Jasiukajtis!              if ((i0 << (52 - (expy - 0x3ff))) == ly) yisint = 2 - (i0 & 1);
718*25c28e83SPiotr Jasiukajtis!            }
719*25c28e83SPiotr Jasiukajtis!            else if (ly == 0) {
720*25c28e83SPiotr Jasiukajtis!              i0 = hy >> (20 - (expy - 0x3ff));
721*25c28e83SPiotr Jasiukajtis!              if ((i0 << (20 - (expy - 0x3ff))) == hy) yisint = 2 - (i0 & 1);
722*25c28e83SPiotr Jasiukajtis!            }
723*25c28e83SPiotr Jasiukajtis!          }
724*25c28e83SPiotr Jasiukajtis!        }
725*25c28e83SPiotr Jasiukajtis!      }
726*25c28e83SPiotr Jasiukajtis!      if (sy) hx = lx = 0;
727*25c28e83SPiotr Jasiukajtis!      hx += yisint << 31;
728*25c28e83SPiotr Jasiukajtis!      ((int*)pz)[0] = hx;
729*25c28e83SPiotr Jasiukajtis!      ((int*)pz)[1] = lx;
730*25c28e83SPiotr Jasiukajtis!      goto next;
731*25c28e83SPiotr Jasiukajtis!    }
732*25c28e83SPiotr Jasiukajtis!    else {								/* |Y| >= 2^63     */
733*25c28e83SPiotr Jasiukajtis!      if (lx == 0 &&							/* |X| = 0, 1, Inf */
734*25c28e83SPiotr Jasiukajtis!         (hx == 0 || hx == 0x3ff00000 || hx == 0x7ff00000)) {
735*25c28e83SPiotr Jasiukajtis!        ((int*)pz)[0] = hx;
736*25c28e83SPiotr Jasiukajtis!        ((int*)pz)[1] = lx;
737*25c28e83SPiotr Jasiukajtis!        if (sy) *pz = DONE / *pz;
738*25c28e83SPiotr Jasiukajtis!      }
739*25c28e83SPiotr Jasiukajtis!      else {
740*25c28e83SPiotr Jasiukajtis!        y0 = ((hx < 0x3ff00000) != sy) ? _TINY : _HUGE;
741*25c28e83SPiotr Jasiukajtis!        *pz = y0 * y0;
742*25c28e83SPiotr Jasiukajtis!      }
743*25c28e83SPiotr Jasiukajtis!      goto next;
744*25c28e83SPiotr Jasiukajtis!    }
745*25c28e83SPiotr Jasiukajtis!  }
746*25c28e83SPiotr Jasiukajtis!  if (sx || (hx | lx) == 0) {						/* X <= 0      */
747*25c28e83SPiotr Jasiukajtis!    if (expy >= 0x434)							/* |Y| >= 2^53 */
748*25c28e83SPiotr Jasiukajtis!      yisint = 2;							/* Y - even    */
749*25c28e83SPiotr Jasiukajtis!    else {
750*25c28e83SPiotr Jasiukajtis!      if (expy >= 0x3ff) {						/* |Y| >= 1    */
751*25c28e83SPiotr Jasiukajtis!        if (expy > (20 + 0x3ff)) {
752*25c28e83SPiotr Jasiukajtis!          i0 = ly >> (52 - (expy - 0x3ff));
753*25c28e83SPiotr Jasiukajtis!          if ((i0 << (52 - (expy - 0x3ff))) == ly) yisint = 2 - (i0 & 1);
754*25c28e83SPiotr Jasiukajtis!        }
755*25c28e83SPiotr Jasiukajtis!        else if (ly == 0) {
756*25c28e83SPiotr Jasiukajtis!          i0 = hy >> (20 - (expy - 0x3ff));
757*25c28e83SPiotr Jasiukajtis!          if ((i0 << (20 - (expy - 0x3ff))) == hy) yisint = 2 - (i0 & 1);
758*25c28e83SPiotr Jasiukajtis!        }
759*25c28e83SPiotr Jasiukajtis!      }
760*25c28e83SPiotr Jasiukajtis!    }
761*25c28e83SPiotr Jasiukajtis!    if ((hx | lx) == 0) {						/* X == 0  */
762*25c28e83SPiotr Jasiukajtis!      y0 = DZERO;
763*25c28e83SPiotr Jasiukajtis!      if (sy) y0 = DONE / y0;
764*25c28e83SPiotr Jasiukajtis!      if (sx & yisint) y0 = -y0;
765*25c28e83SPiotr Jasiukajtis!      *pz = y0;
766*25c28e83SPiotr Jasiukajtis!      goto next;
767*25c28e83SPiotr Jasiukajtis!    }
768*25c28e83SPiotr Jasiukajtis!    if (yisint == 0) {							/* pow(neg,non-integer) */
769*25c28e83SPiotr Jasiukajtis!      *pz = DZERO / DZERO;						/* NaN */
770*25c28e83SPiotr Jasiukajtis!      goto next;
771*25c28e83SPiotr Jasiukajtis!    }
772*25c28e83SPiotr Jasiukajtis!  }
773*25c28e83SPiotr Jasiukajtis!
774*25c28e83SPiotr Jasiukajtis!  *((int*)&x + 1) = ((unsigned*)px)[1];
775*25c28e83SPiotr Jasiukajtis!  *((int*)&ax + 1) = 0;
776*25c28e83SPiotr Jasiukajtis!  exp = hx;
777*25c28e83SPiotr Jasiukajtis!  hx &= 0xfffff;
778*25c28e83SPiotr Jasiukajtis!  hx |= 0x3ff00000;
779*25c28e83SPiotr Jasiukajtis!  *(int*)&x = hx;
780*25c28e83SPiotr Jasiukajtis!  hx += 0x800;
781*25c28e83SPiotr Jasiukajtis!  hx &= 0xfffff000;
782*25c28e83SPiotr Jasiukajtis!  *(int*)&ax = hx;
783*25c28e83SPiotr Jasiukajtis!  if (exp <= 0xfffff) {
784*25c28e83SPiotr Jasiukajtis!    y0 = vis_fand(x, MMANT);
785*25c28e83SPiotr Jasiukajtis!    ax = (double) ((long long *) & y0)[0];
786*25c28e83SPiotr Jasiukajtis!    x = vis_fand(ax, MMANT);
787*25c28e83SPiotr Jasiukajtis!    x = vis_for(x, DONE);
788*25c28e83SPiotr Jasiukajtis!    exp = ((unsigned int*) & ax)[0];
789*25c28e83SPiotr Jasiukajtis!    exp -= (1023 + 51) << 20;
790*25c28e83SPiotr Jasiukajtis!    hx = exp & 0xfffff;
791*25c28e83SPiotr Jasiukajtis!    hx |= 0x3ff00000;
792*25c28e83SPiotr Jasiukajtis!    hx += 0x800;
793*25c28e83SPiotr Jasiukajtis!    *(int*)&ax = hx;
794*25c28e83SPiotr Jasiukajtis!  }
795*25c28e83SPiotr Jasiukajtis!  exp = (exp >> 20);
796*25c28e83SPiotr Jasiukajtis!  exp = exp - 2046;
797*25c28e83SPiotr Jasiukajtis!  ux = x + ax;
798*25c28e83SPiotr Jasiukajtis!  yd = DONE / ux;
799*25c28e83SPiotr Jasiukajtis!  u = x - ax;
800*25c28e83SPiotr Jasiukajtis!  s = u * yd;
801*25c28e83SPiotr Jasiukajtis!  ux = vis_fand(ux, MHI32);
802*25c28e83SPiotr Jasiukajtis!  y = s * s;
803*25c28e83SPiotr Jasiukajtis!  s_h = vis_fand(s, MHI32);
804*25c28e83SPiotr Jasiukajtis!  dtmp8 = KA5 * y;
805*25c28e83SPiotr Jasiukajtis!  dtmp8 = dtmp8 + KA3;
806*25c28e83SPiotr Jasiukajtis!  dtmp8 = dtmp8 * y;
807*25c28e83SPiotr Jasiukajtis!  s = dtmp8 * s;
808*25c28e83SPiotr Jasiukajtis!  dtmp0 = (ux - ax);
809*25c28e83SPiotr Jasiukajtis!  s_l = (x - dtmp0);
810*25c28e83SPiotr Jasiukajtis!  dtmp0 = s_h * ux;
811*25c28e83SPiotr Jasiukajtis!  dtmp1 = s_h * s_l;
812*25c28e83SPiotr Jasiukajtis!  s_l = u - dtmp0;
813*25c28e83SPiotr Jasiukajtis!  s_l -= dtmp1;
814*25c28e83SPiotr Jasiukajtis!  dtmp0 = KA1 * yd;
815*25c28e83SPiotr Jasiukajtis!  s_l = dtmp0 * s_l;
816*25c28e83SPiotr Jasiukajtis!  i = (hx >> 8);
817*25c28e83SPiotr Jasiukajtis!  i = i & 0xff0;
818*25c28e83SPiotr Jasiukajtis!  itmp0 = (hx >> 20);
819*25c28e83SPiotr Jasiukajtis!  exp += itmp0;
820*25c28e83SPiotr Jasiukajtis!  yd = KA1_HI * s_h;
821*25c28e83SPiotr Jasiukajtis!  y = *(double *)((char*)__mt_constlog2 + i);
822*25c28e83SPiotr Jasiukajtis!  itmp0 = exp << 8;
823*25c28e83SPiotr Jasiukajtis!  y += (double)itmp0;
824*25c28e83SPiotr Jasiukajtis!  m_h = y + yd;
825*25c28e83SPiotr Jasiukajtis!  dtmp2 = m_h - y;
826*25c28e83SPiotr Jasiukajtis!  dtmp2 -= yd;
827*25c28e83SPiotr Jasiukajtis!  dtmp2 -= s_l;
828*25c28e83SPiotr Jasiukajtis!  y = s - dtmp2;
829*25c28e83SPiotr Jasiukajtis!  dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8);
830*25c28e83SPiotr Jasiukajtis!  dtmp1 = KA1_LO * s_h;
831*25c28e83SPiotr Jasiukajtis!  dtmp0 += dtmp1;
832*25c28e83SPiotr Jasiukajtis!  y += dtmp0;
833*25c28e83SPiotr Jasiukajtis!  dtmp0 = y + m_h;
834*25c28e83SPiotr Jasiukajtis!  s_h = vis_fand(dtmp0, MHI32);
835*25c28e83SPiotr Jasiukajtis!  dtmp0 = (s_h - m_h);
836*25c28e83SPiotr Jasiukajtis!  y = y - dtmp0;
837*25c28e83SPiotr Jasiukajtis!  yd = *py;
838*25c28e83SPiotr Jasiukajtis!  s = vis_fand(yd, MHI32);
839*25c28e83SPiotr Jasiukajtis!  dtmp0 = (yd - s);
840*25c28e83SPiotr Jasiukajtis!  dtmp1 = yd * y;
841*25c28e83SPiotr Jasiukajtis!  dtmp0 *= s_h;
842*25c28e83SPiotr Jasiukajtis!  yd = dtmp0 + dtmp1;
843*25c28e83SPiotr Jasiukajtis!  s = s_h * s;
844*25c28e83SPiotr Jasiukajtis!  if (s > HTHRESH) {s = HTHRESH; yd = DZERO;}
845*25c28e83SPiotr Jasiukajtis!  if (s < LTHRESH) {s = LTHRESH; yd = DZERO;}
846*25c28e83SPiotr Jasiukajtis!  dtmp0 = (s + yd);
847*25c28e83SPiotr Jasiukajtis!  ind = (int)dtmp0;
848*25c28e83SPiotr Jasiukajtis!  i = ind & 0xff;
849*25c28e83SPiotr Jasiukajtis!  i = i << 4;
850*25c28e83SPiotr Jasiukajtis!  u = (double)(int)dtmp0;
851*25c28e83SPiotr Jasiukajtis!  ind >>= 8;
852*25c28e83SPiotr Jasiukajtis!  y = s - u;
853*25c28e83SPiotr Jasiukajtis!  y = y + yd;
854*25c28e83SPiotr Jasiukajtis!  u = *(double*)((char*)__mt_constexp2 + i);
855*25c28e83SPiotr Jasiukajtis!  dtmp0 = KB5 * y;
856*25c28e83SPiotr Jasiukajtis!  dtmp1 = dtmp0 + KB4;
857*25c28e83SPiotr Jasiukajtis!  dtmp2 = dtmp1 * y;
858*25c28e83SPiotr Jasiukajtis!  dtmp3 = dtmp2 + KB3;
859*25c28e83SPiotr Jasiukajtis!  dtmp4 = dtmp3 * y;
860*25c28e83SPiotr Jasiukajtis!  dtmp5 = dtmp4 + KB2;
861*25c28e83SPiotr Jasiukajtis!  dtmp6 = dtmp5 * y;
862*25c28e83SPiotr Jasiukajtis!  dtmp7 = dtmp6 + KB1;
863*25c28e83SPiotr Jasiukajtis!  y = dtmp7 * y;
864*25c28e83SPiotr Jasiukajtis!  eflag = (ind + 1021);
865*25c28e83SPiotr Jasiukajtis!  eflag = eflag >> 31;
866*25c28e83SPiotr Jasiukajtis!  gflag = (1022 - ind);
867*25c28e83SPiotr Jasiukajtis!  gflag = gflag >> 31;
868*25c28e83SPiotr Jasiukajtis!  dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8);
869*25c28e83SPiotr Jasiukajtis!  dtmp1 = u * y;
870*25c28e83SPiotr Jasiukajtis!  dtmp2 = dtmp0 + dtmp1;
871*25c28e83SPiotr Jasiukajtis!  u = dtmp2 + u;
872*25c28e83SPiotr Jasiukajtis!  ind = yisint + ind;
873*25c28e83SPiotr Jasiukajtis!  itmp0 = 54 & eflag;
874*25c28e83SPiotr Jasiukajtis!  itmp1 = 52 & gflag;
875*25c28e83SPiotr Jasiukajtis!  ind = ind + itmp0;
876*25c28e83SPiotr Jasiukajtis!  ind = ind - itmp1;
877*25c28e83SPiotr Jasiukajtis!  ind <<= 20;
878*25c28e83SPiotr Jasiukajtis!  *(int*)&dtmp0 = ind;
879*25c28e83SPiotr Jasiukajtis!  *((int*)&dtmp0 + 1) = 0;
880*25c28e83SPiotr Jasiukajtis!  u = vis_fpadd32(u, dtmp0);
881*25c28e83SPiotr Jasiukajtis!  ind = eflag - gflag;
882*25c28e83SPiotr Jasiukajtis!  ind += 1;
883*25c28e83SPiotr Jasiukajtis!  ind *= 8;
884*25c28e83SPiotr Jasiukajtis!  dtmp1 = (*(double*)((char*)lconst + ind);
885*25c28e83SPiotr Jasiukajtis!  dtmp1 = u * dtmp1;
886*25c28e83SPiotr Jasiukajtis!  *pz = dtmp1;
887*25c28e83SPiotr Jasiukajtis!--------------------------------------------------------------------
888*25c28e83SPiotr Jasiukajtis!		!!!!!	vpowx algorithm	!!!!! (x > 0 and x != Inf, NaN)
889*25c28e83SPiotr Jasiukajtis!
890*25c28e83SPiotr Jasiukajtis!                   /* perform s_h + yr = 256*log2(x) */
891*25c28e83SPiotr Jasiukajtis!
892*25c28e83SPiotr Jasiukajtis!  exp = ((unsigned*)px)[0];
893*25c28e83SPiotr Jasiukajtis!  y0 = px[0];
894*25c28e83SPiotr Jasiukajtis!  if (exp <= 0xfffff) {
895*25c28e83SPiotr Jasiukajtis!    y0 = (double) ((long long *) & y0)[0];
896*25c28e83SPiotr Jasiukajtis!    exp = ((unsigned int*) & y0)[0];
897*25c28e83SPiotr Jasiukajtis!    exp -= (1023 + 51) << 20;
898*25c28e83SPiotr Jasiukajtis!  }
899*25c28e83SPiotr Jasiukajtis!  x = vis_fand(y0, MMANT);
900*25c28e83SPiotr Jasiukajtis!  x = vis_for(x, DONE);
901*25c28e83SPiotr Jasiukajtis!  ax = vis_fpadd32(x, MROUND);
902*25c28e83SPiotr Jasiukajtis!  ax = vis_fand(ax, MHI20);
903*25c28e83SPiotr Jasiukajtis!  hx = *(int*)&ax;
904*25c28e83SPiotr Jasiukajtis!  exp = (exp >> 20);
905*25c28e83SPiotr Jasiukajtis!  exp = exp - 2046;
906*25c28e83SPiotr Jasiukajtis!  ux = x + ax;
907*25c28e83SPiotr Jasiukajtis!  yd = DONE / ux;
908*25c28e83SPiotr Jasiukajtis!  u = x - ax;
909*25c28e83SPiotr Jasiukajtis!  s = u * yd;
910*25c28e83SPiotr Jasiukajtis!  ux = vis_fand(ux, MHI32);
911*25c28e83SPiotr Jasiukajtis!  y = s * s;
912*25c28e83SPiotr Jasiukajtis!  s_h = vis_fand(s, MHI32);
913*25c28e83SPiotr Jasiukajtis!  dtmp8 = KA5 * y;
914*25c28e83SPiotr Jasiukajtis!  dtmp8 = dtmp8 + KA3;
915*25c28e83SPiotr Jasiukajtis!  dtmp8 = dtmp8 * y;
916*25c28e83SPiotr Jasiukajtis!  s = dtmp8 * s;
917*25c28e83SPiotr Jasiukajtis!  dtmp0 = (ux - ax);
918*25c28e83SPiotr Jasiukajtis!  s_l = (x - dtmp0);
919*25c28e83SPiotr Jasiukajtis!  dtmp0 = s_h * ux;
920*25c28e83SPiotr Jasiukajtis!  dtmp1 = s_h * s_l;
921*25c28e83SPiotr Jasiukajtis!  s_l = u - dtmp0;
922*25c28e83SPiotr Jasiukajtis!  s_l -= dtmp1;
923*25c28e83SPiotr Jasiukajtis!  dtmp0 = KA1 * yd;
924*25c28e83SPiotr Jasiukajtis!  s_l = dtmp0 * s_l;
925*25c28e83SPiotr Jasiukajtis!  i = (hx >> 8);
926*25c28e83SPiotr Jasiukajtis!  i = i & 0xff0;
927*25c28e83SPiotr Jasiukajtis!  itmp0 = (hx >> 20);
928*25c28e83SPiotr Jasiukajtis!  exp += itmp0;
929*25c28e83SPiotr Jasiukajtis!  yd = KA1_HI * s_h;
930*25c28e83SPiotr Jasiukajtis!  y = *(double *)((char*)__mt_constlog2 + i);
931*25c28e83SPiotr Jasiukajtis!  itmp0 = exp << 8;
932*25c28e83SPiotr Jasiukajtis!  y += (double)itmp0;
933*25c28e83SPiotr Jasiukajtis!  m_h = y + yd;
934*25c28e83SPiotr Jasiukajtis!  dtmp2 = m_h - y;
935*25c28e83SPiotr Jasiukajtis!  dtmp2 -= yd;
936*25c28e83SPiotr Jasiukajtis!  dtmp2 -= s_l;
937*25c28e83SPiotr Jasiukajtis!  y = s - dtmp2;
938*25c28e83SPiotr Jasiukajtis!  dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8);
939*25c28e83SPiotr Jasiukajtis!  dtmp1 = KA1_LO * s_h;
940*25c28e83SPiotr Jasiukajtis!  dtmp0 += dtmp1;
941*25c28e83SPiotr Jasiukajtis!  y += dtmp0;
942*25c28e83SPiotr Jasiukajtis!  dtmp0 = y + m_h;
943*25c28e83SPiotr Jasiukajtis!  s_h = vis_fand(dtmp0, MHI32);
944*25c28e83SPiotr Jasiukajtis!  dtmp0 = (s_h - m_h);
945*25c28e83SPiotr Jasiukajtis!  yr = y - dtmp0;
946*25c28e83SPiotr Jasiukajtis!
947*25c28e83SPiotr Jasiukajtis!  hy = ((unsigned*)py)[0];
948*25c28e83SPiotr Jasiukajtis!  ly = ((unsigned*)py)[1];
949*25c28e83SPiotr Jasiukajtis!  hx = ((unsigned*)px)[0];
950*25c28e83SPiotr Jasiukajtis!  lx = ((unsigned*)px)[1];
951*25c28e83SPiotr Jasiukajtis!  sy = hy >> 31;
952*25c28e83SPiotr Jasiukajtis!  hy &= 0x7fffffff;
953*25c28e83SPiotr Jasiukajtis!
954*25c28e83SPiotr Jasiukajtis!  if (hy < 0x3bf00000) {/* |Y| < 2^(-64) */
955*25c28e83SPiotr Jasiukajtis!    *pz = DONE;
956*25c28e83SPiotr Jasiukajtis!    goto next;
957*25c28e83SPiotr Jasiukajtis!  }
958*25c28e83SPiotr Jasiukajtis!
959*25c28e83SPiotr Jasiukajtis!  if (hy >= 0x43e00000) {			/* |Y|>2^63,Inf,Nan */
960*25c28e83SPiotr Jasiukajtis!    if (hy == 0x7ff00000 && (ly == 0)) {	/* |Y| = Inf */
961*25c28e83SPiotr Jasiukajtis!      if (hx == 0x3ff00000 && (lx == 0))
962*25c28e83SPiotr Jasiukajtis!        *pz = *py - *py;			/* 1 ** +-Inf */
963*25c28e83SPiotr Jasiukajtis!      else if ((hx < 0x3ff00000) != sy)
964*25c28e83SPiotr Jasiukajtis!        *pz = DZERO;
965*25c28e83SPiotr Jasiukajtis!      else {
966*25c28e83SPiotr Jasiukajtis!        ((int*)pz)[0] = hy;
967*25c28e83SPiotr Jasiukajtis!        ((int*)pz)[1] = ly;
968*25c28e83SPiotr Jasiukajtis!      }
969*25c28e83SPiotr Jasiukajtis!      goto next;
970*25c28e83SPiotr Jasiukajtis!    }
971*25c28e83SPiotr Jasiukajtis!    if (hy >= 0x7ff00000) {
972*25c28e83SPiotr Jasiukajtis!      *pz = *px + *py;				/* |Y| = Nan */
973*25c28e83SPiotr Jasiukajtis!      goto next;
974*25c28e83SPiotr Jasiukajtis!    }
975*25c28e83SPiotr Jasiukajtis! 						/* |Y| >= 2^63   */
976*25c28e83SPiotr Jasiukajtis!    if (lx == 0 && (hx == 0x3ff00000)) {	/*  X = 1 */
977*25c28e83SPiotr Jasiukajtis!      *pz = DONE;
978*25c28e83SPiotr Jasiukajtis!    }
979*25c28e83SPiotr Jasiukajtis!    else {
980*25c28e83SPiotr Jasiukajtis!      y0 = ((hx < 0x3ff00000) != sy) ? _TINY : _HUGE;
981*25c28e83SPiotr Jasiukajtis!      *pz = y0 * y0;
982*25c28e83SPiotr Jasiukajtis!    }
983*25c28e83SPiotr Jasiukajtis!    goto next;
984*25c28e83SPiotr Jasiukajtis!  }
985*25c28e83SPiotr Jasiukajtis!
986*25c28e83SPiotr Jasiukajtis!  yd = *py;
987*25c28e83SPiotr Jasiukajtis!  s = vis_fand(yd, MHI32);
988*25c28e83SPiotr Jasiukajtis!  dtmp0 = (yd - s);
989*25c28e83SPiotr Jasiukajtis!  dtmp1 = yd * yr;
990*25c28e83SPiotr Jasiukajtis!  dtmp0 *= s_h;
991*25c28e83SPiotr Jasiukajtis!  yd = dtmp0 + dtmp1;
992*25c28e83SPiotr Jasiukajtis!  s = s_h * s;
993*25c28e83SPiotr Jasiukajtis!  if (s > HTHRESH) {s = HTHRESH; yd = DZERO;}
994*25c28e83SPiotr Jasiukajtis!  if (s < LTHRESH) {s = LTHRESH; yd = DZERO;}
995*25c28e83SPiotr Jasiukajtis!  dtmp0 = (s + yd);
996*25c28e83SPiotr Jasiukajtis!  ind = (int)dtmp0;
997*25c28e83SPiotr Jasiukajtis!  i = ind & 0xff;
998*25c28e83SPiotr Jasiukajtis!  i = i << 4;
999*25c28e83SPiotr Jasiukajtis!  u = (double)(int)dtmp0;
1000*25c28e83SPiotr Jasiukajtis!  ind >>= 8;
1001*25c28e83SPiotr Jasiukajtis!  y = s - u;
1002*25c28e83SPiotr Jasiukajtis!  y = y + yd;
1003*25c28e83SPiotr Jasiukajtis!  u = *(double*)((char*)__mt_constexp2 + i);
1004*25c28e83SPiotr Jasiukajtis!  dtmp0 = XKB5 * y;
1005*25c28e83SPiotr Jasiukajtis!  dtmp1 = dtmp0 + XKB4;
1006*25c28e83SPiotr Jasiukajtis!  dtmp2 = dtmp1 * y;
1007*25c28e83SPiotr Jasiukajtis!  dtmp3 = dtmp2 + XKB3;
1008*25c28e83SPiotr Jasiukajtis!  dtmp4 = dtmp3 * y;
1009*25c28e83SPiotr Jasiukajtis!  dtmp5 = dtmp4 + XKB2;
1010*25c28e83SPiotr Jasiukajtis!  dtmp6 = dtmp5 * y;
1011*25c28e83SPiotr Jasiukajtis!  dtmp7 = dtmp6 + XKB1;
1012*25c28e83SPiotr Jasiukajtis!  y = dtmp7 * y;
1013*25c28e83SPiotr Jasiukajtis!  eflag = (ind + 1021);
1014*25c28e83SPiotr Jasiukajtis!  eflag = eflag >> 31;
1015*25c28e83SPiotr Jasiukajtis!  gflag = (1022 - ind);
1016*25c28e83SPiotr Jasiukajtis!  gflag = gflag >> 31;
1017*25c28e83SPiotr Jasiukajtis!  dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8);
1018*25c28e83SPiotr Jasiukajtis!  dtmp1 = u * y;
1019*25c28e83SPiotr Jasiukajtis!  dtmp2 = dtmp0 + dtmp1;
1020*25c28e83SPiotr Jasiukajtis!  u = dtmp2 + u;
1021*25c28e83SPiotr Jasiukajtis!  itmp0 = 54 & eflag;
1022*25c28e83SPiotr Jasiukajtis!  itmp1 = 52 & gflag;
1023*25c28e83SPiotr Jasiukajtis!  ind = ind + itmp0;
1024*25c28e83SPiotr Jasiukajtis!  ind = ind - itmp1;
1025*25c28e83SPiotr Jasiukajtis!  ind <<= 20;
1026*25c28e83SPiotr Jasiukajtis!  *(int*)&dtmp0 = ind;
1027*25c28e83SPiotr Jasiukajtis!  *((int*)&dtmp0 + 1) = 0;
1028*25c28e83SPiotr Jasiukajtis!  u = vis_fpadd32(u, dtmp0);
1029*25c28e83SPiotr Jasiukajtis!  ind = eflag - gflag;
1030*25c28e83SPiotr Jasiukajtis!  ind += 1;
1031*25c28e83SPiotr Jasiukajtis!  ind *= 8;
1032*25c28e83SPiotr Jasiukajtis!  dtmp1 = (*(double*)((char*)__mt_constexp2 + ind);
1033*25c28e83SPiotr Jasiukajtis!  dtmp1 = u * dtmp1;
1034*25c28e83SPiotr Jasiukajtis!  *pz = dtmp1;
1035*25c28e83SPiotr Jasiukajtis!--------------------------------------------------------------------
1036*25c28e83SPiotr Jasiukajtis
1037*25c28e83SPiotr Jasiukajtis	ENTRY(__vpow)
1038*25c28e83SPiotr Jasiukajtis	save	%sp,-SA(MINFRAME)-tmps,%sp
1039*25c28e83SPiotr Jasiukajtis	PIC_SETUP(l7)
1040*25c28e83SPiotr Jasiukajtis	PIC_SET(l7,.CONST_TBL,g5)
1041*25c28e83SPiotr Jasiukajtis	wr	%g0,0x82,%asi			! set %asi for non-faulting loads
1042*25c28e83SPiotr Jasiukajtis
1043*25c28e83SPiotr Jasiukajtis	cmp	counter,0
1044*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.end
1045*25c28e83SPiotr Jasiukajtis
1046*25c28e83SPiotr Jasiukajtis#ifdef	__sparcv9
1047*25c28e83SPiotr Jasiukajtis	ldx	[%fp+STACK_BIAS+176],stridez
1048*25c28e83SPiotr Jasiukajtis#else
1049*25c28e83SPiotr Jasiukajtis	ld	[%fp+STACK_BIAS+92],stridez
1050*25c28e83SPiotr Jasiukajtis#endif
1051*25c28e83SPiotr Jasiukajtis
1052*25c28e83SPiotr Jasiukajtis	ld	[px],%o0
1053*25c28e83SPiotr Jasiukajtis	add	LOGTBL,4095,EXPTBL
1054*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
1055*25c28e83SPiotr Jasiukajtis	add	EXPTBL,65,EXPTBL
1056*25c28e83SPiotr Jasiukajtis	sra	%i2,0,stridex
1057*25c28e83SPiotr Jasiukajtis	stx	px,[%fp+tmp_px]
1058*25c28e83SPiotr Jasiukajtis	add	EXPTBL,4095,%l0
1059*25c28e83SPiotr Jasiukajtis	fzero	DZERO
1060*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
1061*25c28e83SPiotr Jasiukajtis
1062*25c28e83SPiotr Jasiukajtis	cmp	stridex,0
1063*25c28e83SPiotr Jasiukajtis	bne,pt	%icc,.common_case
1064*25c28e83SPiotr Jasiukajtis	add	%l0,1,%l0
1065*25c28e83SPiotr Jasiukajtis
1066*25c28e83SPiotr Jasiukajtis	cmp	%o0,0
1067*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.common_case
1068*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o1
1069*25c28e83SPiotr Jasiukajtis
1070*25c28e83SPiotr Jasiukajtis	cmp	%o0,%o1
1071*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.stridex_zero
1072*25c28e83SPiotr Jasiukajtis	nop
1073*25c28e83SPiotr Jasiukajtis
1074*25c28e83SPiotr Jasiukajtis.common_case:
1075*25c28e83SPiotr Jasiukajtis	sra	stridez,0,stridez
1076*25c28e83SPiotr Jasiukajtis	ldd	[%l0+8],DONE
1077*25c28e83SPiotr Jasiukajtis	ldd	[%l0+24],MHI32
1078*25c28e83SPiotr Jasiukajtis	sra	%i4,0,stridey
1079*25c28e83SPiotr Jasiukajtis	ldd	[%l0+32],KA5
1080*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ffffc00),MASK_0x7fffffff
1081*25c28e83SPiotr Jasiukajtis	ldd	[%l0+40],KA3
1082*25c28e83SPiotr Jasiukajtis	sethi	%hi(0xffc00),MASK_0x000fffff
1083*25c28e83SPiotr Jasiukajtis	ldd	[%l0+48],KA1
1084*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3ff00000),MASK_0x3ff00000
1085*25c28e83SPiotr Jasiukajtis	ldd	[%l0+56],HTHRESH
1086*25c28e83SPiotr Jasiukajtis	sllx	stridex,3,stridex
1087*25c28e83SPiotr Jasiukajtis	add	MASK_0x7fffffff,0x3ff,MASK_0x7fffffff
1088*25c28e83SPiotr Jasiukajtis	ldd	[%l0+64],LTHRESH
1089*25c28e83SPiotr Jasiukajtis	sllx	stridey,3,stridey
1090*25c28e83SPiotr Jasiukajtis	add	MASK_0x000fffff,0x3ff,MASK_0x000fffff
1091*25c28e83SPiotr Jasiukajtis	ldd	[%l0+72],KB4
1092*25c28e83SPiotr Jasiukajtis	sllx	stridez,3,stridez
1093*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+tmp1_lo]		! *((int*)&ax + 1) = 0;
1094*25c28e83SPiotr Jasiukajtis	sub	%g0,1,%o2
1095*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+tmp2_lo]		! (Y0_0) *((int*)&dtmp0 + 1) = 0;
1096*25c28e83SPiotr Jasiukajtis	st	MASK_0x000fffff,[%fp+tmp_mant]
1097*25c28e83SPiotr Jasiukajtis	sub	pz,stridez,pz
1098*25c28e83SPiotr Jasiukajtis	st	%o2,[%fp+tmp_mant+4]
1099*25c28e83SPiotr Jasiukajtis
1100*25c28e83SPiotr Jasiukajtis.begin:
1101*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],counter
1102*25c28e83SPiotr Jasiukajtis	ldx	[%fp+tmp_px],px
1103*25c28e83SPiotr Jasiukajtis	ldx	[%fp+tmp_py],py
1104*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+tmp_counter]
1105*25c28e83SPiotr Jasiukajtis.begin1:
1106*25c28e83SPiotr Jasiukajtis	subcc	counter,1,counter
1107*25c28e83SPiotr Jasiukajtis	bneg,pn	%icc,.end
1108*25c28e83SPiotr Jasiukajtis	or	%g0,ind_buf,%o7
1109*25c28e83SPiotr Jasiukajtis
1110*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%o2			! (Y0_1) hy = *py;
1111*25c28e83SPiotr Jasiukajtis
1112*25c28e83SPiotr Jasiukajtis	and	%o2,MASK_0x7fffffff,%l1		! (Y0_3) hy &= 0x7fffffff;
1113*25c28e83SPiotr Jasiukajtis	lda	[px]%asi,%l0			! (Y0_3) hx = ((unsigned*)px)[0];
1114*25c28e83SPiotr Jasiukajtis
1115*25c28e83SPiotr Jasiukajtis	sra	%l1,20,%o0			! (Y0_3) expy = hy >> 20;
1116*25c28e83SPiotr Jasiukajtis	lda	[px+4]%asi,%i2			! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1];
1117*25c28e83SPiotr Jasiukajtis
1118*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%l0,%o5		! (Y0_3) hx &= 0xfffff;
1119*25c28e83SPiotr Jasiukajtis
1120*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%o5,%o5		! (Y0_3) hx |= 0x3ff00000;
1121*25c28e83SPiotr Jasiukajtis
1122*25c28e83SPiotr Jasiukajtis	st	%o5,[%fp+tmp0_hi]		! (Y0_3) *(int*)&x = hx;
1123*25c28e83SPiotr Jasiukajtis
1124*25c28e83SPiotr Jasiukajtis	add	%o5,2048,%o5			! (Y0_3) hx += 0x800;
1125*25c28e83SPiotr Jasiukajtis
1126*25c28e83SPiotr Jasiukajtis	st	%i2,[%fp+tmp0_lo]		! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1];
1127*25c28e83SPiotr Jasiukajtis	and	%o5,-4096,%l4			! (Y0_3) hx &= 0xfffff000;
1128*25c28e83SPiotr Jasiukajtis
1129*25c28e83SPiotr Jasiukajtis	add	pz,stridez,pz
1130*25c28e83SPiotr Jasiukajtis	st	%l4,[%fp+tmp1_hi]		! (Y0_3) *(int*)&ax = hx;
1131*25c28e83SPiotr Jasiukajtis
1132*25c28e83SPiotr Jasiukajtis	and	%l0,MASK_0x7fffffff,%l3		! (Y0_3) hx &= 0x7fffffff;
1133*25c28e83SPiotr Jasiukajtis
1134*25c28e83SPiotr Jasiukajtis	sra	%l3,20,%l2			! (Y0_3) exp = (exp >> 20);
1135*25c28e83SPiotr Jasiukajtis
1136*25c28e83SPiotr Jasiukajtis	cmp	%o0,959				! (Y0_3) if (expy < 0x3fb);
1137*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.spec0			! (Y0_3) if (expy < 0x3fb);
1138*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+%o7]			! (Y0_3) yisint = 0;
1139*25c28e83SPiotr Jasiukajtis
1140*25c28e83SPiotr Jasiukajtis	cmp	%o0,1086			! (Y0_3) if (expy >= 0x43e);
1141*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.spec1			! (Y0_3) if (expy >= 0x43e);
1142*25c28e83SPiotr Jasiukajtis	nop
1143*25c28e83SPiotr Jasiukajtis
1144*25c28e83SPiotr Jasiukajtis	cmp	%l2,2047			! (Y0_2) if (exp >= 0x7ff)
1145*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.spec1			! (Y0_2) if (exp >= 0x7ff)
1146*25c28e83SPiotr Jasiukajtis	nop
1147*25c28e83SPiotr Jasiukajtis
1148*25c28e83SPiotr Jasiukajtis	cmp	%l0,MASK_0x000fffff		! (Y0_2) if (hx <= 0xfffff)
1149*25c28e83SPiotr Jasiukajtis
1150*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp0_hi],%f32		! (Y0_2) *(int*)&x = hx;
1151*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.update0			! (Y0_2) if (hx <= 0xfffff)
1152*25c28e83SPiotr Jasiukajtis	nop
1153*25c28e83SPiotr Jasiukajtis.cont0:
1154*25c28e83SPiotr Jasiukajtis	sub	%o7,ind_buf,%o7			! stack buffer pointer update
1155*25c28e83SPiotr Jasiukajtis	sub	pz,stridez,pz
1156*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp1_hi],%f54		! (Y0_2) *(int*)&ax = hx;
1157*25c28e83SPiotr Jasiukajtis
1158*25c28e83SPiotr Jasiukajtis	add	%o7,4,%o7			! stack buffer pointer update
1159*25c28e83SPiotr Jasiukajtis	faddd	%f32,%f54,%f12			! (Y0_2) ux = x + ax;
1160*25c28e83SPiotr Jasiukajtis
1161*25c28e83SPiotr Jasiukajtis	and	%o7,15,%o7			! stack buffer pointer update
1162*25c28e83SPiotr Jasiukajtis
1163*25c28e83SPiotr Jasiukajtis	add	%o7,ind_buf,%o7			! stack buffer pointer update
1164*25c28e83SPiotr Jasiukajtis	add	px,stridex,px			! px += stridex;
1165*25c28e83SPiotr Jasiukajtis
1166*25c28e83SPiotr Jasiukajtis	lda	[px]%asi,%l0			! (Y1_2) hx = ((unsigned*)px)[0];
1167*25c28e83SPiotr Jasiukajtis
1168*25c28e83SPiotr Jasiukajtis	lda	[px+4]%asi,%i2			! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1];
1169*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%l0,%i4		! (Y1_2) hx &= 0xfffff;
1170*25c28e83SPiotr Jasiukajtis
1171*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+%o7]			! (Y1_2) yisint = 0;
1172*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%i4,%i4		! (Y1_2) hx |= 0x3ff00000;
1173*25c28e83SPiotr Jasiukajtis
1174*25c28e83SPiotr Jasiukajtis	st	%i4,[%fp+tmp0_hi]		! (Y1_2) *(int*)&x = hx;
1175*25c28e83SPiotr Jasiukajtis	add	%i4,2048,%i4			! (Y1_2) hx += 0x800;
1176*25c28e83SPiotr Jasiukajtis
1177*25c28e83SPiotr Jasiukajtis	st	%i2,[%fp+tmp0_lo]		! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1];
1178*25c28e83SPiotr Jasiukajtis	and	%i4,-4096,%i4			! (Y1_2) hx &= 0xfffff000;
1179*25c28e83SPiotr Jasiukajtis
1180*25c28e83SPiotr Jasiukajtis	st	%i4,[%fp+tmp1_hi]		! (Y1_2) *(int*)&ax = hx;
1181*25c28e83SPiotr Jasiukajtis	and	%l0,MASK_0x7fffffff,%l2		! (Y1_2) hx &= 0x7fffffff;
1182*25c28e83SPiotr Jasiukajtis	cmp	%l0,MASK_0x000fffff		! (Y1_2) if (hx <= 0xfffff)
1183*25c28e83SPiotr Jasiukajtis
1184*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.update1			! (Y1_2) if (hx <= 0xfffff)
1185*25c28e83SPiotr Jasiukajtis	nop
1186*25c28e83SPiotr Jasiukajtis.cont1:
1187*25c28e83SPiotr Jasiukajtis	sub	%o7,ind_buf,%o7			! stack buffer pointer update
1188*25c28e83SPiotr Jasiukajtis
1189*25c28e83SPiotr Jasiukajtis	add	%o7,4,%o7			! stack buffer pointer update
1190*25c28e83SPiotr Jasiukajtis	fdivd	DONE,%f12,%f20			! (Y0_2) yd = DONE / ux;
1191*25c28e83SPiotr Jasiukajtis
1192*25c28e83SPiotr Jasiukajtis	and	%o7,15,%o7			! stack buffer pointer update
1193*25c28e83SPiotr Jasiukajtis
1194*25c28e83SPiotr Jasiukajtis	sra	%l3,20,%l3			! (Y0_2) exp = (exp >> 20);
1195*25c28e83SPiotr Jasiukajtis	add	%o7,ind_buf,%o7			! stack buffer pointer update
1196*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp0_hi],%f8		! (Y1_2) *(int*)&x = hx;
1197*25c28e83SPiotr Jasiukajtis
1198*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp1_hi],%f14		! (Y1_2) *(int*)&ax = hx;
1199*25c28e83SPiotr Jasiukajtis	sra	%l4,20,%l0			! (Y0_2) itmp0 = (hx >> 20);
1200*25c28e83SPiotr Jasiukajtis	sub	%l3,2046,%o5			! (Y0_2) exp = exp - 2046;
1201*25c28e83SPiotr Jasiukajtis
1202*25c28e83SPiotr Jasiukajtis	add	%o5,%l0,%o5			! (Y0_2) exp += itmp0;
1203*25c28e83SPiotr Jasiukajtis
1204*25c28e83SPiotr Jasiukajtis	sll	%o5,8,%l0			! (Y0_2) itmp0 = exp << 8;
1205*25c28e83SPiotr Jasiukajtis	st	%l0,[%fp+tmp3]			! (Y0_2) (double)itmp0;
1206*25c28e83SPiotr Jasiukajtis	faddd	%f8,%f14,%f26			! (Y1_2) ux = x + ax;
1207*25c28e83SPiotr Jasiukajtis
1208*25c28e83SPiotr Jasiukajtis	fand	%f12,MHI32,%f12			! (Y0_2) ux = vis_fand(ux, MHI32);
1209*25c28e83SPiotr Jasiukajtis	add	px,stridex,px			! px += stridex;
1210*25c28e83SPiotr Jasiukajtis
1211*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_HI],KA1_HI		! (Y0_2) load KA1_HI;
1212*25c28e83SPiotr Jasiukajtis	fsubd	%f12,%f54,%f10			! (Y0_2) dtmp0 = (ux - ax);
1213*25c28e83SPiotr Jasiukajtis
1214*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%f16			! (Y0_2) (double)itmp0;
1215*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f54,%f58			! (Y0_2) u = x - ax;
1216*25c28e83SPiotr Jasiukajtis
1217*25c28e83SPiotr Jasiukajtis	sra	%l4,8,%l4			! (Y0_2) i = (hx >> 8);
1218*25c28e83SPiotr Jasiukajtis
1219*25c28e83SPiotr Jasiukajtis	and	%l4,4080,%l4			! (Y0_2) i = i & 0xff0;
1220*25c28e83SPiotr Jasiukajtis
1221*25c28e83SPiotr Jasiukajtis	ldd	[LOGTBL+%l4],%f62		! (Y0_2) y = *(double *)((char*)__mt_constlog2 + i);
1222*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f20,%f52			! (Y0_2) s = u * yd;
1223*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f10,%f10			! (Y0_2) s_l = (x - dtmp0);
1224*25c28e83SPiotr Jasiukajtis
1225*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f54			! (Y0_2) (double)itmp0;
1226*25c28e83SPiotr Jasiukajtis	add	%l4,8,%o0			! (Y0_2) i += 8;
1227*25c28e83SPiotr Jasiukajtis
1228*25c28e83SPiotr Jasiukajtis	lda	[px]%asi,%l0			! (Y0_3) hx = ((unsigned*)px)[0];
1229*25c28e83SPiotr Jasiukajtis	fand	%f52,MHI32,%f4			! (Y0_2) s_h = vis_fand(s, MHI32);
1230*25c28e83SPiotr Jasiukajtis
1231*25c28e83SPiotr Jasiukajtis	faddd	%f62,%f54,%f54			! (Y0_2) y += (double)itmp0;
1232*25c28e83SPiotr Jasiukajtis	lda	[px+4]%asi,%i2			! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1];
1233*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f12,%f32			! (Y0_2) dtmp0 = s_h * ux;
1234*25c28e83SPiotr Jasiukajtis
1235*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%l0,%o5		! (Y0_3) hx &= 0xfffff;
1236*25c28e83SPiotr Jasiukajtis	fmuld	%f52,%f52,%f12			! (Y0_2) y = s * s;
1237*25c28e83SPiotr Jasiukajtis
1238*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%o5,%o5		! (Y0_3) hx |= 0x3ff00000;
1239*25c28e83SPiotr Jasiukajtis
1240*25c28e83SPiotr Jasiukajtis	st	%o5,[%fp+tmp0_hi]		! (Y0_3) *(int*)&x = hx;
1241*25c28e83SPiotr Jasiukajtis	fsubd	%f58,%f32,%f32			! (Y0_2) s_l = u - dtmp0;
1242*25c28e83SPiotr Jasiukajtis
1243*25c28e83SPiotr Jasiukajtis	add	%o5,2048,%o5			! (Y0_3) hx += 0x800;
1244*25c28e83SPiotr Jasiukajtis
1245*25c28e83SPiotr Jasiukajtis	st	%i2,[%fp+tmp0_lo]		! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1];
1246*25c28e83SPiotr Jasiukajtis	and	%o5,-4096,%l4			! (Y0_3) hx &= 0xfffff000;
1247*25c28e83SPiotr Jasiukajtis	fmuld	KA5,%f12,%f36			! (Y0_2) dtmp8 = KA5 * y;
1248*25c28e83SPiotr Jasiukajtis
1249*25c28e83SPiotr Jasiukajtis	st	%l4,[%fp+tmp1_hi]		! (Y0_3) *(int*)&ax = hx;
1250*25c28e83SPiotr Jasiukajtis	fmuld	KA1_HI,%f4,%f48			! (Y0_2) yd = KA1_HI * s_h;
1251*25c28e83SPiotr Jasiukajtis
1252*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f10,%f10			! (Y0_2) dtmp1 = s_h * s_l;
1253*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_LO],KA1_LO		! (y0_2) load KA1_LO;
1254*25c28e83SPiotr Jasiukajtis	and	%l0,MASK_0x7fffffff,%l3		! (Y0_3) hx &= 0x7fffffff;
1255*25c28e83SPiotr Jasiukajtis	faddd	%f36,KA3,%f62			! (Y0_2) dtmp8 = dtmp8 + KA3;
1256*25c28e83SPiotr Jasiukajtis
1257*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+%o7]			! (Y0_3) yisint = 0;
1258*25c28e83SPiotr Jasiukajtis	faddd	%f54,%f48,%f36			! (Y0_2) m_h = y + yd;
1259*25c28e83SPiotr Jasiukajtis
1260*25c28e83SPiotr Jasiukajtis	fdivd	DONE,%f26,%f22			! (Y1_2) yd = DONE / ux;
1261*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f10,%f10			! (Y0_2) s_l -= dtmp1;
1262*25c28e83SPiotr Jasiukajtis
1263*25c28e83SPiotr Jasiukajtis	cmp	%l0,MASK_0x000fffff		! (Y0_2) if (hx <= 0xfffff)
1264*25c28e83SPiotr Jasiukajtis
1265*25c28e83SPiotr Jasiukajtis	sra	%l2,20,%l2			! (Y1_1) exp = (exp >> 20);
1266*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp0_hi],%f32		! (Y0_2) *(int*)&x = hx;
1267*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.update2			! (Y0_2) if (hx <= 0xfffff)
1268*25c28e83SPiotr Jasiukajtis	fsubd	%f36,%f54,%f30			! (Y0_1) dtmp2 = m_h - y;
1269*25c28e83SPiotr Jasiukajtis.cont2:
1270*25c28e83SPiotr Jasiukajtis	cmp	%l2,2047			! (Y1_1) if (exp >= 0x7ff)
1271*25c28e83SPiotr Jasiukajtis	sub	%o7,ind_buf,%o7			! stack buffer pointer update
1272*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp1_hi],%f54		! (Y0_2) *(int*)&ax = hx;
1273*25c28e83SPiotr Jasiukajtis
1274*25c28e83SPiotr Jasiukajtis	sra	%i4,20,%l0			! (Y1_1) itmp0 = (hx >> 20);
1275*25c28e83SPiotr Jasiukajtis	sub	%l2,2046,%o5			! (Y1_1) exp = exp - 2046;
1276*25c28e83SPiotr Jasiukajtis	fmuld	KA1,%f20,%f20			! (Y0_1) dtmp0 = KA1 * yd;
1277*25c28e83SPiotr Jasiukajtis
1278*25c28e83SPiotr Jasiukajtis	add	%o5,%l0,%o5			! (Y1_1) exp += itmp0;
1279*25c28e83SPiotr Jasiukajtis	fmuld	%f62,%f12,%f62			! (Y0_1) dtmp8 = dtmp8 * y;
1280*25c28e83SPiotr Jasiukajtis
1281*25c28e83SPiotr Jasiukajtis	sll	%o5,8,%l0			! (Y1_1) itmp0 = exp << 8;
1282*25c28e83SPiotr Jasiukajtis	add	%o7,4,%o7			! stack buffer pointer update
1283*25c28e83SPiotr Jasiukajtis	st	%l0,[%fp+tmp3]			! (Y1_1) (double)itmp0;
1284*25c28e83SPiotr Jasiukajtis	faddd	%f32,%f54,%f12			! (Y0_2) ux = x + ax;
1285*25c28e83SPiotr Jasiukajtis
1286*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.update3			! (Y1_1) if (exp >= 0x7ff)
1287*25c28e83SPiotr Jasiukajtis	fsubd	%f30,%f48,%f48			! (Y0_1) dtmp2 -= yd;
1288*25c28e83SPiotr Jasiukajtis.cont3:
1289*25c28e83SPiotr Jasiukajtis	and	%o7,15,%o7			! stack buffer pointer update
1290*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f10,%f10			! (Y0_1) s_l = dtmp0 * s_l;
1291*25c28e83SPiotr Jasiukajtis
1292*25c28e83SPiotr Jasiukajtis	add	%o7,ind_buf,%o7			! stack buffer pointer update
1293*25c28e83SPiotr Jasiukajtis	fmuld	KA1_LO,%f4,%f4			! (Y0_1) dtmp1 = KA1_LO * s_h;
1294*25c28e83SPiotr Jasiukajtis	fand	%f26,MHI32,%f26			! (Y1_1) ux = vis_fand(ux, MHI32);
1295*25c28e83SPiotr Jasiukajtis
1296*25c28e83SPiotr Jasiukajtis	fmuld	%f62,%f52,%f62			! (Y0_1) s = dtmp8 * s;
1297*25c28e83SPiotr Jasiukajtis	ldd	[LOGTBL+%o0],%f52		! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8);
1298*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f10,%f20			! (Y0_1) dtmp2 -= s_l;
1299*25c28e83SPiotr Jasiukajtis
1300*25c28e83SPiotr Jasiukajtis	add	px,stridex,px			! px += stridex;
1301*25c28e83SPiotr Jasiukajtis	fsubd	%f26,%f14,%f10			! (Y1_1) dtmp0 = (ux - ax);
1302*25c28e83SPiotr Jasiukajtis
1303*25c28e83SPiotr Jasiukajtis	faddd	%f52,%f4,%f52			! (Y0_1) dtmp0 += dtmp1;
1304*25c28e83SPiotr Jasiukajtis
1305*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_HI],KA1_HI		! (Y1_1) load KA1_HI;
1306*25c28e83SPiotr Jasiukajtis	fsubd	%f62,%f20,%f4			! (Y0_1) y = s - dtmp2;
1307*25c28e83SPiotr Jasiukajtis
1308*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%f16			! (Y1_1) (double)itmp0;
1309*25c28e83SPiotr Jasiukajtis	fsubd	%f8,%f14,%f58			! (Y1_1) u = x - ax;
1310*25c28e83SPiotr Jasiukajtis
1311*25c28e83SPiotr Jasiukajtis	sra	%i4,8,%o0			! (Y1_1) i = (hx >> 8);
1312*25c28e83SPiotr Jasiukajtis
1313*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f52,%f48			! (Y0_1) y += dtmp0;
1314*25c28e83SPiotr Jasiukajtis	and	%o0,4080,%o0			! (Y1_1) i = i & 0xff0;
1315*25c28e83SPiotr Jasiukajtis
1316*25c28e83SPiotr Jasiukajtis	ldd	[LOGTBL+%o0],%f62		! (Y1_1) y = *(double *)((char*)__mt_constlog2 + i);
1317*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f22,%f52			! (Y1_1) s = u * yd;
1318*25c28e83SPiotr Jasiukajtis	fsubd	%f8,%f10,%f10			! (Y1_1) s_l = (x - dtmp0);
1319*25c28e83SPiotr Jasiukajtis
1320*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%f30			! (Y0_1) yd = *py;
1321*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f14			! (Y1_1) (double)itmp0;
1322*25c28e83SPiotr Jasiukajtis
1323*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f31			! (Y0_1) yd = *py;
1324*25c28e83SPiotr Jasiukajtis	faddd	%f48,%f36,%f8			! (Y0_1) dtmp0 = y + m_h;
1325*25c28e83SPiotr Jasiukajtis
1326*25c28e83SPiotr Jasiukajtis	add	%o0,8,%o0			! (Y1_1) i += 8;
1327*25c28e83SPiotr Jasiukajtis	lda	[px]%asi,%l0			! (Y1_2) hx = ((unsigned*)px)[0];
1328*25c28e83SPiotr Jasiukajtis	fand	%f52,MHI32,%f4			! (Y1_1) s_h = vis_fand(s, MHI32);
1329*25c28e83SPiotr Jasiukajtis
1330*25c28e83SPiotr Jasiukajtis	faddd	%f62,%f14,%f14			! (Y1_1) y += (double)itmp0;
1331*25c28e83SPiotr Jasiukajtis
1332*25c28e83SPiotr Jasiukajtis	lda	[px+4]%asi,%i2			! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1];
1333*25c28e83SPiotr Jasiukajtis	fand	%f8,MHI32,%f20			! (Y0_1) s_h = vis_fand(dtmp0, MHI32);
1334*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f26,%f8			! (Y1_1) dtmp0 = s_h * ux;
1335*25c28e83SPiotr Jasiukajtis
1336*25c28e83SPiotr Jasiukajtis	fand	%f30,MHI32,%f6			! (Y0_1) s = vis_fand(yd, MHI32);
1337*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%l0,%i4		! (Y1_2) hx &= 0xfffff;
1338*25c28e83SPiotr Jasiukajtis	fmuld	%f52,%f52,%f26			! (Y1_1) y = s * s;
1339*25c28e83SPiotr Jasiukajtis
1340*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+%o7]			! (Y1_2) yisint = 0;
1341*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%i4,%i4		! (Y1_2) hx |= 0x3ff00000;
1342*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f36,%f62			! (Y0_1) dtmp0 = (s_h - m_h);
1343*25c28e83SPiotr Jasiukajtis
1344*25c28e83SPiotr Jasiukajtis	st	%i4,[%fp+tmp0_hi]		! (Y1_2) *(int*)&x = hx;
1345*25c28e83SPiotr Jasiukajtis	fsubd	%f58,%f8,%f8			! (Y1_1) s_l = u - dtmp0;
1346*25c28e83SPiotr Jasiukajtis
1347*25c28e83SPiotr Jasiukajtis	add	%i4,2048,%i4			! (Y1_2) hx += 0x800;
1348*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f6,%f34			! (Y0_1) s = s_h * s;
1349*25c28e83SPiotr Jasiukajtis	fsubd	%f30,%f6,%f6			! (Y0_1) dtmp0 = (yd - s);
1350*25c28e83SPiotr Jasiukajtis
1351*25c28e83SPiotr Jasiukajtis	st	%i2,[%fp+tmp0_lo]		! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1];
1352*25c28e83SPiotr Jasiukajtis	and	%i4,-4096,%i4			! (Y1_2) hx &= 0xfffff000;
1353*25c28e83SPiotr Jasiukajtis	fmuld	KA5,%f26,%f36			! (Y1_1) dtmp8 = KA5 * y;
1354*25c28e83SPiotr Jasiukajtis
1355*25c28e83SPiotr Jasiukajtis	st	%i4,[%fp+tmp1_hi]		! (Y1_2) *(int*)&ax = hx;
1356*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f62,%f62			! (Y0_1) y = y - dtmp0;
1357*25c28e83SPiotr Jasiukajtis	fmuld	KA1_HI,%f4,%f48			! (Y1_1) yd = KA1_HI * s_h;
1358*25c28e83SPiotr Jasiukajtis
1359*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f10,%f10			! (Y1_1) dtmp1 = s_h * s_l;
1360*25c28e83SPiotr Jasiukajtis
1361*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_LO],KA1_LO		! (Y1_1) load KA1_LO;
1362*25c28e83SPiotr Jasiukajtis	and	%l0,MASK_0x7fffffff,%l2		! (Y1_2) hx &= 0x7fffffff;
1363*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f20,%f6			! (Y0_1) dtmp0 *= s_h;
1364*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f34,HTHRESH		! (Y0_1) s > HTHRESH
1365*25c28e83SPiotr Jasiukajtis
1366*25c28e83SPiotr Jasiukajtis	cmp	%l0,MASK_0x000fffff		! (Y1_2) if (hx <= 0xfffff)
1367*25c28e83SPiotr Jasiukajtis	fmuld	%f30,%f62,%f30			! (Y0_1) dtmp1 = yd * y;
1368*25c28e83SPiotr Jasiukajtis	faddd	%f36,KA3,%f62			! (Y1_1) dtmp8 = dtmp8 + KA3;
1369*25c28e83SPiotr Jasiukajtis
1370*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.update4			! (Y1_2) if (hx <= 0xfffff)
1371*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f36			! (Y1_1)  m_h = y + yd;
1372*25c28e83SPiotr Jasiukajtis.cont4:
1373*25c28e83SPiotr Jasiukajtis	sub	%o7,ind_buf,%o7			! stack buffer pointer update
1374*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f34		! (Y0_1) s = HTHRESH
1375*25c28e83SPiotr Jasiukajtis
1376*25c28e83SPiotr Jasiukajtis	add	%o7,4,%o7			! stack buffer pointer update
1377*25c28e83SPiotr Jasiukajtis	fdivd	DONE,%f12,%f20			! (Y0_2) yd = DONE / ux;
1378*25c28e83SPiotr Jasiukajtis	fsubd	%f8,%f10,%f10			! (Y1_1) s_l -= dtmp1;
1379*25c28e83SPiotr Jasiukajtis
1380*25c28e83SPiotr Jasiukajtis	and	%o7,15,%o7			! stack buffer pointer update
1381*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f30,%f6			! (Y0_1) yd = dtmp0 + dtmp1;
1382*25c28e83SPiotr Jasiukajtis
1383*25c28e83SPiotr Jasiukajtis	sra	%l3,20,%l3			! (Y0_2) exp = (exp >> 20);
1384*25c28e83SPiotr Jasiukajtis	add	%o7,ind_buf,%o7			! stack buffer pointer update
1385*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp0_hi],%f8		! (Y1_2) *(int*)&x = hx;
1386*25c28e83SPiotr Jasiukajtis	fsubd	%f36,%f14,%f30			! (Y1_1) dtmp2 = m_h - y;
1387*25c28e83SPiotr Jasiukajtis
1388*25c28e83SPiotr Jasiukajtis	cmp	%l3,2047			! (Y0_2) if (exp >= 0x7ff)
1389*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp1_hi],%f14		! (Y1_2) *(int*)&ax = hx;
1390*25c28e83SPiotr Jasiukajtis	fmuld	KA1,%f22,%f22			! (Y1_1) dtmp0 = KA1 * yd;
1391*25c28e83SPiotr Jasiukajtis
1392*25c28e83SPiotr Jasiukajtis	sra	%l4,20,%l0			! (Y0_2) itmp0 = (hx >> 20);
1393*25c28e83SPiotr Jasiukajtis	sub	%l3,2046,%o5			! (Y0_2) exp = exp - 2046;
1394*25c28e83SPiotr Jasiukajtis	fcmped	%fcc1,%f34,LTHRESH		! (Y0_1) s < LTHRESH
1395*25c28e83SPiotr Jasiukajtis
1396*25c28e83SPiotr Jasiukajtis	add	%o5,%l0,%o5			! (Y0_2) exp += itmp0;
1397*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! py += stridey;
1398*25c28e83SPiotr Jasiukajtis	fmuld	%f62,%f26,%f62			! (Y1_1) dtmp8 = dtmp8 * y;
1399*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,DZERO,%f6			! (Y0_1) yd = DZERO
1400*25c28e83SPiotr Jasiukajtis
1401*25c28e83SPiotr Jasiukajtis	sll	%o5,8,%l0			! (Y0_2) itmp0 = exp << 8;
1402*25c28e83SPiotr Jasiukajtis	st	%l0,[%fp+tmp3]			! (Y0_2) (double)itmp0;
1403*25c28e83SPiotr Jasiukajtis	faddd	%f8,%f14,%f26			! (Y1_2) ux = x + ax;
1404*25c28e83SPiotr Jasiukajtis
1405*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.update5			! (Y0_2) if (exp >= 0x7ff)
1406*25c28e83SPiotr Jasiukajtis	fsubd	%f30,%f48,%f48			! (Y1_1) dtmp2 -= yd;
1407*25c28e83SPiotr Jasiukajtis.cont5:
1408*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%l1			! (Y1_1) hy = *py;
1409*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f10,%f10			! (Y1_1) s_l = dtmp0 * s_l;
1410*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,LTHRESH,%f34		! (Y0_1) s = LTHRESH
1411*25c28e83SPiotr Jasiukajtis
1412*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,DZERO,%f6			! (Y0_1) yd = DZERO
1413*25c28e83SPiotr Jasiukajtis
1414*25c28e83SPiotr Jasiukajtis	fand	%f12,MHI32,%f12			! (Y0_2) ux = vis_fand(ux, MHI32);
1415*25c28e83SPiotr Jasiukajtis	fmuld	KA1_LO,%f4,%f4			! (Y1_1) dtmp1 = KA1_LO * s_h;
1416*25c28e83SPiotr Jasiukajtis
1417*25c28e83SPiotr Jasiukajtis	fmuld	%f62,%f52,%f62			! (Y1_1) s = dtmp8 * s;
1418*25c28e83SPiotr Jasiukajtis	ldd	[LOGTBL+%o0],%f52		! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8);
1419*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f10,%f22			! (Y1_1) dtmp2 -= s_l;
1420*25c28e83SPiotr Jasiukajtis
1421*25c28e83SPiotr Jasiukajtis	add	px,stridex,px			! px += stridex;
1422*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f6,%f58			! (Y0_1) dtmp0 = (s + yd);
1423*25c28e83SPiotr Jasiukajtis
1424*25c28e83SPiotr Jasiukajtis	and	%l1,MASK_0x7fffffff,%l1		! (Y1_1) hy &= 0x7fffffff;
1425*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_HI],KA1_HI		! (Y0_2) load KA1_HI;
1426*25c28e83SPiotr Jasiukajtis	fsubd	%f12,%f54,%f10			! (Y0_2) dtmp0 = (ux - ax);
1427*25c28e83SPiotr Jasiukajtis
1428*25c28e83SPiotr Jasiukajtis	faddd	%f52,%f4,%f52			! (Y1_1) dtmp0 += dtmp1;
1429*25c28e83SPiotr Jasiukajtis
1430*25c28e83SPiotr Jasiukajtis	fsubd	%f62,%f22,%f4			! (Y1_1) y = s - dtmp2;
1431*25c28e83SPiotr Jasiukajtis
1432*25c28e83SPiotr Jasiukajtis	fdtoi	%f58,%f17			! (Y0_1) (int)dtmp0;
1433*25c28e83SPiotr Jasiukajtis
1434*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%f16			! (Y0_2) (double)itmp0;
1435*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f54,%f58			! (Y0_2) u = x - ax;
1436*25c28e83SPiotr Jasiukajtis	sra	%l4,8,%l4			! (Y0_2) i = (hx >> 8);
1437*25c28e83SPiotr Jasiukajtis
1438*25c28e83SPiotr Jasiukajtis	sra	%l1,20,%l1			! (Y1_1) expy = hy >> 20;
1439*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB5],KB5			! (Y0_1) load KB5;
1440*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f52,%f48			! (Y1_1) y += dtmp0;
1441*25c28e83SPiotr Jasiukajtis
1442*25c28e83SPiotr Jasiukajtis	and	%l4,4080,%l4			! (Y0_2) i = i & 0xff0;
1443*25c28e83SPiotr Jasiukajtis	st	%f17,[%fp+tmp4]			! (Y0_1) ind = (int)dtmp0;
1444*25c28e83SPiotr Jasiukajtis	fitod	%f17,%f4			! (Y0_1) u = (double)(int)dtmp0;
1445*25c28e83SPiotr Jasiukajtis
1446*25c28e83SPiotr Jasiukajtis	ldd	[LOGTBL+%l4],%f62		! (Y0_2) y = *(double *)((char*)__mt_constlog2 + i);
1447*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f20,%f52			! (Y0_2) s = u * yd;
1448*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f10,%f10			! (Y0_2) s_l = (x - dtmp0);
1449*25c28e83SPiotr Jasiukajtis
1450*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%f30			! (Y1_1) yd = *py;
1451*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f54			! (Y0_2) (double)itmp0;
1452*25c28e83SPiotr Jasiukajtis
1453*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f31			! (Y1_1) yd = *py;
1454*25c28e83SPiotr Jasiukajtis	faddd	%f48,%f36,%f32			! (Y1_1) dtmp0 = y + m_h;
1455*25c28e83SPiotr Jasiukajtis
1456*25c28e83SPiotr Jasiukajtis	add	%l4,8,%o0			! (Y0_2) i += 8;
1457*25c28e83SPiotr Jasiukajtis	fsubd	%f34,%f4,%f60			! (Y0_1) y = s - u;
1458*25c28e83SPiotr Jasiukajtis
1459*25c28e83SPiotr Jasiukajtis	cmp	%l1,959				! (Y1_1) if (expy < 0x3fb);
1460*25c28e83SPiotr Jasiukajtis	lda	[px]%asi,%l0			! (Y0_3) hx = ((unsigned*)px)[0];
1461*25c28e83SPiotr Jasiukajtis	fand	%f52,MHI32,%f4			! (Y0_2) s_h = vis_fand(s, MHI32);
1462*25c28e83SPiotr Jasiukajtis
1463*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.update6			! (Y1_1) if (expy < 0x3fb);
1464*25c28e83SPiotr Jasiukajtis	faddd	%f62,%f54,%f54			! (Y0_2) y += (double)itmp0;
1465*25c28e83SPiotr Jasiukajtis.cont6:
1466*25c28e83SPiotr Jasiukajtis	cmp	%l1,1086			! (Y1_1) if (expy >= 0x43e);
1467*25c28e83SPiotr Jasiukajtis	lda	[px+4]%asi,%i2			! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1];
1468*25c28e83SPiotr Jasiukajtis	fand	%f32,MHI32,%f22			! (Y1_1) s_h = vis_fand(dtmp0, MHI32);
1469*25c28e83SPiotr Jasiukajtis
1470*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f12,%f32			! (Y0_2) dtmp0 = s_h * ux;
1471*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.update7			! (Y1_1) if (expy >= 0x43e);
1472*25c28e83SPiotr Jasiukajtis	faddd	%f60,%f6,%f60			! (Y0_1) y = y + yd;
1473*25c28e83SPiotr Jasiukajtis.cont7:
1474*25c28e83SPiotr Jasiukajtis	ld	[%fp+%o7],%o2			! (Y0_1) load yisint
1475*25c28e83SPiotr Jasiukajtis	fand	%f30,MHI32,%f6			! (Y1_1) s = vis_fand(yd, MHI32);
1476*25c28e83SPiotr Jasiukajtis
1477*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%l0,%o5		! (Y0_3) hx &= 0xfffff;
1478*25c28e83SPiotr Jasiukajtis	fmuld	%f52,%f52,%f12			! (Y0_2) y = s * s;
1479*25c28e83SPiotr Jasiukajtis
1480*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%o5,%o5		! (Y0_3) hx |= 0x3ff00000;
1481*25c28e83SPiotr Jasiukajtis	fsubd	%f22,%f36,%f62			! (Y1_1) dtmp0 = (s_h - m_h);
1482*25c28e83SPiotr Jasiukajtis
1483*25c28e83SPiotr Jasiukajtis	st	%o5,[%fp+tmp0_hi]		! (Y0_3) *(int*)&x = hx;
1484*25c28e83SPiotr Jasiukajtis	fsubd	%f58,%f32,%f32			! (Y0_2) s_l = u - dtmp0;
1485*25c28e83SPiotr Jasiukajtis	fmuld	KB5,%f60,%f58			! (Y0_1) dtmp0 = KB5 * y;
1486*25c28e83SPiotr Jasiukajtis
1487*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB3],KB3		! (Y0_1) load KB3;
1488*25c28e83SPiotr Jasiukajtis	add	%o5,2048,%o5			! (Y0_3) hx += 0x800;
1489*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f6,%f34			! (Y1_1) s = s_h * s;
1490*25c28e83SPiotr Jasiukajtis	fsubd	%f30,%f6,%f6			! (Y1_1) dtmp0 = (yd - s);
1491*25c28e83SPiotr Jasiukajtis
1492*25c28e83SPiotr Jasiukajtis	st	%i2,[%fp+tmp0_lo]		! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1];
1493*25c28e83SPiotr Jasiukajtis	and	%o5,-4096,%l4			! (Y0_3) hx &= 0xfffff000;
1494*25c28e83SPiotr Jasiukajtis	fmuld	KA5,%f12,%f36			! (Y0_2) dtmp8 = KA5 * y;
1495*25c28e83SPiotr Jasiukajtis
1496*25c28e83SPiotr Jasiukajtis	st	%l4,[%fp+tmp1_hi]		! (Y0_3) *(int*)&ax = hx;
1497*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f62,%f62			! (Y1_1) y = y - dtmp0;
1498*25c28e83SPiotr Jasiukajtis	fmuld	KA1_HI,%f4,%f48			! (Y0_2) yd = KA1_HI * s_h;
1499*25c28e83SPiotr Jasiukajtis
1500*25c28e83SPiotr Jasiukajtis	subcc	counter,1,counter
1501*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f10,%f10			! (Y0_2) dtmp1 = s_h * s_l;
1502*25c28e83SPiotr Jasiukajtis	faddd	%f58,KB4,%f58			! (Y0_1) dtmp1 = dtmp0 + KB4;
1503*25c28e83SPiotr Jasiukajtis
1504*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_LO],KA1_LO		! (y0_2) load KA1_LO;
1505*25c28e83SPiotr Jasiukajtis	and	%l0,MASK_0x7fffffff,%l3		! (Y0_3) hx &= 0x7fffffff;
1506*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f22,%f6			! (Y1_1) dtmp0 *= s_h;
1507*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f34,HTHRESH		! (Y1_1) s > HTHRESH;
1508*25c28e83SPiotr Jasiukajtis
1509*25c28e83SPiotr Jasiukajtis	fmuld	%f30,%f62,%f30			! (Y1_1) dtmp1 = yd * y;
1510*25c28e83SPiotr Jasiukajtis	ba	1f
1511*25c28e83SPiotr Jasiukajtis	faddd	%f36,KA3,%f62			! (Y0_2) dtmp8 = dtmp8 + KA3;
1512*25c28e83SPiotr Jasiukajtis
1513*25c28e83SPiotr Jasiukajtis	.align	16
1514*25c28e83SPiotr Jasiukajtis1:
1515*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+%o7]			! (Y0_3) yisint = 0;
1516*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f60,%f58			! (Y0_1) dtmp2 = dtmp1 * y;
1517*25c28e83SPiotr Jasiukajtis	bneg,pn	%icc,.tail
1518*25c28e83SPiotr Jasiukajtis	faddd	%f54,%f48,%f36			! (Y0_2) m_h = y + yd;
1519*25c28e83SPiotr Jasiukajtis
1520*25c28e83SPiotr Jasiukajtis	nop
1521*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f34		! (Y1_1) s = HTHRESH;
1522*25c28e83SPiotr Jasiukajtis
1523*25c28e83SPiotr Jasiukajtis	fdivd	DONE,%f26,%f22			! (Y1_2) yd = DONE / ux;
1524*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f10,%f10			! (Y0_2) s_l -= dtmp1;
1525*25c28e83SPiotr Jasiukajtis
1526*25c28e83SPiotr Jasiukajtis.main_loop:
1527*25c28e83SPiotr Jasiukajtis	cmp	%l0,MASK_0x000fffff		! (Y0_2) if (hx <= 0xfffff)
1528*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! py += stridey;
1529*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f30,%f6			! (Y1_0) yd = dtmp0 + dtmp1;
1530*25c28e83SPiotr Jasiukajtis
1531*25c28e83SPiotr Jasiukajtis	sra	%l2,20,%l2			! (Y1_1) exp = (exp >> 20);
1532*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp0_hi],%f32		! (Y0_2) *(int*)&x = hx;
1533*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.update8			! (Y0_2) if (hx <= 0xfffff)
1534*25c28e83SPiotr Jasiukajtis	fsubd	%f36,%f54,%f30			! (Y0_1) dtmp2 = m_h - y;
1535*25c28e83SPiotr Jasiukajtis.cont8:
1536*25c28e83SPiotr Jasiukajtis	cmp	%l2,2047			! (Y1_1) if (exp >= 0x7ff)
1537*25c28e83SPiotr Jasiukajtis	sub	%o7,ind_buf,%o7			! stack buffer pointer update
1538*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp1_hi],%f54		! (Y0_2) *(int*)&ax = hx;
1539*25c28e83SPiotr Jasiukajtis	faddd	%f58,KB3,%f58			! (Y0_0) dtmp3 = dtmp2 + KB3;
1540*25c28e83SPiotr Jasiukajtis
1541*25c28e83SPiotr Jasiukajtis	sra	%i4,20,%l0			! (Y1_1) itmp0 = (hx >> 20);
1542*25c28e83SPiotr Jasiukajtis	sub	%l2,2046,%o5			! (Y1_1) exp = exp - 2046;
1543*25c28e83SPiotr Jasiukajtis	fmuld	KA1,%f20,%f20			! (Y0_1) dtmp0 = KA1 * yd;
1544*25c28e83SPiotr Jasiukajtis	fcmped	%fcc1,%f34,LTHRESH		! (Y1_0) s < LTHRESH;
1545*25c28e83SPiotr Jasiukajtis
1546*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB2],KB2		! (Y0_0) load KB2;
1547*25c28e83SPiotr Jasiukajtis	add	%o5,%l0,%o5			! (Y1_1) exp += itmp0;
1548*25c28e83SPiotr Jasiukajtis	fmuld	%f62,%f12,%f62			! (Y0_1) dtmp8 = dtmp8 * y;
1549*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,DZERO,%f6			! (Y1_0) yd = DZERO
1550*25c28e83SPiotr Jasiukajtis
1551*25c28e83SPiotr Jasiukajtis	sll	%o5,8,%l0			! (Y1_1) itmp0 = exp << 8;
1552*25c28e83SPiotr Jasiukajtis	add	%o7,4,%o7			! stack buffer pointer update
1553*25c28e83SPiotr Jasiukajtis	st	%l0,[%fp+tmp3]			! (Y1_1) (double)itmp0;
1554*25c28e83SPiotr Jasiukajtis	faddd	%f32,%f54,%f12			! (Y0_2) ux = x + ax;
1555*25c28e83SPiotr Jasiukajtis
1556*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp4],%i2			! (Y0_0) ind = (int)dtmp0;
1557*25c28e83SPiotr Jasiukajtis	fsubd	%f30,%f48,%f48			! (Y0_1) dtmp2 -= yd;
1558*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.update9			! (Y1_1) if (exp >= 0x7ff)
1559*25c28e83SPiotr Jasiukajtis        fmuld	%f58,%f60,%f58			! (Y0_0) dtmp4 = dtmp3 * y;
1560*25c28e83SPiotr Jasiukajtis.cont9:
1561*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%l1			! (Y0_1) hy = *py;
1562*25c28e83SPiotr Jasiukajtis	and	%o7,15,%o7			! stack buffer pointer update
1563*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f10,%f10			! (Y0_1) s_l = dtmp0 * s_l;
1564*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,LTHRESH,%f34		! (Y1_0) s = LTHRESH;
1565*25c28e83SPiotr Jasiukajtis
1566*25c28e83SPiotr Jasiukajtis	add	%o7,ind_buf,%o7			! stack buffer pointer update
1567*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,DZERO,%f6			! (Y1_0) yd = DZERO
1568*25c28e83SPiotr Jasiukajtis
1569*25c28e83SPiotr Jasiukajtis	fmuld	KA1_LO,%f4,%f4			! (Y0_1) dtmp1 = KA1_LO * s_h;
1570*25c28e83SPiotr Jasiukajtis	fand	%f26,MHI32,%f26			! (Y1_1) ux = vis_fand(ux, MHI32);
1571*25c28e83SPiotr Jasiukajtis
1572*25c28e83SPiotr Jasiukajtis	fmuld	%f62,%f52,%f62			! (Y0_1) s = dtmp8 * s;
1573*25c28e83SPiotr Jasiukajtis	nop
1574*25c28e83SPiotr Jasiukajtis        faddd	%f58,KB2,%f30			! (Y0_0) dtmp5 = dtmp4 + KB2;
1575*25c28e83SPiotr Jasiukajtis
1576*25c28e83SPiotr Jasiukajtis	nop
1577*25c28e83SPiotr Jasiukajtis	add	pz,stridez,pz			! pz += stridez;
1578*25c28e83SPiotr Jasiukajtis	ldd	[LOGTBL+%o0],%f52		! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8);
1579*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f10,%f20			! (Y0_1) dtmp2 -= s_l;
1580*25c28e83SPiotr Jasiukajtis
1581*25c28e83SPiotr Jasiukajtis	sra	%i2,8,%l0			! (Y0_0) ind >>= 8;
1582*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB1],KB1		! (Y0_0) load KB1;
1583*25c28e83SPiotr Jasiukajtis	add	px,stridex,px			! px += stridex;
1584*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f6,%f58			! (Y1_0) dtmp0 = (s + yd);
1585*25c28e83SPiotr Jasiukajtis
1586*25c28e83SPiotr Jasiukajtis	add	%l0,1021,%l2			! (Y0_0) eflag = (ind + 1021);
1587*25c28e83SPiotr Jasiukajtis	sub	%g0,%l0,%o5			! (Y0_0) gflag = (1022 - ind);
1588*25c28e83SPiotr Jasiukajtis	fsubd	%f26,%f14,%f10			! (Y1_1) dtmp0 = (ux - ax);
1589*25c28e83SPiotr Jasiukajtis
1590*25c28e83SPiotr Jasiukajtis	sra	%l2,31,%l2			! (Y0_0) eflag = eflag >> 31;
1591*25c28e83SPiotr Jasiukajtis	add	%o5,1022,%o5			! (Y0_0) gflag = (1022 - ind);
1592*25c28e83SPiotr Jasiukajtis	fmuld	%f30,%f60,%f48			! (Y0_0) dtmp6 = dtmp5 * y;
1593*25c28e83SPiotr Jasiukajtis	faddd	%f52,%f4,%f52			! (Y0_1) dtmp0 += dtmp1;
1594*25c28e83SPiotr Jasiukajtis
1595*25c28e83SPiotr Jasiukajtis	sra	%o5,31,%o5			! (Y0_0) gflag = gflag >> 31;
1596*25c28e83SPiotr Jasiukajtis	and	%l2,54,%o0			! (Y0_0) itmp0 = 54 & eflag;
1597*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_HI],KA1_HI		! (Y1_1) load KA1_HI;
1598*25c28e83SPiotr Jasiukajtis	fsubd	%f62,%f20,%f4			! (Y0_1) y = s - dtmp2;
1599*25c28e83SPiotr Jasiukajtis
1600*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%f30			! (Y0_1) yd = *py;
1601*25c28e83SPiotr Jasiukajtis	sub	%l2,%o5,%l2			! (Y0_0) ind = eflag - gflag;
1602*25c28e83SPiotr Jasiukajtis	add	%l0,%o0,%l0			! (Y0_0) ind = ind + itmp0;
1603*25c28e83SPiotr Jasiukajtis	fdtoi	%f58,%f20			! (Y1_0) u = (double)(int)dtmp0;
1604*25c28e83SPiotr Jasiukajtis
1605*25c28e83SPiotr Jasiukajtis	sra	%i4,8,%o0			! (Y1_1) i = (hx >> 8);
1606*25c28e83SPiotr Jasiukajtis	and	%o5,52,%o5			! (Y0_0) itmp1 = 52 & gflag;
1607*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%f16			! (Y1_1) (double)itmp0;
1608*25c28e83SPiotr Jasiukajtis	fsubd	%f8,%f14,%f58			! (Y1_1) u = x - ax;
1609*25c28e83SPiotr Jasiukajtis
1610*25c28e83SPiotr Jasiukajtis	and	%o0,4080,%o0			! (Y1_1) i = i & 0xff0;
1611*25c28e83SPiotr Jasiukajtis	sub	%l0,%o5,%i4			! (Y0_0) ind = ind - itmp1;
1612*25c28e83SPiotr Jasiukajtis	st	%f20,[%fp+tmp4]			! (Y1_0) ind = (int)dtmp0;
1613*25c28e83SPiotr Jasiukajtis	faddd	%f48,KB1,%f14			! (Y0_0) dtmp7 = dtmp6 + KB1;
1614*25c28e83SPiotr Jasiukajtis
1615*25c28e83SPiotr Jasiukajtis	add	%o2,%i4,%i4			! (Y0_0) ind = yisint + ind;
1616*25c28e83SPiotr Jasiukajtis	and	%i2,255,%o5			! (Y0_0) i = ind & 0xff;
1617*25c28e83SPiotr Jasiukajtis	lda	[px]%asi,%l0			! (Y1_2) hx = ((unsigned*)px)[0];
1618*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f52,%f48			! (Y0_1) y += dtmp0;
1619*25c28e83SPiotr Jasiukajtis
1620*25c28e83SPiotr Jasiukajtis	sll	%i4,20,%i4			! (Y0_0) ind <<= 20;
1621*25c28e83SPiotr Jasiukajtis	ldd	[LOGTBL+%o0],%f62		! (Y1_1) y = *(double *)((char*)__mt_constlog2 + i);
1622*25c28e83SPiotr Jasiukajtis	and	%l1,MASK_0x7fffffff,%l1		! (Y0_1) hy &= 0x7fffffff;
1623*25c28e83SPiotr Jasiukajtis	fitod	%f20,%f4			! (Y1_0) u = (double)(int)dtmp0;
1624*25c28e83SPiotr Jasiukajtis
1625*25c28e83SPiotr Jasiukajtis	lda	[px+4]%asi,%i2			! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1];
1626*25c28e83SPiotr Jasiukajtis	nop
1627*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f22,%f52			! (Y1_1) s = u * yd;
1628*25c28e83SPiotr Jasiukajtis	fsubd	%f8,%f10,%f10			! (Y1_1) s_l = (x - dtmp0);
1629*25c28e83SPiotr Jasiukajtis
1630*25c28e83SPiotr Jasiukajtis	sll	%o5,4,%o5			! (Y0_0) i = i << 4;
1631*25c28e83SPiotr Jasiukajtis	st	%i4,[%fp+tmp2_hi]		! (Y0_0) *(int*)&dtmp0 = ind;
1632*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f60,%f20			! (Y0_0) y = dtmp7 * y;
1633*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f14			! (Y1_1) (double)itmp0;
1634*25c28e83SPiotr Jasiukajtis
1635*25c28e83SPiotr Jasiukajtis	sra	%l1,20,%l1			! (Y0_1) expy = hy >> 20;
1636*25c28e83SPiotr Jasiukajtis	nop
1637*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%o5],%f56		! (Y0_0) u = *(double*)((char*)__mt_constexp2 + i);
1638*25c28e83SPiotr Jasiukajtis	faddd	%f48,%f36,%f8			! (Y0_1) dtmp0 = y + m_h;
1639*25c28e83SPiotr Jasiukajtis
1640*25c28e83SPiotr Jasiukajtis	add	%o5,8,%o5			! (Y0_0) i += 8;
1641*25c28e83SPiotr Jasiukajtis	add	%o0,8,%o0			! (Y1_1) i += 8;
1642*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f31			! (Y0_1) yd = *py;
1643*25c28e83SPiotr Jasiukajtis	fsubd	%f34,%f4,%f60			! (Y1_0) y = s - u;
1644*25c28e83SPiotr Jasiukajtis
1645*25c28e83SPiotr Jasiukajtis	cmp	%l1,959				! (Y0_1) if (expy < 0x3fb);
1646*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%l0,%i4		! (Y1_2) hx &= 0xfffff;
1647*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB5],KB5		! (Y1_0) load KB5;
1648*25c28e83SPiotr Jasiukajtis	fand	%f52,MHI32,%f4			! (Y1_1) s_h = vis_fand(s, MHI32);
1649*25c28e83SPiotr Jasiukajtis
1650*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%o5],%f16		! (Y0_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8);
1651*25c28e83SPiotr Jasiukajtis	fmuld	%f56,%f20,%f34			! (Y0_0) dtmp1 = u * y;
1652*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.update10			! (Y0_1) if (expy < 0x3fb);
1653*25c28e83SPiotr Jasiukajtis	faddd	%f62,%f14,%f14			! (Y1_1) y += (double)itmp0;
1654*25c28e83SPiotr Jasiukajtis.cont10:
1655*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%i4,%i4		! (Y1_2) hx |= 0x3ff00000;
1656*25c28e83SPiotr Jasiukajtis	cmp	%l1,1086			! (Y0_1) if (expy >= 0x43e);
1657*25c28e83SPiotr Jasiukajtis	fand	%f8,MHI32,%f20			! (Y0_1) s_h = vis_fand(dtmp0, MHI32);
1658*25c28e83SPiotr Jasiukajtis
1659*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f26,%f8			! (Y1_1) dtmp0 = s_h * ux;
1660*25c28e83SPiotr Jasiukajtis	st	%i4,[%fp+tmp0_hi]		! (Y1_2) *(int*)&x = hx;
1661*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.update11			! (Y0_1) if (expy >= 0x43e);
1662*25c28e83SPiotr Jasiukajtis	faddd	%f60,%f6,%f60			! (Y1_0) y = y + yd;
1663*25c28e83SPiotr Jasiukajtis.cont11:
1664*25c28e83SPiotr Jasiukajtis	add	%i4,2048,%i4			! (Y1_2) hx += 0x800;
1665*25c28e83SPiotr Jasiukajtis	ld	[%fp+%o7],%o2			! (Y1_0) load yisint
1666*25c28e83SPiotr Jasiukajtis	fand	%f30,MHI32,%f6			! (Y0_1) s = vis_fand(yd, MHI32);
1667*25c28e83SPiotr Jasiukajtis
1668*25c28e83SPiotr Jasiukajtis	st	%i2,[%fp+tmp0_lo]		! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1];
1669*25c28e83SPiotr Jasiukajtis	and	%i4,-4096,%i4			! (Y1_2) hx &= 0xfffff000;
1670*25c28e83SPiotr Jasiukajtis	fmuld	%f52,%f52,%f26			! (Y1_1) y = s * s;
1671*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16			! (Y0_0) dtmp2 = dtmp0 + dtmp1;
1672*25c28e83SPiotr Jasiukajtis
1673*25c28e83SPiotr Jasiukajtis	st	%i4,[%fp+tmp1_hi]		! (Y1_2) *(int*)&ax = hx;
1674*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f36,%f62			! (Y0_1) dtmp0 = (s_h - m_h);
1675*25c28e83SPiotr Jasiukajtis
1676*25c28e83SPiotr Jasiukajtis	fsubd	%f58,%f8,%f8			! (Y1_1) s_l = u - dtmp0;
1677*25c28e83SPiotr Jasiukajtis	fmuld	KB5,%f60,%f58			! (Y1_0) dtmp0 = KB5 * y;
1678*25c28e83SPiotr Jasiukajtis
1679*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB3],KB3		! (Y1_0) load KB3;
1680*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f6,%f34			! (Y0_1) s = s_h * s;
1681*25c28e83SPiotr Jasiukajtis	fsubd	%f30,%f6,%f6			! (Y0_1) dtmp0 = (yd - s);
1682*25c28e83SPiotr Jasiukajtis
1683*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f56			! (Y0_0) u = dtmp2 + u;
1684*25c28e83SPiotr Jasiukajtis	nop
1685*25c28e83SPiotr Jasiukajtis        fmuld	KA5,%f26,%f36			! (Y1_1) dtmp8 = KA5 * y;
1686*25c28e83SPiotr Jasiukajtis
1687*25c28e83SPiotr Jasiukajtis	nop
1688*25c28e83SPiotr Jasiukajtis	add	%l2,513,%l2			! (Y0_0) ind += 513;
1689*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f62,%f62			! (Y0_1) y = y - dtmp0;
1690*25c28e83SPiotr Jasiukajtis	fmuld	KA1_HI,%f4,%f48			! (Y1_1) yd = KA1_HI * s_h;
1691*25c28e83SPiotr Jasiukajtis
1692*25c28e83SPiotr Jasiukajtis	sll	%l2,3,%o5			! (Y0_0) ind *= 8;
1693*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp2_hi],%f16		! (Y0_0) ld dtmp0;
1694*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f10,%f10			! (Y1_1) dtmp1 = s_h * s_l;
1695*25c28e83SPiotr Jasiukajtis	faddd	%f58,KB4,%f58			! (Y1_0) dtmp1 = dtmp0 + KB4;
1696*25c28e83SPiotr Jasiukajtis
1697*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_LO],KA1_LO		! (Y1_1) load KA1_LO;
1698*25c28e83SPiotr Jasiukajtis	and	%l0,MASK_0x7fffffff,%l2		! (Y1_2) hx &= 0x7fffffff;
1699*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f20,%f6			! (Y0_1) dtmp0 *= s_h;
1700*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f34,HTHRESH		! (Y0_1) s > HTHRESH
1701*25c28e83SPiotr Jasiukajtis
1702*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%o5],%f20		! (Y0_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind);
1703*25c28e83SPiotr Jasiukajtis	nop
1704*25c28e83SPiotr Jasiukajtis	nop
1705*25c28e83SPiotr Jasiukajtis	fpadd32	%f56,%f16,%f56			! (Y0_0) u = vis_fpadd32(u, dtmp0);
1706*25c28e83SPiotr Jasiukajtis
1707*25c28e83SPiotr Jasiukajtis	nop
1708*25c28e83SPiotr Jasiukajtis	cmp	%l0,MASK_0x000fffff		! (Y1_2) if (hx <= 0xfffff)
1709*25c28e83SPiotr Jasiukajtis	fmuld	%f30,%f62,%f30			! (Y0_1) dtmp1 = yd * y;
1710*25c28e83SPiotr Jasiukajtis	faddd	%f36,KA3,%f62			! (Y1_1) dtmp8 = dtmp8 + KA3;
1711*25c28e83SPiotr Jasiukajtis
1712*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f60,%f58			! (Y1_0) dtmp2 = dtmp1 * y;
1713*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+%o7]			! (Y1_2) yisint = 0;
1714*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.update12			! (Y1_2) if (hx <= 0xfffff)
1715*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f36			! (Y1_1)  m_h = y + yd;
1716*25c28e83SPiotr Jasiukajtis.cont12:
1717*25c28e83SPiotr Jasiukajtis	sra	%l3,20,%l3			! (Y0_2) exp = (exp >> 20);
1718*25c28e83SPiotr Jasiukajtis	sub	%o7,ind_buf,%o7			! stack buffer pointer update
1719*25c28e83SPiotr Jasiukajtis	fmuld	%f56,%f20,%f16			! (Y0_0) dtmp1 = u * dtmp1;
1720*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f34		! (Y0_1) s = HTHRESH
1721*25c28e83SPiotr Jasiukajtis
1722*25c28e83SPiotr Jasiukajtis	cmp	%l3,2047			! (Y0_2) if (exp >= 0x7ff)
1723*25c28e83SPiotr Jasiukajtis	st	%f16,[pz]			! (Y0_0) write into memory
1724*25c28e83SPiotr Jasiukajtis	fdivd	DONE,%f12,%f20			! (Y0_2) yd = DONE / ux;
1725*25c28e83SPiotr Jasiukajtis	fsubd	%f8,%f10,%f10			! (Y1_1) s_l -= dtmp1;
1726*25c28e83SPiotr Jasiukajtis
1727*25c28e83SPiotr Jasiukajtis	sra	%l4,20,%l0			! (Y0_2) itmp0 = (hx >> 20);
1728*25c28e83SPiotr Jasiukajtis	sub	%l3,2046,%o5			! (Y0_2) exp = exp - 2046;
1729*25c28e83SPiotr Jasiukajtis	st	%f17,[pz+4]			! (Y0_0) write into memory
1730*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f30,%f6			! (Y0_1) yd = dtmp0 + dtmp1;
1731*25c28e83SPiotr Jasiukajtis
1732*25c28e83SPiotr Jasiukajtis	add	%o5,%l0,%o5			! (Y0_2) exp += itmp0;
1733*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! py += stridey;
1734*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp0_hi],%f8		! (Y1_2) *(int*)&x = hx;
1735*25c28e83SPiotr Jasiukajtis	fsubd	%f36,%f14,%f30			! (Y1_1) dtmp2 = m_h - y;
1736*25c28e83SPiotr Jasiukajtis
1737*25c28e83SPiotr Jasiukajtis	sll	%o5,8,%l0			! (Y0_2) itmp0 = exp << 8;
1738*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp1_hi],%f14		! (Y1_2) *(int*)&ax = hx;
1739*25c28e83SPiotr Jasiukajtis	fmuld	KA1,%f22,%f22			! (Y1_1) dtmp0 = KA1 * yd;
1740*25c28e83SPiotr Jasiukajtis	faddd	%f58,KB3,%f58			! (Y1_0) dtmp3 = dtmp2 + KB3;
1741*25c28e83SPiotr Jasiukajtis
1742*25c28e83SPiotr Jasiukajtis	add	%o7,4,%o7			! stack buffer pointer update
1743*25c28e83SPiotr Jasiukajtis	st	%l0,[%fp+tmp3]			! (Y0_2) (double)itmp0;
1744*25c28e83SPiotr Jasiukajtis	fcmped	%fcc1,%f34,LTHRESH		! (Y0_1) s < LTHRESH
1745*25c28e83SPiotr Jasiukajtis
1746*25c28e83SPiotr Jasiukajtis	and	%o7,15,%o7			! stack buffer pointer update
1747*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp4],%l0			! (Y1_0) ind = (int)dtmp0;
1748*25c28e83SPiotr Jasiukajtis	fmuld	%f62,%f26,%f62			! (Y1_1) dtmp8 = dtmp8 * y;
1749*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,DZERO,%f6			! (Y0_1) yd = DZERO
1750*25c28e83SPiotr Jasiukajtis
1751*25c28e83SPiotr Jasiukajtis	nop
1752*25c28e83SPiotr Jasiukajtis	add	%o7,ind_buf,%o7			! stack buffer pointer update
1753*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB2],KB2		! (Y1_0) load KB2;
1754*25c28e83SPiotr Jasiukajtis	faddd	%f8,%f14,%f26			! (Y1_2) ux = x + ax;
1755*25c28e83SPiotr Jasiukajtis
1756*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f60,%f58			! (Y1_0) dtmp4 = dtmp3 * y;
1757*25c28e83SPiotr Jasiukajtis	nop
1758*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.update13			! (Y0_2) if (exp >= 0x7ff)
1759*25c28e83SPiotr Jasiukajtis	fsubd	%f30,%f48,%f48			! (Y1_1) dtmp2 -= yd;
1760*25c28e83SPiotr Jasiukajtis.cont13:
1761*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%l1			! (Y1_1) hy = *py;
1762*25c28e83SPiotr Jasiukajtis	nop
1763*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f10,%f10			! (Y1_1) s_l = dtmp0 * s_l;
1764*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,LTHRESH,%f34		! (Y0_1) s = LTHRESH
1765*25c28e83SPiotr Jasiukajtis
1766*25c28e83SPiotr Jasiukajtis	nop
1767*25c28e83SPiotr Jasiukajtis	nop
1768*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,DZERO,%f6			! (Y0_1) yd = DZERO
1769*25c28e83SPiotr Jasiukajtis
1770*25c28e83SPiotr Jasiukajtis	fand	%f12,MHI32,%f12			! (Y0_2) ux = vis_fand(ux, MHI32);
1771*25c28e83SPiotr Jasiukajtis	nop
1772*25c28e83SPiotr Jasiukajtis	nop
1773*25c28e83SPiotr Jasiukajtis	fmuld	KA1_LO,%f4,%f4			! (Y1_1) dtmp1 = KA1_LO * s_h;
1774*25c28e83SPiotr Jasiukajtis
1775*25c28e83SPiotr Jasiukajtis	nop
1776*25c28e83SPiotr Jasiukajtis	add	px,stridex,px			! px += stridex;
1777*25c28e83SPiotr Jasiukajtis	faddd	%f58,KB2,%f30			! (Y1_0) dtmp5 = dtmp4 + KB2;
1778*25c28e83SPiotr Jasiukajtis	fmuld	%f62,%f52,%f62			! (Y1_1) s = dtmp8 * s;
1779*25c28e83SPiotr Jasiukajtis
1780*25c28e83SPiotr Jasiukajtis	sra	%l0,8,%i2			! (Y1_0) ind >>= 8;
1781*25c28e83SPiotr Jasiukajtis	add	pz,stridez,pz			! pz += stridez;
1782*25c28e83SPiotr Jasiukajtis	ldd	[LOGTBL+%o0],%f52		! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8);
1783*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f10,%f22			! (Y1_1) dtmp2 -= s_l;
1784*25c28e83SPiotr Jasiukajtis
1785*25c28e83SPiotr Jasiukajtis	add	%i2,1021,%l3			! (Y1_0) eflag = (ind + 1021);
1786*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%o5			! (Y1_0) gflag = (1022 - ind);
1787*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB1],KB1		! (Y1_0) load KB1;
1788*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f6,%f58			! (Y0_1) dtmp0 = (s + yd);
1789*25c28e83SPiotr Jasiukajtis
1790*25c28e83SPiotr Jasiukajtis	sra	%l3,31,%l3			! (Y1_0) eflag = eflag >> 31;
1791*25c28e83SPiotr Jasiukajtis	add	%o5,1022,%o5			! (Y1_0) gflag = (1022 - ind);
1792*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_HI],KA1_HI		! (Y0_2) load KA1_HI;
1793*25c28e83SPiotr Jasiukajtis	fsubd	%f12,%f54,%f10			! (Y0_2) dtmp0 = (ux - ax);
1794*25c28e83SPiotr Jasiukajtis
1795*25c28e83SPiotr Jasiukajtis	sra	%o5,31,%o5			! (Y1_0) gflag = gflag >> 31;
1796*25c28e83SPiotr Jasiukajtis	and	%l3,54,%o0			! (Y1_0) itmp0 = 54 & eflag;
1797*25c28e83SPiotr Jasiukajtis	fmuld	%f30,%f60,%f48			! (Y1_0) dtmp6 = dtmp5 * y;
1798*25c28e83SPiotr Jasiukajtis	faddd	%f52,%f4,%f52			! (Y1_1) dtmp0 += dtmp1;
1799*25c28e83SPiotr Jasiukajtis
1800*25c28e83SPiotr Jasiukajtis	sra	%l4,8,%l4			! (Y0_2) i = (hx >> 8);
1801*25c28e83SPiotr Jasiukajtis	add	%i2,%o0,%i2			! (Y1_0) ind = ind + itmp0;
1802*25c28e83SPiotr Jasiukajtis	fsubd	%f62,%f22,%f4			! (Y1_1) y = s - dtmp2;
1803*25c28e83SPiotr Jasiukajtis
1804*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%f30			! (Y1_1) yd = *py;
1805*25c28e83SPiotr Jasiukajtis	and	%l4,4080,%l4			! (Y0_2) i = i & 0xff0;
1806*25c28e83SPiotr Jasiukajtis	and	%o5,52,%o0			! (Y1_0) itmp1 = 52 & gflag;
1807*25c28e83SPiotr Jasiukajtis	fdtoi	%f58,%f22			! (Y0_1) (int)dtmp0;
1808*25c28e83SPiotr Jasiukajtis
1809*25c28e83SPiotr Jasiukajtis	sub	%l3,%o5,%l3			! (Y1_0) ind = eflag - gflag;
1810*25c28e83SPiotr Jasiukajtis	sub	%i2,%o0,%i2			! (Y1_0) ind = ind - itmp1;
1811*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%f16			! (Y0_2) (double)itmp0;
1812*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f54,%f58			! (Y0_2) u = x - ax;
1813*25c28e83SPiotr Jasiukajtis
1814*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%i2			! (Y1_0) ind = yisint + ind;
1815*25c28e83SPiotr Jasiukajtis	and	%l0,255,%o5			! (Y1_0) i = ind & 0xff;
1816*25c28e83SPiotr Jasiukajtis	st	%f22,[%fp+tmp4]			! (Y0_1) ind = (int)dtmp0;
1817*25c28e83SPiotr Jasiukajtis	faddd	%f48,KB1,%f54			! (Y1_0) dtmp7 = dtmp6 + KB1;
1818*25c28e83SPiotr Jasiukajtis
1819*25c28e83SPiotr Jasiukajtis	sll	%i2,20,%o0			! (Y1_0) ind <<= 20;
1820*25c28e83SPiotr Jasiukajtis	nop
1821*25c28e83SPiotr Jasiukajtis	lda	[px]%asi,%l0			! (Y0_3) hx = ((unsigned*)px)[0];
1822*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f52,%f48			! (Y1_1) y += dtmp0;
1823*25c28e83SPiotr Jasiukajtis
1824*25c28e83SPiotr Jasiukajtis	and	%l1,MASK_0x7fffffff,%l1		! (Y1_1) hy &= 0x7fffffff;
1825*25c28e83SPiotr Jasiukajtis	nop
1826*25c28e83SPiotr Jasiukajtis	st	%o0,[%fp+tmp2_hi]		! (Y1_0) *(int*)&dtmp0 = ind;
1827*25c28e83SPiotr Jasiukajtis	fitod	%f22,%f4			! (Y0_1) u = (double)(int)dtmp0;
1828*25c28e83SPiotr Jasiukajtis
1829*25c28e83SPiotr Jasiukajtis	lda	[px+4]%asi,%i2			! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1];
1830*25c28e83SPiotr Jasiukajtis	nop
1831*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f20,%f52			! (Y0_2) s = u * yd;
1832*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f10,%f10			! (Y0_2) s_l = (x - dtmp0);
1833*25c28e83SPiotr Jasiukajtis
1834*25c28e83SPiotr Jasiukajtis	sll	%o5,4,%o5			! (Y1_0) i = i << 4;
1835*25c28e83SPiotr Jasiukajtis	ldd	[LOGTBL+%l4],%f62		! (Y0_2) y = *(double *)((char*)__mt_constlog2 + i);
1836*25c28e83SPiotr Jasiukajtis	fmuld	%f54,%f60,%f22			! (Y1_0) y = dtmp7 * y;
1837*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f54			! (Y0_2) (double)itmp0;
1838*25c28e83SPiotr Jasiukajtis
1839*25c28e83SPiotr Jasiukajtis	sra	%l1,20,%l1			! (Y1_1) expy = hy >> 20;
1840*25c28e83SPiotr Jasiukajtis	nop
1841*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%o5],%f56		! (Y1_0) u = *(double*)((char*)__mt_constexp2 + i);
1842*25c28e83SPiotr Jasiukajtis	faddd	%f48,%f36,%f32			! (Y1_1) dtmp0 = y + m_h;
1843*25c28e83SPiotr Jasiukajtis
1844*25c28e83SPiotr Jasiukajtis	add	%o5,8,%o5			! (Y1_0) i += 8;
1845*25c28e83SPiotr Jasiukajtis	add	%l4,8,%o0			! (Y0_2) i += 8;
1846*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f31			! (Y1_1) yd = *py;
1847*25c28e83SPiotr Jasiukajtis	fsubd	%f34,%f4,%f60			! (Y0_1) y = s - u;
1848*25c28e83SPiotr Jasiukajtis
1849*25c28e83SPiotr Jasiukajtis	cmp	%l1,959				! (Y1_1) if (expy < 0x3fb);
1850*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%l0,%l4		! (Y0_3) hx &= 0xfffff;
1851*25c28e83SPiotr Jasiukajtis	fand	%f52,MHI32,%f4			! (Y0_2) s_h = vis_fand(s, MHI32);
1852*25c28e83SPiotr Jasiukajtis
1853*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%o5],%f16		! (Y1_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8);
1854*25c28e83SPiotr Jasiukajtis	fmuld	%f56,%f22,%f34			! (Y1_0) dtmp1 = u * y;
1855*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.update14			! (Y1_1) if (expy < 0x3fb);
1856*25c28e83SPiotr Jasiukajtis	faddd	%f62,%f54,%f54			! (Y0_2) y += (double)itmp0;
1857*25c28e83SPiotr Jasiukajtis.cont14:
1858*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB5],KB5		! (Y0_1) load KB5;
1859*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%l4,%o5		! (Y0_3) hx |= 0x3ff00000;
1860*25c28e83SPiotr Jasiukajtis	cmp	%l1,1086			! (Y1_1) if (expy >= 0x43e);
1861*25c28e83SPiotr Jasiukajtis	fand	%f32,MHI32,%f22			! (Y1_1) s_h = vis_fand(dtmp0, MHI32);
1862*25c28e83SPiotr Jasiukajtis
1863*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f12,%f32			! (Y0_2) dtmp0 = s_h * ux;
1864*25c28e83SPiotr Jasiukajtis	st	%o5,[%fp+tmp0_hi]		! (Y0_3) *(int*)&x = hx;
1865*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.update15			! (Y1_1) if (expy >= 0x43e);
1866*25c28e83SPiotr Jasiukajtis	faddd	%f60,%f6,%f60			! (Y0_1) y = y + yd;
1867*25c28e83SPiotr Jasiukajtis.cont15:
1868*25c28e83SPiotr Jasiukajtis	add	%o5,2048,%o5			! (Y0_3) hx += 0x800;
1869*25c28e83SPiotr Jasiukajtis	nop
1870*25c28e83SPiotr Jasiukajtis	ld	[%fp+%o7],%o2			! (Y0_1) load yisint
1871*25c28e83SPiotr Jasiukajtis	fand	%f30,MHI32,%f6			! (Y1_1) s = vis_fand(yd, MHI32);
1872*25c28e83SPiotr Jasiukajtis
1873*25c28e83SPiotr Jasiukajtis	and	%o5,-4096,%l4			! (Y0_3) hx &= 0xfffff000;
1874*25c28e83SPiotr Jasiukajtis	st	%i2,[%fp+tmp0_lo]		! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1];
1875*25c28e83SPiotr Jasiukajtis	fmuld	%f52,%f52,%f12			! (Y0_2) y = s * s;
1876*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16			! (Y1_0) dtmp2 = dtmp0 + dtmp1;
1877*25c28e83SPiotr Jasiukajtis
1878*25c28e83SPiotr Jasiukajtis	nop
1879*25c28e83SPiotr Jasiukajtis	nop
1880*25c28e83SPiotr Jasiukajtis	st	%l4,[%fp+tmp1_hi]		! (Y0_3) *(int*)&ax = hx;
1881*25c28e83SPiotr Jasiukajtis	fsubd	%f22,%f36,%f62			! (Y1_1) dtmp0 = (s_h - m_h);
1882*25c28e83SPiotr Jasiukajtis
1883*25c28e83SPiotr Jasiukajtis	fsubd	%f58,%f32,%f32			! (Y0_2) s_l = u - dtmp0;
1884*25c28e83SPiotr Jasiukajtis	nop
1885*25c28e83SPiotr Jasiukajtis	nop
1886*25c28e83SPiotr Jasiukajtis	fmuld	KB5,%f60,%f58			! (Y0_1) dtmp0 = KB5 * y;
1887*25c28e83SPiotr Jasiukajtis
1888*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB3],KB3		! (Y0_1) load KB3;
1889*25c28e83SPiotr Jasiukajtis	nop
1890*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f6,%f34			! (Y1_1) s = s_h * s;
1891*25c28e83SPiotr Jasiukajtis	fsubd	%f30,%f6,%f6			! (Y1_1) dtmp0 = (yd - s);
1892*25c28e83SPiotr Jasiukajtis
1893*25c28e83SPiotr Jasiukajtis	fmuld	KA5,%f12,%f36			! (Y0_2) dtmp8 = KA5 * y;
1894*25c28e83SPiotr Jasiukajtis	nop
1895*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f56			! (Y1_0) u = dtmp2 + u;
1896*25c28e83SPiotr Jasiukajtis
1897*25c28e83SPiotr Jasiukajtis	add	%l3,513,%l3			! (Y1_0) ind += 1;
1898*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f62,%f62			! (Y1_1) y = y - dtmp0;
1899*25c28e83SPiotr Jasiukajtis	fmuld	KA1_HI,%f4,%f48			! (Y0_2) yd = KA1_HI * s_h;
1900*25c28e83SPiotr Jasiukajtis
1901*25c28e83SPiotr Jasiukajtis	sll	%l3,3,%o5			! (Y1_0) ind *= 8;
1902*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp2_hi],%f16		! (Y1_0) *(int*)&dtmp0 = ind;
1903*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f10,%f10			! (Y0_2) dtmp1 = s_h * s_l;
1904*25c28e83SPiotr Jasiukajtis	faddd	%f58,KB4,%f58			! (Y0_1) dtmp1 = dtmp0 + KB4;
1905*25c28e83SPiotr Jasiukajtis
1906*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_LO],KA1_LO		! (y0_2) load KA1_LO;
1907*25c28e83SPiotr Jasiukajtis	and	%l0,MASK_0x7fffffff,%l3		! (Y0_3) hx &= 0x7fffffff;
1908*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f22,%f6			! (Y1_1) dtmp0 *= s_h;
1909*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f34,HTHRESH		! (Y1_1) s > HTHRESH;
1910*25c28e83SPiotr Jasiukajtis
1911*25c28e83SPiotr Jasiukajtis	nop
1912*25c28e83SPiotr Jasiukajtis	subcc	counter,2,counter		! update cycle counter
1913*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%o5],%f22		! (Y1_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind);
1914*25c28e83SPiotr Jasiukajtis	fpadd32	%f56,%f16,%f56			! (Y1_0) u = vis_fpadd32(u, dtmp0);
1915*25c28e83SPiotr Jasiukajtis
1916*25c28e83SPiotr Jasiukajtis	fmuld	%f30,%f62,%f30			! (Y1_1) dtmp1 = yd * y;
1917*25c28e83SPiotr Jasiukajtis	nop
1918*25c28e83SPiotr Jasiukajtis	nop
1919*25c28e83SPiotr Jasiukajtis	faddd	%f36,KA3,%f62			! (Y0_2) dtmp8 = dtmp8 + KA3;
1920*25c28e83SPiotr Jasiukajtis
1921*25c28e83SPiotr Jasiukajtis	nop
1922*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+%o7]			! (Y0_3) yisint = 0;
1923*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f60,%f58			! (Y0_1) dtmp2 = dtmp1 * y;
1924*25c28e83SPiotr Jasiukajtis	faddd	%f54,%f48,%f36			! (Y0_2) m_h = y + yd;
1925*25c28e83SPiotr Jasiukajtis
1926*25c28e83SPiotr Jasiukajtis	fmuld	%f56,%f22,%f16			! (Y1_0) dtmp1 = u * dtmp1;
1927*25c28e83SPiotr Jasiukajtis	nop
1928*25c28e83SPiotr Jasiukajtis	st	%f16,[pz]			! (Y1_0) write into memory
1929*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f34		! (Y1_1) s = HTHRESH;
1930*25c28e83SPiotr Jasiukajtis
1931*25c28e83SPiotr Jasiukajtis	fdivd	DONE,%f26,%f22			! (Y1_2) yd = DONE / ux;
1932*25c28e83SPiotr Jasiukajtis	st	%f17,[pz+4]			! (Y1_0) write into memory
1933*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.main_loop
1934*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f10,%f10			! (Y0_2) s_l -= dtmp1;
1935*25c28e83SPiotr Jasiukajtis
1936*25c28e83SPiotr Jasiukajtis.tail:
1937*25c28e83SPiotr Jasiukajtis	addcc	counter,1,counter
1938*25c28e83SPiotr Jasiukajtis	bneg,pn	%icc,.end_loop
1939*25c28e83SPiotr Jasiukajtis
1940*25c28e83SPiotr Jasiukajtis	faddd	%f58,KB3,%f58			! (Y0_0) dtmp3 = dtmp2 + KB3;
1941*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB2],KB2		! (Y0_0) load KB2;
1942*25c28e83SPiotr Jasiukajtis
1943*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp4],%i2			! (Y0_0) ind = (int)dtmp0;
1944*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f60,%f58			! (Y0_0) dtmp4 = dtmp3 * y;
1945*25c28e83SPiotr Jasiukajtis	faddd	%f58,KB2,%f30			! (Y0_0) dtmp5 = dtmp4 + KB2;
1946*25c28e83SPiotr Jasiukajtis
1947*25c28e83SPiotr Jasiukajtis	add	pz,stridez,pz			! pz += stridez;
1948*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB1],KB1		! (Y0_0) load KB1;
1949*25c28e83SPiotr Jasiukajtis	sra	%i2,8,%l0			! (Y0_0) ind >>= 8;
1950*25c28e83SPiotr Jasiukajtis
1951*25c28e83SPiotr Jasiukajtis	add	%l0,1021,%l2			! (Y0_0) eflag = (ind + 1021);
1952*25c28e83SPiotr Jasiukajtis	sub	%g0,%l0,%o5			! (Y0_0) gflag = (1022 - ind);
1953*25c28e83SPiotr Jasiukajtis	fmuld	%f30,%f60,%f48			! (Y0_0) dtmp6 = dtmp5 * y;
1954*25c28e83SPiotr Jasiukajtis
1955*25c28e83SPiotr Jasiukajtis	sra	%l2,31,%l2			! (Y0_0) eflag = eflag >> 31;
1956*25c28e83SPiotr Jasiukajtis	add	%o5,1022,%o5			! (Y0_0) gflag = (1022 - ind);
1957*25c28e83SPiotr Jasiukajtis
1958*25c28e83SPiotr Jasiukajtis	sra	%o5,31,%o5			! (Y0_0) gflag = gflag >> 31;
1959*25c28e83SPiotr Jasiukajtis	and	%l2,54,%o0			! (Y0_0) itmp0 = 54 & eflag;
1960*25c28e83SPiotr Jasiukajtis
1961*25c28e83SPiotr Jasiukajtis	sub	%l2,%o5,%l2			! (Y0_0) ind = eflag - gflag;
1962*25c28e83SPiotr Jasiukajtis	add	%l0,%o0,%l0			! (Y0_0) ind = ind + itmp0;
1963*25c28e83SPiotr Jasiukajtis
1964*25c28e83SPiotr Jasiukajtis	and	%o5,52,%o5			! (Y0_0) itmp1 = 52 & gflag;
1965*25c28e83SPiotr Jasiukajtis	faddd	%f48,KB1,%f14			! (Y0_0) dtmp7 = dtmp6 + KB1;
1966*25c28e83SPiotr Jasiukajtis
1967*25c28e83SPiotr Jasiukajtis	sub	%l0,%o5,%l0			! (Y0_0) ind = ind - itmp1;
1968*25c28e83SPiotr Jasiukajtis	and	%i2,255,%i4			! (Y0_0) i = ind & 0xff;
1969*25c28e83SPiotr Jasiukajtis
1970*25c28e83SPiotr Jasiukajtis	sll	%i4,4,%o5			! (Y0_0) i = i << 4;
1971*25c28e83SPiotr Jasiukajtis
1972*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%o5],%f56		! (Y0_0) u = *(double*)((char*)__mt_constexp2 + i);
1973*25c28e83SPiotr Jasiukajtis	add	%o2,%l0,%l0			! (Y0_0) ind = yisint + ind;
1974*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f60,%f20			! (Y0_0) y = dtmp7 * y;
1975*25c28e83SPiotr Jasiukajtis
1976*25c28e83SPiotr Jasiukajtis	sll	%l0,20,%i2			! (Y0_0) ind <<= 20;
1977*25c28e83SPiotr Jasiukajtis
1978*25c28e83SPiotr Jasiukajtis	add	%o5,8,%o5			! (Y0_0) i += 8;
1979*25c28e83SPiotr Jasiukajtis	st	%i2,[%fp+tmp2_hi]		! (Y0_0) *(int*)&dtmp0 = ind;
1980*25c28e83SPiotr Jasiukajtis
1981*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%o5],%f16		! (Y0_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8);
1982*25c28e83SPiotr Jasiukajtis	fmuld	%f56,%f20,%f34			! (Y0_0) dtmp1 = u * y;
1983*25c28e83SPiotr Jasiukajtis
1984*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16			! (Y0_0) dtmp2 = dtmp0 + dtmp1;
1985*25c28e83SPiotr Jasiukajtis
1986*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f56			! (Y0_0) u = dtmp2 + u;
1987*25c28e83SPiotr Jasiukajtis	add	%l2,513,%l2			! (Y0_0) ind += 513;
1988*25c28e83SPiotr Jasiukajtis
1989*25c28e83SPiotr Jasiukajtis	sll	%l2,3,%o5			! (Y0_0) ind *= 8;
1990*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp2_hi],%f16		! (Y0_0) ld dtmp0;
1991*25c28e83SPiotr Jasiukajtis
1992*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%o5],%f20		! (Y0_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind);
1993*25c28e83SPiotr Jasiukajtis	fpadd32	%f56,%f16,%f56			! (Y0_0) u = vis_fpadd32(u, dtmp0);
1994*25c28e83SPiotr Jasiukajtis
1995*25c28e83SPiotr Jasiukajtis	fmuld	%f56,%f20,%f16			! (Y0_0) dtmp1 = u * dtmp1;
1996*25c28e83SPiotr Jasiukajtis	st	%f16,[pz]			! (Y0_0) write into memory
1997*25c28e83SPiotr Jasiukajtis	st	%f17,[pz+4]			! (Y0_0) write into memory
1998*25c28e83SPiotr Jasiukajtis
1999*25c28e83SPiotr Jasiukajtis.end_loop:
2000*25c28e83SPiotr Jasiukajtis	ba	.begin
2001*25c28e83SPiotr Jasiukajtis	nop
2002*25c28e83SPiotr Jasiukajtis.end:
2003*25c28e83SPiotr Jasiukajtis	ret
2004*25c28e83SPiotr Jasiukajtis	restore	%g0,0,%o0
2005*25c28e83SPiotr Jasiukajtis
2006*25c28e83SPiotr Jasiukajtis	.align	16
2007*25c28e83SPiotr Jasiukajtis.update0:
2008*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (x >= 0);
2009*25c28e83SPiotr Jasiukajtis	fzero	%f30
2010*25c28e83SPiotr Jasiukajtis
2011*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%l0			! ld ly
2012*25c28e83SPiotr Jasiukajtis	bge,pt	%icc,.pos0			! if (x >= 0);
2013*25c28e83SPiotr Jasiukajtis	or	%g0,%g0,%o5			! yisint = 0;
2014*25c28e83SPiotr Jasiukajtis
2015*25c28e83SPiotr Jasiukajtis	cmp	%o0,1076			! if (expy >= 0x434);
2016*25c28e83SPiotr Jasiukajtis	bge	.neg0				! if (expy >= 0x434);
2017*25c28e83SPiotr Jasiukajtis	or	%g0,2,%o5			! yisint = 2;
2018*25c28e83SPiotr Jasiukajtis
2019*25c28e83SPiotr Jasiukajtis	cmp	%o0,1023			! if (expy < 0x3ff);
2020*25c28e83SPiotr Jasiukajtis	bl	.neg0				! if (expy < 0x3ff);
2021*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 0;
2022*25c28e83SPiotr Jasiukajtis
2023*25c28e83SPiotr Jasiukajtis	cmp	%o0,1043			! if (expy <= (20 + 0x3ff));
2024*25c28e83SPiotr Jasiukajtis	ble	.small0				! if (expy <= (20 + 0x3ff));
2025*25c28e83SPiotr Jasiukajtis	sub	%o0,1023,%o0			! expy - 0x3ff;
2026*25c28e83SPiotr Jasiukajtis
2027*25c28e83SPiotr Jasiukajtis	sub	%g0,%o0,%o0
2028*25c28e83SPiotr Jasiukajtis	add	%o0,52,%o0			! sh = (52 - (expy - 0x3ff);
2029*25c28e83SPiotr Jasiukajtis	srl	%l0,%o0,%i4			! i0 = (ly >> sh);
2030*25c28e83SPiotr Jasiukajtis
2031*25c28e83SPiotr Jasiukajtis	sll	%i4,%o0,%i4			! (i0 << sh);
2032*25c28e83SPiotr Jasiukajtis
2033*25c28e83SPiotr Jasiukajtis	srl	%l0,%o0,%o0			! i0 = (ly >> sh);
2034*25c28e83SPiotr Jasiukajtis	cmp	%i4,%l0				! if ((i0 << sh) == ly);
2035*25c28e83SPiotr Jasiukajtis
2036*25c28e83SPiotr Jasiukajtis	and	%o0,1,%o0			! i0 &= 1;
2037*25c28e83SPiotr Jasiukajtis
2038*25c28e83SPiotr Jasiukajtis	sub	%g0,%o0,%o0
2039*25c28e83SPiotr Jasiukajtis	add	%o0,2,%o0			! i0 = 2 - i0;
2040*25c28e83SPiotr Jasiukajtis
2041*25c28e83SPiotr Jasiukajtis	move	%icc,%o0,%o5			! yisint = i0;
2042*25c28e83SPiotr Jasiukajtis
2043*25c28e83SPiotr Jasiukajtis	ba	.neg0
2044*25c28e83SPiotr Jasiukajtis	nop
2045*25c28e83SPiotr Jasiukajtis.small0:
2046*25c28e83SPiotr Jasiukajtis	sub	%g0,%o0,%o0
2047*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (ly != 0);
2048*25c28e83SPiotr Jasiukajtis
2049*25c28e83SPiotr Jasiukajtis	add	%o0,20,%o0			! sh = (20 - (expy - 0x3ff);
2050*25c28e83SPiotr Jasiukajtis	bne	.neg0				! if (ly != 0);
2051*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 0;
2052*25c28e83SPiotr Jasiukajtis
2053*25c28e83SPiotr Jasiukajtis	srl	%l1,%o0,%i4			! i0 = (hy >> sh);
2054*25c28e83SPiotr Jasiukajtis
2055*25c28e83SPiotr Jasiukajtis	sll	%i4,%o0,%i4			! (i0 << sh);
2056*25c28e83SPiotr Jasiukajtis
2057*25c28e83SPiotr Jasiukajtis	srl	%l1,%o0,%o0			! i0 = (hy >> sh);
2058*25c28e83SPiotr Jasiukajtis	cmp	%i4,%l1				! if ((i0 << sh) == hy);
2059*25c28e83SPiotr Jasiukajtis
2060*25c28e83SPiotr Jasiukajtis	and	%o0,1,%o0			! i0 &= 1;
2061*25c28e83SPiotr Jasiukajtis
2062*25c28e83SPiotr Jasiukajtis	sub	%g0,%o0,%o0
2063*25c28e83SPiotr Jasiukajtis	add	%o0,2,%o0			! i0 = 2 - i0;
2064*25c28e83SPiotr Jasiukajtis
2065*25c28e83SPiotr Jasiukajtis	move	%icc,%o0,%o5			! yisint = i0;
2066*25c28e83SPiotr Jasiukajtis.neg0:
2067*25c28e83SPiotr Jasiukajtis	orcc	%l3,%i2,%g0			! if (x != 0);
2068*25c28e83SPiotr Jasiukajtis
2069*25c28e83SPiotr Jasiukajtis	sra	%o2,31,%i4			! sy = (*((unsigned*)py)[0]) >> 31;
2070*25c28e83SPiotr Jasiukajtis	bne,pt	%icc,3f				! if (x != 0);
2071*25c28e83SPiotr Jasiukajtis	nop
2072*25c28e83SPiotr Jasiukajtis
2073*25c28e83SPiotr Jasiukajtis	cmp	%i4,%g0				! if (sy == 0);
2074*25c28e83SPiotr Jasiukajtis	be	1f				! if (sy == 0);
2075*25c28e83SPiotr Jasiukajtis	and	%o5,1,%i4			! yisint &= 1;
2076*25c28e83SPiotr Jasiukajtis
2077*25c28e83SPiotr Jasiukajtis	fdivd	DONE,%f30,%f30			! y0 = DONE / y0;
2078*25c28e83SPiotr Jasiukajtis1:
2079*25c28e83SPiotr Jasiukajtis	cmp	%i4,%g0				! if ((yisint & 1) == 0);
2080*25c28e83SPiotr Jasiukajtis	be	2f				! if ((yisint & 1) == 0);
2081*25c28e83SPiotr Jasiukajtis	nop
2082*25c28e83SPiotr Jasiukajtis
2083*25c28e83SPiotr Jasiukajtis	fnegd	%f30,%f30			! y0 = -y0;
2084*25c28e83SPiotr Jasiukajtis2:
2085*25c28e83SPiotr Jasiukajtis	st	%f30,[pz]
2086*25c28e83SPiotr Jasiukajtis	ba	.update_point
2087*25c28e83SPiotr Jasiukajtis	st	%f31,[pz+4]
2088*25c28e83SPiotr Jasiukajtis3:
2089*25c28e83SPiotr Jasiukajtis	cmp	%o5,%g0				! if (yisint != 0);
2090*25c28e83SPiotr Jasiukajtis	bne	.pos0				! if (yisint != 0);
2091*25c28e83SPiotr Jasiukajtis	nop
2092*25c28e83SPiotr Jasiukajtis
2093*25c28e83SPiotr Jasiukajtis	fdivd	DZERO,DZERO,%f30		! y0 = DZERO / DZERO;
2094*25c28e83SPiotr Jasiukajtis	st	%f30,[pz]
2095*25c28e83SPiotr Jasiukajtis	ba	.update_point
2096*25c28e83SPiotr Jasiukajtis	st	%f31,[pz+4]
2097*25c28e83SPiotr Jasiukajtis.pos0:
2098*25c28e83SPiotr Jasiukajtis	orcc	%l3,%i2,%g0			! if (x != 0);
2099*25c28e83SPiotr Jasiukajtis
2100*25c28e83SPiotr Jasiukajtis	sra	%o2,31,%i4			! sy = (*((unsigned*)py)[0]) >> 31;
2101*25c28e83SPiotr Jasiukajtis	bne,pt	%icc,.nzero0			! if (x != 0);
2102*25c28e83SPiotr Jasiukajtis	nop
2103*25c28e83SPiotr Jasiukajtis
2104*25c28e83SPiotr Jasiukajtis	cmp	%i4,%g0				! if (sy == 0);
2105*25c28e83SPiotr Jasiukajtis	be	1f				! if (sy == 0);
2106*25c28e83SPiotr Jasiukajtis	nop
2107*25c28e83SPiotr Jasiukajtis
2108*25c28e83SPiotr Jasiukajtis	fdivd	DONE,%f30,%f30			! y0 = DONE / y0;
2109*25c28e83SPiotr Jasiukajtis1:
2110*25c28e83SPiotr Jasiukajtis	st	%f30,[pz]
2111*25c28e83SPiotr Jasiukajtis	ba	.update_point
2112*25c28e83SPiotr Jasiukajtis	st	%f31,[pz+4]
2113*25c28e83SPiotr Jasiukajtis.nzero0:
2114*25c28e83SPiotr Jasiukajtis	sll	%o5,11,%o5
2115*25c28e83SPiotr Jasiukajtis	cmp	%l3,MASK_0x000fffff		! if (exp > 0xfffff);
2116*25c28e83SPiotr Jasiukajtis
2117*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.cont0			! if (exp > 0xfffff);
2118*25c28e83SPiotr Jasiukajtis	st	%o5,[%fp+%o7]
2119*25c28e83SPiotr Jasiukajtis
2120*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp_mant],%f54
2121*25c28e83SPiotr Jasiukajtis
2122*25c28e83SPiotr Jasiukajtis	or	%g0,1074,%o5
2123*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! y0 = vis_fand(x, MMANT);
2124*25c28e83SPiotr Jasiukajtis
2125*25c28e83SPiotr Jasiukajtis	sll	%o5,20,%o5
2126*25c28e83SPiotr Jasiukajtis	fxtod	%f32,%f32			! ax = (double) ((long long *) & y0)[0];
2127*25c28e83SPiotr Jasiukajtis
2128*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp0_hi]		! exp = ((unsigned int*) & ax)[0];
2129*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! x = vis_fand(ax, MMANT);
2130*25c28e83SPiotr Jasiukajtis
2131*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0_hi],%i2		! exp = ((unsigned int*) & ax)[0];
2132*25c28e83SPiotr Jasiukajtis	for	%f32,DONE,%f32			! x = vis_for(x, DONE);
2133*25c28e83SPiotr Jasiukajtis
2134*25c28e83SPiotr Jasiukajtis	sub	%i2,%o5,%l3			! exp -= (1023 + 51) << 20;
2135*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%i2,%l4		! hx = exp & 0xfffff;
2136*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%l4,%l4		! hx |= 0x3ff00000;
2137*25c28e83SPiotr Jasiukajtis	add	%l4,2048,%l4			! hx += 0x800;
2138*25c28e83SPiotr Jasiukajtis	and	%l4,-4096,%l4			! hx &= 0xfffff000;
2139*25c28e83SPiotr Jasiukajtis
2140*25c28e83SPiotr Jasiukajtis	ba	.cont0
2141*25c28e83SPiotr Jasiukajtis	st	%l4,[%fp+tmp1_hi]		! *(int*)&ax = hx;
2142*25c28e83SPiotr Jasiukajtis
2143*25c28e83SPiotr Jasiukajtis	.align	16
2144*25c28e83SPiotr Jasiukajtis.update1:
2145*25c28e83SPiotr Jasiukajtis	cmp	counter,0
2146*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont1
2147*25c28e83SPiotr Jasiukajtis	add	py,stridey,%o5
2148*25c28e83SPiotr Jasiukajtis
2149*25c28e83SPiotr Jasiukajtis	stx	px,[%fp+tmp_px]
2150*25c28e83SPiotr Jasiukajtis
2151*25c28e83SPiotr Jasiukajtis	orcc	%l2,%i2,%g0			! if (x == 0);
2152*25c28e83SPiotr Jasiukajtis	bne,pt	%icc,.nzero1			! if (x == 0);
2153*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_py]
2154*25c28e83SPiotr Jasiukajtis.u1:
2155*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2156*25c28e83SPiotr Jasiukajtis	ba	.cont1
2157*25c28e83SPiotr Jasiukajtis	or	%g0,0,counter
2158*25c28e83SPiotr Jasiukajtis.nzero1:
2159*25c28e83SPiotr Jasiukajtis	lda	[%o5]%asi,%l1			! ld hy;
2160*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (x >= 0);
2161*25c28e83SPiotr Jasiukajtis
2162*25c28e83SPiotr Jasiukajtis	lda	[%o5+4]%asi,%l0			! ld ly
2163*25c28e83SPiotr Jasiukajtis	bge,pt	%icc,.pos1			! if (x >= 0);
2164*25c28e83SPiotr Jasiukajtis	or	%g0,%g0,%o5			! yisint = 0;
2165*25c28e83SPiotr Jasiukajtis
2166*25c28e83SPiotr Jasiukajtis	and	%l1,MASK_0x7fffffff,%i2		! hy &= 0x7fffffff;
2167*25c28e83SPiotr Jasiukajtis
2168*25c28e83SPiotr Jasiukajtis	sra	%i2,20,%i2			! expy = hy >> 20;
2169*25c28e83SPiotr Jasiukajtis
2170*25c28e83SPiotr Jasiukajtis	cmp	%i2,1076			! if (expy >= 0x434);
2171*25c28e83SPiotr Jasiukajtis	bge	.neg1				! if (expy >= 0x434);
2172*25c28e83SPiotr Jasiukajtis	or	%g0,2,%o5			! yisint = 2;
2173*25c28e83SPiotr Jasiukajtis
2174*25c28e83SPiotr Jasiukajtis	cmp	%i2,1023			! if (expy < 0x3ff);
2175*25c28e83SPiotr Jasiukajtis	bl	.neg1				! if (expy < 0x3ff);
2176*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 0;
2177*25c28e83SPiotr Jasiukajtis
2178*25c28e83SPiotr Jasiukajtis	cmp	%i2,1043			! if (expy <= (20 + 0x3ff));
2179*25c28e83SPiotr Jasiukajtis	ble	.small1				! if (expy <= (20 + 0x3ff));
2180*25c28e83SPiotr Jasiukajtis	sub	%i2,1023,%i2			! expy - 0x3ff;
2181*25c28e83SPiotr Jasiukajtis
2182*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2183*25c28e83SPiotr Jasiukajtis	add	%i2,52,%i2			! sh = (52 - (expy - 0x3ff);
2184*25c28e83SPiotr Jasiukajtis	srl	%l0,%i2,%l1			! i0 = (ly >> sh);
2185*25c28e83SPiotr Jasiukajtis
2186*25c28e83SPiotr Jasiukajtis	sll	%l1,%i2,%l1			! (i0 << sh);
2187*25c28e83SPiotr Jasiukajtis
2188*25c28e83SPiotr Jasiukajtis	srl	%l0,%i2,%i2			! i0 = (ly >> sh);
2189*25c28e83SPiotr Jasiukajtis	cmp	%l1,%l0				! if ((i0 << sh) == ly);
2190*25c28e83SPiotr Jasiukajtis
2191*25c28e83SPiotr Jasiukajtis	and	%i2,1,%i2			! i0 &= 1;
2192*25c28e83SPiotr Jasiukajtis
2193*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2194*25c28e83SPiotr Jasiukajtis	add	%i2,2,%i2			! i0 = 2 - i0;
2195*25c28e83SPiotr Jasiukajtis
2196*25c28e83SPiotr Jasiukajtis	move	%icc,%i2,%o5			! yisint = i0;
2197*25c28e83SPiotr Jasiukajtis
2198*25c28e83SPiotr Jasiukajtis	ba	.neg1
2199*25c28e83SPiotr Jasiukajtis	nop
2200*25c28e83SPiotr Jasiukajtis.small1:
2201*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2202*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (ly != 0);
2203*25c28e83SPiotr Jasiukajtis
2204*25c28e83SPiotr Jasiukajtis	add	%i2,20,%i2			! sh = (20 - (expy - 0x3ff);
2205*25c28e83SPiotr Jasiukajtis	bne	.neg1				! if (ly != 0);
2206*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 0;
2207*25c28e83SPiotr Jasiukajtis
2208*25c28e83SPiotr Jasiukajtis	srl	%l1,%i2,%l0			! i0 = (hy >> sh);
2209*25c28e83SPiotr Jasiukajtis
2210*25c28e83SPiotr Jasiukajtis	sll	%l0,%i2,%l0			! (i0 << sh);
2211*25c28e83SPiotr Jasiukajtis
2212*25c28e83SPiotr Jasiukajtis	srl	%l1,%i2,%i2			! i0 = (hy >> sh);
2213*25c28e83SPiotr Jasiukajtis	cmp	%l0,%l1				! if ((i0 << sh) == hy);
2214*25c28e83SPiotr Jasiukajtis
2215*25c28e83SPiotr Jasiukajtis	and	%i2,1,%i2			! i0 &= 1;
2216*25c28e83SPiotr Jasiukajtis
2217*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2218*25c28e83SPiotr Jasiukajtis	add	%i2,2,%i2			! i0 = 2 - i0;
2219*25c28e83SPiotr Jasiukajtis
2220*25c28e83SPiotr Jasiukajtis	move	%icc,%i2,%o5			! yisint = i0;
2221*25c28e83SPiotr Jasiukajtis.neg1:
2222*25c28e83SPiotr Jasiukajtis	cmp	%o5,%g0
2223*25c28e83SPiotr Jasiukajtis	be	.u1
2224*25c28e83SPiotr Jasiukajtis	nop
2225*25c28e83SPiotr Jasiukajtis.pos1:
2226*25c28e83SPiotr Jasiukajtis	sll	%o5,11,%o5
2227*25c28e83SPiotr Jasiukajtis	cmp	%l2,MASK_0x000fffff		! if (exp > 0xfffff);
2228*25c28e83SPiotr Jasiukajtis
2229*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.cont1			! if (exp > 0xfffff);
2230*25c28e83SPiotr Jasiukajtis	st	%o5,[%fp+%o7]
2231*25c28e83SPiotr Jasiukajtis
2232*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp5];
2233*25c28e83SPiotr Jasiukajtis	std	%f54,[%fp+tmp6];
2234*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp0_hi],%f32
2235*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp_mant],%f54
2236*25c28e83SPiotr Jasiukajtis
2237*25c28e83SPiotr Jasiukajtis	or	%g0,1074,%o5
2238*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! y0 = vis_fand(x, MMANT);
2239*25c28e83SPiotr Jasiukajtis
2240*25c28e83SPiotr Jasiukajtis	sll	%o5,20,%o5
2241*25c28e83SPiotr Jasiukajtis	fxtod	%f32,%f32			! ax = (double) ((long long *) & y0)[0];
2242*25c28e83SPiotr Jasiukajtis
2243*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp0_hi]		! exp = ((unsigned int*) & ax)[0];
2244*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! x = vis_fand(ax, MMANT);
2245*25c28e83SPiotr Jasiukajtis
2246*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0_hi],%i2		! exp = ((unsigned int*) & ax)[0];
2247*25c28e83SPiotr Jasiukajtis	for	%f32,DONE,%f32			! x = vis_for(x, DONE);
2248*25c28e83SPiotr Jasiukajtis
2249*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp0_hi];
2250*25c28e83SPiotr Jasiukajtis	sub	%i2,%o5,%l2			! exp -= (1023 + 51) << 20;
2251*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%i2,%i4		! hx = exp & 0xfffff;
2252*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp5],%f32
2253*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%i4,%i4		! hx |= 0x3ff00000;
2254*25c28e83SPiotr Jasiukajtis	add	%i4,2048,%i4			! hx += 0x800;
2255*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp6],%f54
2256*25c28e83SPiotr Jasiukajtis	and	%i4,-4096,%i4			! hx &= 0xfffff000;
2257*25c28e83SPiotr Jasiukajtis
2258*25c28e83SPiotr Jasiukajtis	ba	.cont1
2259*25c28e83SPiotr Jasiukajtis	st	%i4,[%fp+tmp1_hi]		! *(int*)&ax = hx;
2260*25c28e83SPiotr Jasiukajtis
2261*25c28e83SPiotr Jasiukajtis	.align	16
2262*25c28e83SPiotr Jasiukajtis.update2:
2263*25c28e83SPiotr Jasiukajtis	cmp	counter,1
2264*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont2
2265*25c28e83SPiotr Jasiukajtis	add	py,stridey,%o5
2266*25c28e83SPiotr Jasiukajtis
2267*25c28e83SPiotr Jasiukajtis	add	%o5,stridey,%o5
2268*25c28e83SPiotr Jasiukajtis	stx	px,[%fp+tmp_px]
2269*25c28e83SPiotr Jasiukajtis
2270*25c28e83SPiotr Jasiukajtis	orcc	%l3,%i2,%g0			! if (x == 0);
2271*25c28e83SPiotr Jasiukajtis	bne,pt	%icc,.nzero2			! if (x == 0);
2272*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_py]
2273*25c28e83SPiotr Jasiukajtis.u2:
2274*25c28e83SPiotr Jasiukajtis	sub	counter,1,counter
2275*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2276*25c28e83SPiotr Jasiukajtis	ba	.cont2
2277*25c28e83SPiotr Jasiukajtis	or	%g0,1,counter
2278*25c28e83SPiotr Jasiukajtis.nzero2:
2279*25c28e83SPiotr Jasiukajtis	lda	[%o5]%asi,%l1			! ld hy;
2280*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (x >= 0);
2281*25c28e83SPiotr Jasiukajtis
2282*25c28e83SPiotr Jasiukajtis	lda	[%o5+4]%asi,%l0			! ld ly
2283*25c28e83SPiotr Jasiukajtis	bge,pt	%icc,.pos2			! if (x >= 0);
2284*25c28e83SPiotr Jasiukajtis	or	%g0,%g0,%o5			! yisint = 0;
2285*25c28e83SPiotr Jasiukajtis
2286*25c28e83SPiotr Jasiukajtis	and	%l1,MASK_0x7fffffff,%i2		! hy &= 0x7fffffff;
2287*25c28e83SPiotr Jasiukajtis
2288*25c28e83SPiotr Jasiukajtis	sra	%i2,20,%i2			! expy = hy >> 20;
2289*25c28e83SPiotr Jasiukajtis
2290*25c28e83SPiotr Jasiukajtis	cmp	%i2,1076			! if (expy >= 0x434);
2291*25c28e83SPiotr Jasiukajtis	bge	.neg2				! if (expy >= 0x434);
2292*25c28e83SPiotr Jasiukajtis	or	%g0,2,%o5			! yisint = 2;
2293*25c28e83SPiotr Jasiukajtis
2294*25c28e83SPiotr Jasiukajtis	cmp	%i2,1023			! if (expy < 0x3ff);
2295*25c28e83SPiotr Jasiukajtis	bl	.neg2				! if (expy < 0x3ff);
2296*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 0;
2297*25c28e83SPiotr Jasiukajtis
2298*25c28e83SPiotr Jasiukajtis	cmp	%i2,1043			! if (expy <= (20 + 0x3ff));
2299*25c28e83SPiotr Jasiukajtis	ble	.small2				! if (expy <= (20 + 0x3ff));
2300*25c28e83SPiotr Jasiukajtis	sub	%i2,1023,%i2			! expy - 0x3ff;
2301*25c28e83SPiotr Jasiukajtis
2302*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2303*25c28e83SPiotr Jasiukajtis	add	%i2,52,%i2			! sh = (52 - (expy - 0x3ff);
2304*25c28e83SPiotr Jasiukajtis	srl	%l0,%i2,%l1			! i0 = (ly >> sh);
2305*25c28e83SPiotr Jasiukajtis
2306*25c28e83SPiotr Jasiukajtis	sll	%l1,%i2,%l1			! (i0 << sh);
2307*25c28e83SPiotr Jasiukajtis
2308*25c28e83SPiotr Jasiukajtis	srl	%l0,%i2,%i2			! i0 = (ly >> sh);
2309*25c28e83SPiotr Jasiukajtis	cmp	%l1,%l0				! if ((i0 << sh) == ly);
2310*25c28e83SPiotr Jasiukajtis
2311*25c28e83SPiotr Jasiukajtis	and	%i2,1,%i2			! i0 &= 1;
2312*25c28e83SPiotr Jasiukajtis
2313*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2314*25c28e83SPiotr Jasiukajtis	add	%i2,2,%i2			! i0 = 2 - i0;
2315*25c28e83SPiotr Jasiukajtis
2316*25c28e83SPiotr Jasiukajtis	move	%icc,%i2,%o5			! yisint = i0;
2317*25c28e83SPiotr Jasiukajtis
2318*25c28e83SPiotr Jasiukajtis	ba	.neg2
2319*25c28e83SPiotr Jasiukajtis	nop
2320*25c28e83SPiotr Jasiukajtis.small2:
2321*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2322*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (ly != 0);
2323*25c28e83SPiotr Jasiukajtis
2324*25c28e83SPiotr Jasiukajtis	add	%i2,20,%i2			! sh = (20 - (expy - 0x3ff);
2325*25c28e83SPiotr Jasiukajtis	bne	.neg2				! if (ly != 0);
2326*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 0;
2327*25c28e83SPiotr Jasiukajtis
2328*25c28e83SPiotr Jasiukajtis	srl	%l1,%i2,%l0			! i0 = (hy >> sh);
2329*25c28e83SPiotr Jasiukajtis
2330*25c28e83SPiotr Jasiukajtis	sll	%l0,%i2,%l0			! (i0 << sh);
2331*25c28e83SPiotr Jasiukajtis
2332*25c28e83SPiotr Jasiukajtis	srl	%l1,%i2,%i2			! i0 = (hy >> sh);
2333*25c28e83SPiotr Jasiukajtis	cmp	%l0,%l1				! if ((i0 << sh) == hy);
2334*25c28e83SPiotr Jasiukajtis
2335*25c28e83SPiotr Jasiukajtis	and	%i2,1,%i2			! i0 &= 1;
2336*25c28e83SPiotr Jasiukajtis
2337*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2338*25c28e83SPiotr Jasiukajtis	add	%i2,2,%i2			! i0 = 2 - i0;
2339*25c28e83SPiotr Jasiukajtis
2340*25c28e83SPiotr Jasiukajtis	move	%icc,%i2,%o5			! yisint = i0;
2341*25c28e83SPiotr Jasiukajtis.neg2:
2342*25c28e83SPiotr Jasiukajtis	cmp	%o5,%g0
2343*25c28e83SPiotr Jasiukajtis	be	.u2
2344*25c28e83SPiotr Jasiukajtis	nop
2345*25c28e83SPiotr Jasiukajtis.pos2:
2346*25c28e83SPiotr Jasiukajtis	sll	%o5,11,%o5
2347*25c28e83SPiotr Jasiukajtis	cmp	%l3,MASK_0x000fffff		! if (exp > 0xfffff);
2348*25c28e83SPiotr Jasiukajtis
2349*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.cont2			! if (exp > 0xfffff);
2350*25c28e83SPiotr Jasiukajtis	st	%o5,[%fp+%o7]
2351*25c28e83SPiotr Jasiukajtis
2352*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp_mant],%f54
2353*25c28e83SPiotr Jasiukajtis
2354*25c28e83SPiotr Jasiukajtis	or	%g0,1074,%o5
2355*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! y0 = vis_fand(x, MMANT);
2356*25c28e83SPiotr Jasiukajtis
2357*25c28e83SPiotr Jasiukajtis	sll	%o5,20,%o5
2358*25c28e83SPiotr Jasiukajtis	fxtod	%f32,%f32			! ax = (double) ((long long *) & y0)[0]
2359*25c28e83SPiotr Jasiukajtis
2360*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp0_hi]		! exp = ((unsigned int*) & ax)[0];
2361*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! x = vis_fand(ax, MMANT);
2362*25c28e83SPiotr Jasiukajtis
2363*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0_hi],%i2		! exp = ((unsigned int*) & ax)[0];
2364*25c28e83SPiotr Jasiukajtis	for	%f32,DONE,%f32			! x = vis_for(x, DONE);
2365*25c28e83SPiotr Jasiukajtis
2366*25c28e83SPiotr Jasiukajtis	sub	%i2,%o5,%l3			! exp -= (1023 + 51) << 20;
2367*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%i2,%l4		! hx = exp & 0xfffff;
2368*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%l4,%l4		! hx |= 0x3ff00000;
2369*25c28e83SPiotr Jasiukajtis	add	%l4,2048,%l4			! hx += 0x800;
2370*25c28e83SPiotr Jasiukajtis	and	%l4,-4096,%l4			! hx &= 0xfffff000;
2371*25c28e83SPiotr Jasiukajtis
2372*25c28e83SPiotr Jasiukajtis	ba	.cont2
2373*25c28e83SPiotr Jasiukajtis	st	%l4,[%fp+tmp1_hi]		! *(int*)&ax = hx;
2374*25c28e83SPiotr Jasiukajtis
2375*25c28e83SPiotr Jasiukajtis	.align	16
2376*25c28e83SPiotr Jasiukajtis.update3:
2377*25c28e83SPiotr Jasiukajtis	cmp	counter,0
2378*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont3
2379*25c28e83SPiotr Jasiukajtis	sub	px,stridex,%o5
2380*25c28e83SPiotr Jasiukajtis
2381*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],%l1
2382*25c28e83SPiotr Jasiukajtis
2383*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_px]
2384*25c28e83SPiotr Jasiukajtis	add	py,stridey,%o5
2385*25c28e83SPiotr Jasiukajtis
2386*25c28e83SPiotr Jasiukajtis	add	%l1,counter,counter
2387*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_py]
2388*25c28e83SPiotr Jasiukajtis
2389*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2390*25c28e83SPiotr Jasiukajtis	ba	.cont3
2391*25c28e83SPiotr Jasiukajtis	or	%g0,0,counter
2392*25c28e83SPiotr Jasiukajtis
2393*25c28e83SPiotr Jasiukajtis	.align	16
2394*25c28e83SPiotr Jasiukajtis.update4:
2395*25c28e83SPiotr Jasiukajtis	cmp	counter,2
2396*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont4
2397*25c28e83SPiotr Jasiukajtis	add	py,stridey,%o5
2398*25c28e83SPiotr Jasiukajtis
2399*25c28e83SPiotr Jasiukajtis	add	%o5,stridey,%o5
2400*25c28e83SPiotr Jasiukajtis	add	%o5,stridey,%o5
2401*25c28e83SPiotr Jasiukajtis	stx	px,[%fp+tmp_px]
2402*25c28e83SPiotr Jasiukajtis
2403*25c28e83SPiotr Jasiukajtis	orcc	%l2,%i2,%g0			! if (x == 0);
2404*25c28e83SPiotr Jasiukajtis	bne,pt	%icc,.nzero4			! if (x == 0);
2405*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_py]
2406*25c28e83SPiotr Jasiukajtis.u4:
2407*25c28e83SPiotr Jasiukajtis	sub	counter,2,counter
2408*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2409*25c28e83SPiotr Jasiukajtis	ba	.cont4
2410*25c28e83SPiotr Jasiukajtis	or	%g0,2,counter
2411*25c28e83SPiotr Jasiukajtis.nzero4:
2412*25c28e83SPiotr Jasiukajtis	lda	[%o5]%asi,%l1			! ld hy;
2413*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (x >= 0);
2414*25c28e83SPiotr Jasiukajtis
2415*25c28e83SPiotr Jasiukajtis	lda	[%o5+4]%asi,%l0			! ld ly
2416*25c28e83SPiotr Jasiukajtis	bge,pt	%icc,.pos4			! if (x >= 0);
2417*25c28e83SPiotr Jasiukajtis	or	%g0,%g0,%o5			! yisint = 0;
2418*25c28e83SPiotr Jasiukajtis
2419*25c28e83SPiotr Jasiukajtis	and	%l1,MASK_0x7fffffff,%i2		! hy &= 0x7fffffff;
2420*25c28e83SPiotr Jasiukajtis
2421*25c28e83SPiotr Jasiukajtis	sra	%i2,20,%i2			! expy = hy >> 20;
2422*25c28e83SPiotr Jasiukajtis
2423*25c28e83SPiotr Jasiukajtis	cmp	%i2,1076			! if (expy >= 0x434);
2424*25c28e83SPiotr Jasiukajtis	bge	.neg4				! if (expy >= 0x434);
2425*25c28e83SPiotr Jasiukajtis	or	%g0,2,%o5			! yisint = 2;
2426*25c28e83SPiotr Jasiukajtis
2427*25c28e83SPiotr Jasiukajtis	cmp	%i2,1023			! if (expy < 0x3ff);
2428*25c28e83SPiotr Jasiukajtis	bl	.neg4				! if (expy < 0x3ff);
2429*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 2;
2430*25c28e83SPiotr Jasiukajtis
2431*25c28e83SPiotr Jasiukajtis	cmp	%i2,1043			! if (expy <= (20 + 0x3ff));
2432*25c28e83SPiotr Jasiukajtis	ble	.small4				! if (expy <= (20 + 0x3ff));
2433*25c28e83SPiotr Jasiukajtis	sub	%i2,1023,%i2			! expy - 0x3ff;
2434*25c28e83SPiotr Jasiukajtis
2435*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2436*25c28e83SPiotr Jasiukajtis	add	%i2,52,%i2			! sh = (52 - (expy - 0x3ff);
2437*25c28e83SPiotr Jasiukajtis	srl	%l0,%i2,%l1			! i0 = (ly >> sh);
2438*25c28e83SPiotr Jasiukajtis
2439*25c28e83SPiotr Jasiukajtis	sll	%l1,%i2,%l1			! (i0 << sh);
2440*25c28e83SPiotr Jasiukajtis
2441*25c28e83SPiotr Jasiukajtis	srl	%l0,%i2,%i2			! i0 = (ly >> sh);
2442*25c28e83SPiotr Jasiukajtis	cmp	%l1,%l0				! if ((i0 << sh) == ly);
2443*25c28e83SPiotr Jasiukajtis
2444*25c28e83SPiotr Jasiukajtis	and	%i2,1,%i2			! i0 &= 1;
2445*25c28e83SPiotr Jasiukajtis
2446*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2447*25c28e83SPiotr Jasiukajtis	add	%i2,2,%i2			! i0 = 2 - i0;
2448*25c28e83SPiotr Jasiukajtis
2449*25c28e83SPiotr Jasiukajtis	move	%icc,%i2,%o5			! yisint = i0;
2450*25c28e83SPiotr Jasiukajtis
2451*25c28e83SPiotr Jasiukajtis	ba	.neg4
2452*25c28e83SPiotr Jasiukajtis	nop
2453*25c28e83SPiotr Jasiukajtis.small4:
2454*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2455*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (ly != 0);
2456*25c28e83SPiotr Jasiukajtis
2457*25c28e83SPiotr Jasiukajtis	add	%i2,20,%i2			! sh = (20 - (expy - 0x3ff);
2458*25c28e83SPiotr Jasiukajtis	bne	.neg4				! if (ly != 0);
2459*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 0;
2460*25c28e83SPiotr Jasiukajtis
2461*25c28e83SPiotr Jasiukajtis	srl	%l1,%i2,%l0			! i0 = (hy >> sh);
2462*25c28e83SPiotr Jasiukajtis
2463*25c28e83SPiotr Jasiukajtis	sll	%l0,%i2,%l0			! (i0 << sh);
2464*25c28e83SPiotr Jasiukajtis
2465*25c28e83SPiotr Jasiukajtis	srl	%l1,%i2,%i2			! i0 = (hy >> sh);
2466*25c28e83SPiotr Jasiukajtis	cmp	%l0,%l1				! if ((i0 << sh) == hy);
2467*25c28e83SPiotr Jasiukajtis
2468*25c28e83SPiotr Jasiukajtis	and	%i2,1,%i2			! i0 &= 1;
2469*25c28e83SPiotr Jasiukajtis
2470*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2471*25c28e83SPiotr Jasiukajtis	add	%i2,2,%i2			! i0 = 2 - i0;
2472*25c28e83SPiotr Jasiukajtis
2473*25c28e83SPiotr Jasiukajtis	move	%icc,%i2,%o5			! yisint = i0;
2474*25c28e83SPiotr Jasiukajtis.neg4:
2475*25c28e83SPiotr Jasiukajtis	cmp	%o5,%g0
2476*25c28e83SPiotr Jasiukajtis	be	.u4
2477*25c28e83SPiotr Jasiukajtis	nop
2478*25c28e83SPiotr Jasiukajtis.pos4:
2479*25c28e83SPiotr Jasiukajtis	sll	%o5,11,%o5
2480*25c28e83SPiotr Jasiukajtis	cmp	%l2,MASK_0x000fffff		! if (exp > 0xfffff);
2481*25c28e83SPiotr Jasiukajtis
2482*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.cont4			! if (exp > 0xfffff);
2483*25c28e83SPiotr Jasiukajtis	st	%o5,[%fp+%o7]
2484*25c28e83SPiotr Jasiukajtis
2485*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp5];
2486*25c28e83SPiotr Jasiukajtis	std	%f54,[%fp+tmp6];
2487*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp0_hi],%f32
2488*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp_mant],%f54
2489*25c28e83SPiotr Jasiukajtis
2490*25c28e83SPiotr Jasiukajtis	or	%g0,1074,%o5
2491*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! y0 = vis_fand(x, MMANT);
2492*25c28e83SPiotr Jasiukajtis
2493*25c28e83SPiotr Jasiukajtis	sll	%o5,20,%o5
2494*25c28e83SPiotr Jasiukajtis	fxtod	%f32,%f32			! ax = (double) ((long long *) & y0)[0]
2495*25c28e83SPiotr Jasiukajtis
2496*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp0_hi]		! exp = ((unsigned int*) & ax)[0];
2497*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! x = vis_fand(ax, MMANT);
2498*25c28e83SPiotr Jasiukajtis
2499*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0_hi],%i2		! exp = ((unsigned int*) & ax)[0];
2500*25c28e83SPiotr Jasiukajtis	for	%f32,DONE,%f32			! x = vis_for(x, DONE);
2501*25c28e83SPiotr Jasiukajtis
2502*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp0_hi];
2503*25c28e83SPiotr Jasiukajtis	sub	%i2,%o5,%l2			! exp -= (1023 + 51) << 20;
2504*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%i2,%i4		! hx = exp & 0xfffff;
2505*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp5],%f32
2506*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%i4,%i4		! hx |= 0x3ff00000;
2507*25c28e83SPiotr Jasiukajtis	add	%i4,2048,%i4			! hx += 0x800;
2508*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp6],%f54
2509*25c28e83SPiotr Jasiukajtis	and	%i4,-4096,%i4			! hx &= 0xfffff000;
2510*25c28e83SPiotr Jasiukajtis
2511*25c28e83SPiotr Jasiukajtis	ba	.cont4
2512*25c28e83SPiotr Jasiukajtis	st	%i4,[%fp+tmp1_hi]		! *(int*)&ax = hx;
2513*25c28e83SPiotr Jasiukajtis
2514*25c28e83SPiotr Jasiukajtis	.align	16
2515*25c28e83SPiotr Jasiukajtis.update5:
2516*25c28e83SPiotr Jasiukajtis	cmp	counter,1
2517*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont5
2518*25c28e83SPiotr Jasiukajtis	sub	px,stridex,%o5
2519*25c28e83SPiotr Jasiukajtis
2520*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],%l1
2521*25c28e83SPiotr Jasiukajtis
2522*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_px]
2523*25c28e83SPiotr Jasiukajtis	add	py,stridey,%o5
2524*25c28e83SPiotr Jasiukajtis
2525*25c28e83SPiotr Jasiukajtis	add	%l1,counter,counter
2526*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_py]
2527*25c28e83SPiotr Jasiukajtis
2528*25c28e83SPiotr Jasiukajtis	sub	counter,1,counter
2529*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2530*25c28e83SPiotr Jasiukajtis	ba	.cont5
2531*25c28e83SPiotr Jasiukajtis	or	%g0,1,counter
2532*25c28e83SPiotr Jasiukajtis
2533*25c28e83SPiotr Jasiukajtis	.align	16
2534*25c28e83SPiotr Jasiukajtis.update6:
2535*25c28e83SPiotr Jasiukajtis	cmp	counter,0
2536*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont6
2537*25c28e83SPiotr Jasiukajtis	fmovd	DONE,%f30
2538*25c28e83SPiotr Jasiukajtis
2539*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],%o2
2540*25c28e83SPiotr Jasiukajtis	sub	px,stridex,%o5
2541*25c28e83SPiotr Jasiukajtis
2542*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2543*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
2544*25c28e83SPiotr Jasiukajtis
2545*25c28e83SPiotr Jasiukajtis	add	%o2,counter,counter
2546*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2547*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_px]
2548*25c28e83SPiotr Jasiukajtis
2549*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2550*25c28e83SPiotr Jasiukajtis	ba	.cont6
2551*25c28e83SPiotr Jasiukajtis	or	%g0,0,counter
2552*25c28e83SPiotr Jasiukajtis
2553*25c28e83SPiotr Jasiukajtis	.align	16
2554*25c28e83SPiotr Jasiukajtis.update7:
2555*25c28e83SPiotr Jasiukajtis	cmp	counter,0
2556*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont7
2557*25c28e83SPiotr Jasiukajtis	fmovd	DONE,%f30
2558*25c28e83SPiotr Jasiukajtis	sub	px,stridex,%o5
2559*25c28e83SPiotr Jasiukajtis
2560*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],%o2
2561*25c28e83SPiotr Jasiukajtis
2562*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2563*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
2564*25c28e83SPiotr Jasiukajtis
2565*25c28e83SPiotr Jasiukajtis	add	%o2,counter,counter
2566*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2567*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_px]
2568*25c28e83SPiotr Jasiukajtis
2569*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2570*25c28e83SPiotr Jasiukajtis	ba	.cont7
2571*25c28e83SPiotr Jasiukajtis	or	%g0,0,counter
2572*25c28e83SPiotr Jasiukajtis
2573*25c28e83SPiotr Jasiukajtis	.align	16
2574*25c28e83SPiotr Jasiukajtis.update8:
2575*25c28e83SPiotr Jasiukajtis	cmp	counter,2
2576*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont8
2577*25c28e83SPiotr Jasiukajtis	add	py,stridey,%o5
2578*25c28e83SPiotr Jasiukajtis
2579*25c28e83SPiotr Jasiukajtis	add	%o5,stridey,%o5
2580*25c28e83SPiotr Jasiukajtis	stx	px,[%fp+tmp_px]
2581*25c28e83SPiotr Jasiukajtis
2582*25c28e83SPiotr Jasiukajtis	orcc	%l3,%i2,%g0			! if (x == 0);
2583*25c28e83SPiotr Jasiukajtis	bne,pt	%icc,.nzero8			! if (x == 0);
2584*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_py]
2585*25c28e83SPiotr Jasiukajtis.u8:
2586*25c28e83SPiotr Jasiukajtis	sub	counter,2,counter
2587*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2588*25c28e83SPiotr Jasiukajtis	ba	.cont8
2589*25c28e83SPiotr Jasiukajtis	or	%g0,2,counter
2590*25c28e83SPiotr Jasiukajtis.nzero8:
2591*25c28e83SPiotr Jasiukajtis	lda	[%o5]%asi,%l1			! ld hy;
2592*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (x >= 0);
2593*25c28e83SPiotr Jasiukajtis
2594*25c28e83SPiotr Jasiukajtis	lda	[%o5+4]%asi,%l0			! ld ly
2595*25c28e83SPiotr Jasiukajtis	bge,pt	%icc,.pos8			! if (x >= 0);
2596*25c28e83SPiotr Jasiukajtis	or	%g0,%g0,%o5			! yisint = 0;
2597*25c28e83SPiotr Jasiukajtis
2598*25c28e83SPiotr Jasiukajtis	and	%l1,MASK_0x7fffffff,%i2		! hy &= 0x7fffffff;
2599*25c28e83SPiotr Jasiukajtis
2600*25c28e83SPiotr Jasiukajtis	sra	%i2,20,%i2			! expy = hy >> 20;
2601*25c28e83SPiotr Jasiukajtis
2602*25c28e83SPiotr Jasiukajtis	cmp	%i2,1076			! if (expy >= 0x434);
2603*25c28e83SPiotr Jasiukajtis	bge	.pos8				! if (expy >= 0x434);
2604*25c28e83SPiotr Jasiukajtis	or	%g0,2,%o5			! yisint = 2;
2605*25c28e83SPiotr Jasiukajtis
2606*25c28e83SPiotr Jasiukajtis	cmp	%i2,1023			! if (expy < 0x3ff);
2607*25c28e83SPiotr Jasiukajtis	bl	.neg8				! if (expy < 0x3ff);
2608*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 0;
2609*25c28e83SPiotr Jasiukajtis
2610*25c28e83SPiotr Jasiukajtis	cmp	%i2,1043			! if (expy <= (20 + 0x3ff));
2611*25c28e83SPiotr Jasiukajtis	ble	.small8				! if (expy <= (20 + 0x3ff));
2612*25c28e83SPiotr Jasiukajtis	sub	%i2,1023,%i2			! expy - 0x3ff;
2613*25c28e83SPiotr Jasiukajtis
2614*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2615*25c28e83SPiotr Jasiukajtis	add	%i2,52,%i2			! sh = (52 - (expy - 0x3ff);
2616*25c28e83SPiotr Jasiukajtis	srl	%l0,%i2,%l1			! i0 = (ly >> sh);
2617*25c28e83SPiotr Jasiukajtis
2618*25c28e83SPiotr Jasiukajtis	sll	%l1,%i2,%l1			! (i0 << sh);
2619*25c28e83SPiotr Jasiukajtis
2620*25c28e83SPiotr Jasiukajtis	srl	%l0,%i2,%i2			! i0 = (ly >> sh);
2621*25c28e83SPiotr Jasiukajtis	cmp	%l1,%l0				! if ((i0 << sh) == ly);
2622*25c28e83SPiotr Jasiukajtis
2623*25c28e83SPiotr Jasiukajtis	and	%i2,1,%i2			! i0 &= 1;
2624*25c28e83SPiotr Jasiukajtis
2625*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2626*25c28e83SPiotr Jasiukajtis	add	%i2,2,%i2			! i0 = 2 - i0;
2627*25c28e83SPiotr Jasiukajtis
2628*25c28e83SPiotr Jasiukajtis	move	%icc,%i2,%o5			! yisint = i0;
2629*25c28e83SPiotr Jasiukajtis
2630*25c28e83SPiotr Jasiukajtis	ba	.neg8
2631*25c28e83SPiotr Jasiukajtis	nop
2632*25c28e83SPiotr Jasiukajtis.small8:
2633*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2634*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (ly != 0);
2635*25c28e83SPiotr Jasiukajtis
2636*25c28e83SPiotr Jasiukajtis	add	%i2,20,%i2			! sh = (20 - (expy - 0x3ff);
2637*25c28e83SPiotr Jasiukajtis	bne	.neg8				! if (ly != 0);
2638*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 0;
2639*25c28e83SPiotr Jasiukajtis
2640*25c28e83SPiotr Jasiukajtis	srl	%l1,%i2,%l0			! i0 = (hy >> sh);
2641*25c28e83SPiotr Jasiukajtis
2642*25c28e83SPiotr Jasiukajtis	sll	%l0,%i2,%l0			! (i0 << sh);
2643*25c28e83SPiotr Jasiukajtis
2644*25c28e83SPiotr Jasiukajtis	srl	%l1,%i2,%i2			! i0 = (hy >> sh);
2645*25c28e83SPiotr Jasiukajtis	cmp	%l0,%l1				! if ((i0 << sh) == hy);
2646*25c28e83SPiotr Jasiukajtis
2647*25c28e83SPiotr Jasiukajtis	and	%i2,1,%i2			! i0 &= 1;
2648*25c28e83SPiotr Jasiukajtis
2649*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2650*25c28e83SPiotr Jasiukajtis	add	%i2,2,%i2			! i0 = 2 - i0;
2651*25c28e83SPiotr Jasiukajtis
2652*25c28e83SPiotr Jasiukajtis	move	%icc,%i2,%o5			! yisint = i0;
2653*25c28e83SPiotr Jasiukajtis.neg8:
2654*25c28e83SPiotr Jasiukajtis	cmp	%o5,%g0
2655*25c28e83SPiotr Jasiukajtis	be	.u8
2656*25c28e83SPiotr Jasiukajtis	nop
2657*25c28e83SPiotr Jasiukajtis.pos8:
2658*25c28e83SPiotr Jasiukajtis	sll	%o5,11,%o5
2659*25c28e83SPiotr Jasiukajtis	cmp	%l3,MASK_0x000fffff		! if (exp > 0xfffff);
2660*25c28e83SPiotr Jasiukajtis
2661*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.cont8			! if (exp > 0xfffff);
2662*25c28e83SPiotr Jasiukajtis	st	%o5,[%fp+%o7]
2663*25c28e83SPiotr Jasiukajtis
2664*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp_mant],%f54
2665*25c28e83SPiotr Jasiukajtis
2666*25c28e83SPiotr Jasiukajtis	or	%g0,1074,%o5
2667*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! y0 = vis_fand(x, MMANT);
2668*25c28e83SPiotr Jasiukajtis
2669*25c28e83SPiotr Jasiukajtis	sll	%o5,20,%o5
2670*25c28e83SPiotr Jasiukajtis	fxtod	%f32,%f32			! ax = (double) ((long long *) & y0)[0]
2671*25c28e83SPiotr Jasiukajtis
2672*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp0_hi]		! exp = ((unsigned int*) & ax)[0];
2673*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! x = vis_fand(ax, MMANT);
2674*25c28e83SPiotr Jasiukajtis
2675*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0_hi],%i2		! exp = ((unsigned int*) & ax)[0];
2676*25c28e83SPiotr Jasiukajtis	for	%f32,DONE,%f32			! x = vis_for(x, DONE);
2677*25c28e83SPiotr Jasiukajtis
2678*25c28e83SPiotr Jasiukajtis	sub	%i2,%o5,%l3			! exp -= (1023 + 51) << 20;
2679*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%i2,%l4		! hx &= 0xfffff;
2680*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%l4,%l4		! hx |= 0x3ff00000;
2681*25c28e83SPiotr Jasiukajtis	add	%l4,2048,%l4			! hx += 0x800;
2682*25c28e83SPiotr Jasiukajtis	and	%l4,-4096,%l4			! hx &= 0xfffff000;
2683*25c28e83SPiotr Jasiukajtis
2684*25c28e83SPiotr Jasiukajtis	ba	.cont8
2685*25c28e83SPiotr Jasiukajtis	st	%l4,[%fp+tmp1_hi]		! *(int*)&ax = hx;
2686*25c28e83SPiotr Jasiukajtis
2687*25c28e83SPiotr Jasiukajtis	.align	16
2688*25c28e83SPiotr Jasiukajtis.update9:
2689*25c28e83SPiotr Jasiukajtis	cmp	counter,1
2690*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont9
2691*25c28e83SPiotr Jasiukajtis	sub	px,stridex,%o5
2692*25c28e83SPiotr Jasiukajtis
2693*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],%l1
2694*25c28e83SPiotr Jasiukajtis
2695*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_px]
2696*25c28e83SPiotr Jasiukajtis	add	py,stridey,%o5
2697*25c28e83SPiotr Jasiukajtis
2698*25c28e83SPiotr Jasiukajtis	add	%l1,counter,counter
2699*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_py]
2700*25c28e83SPiotr Jasiukajtis
2701*25c28e83SPiotr Jasiukajtis	sub	counter,1,counter
2702*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2703*25c28e83SPiotr Jasiukajtis	ba	.cont9
2704*25c28e83SPiotr Jasiukajtis	or	%g0,1,counter
2705*25c28e83SPiotr Jasiukajtis
2706*25c28e83SPiotr Jasiukajtis	.align	16
2707*25c28e83SPiotr Jasiukajtis.update10:
2708*25c28e83SPiotr Jasiukajtis	cmp	counter,0
2709*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont10
2710*25c28e83SPiotr Jasiukajtis	fmovd	DONE,%f30
2711*25c28e83SPiotr Jasiukajtis
2712*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],%o2
2713*25c28e83SPiotr Jasiukajtis	sub	px,stridex,%o5
2714*25c28e83SPiotr Jasiukajtis
2715*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2716*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
2717*25c28e83SPiotr Jasiukajtis
2718*25c28e83SPiotr Jasiukajtis	add	%o2,counter,counter
2719*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2720*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_px]
2721*25c28e83SPiotr Jasiukajtis
2722*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2723*25c28e83SPiotr Jasiukajtis	ba	.cont10
2724*25c28e83SPiotr Jasiukajtis	or	%g0,0,counter
2725*25c28e83SPiotr Jasiukajtis
2726*25c28e83SPiotr Jasiukajtis	.align	16
2727*25c28e83SPiotr Jasiukajtis.update11:
2728*25c28e83SPiotr Jasiukajtis	cmp	counter,0
2729*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont11
2730*25c28e83SPiotr Jasiukajtis	fmovd	DONE,%f30
2731*25c28e83SPiotr Jasiukajtis
2732*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],%o2
2733*25c28e83SPiotr Jasiukajtis	sub	px,stridex,%o5
2734*25c28e83SPiotr Jasiukajtis
2735*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2736*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
2737*25c28e83SPiotr Jasiukajtis
2738*25c28e83SPiotr Jasiukajtis	add	%o2,counter,counter
2739*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2740*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_px]
2741*25c28e83SPiotr Jasiukajtis
2742*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2743*25c28e83SPiotr Jasiukajtis	ba	.cont11
2744*25c28e83SPiotr Jasiukajtis	or	%g0,0,counter
2745*25c28e83SPiotr Jasiukajtis
2746*25c28e83SPiotr Jasiukajtis	.align	16
2747*25c28e83SPiotr Jasiukajtis.update12:
2748*25c28e83SPiotr Jasiukajtis	cmp	counter,3
2749*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont12
2750*25c28e83SPiotr Jasiukajtis	add	py,stridey,%o5
2751*25c28e83SPiotr Jasiukajtis
2752*25c28e83SPiotr Jasiukajtis	add	%o5,stridey,%o5
2753*25c28e83SPiotr Jasiukajtis	stx	px,[%fp+tmp_px]
2754*25c28e83SPiotr Jasiukajtis
2755*25c28e83SPiotr Jasiukajtis	add	%o5,stridey,%o5
2756*25c28e83SPiotr Jasiukajtis	orcc	%l2,%i2,%g0			! if (x == 0);
2757*25c28e83SPiotr Jasiukajtis
2758*25c28e83SPiotr Jasiukajtis	bne,pt	%icc,.nzero12			! if (x == 0);
2759*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_py]
2760*25c28e83SPiotr Jasiukajtis.u12:
2761*25c28e83SPiotr Jasiukajtis	sub	counter,3,counter
2762*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2763*25c28e83SPiotr Jasiukajtis	ba	.cont12
2764*25c28e83SPiotr Jasiukajtis	or	%g0,3,counter
2765*25c28e83SPiotr Jasiukajtis.nzero12:
2766*25c28e83SPiotr Jasiukajtis	lda	[%o5]%asi,%l1			! ld hy;
2767*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (x >= 0);
2768*25c28e83SPiotr Jasiukajtis
2769*25c28e83SPiotr Jasiukajtis	lda	[%o5+4]%asi,%l0			! ld ly
2770*25c28e83SPiotr Jasiukajtis	bge,pt	%icc,.pos12			! if (x >= 0);
2771*25c28e83SPiotr Jasiukajtis	or	%g0,%g0,%o5			! yisint = 0;
2772*25c28e83SPiotr Jasiukajtis
2773*25c28e83SPiotr Jasiukajtis	and	%l1,MASK_0x7fffffff,%i2		! hy &= 0x7fffffff;
2774*25c28e83SPiotr Jasiukajtis
2775*25c28e83SPiotr Jasiukajtis	sra	%i2,20,%i2			! expy = hy >> 20;
2776*25c28e83SPiotr Jasiukajtis
2777*25c28e83SPiotr Jasiukajtis	cmp	%i2,1076			! if (expy >= 0x434);
2778*25c28e83SPiotr Jasiukajtis	bge	.neg12				! if (expy >= 0x434);
2779*25c28e83SPiotr Jasiukajtis	or	%g0,2,%o5			! yisint = 2;
2780*25c28e83SPiotr Jasiukajtis
2781*25c28e83SPiotr Jasiukajtis	cmp	%i2,1023			! if (expy < 0x3ff);
2782*25c28e83SPiotr Jasiukajtis	bl	.neg12				! if (expy < 0x3ff);
2783*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 0;
2784*25c28e83SPiotr Jasiukajtis
2785*25c28e83SPiotr Jasiukajtis	cmp	%i2,1043			! if (expy <= (20 + 0x3ff));
2786*25c28e83SPiotr Jasiukajtis	ble	.small12			! if (expy <= (20 + 0x3ff));
2787*25c28e83SPiotr Jasiukajtis	sub	%i2,1023,%i2			! expy - 0x3ff;
2788*25c28e83SPiotr Jasiukajtis
2789*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2790*25c28e83SPiotr Jasiukajtis	add	%i2,52,%i2			! sh = (52 - (expy - 0x3ff);
2791*25c28e83SPiotr Jasiukajtis	srl	%l0,%i2,%l1			! i0 = (ly >> sh);
2792*25c28e83SPiotr Jasiukajtis
2793*25c28e83SPiotr Jasiukajtis	sll	%l1,%i2,%l1			! (i0 << sh);
2794*25c28e83SPiotr Jasiukajtis
2795*25c28e83SPiotr Jasiukajtis	srl	%l0,%i2,%i2			! i0 = (ly >> sh);
2796*25c28e83SPiotr Jasiukajtis	cmp	%l1,%l0				! if ((i0 << sh) == ly);
2797*25c28e83SPiotr Jasiukajtis
2798*25c28e83SPiotr Jasiukajtis	and	%i2,1,%i2			! i0 &= 1;
2799*25c28e83SPiotr Jasiukajtis
2800*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2801*25c28e83SPiotr Jasiukajtis	add	%i2,2,%i2			! i0 = 2 - i0;
2802*25c28e83SPiotr Jasiukajtis
2803*25c28e83SPiotr Jasiukajtis	move	%icc,%i2,%o5			! yisint = i0;
2804*25c28e83SPiotr Jasiukajtis
2805*25c28e83SPiotr Jasiukajtis	ba	.neg12
2806*25c28e83SPiotr Jasiukajtis	nop
2807*25c28e83SPiotr Jasiukajtis.small12:
2808*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2809*25c28e83SPiotr Jasiukajtis	cmp	%l0,%g0				! if (ly != 0);
2810*25c28e83SPiotr Jasiukajtis
2811*25c28e83SPiotr Jasiukajtis	add	%i2,20,%i2			! sh = (20 - (expy - 0x3ff);
2812*25c28e83SPiotr Jasiukajtis	bne	.neg12				! if (ly != 0);
2813*25c28e83SPiotr Jasiukajtis	or	%g0,0,%o5			! yisint = 0;
2814*25c28e83SPiotr Jasiukajtis
2815*25c28e83SPiotr Jasiukajtis	srl	%l1,%i2,%l0			! i0 = (hy >> sh);
2816*25c28e83SPiotr Jasiukajtis
2817*25c28e83SPiotr Jasiukajtis	sll	%l0,%i2,%l0			! (i0 << sh);
2818*25c28e83SPiotr Jasiukajtis
2819*25c28e83SPiotr Jasiukajtis	srl	%l1,%i2,%i2			! i0 = (hy >> sh);
2820*25c28e83SPiotr Jasiukajtis	cmp	%l0,%l1				! if ((i0 << sh) == hy);
2821*25c28e83SPiotr Jasiukajtis
2822*25c28e83SPiotr Jasiukajtis	and	%i2,1,%i2			! i0 &= 1;
2823*25c28e83SPiotr Jasiukajtis
2824*25c28e83SPiotr Jasiukajtis	sub	%g0,%i2,%i2
2825*25c28e83SPiotr Jasiukajtis	add	%i2,2,%i2			! i0 = 2 - i0;
2826*25c28e83SPiotr Jasiukajtis
2827*25c28e83SPiotr Jasiukajtis	move	%icc,%i2,%o5			! yisint = i0;
2828*25c28e83SPiotr Jasiukajtis.neg12:
2829*25c28e83SPiotr Jasiukajtis	cmp	%o5,%g0
2830*25c28e83SPiotr Jasiukajtis	be	.u12
2831*25c28e83SPiotr Jasiukajtis	nop
2832*25c28e83SPiotr Jasiukajtis.pos12:
2833*25c28e83SPiotr Jasiukajtis	sll	%o5,11,%o5
2834*25c28e83SPiotr Jasiukajtis	cmp	%l2,MASK_0x000fffff		! y0 = vis_fand(x, MMANT);
2835*25c28e83SPiotr Jasiukajtis
2836*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.cont12			! y0 = vis_fand(x, MMANT);
2837*25c28e83SPiotr Jasiukajtis	st	%o5,[%fp+%o7]
2838*25c28e83SPiotr Jasiukajtis
2839*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp5];
2840*25c28e83SPiotr Jasiukajtis	std	%f54,[%fp+tmp6];
2841*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp0_hi],%f32
2842*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp_mant],%f54
2843*25c28e83SPiotr Jasiukajtis
2844*25c28e83SPiotr Jasiukajtis	or	%g0,1074,%o5
2845*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! y0 = vis_fand(x, MMANT);
2846*25c28e83SPiotr Jasiukajtis
2847*25c28e83SPiotr Jasiukajtis	sll	%o5,20,%o5
2848*25c28e83SPiotr Jasiukajtis	fxtod	%f32,%f32			! ax = (double) ((long long *) & y0)[0]
2849*25c28e83SPiotr Jasiukajtis
2850*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp0_hi]		! exp = ((unsigned int*) & ax)[0];
2851*25c28e83SPiotr Jasiukajtis	fand	%f32,%f54,%f32			! x = vis_fand(ax, MMANT);
2852*25c28e83SPiotr Jasiukajtis
2853*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0_hi],%i2		! exp = ((unsigned int*) & ax)[0];
2854*25c28e83SPiotr Jasiukajtis	for	%f32,DONE,%f32			! x = vis_for(x, DONE);
2855*25c28e83SPiotr Jasiukajtis
2856*25c28e83SPiotr Jasiukajtis	std	%f32,[%fp+tmp0_hi];
2857*25c28e83SPiotr Jasiukajtis	sub	%i2,%o5,%l2			! exp -= (1023 + 51) << 20;
2858*25c28e83SPiotr Jasiukajtis	and	MASK_0x000fffff,%i2,%i4		! hx &= 0xfffff;
2859*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp5],%f32
2860*25c28e83SPiotr Jasiukajtis	or	MASK_0x3ff00000,%i4,%i4		! hx |= 0x3ff00000;
2861*25c28e83SPiotr Jasiukajtis	add	%i4,2048,%i4			! hx += 0x800;
2862*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp6],%f54
2863*25c28e83SPiotr Jasiukajtis	and	%i4,-4096,%i4			! hx &= 0xfffff000;
2864*25c28e83SPiotr Jasiukajtis
2865*25c28e83SPiotr Jasiukajtis	ba	.cont12
2866*25c28e83SPiotr Jasiukajtis	st	%i4,[%fp+tmp1_hi]		! *(int*)&ax = hx;
2867*25c28e83SPiotr Jasiukajtis
2868*25c28e83SPiotr Jasiukajtis	.align	16
2869*25c28e83SPiotr Jasiukajtis.update13:
2870*25c28e83SPiotr Jasiukajtis	cmp	counter,2
2871*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont13
2872*25c28e83SPiotr Jasiukajtis	sub	px,stridex,%o5
2873*25c28e83SPiotr Jasiukajtis
2874*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],%l1
2875*25c28e83SPiotr Jasiukajtis
2876*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_px]
2877*25c28e83SPiotr Jasiukajtis	add	py,stridey,%o5
2878*25c28e83SPiotr Jasiukajtis
2879*25c28e83SPiotr Jasiukajtis	add	%l1,counter,counter
2880*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_py]
2881*25c28e83SPiotr Jasiukajtis
2882*25c28e83SPiotr Jasiukajtis	sub	counter,2,counter
2883*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2884*25c28e83SPiotr Jasiukajtis	ba	.cont13
2885*25c28e83SPiotr Jasiukajtis	or	%g0,2,counter
2886*25c28e83SPiotr Jasiukajtis
2887*25c28e83SPiotr Jasiukajtis	.align	16
2888*25c28e83SPiotr Jasiukajtis.update14:
2889*25c28e83SPiotr Jasiukajtis	cmp	counter,1
2890*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont14
2891*25c28e83SPiotr Jasiukajtis	fmovd	DONE,%f30
2892*25c28e83SPiotr Jasiukajtis
2893*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],%o2
2894*25c28e83SPiotr Jasiukajtis	sub	px,stridex,%o5
2895*25c28e83SPiotr Jasiukajtis
2896*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2897*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
2898*25c28e83SPiotr Jasiukajtis
2899*25c28e83SPiotr Jasiukajtis	add	%o2,counter,counter
2900*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2901*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_px]
2902*25c28e83SPiotr Jasiukajtis
2903*25c28e83SPiotr Jasiukajtis	sub	counter,1,counter
2904*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2905*25c28e83SPiotr Jasiukajtis	ba	.cont14
2906*25c28e83SPiotr Jasiukajtis	or	%g0,1,counter
2907*25c28e83SPiotr Jasiukajtis
2908*25c28e83SPiotr Jasiukajtis	.align	16
2909*25c28e83SPiotr Jasiukajtis.update15:
2910*25c28e83SPiotr Jasiukajtis	cmp	counter,1
2911*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.cont15
2912*25c28e83SPiotr Jasiukajtis	fmovd	DONE,%f30
2913*25c28e83SPiotr Jasiukajtis
2914*25c28e83SPiotr Jasiukajtis	sub	px,stridex,%o5
2915*25c28e83SPiotr Jasiukajtis
2916*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],%o2
2917*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2918*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
2919*25c28e83SPiotr Jasiukajtis
2920*25c28e83SPiotr Jasiukajtis	add	%o2,counter,counter
2921*25c28e83SPiotr Jasiukajtis	sub	%o5,stridex,%o5
2922*25c28e83SPiotr Jasiukajtis	stx	%o5,[%fp+tmp_px]
2923*25c28e83SPiotr Jasiukajtis
2924*25c28e83SPiotr Jasiukajtis	sub	counter,1,counter
2925*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
2926*25c28e83SPiotr Jasiukajtis	ba	.cont15
2927*25c28e83SPiotr Jasiukajtis	or	%g0,1,counter
2928*25c28e83SPiotr Jasiukajtis
2929*25c28e83SPiotr Jasiukajtis	.align	16
2930*25c28e83SPiotr Jasiukajtis.spec0:
2931*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%o5			! ld ly;
2932*25c28e83SPiotr Jasiukajtis	lda	[px]%asi,%f16			! y0 = *px;
2933*25c28e83SPiotr Jasiukajtis	lda	[px+4]%asi,%f17			! y0 = *px;
2934*25c28e83SPiotr Jasiukajtis	orcc	%l1,%o5,%g0			! if (hy | ly) != 0;
2935*25c28e83SPiotr Jasiukajtis
2936*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,1f
2937*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o5
2938*25c28e83SPiotr Jasiukajtis
2939*25c28e83SPiotr Jasiukajtis	st	DONE_HI,[pz]
2940*25c28e83SPiotr Jasiukajtis	ba	.update_point
2941*25c28e83SPiotr Jasiukajtis	st	DONE_LO,[pz+4]
2942*25c28e83SPiotr Jasiukajtis1:
2943*25c28e83SPiotr Jasiukajtis	cmp	%l3,%o5				! if (hx > 0x7ff00000);
2944*25c28e83SPiotr Jasiukajtis	bgu,a,pn	%icc,6f			! if (hx > 0x7ff00000);
2945*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f16,%f16			! *pz = y0 * y0;
2946*25c28e83SPiotr Jasiukajtis
2947*25c28e83SPiotr Jasiukajtis	bne,pt	%icc,2f				! if (hx != 0x7ff00000);
2948*25c28e83SPiotr Jasiukajtis	orcc	%l3,%i2,%g0			! if (hx | lx) != 0;
2949*25c28e83SPiotr Jasiukajtis
2950*25c28e83SPiotr Jasiukajtis	cmp	%i2,0				! if (lx) != 0;
2951*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,5f				! if (lx) != 0;
2952*25c28e83SPiotr Jasiukajtis	srl	%o2,31,%o5			! sy;
2953*25c28e83SPiotr Jasiukajtis
2954*25c28e83SPiotr Jasiukajtis	st	%l3,[pz]			! ((int*)pz)[0] = hx;
2955*25c28e83SPiotr Jasiukajtis	ba	3f
2956*25c28e83SPiotr Jasiukajtis	cmp	%o5,0				! if (sy == 0);
2957*25c28e83SPiotr Jasiukajtis2:
2958*25c28e83SPiotr Jasiukajtis	bne,pt	%icc,4f				! if (hx | lx) != 0;
2959*25c28e83SPiotr Jasiukajtis	srl	%l0,31,%o5			! sx;
2960*25c28e83SPiotr Jasiukajtis
2961*25c28e83SPiotr Jasiukajtis	st	%l3,[pz]			! ((int*)pz)[0] = hx;
2962*25c28e83SPiotr Jasiukajtis	srl	%o2,31,%o5			! sy;
2963*25c28e83SPiotr Jasiukajtis	cmp	%o5,0				! if (sy == 0);
2964*25c28e83SPiotr Jasiukajtis3:
2965*25c28e83SPiotr Jasiukajtis	be,pt	%icc,.update_point		! if (sy == 0);
2966*25c28e83SPiotr Jasiukajtis	st	%i2,[pz+4]			! ((int*)pz)[1] = lx;
2967*25c28e83SPiotr Jasiukajtis
2968*25c28e83SPiotr Jasiukajtis	ld	[pz],%f16			! *pz;
2969*25c28e83SPiotr Jasiukajtis	ld	[pz+4],%f17			! *pz;
2970*25c28e83SPiotr Jasiukajtis	fdivd	DONE,%f16,%f16			! *pz = DONE / *pz;
2971*25c28e83SPiotr Jasiukajtis
2972*25c28e83SPiotr Jasiukajtis	st	%f16,[pz]
2973*25c28e83SPiotr Jasiukajtis	ba	.update_point
2974*25c28e83SPiotr Jasiukajtis	st	%f17,[pz+4]
2975*25c28e83SPiotr Jasiukajtis4:
2976*25c28e83SPiotr Jasiukajtis	cmp	%o5,0				! if (sx == 0);
2977*25c28e83SPiotr Jasiukajtis	bne,a,pt	%icc,1f
2978*25c28e83SPiotr Jasiukajtis	nop
2979*25c28e83SPiotr Jasiukajtis
2980*25c28e83SPiotr Jasiukajtis	st	DONE_HI,[pz]			! *pz = DONE;
2981*25c28e83SPiotr Jasiukajtis	ba	.update_point
2982*25c28e83SPiotr Jasiukajtis	st	DONE_LO,[pz+4]			! *pz = DONE;
2983*25c28e83SPiotr Jasiukajtis1:
2984*25c28e83SPiotr Jasiukajtis	fdivd	DZERO,DZERO,%f16		! *pz = DZERO / DZERO;
2985*25c28e83SPiotr Jasiukajtis	st	%f16,[pz]
2986*25c28e83SPiotr Jasiukajtis	ba	.update_point
2987*25c28e83SPiotr Jasiukajtis	st	%f17,[pz+4]
2988*25c28e83SPiotr Jasiukajtis5:
2989*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f16,%f16			! *pz = y0 * y0;
2990*25c28e83SPiotr Jasiukajtis6:
2991*25c28e83SPiotr Jasiukajtis	st	%f16,[pz]
2992*25c28e83SPiotr Jasiukajtis	ba	.update_point
2993*25c28e83SPiotr Jasiukajtis	st	%f17,[pz+4]
2994*25c28e83SPiotr Jasiukajtis
2995*25c28e83SPiotr Jasiukajtis	.align	16
2996*25c28e83SPiotr Jasiukajtis.spec1:
2997*25c28e83SPiotr Jasiukajtis	lda	[px]%asi,%f14			! y0 = *px;
2998*25c28e83SPiotr Jasiukajtis	lda	[px+4]%asi,%f15			! y0 = *px;
2999*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o5
3000*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%i4			! ld ly;
3001*25c28e83SPiotr Jasiukajtis	srl	%o2,31,%o2			! sy
3002*25c28e83SPiotr Jasiukajtis	cmp	%l3,%o5				! if (hx >= 0x7ff00000);
3003*25c28e83SPiotr Jasiukajtis	bcc,pn	%icc,3f
3004*25c28e83SPiotr Jasiukajtis	nop
3005*25c28e83SPiotr Jasiukajtis
3006*25c28e83SPiotr Jasiukajtis	cmp	%l1,%o5				! if (hy > 0x7ff00000);
3007*25c28e83SPiotr Jasiukajtis	bgu,a,pt	%icc,.spec1_nan_inf	! if (hy > 0x7ff00000);
3008*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%f16			! ld y
3009*25c28e83SPiotr Jasiukajtis
3010*25c28e83SPiotr Jasiukajtis	bne,a,pt	%icc,1f			! if (hy != 0x7ff00000);
3011*25c28e83SPiotr Jasiukajtis	cmp	%i2,0				! if (lx != 0);
3012*25c28e83SPiotr Jasiukajtis
3013*25c28e83SPiotr Jasiukajtis	ba	2f				! if (hy == 0x7ff00000);
3014*25c28e83SPiotr Jasiukajtis	cmp	%i4,0				! if (ly != 0);
3015*25c28e83SPiotr Jasiukajtis1:
3016*25c28e83SPiotr Jasiukajtis	bne,pt	%icc,7f				! if (lx != 0);
3017*25c28e83SPiotr Jasiukajtis	nop
3018*25c28e83SPiotr Jasiukajtis
3019*25c28e83SPiotr Jasiukajtis	cmp	%l3,0				! if (hx == 0);
3020*25c28e83SPiotr Jasiukajtis	be,a,pt	%icc,6f				! if (hx == 0);
3021*25c28e83SPiotr Jasiukajtis	st	%l3,[pz]			! ((int*)pz)[0] = hx;
3022*25c28e83SPiotr Jasiukajtis
3023*25c28e83SPiotr Jasiukajtis	cmp	%l3,MASK_0x3ff00000		! if (hx == 0x3ff00000);
3024*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,6f				! if (hx == 0x3ff00000);
3025*25c28e83SPiotr Jasiukajtis	st	%l3,[pz]			! ((int*)pz)[0] = hx;
3026*25c28e83SPiotr Jasiukajtis
3027*25c28e83SPiotr Jasiukajtis	ba	5f
3028*25c28e83SPiotr Jasiukajtis	cmp	%l3,%o5				! if (hx != 0x7ff00000);
3029*25c28e83SPiotr Jasiukajtis3:
3030*25c28e83SPiotr Jasiukajtis	bgu,a,pt	%icc,.spec1_nan_inf	! if (hx > 0x7ff00000);
3031*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%f16			! ld y
3032*25c28e83SPiotr Jasiukajtis
3033*25c28e83SPiotr Jasiukajtis	bne,a,pn	%icc,1f			! if (hx != 0x7ff00000);
3034*25c28e83SPiotr Jasiukajtis	cmp	%l1,%o5				! if (hy > 0x7ff00000);
3035*25c28e83SPiotr Jasiukajtis
3036*25c28e83SPiotr Jasiukajtis	cmp	%i2,0				! if (lx != 0);
3037*25c28e83SPiotr Jasiukajtis	bne,a,pt	%icc,.spec1_nan_inf	! if (lx != 0);
3038*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%f16			! ld y
3039*25c28e83SPiotr Jasiukajtis
3040*25c28e83SPiotr Jasiukajtis	cmp	%l1,%o5				! if (hy > 0x7ff00000);
3041*25c28e83SPiotr Jasiukajtis1:
3042*25c28e83SPiotr Jasiukajtis	bgu,a,pt	%icc,.spec1_nan_inf	! if (hy > 0x7ff00000);
3043*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%f16			! ld y
3044*25c28e83SPiotr Jasiukajtis
3045*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,3f				! if (hy != 0x7ff00000);
3046*25c28e83SPiotr Jasiukajtis	nop
3047*25c28e83SPiotr Jasiukajtis
3048*25c28e83SPiotr Jasiukajtis	cmp	%i4,0				! if (ly != 0);
3049*25c28e83SPiotr Jasiukajtis2:
3050*25c28e83SPiotr Jasiukajtis	bne,a,pn	%icc,.spec1_nan_inf	! if (ly != 0);
3051*25c28e83SPiotr Jasiukajtis	lda	[py]%asi,%f16			! ld y
3052*25c28e83SPiotr Jasiukajtis
3053*25c28e83SPiotr Jasiukajtis	cmp	%l3,MASK_0x3ff00000		! if (hx != 0x3ff00000);
3054*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,1f				! if (hx != 0x3ff00000);
3055*25c28e83SPiotr Jasiukajtis	cmp	%i2,0				! if (lx != 0);
3056*25c28e83SPiotr Jasiukajtis
3057*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,1f				! if (lx != 0);
3058*25c28e83SPiotr Jasiukajtis	nop
3059*25c28e83SPiotr Jasiukajtis
3060*25c28e83SPiotr Jasiukajtis	ld	[py],%f16			! ld y
3061*25c28e83SPiotr Jasiukajtis	ld	[py+4],%f17			! ld y
3062*25c28e83SPiotr Jasiukajtis	fzero	%f14
3063*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f14,%f14			! *pz = *py * 0.0;
3064*25c28e83SPiotr Jasiukajtis	st	%f14,[pz]
3065*25c28e83SPiotr Jasiukajtis	ba	.update_point
3066*25c28e83SPiotr Jasiukajtis	st	%f15,[pz+4]
3067*25c28e83SPiotr Jasiukajtis1:
3068*25c28e83SPiotr Jasiukajtis	sub	%l3,MASK_0x3ff00000,%o7		! (hx - 0x3ff00000);
3069*25c28e83SPiotr Jasiukajtis	srlx	%o7,63,%l2			! (hx - 0x3ff00000) >> 63;
3070*25c28e83SPiotr Jasiukajtis
3071*25c28e83SPiotr Jasiukajtis	cmp	%l2,%o2				! if ((hx < 0x3ff00000) == sy)
3072*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,1f				! if ((hx < 0x3ff00000) == sy)
3073*25c28e83SPiotr Jasiukajtis	st	%l1,[pz]			! ((int*)pz)[0] = hy;
3074*25c28e83SPiotr Jasiukajtis
3075*25c28e83SPiotr Jasiukajtis	st	DZERO_HI,[pz]			! *pz = DZERO;
3076*25c28e83SPiotr Jasiukajtis	ba	.update_point
3077*25c28e83SPiotr Jasiukajtis	st	DZERO_LO,[pz+4]			! *pz = DZERO;
3078*25c28e83SPiotr Jasiukajtis1:
3079*25c28e83SPiotr Jasiukajtis	ba	.update_point
3080*25c28e83SPiotr Jasiukajtis	st	%i4,[pz+4]			! ((int*)pz)[0] = ly;
3081*25c28e83SPiotr Jasiukajtis3:
3082*25c28e83SPiotr Jasiukajtis	cmp	%o0,1086			! if (expy >= 0x43e);
3083*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,4f				! if (expy >= 0x43e)
3084*25c28e83SPiotr Jasiukajtis	nop
3085*25c28e83SPiotr Jasiukajtis
3086*25c28e83SPiotr Jasiukajtis	srl	%l0,31,%l0			! sx;
3087*25c28e83SPiotr Jasiukajtis	cmp	%l0,0				! if (sx == 0);
3088*25c28e83SPiotr Jasiukajtis	be,pn	%icc,2f
3089*25c28e83SPiotr Jasiukajtis	or	%g0,0,%l4
3090*25c28e83SPiotr Jasiukajtis
3091*25c28e83SPiotr Jasiukajtis	cmp	%o0,1076			! if (expy >= 0x434);
3092*25c28e83SPiotr Jasiukajtis
3093*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,2f				! if (expy >= 0x434);
3094*25c28e83SPiotr Jasiukajtis	or	%g0,2,%l4			! yisint = 2;
3095*25c28e83SPiotr Jasiukajtis
3096*25c28e83SPiotr Jasiukajtis	cmp	%o0,1023			! if (expy < 0x3ff);
3097*25c28e83SPiotr Jasiukajtis	bl,a,pn	%icc,2f				! if (expy < 0x3ff);
3098*25c28e83SPiotr Jasiukajtis	or	%g0,0,%l4			! yisint = 0;
3099*25c28e83SPiotr Jasiukajtis
3100*25c28e83SPiotr Jasiukajtis	cmp	%o0,1043			! if (expy <= (20 + 0x3ff));
3101*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,1f
3102*25c28e83SPiotr Jasiukajtis	sub	%o0,1023,%l2			! (expy - 0x3ff);
3103*25c28e83SPiotr Jasiukajtis
3104*25c28e83SPiotr Jasiukajtis	sub	%g0,%l2,%l2			! 0 - (expy - 0x3ff);
3105*25c28e83SPiotr Jasiukajtis	add	%l2,52,%l2			! sh = 52 - (expy - 0x3ff);
3106*25c28e83SPiotr Jasiukajtis	srl	%i4,%l2,%o0			! i0 = ly >> sh;
3107*25c28e83SPiotr Jasiukajtis	sll	%o0,%l2,%l2			! i0 << sh;
3108*25c28e83SPiotr Jasiukajtis	cmp	%l2,%i4				! if ((i0 << sh) != ly);
3109*25c28e83SPiotr Jasiukajtis	bne,a,pn	%icc,2f			! if ((i0 << sh) != ly);
3110*25c28e83SPiotr Jasiukajtis	or	%g0,0,%l4			! yisint = 0;
3111*25c28e83SPiotr Jasiukajtis
3112*25c28e83SPiotr Jasiukajtis	and	%o0,1,%o0			! i0 &= 1;
3113*25c28e83SPiotr Jasiukajtis	sub	%g0,%o0,%o0
3114*25c28e83SPiotr Jasiukajtis
3115*25c28e83SPiotr Jasiukajtis	ba	2f
3116*25c28e83SPiotr Jasiukajtis	add	%o0,2,%l4			! yisint = 2 - (i0 & 1);
3117*25c28e83SPiotr Jasiukajtis1:
3118*25c28e83SPiotr Jasiukajtis	cmp	%i4,0				! if (ly != 0)
3119*25c28e83SPiotr Jasiukajtis	bne,a,pn	%icc,2f			! if (ly != 0)
3120*25c28e83SPiotr Jasiukajtis	or	%g0,0,%l4			! yisint = 0;
3121*25c28e83SPiotr Jasiukajtis
3122*25c28e83SPiotr Jasiukajtis	sub	%o0,1023,%l2			! (expy - 0x3ff);
3123*25c28e83SPiotr Jasiukajtis	sub	%g0,%l2,%l2			! 0 - (expy - 0x3ff);
3124*25c28e83SPiotr Jasiukajtis	add	%l2,20,%l2			! sh = 20 - (expy - 0x3ff);
3125*25c28e83SPiotr Jasiukajtis	srl	%l1,%l2,%o0			! i0 = hy >> sh;
3126*25c28e83SPiotr Jasiukajtis	sll	%o0,%l2,%l2			! i0 << sh;
3127*25c28e83SPiotr Jasiukajtis	cmp	%l2,%l1				! if ((i0 << sh) != hy);
3128*25c28e83SPiotr Jasiukajtis	bne,a,pn	%icc,2f			! if ((i0 << sh) != hy);
3129*25c28e83SPiotr Jasiukajtis	or	%g0,0,%l4			! yisint = 0;
3130*25c28e83SPiotr Jasiukajtis
3131*25c28e83SPiotr Jasiukajtis	and	%o0,1,%o0			! i0 &= 1;
3132*25c28e83SPiotr Jasiukajtis	sub	%g0,%o0,%o0
3133*25c28e83SPiotr Jasiukajtis	add	%o0,2,%l4			! yisint = 2 - (i0 & 1);
3134*25c28e83SPiotr Jasiukajtis2:
3135*25c28e83SPiotr Jasiukajtis	cmp	%o2,0				! if (sy == 0);
3136*25c28e83SPiotr Jasiukajtis	sll	%l4,31,%l4			! yisint << 31;
3137*25c28e83SPiotr Jasiukajtis	be,pt	%icc,1f				! if (sy == 0);
3138*25c28e83SPiotr Jasiukajtis	add	%l3,%l4,%l3			! hx += yisint << 31;
3139*25c28e83SPiotr Jasiukajtis
3140*25c28e83SPiotr Jasiukajtis	or	%g0,%l4,%l3			! hx = yisint << 31;
3141*25c28e83SPiotr Jasiukajtis	or	%g0,0,%i2			! lx = 0;
3142*25c28e83SPiotr Jasiukajtis1:
3143*25c28e83SPiotr Jasiukajtis	st	%l3,[pz]			! ((int*)pz)[0] = hx;
3144*25c28e83SPiotr Jasiukajtis	ba	.update_point
3145*25c28e83SPiotr Jasiukajtis	st	%i2,[pz+4]			! ((int*)pz)[1] = lx;
3146*25c28e83SPiotr Jasiukajtis4:
3147*25c28e83SPiotr Jasiukajtis	cmp	%i2,0				! if (lx != 0);
3148*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,7f				! if (lx != 0);
3149*25c28e83SPiotr Jasiukajtis	nop
3150*25c28e83SPiotr Jasiukajtis
3151*25c28e83SPiotr Jasiukajtis	cmp	%l3,%o5				! if (hx != 0x7ff00000);
3152*25c28e83SPiotr Jasiukajtis5:
3153*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,7f				! if (hx != 0x7ff00000);
3154*25c28e83SPiotr Jasiukajtis	nop
3155*25c28e83SPiotr Jasiukajtis
3156*25c28e83SPiotr Jasiukajtis	st	%l3,[pz]			! ((int*)pz)[0] = hx;
3157*25c28e83SPiotr Jasiukajtis6:
3158*25c28e83SPiotr Jasiukajtis	cmp	%o2,0				! if (sy == 0);
3159*25c28e83SPiotr Jasiukajtis	be,pt	%icc,.update_point
3160*25c28e83SPiotr Jasiukajtis	st	%i2,[pz+4]			! ((int*)pz)[1] = lx;
3161*25c28e83SPiotr Jasiukajtis
3162*25c28e83SPiotr Jasiukajtis	ld	[pz],%f14			! ld *pz;
3163*25c28e83SPiotr Jasiukajtis	ld	[pz+4],%f15			! ld *pz;
3164*25c28e83SPiotr Jasiukajtis	fdivd	DONE,%f14,%f14			! *pz = DONE / *pz;
3165*25c28e83SPiotr Jasiukajtis	st	%f14,[pz]
3166*25c28e83SPiotr Jasiukajtis	ba	.update_point
3167*25c28e83SPiotr Jasiukajtis	st	%f15,[pz+4]
3168*25c28e83SPiotr Jasiukajtis7:
3169*25c28e83SPiotr Jasiukajtis	sub	%l3,MASK_0x3ff00000,%o7		! hx - 0x3ff00000;
3170*25c28e83SPiotr Jasiukajtis	srlx	%o7,63,%l2			! (hx - 0x3ff00000) >> 63;
3171*25c28e83SPiotr Jasiukajtis	cmp	%l2,%o2				! if (hx < 0x3ff00000) == sy);
3172*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,1f				! if (hx < 0x3ff00000) == sy);
3173*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_HUGE],%f14		! y0 = _HUGE;
3174*25c28e83SPiotr Jasiukajtis
3175*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_TINY],%f14		! y0 = _TINY;
3176*25c28e83SPiotr Jasiukajtis1:
3177*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f14,%f14			! *pz = y0 * y0
3178*25c28e83SPiotr Jasiukajtis
3179*25c28e83SPiotr Jasiukajtis	st	%f14,[pz]
3180*25c28e83SPiotr Jasiukajtis	ba .update_point
3181*25c28e83SPiotr Jasiukajtis	st	%f15,[pz+4]
3182*25c28e83SPiotr Jasiukajtis
3183*25c28e83SPiotr Jasiukajtis	.align	16
3184*25c28e83SPiotr Jasiukajtis.spec1_nan_inf:
3185*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f17			! ld y
3186*25c28e83SPiotr Jasiukajtis	fmuld 	%f14,%f16,%f16              	! *pz = *px * *py
3187*25c28e83SPiotr Jasiukajtis	st	%f16,[pz]
3188*25c28e83SPiotr Jasiukajtis	ba 	.update_point
3189*25c28e83SPiotr Jasiukajtis	st	%f17,[pz+4]
3190*25c28e83SPiotr Jasiukajtis
3191*25c28e83SPiotr Jasiukajtis
3192*25c28e83SPiotr Jasiukajtis	.align	16
3193*25c28e83SPiotr Jasiukajtis.update_point:
3194*25c28e83SPiotr Jasiukajtis	add 	px,stridex,px
3195*25c28e83SPiotr Jasiukajtis	ba 	.begin1
3196*25c28e83SPiotr Jasiukajtis	add 	py,stridey,py
3197*25c28e83SPiotr Jasiukajtis
3198*25c28e83SPiotr Jasiukajtis	.align  64
3199*25c28e83SPiotr Jasiukajtis.stridex_zero:
3200*25c28e83SPiotr Jasiukajtis
3201*25c28e83SPiotr Jasiukajtis	sra	stridez,0,stridez
3202*25c28e83SPiotr Jasiukajtis	ld	[%i1],%f18			! y0 = px[0];
3203*25c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f19			! y0 = px[0];
3204*25c28e83SPiotr Jasiukajtis
3205*25c28e83SPiotr Jasiukajtis	sra	%i4,0,stridey
3206*25c28e83SPiotr Jasiukajtis	sethi	%hi(0xffc00),MASK_0x000fffff
3207*25c28e83SPiotr Jasiukajtis	ldd	[%l0+80],%f12			! ld MMANT
3208*25c28e83SPiotr Jasiukajtis
3209*25c28e83SPiotr Jasiukajtis	sllx	stridez,3,stridez
3210*25c28e83SPiotr Jasiukajtis	add	MASK_0x000fffff,0x3ff,MASK_0x000fffff
3211*25c28e83SPiotr Jasiukajtis	ldd	[%l0+8],%f56			! ld  DONE
3212*25c28e83SPiotr Jasiukajtis
3213*25c28e83SPiotr Jasiukajtis	sllx	stridey,3,stridey
3214*25c28e83SPiotr Jasiukajtis	ldd	[%l0+88],%f14			! ld  MROUND
3215*25c28e83SPiotr Jasiukajtis
3216*25c28e83SPiotr Jasiukajtis	ldd	[%l0+96],%f16			! ld  MHI20
3217*25c28e83SPiotr Jasiukajtis	cmp	%o0,MASK_0x000fffff		! if (exp <= 0xfffff)
3218*25c28e83SPiotr Jasiukajtis
3219*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,1f
3220*25c28e83SPiotr Jasiukajtis	srl	%o0,20,%o0			! exp = (exp >> 20);
3221*25c28e83SPiotr Jasiukajtis
3222*25c28e83SPiotr Jasiukajtis	fxtod	%f18,%f18			! y0 = (double) ((long long *) & y0)[0];
3223*25c28e83SPiotr Jasiukajtis	std	%f18,[%fp+tmp0_hi]		! exp = ((unsigned int*) & y0)[0];
3224*25c28e83SPiotr Jasiukajtis	or	%g0,1074,%i2
3225*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0_hi],%o0		! exp = ((unsigned int*) & y0)[0];
3226*25c28e83SPiotr Jasiukajtis	srl	%o0,20,%o0			! exp = (exp >> 20);
3227*25c28e83SPiotr Jasiukajtis	sub	%o0,%i2,%o0			! exp -= (1023 + 51) << 20;
3228*25c28e83SPiotr Jasiukajtis1:
3229*25c28e83SPiotr Jasiukajtis	ldd	[%l0+24],MHI32
3230*25c28e83SPiotr Jasiukajtis	sub	%o0,2046,%l5			! exp = exp - 2046;
3231*25c28e83SPiotr Jasiukajtis	fand	%f18,%f12,%f18			! x = vis_fand(y0, MMANT);
3232*25c28e83SPiotr Jasiukajtis
3233*25c28e83SPiotr Jasiukajtis	ldd	[%l0+48],%f10			! ld KA1
3234*25c28e83SPiotr Jasiukajtis	for	%f18,%f56,%f18			! x = vis_for(x, DONE);
3235*25c28e83SPiotr Jasiukajtis
3236*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_HI],%f28		! ld KA1_HI
3237*25c28e83SPiotr Jasiukajtis	fpadd32	%f18,%f14,%f44			! ax = vis_fpadd32(x, MROUND);
3238*25c28e83SPiotr Jasiukajtis
3239*25c28e83SPiotr Jasiukajtis	ldd	[%l0+32],%f46			! ld KA5
3240*25c28e83SPiotr Jasiukajtis	fand	%f44,%f16,%f60			! ax = vis_fand(ax, MHI20);
3241*25c28e83SPiotr Jasiukajtis
3242*25c28e83SPiotr Jasiukajtis	std	%f60,[%fp+tmp0_hi]		! itmp0 = (hx >> 20);
3243*25c28e83SPiotr Jasiukajtis	faddd	%f18,%f60,%f50			! ux = x + ax;
3244*25c28e83SPiotr Jasiukajtis
3245*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_LO],%f52		! ld KA1_LO
3246*25c28e83SPiotr Jasiukajtis	fsubd	%f18,%f60,%f30			! u = x - ax;
3247*25c28e83SPiotr Jasiukajtis
3248*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0_hi],%i2		! itmp0 = (hx >> 20);
3249*25c28e83SPiotr Jasiukajtis	fdivd	%f56,%f50,%f56			! yd = DONE / ux;
3250*25c28e83SPiotr Jasiukajtis	fand	%f50,MHI32,%f50			! ux = vis_fand(ux, MHI32);
3251*25c28e83SPiotr Jasiukajtis
3252*25c28e83SPiotr Jasiukajtis	srl	%i2,20,%l3			! itmp0 = (hx >> 20);
3253*25c28e83SPiotr Jasiukajtis	ldd	[%l0+40],%f26			! ld KA3
3254*25c28e83SPiotr Jasiukajtis
3255*25c28e83SPiotr Jasiukajtis	srl	%i2,8,%i2			! i = (hx >> 8);
3256*25c28e83SPiotr Jasiukajtis	add	%l5,%l3,%l5			! exp += itmp0;
3257*25c28e83SPiotr Jasiukajtis
3258*25c28e83SPiotr Jasiukajtis	and	%i2,4080,%o3			! i = i & 0xff0;
3259*25c28e83SPiotr Jasiukajtis	sll	%l5,8,%l3			! itmp0 = exp << 8;
3260*25c28e83SPiotr Jasiukajtis	st	%l3,[%fp+tmp1_hi]		! (double)itmp0;
3261*25c28e83SPiotr Jasiukajtis	fsubd	%f50,%f60,%f60			! dtmp0 = (ux - ax);
3262*25c28e83SPiotr Jasiukajtis
3263*25c28e83SPiotr Jasiukajtis	add	%o3,8,%i2
3264*25c28e83SPiotr Jasiukajtis	ldd	[%o3+LOGTBL],%f58		! y = *(double *)((char*)__mt_constlog2 + i);
3265*25c28e83SPiotr Jasiukajtis
3266*25c28e83SPiotr Jasiukajtis	ldd	[%i2+LOGTBL],%f20		! dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8);
3267*25c28e83SPiotr Jasiukajtis
3268*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp1_hi],%f8		! (double)itmp0;
3269*25c28e83SPiotr Jasiukajtis
3270*25c28e83SPiotr Jasiukajtis	fitod	%f8,%f62			! (double)itmp0;
3271*25c28e83SPiotr Jasiukajtis
3272*25c28e83SPiotr Jasiukajtis	faddd	%f58,%f62,%f22			! y += (double)itmp0;
3273*25c28e83SPiotr Jasiukajtis
3274*25c28e83SPiotr Jasiukajtis	fsubd	%f18,%f60,%f62			! s_l = (x - dtmp0);
3275*25c28e83SPiotr Jasiukajtis	fmuld	%f30,%f56,%f16			! s = u * yd;
3276*25c28e83SPiotr Jasiukajtis
3277*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f56,%f8			! dtmp0 = KA1 * yd;
3278*25c28e83SPiotr Jasiukajtis	fand	%f16,MHI32,%f58			! s_h = vis_fand(s, MHI32);
3279*25c28e83SPiotr Jasiukajtis
3280*25c28e83SPiotr Jasiukajtis	ldd	[%l0+56],HTHRESH
3281*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f16,%f18			! y = s * s;
3282*25c28e83SPiotr Jasiukajtis
3283*25c28e83SPiotr Jasiukajtis	ldd	[%l0+64],LTHRESH
3284*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f50,%f60			! dtmp0 = s_h * ux;
3285*25c28e83SPiotr Jasiukajtis
3286*25c28e83SPiotr Jasiukajtis	ldd	[%l0+72],XKB4
3287*25c28e83SPiotr Jasiukajtis	fmuld	%f28,%f58,%f50			! yd = KA1_HI * s_h;
3288*25c28e83SPiotr Jasiukajtis
3289*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB1],XKB1
3290*25c28e83SPiotr Jasiukajtis	fmuld	%f46,%f18,%f56			! dtmp8 = KA5 * y;
3291*25c28e83SPiotr Jasiukajtis
3292*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB2],XKB2
3293*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f62,%f46			! dtmp1 = s_h * s_l;
3294*25c28e83SPiotr Jasiukajtis	fsubd	%f30,%f60,%f62			! s_l = u - dtmp0;
3295*25c28e83SPiotr Jasiukajtis
3296*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB3],XKB3
3297*25c28e83SPiotr Jasiukajtis	fmuld	%f52,%f58,%f10			! dtmp1 = KA1_LO * s_h;
3298*25c28e83SPiotr Jasiukajtis	faddd	%f22,%f50,%f28			! m_h = y + yd;
3299*25c28e83SPiotr Jasiukajtis
3300*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_KB5],XKB5
3301*25c28e83SPiotr Jasiukajtis	faddd	%f56,%f26,%f58			! dtmp8 = dtmp8 + KA3;
3302*25c28e83SPiotr Jasiukajtis
3303*25c28e83SPiotr Jasiukajtis	add	EXPTBL,8,EXPTBL_P8
3304*25c28e83SPiotr Jasiukajtis	fsubd	%f62,%f46,%f46			! s_l -= dtmp1;
3305*25c28e83SPiotr Jasiukajtis
3306*25c28e83SPiotr Jasiukajtis	fsubd	%f28,%f22,%f60			! dtmp2 = m_h - y;
3307*25c28e83SPiotr Jasiukajtis
3308*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+tmp0_lo]		! *((int*)&dtmp0 + 1) = 0;
3309*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f10,%f56			! dtmp0 += dtmp1;
3310*25c28e83SPiotr Jasiukajtis
3311*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+tmp1_lo]		! *((int*)&dtmp0 + 1) = 0;
3312*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f18,%f18			! dtmp8 = dtmp8 * y;
3313*25c28e83SPiotr Jasiukajtis
3314*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+tmp2_lo]		! *((int*)&dtmp0 + 1) = 0;
3315*25c28e83SPiotr Jasiukajtis	fmuld	%f8,%f46,%f62			! s_l = dtmp0 * s_l;
3316*25c28e83SPiotr Jasiukajtis
3317*25c28e83SPiotr Jasiukajtis	fsubd	%f60,%f50,%f10			! dtmp2 -= yd;
3318*25c28e83SPiotr Jasiukajtis
3319*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f16,%f58			! s = dtmp8 * s;
3320*25c28e83SPiotr Jasiukajtis
3321*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f62,%f46			! dtmp2 -= s_l;
3322*25c28e83SPiotr Jasiukajtis
3323*25c28e83SPiotr Jasiukajtis	fsubd	%f58,%f46,%f50			! y = s - dtmp2;
3324*25c28e83SPiotr Jasiukajtis
3325*25c28e83SPiotr Jasiukajtis	faddd	%f50,%f56,%f60			! y += dtmp0;
3326*25c28e83SPiotr Jasiukajtis
3327*25c28e83SPiotr Jasiukajtis	faddd	%f60,%f28,%f18			! dtmp0 = y + m_h;
3328*25c28e83SPiotr Jasiukajtis
3329*25c28e83SPiotr Jasiukajtis	fand	%f18,MHI32,s_h			! s_h = vis_fand(dtmp0, MHI32);
3330*25c28e83SPiotr Jasiukajtis
3331*25c28e83SPiotr Jasiukajtis	fsubd	s_h,%f28,%f62			! dtmp0 = (s_h - m_h);
3332*25c28e83SPiotr Jasiukajtis
3333*25c28e83SPiotr Jasiukajtis	fsubd	%f60,%f62,yr			! yr = y - dtmp0;
3334*25c28e83SPiotr Jasiukajtis
3335*25c28e83SPiotr Jasiukajtis.xbegin:
3336*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp_counter],counter
3337*25c28e83SPiotr Jasiukajtis	ldx	[%fp+tmp_py],py
3338*25c28e83SPiotr Jasiukajtis	st	%g0,[%fp+tmp_counter]
3339*25c28e83SPiotr Jasiukajtis.xbegin1:
3340*25c28e83SPiotr Jasiukajtis	subcc	counter,1,counter
3341*25c28e83SPiotr Jasiukajtis	bneg,pn	%icc,.end
3342*25c28e83SPiotr Jasiukajtis	nop
3343*25c28e83SPiotr Jasiukajtis
3344*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%l2			! (Y0_3) hy = *py;
3345*25c28e83SPiotr Jasiukajtis
3346*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%f18			! (Y0_3) yd = *py;
3347*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f19			! (Y0_3) yd = *py;
3348*25c28e83SPiotr Jasiukajtis
3349*25c28e83SPiotr Jasiukajtis	sra	%l2,20,%l5			! (Y0_3) expy = hy >> 20;
3350*25c28e83SPiotr Jasiukajtis
3351*25c28e83SPiotr Jasiukajtis	and	%l5,0x7ff,%l5			! (Y0_3) expy &= 0x7ff;
3352*25c28e83SPiotr Jasiukajtis
3353*25c28e83SPiotr Jasiukajtis	cmp	%l5,959				! (Y0_3) if (expy < 0x3fb);
3354*25c28e83SPiotr Jasiukajtis
3355*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.xspec0			! (Y0_3) if (expy < 0x3fb);
3356*25c28e83SPiotr Jasiukajtis	nop
3357*25c28e83SPiotr Jasiukajtis
3358*25c28e83SPiotr Jasiukajtis	cmp	%l5,1086			! (Y0_2) if (expy >= 0x43e);
3359*25c28e83SPiotr Jasiukajtis
3360*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.xspec1			! (Y0_2) if (expy >= 0x43e);
3361*25c28e83SPiotr Jasiukajtis	nop
3362*25c28e83SPiotr Jasiukajtis
3363*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! y += stridey;
3364*25c28e83SPiotr Jasiukajtis	fand	%f18,MHI32,%f12			! (Y0_2) s = vis_fand(yd, MHI32);
3365*25c28e83SPiotr Jasiukajtis
3366*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%l5			! (Y1_2) hy = *py;
3367*25c28e83SPiotr Jasiukajtis
3368*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%f10			! (Y1_2) yd = *py;
3369*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f11			! (Y1_2) yd = *py;
3370*25c28e83SPiotr Jasiukajtis
3371*25c28e83SPiotr Jasiukajtis	sra	%l5,20,%l5			! (Y1_2) expy = hy >> 20;
3372*25c28e83SPiotr Jasiukajtis
3373*25c28e83SPiotr Jasiukajtis	and	%l5,0x7ff,%l5			! (Y1_2) expy &= 0x7ff;
3374*25c28e83SPiotr Jasiukajtis
3375*25c28e83SPiotr Jasiukajtis	cmp	%l5,959				! (Y1_2) if (expy < 0x3fb);
3376*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! y += stridey;
3377*25c28e83SPiotr Jasiukajtis	fmuld	s_h,%f12,%f50			! (Y0_2) s = s_h * s;
3378*25c28e83SPiotr Jasiukajtis	fsubd	%f18,%f12,%f56			! (Y0_2) dtmp0 = (yd - s);
3379*25c28e83SPiotr Jasiukajtis
3380*25c28e83SPiotr Jasiukajtis	fmuld	%f18,yr,%f26			! (Y0_2) dtmp1 = yd * yr;
3381*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.xupdate0			! (Y1_2) if (expy < 0x3fb);
3382*25c28e83SPiotr Jasiukajtis	nop
3383*25c28e83SPiotr Jasiukajtis.xcont0:
3384*25c28e83SPiotr Jasiukajtis	cmp	%l5,1086			! (Y1_2) if (expy >= 0x43e);
3385*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.xupdate1			! (Y0_2) if (expy >= 0x43e);
3386*25c28e83SPiotr Jasiukajtis	nop
3387*25c28e83SPiotr Jasiukajtis.xcont1:
3388*25c28e83SPiotr Jasiukajtis	fmuld	%f56,s_h,%f58			! (Y0_2) dtmp0 *= s_h;
3389*25c28e83SPiotr Jasiukajtis	fand	%f10,MHI32,%f12			! (Y1_2) s = vis_fand(yd, MHI32);
3390*25c28e83SPiotr Jasiukajtis
3391*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f50,HTHRESH		! (Y0_2) if (s > HTHRESH);
3392*25c28e83SPiotr Jasiukajtis
3393*25c28e83SPiotr Jasiukajtis	faddd	%f58,%f26,%f48			! (Y0_2) yd = dtmp0 + dtmp1;
3394*25c28e83SPiotr Jasiukajtis
3395*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%l5			! (Y2_2) hy = *py;
3396*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f50		! (Y0_2) s = HTHRESH;
3397*25c28e83SPiotr Jasiukajtis
3398*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,DZERO,%f48		! (Y0_2) yd = DZERO;
3399*25c28e83SPiotr Jasiukajtis
3400*25c28e83SPiotr Jasiukajtis	fcmped	%fcc1,%f50,LTHRESH		! (Y0_2) if (s < LTHRESH);
3401*25c28e83SPiotr Jasiukajtis
3402*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%f14			! (Y2_2) yd = *py;
3403*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f15			! (Y2_2) yd = *py;
3404*25c28e83SPiotr Jasiukajtis
3405*25c28e83SPiotr Jasiukajtis	sra	%l5,20,%l5			! (Y2_2) expy = hy >> 20;
3406*25c28e83SPiotr Jasiukajtis
3407*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,DZERO,%f48		! (Y0_2) yd = DZERO;
3408*25c28e83SPiotr Jasiukajtis
3409*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! y += stridey;
3410*25c28e83SPiotr Jasiukajtis	and	%l5,0x7ff,%l5			! (Y2_2) expy &= 0x7ff;
3411*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,LTHRESH,%f50		! (Y0_2) s = LTHRESH;
3412*25c28e83SPiotr Jasiukajtis
3413*25c28e83SPiotr Jasiukajtis	cmp	%l5,959				! (Y2_2) if (expy < 0x3fb);
3414*25c28e83SPiotr Jasiukajtis
3415*25c28e83SPiotr Jasiukajtis	fmuld	s_h,%f12,%f16			! (Y1_2) s = s_h * s;
3416*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.xupdate2			! (Y2_2) if (expy < 0x3fb);
3417*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f56			! (Y1_2) dtmp0 = (yd - s);
3418*25c28e83SPiotr Jasiukajtis.xcont2:
3419*25c28e83SPiotr Jasiukajtis	cmp	%l5,1086			! (Y2_2) if (expy >= 0x43e);
3420*25c28e83SPiotr Jasiukajtis	fmuld	%f10,yr,%f8			! (Y1_2) dtmp1 = yd * yr;
3421*25c28e83SPiotr Jasiukajtis	faddd	%f50,%f48,%f28			! (Y0_2) dtmp0 = (s + yd);
3422*25c28e83SPiotr Jasiukajtis
3423*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%l5			! (Y0_3) hy = *py;
3424*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.xupdate3			! (Y2_2) if (expy >= 0x43e);
3425*25c28e83SPiotr Jasiukajtis	nop
3426*25c28e83SPiotr Jasiukajtis.xcont3:
3427*25c28e83SPiotr Jasiukajtis	fmuld	%f56,s_h,%f58			! (Y1_2) dtmp0 *= s_h;
3428*25c28e83SPiotr Jasiukajtis	fand	%f14,MHI32,%f44			! (Y2_2) s = vis_fand(yd, MHI32);
3429*25c28e83SPiotr Jasiukajtis
3430*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f16,HTHRESH		! (Y1_2) if (s > HTHRESH);
3431*25c28e83SPiotr Jasiukajtis
3432*25c28e83SPiotr Jasiukajtis	fdtoi	%f28,%f3			! (Y0_2) u = (double)(int)dtmp0;
3433*25c28e83SPiotr Jasiukajtis
3434*25c28e83SPiotr Jasiukajtis	st	%f3,[%fp+tmp3]			! (Y0_2) ind = (int)dtmp0;
3435*25c28e83SPiotr Jasiukajtis
3436*25c28e83SPiotr Jasiukajtis	faddd	%f58,%f8,%f10			! (Y1_2) yd = dtmp0 + dtmp1;
3437*25c28e83SPiotr Jasiukajtis
3438*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%f18			! (Y0_3) yd = *py;
3439*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f19			! (Y0_3) yd = *py;
3440*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f16		! (Y1_2) s = HTHRESH;
3441*25c28e83SPiotr Jasiukajtis
3442*25c28e83SPiotr Jasiukajtis	fitod	%f3,%f58			! (Y0_2) u = (double)(int)dtmp0;
3443*25c28e83SPiotr Jasiukajtis
3444*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,DZERO,%f10		! (Y1_2) yd = DZERO;
3445*25c28e83SPiotr Jasiukajtis
3446*25c28e83SPiotr Jasiukajtis	sra	%l5,20,%l5			! (Y0_3) expy = hy >> 20;
3447*25c28e83SPiotr Jasiukajtis	fcmped	%fcc1,%f16,LTHRESH		! (Y1_2) if (s < LTHRESH);
3448*25c28e83SPiotr Jasiukajtis
3449*25c28e83SPiotr Jasiukajtis	and	%l5,0x7ff,%l5			! (Y0_3) expy &= 0x7ff;
3450*25c28e83SPiotr Jasiukajtis	fsubd	%f50,%f58,%f54			! (Y0_2) y = s - u;
3451*25c28e83SPiotr Jasiukajtis
3452*25c28e83SPiotr Jasiukajtis	cmp	%l5,959				! (Y0_3) if (expy < 0x3fb);
3453*25c28e83SPiotr Jasiukajtis
3454*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.xupdate4			! (Y0_3) if (expy < 0x3fb);
3455*25c28e83SPiotr Jasiukajtis	nop
3456*25c28e83SPiotr Jasiukajtis.xcont4:
3457*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,DZERO,%f10		! (Y1_2) yd = DZERO;
3458*25c28e83SPiotr Jasiukajtis
3459*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,LTHRESH,%f16		! (Y1_2) s = LTHRESH;
3460*25c28e83SPiotr Jasiukajtis
3461*25c28e83SPiotr Jasiukajtis	faddd	%f54,%f48,%f54			! (Y0_2) y = y + yd;
3462*25c28e83SPiotr Jasiukajtis
3463*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%o2			! (Y0_2) ind = (int)dtmp0;
3464*25c28e83SPiotr Jasiukajtis
3465*25c28e83SPiotr Jasiukajtis
3466*25c28e83SPiotr Jasiukajtis	fsubd	%f14,%f44,%f50			! (Y2_1) dtmp0 = (yd - s);
3467*25c28e83SPiotr Jasiukajtis
3468*25c28e83SPiotr Jasiukajtis	cmp	%l5,1086			! (Y0_2) if (expy >= 0x43e);
3469*25c28e83SPiotr Jasiukajtis
3470*25c28e83SPiotr Jasiukajtis	fmuld	s_h,%f44,%f44			! (Y2_1) s = s_h * s;
3471*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.xupdate5			! (Y0_2) if (expy >= 0x43e);
3472*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f22			! (Y1_1) dtmp0 = (s + yd);
3473*25c28e83SPiotr Jasiukajtis.xcont5:
3474*25c28e83SPiotr Jasiukajtis	sra	%o2,8,%o0			! (Y0_1) ind >>= 8;
3475*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! y += stridey;
3476*25c28e83SPiotr Jasiukajtis	fmuld	%f14,yr,%f20			! (Y2_1) dtmp1 = yd * yr;
3477*25c28e83SPiotr Jasiukajtis
3478*25c28e83SPiotr Jasiukajtis	add	%o0,1021,%i1			! (Y0_1) eflag = (ind + 1021);
3479*25c28e83SPiotr Jasiukajtis	fmuld	XKB5,%f54,%f48			! (Y0_1) dtmp0 = XKB5 * y;
3480*25c28e83SPiotr Jasiukajtis
3481*25c28e83SPiotr Jasiukajtis	sub	%g0,%o0,%o3			! (Y0_1) gflag = (1022 - ind);
3482*25c28e83SPiotr Jasiukajtis	fmuld	%f50,s_h,%f52			! (Y2_1) dtmp0 *= s_h;
3483*25c28e83SPiotr Jasiukajtis	fand	%f18,MHI32,%f12			! (Y0_2) s = vis_fand(yd, MHI32);
3484*25c28e83SPiotr Jasiukajtis
3485*25c28e83SPiotr Jasiukajtis	sra	%i1,31,%o1			! (Y0_1) eflag = eflag >> 31;
3486*25c28e83SPiotr Jasiukajtis	add	%o3,1022,%l0			! (Y0_1) gflag = (1022 - ind);
3487*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f44,HTHRESH		! (Y2_1) if (s > HTHRESH);
3488*25c28e83SPiotr Jasiukajtis
3489*25c28e83SPiotr Jasiukajtis	sra	%l0,31,%o4			! (Y0_1) gflag = gflag >> 31;
3490*25c28e83SPiotr Jasiukajtis	and	%o1,54,%i4			! (Y0_1) itmp0 = 54 & eflag;
3491*25c28e83SPiotr Jasiukajtis	fdtoi	%f22,%f4			! (Y1_1) u = (double)(int)dtmp0;
3492*25c28e83SPiotr Jasiukajtis
3493*25c28e83SPiotr Jasiukajtis	add	%o0,%i4,%i2			! (Y0_1) ind = ind + itmp0;
3494*25c28e83SPiotr Jasiukajtis	and	%o4,52,%l3			! (Y0_1) itmp1 = 52 & gflag;
3495*25c28e83SPiotr Jasiukajtis	st	%f4,[%fp+tmp4]			! (Y1_1) ind = (int)dtmp0;
3496*25c28e83SPiotr Jasiukajtis	faddd	%f48,XKB4,%f60			! (Y0_1) dtmp1 = dtmp0 + XKB4;
3497*25c28e83SPiotr Jasiukajtis
3498*25c28e83SPiotr Jasiukajtis	sub	%i2,%l3,%l2			! (Y0_1) ind = ind - itmp1;
3499*25c28e83SPiotr Jasiukajtis	sub	%o1,%o4,%o4			! (Y0_1) ind = eflag - gflag;
3500*25c28e83SPiotr Jasiukajtis	faddd	%f52,%f20,%f62			! (Y2_1) yd = dtmp0 + dtmp1;
3501*25c28e83SPiotr Jasiukajtis
3502*25c28e83SPiotr Jasiukajtis	sll	%l2,20,%o3			! (Y0_1) ind <<= 20;
3503*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%l5			! (Y1_2) hy = *py;
3504*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f44		! (Y2_1) s = HTHRESH;
3505*25c28e83SPiotr Jasiukajtis
3506*25c28e83SPiotr Jasiukajtis	st	%o3,[%fp+tmp0_hi]		! (Y0_1) *(int*)&dtmp0 = ind;
3507*25c28e83SPiotr Jasiukajtis	fitod	%f4,%f48			! (Y1_1) u = (double)(int)dtmp0;
3508*25c28e83SPiotr Jasiukajtis
3509*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f54,%f60			! (Y0_1) dtmp2 = dtmp1 * y;
3510*25c28e83SPiotr Jasiukajtis
3511*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%f20			! (Y1_2) yd = *py;
3512*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f21			! (Y1_2) yd = *py;
3513*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,DZERO,%f62		! (Y2_1) yd = DZERO;
3514*25c28e83SPiotr Jasiukajtis
3515*25c28e83SPiotr Jasiukajtis	fcmped	%fcc1,%f44,LTHRESH		! (Y2_1) if (s < LTHRESH);
3516*25c28e83SPiotr Jasiukajtis
3517*25c28e83SPiotr Jasiukajtis	fsubd	%f16,%f48,%f50			! (Y1_1) y = s - u;
3518*25c28e83SPiotr Jasiukajtis
3519*25c28e83SPiotr Jasiukajtis	faddd	%f60,XKB3,%f60			! (Y0_1) dtmp3 = dtmp2 + XKB3;
3520*25c28e83SPiotr Jasiukajtis
3521*25c28e83SPiotr Jasiukajtis	sra	%l5,20,%l5			! (Y1_2) expy = hy >> 20;
3522*25c28e83SPiotr Jasiukajtis
3523*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,DZERO,%f62		! (Y2_1) yd = DZERO;
3524*25c28e83SPiotr Jasiukajtis
3525*25c28e83SPiotr Jasiukajtis	and	%l5,0x7ff,%l5			! (Y1_2) expy &= 0x7ff;
3526*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,LTHRESH,%f44		! (Y2_1) s = LTHRESH;
3527*25c28e83SPiotr Jasiukajtis
3528*25c28e83SPiotr Jasiukajtis	cmp	%l5,959				! (Y1_2) if (expy < 0x3fb);
3529*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f54,%f48			! (Y0_1) dtmp4 = dtmp3 * y;
3530*25c28e83SPiotr Jasiukajtis	faddd	%f50,%f10,%f52			! (Y1_1) y = y + yd;
3531*25c28e83SPiotr Jasiukajtis
3532*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp4],%o1			! (Y1_1) ind = (int)dtmp0;
3533*25c28e83SPiotr Jasiukajtis
3534*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! y += stridey;
3535*25c28e83SPiotr Jasiukajtis	fmuld	s_h,%f12,%f50			! (Y0_2) s = s_h * s;
3536*25c28e83SPiotr Jasiukajtis	fsubd	%f18,%f12,%f56			! (Y0_2) dtmp0 = (yd - s);
3537*25c28e83SPiotr Jasiukajtis
3538*25c28e83SPiotr Jasiukajtis	fmuld	%f18,yr,%f26			! (Y0_2) dtmp1 = yd * yr;
3539*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.xupdate6			! (Y1_2) if (expy < 0x3fb);
3540*25c28e83SPiotr Jasiukajtis	faddd	%f44,%f62,%f28			! (Y2_1) dtmp0 = (s + yd);
3541*25c28e83SPiotr Jasiukajtis.xcont6:
3542*25c28e83SPiotr Jasiukajtis	sra	%o1,8,%o3			! (Y1_1) ind >>= 8;
3543*25c28e83SPiotr Jasiukajtis	cmp	%l5,1086			! (Y1_2) if (expy >= 0x43e);
3544*25c28e83SPiotr Jasiukajtis	fmuld	XKB5,%f52,%f22			! (Y1_1) dtmp0 = XKB5 * y;
3545*25c28e83SPiotr Jasiukajtis	faddd	%f48,XKB2,%f14			! (Y0_1) dtmp5 = dtmp4 + XKB2;
3546*25c28e83SPiotr Jasiukajtis
3547*25c28e83SPiotr Jasiukajtis	add	%o3,1021,%o0			! (Y1_1) eflag = (ind + 1021);
3548*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.xupdate7			! (Y0_2) if (expy >= 0x43e);
3549*25c28e83SPiotr Jasiukajtis	nop
3550*25c28e83SPiotr Jasiukajtis.xcont7:
3551*25c28e83SPiotr Jasiukajtis	sub	%g0,%o3,%i2			! (Y1_1) gflag = (1022 - ind);
3552*25c28e83SPiotr Jasiukajtis	fmuld	%f56,s_h,%f58			! (Y0_2) dtmp0 *= s_h;
3553*25c28e83SPiotr Jasiukajtis	fand	%f20,MHI32,%f12			! (Y1_2) s = vis_fand(yd, MHI32);
3554*25c28e83SPiotr Jasiukajtis
3555*25c28e83SPiotr Jasiukajtis	sra	%o0,31,%l3			! (Y1_1) eflag = eflag >> 31;
3556*25c28e83SPiotr Jasiukajtis	add	%i2,1022,%l2			! (Y1_1) gflag = (1022 - ind);
3557*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f50,HTHRESH		! (Y0_2) if (s > HTHRESH);
3558*25c28e83SPiotr Jasiukajtis
3559*25c28e83SPiotr Jasiukajtis	sra	%l2,31,%o7			! (Y1_1) gflag = gflag >> 31;
3560*25c28e83SPiotr Jasiukajtis	and	%l3,54,%i1			! (Y1_1) itmp0 = 54 & eflag;
3561*25c28e83SPiotr Jasiukajtis	fdtoi	%f28,%f3			! (Y2_1) u = (double)(int)dtmp0;
3562*25c28e83SPiotr Jasiukajtis
3563*25c28e83SPiotr Jasiukajtis	add	%o3,%i1,%l0			! (Y1_1) ind = ind + itmp0;
3564*25c28e83SPiotr Jasiukajtis	and	%o7,52,%l1			! (Y1_1) itmp1 = 52 & gflag;
3565*25c28e83SPiotr Jasiukajtis	st	%f3,[%fp+ind_buf]		! (Y2_1) ind = (int)dtmp0;
3566*25c28e83SPiotr Jasiukajtis	faddd	%f22,XKB4,%f60			! (Y1_1) dtmp1 = dtmp0 + XKB4;
3567*25c28e83SPiotr Jasiukajtis
3568*25c28e83SPiotr Jasiukajtis	sub	%l0,%l1,%i4			! (Y1_1) ind = ind - itmp1;
3569*25c28e83SPiotr Jasiukajtis	sub	%l3,%o7,%o7			! (Y1_1) ind = eflag - gflag;
3570*25c28e83SPiotr Jasiukajtis	faddd	%f58,%f26,%f48			! (Y0_2) yd = dtmp0 + dtmp1;
3571*25c28e83SPiotr Jasiukajtis
3572*25c28e83SPiotr Jasiukajtis	sll	%i4,20,%i2			! (Y1_1) ind <<= 20;
3573*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%l5			! (Y2_2) hy = *py;
3574*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f50		! (Y0_2) s = HTHRESH;
3575*25c28e83SPiotr Jasiukajtis
3576*25c28e83SPiotr Jasiukajtis	st	%i2,[%fp+tmp1_hi]		! (Y1_1) *(int*)&dtmp0 = ind;
3577*25c28e83SPiotr Jasiukajtis	fitod	%f3,%f18			! (Y2_1) u = (double)(int)dtmp0;
3578*25c28e83SPiotr Jasiukajtis
3579*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f52,%f60			! (Y1_1) dtmp2 = dtmp1 * y;
3580*25c28e83SPiotr Jasiukajtis
3581*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f54,%f56			! (Y0_1) dtmp6 = dtmp5 * y;
3582*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,DZERO,%f48		! (Y0_2) yd = DZERO;
3583*25c28e83SPiotr Jasiukajtis
3584*25c28e83SPiotr Jasiukajtis	fcmped	%fcc1,%f50,LTHRESH		! (Y0_2) if (s < LTHRESH);
3585*25c28e83SPiotr Jasiukajtis
3586*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%f26			! (Y2_2) yd = *py;
3587*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f27			! (Y2_2) yd = *py;
3588*25c28e83SPiotr Jasiukajtis	fsubd	%f44,%f18,%f18			! (Y2_1) y = s - u;
3589*25c28e83SPiotr Jasiukajtis
3590*25c28e83SPiotr Jasiukajtis	faddd	%f60,XKB3,%f44			! (Y1_1) dtmp3 = dtmp2 + XKB3;
3591*25c28e83SPiotr Jasiukajtis
3592*25c28e83SPiotr Jasiukajtis	sra	%l5,20,%l5			! (Y2_2) expy = hy >> 20;
3593*25c28e83SPiotr Jasiukajtis	and	%o2,255,%o2			! (Y0_1) i = ind & 0xff;
3594*25c28e83SPiotr Jasiukajtis	faddd	%f56,XKB1,%f58			! (Y0_1) dtmp7 = dtmp6 + XKB1;
3595*25c28e83SPiotr Jasiukajtis
3596*25c28e83SPiotr Jasiukajtis	sll	%o2,4,%l2			! (Y0_1) i = i << 4;
3597*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,DZERO,%f48		! (Y0_2) yd = DZERO;
3598*25c28e83SPiotr Jasiukajtis
3599*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! y += stridey;
3600*25c28e83SPiotr Jasiukajtis	and	%l5,0x7ff,%l5			! (Y2_2) expy &= 0x7ff;
3601*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,LTHRESH,%f50		! (Y0_2) s = LTHRESH;
3602*25c28e83SPiotr Jasiukajtis
3603*25c28e83SPiotr Jasiukajtis	cmp	%l5,959				! (Y2_2) if (expy < 0x3fb);
3604*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%l2],%f22		! (Y0_1) u = *(double*)((char*)__mt_constexp2 + i);
3605*25c28e83SPiotr Jasiukajtis	faddd	%f18,%f62,%f18			! (Y2_1) y = y + yd;
3606*25c28e83SPiotr Jasiukajtis	fmuld	%f44,%f52,%f62			! (Y1_1) dtmp4 = dtmp3 * y;
3607*25c28e83SPiotr Jasiukajtis
3608*25c28e83SPiotr Jasiukajtis	ld	[%fp+ind_buf],%l1		! (Y2_1) ind = (int)dtmp0;
3609*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f54,%f54			! (Y0_1) y = dtmp7 * y;
3610*25c28e83SPiotr Jasiukajtis
3611*25c28e83SPiotr Jasiukajtis	fmuld	s_h,%f12,%f16			! (Y1_2) s = s_h * s;
3612*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.xupdate8			! (Y2_2) if (expy < 0x3fb);
3613*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f12,%f56			! (Y1_2) dtmp0 = (yd - s);
3614*25c28e83SPiotr Jasiukajtis.xcont8:
3615*25c28e83SPiotr Jasiukajtis	cmp	%l5,1086			! (Y2_2) if (expy >= 0x43e);
3616*25c28e83SPiotr Jasiukajtis	fmuld	%f20,yr,%f8			! (Y1_2) dtmp1 = yd * yr;
3617*25c28e83SPiotr Jasiukajtis	faddd	%f50,%f48,%f28			! (Y0_2) dtmp0 = (s + yd);
3618*25c28e83SPiotr Jasiukajtis
3619*25c28e83SPiotr Jasiukajtis	sra	%l1,8,%o2			! (Y2_1) ind >>= 8;
3620*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%l5			! (Y0_3) hy = *py;
3621*25c28e83SPiotr Jasiukajtis	fmuld	XKB5,%f18,%f20			! (Y2_1) dtmp0 = XKB5 * y;
3622*25c28e83SPiotr Jasiukajtis	faddd	%f62,XKB2,%f12			! (Y1_1) dtmp5 = dtmp4 + XKB2;
3623*25c28e83SPiotr Jasiukajtis
3624*25c28e83SPiotr Jasiukajtis	add	%o2,1021,%l0			! (Y2_1) eflag = (ind + 1021);
3625*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.xupdate9			! (Y2_2) if (expy >= 0x43e);
3626*25c28e83SPiotr Jasiukajtis	nop
3627*25c28e83SPiotr Jasiukajtis.xcont9:
3628*25c28e83SPiotr Jasiukajtis	sub	%g0,%o2,%l3			! (Y2_1) gflag = (1022 - ind);
3629*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL_P8+%l2],%f14		! (Y0_1) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8);
3630*25c28e83SPiotr Jasiukajtis	fmuld	%f56,s_h,%f58			! (Y1_2) dtmp0 *= s_h;
3631*25c28e83SPiotr Jasiukajtis	fand	%f26,MHI32,%f44			! (Y2_2) s = vis_fand(yd, MHI32);
3632*25c28e83SPiotr Jasiukajtis
3633*25c28e83SPiotr Jasiukajtis	sra	%l0,31,%o0			! (Y2_1) eflag = eflag >> 31;
3634*25c28e83SPiotr Jasiukajtis	add	%l3,1022,%i4			! (Y2_1) gflag = (1022 - ind);
3635*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f54,%f56			! (Y0_1) dtmp1 = u * y;
3636*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f16,HTHRESH		! (Y1_2) if (s > HTHRESH);
3637*25c28e83SPiotr Jasiukajtis
3638*25c28e83SPiotr Jasiukajtis	sra	%i4,31,%o5			! (Y2_1) gflag = gflag >> 31;
3639*25c28e83SPiotr Jasiukajtis	and	%o0,54,%i2			! (Y2_1) itmp0 = 54 & eflag;
3640*25c28e83SPiotr Jasiukajtis	fdtoi	%f28,%f3			! (Y0_2) u = (double)(int)dtmp0;
3641*25c28e83SPiotr Jasiukajtis
3642*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%i1			! (Y2_1) ind = ind + itmp0;
3643*25c28e83SPiotr Jasiukajtis	and	%o5,52,%l2			! (Y2_1) itmp1 = 52 & gflag;
3644*25c28e83SPiotr Jasiukajtis	st	%f3,[%fp+tmp3]			! (Y0_2) ind = (int)dtmp0;
3645*25c28e83SPiotr Jasiukajtis	faddd	%f20,XKB4,%f60			! (Y2_1) dtmp1 = dtmp0 + XKB4;
3646*25c28e83SPiotr Jasiukajtis
3647*25c28e83SPiotr Jasiukajtis	sub	%i1,%l2,%o3			! (Y2_1) ind = ind - itmp1;
3648*25c28e83SPiotr Jasiukajtis	sub	%o0,%o5,%o5			! (Y2_1) ind = eflag - gflag;
3649*25c28e83SPiotr Jasiukajtis	faddd	%f58,%f8,%f10			! (Y1_2) yd = dtmp0 + dtmp1;
3650*25c28e83SPiotr Jasiukajtis
3651*25c28e83SPiotr Jasiukajtis	sll	%o3,20,%l3			! (Y2_1) ind <<= 20;
3652*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%f28			! (Y0_3) yd = *py;
3653*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f29			! (Y0_3) yd = *py;
3654*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f16		! (Y1_2) s = HTHRESH;
3655*25c28e83SPiotr Jasiukajtis
3656*25c28e83SPiotr Jasiukajtis	st	%l3,[%fp+tmp2_hi]		! (Y2_1) *(int*)&dtmp0 = ind;
3657*25c28e83SPiotr Jasiukajtis	fitod	%f3,%f58			! (Y0_2) u = (double)(int)dtmp0;
3658*25c28e83SPiotr Jasiukajtis
3659*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f18,%f60			! (Y2_1) dtmp2 = dtmp1 * y;
3660*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f56,%f20			! (Y0_1) dtmp2 = dtmp0 + dtmp1;
3661*25c28e83SPiotr Jasiukajtis
3662*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f56			! (Y1_1) dtmp6 = dtmp5 * y;
3663*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,DZERO,%f10		! (Y1_2) yd = DZERO;
3664*25c28e83SPiotr Jasiukajtis
3665*25c28e83SPiotr Jasiukajtis	sra	%l5,20,%l5			! (Y0_3) expy = hy >> 20;
3666*25c28e83SPiotr Jasiukajtis	fcmped	%fcc1,%f16,LTHRESH		! (Y1_2) if (s < LTHRESH);
3667*25c28e83SPiotr Jasiukajtis
3668*25c28e83SPiotr Jasiukajtis	and	%l5,0x7ff,%l5			! (Y0_3) expy &= 0x7ff;
3669*25c28e83SPiotr Jasiukajtis	fsubd	%f50,%f58,%f54			! (Y0_2) y = s - u;
3670*25c28e83SPiotr Jasiukajtis
3671*25c28e83SPiotr Jasiukajtis	cmp	%l5,959				! (Y0_3) if (expy < 0x3fb);
3672*25c28e83SPiotr Jasiukajtis	faddd	%f60,XKB3,%f60			! (Y2_1) dtmp3 = dtmp2 + XKB3;
3673*25c28e83SPiotr Jasiukajtis
3674*25c28e83SPiotr Jasiukajtis	and	%o1,255,%o1			! (Y1_1) i = ind & 0xff;
3675*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.xupdate10			! (Y0_3) if (expy < 0x3fb);
3676*25c28e83SPiotr Jasiukajtis	faddd	%f56,XKB1,%f8			! (Y1_1) dtmp7 = dtmp6 + XKB1;
3677*25c28e83SPiotr Jasiukajtis.xcont10:
3678*25c28e83SPiotr Jasiukajtis	sll	%o1,4,%l0			! (Y1_1) i = i << 4;
3679*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,DZERO,%f10		! (Y1_2) yd = DZERO;
3680*25c28e83SPiotr Jasiukajtis
3681*25c28e83SPiotr Jasiukajtis	nop
3682*25c28e83SPiotr Jasiukajtis	ba	1f
3683*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,LTHRESH,%f16		! (Y1_2) s = LTHRESH;
3684*25c28e83SPiotr Jasiukajtis
3685*25c28e83SPiotr Jasiukajtis	.align	16
3686*25c28e83SPiotr Jasiukajtis1:
3687*25c28e83SPiotr Jasiukajtis	subcc	counter,2,counter
3688*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%l0],%f56		! (Y1_1) u = *(double*)((char*)__mt_constexp2 + i);
3689*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f18,%f58			! (Y2_1) dtmp4 = dtmp3 * y;
3690*25c28e83SPiotr Jasiukajtis	faddd	%f54,%f48,%f54			! (Y0_2) y = y + yd;
3691*25c28e83SPiotr Jasiukajtis
3692*25c28e83SPiotr Jasiukajtis	fmuld	%f8,%f52,%f60			! (Y1_1) y = dtmp7 * y;
3693*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%o2			! (Y0_2) ind = (int)dtmp0;
3694*25c28e83SPiotr Jasiukajtis	bneg,pn	%icc,.xtail
3695*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f22,%f12			! (Y0_1) u = dtmp2 + u;
3696*25c28e83SPiotr Jasiukajtis
3697*25c28e83SPiotr Jasiukajtis.xmain_loop:
3698*25c28e83SPiotr Jasiukajtis	cmp	%l5,1086			! (Y0_2) if (expy >= 0x43e);
3699*25c28e83SPiotr Jasiukajtis	add	%o4,513,%o4			! (Y0_0) ind += 513;
3700*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp0_hi],%f52		! (Y0_0) *(int*)&dtmp0 = ind;
3701*25c28e83SPiotr Jasiukajtis	fsubd	%f26,%f44,%f50			! (Y2_1) dtmp0 = (yd - s);
3702*25c28e83SPiotr Jasiukajtis
3703*25c28e83SPiotr Jasiukajtis	fmuld	s_h,%f44,%f44			! (Y2_1) s = s_h * s;
3704*25c28e83SPiotr Jasiukajtis	sra	%o2,8,%o0			! (Y0_1) ind >>= 8;
3705*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.xupdate11			! (Y0_2) if (expy >= 0x43e);
3706*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f22			! (Y1_1) dtmp0 = (s + yd);
3707*25c28e83SPiotr Jasiukajtis.xcont11:
3708*25c28e83SPiotr Jasiukajtis	sll	%o4,3,%l2			! (Y0_0) ind *= 8;
3709*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! y += stridey;
3710*25c28e83SPiotr Jasiukajtis	fmuld	%f26,yr,%f20			! (Y2_1) dtmp1 = yd * yr;
3711*25c28e83SPiotr Jasiukajtis	faddd	%f58,XKB2,%f14			! (Y2_0) dtmp5 = dtmp4 + XKB2;
3712*25c28e83SPiotr Jasiukajtis
3713*25c28e83SPiotr Jasiukajtis	add	%o0,1021,%i1			! (Y0_1) eflag = (ind + 1021);
3714*25c28e83SPiotr Jasiukajtis	ldd	[%l2+EXPTBL],%f62		! (Y0_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind);
3715*25c28e83SPiotr Jasiukajtis	fmuld	XKB5,%f54,%f48			! (Y0_1) dtmp0 = XKB5 * y;
3716*25c28e83SPiotr Jasiukajtis	fpadd32	%f12,%f52,%f58			! (Y0_0) u = vis_fpadd32(u, dtmp0);
3717*25c28e83SPiotr Jasiukajtis
3718*25c28e83SPiotr Jasiukajtis	sub	%g0,%o0,%o3			! (Y0_1) gflag = (1022 - ind);
3719*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL_P8+%l0],%f8		! (Y1_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8);
3720*25c28e83SPiotr Jasiukajtis	fand	%f28,MHI32,%f12			! (Y0_2) s = vis_fand(yd, MHI32);
3721*25c28e83SPiotr Jasiukajtis	fmuld	%f50,s_h,%f52			! (Y2_1) dtmp0 *= s_h;
3722*25c28e83SPiotr Jasiukajtis
3723*25c28e83SPiotr Jasiukajtis	sra	%i1,31,%o1			! (Y0_1) eflag = eflag >> 31;
3724*25c28e83SPiotr Jasiukajtis	add	%o3,1022,%l0			! (Y0_1) gflag = (1022 - ind);
3725*25c28e83SPiotr Jasiukajtis	fmuld	%f56,%f60,%f26			! (Y1_0) dtmp1 = u * y;
3726*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f44,HTHRESH		! (Y2_1) if (s > HTHRESH);
3727*25c28e83SPiotr Jasiukajtis
3728*25c28e83SPiotr Jasiukajtis	sra	%l0,31,%o4			! (Y0_1) gflag = gflag >> 31;
3729*25c28e83SPiotr Jasiukajtis	and	%o1,54,%i4			! (Y0_1) itmp0 = 54 & eflag;
3730*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f62,%f6			! (Y0_0) dtmp1 = u * dtmp1;
3731*25c28e83SPiotr Jasiukajtis	fdtoi	%f22,%f4			! (Y1_1) u = (double)(int)dtmp0;
3732*25c28e83SPiotr Jasiukajtis
3733*25c28e83SPiotr Jasiukajtis	add	%o0,%i4,%i2			! (Y0_1) ind = ind + itmp0;
3734*25c28e83SPiotr Jasiukajtis	and	%o4,52,%l3			! (Y0_1) itmp1 = 52 & gflag;
3735*25c28e83SPiotr Jasiukajtis	st	%f4,[%fp+tmp4]			! (Y1_1) ind = (int)dtmp0;
3736*25c28e83SPiotr Jasiukajtis	faddd	%f48,XKB4,%f60			! (Y0_1) dtmp1 = dtmp0 + XKB4;
3737*25c28e83SPiotr Jasiukajtis
3738*25c28e83SPiotr Jasiukajtis	sub	%i2,%l3,%l2			! (Y0_1) ind = ind - itmp1;
3739*25c28e83SPiotr Jasiukajtis	sub	%o1,%o4,%o4			! (Y0_1) ind = eflag - gflag;
3740*25c28e83SPiotr Jasiukajtis	st	%f6,[pz]			! (Y0_0) write into memory
3741*25c28e83SPiotr Jasiukajtis	faddd	%f52,%f20,%f62			! (Y2_1) yd = dtmp0 + dtmp1;
3742*25c28e83SPiotr Jasiukajtis
3743*25c28e83SPiotr Jasiukajtis	sll	%l2,20,%o3			! (Y0_1) ind <<= 20;
3744*25c28e83SPiotr Jasiukajtis	nop
3745*25c28e83SPiotr Jasiukajtis	st	%o3,[%fp+tmp0_hi]		! (Y0_1) *(int*)&dtmp0 = ind;
3746*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f44		! (Y2_1) s = HTHRESH;
3747*25c28e83SPiotr Jasiukajtis
3748*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%l5			! (Y1_2) hy = *py;
3749*25c28e83SPiotr Jasiukajtis	nop
3750*25c28e83SPiotr Jasiukajtis	fitod	%f4,%f48			! (Y1_1) u = (double)(int)dtmp0;
3751*25c28e83SPiotr Jasiukajtis
3752*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f54,%f60			! (Y0_1) dtmp2 = dtmp1 * y;
3753*25c28e83SPiotr Jasiukajtis	nop
3754*25c28e83SPiotr Jasiukajtis	st	%f7,[pz+4]			! (Y0_0) write into memory
3755*25c28e83SPiotr Jasiukajtis	faddd	%f8,%f26,%f26			! (Y1_0) dtmp2 = dtmp0 + dtmp1;
3756*25c28e83SPiotr Jasiukajtis
3757*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%f8			! (Y1_2) yd = *py;
3758*25c28e83SPiotr Jasiukajtis	nop
3759*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f18,%f52			! (Y2_0) dtmp6 = dtmp5 * y;
3760*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,DZERO,%f62		! (Y2_1) yd = DZERO;
3761*25c28e83SPiotr Jasiukajtis
3762*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f9			! (Y1_2) yd = *py;
3763*25c28e83SPiotr Jasiukajtis	add	pz,stridez,pz			! z += stridez;
3764*25c28e83SPiotr Jasiukajtis	fcmped	%fcc1,%f44,LTHRESH		! (Y2_1) if (s < LTHRESH);
3765*25c28e83SPiotr Jasiukajtis
3766*25c28e83SPiotr Jasiukajtis	fsubd	%f16,%f48,%f50			! (Y1_1) y = s - u;
3767*25c28e83SPiotr Jasiukajtis
3768*25c28e83SPiotr Jasiukajtis	faddd	%f60,XKB3,%f60			! (Y0_1) dtmp3 = dtmp2 + XKB3;
3769*25c28e83SPiotr Jasiukajtis
3770*25c28e83SPiotr Jasiukajtis	sra	%l5,20,%l5			! (Y1_2) expy = hy >> 20;
3771*25c28e83SPiotr Jasiukajtis	and	%l1,255,%l1			! (Y2_0) i = ind & 0xff;
3772*25c28e83SPiotr Jasiukajtis	faddd	%f52,XKB1,%f58			! (Y2_0) dtmp7 = dtmp6 + XKB1;
3773*25c28e83SPiotr Jasiukajtis
3774*25c28e83SPiotr Jasiukajtis	sll	%l1,4,%l0			! (Y2_0) i = i << 4;
3775*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,DZERO,%f62		! (Y2_1) yd = DZERO;
3776*25c28e83SPiotr Jasiukajtis
3777*25c28e83SPiotr Jasiukajtis	and	%l5,0x7ff,%l5			! (Y1_2) expy &= 0x7ff;
3778*25c28e83SPiotr Jasiukajtis	nop
3779*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,LTHRESH,%f44		! (Y2_1) s = LTHRESH;
3780*25c28e83SPiotr Jasiukajtis
3781*25c28e83SPiotr Jasiukajtis	cmp	%l5,959				! (Y1_2) if (expy < 0x3fb);
3782*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%l0],%f20		! (Y2_0) u = *(double*)((char*)__mt_constexp2 + i);
3783*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f54,%f48			! (Y0_1) dtmp4 = dtmp3 * y;
3784*25c28e83SPiotr Jasiukajtis	faddd	%f50,%f10,%f52			! (Y1_1) y = y + yd;
3785*25c28e83SPiotr Jasiukajtis
3786*25c28e83SPiotr Jasiukajtis	add	%o7,513,%o7			! (Y1_0) ind += 513;
3787*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp4],%o1			! (Y1_1) ind = (int)dtmp0;
3788*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f18,%f18			! (Y2_0) y = dtmp7 * y;
3789*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f58			! (Y1_0) u = dtmp2 + u;
3790*25c28e83SPiotr Jasiukajtis
3791*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! y += stridey;
3792*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp1_hi],%f60		! (Y1_0) *(int*)&dtmp0 = ind;
3793*25c28e83SPiotr Jasiukajtis	fmuld	s_h,%f12,%f50			! (Y0_2) s = s_h * s;
3794*25c28e83SPiotr Jasiukajtis	fsubd	%f28,%f12,%f56			! (Y0_2) dtmp0 = (yd - s);
3795*25c28e83SPiotr Jasiukajtis
3796*25c28e83SPiotr Jasiukajtis	sll	%o7,3,%l3			! (Y1_0) ind *= 8;
3797*25c28e83SPiotr Jasiukajtis	fmuld	%f28,yr,%f26			! (Y0_2) dtmp1 = yd * yr;
3798*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.xupdate12			! (Y1_2) if (expy < 0x3fb);
3799*25c28e83SPiotr Jasiukajtis	faddd	%f44,%f62,%f28			! (Y2_1) dtmp0 = (s + yd);
3800*25c28e83SPiotr Jasiukajtis.xcont12:
3801*25c28e83SPiotr Jasiukajtis	sra	%o1,8,%o3			! (Y1_1) ind >>= 8;
3802*25c28e83SPiotr Jasiukajtis	cmp	%l5,1086			! (Y1_2) if (expy >= 0x43e);
3803*25c28e83SPiotr Jasiukajtis	fmuld	XKB5,%f52,%f22			! (Y1_1) dtmp0 = XKB5 * y;
3804*25c28e83SPiotr Jasiukajtis	faddd	%f48,XKB2,%f14			! (Y0_1) dtmp5 = dtmp4 + XKB2;
3805*25c28e83SPiotr Jasiukajtis
3806*25c28e83SPiotr Jasiukajtis	add	%o3,1021,%o0			! (Y1_1) eflag = (ind + 1021);
3807*25c28e83SPiotr Jasiukajtis	ldd	[%l3+EXPTBL],%f48		! (Y1_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind);
3808*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.xupdate13			! (Y1_2) if (expy >= 0x43e);
3809*25c28e83SPiotr Jasiukajtis	fpadd32	%f58,%f60,%f60			! (Y1_0) u = vis_fpadd32(u, dtmp0);
3810*25c28e83SPiotr Jasiukajtis.xcont13:
3811*25c28e83SPiotr Jasiukajtis	sub	%g0,%o3,%i2			! (Y1_1) gflag = (1022 - ind);
3812*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL_P8+%l0],%f16		! (Y2_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8);
3813*25c28e83SPiotr Jasiukajtis	fmuld	%f56,s_h,%f58			! (Y0_2) dtmp0 *= s_h;
3814*25c28e83SPiotr Jasiukajtis	fand	%f8,MHI32,%f12			! (Y1_2) s = vis_fand(yd, MHI32);
3815*25c28e83SPiotr Jasiukajtis
3816*25c28e83SPiotr Jasiukajtis	sra	%o0,31,%l3			! (Y1_1) eflag = eflag >> 31;
3817*25c28e83SPiotr Jasiukajtis	add	%i2,1022,%l2			! (Y1_1) gflag = (1022 - ind);
3818*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f18,%f56			! (Y2_0) dtmp1 = u * y;
3819*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f50,HTHRESH		! (Y0_2) if (s > HTHRESH);
3820*25c28e83SPiotr Jasiukajtis
3821*25c28e83SPiotr Jasiukajtis	sra	%l2,31,%o7			! (Y1_1) gflag = gflag >> 31;
3822*25c28e83SPiotr Jasiukajtis	and	%l3,54,%i1			! (Y1_1) itmp0 = 54 & eflag;
3823*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f48,%f18			! (Y1_0) dtmp1 = u * dtmp1;
3824*25c28e83SPiotr Jasiukajtis	fdtoi	%f28,%f3			! (Y2_1) u = (double)(int)dtmp0;
3825*25c28e83SPiotr Jasiukajtis
3826*25c28e83SPiotr Jasiukajtis	add	%o3,%i1,%l0			! (Y1_1) ind = ind + itmp0;
3827*25c28e83SPiotr Jasiukajtis	and	%o7,52,%l1			! (Y1_1) itmp1 = 52 & gflag;
3828*25c28e83SPiotr Jasiukajtis	st	%f3,[%fp+ind_buf]		! (Y2_1) ind = (int)dtmp0;
3829*25c28e83SPiotr Jasiukajtis	faddd	%f22,XKB4,%f60			! (Y1_1) dtmp1 = dtmp0 + XKB4;
3830*25c28e83SPiotr Jasiukajtis
3831*25c28e83SPiotr Jasiukajtis	sub	%l0,%l1,%i4			! (Y1_1) ind = ind - itmp1;
3832*25c28e83SPiotr Jasiukajtis	sub	%l3,%o7,%o7			! (Y1_1) ind = eflag - gflag;
3833*25c28e83SPiotr Jasiukajtis	st	%f18,[pz]			! (Y1_0) write into memory
3834*25c28e83SPiotr Jasiukajtis	faddd	%f58,%f26,%f48			! (Y0_2) yd = dtmp0 + dtmp1;
3835*25c28e83SPiotr Jasiukajtis
3836*25c28e83SPiotr Jasiukajtis	sll	%i4,20,%i2			! (Y1_1) ind <<= 20;
3837*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%l5			! (Y2_2) hy = *py;
3838*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f50		! (Y0_2) s = HTHRESH;
3839*25c28e83SPiotr Jasiukajtis
3840*25c28e83SPiotr Jasiukajtis	st	%i2,[%fp+tmp1_hi]		! (Y1_1) *(int*)&dtmp0 = ind;
3841*25c28e83SPiotr Jasiukajtis	fitod	%f3,%f10			! (Y2_1) u = (double)(int)dtmp0;
3842*25c28e83SPiotr Jasiukajtis
3843*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f52,%f60			! (Y1_1) dtmp2 = dtmp1 * y;
3844*25c28e83SPiotr Jasiukajtis	st	%f19,[pz+4]			! (Y1_0) write into memory
3845*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f28			! (Y2_0) dtmp2 = dtmp0 + dtmp1;
3846*25c28e83SPiotr Jasiukajtis
3847*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f54,%f56			! (Y0_1) dtmp6 = dtmp5 * y;
3848*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,DZERO,%f48		! (Y0_2) yd = DZERO;
3849*25c28e83SPiotr Jasiukajtis
3850*25c28e83SPiotr Jasiukajtis	add	pz,stridez,pz			! z += stridez;
3851*25c28e83SPiotr Jasiukajtis	fcmped	%fcc1,%f50,LTHRESH		! (Y0_2) if (s < LTHRESH);
3852*25c28e83SPiotr Jasiukajtis
3853*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%f26			! (Y2_2) yd = *py;
3854*25c28e83SPiotr Jasiukajtis	fsubd	%f44,%f10,%f18			! (Y2_1) y = s - u;
3855*25c28e83SPiotr Jasiukajtis
3856*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f27			! (Y2_2) yd = *py;
3857*25c28e83SPiotr Jasiukajtis	faddd	%f60,XKB3,%f44			! (Y1_1) dtmp3 = dtmp2 + XKB3;
3858*25c28e83SPiotr Jasiukajtis
3859*25c28e83SPiotr Jasiukajtis	sra	%l5,20,%l5			! (Y2_2) expy = hy >> 20;
3860*25c28e83SPiotr Jasiukajtis	and	%o2,255,%o2			! (Y0_1) i = ind & 0xff;
3861*25c28e83SPiotr Jasiukajtis	faddd	%f56,XKB1,%f58			! (Y0_1) dtmp7 = dtmp6 + XKB1;
3862*25c28e83SPiotr Jasiukajtis
3863*25c28e83SPiotr Jasiukajtis	sll	%o2,4,%l2			! (Y0_1) i = i << 4;
3864*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,DZERO,%f48		! (Y0_2) yd = DZERO;
3865*25c28e83SPiotr Jasiukajtis
3866*25c28e83SPiotr Jasiukajtis	add	py,stridey,py			! y += stridey;
3867*25c28e83SPiotr Jasiukajtis	and	%l5,0x7ff,%l5			! (Y2_2) expy &= 0x7ff;
3868*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,LTHRESH,%f50		! (Y0_2) s = LTHRESH;
3869*25c28e83SPiotr Jasiukajtis
3870*25c28e83SPiotr Jasiukajtis	cmp	%l5,959				! (Y2_2) if (expy < 0x3fb);
3871*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%l2],%f22		! (Y0_1) u = *(double*)((char*)__mt_constexp2 + i);
3872*25c28e83SPiotr Jasiukajtis	faddd	%f18,%f62,%f18			! (Y2_1) y = y + yd;
3873*25c28e83SPiotr Jasiukajtis	fmuld	%f44,%f52,%f62			! (Y1_1) dtmp4 = dtmp3 * y;
3874*25c28e83SPiotr Jasiukajtis
3875*25c28e83SPiotr Jasiukajtis	add	%o5,513,%o5			! (Y2_0) ind += 513;
3876*25c28e83SPiotr Jasiukajtis	ld	[%fp+ind_buf],%l1		! (Y2_1) ind = (int)dtmp0;
3877*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f54,%f54			! (Y0_1) y = dtmp7 * y;
3878*25c28e83SPiotr Jasiukajtis	faddd	%f28,%f20,%f58			! (Y2_0) u = dtmp2 + u;
3879*25c28e83SPiotr Jasiukajtis
3880*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp2_hi],%f60		! (Y2_0) *(int*)&dtmp0 = ind;
3881*25c28e83SPiotr Jasiukajtis	fmuld	s_h,%f12,%f16			! (Y1_2) s = s_h * s;
3882*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.xupdate14			! (Y2_2) if (expy < 0x3fb);
3883*25c28e83SPiotr Jasiukajtis	fsubd	%f8,%f12,%f56			! (Y1_2) dtmp0 = (yd - s);
3884*25c28e83SPiotr Jasiukajtis.xcont14:
3885*25c28e83SPiotr Jasiukajtis	sll	%o5,3,%i1			! (Y2_0) ind *= 8;
3886*25c28e83SPiotr Jasiukajtis	cmp	%l5,1086			! (Y2_2) if (expy >= 0x43e);
3887*25c28e83SPiotr Jasiukajtis	fmuld	%f8,yr,%f8			! (Y1_2) dtmp1 = yd * yr;
3888*25c28e83SPiotr Jasiukajtis	faddd	%f50,%f48,%f28			! (Y0_2) dtmp0 = (s + yd);
3889*25c28e83SPiotr Jasiukajtis
3890*25c28e83SPiotr Jasiukajtis	sra	%l1,8,%o2			! (Y2_1) ind >>= 8;
3891*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%l5			! (Y0_3) hy = *py;
3892*25c28e83SPiotr Jasiukajtis	fmuld	XKB5,%f18,%f20			! (Y2_1) dtmp0 = XKB5 * y;
3893*25c28e83SPiotr Jasiukajtis	faddd	%f62,XKB2,%f12			! (Y1_1) dtmp5 = dtmp4 + XKB2;
3894*25c28e83SPiotr Jasiukajtis
3895*25c28e83SPiotr Jasiukajtis	add	%o2,1021,%l0			! (Y2_1) eflag = (ind + 1021);
3896*25c28e83SPiotr Jasiukajtis	ldd	[%i1+EXPTBL],%f62		! (Y2_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind);
3897*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,.xupdate15			! (Y2_2) if (expy >= 0x43e);
3898*25c28e83SPiotr Jasiukajtis	fpadd32	%f58,%f60,%f60			! (Y2_0) u = vis_fpadd32(u, dtmp0);
3899*25c28e83SPiotr Jasiukajtis.xcont15:
3900*25c28e83SPiotr Jasiukajtis	sub	%g0,%o2,%l3			! (Y2_1) gflag = (1022 - ind);
3901*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL_P8+%l2],%f14		! (Y0_1) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8);
3902*25c28e83SPiotr Jasiukajtis	fmuld	%f56,s_h,%f58			! (Y1_2) dtmp0 *= s_h;
3903*25c28e83SPiotr Jasiukajtis	fand	%f26,MHI32,%f44			! (Y2_2) s = vis_fand(yd, MHI32);
3904*25c28e83SPiotr Jasiukajtis
3905*25c28e83SPiotr Jasiukajtis	sra	%l0,31,%o0			! (Y2_1) eflag = eflag >> 31;
3906*25c28e83SPiotr Jasiukajtis	add	%l3,1022,%i4			! (Y2_1) gflag = (1022 - ind);
3907*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f54,%f56			! (Y0_1) dtmp1 = u * y;
3908*25c28e83SPiotr Jasiukajtis	fcmped	%fcc0,%f16,HTHRESH		! (Y1_2) if (s > HTHRESH);
3909*25c28e83SPiotr Jasiukajtis
3910*25c28e83SPiotr Jasiukajtis	sra	%i4,31,%o5			! (Y2_1) gflag = gflag >> 31;
3911*25c28e83SPiotr Jasiukajtis	and	%o0,54,%i2			! (Y2_1) itmp0 = 54 & eflag;
3912*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f62,%f6			! (Y2_0) dtmp1 = u * dtmp1;
3913*25c28e83SPiotr Jasiukajtis	fdtoi	%f28,%f3			! (Y0_2) u = (double)(int)dtmp0;
3914*25c28e83SPiotr Jasiukajtis
3915*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%i1			! (Y2_1) ind = ind + itmp0;
3916*25c28e83SPiotr Jasiukajtis	and	%o5,52,%l2			! (Y2_1) itmp1 = 52 & gflag;
3917*25c28e83SPiotr Jasiukajtis	st	%f3,[%fp+tmp3]			! (Y0_2) ind = (int)dtmp0;
3918*25c28e83SPiotr Jasiukajtis	faddd	%f20,XKB4,%f60			! (Y2_1) dtmp1 = dtmp0 + XKB4;
3919*25c28e83SPiotr Jasiukajtis
3920*25c28e83SPiotr Jasiukajtis	sub	%i1,%l2,%o3			! (Y2_1) ind = ind - itmp1;
3921*25c28e83SPiotr Jasiukajtis	sub	%o0,%o5,%o5			! (Y2_1) ind = eflag - gflag;
3922*25c28e83SPiotr Jasiukajtis	st	%f6,[pz]			! (Y2_0) write into memory
3923*25c28e83SPiotr Jasiukajtis	faddd	%f58,%f8,%f10			! (Y1_2) yd = dtmp0 + dtmp1;
3924*25c28e83SPiotr Jasiukajtis
3925*25c28e83SPiotr Jasiukajtis	sll	%o3,20,%l3			! (Y2_1) ind <<= 20;
3926*25c28e83SPiotr Jasiukajtis	lda	[py]0x82,%f28			! (Y0_3) yd = *py;
3927*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,HTHRESH,%f16		! (Y1_2) s = HTHRESH;
3928*25c28e83SPiotr Jasiukajtis
3929*25c28e83SPiotr Jasiukajtis	lda	[py+4]%asi,%f29			! (Y0_3) yd = *py;
3930*25c28e83SPiotr Jasiukajtis	fitod	%f3,%f58			! (Y0_2) u = (double)(int)dtmp0;
3931*25c28e83SPiotr Jasiukajtis
3932*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f18,%f60			! (Y2_1) dtmp2 = dtmp1 * y;
3933*25c28e83SPiotr Jasiukajtis	st	%l3,[%fp+tmp2_hi]		! (Y2_1) *(int*)&dtmp0 = ind;
3934*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f56,%f20			! (Y0_1) dtmp2 = dtmp0 + dtmp1;
3935*25c28e83SPiotr Jasiukajtis
3936*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f56			! (Y1_1) dtmp6 = dtmp5 * y;
3937*25c28e83SPiotr Jasiukajtis	st	%f7,[pz+4]			! (Y2_0) write into memory
3938*25c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,DZERO,%f10		! (Y1_2) yd = DZERO;
3939*25c28e83SPiotr Jasiukajtis
3940*25c28e83SPiotr Jasiukajtis	sra	%l5,20,%l5			! (Y0_3) expy = hy >> 20;
3941*25c28e83SPiotr Jasiukajtis	add	pz,stridez,pz			! z += stridez;
3942*25c28e83SPiotr Jasiukajtis	fcmped	%fcc1,%f16,LTHRESH		! (Y1_2) if (s < LTHRESH);
3943*25c28e83SPiotr Jasiukajtis
3944*25c28e83SPiotr Jasiukajtis	and	%l5,0x7ff,%l5			! (Y0_3) expy &= 0x7ff;
3945*25c28e83SPiotr Jasiukajtis	fsubd	%f50,%f58,%f54			! (Y0_2) y = s - u;
3946*25c28e83SPiotr Jasiukajtis
3947*25c28e83SPiotr Jasiukajtis	cmp	%l5,959				! (Y0_3) if (expy < 0x3fb);
3948*25c28e83SPiotr Jasiukajtis	faddd	%f60,XKB3,%f60			! (Y2_1) dtmp3 = dtmp2 + XKB3;
3949*25c28e83SPiotr Jasiukajtis
3950*25c28e83SPiotr Jasiukajtis	and	%o1,255,%o1			! (Y1_1) i = ind & 0xff;
3951*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.xupdate16			! (Y0_3) if (expy < 0x3fb);
3952*25c28e83SPiotr Jasiukajtis	faddd	%f56,XKB1,%f8			! (Y1_1) dtmp7 = dtmp6 + XKB1;
3953*25c28e83SPiotr Jasiukajtis.xcont16:
3954*25c28e83SPiotr Jasiukajtis	sll	%o1,4,%l0			! (Y1_1) i = i << 4;
3955*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,DZERO,%f10		! (Y1_2) yd = DZERO;
3956*25c28e83SPiotr Jasiukajtis
3957*25c28e83SPiotr Jasiukajtis	subcc	counter,3,counter		! update cycle counter
3958*25c28e83SPiotr Jasiukajtis	fmovdl	%fcc1,LTHRESH,%f16		! (Y1_2) s = LTHRESH;
3959*25c28e83SPiotr Jasiukajtis
3960*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL+%l0],%f56		! (Y1_1) u = *(double*)((char*)__mt_constexp2 + i);
3961*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f18,%f58			! (Y2_1) dtmp4 = dtmp3 * y;
3962*25c28e83SPiotr Jasiukajtis	faddd	%f54,%f48,%f54			! (Y0_2) y = y + yd;
3963*25c28e83SPiotr Jasiukajtis
3964*25c28e83SPiotr Jasiukajtis	fmuld	%f8,%f52,%f60			! (Y1_1) y = dtmp7 * y;
3965*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%o2			! (Y0_2) ind = (int)dtmp0;
3966*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.xmain_loop
3967*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f22,%f12			! (Y0_1) u = dtmp2 + u;
3968*25c28e83SPiotr Jasiukajtis
3969*25c28e83SPiotr Jasiukajtis.xtail:
3970*25c28e83SPiotr Jasiukajtis	addcc	counter,2,counter
3971*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp0_hi],%f52		! (Y0_0) *(int*)&dtmp0 = ind;
3972*25c28e83SPiotr Jasiukajtis
3973*25c28e83SPiotr Jasiukajtis	add	%o4,513,%o4			! (Y0_0) ind += 513;
3974*25c28e83SPiotr Jasiukajtis	bneg,pn	%icc,.xend_loop
3975*25c28e83SPiotr Jasiukajtis	nop
3976*25c28e83SPiotr Jasiukajtis
3977*25c28e83SPiotr Jasiukajtis	sll	%o4,3,%l2			! (Y0_0) ind *= 8;
3978*25c28e83SPiotr Jasiukajtis
3979*25c28e83SPiotr Jasiukajtis	subcc	counter,1,counter
3980*25c28e83SPiotr Jasiukajtis	ldd	[%l2+EXPTBL],%f62		! (Y0_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind);
3981*25c28e83SPiotr Jasiukajtis	fpadd32	%f12,%f52,%f58			! (Y0_0) u = vis_fpadd32(u, dtmp0);
3982*25c28e83SPiotr Jasiukajtis
3983*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL_P8+%l0],%f8		! (Y1_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8);
3984*25c28e83SPiotr Jasiukajtis
3985*25c28e83SPiotr Jasiukajtis	fmuld	%f56,%f60,%f26			! (Y1_0) dtmp1 = u * y;
3986*25c28e83SPiotr Jasiukajtis
3987*25c28e83SPiotr Jasiukajtis	fmuld	%f58,%f62,%f6			! (Y0_0) dtmp1 = u * dtmp1;
3988*25c28e83SPiotr Jasiukajtis
3989*25c28e83SPiotr Jasiukajtis	st	%f6,[pz]			! (Y0_0) write into memory
3990*25c28e83SPiotr Jasiukajtis	st	%f7,[pz+4]			! (Y0_0) write into memory
3991*25c28e83SPiotr Jasiukajtis	bneg,pn	%icc,.xend_loop
3992*25c28e83SPiotr Jasiukajtis	add	pz,stridez,pz			! z += stridez;
3993*25c28e83SPiotr Jasiukajtis
3994*25c28e83SPiotr Jasiukajtis	faddd	%f8,%f26,%f26			! (Y1_0) dtmp2 = dtmp0 + dtmp1;
3995*25c28e83SPiotr Jasiukajtis
3996*25c28e83SPiotr Jasiukajtis	add	%o7,513,%o7			! (Y1_0) ind += 513;
3997*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f58			! (Y1_0) u = dtmp2 + u;
3998*25c28e83SPiotr Jasiukajtis
3999*25c28e83SPiotr Jasiukajtis	ldd	[%fp+tmp1_hi],%f60		! (Y1_0) *(int*)&dtmp0 = ind;
4000*25c28e83SPiotr Jasiukajtis
4001*25c28e83SPiotr Jasiukajtis	sll	%o7,3,%l3			! (Y1_0) ind *= 8;
4002*25c28e83SPiotr Jasiukajtis
4003*25c28e83SPiotr Jasiukajtis	ldd	[%l3+EXPTBL],%f48		! (Y1_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind);
4004*25c28e83SPiotr Jasiukajtis	fpadd32	%f58,%f60,%f60			! (Y1_0) u = vis_fpadd32(u, dtmp0);
4005*25c28e83SPiotr Jasiukajtis
4006*25c28e83SPiotr Jasiukajtis	fmuld	%f60,%f48,%f18			! (Y1_0) dtmp1 = u * dtmp1;
4007*25c28e83SPiotr Jasiukajtis
4008*25c28e83SPiotr Jasiukajtis	st	%f18,[pz]			! (Y1_0) write into memory
4009*25c28e83SPiotr Jasiukajtis	st	%f19,[pz+4]			! (Y1_0) write into memory
4010*25c28e83SPiotr Jasiukajtis	add	pz,stridez,pz			! z += stridez;
4011*25c28e83SPiotr Jasiukajtis
4012*25c28e83SPiotr Jasiukajtis.xend_loop:
4013*25c28e83SPiotr Jasiukajtis	ba	.xbegin
4014*25c28e83SPiotr Jasiukajtis	nop
4015*25c28e83SPiotr Jasiukajtis
4016*25c28e83SPiotr Jasiukajtis	.align	16
4017*25c28e83SPiotr Jasiukajtis.xupdate0:
4018*25c28e83SPiotr Jasiukajtis	cmp	counter,0
4019*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%i2
4020*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont0
4021*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f10
4022*25c28e83SPiotr Jasiukajtis
4023*25c28e83SPiotr Jasiukajtis	stx	%i2,[%fp+tmp_py]
4024*25c28e83SPiotr Jasiukajtis
4025*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4026*25c28e83SPiotr Jasiukajtis	ba	.xcont0
4027*25c28e83SPiotr Jasiukajtis	or	%g0,0,counter
4028*25c28e83SPiotr Jasiukajtis
4029*25c28e83SPiotr Jasiukajtis	.align	16
4030*25c28e83SPiotr Jasiukajtis.xupdate1:
4031*25c28e83SPiotr Jasiukajtis	cmp	counter,0
4032*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%i2
4033*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont1
4034*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f10
4035*25c28e83SPiotr Jasiukajtis
4036*25c28e83SPiotr Jasiukajtis	stx	%i2,[%fp+tmp_py]
4037*25c28e83SPiotr Jasiukajtis
4038*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4039*25c28e83SPiotr Jasiukajtis	ba	.xcont1
4040*25c28e83SPiotr Jasiukajtis	or	%g0,0,counter
4041*25c28e83SPiotr Jasiukajtis
4042*25c28e83SPiotr Jasiukajtis	.align	16
4043*25c28e83SPiotr Jasiukajtis.xupdate2:
4044*25c28e83SPiotr Jasiukajtis	cmp	counter,1
4045*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%l3
4046*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont2
4047*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f14
4048*25c28e83SPiotr Jasiukajtis
4049*25c28e83SPiotr Jasiukajtis	stx	%l3,[%fp+tmp_py]
4050*25c28e83SPiotr Jasiukajtis	sub	counter,1,counter
4051*25c28e83SPiotr Jasiukajtis
4052*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4053*25c28e83SPiotr Jasiukajtis	ba	.xcont2
4054*25c28e83SPiotr Jasiukajtis	or	%g0,1,counter
4055*25c28e83SPiotr Jasiukajtis
4056*25c28e83SPiotr Jasiukajtis	.align	16
4057*25c28e83SPiotr Jasiukajtis.xupdate3:
4058*25c28e83SPiotr Jasiukajtis	cmp	counter,1
4059*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%l3
4060*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont3
4061*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f14
4062*25c28e83SPiotr Jasiukajtis
4063*25c28e83SPiotr Jasiukajtis	stx	%l3,[%fp+tmp_py]
4064*25c28e83SPiotr Jasiukajtis	sub	counter,1,counter
4065*25c28e83SPiotr Jasiukajtis
4066*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4067*25c28e83SPiotr Jasiukajtis	ba	.xcont3
4068*25c28e83SPiotr Jasiukajtis	or	%g0,1,counter
4069*25c28e83SPiotr Jasiukajtis
4070*25c28e83SPiotr Jasiukajtis	.align	16
4071*25c28e83SPiotr Jasiukajtis.xupdate4:
4072*25c28e83SPiotr Jasiukajtis	cmp	counter,2
4073*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont4
4074*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f18
4075*25c28e83SPiotr Jasiukajtis
4076*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
4077*25c28e83SPiotr Jasiukajtis	sub	counter,2,counter
4078*25c28e83SPiotr Jasiukajtis
4079*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4080*25c28e83SPiotr Jasiukajtis	ba	.xcont4
4081*25c28e83SPiotr Jasiukajtis	or	%g0,2,counter
4082*25c28e83SPiotr Jasiukajtis
4083*25c28e83SPiotr Jasiukajtis	.align	16
4084*25c28e83SPiotr Jasiukajtis.xupdate5:
4085*25c28e83SPiotr Jasiukajtis	cmp	counter,2
4086*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont5
4087*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f18
4088*25c28e83SPiotr Jasiukajtis
4089*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
4090*25c28e83SPiotr Jasiukajtis	sub	counter,2,counter
4091*25c28e83SPiotr Jasiukajtis
4092*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4093*25c28e83SPiotr Jasiukajtis	ba	.xcont5
4094*25c28e83SPiotr Jasiukajtis	or	%g0,2,counter
4095*25c28e83SPiotr Jasiukajtis
4096*25c28e83SPiotr Jasiukajtis	.align	16
4097*25c28e83SPiotr Jasiukajtis.xupdate6:
4098*25c28e83SPiotr Jasiukajtis	cmp	counter,3
4099*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%i2
4100*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont6
4101*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f20
4102*25c28e83SPiotr Jasiukajtis
4103*25c28e83SPiotr Jasiukajtis	stx	%i2,[%fp+tmp_py]
4104*25c28e83SPiotr Jasiukajtis	sub	counter,3,counter
4105*25c28e83SPiotr Jasiukajtis
4106*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4107*25c28e83SPiotr Jasiukajtis	ba	.xcont6
4108*25c28e83SPiotr Jasiukajtis	or	%g0,3,counter
4109*25c28e83SPiotr Jasiukajtis
4110*25c28e83SPiotr Jasiukajtis	.align	16
4111*25c28e83SPiotr Jasiukajtis.xupdate7:
4112*25c28e83SPiotr Jasiukajtis	cmp	counter,3
4113*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%i2
4114*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont7
4115*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f20
4116*25c28e83SPiotr Jasiukajtis
4117*25c28e83SPiotr Jasiukajtis	stx	%i2,[%fp+tmp_py]
4118*25c28e83SPiotr Jasiukajtis	sub	counter,3,counter
4119*25c28e83SPiotr Jasiukajtis
4120*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4121*25c28e83SPiotr Jasiukajtis	ba	.xcont7
4122*25c28e83SPiotr Jasiukajtis	or	%g0,3,counter
4123*25c28e83SPiotr Jasiukajtis
4124*25c28e83SPiotr Jasiukajtis	.align	16
4125*25c28e83SPiotr Jasiukajtis.xupdate8:
4126*25c28e83SPiotr Jasiukajtis	cmp	counter,4
4127*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%l3
4128*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont8
4129*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f26
4130*25c28e83SPiotr Jasiukajtis
4131*25c28e83SPiotr Jasiukajtis	stx	%l3,[%fp+tmp_py]
4132*25c28e83SPiotr Jasiukajtis	sub	counter,4,counter
4133*25c28e83SPiotr Jasiukajtis
4134*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4135*25c28e83SPiotr Jasiukajtis	ba	.xcont8
4136*25c28e83SPiotr Jasiukajtis	or	%g0,4,counter
4137*25c28e83SPiotr Jasiukajtis
4138*25c28e83SPiotr Jasiukajtis	.align	16
4139*25c28e83SPiotr Jasiukajtis.xupdate9:
4140*25c28e83SPiotr Jasiukajtis	cmp	counter,4
4141*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%l3
4142*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont9
4143*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f26
4144*25c28e83SPiotr Jasiukajtis
4145*25c28e83SPiotr Jasiukajtis	stx	%l3,[%fp+tmp_py]
4146*25c28e83SPiotr Jasiukajtis	sub	counter,4,counter
4147*25c28e83SPiotr Jasiukajtis
4148*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4149*25c28e83SPiotr Jasiukajtis	ba	.xcont9
4150*25c28e83SPiotr Jasiukajtis	or	%g0,4,counter
4151*25c28e83SPiotr Jasiukajtis
4152*25c28e83SPiotr Jasiukajtis	.align	16
4153*25c28e83SPiotr Jasiukajtis.xupdate10:
4154*25c28e83SPiotr Jasiukajtis	cmp	counter,5
4155*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont10
4156*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f28
4157*25c28e83SPiotr Jasiukajtis
4158*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
4159*25c28e83SPiotr Jasiukajtis	sub	counter,5,counter
4160*25c28e83SPiotr Jasiukajtis
4161*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4162*25c28e83SPiotr Jasiukajtis	ba	.xcont10
4163*25c28e83SPiotr Jasiukajtis	or	%g0,5,counter
4164*25c28e83SPiotr Jasiukajtis
4165*25c28e83SPiotr Jasiukajtis	.align	16
4166*25c28e83SPiotr Jasiukajtis.xupdate11:
4167*25c28e83SPiotr Jasiukajtis	cmp	counter,3
4168*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont11
4169*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f28
4170*25c28e83SPiotr Jasiukajtis
4171*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
4172*25c28e83SPiotr Jasiukajtis	sub	counter,3,counter
4173*25c28e83SPiotr Jasiukajtis
4174*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4175*25c28e83SPiotr Jasiukajtis	ba	.xcont11
4176*25c28e83SPiotr Jasiukajtis	or	%g0,3,counter
4177*25c28e83SPiotr Jasiukajtis
4178*25c28e83SPiotr Jasiukajtis	.align	16
4179*25c28e83SPiotr Jasiukajtis.xupdate12:
4180*25c28e83SPiotr Jasiukajtis	cmp	counter,4
4181*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%i2
4182*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont12
4183*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f8
4184*25c28e83SPiotr Jasiukajtis
4185*25c28e83SPiotr Jasiukajtis	stx	%i2,[%fp+tmp_py]
4186*25c28e83SPiotr Jasiukajtis	sub	counter,4,counter
4187*25c28e83SPiotr Jasiukajtis
4188*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4189*25c28e83SPiotr Jasiukajtis	ba	.xcont12
4190*25c28e83SPiotr Jasiukajtis	or	%g0,4,counter
4191*25c28e83SPiotr Jasiukajtis
4192*25c28e83SPiotr Jasiukajtis	.align	16
4193*25c28e83SPiotr Jasiukajtis.xupdate13:
4194*25c28e83SPiotr Jasiukajtis	cmp	counter,4
4195*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%i2
4196*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont13
4197*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f8
4198*25c28e83SPiotr Jasiukajtis
4199*25c28e83SPiotr Jasiukajtis	stx	%i2,[%fp+tmp_py]
4200*25c28e83SPiotr Jasiukajtis	sub	counter,4,counter
4201*25c28e83SPiotr Jasiukajtis
4202*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4203*25c28e83SPiotr Jasiukajtis	ba	.xcont13
4204*25c28e83SPiotr Jasiukajtis	or	%g0,4,counter
4205*25c28e83SPiotr Jasiukajtis
4206*25c28e83SPiotr Jasiukajtis	.align	16
4207*25c28e83SPiotr Jasiukajtis.xupdate14:
4208*25c28e83SPiotr Jasiukajtis	cmp	counter,5
4209*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%l3
4210*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont14
4211*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f26
4212*25c28e83SPiotr Jasiukajtis
4213*25c28e83SPiotr Jasiukajtis	stx	%l3,[%fp+tmp_py]
4214*25c28e83SPiotr Jasiukajtis	sub	counter,5,counter
4215*25c28e83SPiotr Jasiukajtis
4216*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4217*25c28e83SPiotr Jasiukajtis	ba	.xcont14
4218*25c28e83SPiotr Jasiukajtis	or	%g0,5,counter
4219*25c28e83SPiotr Jasiukajtis
4220*25c28e83SPiotr Jasiukajtis	.align	16
4221*25c28e83SPiotr Jasiukajtis.xupdate15:
4222*25c28e83SPiotr Jasiukajtis	cmp	counter,5
4223*25c28e83SPiotr Jasiukajtis	sub	py,stridey,%l3
4224*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont15
4225*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f26
4226*25c28e83SPiotr Jasiukajtis
4227*25c28e83SPiotr Jasiukajtis	stx	%l3,[%fp+tmp_py]
4228*25c28e83SPiotr Jasiukajtis	sub	counter,5,counter
4229*25c28e83SPiotr Jasiukajtis
4230*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4231*25c28e83SPiotr Jasiukajtis	ba	.xcont15
4232*25c28e83SPiotr Jasiukajtis	or	%g0,5,counter
4233*25c28e83SPiotr Jasiukajtis
4234*25c28e83SPiotr Jasiukajtis	.align	16
4235*25c28e83SPiotr Jasiukajtis.xupdate16:
4236*25c28e83SPiotr Jasiukajtis	cmp	counter,6
4237*25c28e83SPiotr Jasiukajtis	ble,pt	%icc,.xcont16
4238*25c28e83SPiotr Jasiukajtis	fmovd	DZERO,%f28
4239*25c28e83SPiotr Jasiukajtis
4240*25c28e83SPiotr Jasiukajtis	stx	py,[%fp+tmp_py]
4241*25c28e83SPiotr Jasiukajtis	sub	counter,6,counter
4242*25c28e83SPiotr Jasiukajtis
4243*25c28e83SPiotr Jasiukajtis	st	counter,[%fp+tmp_counter]
4244*25c28e83SPiotr Jasiukajtis	ba	.xcont16
4245*25c28e83SPiotr Jasiukajtis	or	%g0,6,counter
4246*25c28e83SPiotr Jasiukajtis
4247*25c28e83SPiotr Jasiukajtis	.align	16
4248*25c28e83SPiotr Jasiukajtis.xspec0:
4249*25c28e83SPiotr Jasiukajtis	add	EXPTBL,4095,%l0
4250*25c28e83SPiotr Jasiukajtis	add	%l0,1,%l0
4251*25c28e83SPiotr Jasiukajtis	ldd	[%l0+8],%f20			! ld  DONE
4252*25c28e83SPiotr Jasiukajtis	st	%f20,[pz]			! *pz = DONE;
4253*25c28e83SPiotr Jasiukajtis	ba	.xupdate_point
4254*25c28e83SPiotr Jasiukajtis	st	%f21,[pz+4]			! *pz = DONE;
4255*25c28e83SPiotr Jasiukajtis
4256*25c28e83SPiotr Jasiukajtis	.align	16
4257*25c28e83SPiotr Jasiukajtis.xspec1:
4258*25c28e83SPiotr Jasiukajtis	ldx	[%fp+tmp_px],%l1
4259*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ffffc00),MASK_0x7fffffff
4260*25c28e83SPiotr Jasiukajtis
4261*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o3
4262*25c28e83SPiotr Jasiukajtis	add	MASK_0x7fffffff,0x3ff,MASK_0x7fffffff
4263*25c28e83SPiotr Jasiukajtis
4264*25c28e83SPiotr Jasiukajtis	and	%l2,MASK_0x7fffffff,%o2		! if (hy &= 0x7fffffff);
4265*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3ff00000),MASK_0x3ff00000
4266*25c28e83SPiotr Jasiukajtis
4267*25c28e83SPiotr Jasiukajtis	cmp	%o2,%o3				! if (hy != 0x7ff00000);
4268*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,2f				! if (hy != 0x7ff00000);
4269*25c28e83SPiotr Jasiukajtis	nop
4270*25c28e83SPiotr Jasiukajtis
4271*25c28e83SPiotr Jasiukajtis	ld	[py+4],%l3			! ld ly;
4272*25c28e83SPiotr Jasiukajtis	cmp	%l3,0				! if (ly != 0);
4273*25c28e83SPiotr Jasiukajtis	bne,a,pt	%icc,3f			! if (ly != 0);
4274*25c28e83SPiotr Jasiukajtis	nop
4275*25c28e83SPiotr Jasiukajtis
4276*25c28e83SPiotr Jasiukajtis	ld	[%l1],%i1			! ld hx;
4277*25c28e83SPiotr Jasiukajtis	cmp	%i1,MASK_0x3ff00000		! if (hx != 0x3ff00000);
4278*25c28e83SPiotr Jasiukajtis	bne,a,pn	%icc,1f			! if (hx != 0x3ff00000);
4279*25c28e83SPiotr Jasiukajtis	srl	%l2,31,%o7			! sy = hy >> 31;
4280*25c28e83SPiotr Jasiukajtis
4281*25c28e83SPiotr Jasiukajtis	ld	[%l1+4],%i2			! ld lx;
4282*25c28e83SPiotr Jasiukajtis	cmp	%i2,0				! if (lx != 0);
4283*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,1f				! if (lx != 0);
4284*25c28e83SPiotr Jasiukajtis	srl	%l2,31,%o7			! sy = hy >> 31;
4285*25c28e83SPiotr Jasiukajtis
4286*25c28e83SPiotr Jasiukajtis	fzero	%f28
4287*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f28,%f28			! *pz = *py * 0.0;
4288*25c28e83SPiotr Jasiukajtis	st	%f28,[pz]
4289*25c28e83SPiotr Jasiukajtis	ba	.xupdate_point
4290*25c28e83SPiotr Jasiukajtis	st	%f29,[pz+4]
4291*25c28e83SPiotr Jasiukajtis1:
4292*25c28e83SPiotr Jasiukajtis	sub	%i1,MASK_0x3ff00000,%o0		! hx - 0x3ff00000;
4293*25c28e83SPiotr Jasiukajtis	srlx	%o0,63,%o0			! (hx - 0x3ff00000) >> 63;
4294*25c28e83SPiotr Jasiukajtis
4295*25c28e83SPiotr Jasiukajtis	cmp	%o0,%o7				! if ((hx < 0x3ff00000) == sy);
4296*25c28e83SPiotr Jasiukajtis	be,pn	%icc,1f				! if ((hx < 0x3ff00000) == sy);
4297*25c28e83SPiotr Jasiukajtis
4298*25c28e83SPiotr Jasiukajtis	st	DZERO_HI,[pz]
4299*25c28e83SPiotr Jasiukajtis	ba	.xupdate_point
4300*25c28e83SPiotr Jasiukajtis	st	DZERO_LO,[pz+4]
4301*25c28e83SPiotr Jasiukajtis1:
4302*25c28e83SPiotr Jasiukajtis	st	%o2,[pz]			! ((int*)pz)[0] = hy;
4303*25c28e83SPiotr Jasiukajtis	ba	.xupdate_point
4304*25c28e83SPiotr Jasiukajtis	st	%l3,[pz+4]			! ((int*)pz)[1] = ly;
4305*25c28e83SPiotr Jasiukajtis2:
4306*25c28e83SPiotr Jasiukajtis	bl,a,pn	%icc,1f				! if (hy < 0x7ff00000);
4307*25c28e83SPiotr Jasiukajtis	ld	[%l1+4],%i2			! ld lx;
4308*25c28e83SPiotr Jasiukajtis3:
4309*25c28e83SPiotr Jasiukajtis	ld	[%l1],%f20			! x = *px;
4310*25c28e83SPiotr Jasiukajtis	ld	[%l1+4],%f21			! x = *px;
4311*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f18,%f28			! *pz = *px * *py;
4312*25c28e83SPiotr Jasiukajtis	st	%f28,[pz]
4313*25c28e83SPiotr Jasiukajtis	ba	.xupdate_point
4314*25c28e83SPiotr Jasiukajtis	st	%f29,[pz+4]
4315*25c28e83SPiotr Jasiukajtis1:
4316*25c28e83SPiotr Jasiukajtis	ld	[%l1],%i1			! ld hx;
4317*25c28e83SPiotr Jasiukajtis	cmp	%i2,0				! if (lx != 0);
4318*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,1f				! if (lx != 0);
4319*25c28e83SPiotr Jasiukajtis	nop
4320*25c28e83SPiotr Jasiukajtis
4321*25c28e83SPiotr Jasiukajtis	cmp	%i1,MASK_0x3ff00000		! if (hx != 0x3ff00000);
4322*25c28e83SPiotr Jasiukajtis	add	EXPTBL,4095,%l0
4323*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,1f				! if (hx != 0x3ff00000);
4324*25c28e83SPiotr Jasiukajtis	add	%l0,1,%l0
4325*25c28e83SPiotr Jasiukajtis
4326*25c28e83SPiotr Jasiukajtis	ldd	[%l0+8],%f20			! ld  DONE
4327*25c28e83SPiotr Jasiukajtis	st	%f20,[pz]			! *pz = DONE;
4328*25c28e83SPiotr Jasiukajtis	ba	.xupdate_point
4329*25c28e83SPiotr Jasiukajtis	st	%f21,[pz+4]			! *pz = DONE;
4330*25c28e83SPiotr Jasiukajtis1:
4331*25c28e83SPiotr Jasiukajtis	srl	%l2,31,%o7			! sy = hy >> 31;
4332*25c28e83SPiotr Jasiukajtis	sub	%i1,MASK_0x3ff00000,%o0		! hx - 0x3ff00000;
4333*25c28e83SPiotr Jasiukajtis
4334*25c28e83SPiotr Jasiukajtis	srlx	%o0,63,%o0			! (hx - 0x3ff00000) >> 63;
4335*25c28e83SPiotr Jasiukajtis
4336*25c28e83SPiotr Jasiukajtis	cmp	%o0,%o7				! if (hx < 0x3ff00000) == sy);
4337*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,1f				! if (hx < 0x3ff00000) == sy);
4338*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_HUGE],%f20		! y0 = _HUGE;
4339*25c28e83SPiotr Jasiukajtis
4340*25c28e83SPiotr Jasiukajtis	ldd	[EXPTBL-ind_TINY],%f20		! y0 = _TINY;
4341*25c28e83SPiotr Jasiukajtis1:
4342*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f20			! *pz = y0 * y0
4343*25c28e83SPiotr Jasiukajtis	st	%f20,[pz]
4344*25c28e83SPiotr Jasiukajtis	ba	.xupdate_point
4345*25c28e83SPiotr Jasiukajtis	st	%f21,[pz+4]
4346*25c28e83SPiotr Jasiukajtis
4347*25c28e83SPiotr Jasiukajtis.xupdate_point:
4348*25c28e83SPiotr Jasiukajtis	add	py,stridey,py
4349*25c28e83SPiotr Jasiukajtis	ba	.xbegin1
4350*25c28e83SPiotr Jasiukajtis	add	pz,stridez,pz
4351*25c28e83SPiotr Jasiukajtis
4352*25c28e83SPiotr Jasiukajtis	SET_SIZE(__vpow)
4353*25c28e83SPiotr Jasiukajtis
4354