1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21/*
22 * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
23 */
24/*
25 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
26 * Use is subject to license terms.
27 */
28
29	.file	"__vsqrt.S"
30
31#include "libm.h"
32
33	RO_DATA
34	.align	64
35
36.CONST_TBL:
37	.word	0x3fe00000, 0x00000000	! A1  =  5.00000000000000001789e-01
38	.word	0xbfbfffff, 0xfffd0bfd	! A2  = -1.24999999997314110667e-01
39	.word	0x3fafffff, 0xfffb5bfb	! A3  =  6.24999999978896565817e-02
40	.word	0xbfa4000f, 0xc00b4fc8	! A4  = -3.90629693917215481458e-02
41	.word	0x3f9c0018, 0xc012da4e	! A5  =  2.73441188080261677282e-02
42	.word	0x000fffff, 0xffffffff	! DC0 =  0x000fffffffffffff
43	.word	0x00001000, 0x00000000	! DC2 =  0x0000100000000000
44	.word	0x7fffe000, 0x00000000	! DC3 =  0x7fffe00000000000
45
46! i = [0,128]
47! TBL[8*i+0] = 1.0 / (*(double*)&(0x3fe0000000000000LL + (i << 45)));
48! TBL[8*i+1] = (double)(2.0 * sqrtl(*(double*)&(0x3fe0000000000000LL + (i << 45))));
49! TBL[8*i+2] = (double)(2.0 * sqrtl(*(double*)&(0x3fe0000000000000LL + (i << 45))) - TBL[8*i+1]);
50! TBL[8*i+3] = 0
51! TBL[8*i+4] = 1.0 / (*(double*)&(0x3fe0000000000000LL + (i << 45)));
52! TBL[8*i+5] = (double)(2.0 * sqrtl(2.0) * sqrtl(*(double*)&(0x3fe0000000000000LL + (i << 45))));
53! TBL[8*i+6] = (double)(2.0 * sqrtl(2.0) * sqrtl(*(double*)&(0x3fe0000000000000LL + (i << 45))) - TBL[8*i+5]);
54! TBL[8*i+7] = 0
55
56	.word	0x40000000, 0x00000000, 0x3ff6a09e, 0x667f3bcd
57	.word	0xbc9bdd34, 0x13b26456, 0x00000000, 0x00000000
58	.word	0x40000000, 0x00000000, 0x40000000, 0x00000000
59	.word	0xb8f00000, 0x00000000, 0x00000000, 0x00000000
60	.word	0x3fffc07f, 0x01fc07f0, 0x3ff6b733, 0xbfd8c648
61	.word	0x3c53b629, 0x05629048, 0x00000000, 0x00000000
62	.word	0x3fffc07f, 0x01fc07f0, 0x40000ff8, 0x07f60deb
63	.word	0x3c90655c, 0x648a53f1, 0x00000000, 0x00000000
64	.word	0x3fff81f8, 0x1f81f820, 0x3ff6cdb2, 0xbbb212eb
65	.word	0x3c960332, 0xcdbaba2d, 0x00000000, 0x00000000
66	.word	0x3fff81f8, 0x1f81f820, 0x40001fe0, 0x3f61bad0
67	.word	0x3ca2c41a, 0x15cbfaf2, 0x00000000, 0x00000000
68	.word	0x3fff4465, 0x9e4a4271, 0x3ff6e41b, 0x9bfb3b75
69	.word	0xbc925d8c, 0xfd6d5c87, 0x00000000, 0x00000000
70	.word	0x3fff4465, 0x9e4a4271, 0x40002fb8, 0xd4e30f48
71	.word	0xbca64203, 0xab1ba910, 0x00000000, 0x00000000
72	.word	0x3fff07c1, 0xf07c1f08, 0x3ff6fa6e, 0xa162d0f0
73	.word	0x3c691a24, 0x3d6297e9, 0x00000000, 0x00000000
74	.word	0x3fff07c1, 0xf07c1f08, 0x40003f81, 0xf636b80c
75	.word	0xbca0efc8, 0xba812a8c, 0x00000000, 0x00000000
76	.word	0x3ffecc07, 0xb301ecc0, 0x3ff710ac, 0x0b5e5e32
77	.word	0xbc991218, 0xb8d2850d, 0x00000000, 0x00000000
78	.word	0x3ffecc07, 0xb301ecc0, 0x40004f3b, 0xd03c0a64
79	.word	0x3c9ee2cf, 0x2d8ae22b, 0x00000000, 0x00000000
80	.word	0x3ffe9131, 0xabf0b767, 0x3ff726d4, 0x1832a0be
81	.word	0xbc2d9b1a, 0xa8ecb058, 0x00000000, 0x00000000
82	.word	0x3ffe9131, 0xabf0b767, 0x40005ee6, 0x8efad48b
83	.word	0xbc9c35f4, 0x8f4b89f7, 0x00000000, 0x00000000
84	.word	0x3ffe573a, 0xc901e574, 0x3ff73ce7, 0x04fb7b23
85	.word	0x3c91470b, 0x816b17a6, 0x00000000, 0x00000000
86	.word	0x3ffe573a, 0xc901e574, 0x40006e82, 0x5da8fc2b
87	.word	0x3c9a315a, 0x8bd8a03b, 0x00000000, 0x00000000
88	.word	0x3ffe1e1e, 0x1e1e1e1e, 0x3ff752e5, 0x0db3a3a2
89	.word	0xbc939331, 0x3eea4381, 0x00000000, 0x00000000
90	.word	0x3ffe1e1e, 0x1e1e1e1e, 0x40007e0f, 0x66afed07
91	.word	0xbc74a6e1, 0xdcd59eaf, 0x00000000, 0x00000000
92	.word	0x3ffde5d6, 0xe3f8868a, 0x3ff768ce, 0x6d3c11e0
93	.word	0xbc9478b8, 0xab33074d, 0x00000000, 0x00000000
94	.word	0x3ffde5d6, 0xe3f8868a, 0x40008d8d, 0xd3b1d9aa
95	.word	0x3c81d533, 0x85fe2b96, 0x00000000, 0x00000000
96	.word	0x3ffdae60, 0x76b981db, 0x3ff77ea3, 0x5d632e43
97	.word	0x3c92f714, 0x9a22fa4f, 0x00000000, 0x00000000
98	.word	0x3ffdae60, 0x76b981db, 0x40009cfd, 0xcd8ed009
99	.word	0xbc4862a9, 0xbcf7f372, 0x00000000, 0x00000000
100	.word	0x3ffd77b6, 0x54b82c34, 0x3ff79464, 0x16ebc56c
101	.word	0x3c9a7cd5, 0x224c7375, 0x00000000, 0x00000000
102	.word	0x3ffd77b6, 0x54b82c34, 0x4000ac5f, 0x7c69a3c8
103	.word	0x3ca94dff, 0x7bfa2757, 0x00000000, 0x00000000
104	.word	0x3ffd41d4, 0x1d41d41d, 0x3ff7aa10, 0xd193c22d
105	.word	0xbc790ed9, 0x403afe85, 0x00000000, 0x00000000
106	.word	0x3ffd41d4, 0x1d41d41d, 0x4000bbb3, 0x07acafdb
107	.word	0xbc852a97, 0x686f9d2e, 0x00000000, 0x00000000
108	.word	0x3ffd0cb5, 0x8f6ec074, 0x3ff7bfa9, 0xc41ab040
109	.word	0x3c8d6bc3, 0x02ae758f, 0x00000000, 0x00000000
110	.word	0x3ffd0cb5, 0x8f6ec074, 0x4000caf8, 0x960e710d
111	.word	0x3c9caa6b, 0xe2366171, 0x00000000, 0x00000000
112	.word	0x3ffcd856, 0x89039b0b, 0x3ff7d52f, 0x244809e9
113	.word	0x3c9081f6, 0xf3b99d5f, 0x00000000, 0x00000000
114	.word	0x3ffcd856, 0x89039b0b, 0x4000da30, 0x4d95fb06
115	.word	0xbc9e1269, 0x76855586, 0x00000000, 0x00000000
116	.word	0x3ffca4b3, 0x055ee191, 0x3ff7eaa1, 0x26f15284
117	.word	0xbc846ce4, 0x68c1882b, 0x00000000, 0x00000000
118	.word	0x3ffca4b3, 0x055ee191, 0x4000e95a, 0x539f492c
119	.word	0xbc80c73f, 0xc38a2184, 0x00000000, 0x00000000
120	.word	0x3ffc71c7, 0x1c71c71c, 0x3ff80000, 0x00000000
121	.word	0x00000000, 0x00000000, 0x00000000, 0x00000000
122	.word	0x3ffc71c7, 0x1c71c71c, 0x4000f876, 0xccdf6cd9
123	.word	0x3cab1a18, 0xf13a34c0, 0x00000000, 0x00000000
124	.word	0x3ffc3f8f, 0x01c3f8f0, 0x3ff8154b, 0xe2773526
125	.word	0xbc857147, 0xe067d0ee, 0x00000000, 0x00000000
126	.word	0x3ffc3f8f, 0x01c3f8f0, 0x40010785, 0xdd689a29
127	.word	0xbcaaabbe, 0x9e4d810a, 0x00000000, 0x00000000
128	.word	0x3ffc0e07, 0x0381c0e0, 0x3ff82a85, 0x00794e6c
129	.word	0xbc82edaa, 0x75e6ac5f, 0x00000000, 0x00000000
130	.word	0x3ffc0e07, 0x0381c0e0, 0x40011687, 0xa8ae14a3
131	.word	0x3cac9b43, 0xbcf06106, 0x00000000, 0x00000000
132	.word	0x3ffbdd2b, 0x899406f7, 0x3ff83fab, 0x8b4d4315
133	.word	0x3c829e06, 0x2d3e134d, 0x00000000, 0x00000000
134	.word	0x3ffbdd2b, 0x899406f7, 0x4001257c, 0x5187fd09
135	.word	0xbca4a750, 0xa83950a4, 0x00000000, 0x00000000
136	.word	0x3ffbacf9, 0x14c1bad0, 0x3ff854bf, 0xb363dc39
137	.word	0x3c99399f, 0xca38787e, 0x00000000, 0x00000000
138	.word	0x3ffbacf9, 0x14c1bad0, 0x40013463, 0xfa37014e
139	.word	0x3c7b295b, 0xaa698cd3, 0x00000000, 0x00000000
140	.word	0x3ffb7d6c, 0x3dda338b, 0x3ff869c1, 0xa85cc346
141	.word	0x3c9fcc99, 0xde11b1d1, 0x00000000, 0x00000000
142	.word	0x3ffb7d6c, 0x3dda338b, 0x4001433e, 0xc467effb
143	.word	0x3c92c031, 0x3b7278c8, 0x00000000, 0x00000000
144	.word	0x3ffb4e81, 0xb4e81b4f, 0x3ff87eb1, 0x990b697a
145	.word	0x3c7c43e9, 0xf593ea0f, 0x00000000, 0x00000000
146	.word	0x3ffb4e81, 0xb4e81b4f, 0x4001520c, 0xd1372feb
147	.word	0xbcadec22, 0x5d8e66d2, 0x00000000, 0x00000000
148	.word	0x3ffb2036, 0x406c80d9, 0x3ff8938f, 0xb37bc9c1
149	.word	0xbc7c115f, 0x9f5c8d6f, 0x00000000, 0x00000000
150	.word	0x3ffb2036, 0x406c80d9, 0x400160ce, 0x41341d74
151	.word	0x3c967036, 0x863a1bb2, 0x00000000, 0x00000000
152	.word	0x3ffaf286, 0xbca1af28, 0x3ff8a85c, 0x24f70659
153	.word	0x3c9f6e07, 0x6b588a50, 0x00000000, 0x00000000
154	.word	0x3ffaf286, 0xbca1af28, 0x40016f83, 0x34644df9
155	.word	0xbcae8679, 0x80a1c48e, 0x00000000, 0x00000000
156	.word	0x3ffac570, 0x1ac5701b, 0x3ff8bd17, 0x1a07e38a
157	.word	0x3c9c20b5, 0xa697f23f, 0x00000000, 0x00000000
158	.word	0x3ffac570, 0x1ac5701b, 0x40017e2b, 0xca46bab9
159	.word	0x3ca1519b, 0x10d04d5f, 0x00000000, 0x00000000
160	.word	0x3ffa98ef, 0x606a63be, 0x3ff8d1c0, 0xbe7f20ac
161	.word	0xbc8bdb8a, 0x6df021f3, 0x00000000, 0x00000000
162	.word	0x3ffa98ef, 0x606a63be, 0x40018cc8, 0x21d6d3e3
163	.word	0xbca30af1, 0xd725cc5b, 0x00000000, 0x00000000
164	.word	0x3ffa6d01, 0xa6d01a6d, 0x3ff8e659, 0x3d77b0b8
165	.word	0xbc7d99d7, 0x64769954, 0x00000000, 0x00000000
166	.word	0x3ffa6d01, 0xa6d01a6d, 0x40019b58, 0x598f7c9f
167	.word	0xbc72e0d8, 0x51c0e011, 0x00000000, 0x00000000
168	.word	0x3ffa41a4, 0x1a41a41a, 0x3ff8fae0, 0xc15ad38a
169	.word	0xbc7db7ad, 0xb6817f6d, 0x00000000, 0x00000000
170	.word	0x3ffa41a4, 0x1a41a41a, 0x4001a9dc, 0x8f6df104
171	.word	0xbcafc519, 0xc18dc1d5, 0x00000000, 0x00000000
172	.word	0x3ffa16d3, 0xf97a4b02, 0x3ff90f57, 0x73e410e4
173	.word	0x3c6fb605, 0xcee75482, 0x00000000, 0x00000000
174	.word	0x3ffa16d3, 0xf97a4b02, 0x4001b854, 0xe0f496a0
175	.word	0x3ca27006, 0x899b7c3a, 0x00000000, 0x00000000
176	.word	0x3ff9ec8e, 0x951033d9, 0x3ff923bd, 0x7e25164d
177	.word	0xbc9278d1, 0x901d3b40, 0x00000000, 0x00000000
178	.word	0x3ff9ec8e, 0x951033d9, 0x4001c6c1, 0x6b2db870
179	.word	0x3c887e1d, 0x8335fb28, 0x00000000, 0x00000000
180	.word	0x3ff9c2d1, 0x4ee4a102, 0x3ff93813, 0x088978c5
181	.word	0xbc54312c, 0x627e5c52, 0x00000000, 0x00000000
182	.word	0x3ff9c2d1, 0x4ee4a102, 0x4001d522, 0x4aae2ee1
183	.word	0x3ca91222, 0xf6aebdc9, 0x00000000, 0x00000000
184	.word	0x3ff99999, 0x9999999a, 0x3ff94c58, 0x3ada5b53
185	.word	0xbc9b7ed7, 0x50df3cca, 0x00000000, 0x00000000
186	.word	0x3ff99999, 0x9999999a, 0x4001e377, 0x9b97f4a8
187	.word	0xbc9f5063, 0x19fcfd19, 0x00000000, 0x00000000
188	.word	0x3ff970e4, 0xf80cb872, 0x3ff9608d, 0x3c41fb4b
189	.word	0x3c73df32, 0xeaa86b83, 0x00000000, 0x00000000
190	.word	0x3ff970e4, 0xf80cb872, 0x4001f1c1, 0x799ca8ff
191	.word	0xbca28b52, 0xeb725e0a, 0x00000000, 0x00000000
192	.word	0x3ff948b0, 0xfcd6e9e0, 0x3ff974b2, 0x334f2346
193	.word	0x3c814e4a, 0xd3ae9e3f, 0x00000000, 0x00000000
194	.word	0x3ff948b0, 0xfcd6e9e0, 0x40020000, 0x00000000
195	.word	0xb9000000, 0x00000000, 0x00000000, 0x00000000
196	.word	0x3ff920fb, 0x49d0e229, 0x3ff988c7, 0x45f88592
197	.word	0x3c95af70, 0x1a56047b, 0x00000000, 0x00000000
198	.word	0x3ff920fb, 0x49d0e229, 0x40020e33, 0x499a21a9
199	.word	0xbc924ba2, 0x74fea9a1, 0x00000000, 0x00000000
200	.word	0x3ff8f9c1, 0x8f9c18fa, 0x3ff99ccc, 0x999fff00
201	.word	0x3c866234, 0x063b88ee, 0x00000000, 0x00000000
202	.word	0x3ff8f9c1, 0x8f9c18fa, 0x40021c5b, 0x70d9f824
203	.word	0xbca844f9, 0x9eee6fc3, 0x00000000, 0x00000000
204	.word	0x3ff8d301, 0x8d3018d3, 0x3ff9b0c2, 0x5315c2ce
205	.word	0xbc87f64a, 0x65cc6887, 0x00000000, 0x00000000
206	.word	0x3ff8d301, 0x8d3018d3, 0x40022a78, 0x8fc76de5
207	.word	0x3c931e32, 0xd4e07a48, 0x00000000, 0x00000000
208	.word	0x3ff8acb9, 0x0f6bf3aa, 0x3ff9c4a8, 0x969b7077
209	.word	0xbc96ca9e, 0x5cd4517a, 0x00000000, 0x00000000
210	.word	0x3ff8acb9, 0x0f6bf3aa, 0x4002388a, 0xc0059c28
211	.word	0xbc96072f, 0xbe0e5da3, 0x00000000, 0x00000000
212	.word	0x3ff886e5, 0xf0abb04a, 0x3ff9d87f, 0x87e71422
213	.word	0xbc85fdd8, 0xb11b7b1d, 0x00000000, 0x00000000
214	.word	0x3ff886e5, 0xf0abb04a, 0x40024692, 0x1ad4ea49
215	.word	0xbcaa6d9b, 0x268ef62d, 0x00000000, 0x00000000
216	.word	0x3ff86186, 0x18618618, 0x3ff9ec47, 0x4a261264
217	.word	0xbc8540c4, 0x89ba5074, 0x00000000, 0x00000000
218	.word	0x3ff86186, 0x18618618, 0x4002548e, 0xb9151e85
219	.word	0x3c999820, 0x0a774879, 0x00000000, 0x00000000
220	.word	0x3ff83c97, 0x7ab2bedd, 0x3ffa0000, 0x00000000
221	.word	0x00000000, 0x00000000, 0x00000000, 0x00000000
222	.word	0x3ff83c97, 0x7ab2bedd, 0x40026280, 0xb3476096
223	.word	0x3c9ab88b, 0x5ffe1cf5, 0x00000000, 0x00000000
224	.word	0x3ff81818, 0x18181818, 0x3ffa13a9, 0xcb996651
225	.word	0xbc9f9ab9, 0x0e4e85c3, 0x00000000, 0x00000000
226	.word	0x3ff81818, 0x18181818, 0x40027068, 0x21902e9a
227	.word	0x3c90ff4c, 0x20f541f6, 0x00000000, 0x00000000
228	.word	0x3ff7f405, 0xfd017f40, 0x3ffa2744, 0xce9674f5
229	.word	0xbc8b936c, 0x81e54daa, 0x00000000, 0x00000000
230	.word	0x3ff7f405, 0xfd017f40, 0x40027e45, 0x1bb944c3
231	.word	0x3c8e4a16, 0x42099ef0, 0x00000000, 0x00000000
232	.word	0x3ff7d05f, 0x417d05f4, 0x3ffa3ad1, 0x2a1da160
233	.word	0x3c951168, 0xf4be5984, 0x00000000, 0x00000000
234	.word	0x3ff7d05f, 0x417d05f4, 0x40028c17, 0xb9337834
235	.word	0xbc8af150, 0xa0e88972, 0x00000000, 0x00000000
236	.word	0x3ff7ad22, 0x08e0ecc3, 0x3ffa4e4e, 0xfeda34de
237	.word	0x3c6afbb4, 0xdbdadd0d, 0x00000000, 0x00000000
238	.word	0x3ff7ad22, 0x08e0ecc3, 0x400299e0, 0x11188575
239	.word	0xbc9a6169, 0x3fb250e5, 0x00000000, 0x00000000
240	.word	0x3ff78a4c, 0x8178a4c8, 0x3ffa61be, 0x6cfec997
241	.word	0xbc8c37ea, 0xb2bb5ca0, 0x00000000, 0x00000000
242	.word	0x3ff78a4c, 0x8178a4c8, 0x4002a79e, 0x3a2cd2e6
243	.word	0xbca5ddd4, 0x9cc9ad59, 0x00000000, 0x00000000
244	.word	0x3ff767dc, 0xe434a9b1, 0x3ffa751f, 0x9447b724
245	.word	0x3c82b909, 0x477e9ed1, 0x00000000, 0x00000000
246	.word	0x3ff767dc, 0xe434a9b1, 0x4002b552, 0x4ae1278e
247	.word	0xbca2f2a9, 0x8841b934, 0x00000000, 0x00000000
248	.word	0x3ff745d1, 0x745d1746, 0x3ffa8872, 0x93fd6f34
249	.word	0x3c768ef2, 0x4f198721, 0x00000000, 0x00000000
250	.word	0x3ff745d1, 0x745d1746, 0x4002c2fc, 0x595456a7
251	.word	0xbc996f60, 0xb0fc7e96, 0x00000000, 0x00000000
252	.word	0x3ff72428, 0x7f46debc, 0x3ffa9bb7, 0x8af6cabc
253	.word	0x3c8ba60d, 0xc999aba7, 0x00000000, 0x00000000
254	.word	0x3ff72428, 0x7f46debc, 0x4002d09c, 0x7b54e03e
255	.word	0x3c98c747, 0xfdeda6de, 0x00000000, 0x00000000
256	.word	0x3ff702e0, 0x5c0b8170, 0x3ffaaeee, 0x979b4838
257	.word	0xbc91f08a, 0xef9ef6c0, 0x00000000, 0x00000000
258	.word	0x3ff702e0, 0x5c0b8170, 0x4002de32, 0xc6628741
259	.word	0x3ca78746, 0xc499a4f7, 0x00000000, 0x00000000
260	.word	0x3ff6e1f7, 0x6b4337c7, 0x3ffac217, 0xd7e53b66
261	.word	0xbc64282a, 0xaa967e4f, 0x00000000, 0x00000000
262	.word	0x3ff6e1f7, 0x6b4337c7, 0x4002ebbf, 0x4fafdd4b
263	.word	0xbca78a73, 0xb72d5c41, 0x00000000, 0x00000000
264	.word	0x3ff6c16c, 0x16c16c17, 0x3ffad533, 0x6963eefc
265	.word	0xbc977c4a, 0x537dbdd2, 0x00000000, 0x00000000
266	.word	0x3ff6c16c, 0x16c16c17, 0x4002f942, 0x2c23c47e
267	.word	0xbc827c85, 0xf29db65d, 0x00000000, 0x00000000
268	.word	0x3ff6a13c, 0xd1537290, 0x3ffae841, 0x693db8b4
269	.word	0x3c90f773, 0xcd7a0713, 0x00000000, 0x00000000
270	.word	0x3ff6a13c, 0xd1537290, 0x400306bb, 0x705ae7c3
271	.word	0x3caf4933, 0x907af47a, 0x00000000, 0x00000000
272	.word	0x3ff68168, 0x16816817, 0x3ffafb41, 0xf432002e
273	.word	0xbc7ac94a, 0xfdfe8c5b, 0x00000000, 0x00000000
274	.word	0x3ff68168, 0x16816817, 0x4003142b, 0x30a929ab
275	.word	0x3c98dc01, 0x081a6c5c, 0x00000000, 0x00000000
276	.word	0x3ff661ec, 0x6a5122f9, 0x3ffb0e35, 0x269b38f5
277	.word	0xbc4f69a8, 0x05c3271a, 0x00000000, 0x00000000
278	.word	0x3ff661ec, 0x6a5122f9, 0x40032191, 0x811b0a41
279	.word	0xbc9ce3f0, 0xb38c0bf7, 0x00000000, 0x00000000
280	.word	0x3ff642c8, 0x590b2164, 0x3ffb211b, 0x1c70d023
281	.word	0x3c2e4c5e, 0x66eae2f0, 0x00000000, 0x00000000
282	.word	0x3ff642c8, 0x590b2164, 0x40032eee, 0x75770416
283	.word	0x3caed8e7, 0x730eaff2, 0x00000000, 0x00000000
284	.word	0x3ff623fa, 0x77016240, 0x3ffb33f3, 0xf1490def
285	.word	0xbc95894b, 0xcb02373b, 0x00000000, 0x00000000
286	.word	0x3ff623fa, 0x77016240, 0x40033c42, 0x213ee0c9
287	.word	0x3ca84c24, 0x4ba98124, 0x00000000, 0x00000000
288	.word	0x3ff60581, 0x60581606, 0x3ffb46bf, 0xc05aeb89
289	.word	0x3c9b1c7c, 0xc39adc9f, 0x00000000, 0x00000000
290	.word	0x3ff60581, 0x60581606, 0x4003498c, 0x97b10540
291	.word	0x3c734193, 0xbc8543b4, 0x00000000, 0x00000000
292	.word	0x3ff5e75b, 0xb8d015e7, 0x3ffb597e, 0xa47fdda3
293	.word	0xbc923cc8, 0x9d1e4635, 0x00000000, 0x00000000
294	.word	0x3ff5e75b, 0xb8d015e7, 0x400356cd, 0xebc9b5e2
295	.word	0x3c96dee1, 0x46bb1571, 0x00000000, 0x00000000
296	.word	0x3ff5c988, 0x2b931057, 0x3ffb6c30, 0xb83593e6
297	.word	0x3c8f4e3f, 0xd28d84bc, 0x00000000, 0x00000000
298	.word	0x3ff5c988, 0x2b931057, 0x40036406, 0x30445306
299	.word	0xbca78d86, 0x2327430a, 0x00000000, 0x00000000
300	.word	0x3ff5ac05, 0x6b015ac0, 0x3ffb7ed6, 0x159fadc8
301	.word	0xbc899bcf, 0xf04d134b, 0x00000000, 0x00000000
302	.word	0x3ff5ac05, 0x6b015ac0, 0x40037135, 0x779c8dcb
303	.word	0xbc8fe126, 0xce9778ae, 0x00000000, 0x00000000
304	.word	0x3ff58ed2, 0x308158ed, 0x3ffb916e, 0xd68964ec
305	.word	0x3c826a5d, 0x5dbaae29, 0x00000000, 0x00000000
306	.word	0x3ff58ed2, 0x308158ed, 0x40037e5b, 0xd40f95a1
307	.word	0x3cac6ff5, 0xeca5d122, 0x00000000, 0x00000000
308	.word	0x3ff571ed, 0x3c506b3a, 0x3ffba3fb, 0x14672d7c
309	.word	0xbc8117d3, 0x97dcefc9, 0x00000000, 0x00000000
310	.word	0x3ff571ed, 0x3c506b3a, 0x40038b79, 0x579d3eab
311	.word	0xbcac254f, 0xc0db598e, 0x00000000, 0x00000000
312	.word	0x3ff55555, 0x55555555, 0x3ffbb67a, 0xe8584caa
313	.word	0x3c9cec95, 0xd0b5c1e3, 0x00000000, 0x00000000
314	.word	0x3ff55555, 0x55555555, 0x4003988e, 0x1409212e
315	.word	0x3caf40c8, 0x6450c869, 0x00000000, 0x00000000
316	.word	0x3ff53909, 0x48f40feb, 0x3ffbc8ee, 0x6b2865b9
317	.word	0x3c9394eb, 0x90f645c8, 0x00000000, 0x00000000
318	.word	0x3ff53909, 0x48f40feb, 0x4003a59a, 0x1adbb257
319	.word	0x3ca6adce, 0x020a308d, 0x00000000, 0x00000000
320	.word	0x3ff51d07, 0xeae2f815, 0x3ffbdb55, 0xb550fdbc
321	.word	0x3c7365e9, 0x6aa5fae3, 0x00000000, 0x00000000
322	.word	0x3ff51d07, 0xeae2f815, 0x4003b29d, 0x7d635662
323	.word	0x3cac99b0, 0x5e282129, 0x00000000, 0x00000000
324	.word	0x3ff50150, 0x15015015, 0x3ffbedb0, 0xdefaf661
325	.word	0x3c91a627, 0xb279170d, 0x00000000, 0x00000000
326	.word	0x3ff50150, 0x15015015, 0x4003bf98, 0x4cb56c77
327	.word	0x3ca8f653, 0xbcc0c4a1, 0x00000000, 0x00000000
328	.word	0x3ff4e5e0, 0xa72f0539, 0x3ffc0000, 0x00000000
329	.word	0x00000000, 0x00000000, 0x00000000, 0x00000000
330	.word	0x3ff4e5e0, 0xa72f0539, 0x4003cc8a, 0x99af5453
331	.word	0xbc486364, 0x4f05f2be, 0x00000000, 0x00000000
332	.word	0x3ff4cab8, 0x8725af6e, 0x3ffc1243, 0x2fec0329
333	.word	0x3c96e0d7, 0x8dd23a7d, 0x00000000, 0x00000000
334	.word	0x3ff4cab8, 0x8725af6e, 0x4003d974, 0x74f76df2
335	.word	0x3c82e3c9, 0xfdbbbdc2, 0x00000000, 0x00000000
336	.word	0x3ff4afd6, 0xa052bf5b, 0x3ffc247a, 0x85fe81fa
337	.word	0x3c89d8ee, 0xf6854220, 0x00000000, 0x00000000
338	.word	0x3ff4afd6, 0xa052bf5b, 0x4003e655, 0xeefe1367
339	.word	0x3c80eb35, 0xbb532559, 0x00000000, 0x00000000
340	.word	0x3ff49539, 0xe3b2d067, 0x3ffc36a6, 0x192bf168
341	.word	0xbc9083d8, 0x1a423b11, 0x00000000, 0x00000000
342	.word	0x3ff49539, 0xe3b2d067, 0x4003f32f, 0x17fe8d04
343	.word	0xbc905d6c, 0x1c437de0, 0x00000000, 0x00000000
344	.word	0x3ff47ae1, 0x47ae147b, 0x3ffc48c6, 0x001f0ac0
345	.word	0xbc92d481, 0x189efd6b, 0x00000000, 0x00000000
346	.word	0x3ff47ae1, 0x47ae147b, 0x40040000, 0x00000000
347	.word	0x00000000, 0x00000000, 0x00000000, 0x00000000
348	.word	0x3ff460cb, 0xc7f5cf9a, 0x3ffc5ada, 0x513a1593
349	.word	0xbc7aaedd, 0x014f5f03, 0x00000000, 0x00000000
350	.word	0x3ff460cb, 0xc7f5cf9a, 0x40040cc8, 0xb6d657c2
351	.word	0xbc9c05ab, 0xf480ce19, 0x00000000, 0x00000000
352	.word	0x3ff446f8, 0x6562d9fb, 0x3ffc6ce3, 0x22982a3f
353	.word	0x3c891b2d, 0xf3e15f29, 0x00000000, 0x00000000
354	.word	0x3ff446f8, 0x6562d9fb, 0x40041989, 0x4c2329f0
355	.word	0x3c976037, 0x46da0ea6, 0x00000000, 0x00000000
356	.word	0x3ff42d66, 0x25d51f87, 0x3ffc7ee0, 0x8a0e6d4c
357	.word	0x3c991c54, 0xc53e75c8, 0x00000000, 0x00000000
358	.word	0x3ff42d66, 0x25d51f87, 0x40042641, 0xcf569572
359	.word	0xbcadf80b, 0x1442c029, 0x00000000, 0x00000000
360	.word	0x3ff41414, 0x14141414, 0x3ffc90d2, 0x9d2d43ce
361	.word	0xbc9edadb, 0x07f1137a, 0x00000000, 0x00000000
362	.word	0x3ff41414, 0x14141414, 0x400432f2, 0x4fb01c7a
363	.word	0x3ca38bfe, 0x0e012c1c, 0x00000000, 0x00000000
364	.word	0x3ff3fb01, 0x3fb013fb, 0x3ffca2b9, 0x714180f7
365	.word	0xbc81a63d, 0x6750c57c, 0x00000000, 0x00000000
366	.word	0x3ff3fb01, 0x3fb013fb, 0x40043f9a, 0xdc3f79ce
367	.word	0x3c66d2b1, 0x767ae30a, 0x00000000, 0x00000000
368	.word	0x3ff3e22c, 0xbce4a902, 0x3ffcb495, 0x1b558d17
369	.word	0x3c8fcbcb, 0x357f2308, 0x00000000, 0x00000000
370	.word	0x3ff3e22c, 0xbce4a902, 0x40044c3b, 0x83e57153
371	.word	0x3c98c853, 0xc6be5ee1, 0x00000000, 0x00000000
372	.word	0x3ff3c995, 0xa47babe7, 0x3ffcc665, 0xb0328622
373	.word	0xbc91baa4, 0xd369f814, 0x00000000, 0x00000000
374	.word	0x3ff3c995, 0xa47babe7, 0x400458d4, 0x55549c1a
375	.word	0x3ca02d72, 0x8d9a6054, 0x00000000, 0x00000000
376	.word	0x3ff3b13b, 0x13b13b14, 0x3ffcd82b, 0x446159f3
377	.word	0x3c983fb7, 0xb33cdfe8, 0x00000000, 0x00000000
378	.word	0x3ff3b13b, 0x13b13b14, 0x40046565, 0x5f122ff6
379	.word	0x3ca862c5, 0xd2f0ca4c, 0x00000000, 0x00000000
380	.word	0x3ff3991c, 0x2c187f63, 0x3ffce9e5, 0xec2bda80
381	.word	0xbc94ccf3, 0xd8e249ab, 0x00000000, 0x00000000
382	.word	0x3ff3991c, 0x2c187f63, 0x400471ee, 0xaf76c2c6
383	.word	0x3c975c62, 0xeff26e8e, 0x00000000, 0x00000000
384	.word	0x3ff38138, 0x13813814, 0x3ffcfb95, 0xbb9dcc0c
385	.word	0x3c92cea2, 0x0857ae03, 0x00000000, 0x00000000
386	.word	0x3ff38138, 0x13813814, 0x40047e70, 0x54af0989
387	.word	0x3c9d8c33, 0xc0054830, 0x00000000, 0x00000000
388	.word	0x3ff3698d, 0xf3de0748, 0x3ffd0d3a, 0xc685eda4
389	.word	0x3c94115a, 0x0ff4cf9e, 0x00000000, 0x00000000
390	.word	0x3ff3698d, 0xf3de0748, 0x40048aea, 0x5cbc935f
391	.word	0xbca8cb00, 0x12d14ff5, 0x00000000, 0x00000000
392	.word	0x3ff3521c, 0xfb2b78c1, 0x3ffd1ed5, 0x2076fbe9
393	.word	0x3c8f48a8, 0x6b72875f, 0x00000000, 0x00000000
394	.word	0x3ff3521c, 0xfb2b78c1, 0x4004975c, 0xd5768088
395	.word	0xbca1731e, 0xbc02f748, 0x00000000, 0x00000000
396	.word	0x3ff33ae4, 0x5b57bcb2, 0x3ffd3064, 0xdcc8ae67
397	.word	0x3c93480e, 0x805158ba, 0x00000000, 0x00000000
398	.word	0x3ff33ae4, 0x5b57bcb2, 0x4004a3c7, 0xcc8a358a
399	.word	0xbc9d8f7f, 0xd2726ffa, 0x00000000, 0x00000000
400	.word	0x3ff323e3, 0x4a2b10bf, 0x3ffd41ea, 0x0e98af91
401	.word	0x3c824640, 0x0309962f, 0x00000000, 0x00000000
402	.word	0x3ff323e3, 0x4a2b10bf, 0x4004b02b, 0x4f7c0a88
403	.word	0xbcaf71e1, 0xf6cafde2, 0x00000000, 0x00000000
404	.word	0x3ff30d19, 0x0130d190, 0x3ffd5364, 0xc8cb8f86
405	.word	0x3c8ad003, 0xc00630e1, 0x00000000, 0x00000000
406	.word	0x3ff30d19, 0x0130d190, 0x4004bc87, 0x6ba7f6ec
407	.word	0x3c9c1edb, 0x2be943b8, 0x00000000, 0x00000000
408	.word	0x3ff2f684, 0xbda12f68, 0x3ffd64d5, 0x1e0db1c6
409	.word	0xbc911ed3, 0x6986d362, 0x00000000, 0x00000000
410	.word	0x3ff2f684, 0xbda12f68, 0x4004c8dc, 0x2e423980
411	.word	0xbc949d1f, 0x46ef5d2c, 0x00000000, 0x00000000
412	.word	0x3ff2e025, 0xc04b8097, 0x3ffd763b, 0x20d435ef
413	.word	0x3c9d6780, 0xf76cb258, 0x00000000, 0x00000000
414	.word	0x3ff2e025, 0xc04b8097, 0x4004d529, 0xa457fcfc
415	.word	0xbca1404a, 0x46484e3d, 0x00000000, 0x00000000
416	.word	0x3ff2c9fb, 0x4d812ca0, 0x3ffd8796, 0xe35ddbb2
417	.word	0x3c83fdd9, 0x1aeb637a, 0x00000000, 0x00000000
418	.word	0x3ff2c9fb, 0x4d812ca0, 0x4004e16f, 0xdacff937
419	.word	0xbca1deb9, 0xd3815ad2, 0x00000000, 0x00000000
420	.word	0x3ff2b404, 0xad012b40, 0x3ffd98e8, 0x77b3e207
421	.word	0xbc48c301, 0xee02dee8, 0x00000000, 0x00000000
422	.word	0x3ff2b404, 0xad012b40, 0x4004edae, 0xde6b10fe
423	.word	0x3ca99709, 0x4a91a780, 0x00000000, 0x00000000
424	.word	0x3ff29e41, 0x29e4129e, 0x3ffdaa2f, 0xefaae1d8
425	.word	0xbc63fe0e, 0x03f44594, 0x00000000, 0x00000000
426	.word	0x3ff29e41, 0x29e4129e, 0x4004f9e6, 0xbbc4ecb3
427	.word	0x3c6ce5a6, 0x018493f1, 0x00000000, 0x00000000
428	.word	0x3ff288b0, 0x1288b013, 0x3ffdbb6d, 0x5ce3a42f
429	.word	0xbc922c27, 0xf71c8337, 0x00000000, 0x00000000
430	.word	0x3ff288b0, 0x1288b013, 0x40050617, 0x7f5491bb
431	.word	0xbc9e591e, 0x7b2a6d1a, 0x00000000, 0x00000000
432	.word	0x3ff27350, 0xb8812735, 0x3ffdcca0, 0xd0cbf408
433	.word	0x3c7a6d16, 0x2310db57, 0x00000000, 0x00000000
434	.word	0x3ff27350, 0xb8812735, 0x40051241, 0x356cf6e0
435	.word	0x3ca37dc2, 0x60e8bc2d, 0x00000000, 0x00000000
436	.word	0x3ff25e22, 0x708092f1, 0x3ffdddca, 0x5c9f6be8
437	.word	0x3c818520, 0xf0a3f809, 0x00000000, 0x00000000
438	.word	0x3ff25e22, 0x708092f1, 0x40051e63, 0xea3d95b0
439	.word	0x3caecf78, 0x2e88d5ce, 0x00000000, 0x00000000
440	.word	0x3ff24924, 0x92492492, 0x3ffdeeea, 0x11683f49
441	.word	0x3c802aae, 0x4bfa7c27, 0x00000000, 0x00000000
442	.word	0x3ff24924, 0x92492492, 0x40052a7f, 0xa9d2f8ea
443	.word	0xbca21c62, 0xb033c079, 0x00000000, 0x00000000
444	.word	0x3ff23456, 0x789abcdf, 0x3ffe0000, 0x00000000
445	.word	0x00000000, 0x00000000, 0x00000000, 0x00000000
446	.word	0x3ff23456, 0x789abcdf, 0x40053694, 0x80174810
447	.word	0xbc9c3ec1, 0xa4ee7c21, 0x00000000, 0x00000000
448	.word	0x3ff21fb7, 0x8121fb78, 0x3ffe110c, 0x39105faf
449	.word	0x3c776161, 0x4c513964, 0x00000000, 0x00000000
450	.word	0x3ff21fb7, 0x8121fb78, 0x400542a2, 0x78d2d036
451	.word	0xbca495c2, 0x45254df4, 0x00000000, 0x00000000
452	.word	0x3ff20b47, 0x0c67c0d9, 0x3ffe220e, 0xcd13ed60
453	.word	0xbc729f01, 0xf18c9dc9, 0x00000000, 0x00000000
454	.word	0x3ff20b47, 0x0c67c0d9, 0x40054ea9, 0x9fac8a0f
455	.word	0x3c80cfbb, 0x19353b3d, 0x00000000, 0x00000000
456	.word	0x3ff1f704, 0x7dc11f70, 0x3ffe3307, 0xcc56cf5c
457	.word	0xbc81f04e, 0xc3189131, 0x00000000, 0x00000000
458	.word	0x3ff1f704, 0x7dc11f70, 0x40055aaa, 0x002a9d5a
459	.word	0xbc4bf504, 0x76241f94, 0x00000000, 0x00000000
460	.word	0x3ff1e2ef, 0x3b3fb874, 0x3ffe43f7, 0x46f7795b
461	.word	0xbc931e7f, 0x8af68f8c, 0x00000000, 0x00000000
462	.word	0x3ff1e2ef, 0x3b3fb874, 0x400566a3, 0xa5b2e1b1
463	.word	0x3caa1fd2, 0x8cc92e33, 0x00000000, 0x00000000
464	.word	0x3ff1cf06, 0xada2811d, 0x3ffe54dd, 0x4ce75f1e
465	.word	0xbc811b19, 0x5dfc62e5, 0x00000000, 0x00000000
466	.word	0x3ff1cf06, 0xada2811d, 0x40057296, 0x9b8b5cd8
467	.word	0x3ca30cbf, 0x1c53312e, 0x00000000, 0x00000000
468	.word	0x3ff1bb4a, 0x4046ed29, 0x3ffe65b9, 0xedeba38e
469	.word	0xbc7bb732, 0x51e8c364, 0x00000000, 0x00000000
470	.word	0x3ff1bb4a, 0x4046ed29, 0x40057e82, 0xecdabe8d
471	.word	0xbc7c2aed, 0xf3c4c4bd, 0x00000000, 0x00000000
472	.word	0x3ff1a7b9, 0x611a7b96, 0x3ffe768d, 0x399dc470
473	.word	0xbc9a8c81, 0x3405c01c, 0x00000000, 0x00000000
474	.word	0x3ff1a7b9, 0x611a7b96, 0x40058a68, 0xa4a8d9f3
475	.word	0x3ca50798, 0xe67012d9, 0x00000000, 0x00000000
476	.word	0x3ff19453, 0x808ca29c, 0x3ffe8757, 0x3f6c42c5
477	.word	0x3c9dbf9c, 0xf7bbcda3, 0x00000000, 0x00000000
478	.word	0x3ff19453, 0x808ca29c, 0x40059647, 0xcddf1ca5
479	.word	0x3ca14a95, 0xf35dea0b, 0x00000000, 0x00000000
480	.word	0x3ff18118, 0x11811812, 0x3ffe9818, 0x0e9b47f2
481	.word	0xbc9b6bd7, 0x4396d08e, 0x00000000, 0x00000000
482	.word	0x3ff18118, 0x11811812, 0x4005a220, 0x73490377
483	.word	0xbcadd036, 0x39925812, 0x00000000, 0x00000000
484	.word	0x3ff16e06, 0x89427379, 0x3ffea8cf, 0xb64547ab
485	.word	0x3c8721b2, 0x6374e19f, 0x00000000, 0x00000000
486	.word	0x3ff16e06, 0x89427379, 0x4005adf2, 0x9f948cfb
487	.word	0xbca42520, 0xf7716fa6, 0x00000000, 0x00000000
488	.word	0x3ff15b1e, 0x5f75270d, 0x3ffeb97e, 0x455b9edb
489	.word	0x3c999b45, 0x40857883, 0x00000000, 0x00000000
490	.word	0x3ff15b1e, 0x5f75270d, 0x4005b9be, 0x5d52a9da
491	.word	0x3c9098cd, 0x1b3af777, 0x00000000, 0x00000000
492	.word	0x3ff1485f, 0x0e0acd3b, 0x3ffeca23, 0xcaa72f73
493	.word	0x3c7e3ed5, 0x29679959, 0x00000000, 0x00000000
494	.word	0x3ff1485f, 0x0e0acd3b, 0x4005c583, 0xb6f7ab03
495	.word	0x3ca963bc, 0x9d795b51, 0x00000000, 0x00000000
496	.word	0x3ff135c8, 0x1135c811, 0x3ffedac0, 0x54c8f94c
497	.word	0x3c90b5c1, 0x15a56207, 0x00000000, 0x00000000
498	.word	0x3ff135c8, 0x1135c811, 0x4005d142, 0xb6dbadc5
499	.word	0x3ca6f1f5, 0x5323d116, 0x00000000, 0x00000000
500	.word	0x3ff12358, 0xe75d3033, 0x3ffeeb53, 0xf23ab028
501	.word	0xbc8617e4, 0xb5384f5d, 0x00000000, 0x00000000
502	.word	0x3ff12358, 0xe75d3033, 0x4005dcfb, 0x673b05df
503	.word	0xbca099df, 0xc321634f, 0x00000000, 0x00000000
504	.word	0x3ff11111, 0x11111111, 0x3ffefbde, 0xb14f4eda
505	.word	0xbc93a145, 0xfe1be078, 0x00000000, 0x00000000
506	.word	0x3ff11111, 0x11111111, 0x4005e8ad, 0xd236a58f
507	.word	0xbc7ef8c7, 0xc0d1fec6, 0x00000000, 0x00000000
508	.word	0x3ff0fef0, 0x10fef011, 0x3fff0c60, 0xa033a7b3
509	.word	0xbc91b0fc, 0x15cd89c6, 0x00000000, 0x00000000
510	.word	0x3ff0fef0, 0x10fef011, 0x4005f45a, 0x01d483b4
511	.word	0xbc94a237, 0xdc0fa105, 0x00000000, 0x00000000
512	.word	0x3ff0ecf5, 0x6be69c90, 0x3fff1cd9, 0xcceef239
513	.word	0x3c91afd8, 0x64eab60a, 0x00000000, 0x00000000
514	.word	0x3ff0ecf5, 0x6be69c90, 0x40060000, 0x00000000
515	.word	0x00000000, 0x00000000, 0x00000000, 0x00000000
516	.word	0x3ff0db20, 0xa88f4696, 0x3fff2d4a, 0x45635640
517	.word	0xbc8eebae, 0xea670bc2, 0x00000000, 0x00000000
518	.word	0x3ff0db20, 0xa88f4696, 0x40060b9f, 0xd68a4554
519	.word	0x3ca328e1, 0x70dae176, 0x00000000, 0x00000000
520	.word	0x3ff0c971, 0x4fbcda3b, 0x3fff3db2, 0x174e7468
521	.word	0x3c9e1513, 0x2d6ac52a, 0x00000000, 0x00000000
522	.word	0x3ff0c971, 0x4fbcda3b, 0x40061739, 0x8f2aaa48
523	.word	0xbc9b672b, 0xba260735, 0x00000000, 0x00000000
524	.word	0x3ff0b7e6, 0xec259dc8, 0x3fff4e11, 0x5049ec26
525	.word	0xbc9b6656, 0xb6bd5d76, 0x00000000, 0x00000000
526	.word	0x3ff0b7e6, 0xec259dc8, 0x400622cd, 0x337f0fe8
527	.word	0x3c9fe207, 0x3279559f, 0x00000000, 0x00000000
528	.word	0x3ff0a681, 0x0a6810a7, 0x3fff5e67, 0xfdcbdf44
529	.word	0xbc98af06, 0x1849d6fc, 0x00000000, 0x00000000
530	.word	0x3ff0a681, 0x0a6810a7, 0x40062e5a, 0xcd0c3ebe
531	.word	0xbca2c50e, 0x2092203a, 0x00000000, 0x00000000
532	.word	0x3ff0953f, 0x39010954, 0x3fff6eb6, 0x2d27730d
533	.word	0xbc9401d9, 0x5ca1ce34, 0x00000000, 0x00000000
534	.word	0x3ff0953f, 0x39010954, 0x400639e2, 0x653e421b
535	.word	0xbc9f75e0, 0x5835e4b9, 0x00000000, 0x00000000
536	.word	0x3ff08421, 0x08421084, 0x3fff7efb, 0xeb8d4f12
537	.word	0xbc7e84e8, 0xa6ff3256, 0x00000000, 0x00000000
538	.word	0x3ff08421, 0x08421084, 0x40064564, 0x0568c1c3
539	.word	0x3cad1778, 0x7e4c8970, 0x00000000, 0x00000000
540	.word	0x3ff07326, 0x0a47f7c6, 0x3fff8f39, 0x460c19a8
541	.word	0x3c989b4e, 0x16ee9aaf, 0x00000000, 0x00000000
542	.word	0x3ff07326, 0x0a47f7c6, 0x400650df, 0xb6c759f4
543	.word	0x3c99063c, 0x91db4c77, 0x00000000, 0x00000000
544	.word	0x3ff0624d, 0xd2f1a9fc, 0x3fff9f6e, 0x4990f227
545	.word	0x3c8b42e5, 0xb5d1e808, 0x00000000, 0x00000000
546	.word	0x3ff0624d, 0xd2f1a9fc, 0x40065c55, 0x827df1d2
547	.word	0xbca3923d, 0xf03e1e2f, 0x00000000, 0x00000000
548	.word	0x3ff05197, 0xf7d73404, 0x3fffaf9b, 0x02e7e8f2
549	.word	0x3c897a76, 0x8f34e1c2, 0x00000000, 0x00000000
550	.word	0x3ff05197, 0xf7d73404, 0x400667c5, 0x7199104b
551	.word	0x3c875b89, 0x6f332e70, 0x00000000, 0x00000000
552	.word	0x3ff04104, 0x10410410, 0x3fffbfbf, 0x7ebc755f
553	.word	0xbc9b2a94, 0x084da0b6, 0x00000000, 0x00000000
554	.word	0x3ff04104, 0x10410410, 0x4006732f, 0x8d0e2f77
555	.word	0xbc93dffd, 0x470422e3, 0x00000000, 0x00000000
556	.word	0x3ff03091, 0xb51f5e1a, 0x3fffcfdb, 0xc999e97d
557	.word	0x3c82be17, 0xecdd3bbc, 0x00000000, 0x00000000
558	.word	0x3ff03091, 0xb51f5e1a, 0x40067e93, 0xddbc0e73
559	.word	0xbc86eb9f, 0x32ac1a5c, 0x00000000, 0x00000000
560	.word	0x3ff02040, 0x81020408, 0x3fffdfef, 0xefebe3d6
561	.word	0xbc909afc, 0xfc7c1f3b, 0x00000000, 0x00000000
562	.word	0x3ff02040, 0x81020408, 0x400689f2, 0x6c6b01d0
563	.word	0x3cae816f, 0x9d2a1032, 0x00000000, 0x00000000
564	.word	0x3ff01010, 0x10101010, 0x3fffeffb, 0xfdfebf1f
565	.word	0x3c95dee5, 0x1994f18b, 0x00000000, 0x00000000
566	.word	0x3ff01010, 0x10101010, 0x4006954b, 0x41cd4293
567	.word	0x3ca3d5bc, 0xcc443076, 0x00000000, 0x00000000
568	.word	0x3ff00000, 0x00000000, 0x40000000, 0x00000000
569	.word	0x00000000, 0x00000000, 0x00000000, 0x00000000
570	.word	0x3ff00000, 0x00000000, 0x4006a09e, 0x667f3bcd
571	.word	0xbcabdd34, 0x13b26456, 0x00000000, 0x00000000
572
573#define A5		%f32
574#define A4		%f30
575#define A3		%f28
576#define A2		%f26
577#define A1		%f56
578
579#define DC0		%f8
580#define DC2		%f6
581#define DC3		%f4
582
583#define counter		%l3
584#define TBL		%l5
585#define stridex		%l6
586#define stridey		%l7
587
588#define _0x00001ff8	%i0
589#define _0x7ff00000	%o0
590#define _0x00100000	%o2
591
592#define tmp_counter	STACK_BIAS-0x40
593#define tmp_px		STACK_BIAS-0x38
594#define tmp0		STACK_BIAS-0x30
595#define tmp1		STACK_BIAS-0x28
596#define tmp2		STACK_BIAS-0x20
597#define tmp3		STACK_BIAS-0x18
598#define tmp4		STACK_BIAS-0x10
599#define tmp5		STACK_BIAS-0x08
600
601! sizeof temp storage - must be a multiple of 16 for V9
602#define tmps		0x40
603
604!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
605!      !!!!!   algorithm   !!!!!
606!  ((float*)&res)[0] = ((float*)px)[0];
607!  ((float*)&res)[1] = ((float*)px)[1];
608!  hx = *(int*)px;
609!  px += stridex;
610!
611!  if ( hx >= 0x7ff00000 )
612!  {
613!    res = sqrt(res);
614!    ((float*)py)[0] = ((float*)&res)[0];
615!    ((float*)py)[1] = ((float*)&res)[1];
616!    py += stridey;
617!    goto next;
618!  }
619!  if ( hx < 0x00100000 )
620!  {
621!    res = sqrt(res);
622!    ((float*)py)[0] = ((float*)&res)[0];
623!    ((float*)py)[1] = ((float*)&res)[1];
624!    py += stridey;
625!    goto next;
626!  }
627!
628!  sqrt_exp = hx >> 21;
629!  sqrt_exp -= 512;
630!  sqrt_exp <<= 52;
631!  dsqrt_exp = *(double*)&sqrt_exp;
632!  bit = hx >> 15;
633!  bit &= 32;
634!  ind0 = hx >> 7;
635!  ind0 &= 0x1ff8;
636!  ind0 += 32;
637!  ind0 &= -64;
638!  ind1 = ind0;
639!  ind1 += bit;
640!
641!  res = vis_fand(res,DC0);      /* DC0 = vis_to_double(0x000fffff, 0xffffffff); */
642!  res = vis_for(res,A1);        /* A1  = vis_to_double(0x3fe00000, 0x00000000); */
643!  res_c = vis_fpadd32(res,DC2); /* DC2 = vis_to_double(0x00001000, 0x00000000); */
644!  res_c = vis_fand(res_c,DC3);  /* DC3 = vis_to_double(0x7fffe000, 0x00000000); */
645!
646!  pind = (char*)TBL + ind1;
647!  dexp_hi = ((double*)pind)[1];
648!  dexp_lo = ((double*)pind)[2];
649!
650!  dtmp0 = ((double*)pind)[0];
651!  xx = (res - res_c);
652!  xx *= dtmp0;
653!
654!  res = A5 * xx;
655!  res += A4;
656!  res *= xx;
657!  res += A3;
658!  res *= xx;
659!  res += A2;
660!  res *= xx;
661!  res += A1;
662!  res *= xx;
663!
664!  res = dexp_hi * res;
665!  res += dexp_lo;
666!  res += dexp_hi;
667!
668!  dtmp0 = vis_fpadd32(dsqrt_exp,res);
669!  ((float*)py)[0] = ((float*)&dtmp0)[0];
670!  ((float*)py)[1] = ((float*)&dtmp0)[1];
671!  py += stridey;
672!
673!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
674
675	ENTRY(__vsqrt)
676	save	%sp,-SA(MINFRAME)-tmps,%sp
677	PIC_SETUP(l7)
678	PIC_SET(l7,.CONST_TBL,l5)
679	wr	%g0,0x82,%asi
680
681	ldd	[TBL],A1
682	sll	%i2,3,stridex
683	or	%g0,%i3,%o4
684
685	ldd	[TBL+8],A2
686	sll	%i4,3,stridey
687	or	%g0,0x7ff,%o0
688
689	ldd	[TBL+16],A3
690	sll	%o0,20,_0x7ff00000
691	or	%g0,0x001,%o2
692
693	ldd	[TBL+24],A4
694	sll	%o2,20,_0x00100000
695
696	ldd	[TBL+32],A5
697	ldd	[TBL+40],DC0
698	ldd	[TBL+48],DC2
699	ldd	[TBL+56],DC3
700
701	add	TBL,64,TBL
702	add	%g0,1023,%o5
703	st	%i0,[%fp+tmp_counter]
704
705	sll	%o5,3,_0x00001ff8
706	stx	%i1,[%fp+tmp_px]
707
708.begin:
709	ld	[%fp+tmp_counter],counter
710	ldx	[%fp+tmp_px],%l2
711	st	%g0,[%fp+tmp_counter]
712.begin1:
713	cmp	counter,0
714	ble,pn	%icc,.exit
715	lda	[%l2]%asi,%o5		! (5_1) hx = *(int*)px;
716
717	lda	[%l2]%asi,%f10		! (5_0) ((float*)&res)[0] = ((float*)px)[0];
718
719	lda	[%l2+4]%asi,%f11	! (5_0) ((float*)&res)[1] = ((float*)px)[1];
720
721	cmp	%o5,_0x7ff00000		! (5_1) hx ? 0x7ff00000
722	bge,pn	%icc,.spec		! (5_1) if ( hx >= 0x7ff00000 )
723	nop
724
725	cmp	%o5,_0x00100000		! (5_1) hx ? 0x00100000
726	bl,pn	%icc,.spec		! (5_1) if ( hx < 0x00100000 )
727	nop
728
729	add	%l2,stridex,%l2		! px += stridex
730	fand	%f10,DC0,%f50		! (5_1) res = vis_fand(res,DC0);
731
732	for	%f50,A1,%f40		! (5_1) res = vis_for(res,A1);
733	sra	%o5,21,%l1		! (5_1) sqrt_exp = hx >> 21;
734	sra	%o5,15,%i1		! (5_1) bit = hx >> 15;
735
736	sra	%o5,7,%o1		! (5_1) ind0 = hx >> 7;
737	sub	%l1,512,%o3		! (5_1) sqrt_exp -= 512;
738
739	and	%o1,_0x00001ff8,%o1	! (5_1) ind0 &= 0x1ff8;
740	lda	[%l2]%asi,%f10		! (0_0) ((float*)&res)[0] = ((float*)px)[0];
741
742	add	%o1,32,%o1		! (5_1) ind0 += 32;
743	lda	[%l2+4]%asi,%f11	! (0_0) ((float*)&res)[1] = ((float*)px)[1];
744
745	and	%i1,32,%i4		! (5_1) bit &= 32;
746	and	%o1,-64,%o1		! (5_1) ind0 &= -8;
747
748	sll	%o1,0,%o7		! (5_1) ind1 = ind0;
749
750	sllx	%o3,52,%o3		! (5_1) sqrt_exp <<= 52;
751	add	%o7,%i4,%l0		! (5_1) ind1 += bit;
752	lda	[%l2]%asi,%o5		! (0_0) hx = *(int*)px;
753
754	stx	%o3,[%fp+tmp0]		! (5_1) dsqrt_exp = *(double*)&sqrt_exp;
755	fand	%f10,DC0,%f50		! (0_0) res = vis_fand(res,DC0);
756
757	add	%l2,stridex,%l2		! px += stridex
758	fpadd32	%f40,DC2,%f54		! (5_1) res_c = vis_fpadd32(res,DC2);
759
760	add	%l0,TBL,%o1		! (5_1) pind = (char*)TBL + ind1
761
762	cmp	%o5,_0x7ff00000		! (0_0) hx ? 0x7ff00000
763	bge,pn	%icc,.update0		! (0_0) if ( hx >= 0x7ff00000 )
764	for	%f50,A1,%f42		! (0_0) res = vis_for(res,A1);
765.cont0:
766	sra	%o5,21,%l1		! (0_0) sqrt_exp = hx >> 21;
767	sra	%o5,15,%i2		! (0_0) bit = hx >> 15;
768	ldd	[%o1],%f50		! (5_1) dtmp0 = ((double*)pind)[0];
769
770	sra	%o5,7,%o1		! (0_0) ind0 = hx >> 7;
771	sub	%l1,512,%o3		! (0_0) sqrt_exp -= 512;
772	fand	%f54,DC3,%f54		! (5_1) res_c = vis_fand(res_c,DC3);
773
774	and	%o1,_0x00001ff8,%o1	! (0_0) ind0 &= 0x1ff8;
775	lda	[%l2]%asi,%f10		! (1_0) ((float*)&res)[0] = ((float*)px)[0];
776
777	add	%o1,32,%o1		! (0_0) ind0 += 32;
778	lda	[%l2+4]%asi,%f11	! (1_0) ((float*)&res)[1] = ((float*)px)[1];
779
780	and	%i2,32,%i4		! (0_0) bit &= 32;
781	and	%o1,-64,%o1		! (0_0) ind0 &= -8;
782	fsubd	%f40,%f54,%f40		! (5_1) xx = (res - res_c);
783
784	sll	%o1,0,%o7		! (0_0) ind1 = ind0;
785
786	cmp	%o5,_0x00100000		! (0_0) hx ? 0x00100000
787	bl,pn	%icc,.update1		! (0_0) if ( hx < 0x00100000 )
788	lda	[%l2]%asi,%o5		! (1_0) hx = *(int*)px;
789.cont1:
790	sllx	%o3,52,%o3		! (0_0) sqrt_exp <<= 52;
791	add	%o7,%i4,%i1		! (0_0) ind1 += bit;
792
793	fmuld	%f40,%f50,%f40		! (5_1) xx *= dtmp0;
794	stx	%o3,[%fp+tmp1]		! (0_0) dsqrt_exp = *(double*)&sqrt_exp;
795	fand	%f10,DC0,%f50		! (1_0) res = vis_fand(res,DC0);
796
797	add	%l2,stridex,%l2		! px += stridex
798	fpadd32	%f42,DC2,%f54		! (0_0) res_c = vis_fpadd32(res,DC2);
799
800	add	%i1,TBL,%o1		! (0_0) pind = (char*)TBL + ind1
801
802	cmp	%o5,_0x7ff00000		! (1_0) hx ? 0x7ff00000
803	bge,pn	%icc,.update2		! (1_0) if ( hx >= 0x7ff00000 )
804	for	%f50,A1,%f14		! (1_0) res = vis_for(res,A1);
805.cont2:
806	sra	%o5,21,%l1		! (1_0) sqrt_exp = hx >> 21;
807	sra	%o5,15,%g5		! (1_0) bit = hx >> 15;
808	ldd	[%o1],%f50		! (0_0) dtmp0 = ((double*)pind)[0];
809
810	fmuld	A5,%f40,%f52		! (5_1) res = A5 * xx;
811	sra	%o5,7,%o1		! (1_0) ind0 = hx >> 7;
812	sub	%l1,512,%o3		! (1_0) sqrt_exp -= 512;
813	fand	%f54,DC3,%f54		! (0_0) res_c = vis_fand(res_c,DC3);
814
815	and	%o1,_0x00001ff8,%o1	! (1_0) ind0 &= 0x1ff8;
816	lda	[%l2]%asi,%f10		! (2_0) ((float*)&res)[0] = ((float*)px)[0];
817
818	add	%o1,32,%o1		! (1_0) ind0 += 32;
819	lda	[%l2+4]%asi,%f11	! (2_0) ((float*)&res)[1] = ((float*)px)[1];
820
821	and	%g5,32,%i4		! (1_0) bit &= 32;
822	and	%o1,-64,%o1		! (1_0) ind0 &= -8;
823	fsubd	%f42,%f54,%f42		! (0_0) xx = (res - res_c);
824
825	sll	%o1,0,%o7		! (1_0) ind1 = ind0;
826	faddd	%f52,A4,%f54		! (5_1) res += A4;
827
828	cmp	%o5,_0x00100000		! (1_0) hx ? 0x00100000
829	bl,pn	%icc,.update3		! (1_0) if ( hx < 0x00100000 )
830	lda	[%l2]%asi,%o5		! (2_0) hx = *(int*)px;
831.cont3:
832	sllx	%o3,52,%o3		! (1_0) sqrt_exp <<= 52;
833	add	%o7,%i4,%i2		! (1_0) ind1 += bit;
834
835	fmuld	%f42,%f50,%f42		! (0_0) xx *= dtmp0;
836	stx	%o3,[%fp+tmp2]		! (1_0) dsqrt_exp = *(double*)&sqrt_exp;
837	fand	%f10,DC0,%f50		! (2_0) res = vis_fand(res,DC0);
838
839	fmuld	%f54,%f40,%f34		! (5_1) res *= xx;
840	fpadd32	%f14,DC2,%f54		! (1_0) res_c = vis_fpadd32(res,DC2);
841	add	%l2,stridex,%l2		! px += stridex
842
843	add	%i2,TBL,%o1		! (1_0) pind = (char*)TBL + ind1
844
845	cmp	%o5,_0x7ff00000		! (2_0) hx ? 0x7ff00000
846	bge,pn	%icc,.update4		! (2_0) if ( hx >= 0x7ff00000 )
847	for	%f50,A1,%f18		! (2_0) res = vis_for(res,A1);
848.cont4:
849	sra	%o5,21,%l1		! (2_0) sqrt_exp = hx >> 21;
850	sra	%o5,15,%g1		! (2_0) bit = hx >> 15;
851	ldd	[%o1],%f50		! (1_0) dtmp0 = ((double*)pind)[0];
852
853	fmuld	A5,%f42,%f52		! (0_0) res = A5 * xx;
854	sra	%o5,7,%o1		! (2_0) ind0 = hx >> 7;
855	sub	%l1,512,%o3		! (2_0) sqrt_exp -= 512;
856	fand	%f54,DC3,%f54		! (1_0) res_c = vis_fand(res_c,DC3);
857
858	and	%o1,_0x00001ff8,%o1	! (2_0) ind0 &= 0x1ff8;
859	lda	[%l2]%asi,%f10		! (3_0) ((float*)&res)[0] = ((float*)px)[0];
860	faddd	%f34,A3,%f62		! (5_1) res += A3;
861
862	add	%o1,32,%o1		! (2_0) ind0 += 32;
863	lda	[%l2+4]%asi,%f11	! (3_0) ((float*)&res)[1] = ((float*)px)[1];
864
865	and	%g1,32,%i4		! (2_0) bit &= 32;
866	and	%o1,-64,%o1		! (2_0) ind0 &= -8;
867	fsubd	%f14,%f54,%f14		! (1_0) xx = (res - res_c);
868
869	sll	%o1,0,%o7		! (2_0) ind1 = ind0;
870	faddd	%f52,A4,%f54		! (0_0) res += A4;
871
872	fmuld	%f62,%f40,%f52		! (5_1) res *= xx;
873	cmp	%o5,_0x00100000		! (2_0) hx ? 0x00100000
874	bl,pn	%icc,.update5		! (2_0) if ( hx < 0x00100000 )
875	lda	[%l2]%asi,%o5		! (3_0) hx = *(int*)px;
876.cont5:
877	sllx	%o3,52,%o3		! (2_0) sqrt_exp <<= 52;
878	add	%o7,%i4,%g5		! (2_0) ind1 += bit;
879
880	fmuld	%f14,%f50,%f14		! (1_0) xx *= dtmp0;
881	stx	%o3,[%fp+tmp3]		! (2_0) dsqrt_exp = *(double*)&sqrt_exp;
882	fand	%f10,DC0,%f50		! (3_0) res = vis_fand(res,DC0);
883
884	fmuld	%f54,%f42,%f34		! (0_0) res *= xx;
885	fpadd32	%f18,DC2,%f54		! (2_0) res_c = vis_fpadd32(res,DC2);
886	add	%l2,stridex,%l2		! px += stridex
887
888	add	%g5,TBL,%o1		! (2_0) pind = (char*)TBL + ind1
889	faddd	%f52,A2,%f20		! (5_1) res += A2;
890
891	cmp	%o5,_0x7ff00000		! (3_0) hx ? 0x7ff00000
892	bge,pn	%icc,.update6		! (3_0) if ( hx >= 0x7ff00000 )
893	for	%f50,A1,%f44		! (3_0) res = vis_for(res,A1);
894.cont6:
895	sra	%o5,21,%l1		! (3_0) sqrt_exp = hx >> 21;
896	sra	%o5,15,%i3		! (3_0) bit = hx >> 15;
897	ldd	[%o1],%f50		! (2_0) dtmp0 = ((double*)pind)[0];
898
899	fmuld	A5,%f14,%f52		! (1_0) res = A5 * xx;
900	sra	%o5,7,%o1		! (3_0) ind0 = hx >> 7;
901	sub	%l1,512,%o3		! (3_0) sqrt_exp -= 512;
902	fand	%f54,DC3,%f54		! (2_0) res_c = vis_fand(res_c,DC3);
903
904	fmuld	%f20,%f40,%f20		! (5_1) res *= xx;
905	and	%o1,_0x00001ff8,%o1	! (3_0) ind0 &= 0x1ff8;
906	lda	[%l2]%asi,%f10		! (4_0) ((float*)&res)[0] = ((float*)px)[0];
907	faddd	%f34,A3,%f62		! (0_0) res += A3;
908
909	add	%o1,32,%o1		! (3_0) ind0 += 32;
910	lda	[%l2+4]%asi,%f11	! (4_0) ((float*)&res)[1] = ((float*)px)[1];
911
912	and	%i3,32,%i4		! (3_0) bit &= 32;
913	and	%o1,-64,%o1		! (3_0) ind0 &= -8;
914	fsubd	%f18,%f54,%f18		! (2_0) xx = (res - res_c);
915
916	sll	%o1,0,%o7		! (3_0) ind1 = ind0;
917	faddd	%f52,A4,%f54		! (1_0) res += A4;
918
919	fmuld	%f62,%f42,%f52		! (0_0) res *= xx;
920	cmp	%o5,_0x00100000		! (3_0) hx ? 0x00100000
921	bl,pn	%icc,.update7		! (3_0) if ( hx < 0x00100000 )
922	faddd	%f20,A1,%f12		! (5_1) res += A1;
923.cont7:
924	lda	[%l2]%asi,%o5		! (4_0) hx = *(int*)px;
925	sllx	%o3,52,%o3		! (3_0) sqrt_exp <<= 52;
926	add	%o7,%i4,%g1		! (3_0) ind1 += bit;
927
928	fmuld	%f18,%f50,%f18		! (2_0) xx *= dtmp0;
929	add	%l0,TBL,%l0		! (5_1) pind = (char*)TBL + ind1;
930	stx	%o3,[%fp+tmp4]		! (3_0) dsqrt_exp = *(double*)&sqrt_exp;
931	fand	%f10,DC0,%f50		! (4_0) res = vis_fand(res,DC0);
932
933	fmuld	%f54,%f14,%f34		! (1_0) res *= xx;
934	add	%l2,stridex,%l2		! px += stridex
935	ldd	[%l0+16],%f36		! (5_1) dexp_lo = ((double*)pind)[2];
936	fpadd32	%f44,DC2,%f54		! (3_0) res_c = vis_fpadd32(res,DC2);
937
938	fmuld	%f12,%f40,%f12		! (5_1) res *= xx;
939	add	%g1,TBL,%o1		! (3_0) (char*)div_arr+ind0
940	ldd	[%l0+8],%f40		! (5_1) dexp_hi = ((double*)pind)[1];
941	faddd	%f52,A2,%f20		! (0_0) res += A2;
942
943	cmp	%o5,_0x7ff00000		! (4_0) hx ? 0x7ff00000
944	bge,pn	%icc,.update8		! (4_0) if ( hx >= 0x7ff00000 )
945	for	%f50,A1,%f24		! (4_0) res = vis_for(res,A1);
946.cont8:
947	sra	%o5,21,%l1		! (4_0) sqrt_exp = hx >> 21;
948	sra	%o5,15,%l0		! (4_0) bit = hx >> 15;
949	ldd	[%o1],%f22		! (3_0) dtmp0 = ((double*)pind)[0];
950
951	fmuld	A5,%f18,%f52		! (2_0) res = A5 * xx;
952	sra	%o5,7,%o1		! (4_0) ind0 = hx >> 7;
953	sub	%l1,512,%o3		! (4_0) sqrt_exp -= 512;
954	fand	%f54,DC3,%f54		! (3_0) res_c = vis_fand(res_c,DC3);
955
956	fmuld	%f20,%f42,%f20		! (0_0) res *= xx;
957	and	%o1,_0x00001ff8,%o1	! (4_0) ind0 &= 0x1ff8;
958	lda	[%l2]%asi,%f10		! (5_0) ((float*)&res)[0] = ((float*)px)[0];
959	faddd	%f34,A3,%f62		! (1_0) res += A3;
960
961	fmuld	%f40,%f12,%f34		! (5_1) res = dexp_hi * res;
962	add	%o1,32,%o1		! (4_0) ind0 += 32;
963	lda	[%l2+4]%asi,%f11	! (5_0) ((float*)&res)[1] = ((float*)px)[1];
964
965	and	%l0,32,%i4		! (4_0) bit &= 32;
966	cmp	%o5,_0x00100000		! (4_0) hx ? 0x00100000
967	bl,pn	%icc,.update9		! (4_0) if ( hx < 0x00100000 )
968	fsubd	%f44,%f54,%f44		! (3_0) xx = (res - res_c);
969.cont9:
970	and	%o1,-64,%o1		! (4_0) ind0 &= -8;
971	faddd	%f52,A4,%f54		! (2_0) res += A4;
972
973	cmp	counter,6
974	bl,pn	%icc,.tail
975	or	%g0,%o4,%l0
976
977	ba	.main_loop
978	nop
979
980	.align	16
981.main_loop:
982	fmuld	%f62,%f14,%f52		! (1_1) res *= xx;
983	sll	%o1,0,%i3		! (4_1) ind1 = ind0;
984	add	%i1,TBL,%i1		! (0_1) pind = (char*)TBL + ind1;
985	faddd	%f20,A1,%f12		! (0_1) res += A1;
986
987	lda	[%l2]%asi,%o5		! (5_1) hx = *(int*)px;
988	sllx	%o3,52,%o3		! (4_1) sqrt_exp <<= 52;
989	add	%i3,%i4,%i3		! (4_1) ind1 += bit;
990	faddd	%f34,%f36,%f60		! (5_2) res += dexp_lo;
991
992	fmuld	%f44,%f22,%f44		! (3_1) xx *= dtmp0;
993	add	%l2,stridex,%l2		! px += stridex
994	stx	%o3,[%fp+tmp5]		! (4_1) dsqrt_exp = *(double*)&sqrt_exp;
995	fand	%f10,DC0,%f50		! (5_1) res = vis_fand(res,DC0);
996
997	fmuld	%f54,%f18,%f34		! (2_1) res *= xx;
998	nop
999	ldd	[%i1+16],%f36		! (0_1) dexp_lo = ((double*)pind)[2];
1000	fpadd32	%f24,DC2,%f54		! (4_1) res_c = vis_fpadd32(res,DC2);
1001
1002	fmuld	%f12,%f42,%f16		! (0_1) res *= xx;
1003	sra	%o5,21,%l1		! (5_1) sqrt_exp = hx >> 21;
1004	ldd	[%i1+8],%f42		! (0_1) dexp_hi = ((double*)pind)[1];
1005	faddd	%f52,A2,%f20		! (1_1) res += A2;
1006
1007	ldd	[%fp+tmp0],%f48		! (5_2) dsqrt_exp = *(double*)&sqrt_exp;
1008	cmp	%o5,_0x7ff00000		! (5_1) hx ? 0x7ff00000
1009	bge,pn	%icc,.update10		! (5_1) if ( hx >= 0x7ff00000 )
1010	faddd	%f60,%f40,%f60		! (5_2) res += dexp_hi;
1011.cont10:
1012	lda	[%l2]%asi,%f10		! (0_0) ((float*)&res)[0] = ((float*)px)[0];
1013	sra	%o5,15,%i1		! (5_1) bit = hx >> 15;
1014	add	%i3,TBL,%o7		! (4_1) pind = (char*)TBL + ind1
1015	for	%f50,A1,%f40		! (5_1) res = vis_for(res,A1);
1016
1017	fmuld	A5,%f44,%f52		! (3_1) res = A5 * xx;
1018	sra	%o5,7,%o1		! (5_1) ind0 = hx >> 7;
1019	ldd	[%o7],%f22		! (4_1) dtmp0 = ((double*)pind)[0];
1020	fand	%f54,DC3,%f54		! (4_1) res_c = vis_fand(res_c,DC3);
1021
1022	fmuld	%f20,%f14,%f20		! (1_1) res *= xx;
1023	and	%o1,_0x00001ff8,%o1	! (5_1) ind0 &= 0x1ff8;
1024	sub	%l1,512,%o3		! (5_1) sqrt_exp -= 512;
1025	faddd	%f34,A3,%f62		! (2_1) res += A3;
1026
1027	fpadd32	%f48,%f60,%f12		! (5_2) dtmp0 = vis_fpadd32(dsqrt_exp,res);
1028	add	%o1,32,%o1		! (5_1) ind0 += 32;
1029	st	%f12,[%l0]		! (5_2) ((float*)py)[0] = ((float*)&dtmp0)[0];
1030	fmuld	%f42,%f16,%f34		! (0_1) res = dexp_hi * res;
1031
1032	lda	[%l2+4]%asi,%f11	! (0_0) ((float*)&res)[1] = ((float*)px)[1];
1033	and	%i1,32,%i4		! (5_1) bit &= 32;
1034	and	%o1,-64,%o1		! (5_1) ind0 &= -8;
1035	fsubd	%f24,%f54,%f24		! (4_1) xx = (res - res_c);
1036
1037	sll	%o1,0,%o7		! (5_1) ind1 = ind0;
1038	add	%l0,stridey,%i1		! py += stridey
1039	st	%f13,[%l0+4]		! (5_2) ((float*)py)[1] = ((float*)&dtmp0)[1];
1040	faddd	%f52,A4,%f54		! (3_1) res += A4;
1041
1042	fmuld	%f62,%f18,%f52		! (2_1) res *= xx;
1043	cmp	%o5,_0x00100000		! (5_1) hx ? 0x00100000
1044	bl,pn	%icc,.update11		! (5_1) if ( hx < 0x00100000 )
1045	faddd	%f20,A1,%f12		! (1_1) res += A1;
1046.cont11:
1047	sllx	%o3,52,%o3		! (5_1) sqrt_exp <<= 52;
1048	add	%o7,%i4,%l0		! (5_1) ind1 += bit;
1049	lda	[%l2]%asi,%o5		! (0_0) hx = *(int*)px;
1050	faddd	%f34,%f36,%f60		! (0_1) res += dexp_lo;
1051
1052	fmuld	%f24,%f22,%f24		! (4_1) xx *= dtmp0;
1053	add	%i2,TBL,%i2		! (1_1) pind = (char*)TBL + ind1;
1054	stx	%o3,[%fp+tmp0]		! (5_1) dsqrt_exp = *(double*)&sqrt_exp;
1055	fand	%f10,DC0,%f50		! (0_0) res = vis_fand(res,DC0);
1056
1057	fmuld	%f54,%f44,%f34		! (3_1) res *= xx;
1058	add	%l2,stridex,%l2		! px += stridex
1059	ldd	[%i2+16],%f36		! (1_1) dexp_lo = ((double*)pind)[2];
1060	fpadd32	%f40,DC2,%f54		! (5_1) res_c = vis_fpadd32(res,DC2);
1061
1062	fmuld	%f12,%f14,%f16		! (1_1) res *= xx;
1063	sra	%o5,21,%l1		! (0_0) sqrt_exp = hx >> 21;
1064	ldd	[%i2+8],%f14		! (1_1) dexp_hi = ((double*)pind)[1];
1065	faddd	%f52,A2,%f20		! (2_1) res += A2;
1066
1067	ldd	[%fp+tmp1],%f48		! (0_1) dsqrt_exp = *(double*)&sqrt_exp;
1068	cmp	%o5,_0x7ff00000		! (0_0) hx ? 0x7ff00000
1069	bge,pn	%icc,.update12		! (0_0) if ( hx >= 0x7ff00000 )
1070	faddd	%f60,%f42,%f60		! (0_1) res += dexp_hi;
1071.cont12:
1072	lda	[%l2]%asi,%f10		! (1_0) ((float*)&res)[0] = ((float*)px)[0];
1073	sra	%o5,15,%i2		! (0_0) bit = hx >> 15;
1074	add	%l0,TBL,%o7		! (5_1) pind = (char*)TBL + ind1
1075	for	%f50,A1,%f42		! (0_0) res = vis_for(res,A1);
1076
1077	fmuld	A5,%f24,%f52		! (4_1) res = A5 * xx;
1078	sra	%o5,7,%o1		! (0_0) ind0 = hx >> 7;
1079	ldd	[%o7],%f22		! (5_1) dtmp0 = ((double*)pind)[0];
1080	fand	%f54,DC3,%f54		! (5_1) res_c = vis_fand(res_c,DC3);
1081
1082	fmuld	%f20,%f18,%f20		! (2_1) res *= xx;
1083	and	%o1,_0x00001ff8,%o1	! (0_0) ind0 &= 0x1ff8;
1084	sub	%l1,512,%o3		! (0_0) sqrt_exp -= 512;
1085	faddd	%f34,A3,%f62		! (3_1) res += A3;
1086
1087	fpadd32	%f48,%f60,%f12		! (0_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
1088	add	%o1,32,%o1		! (0_0) ind0 += 32;
1089	st	%f12,[%i1]		! (0_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
1090	fmuld	%f14,%f16,%f34		! (1_1) res = dexp_hi * res;
1091
1092	lda	[%l2+4]%asi,%f11	! (1_0) ((float*)&res)[1] = ((float*)px)[1];
1093	and	%i2,32,%i4		! (0_0) bit &= 32;
1094	and	%o1,-64,%o1		! (0_0) ind0 &= -8;
1095	fsubd	%f40,%f54,%f40		! (5_1) xx = (res - res_c);
1096
1097	sll	%o1,0,%o7		! (0_0) ind1 = ind0;
1098	add	%i1,stridey,%i2		! py += stridey
1099	st	%f13,[%i1+4]		! (0_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
1100	faddd	%f52,A4,%f54		! (4_1) res += A4;
1101
1102	fmuld	%f62,%f44,%f52		! (3_1) res *= xx;
1103	cmp	%o5,_0x00100000		! (0_0) hx ? 0x00100000
1104	bl,pn	%icc,.update13		! (0_0) if ( hx < 0x00100000 )
1105	faddd	%f20,A1,%f12		! (2_1) res += A1;
1106.cont13:
1107	lda	[%l2]%asi,%o5		! (1_0) hx = *(int*)px;
1108	sllx	%o3,52,%o3		! (0_0) sqrt_exp <<= 52;
1109	add	%o7,%i4,%i1		! (0_0) ind1 += bit;
1110	faddd	%f34,%f36,%f60		! (1_1) res += dexp_lo;
1111
1112	fmuld	%f40,%f22,%f40		! (5_1) xx *= dtmp0;
1113	add	%g5,TBL,%g5		! (2_1) pind = (char*)TBL + ind1;
1114	stx	%o3,[%fp+tmp1]		! (0_0) dsqrt_exp = *(double*)&sqrt_exp;
1115	fand	%f10,DC0,%f50		! (1_0) res = vis_fand(res,DC0);
1116
1117	fmuld	%f54,%f24,%f34		! (4_1) res *= xx;
1118	add	%l2,stridex,%l2		! px += stridex
1119	ldd	[%g5+16],%f36		! (2_1) dexp_lo = ((double*)pind)[2];
1120	fpadd32	%f42,DC2,%f54		! (0_0) res_c = vis_fpadd32(res,DC2);
1121
1122	fmuld	%f12,%f18,%f16		! (2_1) res *= xx;
1123	sra	%o5,21,%l1		! (1_0) sqrt_exp = hx >> 21;
1124	ldd	[%g5+8],%f18		! (2_1) dexp_hi = ((double*)pind)[1];
1125	faddd	%f52,A2,%f20		! (3_1) res += A2;
1126
1127	ldd	[%fp+tmp2],%f48		! (1_1) dsqrt_exp = *(double*)&sqrt_exp;
1128	cmp	%o5,_0x7ff00000		! (1_0) hx ? 0x7ff00000
1129	bge,pn	%icc,.update14		! (1_0) if ( hx >= 0x7ff00000 )
1130	faddd	%f60,%f14,%f60		! (1_1) res += dexp_hi;
1131.cont14:
1132	lda	[%l2]%asi,%f10		! (2_0) ((float*)&res)[0] = ((float*)px)[0];
1133	sra	%o5,15,%g5		! (1_0) bit = hx >> 15;
1134	add	%i1,TBL,%o7		! (0_0) pind = (char*)TBL + ind1
1135	for	%f50,A1,%f14		! (1_0) res = vis_for(res,A1);
1136
1137	fmuld	A5,%f40,%f52		! (5_1) res = A5 * xx;
1138	sra	%o5,7,%o1		! (1_0) ind0 = hx >> 7;
1139	ldd	[%o7],%f22		! (0_0) dtmp0 = ((double*)pind)[0];
1140	fand	%f54,DC3,%f54		! (0_0) res_c = vis_fand(res_c,DC3);
1141
1142	fmuld	%f20,%f44,%f20		! (3_1) res *= xx;
1143	and	%o1,_0x00001ff8,%o1	! (1_0) ind0 &= 0x1ff8;
1144	sub	%l1,512,%o3		! (1_0) sqrt_exp -= 512;
1145	faddd	%f34,A3,%f62		! (4_1) res += A3;
1146
1147	fpadd32	%f48,%f60,%f12		! (1_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
1148	add	%o1,32,%o1		! (1_0) ind0 += 32;
1149	st	%f12,[%i2]		! (1_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
1150	fmuld	%f18,%f16,%f34		! (2_1) res = dexp_hi * res;
1151
1152	lda	[%l2+4]%asi,%f11	! (2_0) ((float*)&res)[1] = ((float*)px)[1];
1153	and	%g5,32,%i4		! (1_0) bit &= 32;
1154	and	%o1,-64,%o1		! (1_0) ind0 &= -8;
1155	fsubd	%f42,%f54,%f42		! (0_0) xx = (res - res_c);
1156
1157	sll	%o1,0,%o7		! (1_0) ind1 = ind0;
1158	add	%i2,stridey,%g5		! py += stridey
1159	st	%f13,[%i2+4]		! (1_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
1160	faddd	%f52,A4,%f54		! (5_1) res += A4;
1161
1162	fmuld	%f62,%f24,%f52		! (4_1) res *= xx;
1163	cmp	%o5,_0x00100000		! (1_0) hx ? 0x00100000
1164	bl,pn	%icc,.update15		! (1_0) if ( hx < 0x00100000 )
1165	faddd	%f20,A1,%f12		! (3_1) res += A1;
1166.cont15:
1167	lda	[%l2]%asi,%o5		! (2_0) hx = *(int*)px;
1168	sllx	%o3,52,%o3		! (1_0) sqrt_exp <<= 52;
1169	add	%o7,%i4,%i2		! (1_0) ind1 += bit;
1170	faddd	%f34,%f36,%f60		! (2_1) res += dexp_lo;
1171
1172	fmuld	%f42,%f22,%f42		! (0_0) xx *= dtmp0;
1173	add	%g1,TBL,%g1		! (3_1) pind = (char*)TBL + ind1;
1174	stx	%o3,[%fp+tmp2]		! (1_0) dsqrt_exp = *(double*)&sqrt_exp;
1175	fand	%f10,DC0,%f50		! (2_0) res = vis_fand(res,DC0);
1176
1177	fmuld	%f54,%f40,%f34		! (5_1) res *= xx;
1178	fpadd32	%f14,DC2,%f54		! (1_0) res_c = vis_fpadd32(res,DC2);
1179	add	%l2,stridex,%l2		! px += stridex
1180	ldd	[%g1+16],%f36		! (3_1) dexp_lo = ((double*)pind)[2];
1181
1182	fmuld	%f12,%f44,%f16		! (3_1) res *= xx;
1183	sra	%o5,21,%l1		! (2_0) sqrt_exp = hx >> 21;
1184	ldd	[%g1+8],%f44		! (3_1) dexp_hi = ((double*)pind)[1];
1185	faddd	%f52,A2,%f20		! (4_1) res += A2;
1186
1187	ldd	[%fp+tmp3],%f48		! (2_1) dsqrt_exp = *(double*)&sqrt_exp;
1188	cmp	%o5,_0x7ff00000		! (2_0) hx ? 0x7ff00000
1189	bge,pn	%icc,.update16		! (2_0) if ( hx >= 0x7ff00000 )
1190	faddd	%f60,%f18,%f60		! (2_1) res += dexp_hi;
1191.cont16:
1192	lda	[%l2]%asi,%f10		! (3_0) ((float*)&res)[0] = ((float*)px)[0];
1193	sra	%o5,15,%g1		! (2_0) bit = hx >> 15;
1194	add	%i2,TBL,%o7		! (1_0) pind = (char*)TBL + ind1
1195	for	%f50,A1,%f18		! (2_0) res = vis_for(res,A1);
1196
1197	fmuld	A5,%f42,%f52		! (0_0) res = A5 * xx;
1198	sra	%o5,7,%o1		! (2_0) ind0 = hx >> 7;
1199	ldd	[%o7],%f22		! (1_0) dtmp0 = ((double*)pind)[0];
1200	fand	%f54,DC3,%f54		! (1_0) res_c = vis_fand(res_c,DC3);
1201
1202	fmuld	%f20,%f24,%f20		! (4_1) res *= xx;
1203	and	%o1,_0x00001ff8,%o1	! (2_0) ind0 &= 0x1ff8;
1204	sub	%l1,512,%o3		! (2_0) sqrt_exp -= 512;
1205	faddd	%f34,A3,%f62		! (5_1) res += A3;
1206
1207	fpadd32	%f48,%f60,%f12		! (2_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
1208	add	%o1,32,%o1		! (2_0) ind0 += 32;
1209	st	%f12,[%g5]		! (2_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
1210	fmuld	%f44,%f16,%f34		! (3_1) res = dexp_hi * res;
1211
1212	lda	[%l2+4]%asi,%f11	! (3_0) ((float*)&res)[1] = ((float*)px)[1];
1213	and	%g1,32,%i4		! (2_0) bit &= 32;
1214	and	%o1,-64,%o1		! (2_0) ind0 &= -8;
1215	fsubd	%f14,%f54,%f14		! (1_0) xx = (res - res_c);
1216
1217	sll	%o1,0,%o7		! (2_0) ind1 = ind0;
1218	add	%g5,stridey,%g1		! py += stridey
1219	st	%f13,[%g5+4]		! (2_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
1220	faddd	%f52,A4,%f54		! (0_0) res += A4;
1221
1222	fmuld	%f62,%f40,%f52		! (5_1) res *= xx;
1223	cmp	%o5,_0x00100000		! (2_0) hx ? 0x00100000
1224	bl,pn	%icc,.update17		! (2_0) if ( hx < 0x00100000 )
1225	faddd	%f20,A1,%f12		! (4_1) res += A1;
1226.cont17:
1227	lda	[%l2]%asi,%o5		! (3_0) hx = *(int*)px;
1228	sllx	%o3,52,%o3		! (2_0) sqrt_exp <<= 52;
1229	add	%o7,%i4,%g5		! (2_0) ind1 += bit;
1230	faddd	%f34,%f36,%f60		! (3_1) res += dexp_lo;
1231
1232	fmuld	%f14,%f22,%f14		! (1_0) xx *= dtmp0;
1233	add	%i3,TBL,%i3		! (4_1) pind = (char*)TBL + ind1;
1234	stx	%o3,[%fp+tmp3]		! (2_0) dsqrt_exp = *(double*)&sqrt_exp;
1235	fand	%f10,DC0,%f50		! (3_0) res = vis_fand(res,DC0);
1236
1237	fmuld	%f54,%f42,%f34		! (0_0) res *= xx;
1238	fpadd32	%f18,DC2,%f54		! (2_0) res_c = vis_fpadd32(res,DC2);
1239	add	%l2,stridex,%l2		! px += stridex
1240	ldd	[%i3+16],%f36		! (4_1) dexp_lo = ((double*)pind)[2];
1241
1242	fmuld	%f12,%f24,%f16		! (4_1) res *= xx;
1243	sra	%o5,21,%l1		! (3_0) sqrt_exp = hx >> 21;
1244	ldd	[%i3+8],%f24		! (4_1) dexp_hi = ((double*)pind)[1];
1245	faddd	%f52,A2,%f20		! (5_1) res += A2;
1246
1247	ldd	[%fp+tmp4],%f48		! (3_1) dsqrt_exp = *(double*)&sqrt_exp;
1248	cmp	%o5,_0x7ff00000		! (3_0) hx ? 0x7ff00000
1249	bge,pn	%icc,.update18		! (3_0) if ( hx >= 0x7ff00000 )
1250	faddd	%f60,%f44,%f60		! (3_1) res += dexp_hi;
1251.cont18:
1252	lda	[%l2]%asi,%f10		! (4_0) ((float*)&res)[0] = ((float*)px)[0];
1253	sra	%o5,15,%i3		! (3_0) bit = hx >> 15;
1254	add	%g5,TBL,%o7		! (2_0) pind = (char*)TBL + ind1
1255	for	%f50,A1,%f44		! (3_0) res = vis_for(res,A1);
1256
1257	fmuld	A5,%f14,%f52		! (1_0) res = A5 * xx;
1258	sra	%o5,7,%o1		! (3_0) ind0 = hx >> 7;
1259	ldd	[%o7],%f22		! (2_0) dtmp0 = ((double*)pind)[0];
1260	fand	%f54,DC3,%f54		! (2_0) res_c = vis_fand(res_c,DC3);
1261
1262	fmuld	%f20,%f40,%f20		! (5_1) res *= xx;
1263	and	%o1,_0x00001ff8,%o1	! (3_0) ind0 &= 0x1ff8;
1264	sub	%l1,512,%o3		! (3_0) sqrt_exp -= 512;
1265	faddd	%f34,A3,%f62		! (0_0) res += A3;
1266
1267	fpadd32	%f48,%f60,%f12		! (3_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
1268	add	%o1,32,%o1		! (3_0) ind0 += 32;
1269	st	%f12,[%g1]		! (3_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
1270	fmuld	%f24,%f16,%f34		! (4_1) res = dexp_hi * res;
1271
1272	lda	[%l2+4]%asi,%f11	! (4_0) ((float*)&res)[1] = ((float*)px)[1];
1273	and	%i3,32,%i4		! (3_0) bit &= 32;
1274	and	%o1,-64,%o1		! (3_0) ind0 &= -8;
1275	fsubd	%f18,%f54,%f18		! (2_0) xx = (res - res_c);
1276
1277	or	%g0,%o1,%o7		! (3_0) ind1 = ind0;
1278	add	%g1,stridey,%i3		! py += stridey
1279	st	%f13,[%g1+4]		! (3_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
1280	faddd	%f52,A4,%f54		! (1_0) res += A4;
1281
1282	fmuld	%f62,%f42,%f52		! (0_0) res *= xx;
1283	cmp	%o5,_0x00100000		! (3_0) hx ? 0x00100000
1284	bl,pn	%icc,.update19		! (3_0) if ( hx < 0x00100000 )
1285	faddd	%f20,A1,%f12		! (5_1) res += A1;
1286.cont19:
1287	lda	[%l2]%asi,%o5		! (4_0) hx = *(int*)px;
1288	sllx	%o3,52,%o3		! (3_0) sqrt_exp <<= 52;
1289	add	%o7,%i4,%g1		! (3_0) ind1 += bit;
1290	faddd	%f34,%f36,%f60		! (4_1) res += dexp_lo;
1291
1292	fmuld	%f18,%f22,%f18		! (2_0) xx *= dtmp0;
1293	add	%l0,TBL,%l0		! (5_1) pind = (char*)TBL + ind1;
1294	stx	%o3,[%fp+tmp4]		! (3_0) dsqrt_exp = *(double*)&sqrt_exp;
1295	fand	%f10,DC0,%f50		! (4_0) res = vis_fand(res,DC0);
1296
1297	fmuld	%f54,%f14,%f34		! (1_0) res *= xx;
1298	add	%l2,stridex,%l2		! px += stridex
1299	ldd	[%l0+16],%f36		! (5_1) dexp_lo = ((double*)pind)[2];
1300	fpadd32	%f44,DC2,%f54		! (3_0) res_c = vis_fpadd32(res,DC2);
1301
1302	fmuld	%f12,%f40,%f16		! (5_1) res *= xx;
1303	sra	%o5,21,%l1		! (4_0) sqrt_exp = hx >> 21;
1304	ldd	[%l0+8],%f40		! (5_1) dexp_hi = ((double*)pind)[1];
1305	faddd	%f52,A2,%f20		! (0_0) res += A2;
1306
1307	ldd	[%fp+tmp5],%f48		! (4_1) dsqrt_exp = *(double*)&sqrt_exp;
1308	cmp	%o5,_0x7ff00000		! (4_0) hx ? 0x7ff00000
1309	bge,pn	%icc,.update20		! (4_0) if ( hx >= 0x7ff00000 )
1310	faddd	%f60,%f24,%f60		! (4_1) res += dexp_hi;
1311.cont20:
1312	lda	[%l2]%asi,%f10		! (5_0) ((float*)&res)[0] = ((float*)px)[0];
1313	sra	%o5,15,%l0		! (4_0) bit = hx >> 15;
1314	add	%g1,TBL,%o7		! (3_0) (char*)div_arr+ind0
1315	for	%f50,A1,%f24		! (4_0) res = vis_for(res,A1);
1316
1317	fmuld	A5,%f18,%f52		! (2_0) res = A5 * xx;
1318	sra	%o5,7,%o1		! (4_0) ind0 = hx >> 7;
1319	ldd	[%o7],%f22		! (3_0) dtmp0 = ((double*)pind)[0];
1320	fand	%f54,DC3,%f54		! (3_0) res_c = vis_fand(res_c,DC3);
1321
1322	fmuld	%f20,%f42,%f20		! (0_0) res *= xx;
1323	and	%o1,_0x00001ff8,%o1	! (4_0) ind0 &= 0x1ff8;
1324	sub	%l1,512,%o3		! (4_0) sqrt_exp -= 512;
1325	faddd	%f34,A3,%f62		! (1_0) res += A3;
1326
1327	lda	[%l2+4]%asi,%f11	! (5_0) ((float*)&res)[1] = ((float*)px)[1];
1328	add	%o1,32,%o1		! (4_0) ind0 += 32;
1329	fpadd32	%f48,%f60,%f12		! (4_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
1330	fmuld	%f40,%f16,%f34		! (5_1) res = dexp_hi * res;
1331
1332	and	%l0,32,%i4		! (4_0) bit &= 32;
1333	cmp	%o5,_0x00100000		! (4_0) hx ? 0x00100000
1334	bl,pn	%icc,.update21		! (4_0) if ( hx < 0x00100000 )
1335	fsubd	%f44,%f54,%f44		! (3_0) xx = (res - res_c);
1336.cont21:
1337	and	%o1,-64,%o1		! (4_0) ind0 &= -8;
1338	sub	counter,6,counter	! counter
1339	st	%f12,[%i3]		! (4_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
1340	faddd	%f52,A4,%f54		! (2_0) res += A4;
1341
1342	st	%f13,[%i3+4]		! (4_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
1343	cmp	counter,6
1344	bge,pt	%icc,.main_loop
1345	add	%i3,stridey,%l0		! py += stridey
1346
1347.tail:
1348	subcc	counter,1,counter
1349	bneg	.begin
1350	or	%g0,%l0,%o4
1351
1352	fmuld	%f62,%f14,%f52		! (1_1) res *= xx;
1353	add	%i1,TBL,%i1		! (0_1) pind = (char*)TBL + ind1;
1354	faddd	%f20,A1,%f12		! (0_1) res += A1;
1355
1356	faddd	%f34,%f36,%f60		! (5_2) res += dexp_lo;
1357
1358	fmuld	%f44,%f22,%f44		! (3_1) xx *= dtmp0;
1359	add	%l2,stridex,%l2		! px += stridex
1360
1361	fmuld	%f54,%f18,%f34		! (2_1) res *= xx;
1362	ldd	[%i1+16],%f36		! (0_1) dexp_lo = ((double*)pind)[2];
1363
1364	fmuld	%f12,%f42,%f12		! (0_1) res *= xx;
1365	ldd	[%i1+8],%f42		! (0_1) dexp_hi = ((double*)pind)[1];
1366	faddd	%f52,A2,%f20		! (1_1) res += A2;
1367
1368	ldd	[%fp+tmp0],%f48		! (5_2) dsqrt_exp = *(double*)&sqrt_exp;
1369	faddd	%f60,%f40,%f60		! (5_2) res += dexp_hi;
1370
1371	fmuld	A5,%f44,%f52		! (3_1) res = A5 * xx;
1372
1373	fmuld	%f20,%f14,%f20		! (1_1) res *= xx;
1374	faddd	%f34,A3,%f62		! (2_1) res += A3;
1375
1376	fmuld	%f42,%f12,%f34		! (0_1) res = dexp_hi * res;
1377	fpadd32	%f48,%f60,%f12		! (5_2) dtmp0 = vis_fpadd32(dsqrt_exp,res);
1378
1379	st	%f12,[%l0]		! (5_2) ((float*)py)[0] = ((float*)&dtmp0)[0];
1380
1381	add	%l0,stridey,%i1		! py += stridey
1382	st	%f13,[%l0+4]		! (5_2) ((float*)py)[1] = ((float*)&dtmp0)[1];
1383	faddd	%f52,A4,%f54		! (3_1) res += A4;
1384
1385	subcc	counter,1,counter
1386	bneg	.begin
1387	or	%g0,%i1,%o4
1388
1389	fmuld	%f62,%f18,%f52		! (2_1) res *= xx;
1390	faddd	%f20,A1,%f12		! (1_1) res += A1;
1391
1392	faddd	%f34,%f36,%f60		! (0_1) res += dexp_lo;
1393
1394	add	%i2,TBL,%i2		! (1_1) pind = (char*)TBL + ind1;
1395
1396	fmuld	%f54,%f44,%f34		! (3_1) res *= xx;
1397	add	%l2,stridex,%l2		! px += stridex
1398	ldd	[%i2+16],%f36		! (1_1) dexp_lo = ((double*)pind)[2];
1399
1400	fmuld	%f12,%f14,%f12		! (1_1) res *= xx;
1401	ldd	[%i2+8],%f14		! (1_1) dexp_hi = ((double*)pind)[1];
1402	faddd	%f52,A2,%f20		! (2_1) res += A2;
1403
1404	ldd	[%fp+tmp1],%f48		! (0_1) dsqrt_exp = *(double*)&sqrt_exp;
1405	faddd	%f60,%f42,%f60		! (0_1) res += dexp_hi;
1406
1407	fmuld	%f20,%f18,%f20		! (2_1) res *= xx;
1408	faddd	%f34,A3,%f62		! (3_1) res += A3;
1409
1410	fmuld	%f14,%f12,%f34		! (1_1) res = dexp_hi * res;
1411	fpadd32	%f48,%f60,%f12		! (0_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
1412
1413	st	%f12,[%i1]		! (0_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
1414
1415	add	%i1,stridey,%i2		! py += stridey
1416	st	%f13,[%i1+4]		! (0_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
1417
1418	subcc	counter,1,counter
1419	bneg	.begin
1420	or	%g0,%i2,%o4
1421
1422	fmuld	%f62,%f44,%f52		! (3_1) res *= xx;
1423	faddd	%f20,A1,%f12		! (2_1) res += A1;
1424
1425	faddd	%f34,%f36,%f60		! (1_1) res += dexp_lo;
1426
1427	add	%g5,TBL,%g5		! (2_1) pind = (char*)TBL + ind1;
1428
1429	add	%l2,stridex,%l2		! px += stridex
1430	ldd	[%g5+16],%f36		! (2_1) dexp_lo = ((double*)pind)[2];
1431
1432	fmuld	%f12,%f18,%f12		! (2_1) res *= xx;
1433	ldd	[%g5+8],%f18		! (2_1) dexp_hi = ((double*)pind)[1];
1434	faddd	%f52,A2,%f20		! (3_1) res += A2;
1435
1436	ldd	[%fp+tmp2],%f48		! (1_1) dsqrt_exp = *(double*)&sqrt_exp;
1437	faddd	%f60,%f14,%f60		! (1_1) res += dexp_hi;
1438
1439	fmuld	%f20,%f44,%f20		! (3_1) res *= xx;
1440
1441	fmuld	%f18,%f12,%f34		! (2_1) res = dexp_hi * res;
1442	fpadd32	%f48,%f60,%f12		! (1_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
1443
1444	st	%f12,[%i2]		! (1_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
1445
1446	add	%i2,stridey,%g5		! py += stridey
1447	st	%f13,[%i2+4]		! (1_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
1448
1449	subcc	counter,1,counter
1450	bneg	.begin
1451	or	%g0,%g5,%o4
1452
1453	faddd	%f20,A1,%f12		! (3_1) res += A1;
1454
1455	faddd	%f34,%f36,%f60		! (2_1) res += dexp_lo;
1456
1457	add	%g1,TBL,%g1		! (3_1) pind = (char*)TBL + ind1;
1458
1459	add	%l2,stridex,%l2		! px += stridex
1460	ldd	[%g1+16],%f36		! (3_1) dexp_lo = ((double*)pind)[2];
1461
1462	fmuld	%f12,%f44,%f12		! (3_1) res *= xx;
1463	ldd	[%g1+8],%f44		! (3_1) dexp_hi = ((double*)pind)[1];
1464
1465	ldd	[%fp+tmp3],%f48		! (2_1) dsqrt_exp = *(double*)&sqrt_exp;
1466	faddd	%f60,%f18,%f60		! (2_1) res += dexp_hi;
1467
1468	fmuld	%f44,%f12,%f34		! (3_1) res = dexp_hi * res;
1469	fpadd32	%f48,%f60,%f12		! (2_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
1470
1471	st	%f12,[%g5]		! (2_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
1472
1473	add	%g5,stridey,%g1		! py += stridey
1474	st	%f13,[%g5+4]		! (2_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
1475
1476	subcc	counter,1,counter
1477	bneg	.begin
1478	or	%g0,%g1,%o4
1479
1480	faddd	%f34,%f36,%f60		! (3_1) res += dexp_lo;
1481
1482	add	%l2,stridex,%l2		! px += stridex
1483
1484	ldd	[%fp+tmp4],%f48		! (3_1) dsqrt_exp = *(double*)&sqrt_exp;
1485	faddd	%f60,%f44,%f60		! (3_1) res += dexp_hi;
1486
1487	fpadd32	%f48,%f60,%f12		! (3_1) dtmp0 = vis_fpadd32(dsqrt_exp,res);
1488
1489	st	%f12,[%g1]		! (3_1) ((float*)py)[0] = ((float*)&dtmp0)[0];
1490
1491	add	%g1,stridey,%i3		! py += stridey
1492	st	%f13,[%g1+4]		! (3_1) ((float*)py)[1] = ((float*)&dtmp0)[1];
1493
1494	ba	.begin
1495	or	%g0,%i3,%o4
1496
1497	.align	16
1498.spec:
1499	fsqrtd	%f10,%f10
1500	add	%l2,stridex,%l2
1501
1502	st	%f10,[%o4]
1503	st	%f11,[%o4+4]
1504
1505	add	%o4,stridey,%o4
1506	ba	.begin1
1507	sub	counter,1,counter
1508
1509	.align	16
1510.update0:
1511	cmp	counter,1
1512	ble	.cont0
1513	nop
1514
1515	sub	%l2,stridex,%i5
1516	stx	%i5,[%fp+tmp_px]
1517
1518	sub	counter,1,counter
1519	st	counter,[%fp+tmp_counter]
1520
1521	ba	.cont0
1522	or	%g0,1,counter
1523
1524	.align	16
1525.update1:
1526	cmp	counter,1
1527	ble	.cont1
1528	nop
1529
1530	sub	%l2,stridex,%i5
1531	stx	%i5,[%fp+tmp_px]
1532
1533	sub	counter,1,counter
1534	st	counter,[%fp+tmp_counter]
1535
1536	ba	.cont1
1537	or	%g0,1,counter
1538
1539	.align	16
1540.update2:
1541	cmp	counter,2
1542	ble	.cont2
1543	nop
1544
1545	sub	%l2,stridex,%i5
1546	stx	%i5,[%fp+tmp_px]
1547
1548	sub	counter,2,counter
1549	st	counter,[%fp+tmp_counter]
1550
1551	ba	.cont2
1552	or	%g0,2,counter
1553
1554	.align	16
1555.update3:
1556	cmp	counter,2
1557	ble	.cont3
1558	nop
1559
1560	sub	%l2,stridex,%i5
1561	stx	%i5,[%fp+tmp_px]
1562
1563	sub	counter,2,counter
1564	st	counter,[%fp+tmp_counter]
1565
1566	ba	.cont3
1567	or	%g0,2,counter
1568
1569	.align	16
1570.update4:
1571	cmp	counter,3
1572	ble	.cont4
1573	nop
1574
1575	sub	%l2,stridex,%i5
1576	stx	%i5,[%fp+tmp_px]
1577
1578	sub	counter,3,counter
1579	st	counter,[%fp+tmp_counter]
1580
1581	ba	.cont4
1582	or	%g0,3,counter
1583
1584	.align	16
1585.update5:
1586	cmp	counter,3
1587	ble	.cont5
1588	nop
1589
1590	sub	%l2,stridex,%i5
1591	stx	%i5,[%fp+tmp_px]
1592
1593	sub	counter,3,counter
1594	st	counter,[%fp+tmp_counter]
1595
1596	ba	.cont5
1597	or	%g0,3,counter
1598
1599	.align	16
1600.update6:
1601	cmp	counter,4
1602	ble	.cont6
1603	nop
1604
1605	sub	%l2,stridex,%i5
1606	stx	%i5,[%fp+tmp_px]
1607
1608	sub	counter,4,counter
1609	st	counter,[%fp+tmp_counter]
1610
1611	ba	.cont6
1612	or	%g0,4,counter
1613
1614	.align	16
1615.update7:
1616	cmp	counter,4
1617	ble	.cont7
1618	nop
1619
1620	sub	%l2,stridex,%i5
1621	stx	%i5,[%fp+tmp_px]
1622
1623	sub	counter,4,counter
1624	st	counter,[%fp+tmp_counter]
1625
1626	ba	.cont7
1627	or	%g0,4,counter
1628
1629	.align	16
1630.update8:
1631	cmp	counter,5
1632	ble	.cont8
1633	nop
1634
1635	sub	%l2,stridex,%i5
1636	stx	%i5,[%fp+tmp_px]
1637
1638	sub	counter,5,counter
1639	st	counter,[%fp+tmp_counter]
1640
1641	ba	.cont8
1642	or	%g0,5,counter
1643
1644	.align	16
1645.update9:
1646	cmp	counter,5
1647	ble	.cont9
1648	nop
1649
1650	sub	%l2,stridex,%i5
1651	stx	%i5,[%fp+tmp_px]
1652
1653	sub	counter,5,counter
1654	st	counter,[%fp+tmp_counter]
1655
1656	ba	.cont9
1657	or	%g0,5,counter
1658
1659	.align	16
1660.update10:
1661	cmp	counter,6
1662	ble	.cont10
1663	nop
1664
1665	sub	%l2,stridex,%i5
1666	stx	%i5,[%fp+tmp_px]
1667
1668	sub	counter,6,counter
1669	st	counter,[%fp+tmp_counter]
1670
1671	ba	.cont10
1672	or	%g0,6,counter
1673
1674	.align	16
1675.update11:
1676	cmp	counter,6
1677	ble	.cont11
1678	nop
1679
1680	sub	%l2,stridex,%i5
1681	stx	%i5,[%fp+tmp_px]
1682
1683	sub	counter,6,counter
1684	st	counter,[%fp+tmp_counter]
1685
1686	ba	.cont11
1687	or	%g0,6,counter
1688
1689	.align	16
1690.update12:
1691	cmp	counter,7
1692	ble	.cont12
1693	nop
1694
1695	sub	%l2,stridex,%i5
1696	stx	%i5,[%fp+tmp_px]
1697
1698	sub	counter,7,counter
1699	st	counter,[%fp+tmp_counter]
1700
1701	ba	.cont12
1702	or	%g0,7,counter
1703
1704	.align	16
1705.update13:
1706	cmp	counter,7
1707	ble	.cont13
1708	nop
1709
1710	sub	%l2,stridex,%i5
1711	stx	%i5,[%fp+tmp_px]
1712
1713	sub	counter,7,counter
1714	st	counter,[%fp+tmp_counter]
1715
1716	ba	.cont13
1717	or	%g0,7,counter
1718
1719	.align	16
1720.update14:
1721	cmp	counter,8
1722	ble	.cont14
1723	nop
1724
1725	sub	%l2,stridex,%i5
1726	stx	%i5,[%fp+tmp_px]
1727
1728	sub	counter,8,counter
1729	st	counter,[%fp+tmp_counter]
1730
1731	ba	.cont14
1732	or	%g0,8,counter
1733
1734	.align	16
1735.update15:
1736	cmp	counter,8
1737	ble	.cont15
1738	nop
1739
1740	sub	%l2,stridex,%i5
1741	stx	%i5,[%fp+tmp_px]
1742
1743	sub	counter,8,counter
1744	st	counter,[%fp+tmp_counter]
1745
1746	ba	.cont15
1747	or	%g0,8,counter
1748
1749	.align	16
1750.update16:
1751	cmp	counter,9
1752	ble	.cont16
1753	nop
1754
1755	sub	%l2,stridex,%i5
1756	stx	%i5,[%fp+tmp_px]
1757
1758	sub	counter,9,counter
1759	st	counter,[%fp+tmp_counter]
1760
1761	ba	.cont16
1762	or	%g0,9,counter
1763
1764	.align	16
1765.update17:
1766	cmp	counter,9
1767	ble	.cont17
1768	nop
1769
1770	sub	%l2,stridex,%i5
1771	stx	%i5,[%fp+tmp_px]
1772
1773	sub	counter,9,counter
1774	st	counter,[%fp+tmp_counter]
1775
1776	ba	.cont17
1777	or	%g0,9,counter
1778
1779	.align	16
1780.update18:
1781	cmp	counter,10
1782	ble	.cont18
1783	nop
1784
1785	sub	%l2,stridex,%i5
1786	stx	%i5,[%fp+tmp_px]
1787
1788	sub	counter,10,counter
1789	st	counter,[%fp+tmp_counter]
1790
1791	ba	.cont18
1792	or	%g0,10,counter
1793
1794	.align	16
1795.update19:
1796	cmp	counter,10
1797	ble	.cont19
1798	nop
1799
1800	sub	%l2,stridex,%i5
1801	stx	%i5,[%fp+tmp_px]
1802
1803	sub	counter,10,counter
1804	st	counter,[%fp+tmp_counter]
1805
1806	ba	.cont19
1807	or	%g0,10,counter
1808
1809	.align	16
1810.update20:
1811	cmp	counter,11
1812	ble	.cont20
1813	nop
1814
1815	sub	%l2,stridex,%i5
1816	stx	%i5,[%fp+tmp_px]
1817
1818	sub	counter,11,counter
1819	st	counter,[%fp+tmp_counter]
1820
1821	ba	.cont20
1822	or	%g0,11,counter
1823
1824	.align	16
1825.update21:
1826	cmp	counter,11
1827	ble	.cont21
1828	nop
1829
1830	sub	%l2,stridex,%i5
1831	stx	%i5,[%fp+tmp_px]
1832
1833	sub	counter,11,counter
1834	st	counter,[%fp+tmp_counter]
1835
1836	ba	.cont21
1837	or	%g0,11,counter
1838
1839.exit:
1840	ret
1841	restore
1842
1843	SET_SIZE(__vsqrt)
1844
1845