xref: /illumos-gate/usr/src/lib/libmvec/common/vis/__vpowf.S (revision 132157d7fb25c120ae1deca2a65fa7c78e8fcfd0)
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	"__vpowf.S"
30
31#include "libm.h"
32
33	RO_DATA
34	.align	64
35
36! __mt_constexp2fa:
37	.word	0x3ff00000, 0x00000000, 0x3ff00b1a, 0xfa5abcbf
38	.word	0x3ff0163d, 0xa9fb3335, 0x3ff02168, 0x143b0281
39	.word	0x3ff02c9a, 0x3e778061, 0x3ff037d4, 0x2e11bbcc
40	.word	0x3ff04315, 0xe86e7f85, 0x3ff04e5f, 0x72f654b1
41	.word	0x3ff059b0, 0xd3158574, 0x3ff0650a, 0x0e3c1f89
42	.word	0x3ff0706b, 0x29ddf6de, 0x3ff07bd4, 0x2b72a836
43	.word	0x3ff08745, 0x18759bc8, 0x3ff092bd, 0xf66607e0
44	.word	0x3ff09e3e, 0xcac6f383, 0x3ff0a9c7, 0x9b1f3919
45	.word	0x3ff0b558, 0x6cf9890f, 0x3ff0c0f1, 0x45e46c85
46	.word	0x3ff0cc92, 0x2b7247f7, 0x3ff0d83b, 0x23395dec
47	.word	0x3ff0e3ec, 0x32d3d1a2, 0x3ff0efa5, 0x5fdfa9c5
48	.word	0x3ff0fb66, 0xaffed31b, 0x3ff10730, 0x28d7233e
49	.word	0x3ff11301, 0xd0125b51, 0x3ff11edb, 0xab5e2ab6
50	.word	0x3ff12abd, 0xc06c31cc, 0x3ff136a8, 0x14f204ab
51	.word	0x3ff1429a, 0xaea92de0, 0x3ff14e95, 0x934f312e
52	.word	0x3ff15a98, 0xc8a58e51, 0x3ff166a4, 0x5471c3c2
53	.word	0x3ff172b8, 0x3c7d517b, 0x3ff17ed4, 0x8695bbc0
54	.word	0x3ff18af9, 0x388c8dea, 0x3ff19726, 0x58375d2f
55	.word	0x3ff1a35b, 0xeb6fcb75, 0x3ff1af99, 0xf8138a1c
56	.word	0x3ff1bbe0, 0x84045cd4, 0x3ff1c82f, 0x95281c6b
57	.word	0x3ff1d487, 0x3168b9aa, 0x3ff1e0e7, 0x5eb44027
58	.word	0x3ff1ed50, 0x22fcd91d, 0x3ff1f9c1, 0x8438ce4d
59	.word	0x3ff2063b, 0x88628cd6, 0x3ff212be, 0x3578a819
60	.word	0x3ff21f49, 0x917ddc96, 0x3ff22bdd, 0xa27912d1
61	.word	0x3ff2387a, 0x6e756238, 0x3ff2451f, 0xfb82140a
62	.word	0x3ff251ce, 0x4fb2a63f, 0x3ff25e85, 0x711ece75
63	.word	0x3ff26b45, 0x65e27cdd, 0x3ff2780e, 0x341ddf29
64	.word	0x3ff284df, 0xe1f56381, 0x3ff291ba, 0x7591bb70
65	.word	0x3ff29e9d, 0xf51fdee1, 0x3ff2ab8a, 0x66d10f13
66	.word	0x3ff2b87f, 0xd0dad990, 0x3ff2c57e, 0x39771b2f
67	.word	0x3ff2d285, 0xa6e4030b, 0x3ff2df96, 0x1f641589
68	.word	0x3ff2ecaf, 0xa93e2f56, 0x3ff2f9d2, 0x4abd886b
69	.word	0x3ff306fe, 0x0a31b715, 0x3ff31432, 0xedeeb2fd
70	.word	0x3ff32170, 0xfc4cd831, 0x3ff32eb8, 0x3ba8ea32
71	.word	0x3ff33c08, 0xb26416ff, 0x3ff34962, 0x66e3fa2d
72	.word	0x3ff356c5, 0x5f929ff1, 0x3ff36431, 0xa2de883b
73	.word	0x3ff371a7, 0x373aa9cb, 0x3ff37f26, 0x231e754a
74	.word	0x3ff38cae, 0x6d05d866, 0x3ff39a40, 0x1b7140ef
75	.word	0x3ff3a7db, 0x34e59ff7, 0x3ff3b57f, 0xbfec6cf4
76	.word	0x3ff3c32d, 0xc313a8e5, 0x3ff3d0e5, 0x44ede173
77	.word	0x3ff3dea6, 0x4c123422, 0x3ff3ec70, 0xdf1c5175
78	.word	0x3ff3fa45, 0x04ac801c, 0x3ff40822, 0xc367a024
79	.word	0x3ff4160a, 0x21f72e2a, 0x3ff423fb, 0x2709468a
80	.word	0x3ff431f5, 0xd950a897, 0x3ff43ffa, 0x3f84b9d4
81	.word	0x3ff44e08, 0x6061892d, 0x3ff45c20, 0x42a7d232
82	.word	0x3ff46a41, 0xed1d0057, 0x3ff4786d, 0x668b3237
83	.word	0x3ff486a2, 0xb5c13cd0, 0x3ff494e1, 0xe192aed2
84	.word	0x3ff4a32a, 0xf0d7d3de, 0x3ff4b17d, 0xea6db7d7
85	.word	0x3ff4bfda, 0xd5362a27, 0x3ff4ce41, 0xb817c114
86	.word	0x3ff4dcb2, 0x99fddd0d, 0x3ff4eb2d, 0x81d8abff
87	.word	0x3ff4f9b2, 0x769d2ca7, 0x3ff50841, 0x7f4531ee
88	.word	0x3ff516da, 0xa2cf6642, 0x3ff5257d, 0xe83f4eef
89	.word	0x3ff5342b, 0x569d4f82, 0x3ff542e2, 0xf4f6ad27
90	.word	0x3ff551a4, 0xca5d920f, 0x3ff56070, 0xdde910d2
91	.word	0x3ff56f47, 0x36b527da, 0x3ff57e27, 0xdbe2c4cf
92	.word	0x3ff58d12, 0xd497c7fd, 0x3ff59c08, 0x27ff07cc
93	.word	0x3ff5ab07, 0xdd485429, 0x3ff5ba11, 0xfba87a03
94	.word	0x3ff5c926, 0x8a5946b7, 0x3ff5d845, 0x90998b93
95	.word	0x3ff5e76f, 0x15ad2148, 0x3ff5f6a3, 0x20dceb71
96	.word	0x3ff605e1, 0xb976dc09, 0x3ff6152a, 0xe6cdf6f4
97	.word	0x3ff6247e, 0xb03a5585, 0x3ff633dd, 0x1d1929fd
98	.word	0x3ff64346, 0x34ccc320, 0x3ff652b9, 0xfebc8fb7
99	.word	0x3ff66238, 0x82552225, 0x3ff671c1, 0xc70833f6
100	.word	0x3ff68155, 0xd44ca973, 0x3ff690f4, 0xb19e9538
101	.word	0x3ff6a09e, 0x667f3bcd, 0x3ff6b052, 0xfa75173e
102	.word	0x3ff6c012, 0x750bdabf, 0x3ff6cfdc, 0xddd47645
103	.word	0x3ff6dfb2, 0x3c651a2f, 0x3ff6ef92, 0x98593ae5
104	.word	0x3ff6ff7d, 0xf9519484, 0x3ff70f74, 0x66f42e87
105	.word	0x3ff71f75, 0xe8ec5f74, 0x3ff72f82, 0x86ead08a
106	.word	0x3ff73f9a, 0x48a58174, 0x3ff74fbd, 0x35d7cbfd
107	.word	0x3ff75feb, 0x564267c9, 0x3ff77024, 0xb1ab6e09
108	.word	0x3ff78069, 0x4fde5d3f, 0x3ff790b9, 0x38ac1cf6
109	.word	0x3ff7a114, 0x73eb0187, 0x3ff7b17b, 0x0976cfdb
110	.word	0x3ff7c1ed, 0x0130c132, 0x3ff7d26a, 0x62ff86f0
111	.word	0x3ff7e2f3, 0x36cf4e62, 0x3ff7f387, 0x8491c491
112	.word	0x3ff80427, 0x543e1a12, 0x3ff814d2, 0xadd106d9
113	.word	0x3ff82589, 0x994cce13, 0x3ff8364c, 0x1eb941f7
114	.word	0x3ff8471a, 0x4623c7ad, 0x3ff857f4, 0x179f5b21
115	.word	0x3ff868d9, 0x9b4492ed, 0x3ff879ca, 0xd931a436
116	.word	0x3ff88ac7, 0xd98a6699, 0x3ff89bd0, 0xa478580f
117	.word	0x3ff8ace5, 0x422aa0db, 0x3ff8be05, 0xbad61778
118	.word	0x3ff8cf32, 0x16b5448c, 0x3ff8e06a, 0x5e0866d9
119	.word	0x3ff8f1ae, 0x99157736, 0x3ff902fe, 0xd0282c8a
120	.word	0x3ff9145b, 0x0b91ffc6, 0x3ff925c3, 0x53aa2fe2
121	.word	0x3ff93737, 0xb0cdc5e5, 0x3ff948b8, 0x2b5f98e5
122	.word	0x3ff95a44, 0xcbc8520f, 0x3ff96bdd, 0x9a7670b3
123	.word	0x3ff97d82, 0x9fde4e50, 0x3ff98f33, 0xe47a22a2
124	.word	0x3ff9a0f1, 0x70ca07ba, 0x3ff9b2bb, 0x4d53fe0d
125	.word	0x3ff9c491, 0x82a3f090, 0x3ff9d674, 0x194bb8d5
126	.word	0x3ff9e863, 0x19e32323, 0x3ff9fa5e, 0x8d07f29e
127	.word	0x3ffa0c66, 0x7b5de565, 0x3ffa1e7a, 0xed8eb8bb
128	.word	0x3ffa309b, 0xec4a2d33, 0x3ffa42c9, 0x80460ad8
129	.word	0x3ffa5503, 0xb23e255d, 0x3ffa674a, 0x8af46052
130	.word	0x3ffa799e, 0x1330b358, 0x3ffa8bfe, 0x53c12e59
131	.word	0x3ffa9e6b, 0x5579fdbf, 0x3ffab0e5, 0x21356eba
132	.word	0x3ffac36b, 0xbfd3f37a, 0x3ffad5ff, 0x3a3c2774
133	.word	0x3ffae89f, 0x995ad3ad, 0x3ffafb4c, 0xe622f2ff
134	.word	0x3ffb0e07, 0x298db666, 0x3ffb20ce, 0x6c9a8952
135	.word	0x3ffb33a2, 0xb84f15fb, 0x3ffb4684, 0x15b749b1
136	.word	0x3ffb5972, 0x8de5593a, 0x3ffb6c6e, 0x29f1c52a
137	.word	0x3ffb7f76, 0xf2fb5e47, 0x3ffb928c, 0xf22749e4
138	.word	0x3ffba5b0, 0x30a1064a, 0x3ffbb8e0, 0xb79a6f1f
139	.word	0x3ffbcc1e, 0x904bc1d2, 0x3ffbdf69, 0xc3f3a207
140	.word	0x3ffbf2c2, 0x5bd71e09, 0x3ffc0628, 0x6141b33d
141	.word	0x3ffc199b, 0xdd85529c, 0x3ffc2d1c, 0xd9fa652c
142	.word	0x3ffc40ab, 0x5fffd07a, 0x3ffc5447, 0x78fafb22
143	.word	0x3ffc67f1, 0x2e57d14b, 0x3ffc7ba8, 0x8988c933
144	.word	0x3ffc8f6d, 0x9406e7b5, 0x3ffca340, 0x5751c4db
145	.word	0x3ffcb720, 0xdcef9069, 0x3ffccb0f, 0x2e6d1675
146	.word	0x3ffcdf0b, 0x555dc3fa, 0x3ffcf315, 0x5b5bab74
147	.word	0x3ffd072d, 0x4a07897c, 0x3ffd1b53, 0x2b08c968
148	.word	0x3ffd2f87, 0x080d89f2, 0x3ffd43c8, 0xeacaa1d6
149	.word	0x3ffd5818, 0xdcfba487, 0x3ffd6c76, 0xe862e6d3
150	.word	0x3ffd80e3, 0x16c98398, 0x3ffd955d, 0x71ff6075
151	.word	0x3ffda9e6, 0x03db3285, 0x3ffdbe7c, 0xd63a8315
152	.word	0x3ffdd321, 0xf301b460, 0x3ffde7d5, 0x641c0658
153	.word	0x3ffdfc97, 0x337b9b5f, 0x3ffe1167, 0x6b197d17
154	.word	0x3ffe2646, 0x14f5a129, 0x3ffe3b33, 0x3b16ee12
155	.word	0x3ffe502e, 0xe78b3ff6, 0x3ffe6539, 0x24676d76
156	.word	0x3ffe7a51, 0xfbc74c83, 0x3ffe8f79, 0x77cdb740
157	.word	0x3ffea4af, 0xa2a490da, 0x3ffeb9f4, 0x867cca6e
158	.word	0x3ffecf48, 0x2d8e67f1, 0x3ffee4aa, 0xa2188510
159	.word	0x3ffefa1b, 0xee615a27, 0x3fff0f9c, 0x1cb6412a
160	.word	0x3fff252b, 0x376bba97, 0x3fff3ac9, 0x48dd7274
161	.word	0x3fff5076, 0x5b6e4540, 0x3fff6632, 0x798844f8
162	.word	0x3fff7bfd, 0xad9cbe14, 0x3fff91d8, 0x02243c89
163	.word	0x3fffa7c1, 0x819e90d8, 0x3fffbdba, 0x3692d514
164	.word	0x3fffd3c2, 0x2b8f71f1, 0x3fffe9d9, 0x6b2a23d9
165
166! __mt_constexp2fb:
167	.word	0x36900000, 0x36a00000, 0x36b00000, 0x36c00000
168	.word	0x36d00000, 0x36e00000, 0x36f00000, 0x37000000
169	.word	0x37100000, 0x37200000, 0x37300000, 0x37400000
170	.word	0x37500000, 0x37600000, 0x37700000, 0x37800000
171	.word	0x37900000, 0x37a00000, 0x37b00000, 0x37c00000
172	.word	0x37d00000, 0x37e00000, 0x37f00000, 0x38000000
173	.word	0x38100000, 0x38200000, 0x38300000, 0x38400000
174	.word	0x38500000, 0x38600000, 0x38700000, 0x38800000
175	.word	0x38900000, 0x38a00000, 0x38b00000, 0x38c00000
176	.word	0x38d00000, 0x38e00000, 0x38f00000, 0x39000000
177	.word	0x39100000, 0x39200000, 0x39300000, 0x39400000
178	.word	0x39500000, 0x39600000, 0x39700000, 0x39800000
179	.word	0x39900000, 0x39a00000, 0x39b00000, 0x39c00000
180	.word	0x39d00000, 0x39e00000, 0x39f00000, 0x3a000000
181	.word	0x3a100000, 0x3a200000, 0x3a300000, 0x3a400000
182	.word	0x3a500000, 0x3a600000, 0x3a700000, 0x3a800000
183	.word	0x3a900000, 0x3aa00000, 0x3ab00000, 0x3ac00000
184	.word	0x3ad00000, 0x3ae00000, 0x3af00000, 0x3b000000
185	.word	0x3b100000, 0x3b200000, 0x3b300000, 0x3b400000
186	.word	0x3b500000, 0x3b600000, 0x3b700000, 0x3b800000
187	.word	0x3b900000, 0x3ba00000, 0x3bb00000, 0x3bc00000
188	.word	0x3bd00000, 0x3be00000, 0x3bf00000, 0x3c000000
189	.word	0x3c100000, 0x3c200000, 0x3c300000, 0x3c400000
190	.word	0x3c500000, 0x3c600000, 0x3c700000, 0x3c800000
191	.word	0x3c900000, 0x3ca00000, 0x3cb00000, 0x3cc00000
192	.word	0x3cd00000, 0x3ce00000, 0x3cf00000, 0x3d000000
193	.word	0x3d100000, 0x3d200000, 0x3d300000, 0x3d400000
194	.word	0x3d500000, 0x3d600000, 0x3d700000, 0x3d800000
195	.word	0x3d900000, 0x3da00000, 0x3db00000, 0x3dc00000
196	.word	0x3dd00000, 0x3de00000, 0x3df00000, 0x3e000000
197	.word	0x3e100000, 0x3e200000, 0x3e300000, 0x3e400000
198	.word	0x3e500000, 0x3e600000, 0x3e700000, 0x3e800000
199	.word	0x3e900000, 0x3ea00000, 0x3eb00000, 0x3ec00000
200	.word	0x3ed00000, 0x3ee00000, 0x3ef00000, 0x3f000000
201	.word	0x3f100000, 0x3f200000, 0x3f300000, 0x3f400000
202	.word	0x3f500000, 0x3f600000, 0x3f700000, 0x3f800000
203	.word	0x3f900000, 0x3fa00000, 0x3fb00000, 0x3fc00000
204	.word	0x3fd00000, 0x3fe00000, 0x3ff00000, 0x40000000
205	.word	0x40100000, 0x40200000, 0x40300000, 0x40400000
206	.word	0x40500000, 0x40600000, 0x40700000, 0x40800000
207	.word	0x40900000, 0x40a00000, 0x40b00000, 0x40c00000
208	.word	0x40d00000, 0x40e00000, 0x40f00000, 0x41000000
209	.word	0x41100000, 0x41200000, 0x41300000, 0x41400000
210	.word	0x41500000, 0x41600000, 0x41700000, 0x41800000
211	.word	0x41900000, 0x41a00000, 0x41b00000, 0x41c00000
212	.word	0x41d00000, 0x41e00000, 0x41f00000, 0x42000000
213	.word	0x42100000, 0x42200000, 0x42300000, 0x42400000
214	.word	0x42500000, 0x42600000, 0x42700000, 0x42800000
215	.word	0x42900000, 0x42a00000, 0x42b00000, 0x42c00000
216	.word	0x42d00000, 0x42e00000, 0x42f00000, 0x43000000
217	.word	0x43100000, 0x43200000, 0x43300000, 0x43400000
218	.word	0x43500000, 0x43600000, 0x43700000, 0x43800000
219	.word	0x43900000, 0x43a00000, 0x43b00000, 0x43c00000
220	.word	0x43d00000, 0x43e00000, 0x43f00000, 0x44000000
221	.word	0x44100000, 0x44200000, 0x44300000, 0x44400000
222	.word	0x44500000, 0x44600000, 0x44700000, 0x44800000
223	.word	0x44900000, 0x44a00000, 0x44b00000, 0x44c00000
224	.word	0x44d00000, 0x44e00000, 0x44f00000, 0x45000000
225	.word	0x45100000, 0x45200000, 0x45300000, 0x45400000
226	.word	0x45500000, 0x45600000, 0x45700000, 0x45800000
227	.word	0x45900000, 0x45a00000, 0x45b00000, 0x45c00000
228	.word	0x45d00000, 0x45e00000, 0x45f00000, 0x46000000
229	.word	0x46100000, 0x46200000, 0x46300000, 0x46400000
230	.word	0x46500000, 0x46600000, 0x46700000, 0x46800000
231	.word	0x46900000, 0x46a00000, 0x46b00000, 0x46c00000
232	.word	0x46d00000, 0x46e00000, 0x46f00000, 0x47000000
233	.word	0x47100000, 0x47200000, 0x47300000, 0x47400000
234	.word	0x47500000, 0x47600000, 0x47700000, 0x47800000
235	.word	0x47900000, 0x47a00000, 0x47b00000, 0x47c00000
236	.word	0x47d00000, 0x47e00000, 0x47f00000, 0x00000000
237
238	.word	0,0,0,0
239	.word	0,0,0,0
240
241.CONST_TBL:
242! __mt_constlog4f:
243	.word	0x00000000, 0x00000000, 0x3e800000, 0x00000000
244	.word	0x4006fe50, 0xb6ef0851, 0x3e7fc07f, 0x01fc07f0
245	.word	0x4016e796, 0x85c2d22a, 0x3e7f81f8, 0x1f81f820
246	.word	0x40211cd1, 0xd5133413, 0x3e7f4465, 0x9e4a4271
247	.word	0x4026bad3, 0x758efd87, 0x3e7f07c1, 0xf07c1f08
248	.word	0x402c4dfa, 0xb90aab5f, 0x3e7ecc07, 0xb301ecc0
249	.word	0x4030eb38, 0x9fa29f9b, 0x3e7e9131, 0xabf0b767
250	.word	0x4033aa2f, 0xdd27f1c3, 0x3e7e573a, 0xc901e574
251	.word	0x403663f6, 0xfac91316, 0x3e7e1e1e, 0x1e1e1e1e
252	.word	0x403918a1, 0x6e46335b, 0x3e7de5d6, 0xe3f8868a
253	.word	0x403bc842, 0x40adabba, 0x3e7dae60, 0x76b981db
254	.word	0x403e72ec, 0x117fa5b2, 0x3e7d77b6, 0x54b82c34
255	.word	0x40408c58, 0x8cda79e4, 0x3e7d41d4, 0x1d41d41d
256	.word	0x4041dcd1, 0x97552b7b, 0x3e7d0cb5, 0x8f6ec074
257	.word	0x40432ae9, 0xe278ae1a, 0x3e7cd856, 0x89039b0b
258	.word	0x404476a9, 0xf983f74d, 0x3e7ca4b3, 0x055ee191
259	.word	0x4045c01a, 0x39fbd688, 0x3e7c71c7, 0x1c71c71c
260	.word	0x40470742, 0xd4ef027f, 0x3e7c3f8f, 0x01c3f8f0
261	.word	0x40484c2b, 0xd02f03b3, 0x3e7c0e07, 0x0381c0e0
262	.word	0x40498edd, 0x077e70df, 0x3e7bdd2b, 0x899406f7
263	.word	0x404acf5e, 0x2db4ec94, 0x3e7bacf9, 0x14c1bad0
264	.word	0x404c0db6, 0xcdd94dee, 0x3e7b7d6c, 0x3dda338b
265	.word	0x404d49ee, 0x4c325970, 0x3e7b4e81, 0xb4e81b4f
266	.word	0x404e840b, 0xe74e6a4d, 0x3e7b2036, 0x406c80d9
267	.word	0x404fbc16, 0xb902680a, 0x3e7af286, 0xbca1af28
268	.word	0x4050790a, 0xdbb03009, 0x3e7ac570, 0x1ac5701b
269	.word	0x40511307, 0xdad30b76, 0x3e7a98ef, 0x606a63be
270	.word	0x4051ac05, 0xb291f070, 0x3e7a6d01, 0xa6d01a6d
271	.word	0x40524407, 0xab0e073a, 0x3e7a41a4, 0x1a41a41a
272	.word	0x4052db10, 0xfc4d9aaf, 0x3e7a16d3, 0xf97a4b02
273	.word	0x40537124, 0xcea4cded, 0x3e79ec8e, 0x951033d9
274	.word	0x40540646, 0x3b1b0449, 0x3e79c2d1, 0x4ee4a102
275	.word	0x40549a78, 0x4bcd1b8b, 0x3e799999, 0x9999999a
276	.word	0x40552dbd, 0xfc4c96b3, 0x3e7970e4, 0xf80cb872
277	.word	0x4055c01a, 0x39fbd688, 0x3e7948b0, 0xfcd6e9e0
278	.word	0x4056518f, 0xe4677ba7, 0x3e7920fb, 0x49d0e229
279	.word	0x4056e221, 0xcd9d0cde, 0x3e78f9c1, 0x8f9c18fa
280	.word	0x405771d2, 0xba7efb3c, 0x3e78d301, 0x8d3018d3
281	.word	0x405800a5, 0x63161c54, 0x3e78acb9, 0x0f6bf3aa
282	.word	0x40588e9c, 0x72e0b226, 0x3e7886e5, 0xf0abb04a
283	.word	0x40591bba, 0x891f1709, 0x3e786186, 0x18618618
284	.word	0x4059a802, 0x391e232f, 0x3e783c97, 0x7ab2bedd
285	.word	0x405a3376, 0x0a7f6051, 0x3e781818, 0x18181818
286	.word	0x405abe18, 0x797f1f49, 0x3e77f405, 0xfd017f40
287	.word	0x405b47eb, 0xf73882a1, 0x3e77d05f, 0x417d05f4
288	.word	0x405bd0f2, 0xe9e79031, 0x3e77ad22, 0x08e0ecc3
289	.word	0x405c592f, 0xad295b56, 0x3e778a4c, 0x8178a4c8
290	.word	0x405ce0a4, 0x923a587d, 0x3e7767dc, 0xe434a9b1
291	.word	0x405d6753, 0xe032ea0f, 0x3e7745d1, 0x745d1746
292	.word	0x405ded3f, 0xd442364c, 0x3e772428, 0x7f46debc
293	.word	0x405e726a, 0xa1e754d2, 0x3e7702e0, 0x5c0b8170
294	.word	0x405ef6d6, 0x7328e220, 0x3e76e1f7, 0x6b4337c7
295	.word	0x405f7a85, 0x68cb06cf, 0x3e76c16c, 0x16c16c17
296	.word	0x405ffd79, 0x9a83ff9b, 0x3e76a13c, 0xd1537290
297	.word	0x40603fda, 0x8b97997f, 0x3e768168, 0x16816817
298	.word	0x4060809c, 0xf27f703d, 0x3e7661ec, 0x6a5122f9
299	.word	0x4060c105, 0x00d63aa6, 0x3e7642c8, 0x590b2164
300	.word	0x40610113, 0xb153c8ea, 0x3e7623fa, 0x77016240
301	.word	0x406140c9, 0xfaa1e544, 0x3e760581, 0x60581606
302	.word	0x40618028, 0xcf72976a, 0x3e75e75b, 0xb8d015e7
303	.word	0x4061bf31, 0x1e95d00e, 0x3e75c988, 0x2b931057
304	.word	0x4061fde3, 0xd30e8126, 0x3e75ac05, 0x6b015ac0
305	.word	0x40623c41, 0xd42727c8, 0x3e758ed2, 0x308158ed
306	.word	0x40627a4c, 0x0585cbf8, 0x3e7571ed, 0x3c506b3a
307	.word	0x4062b803, 0x473f7ad1, 0x3e755555, 0x55555555
308	.word	0x4062f568, 0x75eb3f26, 0x3e753909, 0x48f40feb
309	.word	0x4063327c, 0x6ab49ca7, 0x3e751d07, 0xeae2f815
310	.word	0x40636f3f, 0xfb6d9162, 0x3e750150, 0x15015015
311	.word	0x4063abb3, 0xfaa02167, 0x3e74e5e0, 0xa72f0539
312	.word	0x4063e7d9, 0x379f7016, 0x3e74cab8, 0x8725af6e
313	.word	0x406423b0, 0x7e986aa9, 0x3e74afd6, 0xa052bf5b
314	.word	0x40645f3a, 0x98a20739, 0x3e749539, 0xe3b2d067
315	.word	0x40649a78, 0x4bcd1b8b, 0x3e747ae1, 0x47ae147b
316	.word	0x4064d56a, 0x5b33cec4, 0x3e7460cb, 0xc7f5cf9a
317	.word	0x40651011, 0x8708a8f9, 0x3e7446f8, 0x6562d9fb
318	.word	0x40654a6e, 0x8ca5438e, 0x3e742d66, 0x25d51f87
319	.word	0x40658482, 0x26989d34, 0x3e741414, 0x14141414
320	.word	0x4065be4d, 0x0cb51435, 0x3e73fb01, 0x3fb013fb
321	.word	0x4065f7cf, 0xf41e09af, 0x3e73e22c, 0xbce4a902
322	.word	0x4066310b, 0x8f553048, 0x3e73c995, 0xa47babe7
323	.word	0x40666a00, 0x8e4788cc, 0x3e73b13b, 0x13b13b14
324	.word	0x4066a2af, 0x9e5a0f0a, 0x3e73991c, 0x2c187f63
325	.word	0x4066db19, 0x6a76194a, 0x3e738138, 0x13813814
326	.word	0x4067133e, 0x9b156c7c, 0x3e73698d, 0xf3de0748
327	.word	0x40674b1f, 0xd64e0754, 0x3e73521c, 0xfb2b78c1
328	.word	0x406782bd, 0xbfdda657, 0x3e733ae4, 0x5b57bcb2
329	.word	0x4067ba18, 0xf93502e4, 0x3e7323e3, 0x4a2b10bf
330	.word	0x4067f132, 0x2182cf16, 0x3e730d19, 0x0130d190
331	.word	0x40682809, 0xd5be7073, 0x3e72f684, 0xbda12f68
332	.word	0x40685ea0, 0xb0b27b26, 0x3e72e025, 0xc04b8097
333	.word	0x406894f7, 0x4b06ef8b, 0x3e72c9fb, 0x4d812ca0
334	.word	0x4068cb0e, 0x3b4b3bbe, 0x3e72b404, 0xad012b40
335	.word	0x406900e6, 0x160002cd, 0x3e729e41, 0x29e4129e
336	.word	0x4069367f, 0x6da0ab2f, 0x3e7288b0, 0x1288b013
337	.word	0x40696bda, 0xd2acb5f6, 0x3e727350, 0xb8812735
338	.word	0x4069a0f8, 0xd3b0e050, 0x3e725e22, 0x708092f1
339	.word	0x4069d5d9, 0xfd5010b3, 0x3e724924, 0x92492492
340	.word	0x406a0a7e, 0xda4c112d, 0x3e723456, 0x789abcdf
341	.word	0x406a3ee7, 0xf38e181f, 0x3e721fb7, 0x8121fb78
342	.word	0x406a7315, 0xd02f20c8, 0x3e720b47, 0x0c67c0d9
343	.word	0x406aa708, 0xf58014d3, 0x3e71f704, 0x7dc11f70
344	.word	0x406adac1, 0xe711c833, 0x3e71e2ef, 0x3b3fb874
345	.word	0x406b0e41, 0x26bcc86c, 0x3e71cf06, 0xada2811d
346	.word	0x406b4187, 0x34a9008c, 0x3e71bb4a, 0x4046ed29
347	.word	0x406b7494, 0x8f5532da, 0x3e71a7b9, 0x611a7b96
348	.word	0x406ba769, 0xb39e4964, 0x3e719453, 0x808ca29c
349	.word	0x406bda07, 0x1cc67e6e, 0x3e718118, 0x11811812
350	.word	0x406c0c6d, 0x447c5dd3, 0x3e716e06, 0x89427379
351	.word	0x406c3e9c, 0xa2e1a055, 0x3e715b1e, 0x5f75270d
352	.word	0x406c7095, 0xae91e1c7, 0x3e71485f, 0x0e0acd3b
353	.word	0x406ca258, 0xdca93316, 0x3e7135c8, 0x1135c811
354	.word	0x406cd3e6, 0xa0ca8907, 0x3e712358, 0xe75d3033
355	.word	0x406d053f, 0x6d260896, 0x3e711111, 0x11111111
356	.word	0x406d3663, 0xb27f31d5, 0x3e70fef0, 0x10fef011
357	.word	0x406d6753, 0xe032ea0f, 0x3e70ecf5, 0x6be69c90
358	.word	0x406d9810, 0x643d6615, 0x3e70db20, 0xa88f4696
359	.word	0x406dc899, 0xab3ff56c, 0x3e70c971, 0x4fbcda3b
360	.word	0x406df8f0, 0x2086af2c, 0x3e70b7e6, 0xec259dc8
361	.word	0x406e2914, 0x2e0e0140, 0x3e70a681, 0x0a6810a7
362	.word	0x406e5906, 0x3c8822ce, 0x3e70953f, 0x39010954
363	.word	0x406e88c6, 0xb3626a73, 0x3e708421, 0x08421084
364	.word	0x406eb855, 0xf8ca88fb, 0x3e707326, 0x0a47f7c6
365	.word	0x406ee7b4, 0x71b3a950, 0x3e70624d, 0xd2f1a9fc
366	.word	0x406f16e2, 0x81db7630, 0x3e705197, 0xf7d73404
367	.word	0x406f45e0, 0x8bcf0655, 0x3e704104, 0x10410410
368	.word	0x406f74ae, 0xf0efafae, 0x3e703091, 0xb51f5e1a
369	.word	0x406fa34e, 0x1177c233, 0x3e702040, 0x81020408
370	.word	0x406fd1be, 0x4c7f2af9, 0x3e701010, 0x10101010
371	.word	0x40700000, 0x00000000, 0x3e700000, 0x00000000
372
373! __mt_constexp2f:
374	.word	0x3ff00000, 0x00000000, 0x3ff00b1a, 0xfa5abcbf
375	.word	0x3ff0163d, 0xa9fb3335, 0x3ff02168, 0x143b0281
376	.word	0x3ff02c9a, 0x3e778061, 0x3ff037d4, 0x2e11bbcc
377	.word	0x3ff04315, 0xe86e7f85, 0x3ff04e5f, 0x72f654b1
378	.word	0x3ff059b0, 0xd3158574, 0x3ff0650a, 0x0e3c1f89
379	.word	0x3ff0706b, 0x29ddf6de, 0x3ff07bd4, 0x2b72a836
380	.word	0x3ff08745, 0x18759bc8, 0x3ff092bd, 0xf66607e0
381	.word	0x3ff09e3e, 0xcac6f383, 0x3ff0a9c7, 0x9b1f3919
382	.word	0x3fefb558, 0x6cf9890f, 0x3fefc0f1, 0x45e46c85
383	.word	0x3fefcc92, 0x2b7247f7, 0x3fefd83b, 0x23395dec
384	.word	0x3fefe3ec, 0x32d3d1a2, 0x3fefefa5, 0x5fdfa9c5
385	.word	0x3feffb66, 0xaffed31b, 0x3ff00730, 0x28d7233e
386	.word	0x3ff01301, 0xd0125b51, 0x3ff01edb, 0xab5e2ab6
387	.word	0x3ff02abd, 0xc06c31cc, 0x3ff036a8, 0x14f204ab
388	.word	0x3ff0429a, 0xaea92de0, 0x3ff04e95, 0x934f312e
389	.word	0x3ff05a98, 0xc8a58e51, 0x3ff066a4, 0x5471c3c2
390	.word	0x3fef72b8, 0x3c7d517b, 0x3fef7ed4, 0x8695bbc0
391	.word	0x3fef8af9, 0x388c8dea, 0x3fef9726, 0x58375d2f
392	.word	0x3fefa35b, 0xeb6fcb75, 0x3fefaf99, 0xf8138a1c
393	.word	0x3fefbbe0, 0x84045cd4, 0x3fefc82f, 0x95281c6b
394	.word	0x3fefd487, 0x3168b9aa, 0x3fefe0e7, 0x5eb44027
395	.word	0x3fefed50, 0x22fcd91d, 0x3feff9c1, 0x8438ce4d
396	.word	0x3ff0063b, 0x88628cd6, 0x3ff012be, 0x3578a819
397	.word	0x3ff01f49, 0x917ddc96, 0x3ff02bdd, 0xa27912d1
398	.word	0x3fef387a, 0x6e756238, 0x3fef451f, 0xfb82140a
399	.word	0x3fef51ce, 0x4fb2a63f, 0x3fef5e85, 0x711ece75
400	.word	0x3fef6b45, 0x65e27cdd, 0x3fef780e, 0x341ddf29
401	.word	0x3fef84df, 0xe1f56381, 0x3fef91ba, 0x7591bb70
402	.word	0x3fef9e9d, 0xf51fdee1, 0x3fefab8a, 0x66d10f13
403	.word	0x3fefb87f, 0xd0dad990, 0x3fefc57e, 0x39771b2f
404	.word	0x3fefd285, 0xa6e4030b, 0x3fefdf96, 0x1f641589
405	.word	0x3fefecaf, 0xa93e2f56, 0x3feff9d2, 0x4abd886b
406	.word	0x3fef06fe, 0x0a31b715, 0x3fef1432, 0xedeeb2fd
407	.word	0x3fef2170, 0xfc4cd831, 0x3fef2eb8, 0x3ba8ea32
408	.word	0x3fef3c08, 0xb26416ff, 0x3fef4962, 0x66e3fa2d
409	.word	0x3fef56c5, 0x5f929ff1, 0x3fef6431, 0xa2de883b
410	.word	0x3fef71a7, 0x373aa9cb, 0x3fef7f26, 0x231e754a
411	.word	0x3fef8cae, 0x6d05d866, 0x3fef9a40, 0x1b7140ef
412	.word	0x3fefa7db, 0x34e59ff7, 0x3fefb57f, 0xbfec6cf4
413	.word	0x3fefc32d, 0xc313a8e5, 0x3fefd0e5, 0x44ede173
414	.word	0x3feedea6, 0x4c123422, 0x3feeec70, 0xdf1c5175
415	.word	0x3feefa45, 0x04ac801c, 0x3fef0822, 0xc367a024
416	.word	0x3fef160a, 0x21f72e2a, 0x3fef23fb, 0x2709468a
417	.word	0x3fef31f5, 0xd950a897, 0x3fef3ffa, 0x3f84b9d4
418	.word	0x3fef4e08, 0x6061892d, 0x3fef5c20, 0x42a7d232
419	.word	0x3fef6a41, 0xed1d0057, 0x3fef786d, 0x668b3237
420	.word	0x3fef86a2, 0xb5c13cd0, 0x3fef94e1, 0xe192aed2
421	.word	0x3fefa32a, 0xf0d7d3de, 0x3fefb17d, 0xea6db7d7
422	.word	0x3feebfda, 0xd5362a27, 0x3feece41, 0xb817c114
423	.word	0x3feedcb2, 0x99fddd0d, 0x3feeeb2d, 0x81d8abff
424	.word	0x3feef9b2, 0x769d2ca7, 0x3fef0841, 0x7f4531ee
425	.word	0x3fef16da, 0xa2cf6642, 0x3fef257d, 0xe83f4eef
426	.word	0x3fef342b, 0x569d4f82, 0x3fef42e2, 0xf4f6ad27
427	.word	0x3fef51a4, 0xca5d920f, 0x3fef6070, 0xdde910d2
428	.word	0x3fef6f47, 0x36b527da, 0x3fef7e27, 0xdbe2c4cf
429	.word	0x3fef8d12, 0xd497c7fd, 0x3fef9c08, 0x27ff07cc
430	.word	0x3feeab07, 0xdd485429, 0x3feeba11, 0xfba87a03
431	.word	0x3feec926, 0x8a5946b7, 0x3feed845, 0x90998b93
432	.word	0x3feee76f, 0x15ad2148, 0x3feef6a3, 0x20dceb71
433	.word	0x3fef05e1, 0xb976dc09, 0x3fef152a, 0xe6cdf6f4
434	.word	0x3fef247e, 0xb03a5585, 0x3fef33dd, 0x1d1929fd
435	.word	0x3fef4346, 0x34ccc320, 0x3fef52b9, 0xfebc8fb7
436	.word	0x3fef6238, 0x82552225, 0x3fef71c1, 0xc70833f6
437	.word	0x3fef8155, 0xd44ca973, 0x3fef90f4, 0xb19e9538
438	.word	0x3feea09e, 0x667f3bcd, 0x3feeb052, 0xfa75173e
439	.word	0x3feec012, 0x750bdabf, 0x3feecfdc, 0xddd47645
440	.word	0x3feedfb2, 0x3c651a2f, 0x3feeef92, 0x98593ae5
441	.word	0x3feeff7d, 0xf9519484, 0x3fef0f74, 0x66f42e87
442	.word	0x3fef1f75, 0xe8ec5f74, 0x3fef2f82, 0x86ead08a
443	.word	0x3fef3f9a, 0x48a58174, 0x3fef4fbd, 0x35d7cbfd
444	.word	0x3fef5feb, 0x564267c9, 0x3fef7024, 0xb1ab6e09
445	.word	0x3fef8069, 0x4fde5d3f, 0x3fef90b9, 0x38ac1cf6
446	.word	0x3feea114, 0x73eb0187, 0x3feeb17b, 0x0976cfdb
447	.word	0x3feec1ed, 0x0130c132, 0x3feed26a, 0x62ff86f0
448	.word	0x3feee2f3, 0x36cf4e62, 0x3feef387, 0x8491c491
449	.word	0x3fef0427, 0x543e1a12, 0x3fef14d2, 0xadd106d9
450	.word	0x3fef2589, 0x994cce13, 0x3fef364c, 0x1eb941f7
451	.word	0x3fef471a, 0x4623c7ad, 0x3fef57f4, 0x179f5b21
452	.word	0x3fef68d9, 0x9b4492ed, 0x3fef79ca, 0xd931a436
453	.word	0x3fef8ac7, 0xd98a6699, 0x3fef9bd0, 0xa478580f
454	.word	0x3feeace5, 0x422aa0db, 0x3feebe05, 0xbad61778
455	.word	0x3feecf32, 0x16b5448c, 0x3feee06a, 0x5e0866d9
456	.word	0x3feef1ae, 0x99157736, 0x3fef02fe, 0xd0282c8a
457	.word	0x3fef145b, 0x0b91ffc6, 0x3fef25c3, 0x53aa2fe2
458	.word	0x3fef3737, 0xb0cdc5e5, 0x3fef48b8, 0x2b5f98e5
459	.word	0x3fef5a44, 0xcbc8520f, 0x3fef6bdd, 0x9a7670b3
460	.word	0x3fef7d82, 0x9fde4e50, 0x3fef8f33, 0xe47a22a2
461	.word	0x3fefa0f1, 0x70ca07ba, 0x3fefb2bb, 0x4d53fe0d
462	.word	0x3feec491, 0x82a3f090, 0x3feed674, 0x194bb8d5
463	.word	0x3feee863, 0x19e32323, 0x3feefa5e, 0x8d07f29e
464	.word	0x3fef0c66, 0x7b5de565, 0x3fef1e7a, 0xed8eb8bb
465	.word	0x3fef309b, 0xec4a2d33, 0x3fef42c9, 0x80460ad8
466	.word	0x3fef5503, 0xb23e255d, 0x3fef674a, 0x8af46052
467	.word	0x3fef799e, 0x1330b358, 0x3fef8bfe, 0x53c12e59
468	.word	0x3fef9e6b, 0x5579fdbf, 0x3fefb0e5, 0x21356eba
469	.word	0x3fefc36b, 0xbfd3f37a, 0x3fefd5ff, 0x3a3c2774
470	.word	0x3feee89f, 0x995ad3ad, 0x3feefb4c, 0xe622f2ff
471	.word	0x3fef0e07, 0x298db666, 0x3fef20ce, 0x6c9a8952
472	.word	0x3fef33a2, 0xb84f15fb, 0x3fef4684, 0x15b749b1
473	.word	0x3fef5972, 0x8de5593a, 0x3fef6c6e, 0x29f1c52a
474	.word	0x3fef7f76, 0xf2fb5e47, 0x3fef928c, 0xf22749e4
475	.word	0x3fefa5b0, 0x30a1064a, 0x3fefb8e0, 0xb79a6f1f
476	.word	0x3fefcc1e, 0x904bc1d2, 0x3fefdf69, 0xc3f3a207
477	.word	0x3feff2c2, 0x5bd71e09, 0x3ff00628, 0x6141b33d
478	.word	0x3fef199b, 0xdd85529c, 0x3fef2d1c, 0xd9fa652c
479	.word	0x3fef40ab, 0x5fffd07a, 0x3fef5447, 0x78fafb22
480	.word	0x3fef67f1, 0x2e57d14b, 0x3fef7ba8, 0x8988c933
481	.word	0x3fef8f6d, 0x9406e7b5, 0x3fefa340, 0x5751c4db
482	.word	0x3fefb720, 0xdcef9069, 0x3fefcb0f, 0x2e6d1675
483	.word	0x3fefdf0b, 0x555dc3fa, 0x3feff315, 0x5b5bab74
484	.word	0x3ff0072d, 0x4a07897c, 0x3ff01b53, 0x2b08c968
485	.word	0x3ff02f87, 0x080d89f2, 0x3ff043c8, 0xeacaa1d6
486	.word	0x3fef5818, 0xdcfba487, 0x3fef6c76, 0xe862e6d3
487	.word	0x3fef80e3, 0x16c98398, 0x3fef955d, 0x71ff6075
488	.word	0x3fefa9e6, 0x03db3285, 0x3fefbe7c, 0xd63a8315
489	.word	0x3fefd321, 0xf301b460, 0x3fefe7d5, 0x641c0658
490	.word	0x3feffc97, 0x337b9b5f, 0x3ff01167, 0x6b197d17
491	.word	0x3ff02646, 0x14f5a129, 0x3ff03b33, 0x3b16ee12
492	.word	0x3ff0502e, 0xe78b3ff6, 0x3ff06539, 0x24676d76
493	.word	0x3ff07a51, 0xfbc74c83, 0x3ff08f79, 0x77cdb740
494	.word	0x3fefa4af, 0xa2a490da, 0x3fefb9f4, 0x867cca6e
495	.word	0x3fefcf48, 0x2d8e67f1, 0x3fefe4aa, 0xa2188510
496	.word	0x3feffa1b, 0xee615a27, 0x3ff00f9c, 0x1cb6412a
497	.word	0x3ff0252b, 0x376bba97, 0x3ff03ac9, 0x48dd7274
498	.word	0x3ff05076, 0x5b6e4540, 0x3ff06632, 0x798844f8
499	.word	0x3ff07bfd, 0xad9cbe14, 0x3ff091d8, 0x02243c89
500	.word	0x3ff0a7c1, 0x819e90d8, 0x3ff0bdba, 0x3692d514
501	.word	0x3ff0d3c2, 0x2b8f71f1, 0x3ff0e9d9, 0x6b2a23d9
502
503	.word	0xc057150d, 0x5f6e1c54	! KA3 = -3.60659926599003171364e-01*256.0
504	.word	0x405ec71c, 0x2e92efda	! KA2 =  4.80902715189356683026e-01*256.0
505	.word	0xc0671547, 0x653cbec4	! KA1 = -7.21347520569871841065e-01*256.0
506	.word	0x40771547, 0x652af190	! KA0 =  1.44269504088069658645e+00*256.0
507	.word	0x3ecebfbe, 0x9d182250	! KB2 = 3.66556671660783833261e-06
508	.word	0x3f662e43, 0xe2528362	! KB1 = 2.70760782821392980564e-03
509	.word	0x40e00000, 0x00000000	! HTHRESH = 32768.0
510	.word	0xc0e2c000, 0x00000000	! LTHRESH = -38400.0 ; 0.0f
511	.word	0x3f800000, 0x00000000 	! 1.0f               ; free
512
513#define tmp_px		STACK_BIAS-48
514#define tmp_py		STACK_BIAS-40
515#define tmp_counter	STACK_BIAS-32
516#define tmp0		STACK_BIAS-28
517#define tmp1		STACK_BIAS-24
518#define tmp2		STACK_BIAS-20
519#define tmp3		STACK_BIAS-16
520#define tmp4		STACK_BIAS-12
521#define tmp5		STACK_BIAS-8
522#define tmp6		STACK_BIAS-4
523
524
525#define KA3		%f34
526#define KA2		%f36
527#define KA1		%f38
528#define KA0		%f40
529#define KB2		%f42
530#define KB1		%f44
531#define HTHRESHOLD	%f30
532#define LTHRESHOLD	%f32
533
534#define counter		%o7
535#define stridex		%i0
536#define stridey		%i4
537#define stridez		%l3
538
539#define CONST_0x8000	%l1
540#define MASK_0x007fffff	%l4
541#define MASK_0x7fffffff	%l5
542
543! sizeof temp storage - must be a multiple of 16 for V9
544#define tmps		0x30
545
546!--------------------------------------------------------------------
547!		!!!!!	vpowf algorithm	!!!!!
548!  uy = *(unsigned int*)py;
549!  ux = *(unsigned int*)px;
550!  ay = uy & 0x7fffffff;
551!  ax0 = ux & 0x7fffffff;
552!  sx = ux >> 31;
553!  yisint0 = 0;                /* Y - non-integer */
554!  if (ax0 >= 0x7f800000 || ay >= 0x7f800000) { /* |X| or |Y| = Inf,Nan */
555!    if (ax0 > 0x7f800000 || ay > 0x7f800000)   /* |X| or |Y| = Nan     */
556!      pz[0] = *px * *py;
557!      goto next;
558!    if (ay == 0x7f800000) { /* |Y| = Inf */
559!      float fy;
560!      if (ax0 == 0x3f800000) fy = *py - *py; /* +-1 ** +-Inf = NaN */
561!      else fy = ((ax0 < 0x3f800000) != (uy >> 31)) ? ZERO : *(float*) &ay;
562!      pz[0] = fy;
563!      goto next;
564!    }
565!    if (sx) {                               /* X = -Inf     */
566!      exp = ay >> 23;
567!      if (exp >= 0x97)                      /* |Y| >= 2^24  */
568!        yisint0 = 2;                      /* Y - even     */
569!      else {
570!        if (exp >= 0x7f) {                  /* |Y| >= 1     */
571!          i0 = ay >> ((0x7f + 23) - exp);
572!          if ((i0 << ((0x7f + 23) - exp)) == ay) yisint0 = 2 - (i0 & 1);
573!        }
574!      }
575!    }
576!    if (uy >> 31) ax0 = 0;
577!    ax0 += yisint0 << 31;
578!    pz[0] =  *(float*)&ax0;
579!    goto next;
580!  }
581!  exp0 = (ax0 >> 23) - 127;
582!  if ((int)ux < 0x00800000) {         /* X = denormal or negative */
583!    if ((int)ax0 < 0x00800000) {    /* X = denormal */
584!      *((float*) &ax0) = (float) (int)ax0;
585!      exp0 = (ax0 >> 23) - (127 + 149);
586!    }
587!    if ((int)ux <= 0) {                      /* X <= 0       */
588!      exp = ay >> 23;
589!      if (exp >= 0x97)                       /* |Y| >= 2^24  */
590!        yisint0 = 2;                       /* Y - even     */
591!      else {
592!        if (exp >= 0x7f) {                   /* |Y| >= 1     */
593!          i0 = ay >> ((0x7f + 23) - exp);
594!          if ((i0 << ((0x7f + 23) - exp)) == ay) yisint0 = 2 - (i0 & 1);
595!        }
596!      }
597!      if (ax0 == 0) { /* pow(0,Y) */
598!        float fy;
599!        fy = (uy >> 31) ? ONE / ZERO : ZERO;
600!        if (sx & yisint0) fy = -fy;
601!        pz[0] = fy;
602!        goto next;
603!      }
604!      if (yisint0 == 0) { /* pow(neg,non-integer) */
605!        pz[0] = ZERO / ZERO;  /* NaN */
606!        goto next;
607!      }
608!    }
609!  }
610!
611!  ax0 = *px;
612!  exp0 = ax0 & 0x7fffffff;
613!  exp0 >>= 23;
614!  exp0 -= 127;
615!  exp0 <<= 8;
616!  ax0 &= 0x007fffff;
617!  i0 = ax0 + 0x8000;
618!  i0 &= 0xffff0000;
619!  ind0 = i0 >> 12;
620!  ind0 &= -8;
621!  i0 = ax0 - i0;
622!  dtmp0 = (double) i0;
623!  dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
624!  y0 =  dtmp0 * dtmp1;
625!  dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
626!  dtmp1 = (double) exp0;
627!  yy0 = dtmp0 + dtmp1;
628!  dtmp0 = KA3 * y0;
629!  dtmp0 += KA2;
630!  dtmp0 *= y0;
631!  dtmp0 += KA1;
632!  dtmp0 *= y0;
633!  dtmp0 += KA0;
634!  dtmp0 *= y0;
635!  yy0 += dtmp0;
636!  ftmp0 = *py0;
637!  dtmp0 = (double)ftmp0;
638!  yy0 *= dtmp0;
639!  if (yy0 >= HTHRESH)
640!    yy0 = HTHRESH;
641!  if (yy0 <= LTHRESH)
642!    yy0 = LTHRESH;
643!  ind0 = (int) yy0;
644!  ((int*)&dtmp1)[0] = ind0;
645!  ((int*)&dtmp1)[1] = 0;
646!  dtmp1 = vis_fpackfix(dtmp1);
647!  dtmp0 = (double)ind0;
648!  y0 = yy0 - dtmp0;
649!  dtmp0 = KB2 * y0;
650!  dtmp0 += KB1;
651!  yy0 = dtmp0 * y0;
652!  ind0 &= 255;
653!  ind0 <<= 3;
654!  di0 = *(double*)((char*)__mt_constexp2f + ind0);
655!  di0 = vis_fpadd32(di0,dtmp1);
656!  yy0 *= di0;
657!  yy0 += di0;
658!  ftmp0 = (float)yy0;
659!  *pz0 = ftmp0;
660!--------------------------------------------------------------------
661!		!!!!!	vpowf algorithm,stridex=0	!!!!!
662!
663!  ax = ax0 = *px;
664!  exp0 = ax0 & 0x7fffffff;
665!  exp0 >>= 23;
666!  exp0 -= 127;
667!  exp0 <<= 8;
668!  ax0 &= 0x007fffff;
669!  i0 = ax0 + 0x8000;
670!  i0 &= 0xffff0000;
671!  ind0 = i0 >> 12;
672!  ind0 &= -8;
673!  i0 = ax0 - i0;
674!  dtmp0 = (double) i0;
675!  dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
676!  y0 =  dtmp0 * dtmp1;
677!  dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
678!  dtmp1 = (double) exp0;
679!  yy0 = dtmp0 + dtmp1;
680!  dtmp0 = KA3 * y0;
681!  dtmp0 += KA2;
682!  dtmp0 *= y0;
683!  dtmp0 += KA1;
684!  dtmp0 *= y0;
685!  dtmp0 += KA0;
686!  dtmp0 *= y0;
687!  yy = yy0 + dtmp0;
688!
689!  uy = ((int*)py)[0];
690!  ay = uy & 0x7fffffff;
691!  if (ay >= 0x7f800000) {       /* |Y| = Inf or Nan */
692!    float fy;
693!   if (ay > 0x7f800000) fy = *py + *py;  /* |Y| = Nan     */
694!    else fy = ((ax < 0x3f800000) != (uy >> 31)) ? ZERO : *(float*)&ay;
695!    pz[0] = fy;
696!    goto next;
697!  }
698!
699!
700!  ftmp0 = py[0];
701!  dtmp0 = (double)ftmp0;
702!  yy0 = dtmp0 * yy;
703!  if (yy0 >= HTHRESH)
704!  if (yy0 <= LTHRESH)
705!  yy0 = HTHRESH;
706!  yy0 = LTHRESH;
707!  ii0 = (int) yy0;
708!  dtmp0 = (double)ii0;
709!  i0 = ii0 >> 5;
710!  i0 &= -8;
711!  di0 = ((double*)((char*)(__mt_constexp2fb + 150) + i0))[0];
712!  y0 = yy0 - dtmp0;
713!  dtmp0 = KB2 * y0;
714!  dtmp0 += KB1;
715!  yy0 = dtmp0 * y0;
716!  ii0 &= 255;
717!  ii0 <<= 3;
718!  dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
719!  di0 *= dtmp0;
720!  dtmp0 = yy0 * di0;
721!  dtmp0 += di0;
722!  ftmp0 = (float)dtmp0;
723!  pz[0] = ftmp0;
724!--------------------------------------------------------------------
725	ENTRY(__vpowf)
726	save	%sp,-SA(MINFRAME)-tmps,%sp
727	PIC_SETUP(l7)
728	PIC_SET(l7,.CONST_TBL,l2)
729	wr	%g0,0x60,%gsr
730
731#ifdef __sparcv9
732	ldx	[%fp+STACK_BIAS+176],stridez
733#else
734	ld	[%fp+STACK_BIAS+92],stridez
735#endif
736
737	ld	[%i1],%o3
738	add	%l2,2064,%l0
739	st	%i0,[%fp+tmp_counter]
740	add	%l0,2048,%l6
741	ldd	[%l6],KA3
742	ldd	[%l6+8],KA2
743	sll	stridey,2,stridey
744	ldd	[%l6+16],KA1
745	sll	stridez,2,stridez
746	ldd	[%l6+24],KA0
747	sll	%i2,2,stridex
748	ldd	[%l6+32],KB2
749	sethi	%hi(0x7ffffc00),MASK_0x7fffffff
750	fzero	%f2
751	ldd	[%l6+40],KB1
752	add	MASK_0x7fffffff,1023,MASK_0x7fffffff
753	fzero	%f10
754	ldd	[%l6+48],HTHRESHOLD
755	sethi	%hi(0x7ffc00),MASK_0x007fffff
756	fzero	%f20
757	ldd	[%l6+56],LTHRESHOLD
758	sethi	%hi(0x8000),CONST_0x8000
759	add	MASK_0x007fffff,1023,MASK_0x007fffff
760
761	cmp	stridex,0
762	bne,pt	%icc,.common_case
763	sethi	%hi(0x00800000),%l6
764
765	cmp	%o3,%l6
766	bl,pn	%icc,.common_case
767	sethi	%hi(0x7f800000),%o1
768
769	cmp	%o3,%o1
770	bge,pn	%icc,.common_case
771	sethi	%hi(0x3f800000),%l6
772
773	cmp	%o3,%l6
774	bne,pt	%icc,.stridex_zero
775	nop
776
777.common_case:
778	stx	%i1,[%fp+tmp_px]
779	stx	%i3,[%fp+tmp_py]
780.begin:
781	ld	[%fp+tmp_counter],counter
782	ldx	[%fp+tmp_px],%o2
783	ldx	[%fp+tmp_py],%i2
784	st	%g0,[%fp+tmp_counter]
785.begin1:
786	cmp	counter,0
787	ble,pn	%icc,.exit
788	lda	[%o2]0x82,%i1		! (Y0_2) ax0 = *px;
789
790	lda	[%i2]0x82,%l7
791	sethi	%hi(0xffff0000),%l6
792	sethi	%hi(0x7f800000),%o5
793
794	and	%i1,MASK_0x7fffffff,%i3	! (Y0_2) exp0 = ax0 & 0x7fffffff;
795	and	%i1,MASK_0x007fffff,%g5	! (Y0_2) ax0 &= 0x007fffff;
796
797	cmp	%i3,%o5			! (Y0_2) ax0 ? 0x7f800000
798	bge,pn	%icc,.spec1		! (Y0_2) if( ax0 >= 0x7f800000 )
799	and	%l7,MASK_0x7fffffff,%o4
800
801	cmp	%o4,%o5			! (Y0_2) ay0 ? 0x7f800000
802	bge,pn	%icc,.spec1		! (Y0_2) if( ay0 >= 0x7f800000 )
803	nop
804
805	cmp	%i1,MASK_0x007fffff	! (Y0_2) ux0 ? 0x800000
806	ble,pn	%icc,.spec2		! (Y0_2) if(ux0 < 0x800000)
807	srl	%i3,23,%o3		! (Y0_2) exp0 >>= 23;
808
809	sub	%o3,127,%o3		! (Y0_2) exp0 -= 127;
810
811	add	%g5,CONST_0x8000,%i3	! (Y0_2) i0 = ax0 + 0x8000;
812
813	sll	%o3,8,%o4		! (Y0_2) exp0 <<= 8;
814	and	%i3,%l6,%i3		! (Y0_2) i0 &= 0xffff0000;
815	st	%o4,[%fp+tmp3]		! (Y0_2) STORE exp0
816
817	sub	%g5,%i3,%o4		! (Y0_2) i0 = ax0 - i0;
818	st	%o4,[%fp+tmp2]		! (Y0_2) STORE i0
819	add	%o2,stridex,%o2		! px += stridex
820
821	sra	%i3,12,%o0		! (Y0_2) ind0 = i0 >> 12;
822	lda	[%o2]0x82,%o3		! (Y1_2) ax0 = *px;
823
824	and	%o0,-8,%g5		! (Y0_2) ind0 &= -8;
825	ld	[%fp+tmp2],%f14		! (Y0_2) dtmp0 = (double) i0;
826
827	and	%o3,MASK_0x7fffffff,%i3	! (Y1_2) exp0 = ax0 & 0x7fffffff;
828	and	%o3,MASK_0x007fffff,%o0	! (Y1_2) ax0 &= 0x007fffff;
829
830	cmp	%i3,%o5			! (Y1_2) ax0 ? 0x7f800000
831	add	%l2,%g5,%g1		! (Y0_2) (char*)__mt_constlog4f + ind0
832
833	srl	%i3,23,%i3		! (Y1_2) exp0 >>= 23;
834	add	%o0,CONST_0x8000,%i1	! (Y1_2) i0 = ax0 + 0x8000;
835
836	ldd	[%g1+8],%f48		! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
837	sub	%i3,127,%i3		! (Y1_2) exp0 -= 127;
838	fitod	%f14,%f60		! (Y0_2) dtmp0 = (double) i0;
839
840	sll	%i3,8,%i3		! (Y1_2) exp0 <<= 8;
841	and	%i1,%l6,%i1		! (Y1_2) i0 &= 0xffff0000;
842	st	%i3,[%fp+tmp4]		! (Y1_2) STORE exp0
843
844	sub	%o0,%i1,%o0		! (Y1_2) i0 = ax0 - i0;
845	st	%o0,[%fp+tmp5]		! (Y1_2) STORE i0
846	bge,pn 	%icc,.update0		! (Y1_2) if(ax0 >= 0x7f800000)
847	nop
848.cont0:
849	cmp	%o3,MASK_0x007fffff	! (Y1_2) ux0 ? 0x800000
850
851	fmuld	%f60,%f48,%f48		! (Y0_2) y0 =  dtmp0 * dtmp1;
852	ble,pn 	%icc,.update1		! (Y1_2) if(ux0 < 0x800000)
853	nop
854.cont1:
855	fmuld	KA3,%f48,%f62		! (Y0_2) dtmp0 = KA3 * y0;
856
857	faddd	%f62,KA2,%f22		! (Y0_2) dtmp0 += KA2;
858
859	sra	%i1,12,%o1		! (Y1_2) ind0 = i0 >> 12;
860	add	%o2,stridex,%i3		! px += stridex
861	lda	[stridex+%o2]0x82,%g1	! (Y2_2) ax0 = *px;
862
863	and	%o1,-8,%o0		! (Y1_2) ind0 &= -8;
864	ld	[%fp+tmp5],%f12		! (Y1_2) LOAD i0
865
866	and	%g1,MASK_0x7fffffff,%i1	! (Y2_2) exp0 = ax0 & 0x7fffffff;
867	and	%g1,MASK_0x007fffff,%o2	! (Y2_2) ax0 &= 0x007fffff;
868	lda	[%i2]0x82,%f0		! (Y0_2) ftmp0 = *py0;
869
870	srl	%i1,23,%o3		! (Y2_2) exp0 >>= 23;
871	cmp	%i1,%o5			! (Y2_2) ax0 ? 0x7f800000
872
873	fmuld	%f22,%f48,%f26 		! (Y0_2) dtmp0 *= y0;
874	add	%l2,%o0,%i1		! (Y1_2) (char*)__mt_constlog4f + ind0
875	sub	%o3,127,%l7		! (Y2_2) exp0 -= 127;
876
877	add	%o2,CONST_0x8000,%o1	! (Y2_2) i0 = ax0 + 0x8000;
878	ldd	[%i1+8],%f50		! (Y1_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
879	fitod	%f12,%f28		! (Y1_2) dtmp0 = (double) i0;
880
881	sll	%l7,8,%l7		! (Y2_2) exp0 <<= 8;
882	and	%o1,%l6,%o1		! (Y2_2) i0 &= 0xffff0000;
883	st	%l7,[%fp+tmp6]		! (Y2_2) STORE exp0
884
885	sub	%o2,%o1,%i1		! (Y2_2) i0 = ax0 - i0;
886	st	%i1,[%fp+tmp2]		! (Y2_2) STORE i0
887	bge,pn	%icc,.update2		! (Y2_2) if(ax0 >= 0x7f800000)
888	nop
889.cont2:
890	cmp	%g1,MASK_0x007fffff	! (Y2_2) ux0 ? 0x800000
891
892	fmuld	%f28,%f50,%f46		! (Y1_2) y0 =  dtmp0 * dtmp1;
893	ble,pn	%icc,.update3		! (Y2_2) if(ux0 < 0x800000)
894	faddd	%f26,KA1,%f50		! (Y0_2) dtmp0 += KA1;
895.cont3:
896	ld	[%fp+tmp3],%f4		! (Y0_2) dtmp1 = (double) exp0;
897
898	fstod	%f0,%f24		! (Y0_2) dtmp0 = (double)ftmp0;
899
900	fmuld	KA3,%f46,%f28		! (Y1_1) dtmp0 = KA3 * y0;
901
902	fitod	%f4,%f26		! (Y0_1) dtmp1 = (double) exp0;
903
904	fmuld	%f50,%f48,%f50		! (Y0_1) dtmp0 *= y0;
905
906	faddd	%f28,KA2,%f28		! (Y1_1) dtmp0 += KA2;
907
908	ldd	[%l2+%g5],%f60		! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
909	add	%i3,stridex,%o2		! px += stridex
910
911	lda	[%o2]0x82,%i1		! (Y0_2) ax0 = *px;
912	sra	%o1,12,%g5		! (Y2_1) ind0 = i0 >> 12;
913
914	faddd	%f50,KA0,%f58		! (Y0_1) dtmp0 += KA0;
915	and	%g5,-8,%o1		! (Y2_1) ind0 &= -8;
916	ld	[%fp+tmp2],%f6		! (Y2_1) dtmp0 = (double) i0;
917
918	and	%i1,MASK_0x7fffffff,%i3	! (Y0_2) exp0 = ax0 & 0x7fffffff;
919	and	%i1,MASK_0x007fffff,%g5	! (Y0_2) ax0 &= 0x007fffff;
920
921	srl	%i3,23,%o3		! (Y0_2) exp0 >>= 23;
922	add	%l2,%o1,%g1		! (Y2_1) (char*)__mt_constlog4f + ind0
923	faddd	%f60,%f26,%f26		! (Y0_1) yy0 = dtmp0 + dtmp1;
924
925	fmuld	%f28,%f46,%f50		! (Y1_1) dtmp0 *= y0;
926	sub	%o3,127,%o3		! (Y0_2) exp0 -= 127;
927	cmp	%i3,%o5			! (Y0_2) ax0 ? 0x7f800000
928
929	fmuld	%f58,%f48,%f48		! (Y0_1) dtmp0 *= y0;
930	add	%g5,CONST_0x8000,%i3	! (Y0_2) i0 = ax0 + 0x8000;
931	ldd	[%g1+8],%f58		! (Y2_1) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
932	fitod	%f6,%f54		! (Y2_1) dtmp0 = (double) i0;
933
934	sll	%o3,8,%o4		! (Y0_2) exp0 <<= 8;
935	and	%i3,%l6,%i3		! (Y0_2) i0 &= 0xffff0000;
936	st	%o4,[%fp+tmp3]		! (Y0_2) STORE exp0
937
938	sub	%g5,%i3,%o4		! (Y0_2) i0 = ax0 - i0;
939	st	%o4,[%fp+tmp2]		! (Y0_2) STORE i0
940	bge,pn 	%icc,.update4		! (Y0_2) if( ax0 >= 0x7f800000 )
941	nop
942.cont4:
943	lda	[stridey+%i2]0x82,%g1	! (Y1_1) ay0 = *(unsigned*)py0
944	add	%i2,stridey,%o4		! py += stridey
945	cmp	%i1,MASK_0x007fffff	! (Y0_2) ux0 ? 0x800000
946
947	fmuld	%f54,%f58,%f28		! (Y2_1) y0 =  dtmp0 * dtmp1;
948	lda	[stridey+%i2]0x82,%f2	! (Y1_1) ftmp0 = *py0;
949	ble,pn 	%icc,.update5		! (Y0_2) if(ux0 < 0x800000)
950	faddd	%f50,KA1,%f54		! (Y1_1) dtmp0 += KA1;
951.cont5:
952	and	%g1,MASK_0x7fffffff,%g1	! (Y1_1) ay0 &= 0x7fffffff;
953	ld	[%fp+tmp4],%f1		! (Y1_1) LOAD exp0
954	faddd	%f26,%f48,%f58		! (Y0_1) yy0 += dtmp0;
955
956	cmp	%g1,%o5			! (Y1_1) ay0 ? 0x7f800000
957	bge,pn 	%icc,.update6		! (Y1_1) if(ay0 >= 0x7f800000)
958	nop
959.cont6:
960	fmuld	KA3,%f28,%f62		! (Y2_1) dtmp0 = KA3 * y0;
961	fstod	%f2,%f22		! (Y1_1) dtmp0 = (double)ftmp0;
962
963	fmuld	%f24,%f58,%f58		! (Y0_1) yy0 *= dtmp0;
964
965	fitod	%f1,%f48		! (Y1_1) dtmp1 = (double) exp0;
966
967	fmuld	%f54,%f46,%f54		! (Y1_1) dtmp0 *= y0;
968
969	faddd	%f62,KA2,%f26		! (Y2_1) dtmp0 += KA2;
970
971	add	%o2,stridex,%o2		! px += stridex
972	ldd	[%l2+%o0],%f60		! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
973	fcmped	%fcc0,HTHRESHOLD,%f58	! (Y0_1) if (yy0 >= HTHRESH)
974
975	sra	%i3,12,%o0		! (Y0_2) ind0 = i0 >> 12;
976	lda	[%o2]0x82,%o3		! (Y1_2) ax0 = *px;
977
978	faddd	%f54,KA0,%f56		! (Y1_1) dtmp0 += KA0;
979	and	%o0,-8,%g5		! (Y0_2) ind0 &= -8;
980	ld	[%fp+tmp2],%f14		! (Y0_2) dtmp0 = (double) i0;
981
982	and	%o3,MASK_0x7fffffff,%i3	! (Y1_2) exp0 = ax0 & 0x7fffffff;
983	and	%o3,MASK_0x007fffff,%o0	! (Y1_2) ax0 &= 0x007fffff;
984
985	cmp	%i3,%o5			! (Y1_2) ax0 ? 0x7f800000
986	add	%l2,%g5,%g1		! (Y0_2) (char*)__mt_constlog4f + ind0
987	faddd	%f60,%f48,%f12		! (Y1_1) yy0 = dtmp0 + dtmp1;
988
989	fmuld	%f26,%f28,%f50		! (Y2_1) dtmp0 *= y0;
990	srl	%i3,23,%i3		! (Y1_2) exp0 >>= 23;
991	add	%o0,CONST_0x8000,%i1	! (Y1_2) i0 = ax0 + 0x8000;
992	fcmped	%fcc1,LTHRESHOLD,%f58	! (Y0_1) if (yy0 <= LTHRESH)
993
994	fmuld	%f56,%f46,%f46		! (Y1_1) dtmp0 *= y0;
995	ldd	[%g1+8],%f48		! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
996	sub	%i3,127,%i3		! (Y1_2) exp0 -= 127;
997	fitod	%f14,%f60		! (Y0_2) dtmp0 = (double) i0;
998
999	sll	%i3,8,%i2		! (Y1_2) exp0 <<= 8;
1000	and	%i1,%l6,%i1		! (Y1_2) i0 &= 0xffff0000;
1001	st	%i2,[%fp+tmp4]		! (Y1_2) STORE exp0
1002
1003	sub	%o0,%i1,%o0		! (Y1_2) i0 = ax0 - i0;
1004	st	%o0,[%fp+tmp5]		! (Y1_2) STORE i0
1005	bge,pn 	%icc,.update7		! (Y1_2) if(ax0 >= 0x7f800000)
1006	nop
1007.cont7:
1008	lda	[stridey+%o4]0x82,%i3 	! Y(2_1) ay0 = *py0
1009	cmp	%o3,MASK_0x007fffff	! (Y1_2) ux0 ? 0x800000
1010	add	%o4,stridey,%i2		! py += stridey;
1011	fmovdl	%fcc0,HTHRESHOLD,%f58	! (Y0_1) yy0 = HTHRESH;
1012
1013	fmuld	%f60,%f48,%f48		! (Y0_2) y0 =  dtmp0 * dtmp1;
1014	lda	[stridey+%o4]0x82,%f16	! (Y2_1) ftmp0 = *py0;
1015	ble,pn 	%icc,.update8		! (Y1_2) if(ux0 < 0x800000)
1016	faddd	%f50,KA1,%f52		! (Y2_1) dtmp0 += KA1;
1017.cont8:
1018	and	%i3,MASK_0x7fffffff,%i3	! (Y2_1) ay0 &= 0x7fffffff
1019	ld	[%fp+tmp6],%f17		! (Y2_1) dtmp1 = (double) exp0;
1020	faddd	%f12,%f46,%f60		! (Y1_1) yy0 += dtmp0;
1021
1022	cmp	%i3,%o5			! (Y2_1) ay0 ? 0x7f800000
1023	bge,pn 	%icc,.update9		! (Y2_1) if(ay0 >= 0x7f800000)
1024	nop
1025
1026.cont9:
1027	fmovdg	%fcc1,LTHRESHOLD,%f58	! (Y0_1) yy0 = LTHRESH;
1028
1029	fmuld	KA3,%f48,%f62		! (Y0_2) dtmp0 = KA3 * y0;
1030	fstod	%f16,%f54		! (Y2_1) dtmp0 = (double)ftmp0;
1031
1032	fmuld	%f22,%f60,%f56		! (Y1_1) yy0 *= dtmp0;
1033
1034	fitod	%f17,%f24		! (Y2_1) dtmp1 = (double) exp0;
1035
1036	fmuld	%f52,%f28,%f52		! (Y2_1) dtmp0 *= y0;
1037	fdtoi	%f58,%f10		! (Y0_1) ind0 = (int) yy0;
1038
1039	st	%f10,[%fp+tmp0]		! (Y0_1) STORE ind0
1040	faddd	%f62,KA2,%f22		! (Y0_2) dtmp0 += KA2;
1041
1042	fcmped	%fcc0,HTHRESHOLD,%f56	! (Y1_1) if (yy0 >= HTHRESH)
1043	ldd	[%l2+%o1],%f60		! (Y2_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1044
1045	sra	%i1,12,%o1		! (Y1_2) ind0 = i0 >> 12;
1046	add	%o2,stridex,%i3		! px += stridex
1047	lda	[stridex+%o2]0x82,%g1	! (Y2_2) ax0 = *px;
1048
1049	and	%o1,-8,%o0		! (Y1_2) ind0 &= -8;
1050	add	%i2,stridey,%i2		! py += stridey
1051	ld	[%fp+tmp5],%f12		! (Y1_2) LOAD i0
1052	faddd	%f52,KA0,%f4		! (Y2_1) dtmp0 += KA0;
1053
1054	and	%g1,MASK_0x7fffffff,%i1	! (Y2_2) exp0 = ax0 & 0x7fffffff;
1055	and	%g1,MASK_0x007fffff,%o2	! (Y2_2) ax0 &= 0x007fffff;
1056	lda	[%i2]0x82,%f0		! (Y0_2) ftmp0 = *py0;
1057	fitod	%f10,%f52		! (Y0_1) dtmp0 = (double)ind0;
1058
1059	srl	%i1,23,%o3		! (Y2_2) exp0 >>= 23;
1060	cmp	%i1,%o5			! (Y2_2) ax0 ? 0x7f800000
1061	faddd	%f60,%f24,%f18		! (Y2_1) yy0 = dtmp0 + dtmp1;
1062
1063	fmuld	%f22,%f48,%f26		! (Y0_2) dtmp0 *= y0;
1064	add	%l2,%o0,%i1		! (Y1_2) (char*)__mt_constlog4f + ind0
1065	sub	%o3,127,%l7		! (Y2_2) exp0 -= 127;
1066	fcmped	%fcc1,LTHRESHOLD,%f56	! (Y1_1) if (yy0 <= LTHRESH)
1067
1068	fmuld	%f4,%f28,%f24		! (Y2_1) dtmp0 *= y0;
1069	add	%o2,CONST_0x8000,%o1	! (Y2_2) i0 = ax0 + 0x8000;
1070	ldd	[%i1+8],%f50		! (Y1_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
1071	fitod	%f12,%f28		! (Y1_2) dtmp0 = (double) i0;
1072
1073	sll	%l7,8,%l7		! (Y2_2) exp0 <<= 8;
1074	and	%o1,%l6,%o1		! (Y2_2) i0 &= 0xffff0000;
1075	st	%l7,[%fp+tmp6]		! (Y2_2) STORE exp0
1076	fsubd	%f58,%f52,%f60		! (Y0_1) y0 = yy0 - dtmp0;
1077
1078
1079	sub	%o2,%o1,%i1		! (Y2_2) i0 = ax0 - i0;
1080	st	%i1,[%fp+tmp2]		! (Y2_2) STORE i0
1081	bge,pn	%icc,.update10		! (Y2_2) if(ax0 >= 0x7f800000)
1082	nop
1083.cont10:
1084	lda	[%i2]0x82,%o2		! (Y0_2) ay0 = *(int*)py0;
1085	cmp	%g1,MASK_0x007fffff	! (Y2_2) ux0 ? 0x800000
1086	fmovdl	%fcc0,HTHRESHOLD,%f56	! (Y1_1) yy0 = HTHRESH;
1087
1088	fmuld	%f28,%f50,%f46		! (Y1_2) y0 =  dtmp0 * dtmp1;
1089	ble,pn	%icc,.update11		! (Y2_2) if(ux0 < 0x800000)
1090	faddd	%f26,KA1,%f50		! (Y0_2) dtmp0 += KA1;
1091.cont11:
1092	fmuld	KB2,%f60,%f62		! (Y0_1) dtmp0 = KB2 * y0;
1093	and	%o2,MASK_0x7fffffff,%o2	! (Y0_2) ay0 &= 0x7fffffff
1094	ld	[%fp+tmp3],%f4		! (Y0_2) dtmp1 = (double) exp0;
1095	faddd	%f18,%f24,%f52		! (Y2_1) yy0 += dtmp0;
1096
1097	ld	[%fp+tmp0],%g1		! (Y0_1) LAOD ind0
1098	cmp	%o2,%o5			! (Y0_2) ay0 ? 0x7f800000
1099	bge,pn	%icc,.update12		! (Y0_2) if( ay0 >= 0x7f800000)
1100	nop
1101.cont12:
1102	fstod	%f0,%f24		! (Y0_2) dtmp0 = (double)ftmp0;
1103
1104	cmp	counter,6		! counter
1105	bl,pn	%icc,.tail
1106	sub	%i5,stridez,%o4
1107
1108	ba	.main_loop
1109	nop
1110
1111	.align	16
1112.main_loop:
1113	fmuld	KA3,%f46,%f28		! (Y1_1) dtmp0 = KA3 * y0;
1114	and	%g1,255,%o2		! (Y0_0) ind0 &= 255;
1115	sub	counter,3,counter	! counter
1116	fmovdg	%fcc1,LTHRESHOLD,%f56	! (Y1_0) yy0 = LTHRESH;
1117
1118	fmuld	%f54,%f52,%f18		! (Y2_0) yy0 *= dtmp0;
1119	sll	%o2,3,%i1		! (Y0_0) ind0 <<= 3;
1120	add	%o4,stridez,%l7     	! pz += stridez
1121	faddd	%f62,KB1,%f62		! (Y0_0) dtmp0 += KB1;
1122
1123	fpackfix	%f10,%f10	! (Y0_0) dtmp1 = vis_fpackfix(dtmp1);
1124	fitod	%f4,%f26		! (Y0_1) dtmp1 = (double) exp0;
1125	ldd	[%l0+%i1],%f58		! (Y0_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1126
1127	fmuld	%f50,%f48,%f50		! (Y0_1) dtmp0 *= y0;
1128	fdtoi	%f56,%f20		! (Y1_0) ind0 = (int) yy0;
1129	st	%f20,[%fp+tmp1]		! (Y1_0) STORE ind0
1130
1131	faddd	%f28,KA2,%f28		! (Y1_1) dtmp0 += KA2;
1132
1133	fmuld	%f62,%f60,%f62		! (Y0_0) yy0 = dtmp0 * y0;
1134	ldd	[%l2+%g5],%f60		! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1135	add	%i3,stridex,%o2		! px += stridex
1136	fcmped	%fcc0,HTHRESHOLD,%f18	! (Y2_0) if (yy0 >= HTHRESH)
1137
1138	lda	[%o2]0x82,%i1		! (Y0_2) ax0 = *px;
1139	sra	%o1,12,%g5		! (Y2_1) ind0 = i0 >> 12;
1140	fpadd32	%f10,%f58,%f22		! (Y0_0) di0 = vis_fpadd32(di0,dtmp1);
1141
1142	faddd	%f50,KA0,%f58		! (Y0_1) dtmp0 += KA0;
1143	and	%g5,-8,%o1		! (Y2_1) ind0 &= -8;
1144	ld	[%fp+tmp2],%f6		! (Y2_1) dtmp0 = (double) i0;
1145
1146	fitod	%f20,%f52		! (Y1_0) dtmp0 = (double)ind0;
1147	and	%i1,MASK_0x7fffffff,%i3	! (Y0_2) exp0 = ax0 & 0x7fffffff;
1148	and	%i1,MASK_0x007fffff,%g5	! (Y0_2) ax0 &= 0x007fffff;
1149
1150	fmuld	%f62,%f22,%f62		! (Y0_0) yy0 *= di0;
1151	srl	%i3,23,%o3		! (Y0_2) exp0 >>= 23;
1152	add	%l2,%o1,%g1		! (Y2_1) (char*)__mt_constlog4f + ind0
1153	faddd	%f60,%f26,%f26		! (Y0_1) yy0 = dtmp0 + dtmp1;
1154
1155	fmuld	%f28,%f46,%f50		! (Y1_1) dtmp0 *= y0;
1156	sub	%o3,127,%o3		! (Y0_2) exp0 -= 127;
1157	cmp	%i3,%o5			! (Y0_2) ax0 ? 0x7f800000
1158	fcmped	%fcc1,LTHRESHOLD,%f18	! (Y2_0) if (yy0 <= LTHRESH)
1159
1160	fmuld	%f58,%f48,%f48		! (Y0_1) dtmp0 *= y0;
1161	add	%g5,CONST_0x8000,%i3	! (Y0_2) i0 = ax0 + 0x8000;
1162	ldd	[%g1+8],%f58		! (Y2_1) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
1163	fitod	%f6,%f54		! (Y2_1) dtmp0 = (double) i0;
1164
1165	sll	%o3,8,%o4		! (Y0_2) exp0 <<= 8;
1166	and	%i3,%l6,%i3		! (Y0_2) i0 &= 0xffff0000;
1167	st	%o4,[%fp+tmp3]		! (Y0_2) STORE exp0
1168	fsubd	%f56,%f52,%f52		! (Y1_0) y0 = yy0 - dtmp0;
1169
1170	sub	%g5,%i3,%o4		! (Y0_2) i0 = ax0 - i0;
1171	st	%o4,[%fp+tmp2]		! (Y0_2) STORE i0
1172	bge,pn 	%icc,.update13		! (Y0_2) if( ax0 >= 0x7f800000 )
1173	faddd	%f62,%f22,%f62		! (Y0_0) yy0 += di0;
1174.cont13:
1175	lda	[stridey+%i2]0x82,%g1	! (Y1_1) ay0 = *(unsigned*)py0
1176	add	%i2,stridey,%o4		! py += stridey
1177	cmp	%i1,MASK_0x007fffff	! (Y0_2) ux0 ? 0x800000
1178	fmovdl	%fcc0,HTHRESHOLD,%f18	! (Y2_0) yy0 = HTHRESH;
1179
1180	fmuld	%f54,%f58,%f28		! (Y2_1) y0 =  dtmp0 * dtmp1;
1181	lda	[stridey+%i2]0x82,%f2	! (Y1_1) ftmp0 = *py0;
1182	ble,pn 	%icc,.update14		! (Y0_2) if(ux0 < 0x800000)
1183	faddd	%f50,KA1,%f54		! (Y1_1) dtmp0 += KA1;
1184.cont14:
1185	fmuld	KB2,%f52,%f56		! (Y1_0) dtmp0 = KB2 * y0;
1186	and	%g1,MASK_0x7fffffff,%g1	! (Y1_1) ay0 &= 0x7fffffff;
1187	ld	[%fp+tmp4],%f1		! (Y1_1) LOAD exp0
1188	faddd	%f26,%f48,%f58		! (Y0_1) yy0 += dtmp0;
1189
1190	ld	[%fp+tmp1],%g5		! (Y1_0) ind0 = (int) yy0;
1191	cmp	%g1,%o5			! (Y1_1) ay0 ? 0x7f800000
1192	bge,pn 	%icc,.update15		! (Y1_1) if(ay0 >= 0x7f800000)
1193	fdtos	%f62,%f8		! (Y0_0) ftmp0 = (float)yy0;
1194.cont15:
1195	st	%f8,[%l7]		! (Y0_0) *pz0 = ftmp0;
1196	fmovdg	%fcc1,LTHRESHOLD,%f18	! (Y2_0) yy0 = LTHRESH;
1197
1198	add	%l7,stridez,%l7		! pz += stridez
1199	fmuld	KA3,%f28,%f62		! (Y2_1) dtmp0 = KA3 * y0;
1200	and	%g5,255,%g5		! (Y1_0) ind0 &= 255;
1201	fstod	%f2,%f22		! (Y1_1) dtmp0 = (double)ftmp0;
1202
1203	fmuld	%f24,%f58,%f58		! (Y0_1) yy0 *= dtmp0;
1204	sll	%g5,3,%i2		! (Y1_0) ind0 <<= 3;
1205	faddd	%f56,KB1,%f60		! (Y1_0) dtmp0 += KB1;
1206
1207	fpackfix	%f20,%f20	! (Y1_0) dtmp1 = vis_fpackfix(dtmp1);
1208	fitod	%f1,%f48		! (Y1_1) dtmp1 = (double) exp0;
1209	ldd	[%l0+%i2],%f56		! (Y1_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1210
1211	fmuld	%f54,%f46,%f54		! (Y1_1) dtmp0 *= y0;
1212	fdtoi	%f18,%f2		! (Y2_0) ind0 = (int) yy0;
1213	st	%f2,[%fp+tmp1]		! (Y2_0) STORE ind0
1214
1215	faddd	%f62,KA2,%f26		! (Y2_1) dtmp0 += KA2;
1216
1217	fmuld	%f60,%f52,%f62		! (Y1_0) yy0 = dtmp0 * y0;
1218	add	%o2,stridex,%o2		! px += stridex
1219	ldd	[%l2+%o0],%f60		! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1220	fcmped	%fcc0,HTHRESHOLD,%f58	! (Y0_1) if (yy0 >= HTHRESH)
1221
1222	fpadd32	%f20,%f56,%f52		! (Y1_0) di0 = vis_fpadd32(di0,dtmp1);
1223	sra	%i3,12,%o0		! (Y0_2) ind0 = i0 >> 12;
1224	lda	[%o2]0x82,%o3		! (Y1_2) ax0 = *px;
1225
1226	faddd	%f54,KA0,%f56		! (Y1_1) dtmp0 += KA0;
1227	and	%o0,-8,%g5		! (Y0_2) ind0 &= -8;
1228	ld	[%fp+tmp2],%f14		! (Y0_2) dtmp0 = (double) i0;
1229
1230	fitod	%f2,%f54		! (Y2_0) dtmp0 = (double)ind0;
1231	and	%o3,MASK_0x7fffffff,%i3	! (Y1_2) exp0 = ax0 & 0x7fffffff;
1232	and	%o3,MASK_0x007fffff,%o0	! (Y1_2) ax0 &= 0x007fffff;
1233
1234	fmuld	%f62,%f52,%f62		! (Y1_0) yy0 *= di0;
1235	cmp	%i3,%o5			! (Y1_2) ax0 ? 0x7f800000
1236	add	%l2,%g5,%g1		! (Y0_2) (char*)__mt_constlog4f + ind0
1237	faddd	%f60,%f48,%f12		! (Y1_1) yy0 = dtmp0 + dtmp1;
1238
1239	fmuld	%f26,%f28,%f50		! (Y2_1) dtmp0 *= y0;
1240	srl	%i3,23,%i3		! (Y1_2) exp0 >>= 23;
1241	add	%o0,CONST_0x8000,%i1	! (Y1_2) i0 = ax0 + 0x8000;
1242	fcmped	%fcc1,LTHRESHOLD,%f58	! (Y0_1) if (yy0 <= LTHRESH)
1243
1244	fmuld	%f56,%f46,%f46		! (Y1_1) dtmp0 *= y0;
1245	ldd	[%g1+8],%f48		! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
1246	sub	%i3,127,%i3		! (Y1_2) exp0 -= 127;
1247	fitod	%f14,%f60		! (Y0_2) dtmp0 = (double) i0;
1248
1249	sll	%i3,8,%i2		! (Y1_2) exp0 <<= 8;
1250	and	%i1,%l6,%i1		! (Y1_2) i0 &= 0xffff0000;
1251	st	%i2,[%fp+tmp4]		! (Y1_2) STORE exp0
1252	fsubd	%f18,%f54,%f26		! (Y2_0) y0 = yy0 - dtmp0;
1253
1254	sub	%o0,%i1,%o0		! (Y1_2) i0 = ax0 - i0;
1255	st	%o0,[%fp+tmp5]		! (Y1_2) STORE i0
1256	bge,pn 	%icc,.update16		! (Y1_2) if(ax0 >= 0x7f800000)
1257	faddd	%f62,%f52,%f54		! (Y1_0) yy0 += di0;
1258.cont16:
1259	lda	[stridey+%o4]0x82,%i3 	! Y(2_1) ay0 = *py0
1260	cmp	%o3,MASK_0x007fffff	! (Y1_2) ux0 ? 0x800000
1261	add	%o4,stridey,%i2		! py += stridey;
1262	fmovdl	%fcc0,HTHRESHOLD,%f58	! (Y0_1) yy0 = HTHRESH;
1263
1264	fmuld	%f60,%f48,%f48		! (Y0_2) y0 =  dtmp0 * dtmp1;
1265	lda	[stridey+%o4]0x82,%f16	! (Y2_1) ftmp0 = *py0;
1266	ble,pn 	%icc,.update17		! (Y1_2) if(ux0 < 0x800000)
1267	faddd	%f50,KA1,%f52		! (Y2_1) dtmp0 += KA1;
1268.cont17:
1269	fmuld	KB2,%f26,%f4		! (Y2_0) dtmp0 = KB2 * y0;
1270	and	%i3,MASK_0x7fffffff,%i3	! (Y2_1) ay0 &= 0x7fffffff
1271	ld	[%fp+tmp6],%f17		! (Y2_1) dtmp1 = (double) exp0;
1272	faddd	%f12,%f46,%f60		! (Y1_1) yy0 += dtmp0;
1273
1274	ld	[%fp+tmp1],%o0
1275	cmp	%i3,%o5			! (Y2_1) ay0 ? 0x7f800000
1276	bge,pn 	%icc,.update18		! (Y2_1) if(ay0 >= 0x7f800000)
1277	fdtos	%f54,%f15		! (Y1_0) ftmp0 = (float)yy0;
1278.cont18:
1279	st	%f15,[%l7]		! (Y1_0) *pz0 = ftmp0;
1280	add	%l7,stridez,%o4		! pz += stridez
1281	fmovdg	%fcc1,LTHRESHOLD,%f58	! (Y0_1) yy0 = LTHRESH;
1282
1283	fmuld	KA3,%f48,%f62		! (Y0_2) dtmp0 = KA3 * y0;
1284	and	%o0,255,%o0		! (Y2_0) ind0 &= 255;
1285	fstod	%f16,%f54		! (Y2_1) dtmp0 = (double)ftmp0;
1286
1287	fmuld	%f22,%f60,%f56		! (Y1_1) yy0 *= dtmp0;
1288	sll	%o0,3,%l7		! (Y2_0) ind0 <<= 3;
1289	faddd	%f4,KB1,%f60		! (Y2_0) dtmp0 += KB1;
1290
1291	fpackfix	%f2,%f2		! (Y2_0) dtmp1 = vis_fpackfix(dtmp1);
1292	fitod	%f17,%f24		! (Y2_1) dtmp1 = (double) exp0;
1293	ldd	[%l0+%l7],%f4		! (Y2_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1294
1295	fmuld	%f52,%f28,%f52		! (Y2_1) dtmp0 *= y0;
1296	fdtoi	%f58,%f10		! (Y0_1) ind0 = (int) yy0;
1297
1298	st	%f10,[%fp+tmp0]		! (Y0_1) STORE ind0
1299	faddd	%f62,KA2,%f22		! (Y0_2) dtmp0 += KA2;
1300
1301	fmuld	%f60,%f26,%f62		! (Y2_0) yy0 = dtmp0 * y0;
1302	fcmped	%fcc0,HTHRESHOLD,%f56	! (Y1_1) if (yy0 >= HTHRESH)
1303	ldd	[%l2+%o1],%f60		! (Y2_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1304
1305	sra	%i1,12,%o1		! (Y1_2) ind0 = i0 >> 12;
1306	add	%o2,stridex,%i3		! px += stridex
1307	lda	[stridex+%o2]0x82,%g1	! (Y2_2) ax0 = *px;
1308	fpadd32	%f2,%f4,%f46		! (Y2_0) di0 = vis_fpadd32(di0,dtmp1);
1309
1310	and	%o1,-8,%o0		! (Y1_2) ind0 &= -8;
1311	add	%i2,stridey,%i2		! py += stridey
1312	ld	[%fp+tmp5],%f12		! (Y1_2) LOAD i0
1313	faddd	%f52,KA0,%f4		! (Y2_1) dtmp0 += KA0;
1314
1315	and	%g1,MASK_0x7fffffff,%i1	! (Y2_2) exp0 = ax0 & 0x7fffffff;
1316	and	%g1,MASK_0x007fffff,%o2	! (Y2_2) ax0 &= 0x007fffff;
1317	lda	[%i2]0x82,%f0		! (Y0_2) ftmp0 = *py0;
1318	fitod	%f10,%f52		! (Y0_1) dtmp0 = (double)ind0;
1319
1320	fmuld	%f62,%f46,%f62		! (Y2_0) yy0 *= di0;
1321	srl	%i1,23,%o3		! (Y2_2) exp0 >>= 23;
1322	cmp	%i1,%o5			! (Y2_2) ax0 ? 0x7f800000
1323	faddd	%f60,%f24,%f18		! (Y2_1) yy0 = dtmp0 + dtmp1;
1324
1325	fmuld	%f22,%f48,%f26		! (Y0_2) dtmp0 *= y0;
1326	add	%l2,%o0,%i1		! (Y1_2) (char*)__mt_constlog4f + ind0
1327	sub	%o3,127,%l7		! (Y2_2) exp0 -= 127;
1328	fcmped	%fcc1,LTHRESHOLD,%f56	! (Y1_1) if (yy0 <= LTHRESH)
1329
1330	fmuld	%f4,%f28,%f24		! (Y2_1) dtmp0 *= y0;
1331	add	%o2,CONST_0x8000,%o1	! (Y2_2) i0 = ax0 + 0x8000;
1332	ldd	[%i1+8],%f50		! (Y1_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
1333	fitod	%f12,%f28		! (Y1_2) dtmp0 = (double) i0;
1334
1335	sll	%l7,8,%l7		! (Y2_2) exp0 <<= 8;
1336	and	%o1,%l6,%o1		! (Y2_2) i0 &= 0xffff0000;
1337	st	%l7,[%fp+tmp6]		! (Y2_2) STORE exp0
1338	fsubd	%f58,%f52,%f60		! (Y0_1) y0 = yy0 - dtmp0;
1339
1340	sub	%o2,%o1,%i1		! (Y2_2) i0 = ax0 - i0;
1341	st	%i1,[%fp+tmp2]		! (Y2_2) STORE i0
1342	bge,pn	%icc,.update19		! (Y2_2) if(ax0 >= 0x7f800000)
1343	faddd	%f62,%f46,%f22		! (Y2_0) yy0 += di0;
1344.cont19:
1345	lda	[%i2]0x82,%o2		! (Y0_2) ay0 = *(int*)py0;
1346	cmp	%g1,MASK_0x007fffff	! (Y2_2) ux0 ? 0x800000
1347	fmovdl	%fcc0,HTHRESHOLD,%f56	! (Y1_1) yy0 = HTHRESH;
1348
1349	fmuld	%f28,%f50,%f46		! (Y1_2) y0 =  dtmp0 * dtmp1;
1350	ble,pn	%icc,.update20		! (Y2_2) if(ux0 < 0x800000)
1351	faddd	%f26,KA1,%f50		! (Y0_2) dtmp0 += KA1;
1352.cont20:
1353	fmuld	KB2,%f60,%f62		! (Y0_1) dtmp0 = KB2 * y0;
1354	and	%o2,MASK_0x7fffffff,%o2	! (Y0_2) ay0 &= 0x7fffffff
1355	ld	[%fp+tmp3],%f4		! (Y0_2) dtmp1 = (double) exp0;
1356	faddd	%f18,%f24,%f52		! (Y2_1) yy0 += dtmp0;
1357
1358	ld	[%fp+tmp0],%g1		! (Y0_1) LAOD ind0
1359	cmp	%o2,%o5			! (Y0_2) ay0 ? 0x7f800000
1360	bge,pn	%icc,.update21		! (Y0_2) if( ay0 >= 0x7f800000)
1361	fdtos	%f22,%f12		! (Y2_0) ftmp0 = (float)yy0;
1362.cont21:
1363	st	%f12,[%o4]		! (Y2_0) *pz0 = ftmp0;
1364	cmp	counter,6		! counter
1365	bge,pt	%icc,.main_loop
1366	fstod	%f0,%f24		! (Y0_2) dtmp0 = (double)ftmp0;
1367
1368.tail:
1369	subcc	counter,1,counter
1370	bneg,pn	%icc,.begin
1371	add	%o4,stridez,%i5
1372
1373	fmuld	KA3,%f46,%f28		! (Y1_1) dtmp0 = KA3 * y0;
1374	and	%g1,255,%o2		! (Y0_0) ind0 &= 255;
1375	fmovdg	%fcc1,LTHRESHOLD,%f56	! (Y1_0) yy0 = LTHRESH;
1376
1377	fmuld	%f54,%f52,%f18		! (Y2_0) yy0 *= dtmp0;
1378	sll	%o2,3,%i1		! (Y0_0) ind0 <<= 3;
1379	add	%o4,stridez,%l7    	! pz += stridez
1380	faddd	%f62,KB1,%f62		! (Y0_0) dtmp0 += KB1;
1381
1382	fpackfix	%f10,%f10	! (Y0_0) dtmp1 = vis_fpackfix(dtmp1);
1383	fitod	%f4,%f26		! (Y0_1) dtmp1 = (double) exp0;
1384	ldd	[%l0+%i1],%f58		! (Y0_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1385
1386	fmuld	%f50,%f48,%f50		! (Y0_1) dtmp0 *= y0;
1387	fdtoi	%f56,%f20		! (Y1_0) ind0 = (int) yy0;
1388	st	%f20,[%fp+tmp1]		! (Y1_0) STORE ind0
1389
1390	faddd	%f28,KA2,%f28		! (Y1_1) dtmp0 += KA2;
1391
1392	fmuld	%f62,%f60,%f62		! (Y0_0) yy0 = dtmp0 * y0;
1393	ldd	[%l2+%g5],%f60		! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1394	fcmped	%fcc0,HTHRESHOLD,%f18	! (Y2_0) if (yy0 >= HTHRESH)
1395
1396	fpadd32	%f10,%f58,%f22		! (Y0_0) di0 = vis_fpadd32(di0,dtmp1);
1397
1398	faddd	%f50,KA0,%f58		! (Y0_1) dtmp0 += KA0;
1399
1400	fitod	%f20,%f52		! (Y1_0) dtmp0 = (double)ind0;
1401
1402	fmuld	%f62,%f22,%f62		! (Y0_0) yy0 *= di0;
1403	faddd	%f60,%f26,%f26		! (Y0_1) yy0 = dtmp0 + dtmp1;
1404
1405	fmuld	%f28,%f46,%f50		! (Y1_1) dtmp0 *= y0;
1406	fcmped	%fcc1,LTHRESHOLD,%f18	! (Y2_0) if (yy0 <= LTHRESH)
1407
1408	fmuld	%f58,%f48,%f48		! (Y0_1) dtmp0 *= y0;
1409
1410	fsubd	%f56,%f52,%f52		! (Y1_0) y0 = yy0 - dtmp0;
1411
1412	faddd	%f62,%f22,%f62		! (Y0_0) yy0 += di0;
1413
1414	lda	[stridey+%i2]0x82,%g1	! (Y1_1) ay0 = *(unsigned*)py0
1415	add	%i2,stridey,%o4		! py += stridey
1416	fmovdl	%fcc0,HTHRESHOLD,%f18	! (Y2_0) yy0 = HTHRESH;
1417
1418	lda	[stridey+%i2]0x82,%f2	! (Y1_1) ftmp0 = *py0;
1419	faddd	%f50,KA1,%f54		! (Y1_1) dtmp0 += KA1;
1420
1421	fmuld	KB2,%f52,%f56		! (Y1_0) dtmp0 = KB2 * y0;
1422	and	%g1,MASK_0x7fffffff,%g1	! (Y1_1) ay0 &= 0x7fffffff;
1423	ld	[%fp+tmp4],%f1		! (Y1_1) LOAD exp0
1424	faddd	%f26,%f48,%f58		! (Y0_1) yy0 += dtmp0;
1425
1426	ld	[%fp+tmp1],%g5		! (Y1_0) ind0 = (int) yy0;
1427	cmp	%g1,%o5			! (Y1_1) ay0 ? 0x7f800000
1428	bge,pn 	%icc,.update22		! (Y1_1) if(ay0 >= 0x7f800000)
1429	fdtos	%f62,%f8		! (Y0_0) ftmp0 = (float)yy0;
1430.cont22:
1431	st	%f8,[%l7]		! (Y0_0) *pz0 = ftmp0;
1432	fmovdg	%fcc1,LTHRESHOLD,%f18	! (Y2_0) yy0 = LTHRESH;
1433
1434	subcc	counter,1,counter
1435	bneg,pn %icc,.begin
1436	add	%l7,stridez,%i5
1437
1438	add	%l7,stridez,%l7		! pz += stridez
1439	and	%g5,255,%g5		! (Y1_0) ind0 &= 255;
1440	fstod	%f2,%f22		! (Y1_1) dtmp0 = (double)ftmp0;
1441
1442	fmuld	%f24,%f58,%f58		! (Y0_1) yy0 *= dtmp0;
1443	sll	%g5,3,%i2		! (Y1_0) ind0 <<= 3;
1444	faddd	%f56,KB1,%f60		! (Y1_0) dtmp0 += KB1;
1445
1446	fpackfix	%f20,%f20	! (Y1_0) dtmp1 = vis_fpackfix(dtmp1);
1447	fitod	%f1,%f48		! (Y1_1) dtmp1 = (double) exp0;
1448	ldd	[%l0+%i2],%f56		! (Y1_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1449
1450	fmuld	%f54,%f46,%f54		! (Y1_1) dtmp0 *= y0;
1451	fdtoi	%f18,%f2		! (Y2_0) ind0 = (int) yy0;
1452	st	%f2,[%fp+tmp1]		! (Y2_0) STORE ind0
1453
1454
1455	fmuld	%f60,%f52,%f62		! (Y1_0) yy0 = dtmp0 * y0;
1456	ldd	[%l2+%o0],%f60		! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1457	fcmped	%fcc0,HTHRESHOLD,%f58	! (Y0_1) if (yy0 >= HTHRESH)
1458
1459	fpadd32	%f20,%f56,%f52		! (Y1_0) di0 = vis_fpadd32(di0,dtmp1);
1460
1461	faddd	%f54,KA0,%f56		! (Y1_1) dtmp0 += KA0;
1462
1463	fitod	%f2,%f54		! (Y2_0) dtmp0 = (double)ind0;
1464
1465	fmuld	%f62,%f52,%f62		! (Y1_0) yy0 *= di0;
1466	faddd	%f60,%f48,%f12		! (Y1_1) yy0 = dtmp0 + dtmp1;
1467
1468	fcmped	%fcc1,LTHRESHOLD,%f58	! (Y0_1) if (yy0 <= LTHRESH)
1469
1470	fmuld	%f56,%f46,%f46		! (Y1_1) dtmp0 *= y0;
1471
1472	fsubd	%f18,%f54,%f26		! (Y2_0) y0 = yy0 - dtmp0;
1473
1474	faddd	%f62,%f52,%f54		! (Y1_0) yy0 += di0;
1475
1476	fmovdl	%fcc0,HTHRESHOLD,%f58	! (Y0_1) yy0 = HTHRESH;
1477
1478
1479	fmuld	KB2,%f26,%f4		! (Y2_0) dtmp0 = KB2 * y0;
1480	faddd	%f12,%f46,%f60		! (Y1_1) yy0 += dtmp0;
1481
1482	ld	[%fp+tmp1],%o0
1483	fdtos	%f54,%f15		! (Y1_0) ftmp0 = (float)yy0;
1484
1485	st	%f15,[%l7]		! (Y1_0) *pz0 = ftmp0;
1486	add	%l7,stridez,%o4		! pz += stridez
1487	fmovdg	%fcc1,LTHRESHOLD,%f58	! (Y0_1) yy0 = LTHRESH;
1488
1489	subcc	counter,1,counter
1490	bneg,pn %icc,.begin
1491	or	%g0,%o4,%i5
1492
1493	and	%o0,255,%o0		! (Y2_0) ind0 &= 255;
1494
1495	fmuld	%f22,%f60,%f56		! (Y1_1) yy0 *= dtmp0;
1496	sll	%o0,3,%l7		! (Y2_0) ind0 <<= 3;
1497	faddd	%f4,KB1,%f60		! (Y2_0) dtmp0 += KB1;
1498
1499	fpackfix	%f2,%f2		! (Y2_0) dtmp1 = vis_fpackfix(dtmp1);
1500	ldd	[%l0+%l7],%f4		! (Y2_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1501
1502	fdtoi	%f58,%f10		! (Y0_1) ind0 = (int) yy0;
1503
1504	st	%f10,[%fp+tmp0]		! (Y0_1) STORE ind0
1505
1506	fmuld	%f60,%f26,%f62		! (Y2_0) yy0 = dtmp0 * y0;
1507	fcmped	%fcc0,HTHRESHOLD,%f56	! (Y1_1) if (yy0 >= HTHRESH)
1508
1509	fpadd32	%f2,%f4,%f46		! (Y2_0) di0 = vis_fpadd32(di0,dtmp1);
1510
1511	add	%i2,stridey,%i2		! py += stridey
1512
1513	fitod	%f10,%f52		! (Y0_1) dtmp0 = (double)ind0;
1514
1515	fmuld	%f62,%f46,%f62		! (Y2_0) yy0 *= di0;
1516
1517	fcmped	%fcc1,LTHRESHOLD,%f56	! (Y1_1) if (yy0 <= LTHRESH)
1518
1519
1520	fsubd	%f58,%f52,%f60		! (Y0_1) y0 = yy0 - dtmp0;
1521
1522	faddd	%f62,%f46,%f22		! (Y2_0) yy0 += di0;
1523
1524	fmovdl	%fcc0,HTHRESHOLD,%f56	! (Y1_1) yy0 = HTHRESH;
1525
1526	fmuld	KB2,%f60,%f62		! (Y0_1) dtmp0 = KB2 * y0;
1527
1528	ld	[%fp+tmp0],%g1		! (Y0_1) LAOD ind0
1529	fdtos	%f22,%f12		! (Y2_0) ftmp0 = (float)yy0;
1530
1531	st	%f12,[%o4]		! (Y2_0) *pz0 = ftmp0;
1532
1533	subcc	counter,1,counter
1534	bneg,pn %icc,.begin
1535	add	%o4,stridez,%i5
1536
1537	and	%g1,255,%o2		! (Y0_0) ind0 &= 255;
1538	fmovdg	%fcc1,LTHRESHOLD,%f56	! (Y1_0) yy0 = LTHRESH;
1539
1540	sll	%o2,3,%i1		! (Y0_0) ind0 <<= 3;
1541	add	%o4,stridez,%l7    	! pz += stridez
1542	faddd	%f62,KB1,%f62		! (Y0_0) dtmp0 += KB1;
1543
1544	fpackfix	%f10,%f10	! (Y0_0) dtmp1 = vis_fpackfix(dtmp1);
1545	ldd	[%l0+%i1],%f58		! (Y0_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1546
1547	fdtoi	%f56,%f20		! (Y1_0) ind0 = (int) yy0;
1548	st	%f20,[%fp+tmp1]		! (Y1_0) STORE ind0
1549
1550	fmuld	%f62,%f60,%f62		! (Y0_0) yy0 = dtmp0 * y0;
1551
1552	fpadd32	%f10,%f58,%f22		! (Y0_0) di0 = vis_fpadd32(di0,dtmp1);
1553
1554	fitod	%f20,%f52		! (Y1_0) dtmp0 = (double)ind0;
1555
1556	fmuld	%f62,%f22,%f62		! (Y0_0) yy0 *= di0;
1557
1558	fsubd	%f56,%f52,%f52		! (Y1_0) y0 = yy0 - dtmp0;
1559
1560	faddd	%f62,%f22,%f62		! (Y0_0) yy0 += di0;
1561
1562	fmuld	KB2,%f52,%f56		! (Y1_0) dtmp0 = KB2 * y0;
1563
1564	ld	[%fp+tmp1],%g5		! (Y1_0) ind0 = (int) yy0;
1565	fdtos	%f62,%f8		! (Y0_0) ftmp0 = (float)yy0;
1566	st	%f8,[%l7]		! (Y0_0) *pz0 = ftmp0;
1567
1568	subcc	counter,1,counter
1569	bneg	.begin
1570	add	%l7,stridez,%i5
1571
1572	add	%l7,stridez,%l7		! pz += stridez
1573	and	%g5,255,%g5		! (Y1_0) ind0 &= 255;
1574
1575	sll	%g5,3,%i2		! (Y1_0) ind0 <<= 3;
1576	faddd	%f56,KB1,%f60		! (Y1_0) dtmp0 += KB1;
1577
1578	fpackfix	%f20,%f20	! (Y1_0) dtmp1 = vis_fpackfix(dtmp1);
1579	ldd	[%l0+%i2],%f56		! (Y1_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1580
1581	fmuld	%f60,%f52,%f62		! (Y1_0) yy0 = dtmp0 * y0;
1582
1583	fpadd32	%f20,%f56,%f52		! (Y1_0) di0 = vis_fpadd32(di0,dtmp1);
1584
1585	fmuld	%f62,%f52,%f62		! (Y1_0) yy0 *= di0;
1586
1587	faddd	%f62,%f52,%f54		! (Y1_0) yy0 += di0;
1588
1589	fdtos	%f54,%f15		! (Y1_0) ftmp0 = (float)yy0;
1590
1591	st	%f15,[%l7]		! (Y1_0) *pz0 = ftmp0;
1592	ba	.begin
1593	add	%l7,stridez,%i5		! pz += stridez
1594
1595.exit:
1596	ret
1597	restore
1598
1599	.align	16
1600.specs_exit:
1601	add	%i1,stridex,%o2
1602	add	%i3,stridey,%i2
1603	st	%f4,[%i5]
1604
1605	sub	counter,1,counter
1606	ba	.begin1
1607	add	%i5,stridez,%i5
1608
1609.spec1:
1610	ld	[%l0+2048+64],%f0	! LOAD 1.0f
1611	or	%g0,%i1,%o1
1612	or	%g0,%i3,%o3
1613
1614	ld	[%o2],%f4		! *px
1615	or	%g0,%o2,%i1
1616	or	%g0,%i2,%i3
1617
1618	ld	[%i3],%f6		! *py
1619	or	%g0,%l7,%o2
1620	fsubs	%f0,%f0,%f5		! 0.0f
1621
1622	sethi	%hi(0x7f800000),%l6
1623	cmp	%o4,0			! ay ? 0
1624	be,a,pn	%icc,.specs_exit	! if(ay == 0)
1625	fmovs	%f0,%f4			! return 1.0f
1626
1627	cmp	%o3,%l6			! ax0 ? 0x7f800000
1628	bgu,a	%icc,.specs_exit	! ax0 > 0x7f800000
1629	fmuls	%f4,%f6,%f4		! return *px * *py; /* |X| or |Y| = Nan */
1630
1631	cmp	%o4,%l6			! ay ? 0x7f800000
1632	bgu,a	.specs_exit		! ay > 0x7f800000
1633	fmuls	%f4,%f6,%f4		! return *px * *py; /* |X| or |Y| = Nan */
1634
1635	sethi	%hi(0x3f800000),%o5
1636	bne,a	%icc,1f			! if (ay != 0x7f800000) { /* |Y| = Inf */
1637	srl	%o1,31,%o1		! sx = ux >> 31
1638
1639	cmp	%o3,%o5			! ax0 ? 0x3f800000
1640	be,a	.specs_exit		! if (ax0 == 0x3f800000)
1641	fmuls	%f6,%f5,%f4		! return *py * 0.0f; /* +-1 ** +-Inf = NaN */
1642
1643	sub	%o3,%o5,%o3		! ax0 - 0x3f800000
1644	srl	%o2,31,%o2		! uy >> 31
1645
1646	srlx	%o3,63,%o3		! (ax0 - 0x3f800000) << 63
1647
1648	cmp	%o3,%o2			! ((ax0 - 0x3f800000) << 63) ? (uy >> 31)
1649	bne,a	.specs_exit
1650	fzeros	%f4			! return 0.f;
1651
1652	ba	.specs_exit
1653	fabss	%f6,%f4			! return fabss(*py)
16541:
1655	cmp	%o1,0			! sx ? 0
1656	be,pn	%icc,.spec1_exit	! if (sx == 0)
1657	or	%g0,%g0,%o5		! yisint0 = 0;
1658
1659	srl	%o4,23,%l7		! exp = ay >> 23;
1660	cmp	%l7,0x97		! exp ? 0x97
1661	bge,a,pn %icc,.spec1_exit	! if (exp >= 0x97) /* |Y| >= 2^24  */
1662	add	%g0,2,%o5		! yisint = 2;
1663
1664	cmp	%l7,0x7f		! exp ? 0x7f
1665	bl,pn	%icc,.spec1_exit	! if (exp < 0x7f)
1666	sub	%g0,%l7,%l7		! exp = -exp;
1667
1668	add	%l7,(0x7f + 23),%l7	! exp += (0x07f + 23);
1669	srl	%o4,%l7,%l6		! i0 = ay >> exp
1670	sll	%l6,%l7,%l7		! i0 << exp
1671
1672	cmp	%l7,%o4			! (i0 << exp) ? ay
1673	bne,pn	%icc,.spec1_exit	! if((i0 << exp) != ay)
1674	and	%l6,1,%l6		! i0 &= 1
1675
1676	sub	%g0,%l6,%l6		! i0 = -i0;
1677	add	%l6,2,%o5		! yisint0 = 2 + i0;
1678
1679.spec1_exit:
1680	srl	%o2,31,%o2		! uy >> 31
1681	cmp	%o2,0			! (uy >> 31) ? 0
1682	movne	%icc,%g0,%o3		! if (uy >> 31) ax0 = 0;
1683
1684	sll	%o5,31,%o5		! yisint0 <<= 31;
1685	add	%o5,%o3,%o5		! ax0 += yisint0;
1686
1687	add	%i1,stridex,%o2		! px += stridex;
1688	add	%i3,stridey,%i2		! py += stridey;
1689	st	%o5,[%i5]		! return *(float*)&ax0;
1690
1691	sub	counter,1,counter	! counter--;
1692	ba	.begin1
1693	add	%i5,stridez,%i5		! pz += stridez;
1694
1695.spec2:
1696	or	%g0,%i1,%o1
1697	or	%g0,%i3,%o3
1698	ld	[%l0+2048+64],%f0	! LOAD 1.0f
1699	or	%g0,%o2,%i1
1700	or	%g0,%i2,%i3
1701
1702	or	%g0,%l7,%o2
1703	cmp	%o4,0			! ay ? 0
1704	be,a,pn	%icc,.specs_exit	! if(ay == 0)
1705	fmovs	%f0,%f4			! return 1.0f
1706
1707	srl	%o3,23,%l7		! exp0 = (ax0 >> 23);
1708	sub	%l7,127,%l7		! exp = exp0 = exp0 - 127;
1709
1710	or	%g0,%g0,%o5		! yisint = 0;
1711	cmp	%o3,MASK_0x007fffff	! (int)ax0 ? 0x00800000
1712	bg,pn	%icc,1f			! if ((int)ax0 >= 0x00800000)
1713	nop
1714
1715					! X = denormal or negative
1716	st	%o3,[%fp+tmp0]		! *((float*) &ax0) = (float) (int)ax0;
1717	ld	[%fp+tmp0],%f4
1718	fitos	%f4,%f4
1719	st	%f4,[%fp+tmp0]
1720	ld	[%fp+tmp0],%o3
1721
1722	srl	%o3,23,%l7		! exp = (ax0 >> 23)
1723	sub	%l7,127+149,%l7		! exp -= (127+149)
17241:
1725	cmp	%o1,0			! ux ? 0
1726	bg,a	%icc,.spec_proc		! if((int)ux > 0)
1727	sethi	%hi(0xffff0000),%l6
1728
1729	srl	%o4,23,%o0		! exp = ay >> 23;
1730	cmp	%o0,0x97		! exp ? 0x97
1731	bge,a,pn %icc,2f		! if (exp >= 0x97) /* |Y| >= 2^24  */
1732	add	%g0,2,%o5		! yisint0 = 2;     /* Y - even */
1733
1734	cmp	%o0,0x7f		! exp ? 0x7f
1735	bl,pn	%icc,2f			! if(exp < 0x7f)
1736	nop
1737
1738	sub	%g0,%o0,%o0		! exp = -exp;
1739	add	%o0,(0x7f + 23),%o0	! exp += (0x7f + 23)
1740	srl	%o4,%o0,%l6		! i0 = ay >> ((0x7f + 23) - exp);
1741	sll	%l6,%o0,%o0		! i0 << ((0x7f + 23) - exp
1742	cmp	%o0,%o4			! (i0 << ((0x7f + 23) - exp)) ? ay
1743	bne,pn	%icc,2f			! if(i0 << ((0x7f + 23) - exp)) != ay)
1744	nop
1745
1746	and	%l6,1,%l6		! i0 &= 1;
1747	sub	%g0,%l6,%l6		! i0 = -i0;
1748	add	%l6,2,%o5		! yisint = i0 + 2;
17492:
1750	cmp	%o3,0			! ax0 ? 0
1751	bne,pn	%icc,4f			! if(ax0 != 0)
1752	nop
1753
1754	srl	%o1,31,%o1		! sx = ux >> 31
1755	srl	%o2,31,%o2		! uy >> 31
1756
1757	cmp	%o2,0			! (uy >> 31) ? 0
1758	be,a,pn	%icc,3f			! if((uy >> 31) == 0)
1759	fzeros	%f4			! return ZERO
1760
1761	fdivs	%f0,%f3,%f4		! fy = ONE/ZERO
17623:
1763	andcc	%o1,%o5,%g0		! sx & yisint0
1764	be,pn	%icc,.specs_exit	! if( (sx & yisint0) == 0 )
1765	nop
1766
1767	ba	.specs_exit
1768	fnegs	%f4,%f4			! fy = -fy;
17694:
1770	cmp	%o5,0			! ysisint0 ? 0
1771	be,a	%icc,.specs_exit	! if(yisint0 == 0)
1772	fdivs	%f3,%f3,%f4		! return ZERO/ZERO
1773
1774	sethi	%hi(0xffff0000),%l6
1775
1776.spec_proc:
1777	sll	%l7,8,%l7		! exp0 = exp0 << 8;
1778	st	%l7,[%fp+tmp1]		! STORE exp0
1779	and	%o3,MASK_0x007fffff,%g5	! ax0 &= 0x007fffff;
1780	ld	[%i3],%f14		! ftmp0 = py[0]
1781	sllx	%o5,63,%o5		! ysisint0 <<= 63;
1782	add	%g5,CONST_0x8000,%o3	! i0 = ax0 + 0x8000;
1783	stx	%o5,[%fp+tmp5]		! STORE yisint0
1784	and	%o3,%l6,%l7		! i0 &= 0xffff0000;
1785	sub	%g5,%l7,%o1		! i0 = ax0 - i0;
1786	sra	%l7,12,%g5		! ind0 = i0 >> 12;
1787	st	%o1,[%fp+tmp2]		! STORE i0
1788	fstod	%f14,%f54		! dtmp1 = (double)ftmp0
1789	and	%g5,-8,%g5		! ind0 &= -8;
1790	add	%l2,%g5,%l7		! (char*)__mt_constlog4f + ind0
1791	ld	[%fp+tmp1],%f18		! LOAD exp0
1792	ld	[%fp+tmp2],%f16		! LOAD i0
1793	ldd	[%l7+8],%f62		! dtmp2 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
1794	ldd	[%l2+%g5],%f56		! dtmp3 = *(double *)((char*)__mt_constlog4f + ind0);
1795	fitod	%f18,%f58		! dtmp4 = (double)exp0
1796	fitod	%f16,%f60		! dtmp5 = (double)i0
1797	fmuld	%f60,%f62,%f60		! y0 =  dtmp5 * dtmp2;
1798	faddd	%f56,%f58,%f58		! yy0 = dtmp3 + dtmp4;
1799	fmuld	KA3,%f60,%f52		! dtmp0 = KA3 * y0;
1800	faddd	%f52,KA2,%f50		! dtmp0 += KA2;
1801	fmuld	%f50,%f60,%f48		! dtmp0 *= y0;
1802	faddd	%f48,KA1,%f46		! dtmp0 += KA1;
1803	fmuld	%f46,%f60,%f62		! dtmp0 *= y0;
1804	ldd	[%fp+tmp5],%f24		! LOAD yisint0
1805	faddd	%f62,KA0,%f56		! dtmp0 += KA0;
1806	fmuld	%f56,%f60,%f52		! dtmp0 *= y0;
1807	faddd	%f58,%f52,%f50		! yy0 += dtmp1;
1808	fmuld	%f54,%f50,%f52		! yy0 *= dtmp1;
1809	fcmped	%fcc0,HTHRESHOLD,%f52	! if (yy0 >= HTHRESH)
1810	fcmped	%fcc1,LTHRESHOLD,%f52	! yy0 = HTHRESH;
1811	fmovdl	%fcc0,HTHRESHOLD,%f52	! if (yy0 <= LTHRESH)
1812	fmovdg	%fcc1,LTHRESHOLD,%f52	! yy0 = LTHRESH;
1813	fdtoi	%f52,%f20		! ind0 = (int) yy0;
1814	st	%f20,[%fp+tmp3]		! STORE ind0
1815	fitod	%f20,%f58		! dtmp0 = (double) ind0;
1816	fpackfix	%f20,%f20	! dtmp1 = vis_fpackfix(dtmp1)
1817	ld	[%fp+tmp3],%g1		! LOAD ind0
1818	fsubd	%f52,%f58,%f46		! y0 = yy0 - dtmp0;
1819	fpadd32	%f20,%f24,%f56		! dtmp1 += yisint0
1820	and	%g1,255,%o4		! ind0 &= 255;
1821	sll	%o4,3,%o3		! ind0 <<= 3;
1822	ldd	[%l0+%o3],%f54		! di0 = *(double*)((char*)__mt_constexp2f + ind0);
1823	fmuld	KB2,%f46,%f48		! dtmp0 = KB2 * y0;
1824	fpadd32	%f56,%f54,%f56		! di0 = vis_fpadd32(di0,dtmp1);
1825	faddd	%f48,KB1,%f62		! dtmp0 += KB1;
1826	fmuld	%f62,%f46,%f60		! yy0 = dtmp0 * y0;
1827	fmuld	%f60,%f56,%f52		! yy0 *= di0;
1828	faddd	%f52,%f56,%f58		! yy0 += di0;
1829	ba	.specs_exit
1830	fdtos	%f58,%f4		! ftmp0 = (float)yy0;
1831
1832	.align	16
1833.update0:
1834	cmp	counter,1
1835	ble	.cont0
1836	nop
1837
1838	add	%i2,stridey,%o1
1839	stx	%o2,[%fp+tmp_px]
1840
1841	stx	%o1,[%fp+tmp_py]
1842	sub	counter,1,counter
1843
1844	st	counter,[%fp+tmp_counter]
1845	ba	.cont0
1846	or	%g0,1,counter
1847
1848	.align	16
1849.update1:
1850	cmp	counter,1
1851	ble	.cont1
1852	nop
1853
1854	add	%i2,stridey,%o1
1855	stx	%o2,[%fp+tmp_px]
1856
1857	stx	%o1,[%fp+tmp_py]
1858	sub	counter,1,counter
1859
1860	st	counter,[%fp+tmp_counter]
1861	ba	.cont1
1862	or	%g0,1,counter
1863
1864	.align	16
1865.update2:
1866	cmp	counter,2
1867	ble	.cont2
1868	nop
1869
1870	add	%i2,stridey,%o2
1871	stx	%i3,[%fp+tmp_px]
1872
1873	add	%o2,stridey,%o2
1874	stx	%o2,[%fp+tmp_py]
1875
1876	sub	counter,2,counter
1877	st	counter,[%fp+tmp_counter]
1878	ba	.cont2
1879	or	%g0,2,counter
1880
1881	.align	16
1882.update3:
1883	cmp	counter,2
1884	ble	.cont3
1885	nop
1886
1887	add	%i2,stridey,%o2
1888	stx	%i3,[%fp+tmp_px]
1889
1890	add	%o2,stridey,%o2
1891	stx	%o2,[%fp+tmp_py]
1892
1893	sub	counter,2,counter
1894	st	counter,[%fp+tmp_counter]
1895	ba	.cont3
1896	or	%g0,2,counter
1897
1898	.align	16
1899.update4:
1900	cmp	counter,3
1901	ble	.cont4
1902	nop
1903
1904	sll	stridey,1,%g5
1905	add	%i2,stridey,%o3
1906	stx	%o2,[%fp+tmp_px]
1907
1908	add	%o3,%g5,%o3
1909	stx	%o3,[%fp+tmp_py]
1910
1911	sub	counter,3,counter
1912	st	counter,[%fp+tmp_counter]
1913	ba	.cont4
1914	or	%g0,3,counter
1915
1916	.align	16
1917.update5:
1918	cmp	counter,3
1919	ble	.cont5
1920	nop
1921
1922	sll	stridey,1,%g5
1923	add	%i2,stridey,%o3
1924	stx	%o2,[%fp+tmp_px]
1925
1926	add	%o3,%g5,%o3
1927	stx	%o3,[%fp+tmp_py]
1928
1929	sub	counter,3,counter
1930	st	counter,[%fp+tmp_counter]
1931	ba	.cont5
1932	or	%g0,3,counter
1933
1934	.align	16
1935.update6:
1936	fzeros	%f2
1937	cmp	counter,1
1938	ble	.cont6
1939	nop
1940
1941	ld	[%fp+tmp_counter],%g1
1942
1943	sub	%o2,stridex,%o3
1944	stx	%o4,[%fp+tmp_py]
1945
1946	sub	%o3,stridex,%o3
1947	add	%g1,counter,counter
1948	stx	%o3,[%fp+tmp_px]
1949
1950	sub	counter,1,counter
1951	st	counter,[%fp+tmp_counter]
1952	ba	.cont6
1953	or	%g0,1,counter
1954
1955	.align	16
1956.update7:
1957	cmp	counter,4
1958	ble	.cont7
1959	nop
1960
1961	sll	stridey,1,%g1
1962	add	%o4,stridey,%o0
1963	stx	%o2,[%fp+tmp_px]
1964
1965	add	%o0,%g1,%o0
1966	stx	%o0,[%fp+tmp_py]
1967
1968	sub	counter,4,counter
1969	st	counter,[%fp+tmp_counter]
1970	ba	.cont7
1971	or	%g0,4,counter
1972
1973	.align	16
1974.update8:
1975	cmp	counter,4
1976	ble	.cont8
1977	nop
1978
1979	sll	stridey,1,%g1
1980	add	%o4,stridey,%o0
1981	stx	%o2,[%fp+tmp_px]
1982
1983	add	%o0,%g1,%o0
1984	stx	%o0,[%fp+tmp_py]
1985
1986	sub	counter,4,counter
1987	st	counter,[%fp+tmp_counter]
1988	ba	.cont8
1989	or	%g0,4,counter
1990
1991	.align	16
1992.update9:
1993	cmp	counter,2
1994	ble	.cont9
1995	fzeros	%f16
1996
1997	ld	[%fp+tmp_counter],%i3
1998
1999	sub	%o2,stridex,%g1
2000	stx	%i2,[%fp+tmp_py]
2001
2002	sub	%g1,stridex,%g1
2003	add	%i3,counter,counter
2004	stx	%g1,[%fp+tmp_px]
2005
2006	sub	counter,2,counter
2007	st	counter,[%fp+tmp_counter]
2008	ba	.cont9
2009	or	%g0,2,counter
2010
2011	.align	16
2012.update10:
2013	cmp	counter,5
2014	ble	.cont10
2015	nop
2016
2017	add	%i2,stridey,%i1
2018	stx	%i3,[%fp+tmp_px]
2019
2020	add	%i1,stridey,%i1
2021	stx	%i1,[%fp+tmp_py]
2022
2023	sub	counter,5,counter
2024	st	counter,[%fp+tmp_counter]
2025	ba	.cont10
2026	or	%g0,5,counter
2027
2028	.align	16
2029.update11:
2030	cmp	counter,5
2031	ble	.cont11
2032	nop
2033
2034	add	%i2,stridey,%i1
2035	stx	%i3,[%fp+tmp_px]
2036
2037	add	%i1,stridey,%i1
2038	stx	%i1,[%fp+tmp_py]
2039
2040	sub	counter,5,counter
2041	st	counter,[%fp+tmp_counter]
2042	ba	.cont11
2043	or	%g0,5,counter
2044
2045	.align	16
2046.update12:
2047	fzeros	%f0
2048	cmp	counter,3
2049	ble	.cont12
2050	nop
2051
2052	ld	[%fp+tmp_counter],%o2
2053
2054	sub	%i3,stridex,%i1
2055	stx	%i2,[%fp+tmp_py]
2056
2057	sub	%i1,stridex,%i1
2058	add	%o2,counter,counter
2059	stx	%i1,[%fp+tmp_px]
2060
2061	sub	counter,3,counter
2062	st	counter,[%fp+tmp_counter]
2063	ba	.cont12
2064	or	%g0,3,counter
2065
2066	.align	16
2067.update13:
2068	cmp	counter,3
2069	ble	.cont13
2070	nop
2071
2072	sll	stridey,1,%g5
2073	add	%i2,stridey,%o3
2074	stx	%o2,[%fp+tmp_px]
2075
2076	add	%o3,%g5,%o3
2077	stx	%o3,[%fp+tmp_py]
2078
2079	sub	counter,3,counter
2080	st	counter,[%fp+tmp_counter]
2081	ba	.cont13
2082	or	%g0,3,counter
2083
2084	.align	16
2085.update14:
2086	cmp	counter,3
2087	ble	.cont14
2088	nop
2089
2090	sll	stridey,1,%g5
2091	add	%i2,stridey,%o3
2092	stx	%o2,[%fp+tmp_px]
2093
2094	add	%o3,%g5,%o3
2095	stx	%o3,[%fp+tmp_py]
2096
2097	sub	counter,3,counter
2098	st	counter,[%fp+tmp_counter]
2099	ba	.cont14
2100	or	%g0,3,counter
2101
2102	.align	16
2103.update15:
2104	cmp	counter,1
2105	ble	.cont15
2106	fzeros	%f2
2107
2108	ld	[%fp+tmp_counter],%g1
2109
2110	sub	%o2,stridex,%o3
2111	stx	%o4,[%fp+tmp_py]
2112
2113	sub	%o3,stridex,%o3
2114	add	%g1,counter,counter
2115	stx	%o3,[%fp+tmp_px]
2116
2117	sub	counter,1,counter
2118	st	counter,[%fp+tmp_counter]
2119	ba	.cont15
2120	or	%g0,1,counter
2121
2122	.align	16
2123.update16:
2124	cmp	counter,4
2125	ble	.cont16
2126	nop
2127
2128	sll	stridey,1,%g1
2129	add	%o4,stridey,%o0
2130	stx	%o2,[%fp+tmp_px]
2131
2132	add	%o0,%g1,%o0
2133	stx	%o0,[%fp+tmp_py]
2134
2135	sub	counter,4,counter
2136	st	counter,[%fp+tmp_counter]
2137	ba	.cont16
2138	or	%g0,4,counter
2139
2140	.align	16
2141.update17:
2142	cmp	counter,4
2143	ble	.cont17
2144	nop
2145
2146	sll	stridey,1,%g1
2147	add	%o4,stridey,%o0
2148	stx	%o2,[%fp+tmp_px]
2149
2150	add	%o0,%g1,%o0
2151	stx	%o0,[%fp+tmp_py]
2152
2153	sub	counter,4,counter
2154	st	counter,[%fp+tmp_counter]
2155	ba	.cont17
2156	or	%g0,4,counter
2157
2158	.align	16
2159.update18:
2160	fzeros	%f16
2161	cmp	counter,2
2162	ble	.cont18
2163	nop
2164
2165	ld	[%fp+tmp_counter],%i3
2166
2167	sub	%o2,stridex,%g1
2168	stx	%i2,[%fp+tmp_py]
2169
2170	sub	%g1,stridex,%g1
2171	add	%i3,counter,counter
2172	stx	%g1,[%fp+tmp_px]
2173
2174	sub	counter,2,counter
2175	st	counter,[%fp+tmp_counter]
2176	ba	.cont18
2177	or	%g0,2,counter
2178
2179	.align	16
2180.update19:
2181	cmp	counter,5
2182	ble	.cont19
2183	nop
2184
2185	add	%i2,stridey,%i1
2186	stx	%i3,[%fp+tmp_px]
2187
2188	add	%i1,stridey,%i1
2189	stx	%i1,[%fp+tmp_py]
2190
2191	sub	counter,5,counter
2192	st	counter,[%fp+tmp_counter]
2193	ba	.cont19
2194	or	%g0,5,counter
2195
2196	.align	16
2197.update20:
2198	cmp	counter,5
2199	ble	.cont20
2200	nop
2201
2202	add	%i2,stridey,%i1
2203	stx	%i3,[%fp+tmp_px]
2204
2205	add	%i1,stridey,%i1
2206	stx	%i1,[%fp+tmp_py]
2207
2208	sub	counter,5,counter
2209	st	counter,[%fp+tmp_counter]
2210	ba	.cont20
2211	or	%g0,5,counter
2212
2213	.align	16
2214.update21:
2215	cmp	counter,3
2216	ble	.cont21
2217	fzeros	%f0
2218
2219	ld	[%fp+tmp_counter],%o2
2220
2221	sub	%i3,stridex,%i1
2222	stx	%i2,[%fp+tmp_py]
2223
2224	sub	%i1,stridex,%i1
2225	add	%o2,counter,counter
2226	stx	%i1,[%fp+tmp_px]
2227
2228
2229	sub	counter,3,counter
2230	st	counter,[%fp+tmp_counter]
2231	ba	.cont21
2232	or	%g0,3,counter
2233
2234	.align	16
2235.update22:
2236	cmp	counter,3
2237	ble	.cont22
2238	fzeros	%f2
2239
2240	ld	[%fp+tmp_counter],%g1
2241
2242	sub	%i3,stridex,%i2
2243	stx	%i2,[%fp+tmp_px]
2244
2245	add	%g1,counter,counter
2246	stx	%o4,[%fp+tmp_py]
2247
2248	sub	counter,3,counter
2249	st	counter,[%fp+tmp_counter]
2250	ba	.cont22
2251	or	%g0,3,counter
2252
2253.stridex_zero:
2254	ld	[%fp+tmp_counter],counter
2255
2256	stx	%i3,[%fp+tmp_py]
2257
2258	cmp	counter,0
2259	ble,pn	%icc,.exit
2260	lda	[%i1]0x82,%i1		! (Y0_2) ax0 = *px;
2261
2262	and	%i1,MASK_0x7fffffff,%i3	! (Y0_2) exp0 = ax0 & 0x7fffffff;
2263	sub	%i3,%l6,%l6
2264	and	%i1,MASK_0x007fffff,%g5	! (Y0_2) ax0 &= 0x007fffff;
2265	srl	%i3,23,%o3		! (Y0_2) exp0 >>= 23;
2266	srl	%l6,31,%l6
2267	st	%l6,[%fp+tmp5]
2268	add	%g5,CONST_0x8000,%i3	! (Y0_2) i0 = ax0 + 0x8000;
2269	sethi	%hi(0xffff0000),%l6
2270	sub	%o3,127,%o3		! (Y0_2) exp0 -= 127;
2271	and	%i3,%l6,%i3		! (Y0_2) i0 &= 0xffff0000;
2272	sll	%o3,8,%o4		! (Y0_2) exp0 <<= 8;
2273	st	%o4,[%fp+tmp3]		! (Y0_2) STORE exp0
2274	sra	%i3,12,%o0		! (Y0_2) ind0 = i0 >> 12;
2275	sub	%g5,%i3,%o4		! (Y0_2) i0 = ax0 - i0;
2276	st	%o4,[%fp+tmp2]		! (Y0_2) STORE i0
2277	and	%o0,-8,%g5		! (Y0_2) ind0 &= -8;
2278	ld	[%fp+tmp2],%f14		! (Y0_2) dtmp0 = (double) i0;
2279	add	%l2,%g5,%g1		! (Y0_2) (char*)__mt_constlog4f + ind0
2280	ldd	[%g1+8],%f48		! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
2281	fitod	%f14,%f60		! (Y0_2) dtmp0 = (double) i0;
2282	fmuld	%f60,%f48,%f48		! (Y0_2) y0 =  dtmp0 * dtmp1;
2283	fmuld	KA3,%f48,%f62		! (Y0_2) dtmp0 = KA3 * y0;
2284	faddd	%f62,KA2,%f22		! (Y0_2) dtmp0 += KA2;
2285	fmuld	%f22,%f48,%f26 		! (Y0_2) dtmp0 *= y0;
2286	faddd	%f26,KA1,%f50		! (Y0_2) dtmp0 += KA1;
2287	ld	[%fp+tmp3],%f4		! (Y0_2) dtmp1 = (double) exp0;
2288	fitod	%f4,%f26		! (Y0_1) dtmp1 = (double) exp0;
2289	fmuld	%f50,%f48,%f50		! (Y0_1) dtmp0 *= y0;
2290	ldd	[%l2+%g5],%f60		! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
2291	faddd	%f50,KA0,%f58		! (Y0_1) dtmp0 += KA0;
2292	faddd	%f60,%f26,%f26		! (Y0_1) yy0 = dtmp0 + dtmp1;
2293	fmuld	%f58,%f48,%f48		! (Y0_1) dtmp0 *= y0;
2294	sub	%l2,3200,%o4
2295	sub	%l2,1152-600,%o3
2296	faddd	%f26,%f48,%f46		! (Y0_1) yy0 += dtmp0;
2297	or	%g0,%i5,%g1
2298	sethi	%hi(0x7f800000),%o1
2299
2300.xbegin:
2301	ld	[%fp+tmp_counter],counter
2302	ldx	[%fp+tmp_py],%o5
2303	st	%g0,[%fp+tmp_counter]
2304.xbegin1:
2305	subcc	counter,1,counter
2306	bneg,pn	%icc,.exit
2307	nop
2308
2309	lda	[%o5]0x82,%i5		! (Y0_0) ay = py[0];
2310
2311	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
2312
2313	and	%i5,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
2314
2315	cmp	%i3,%o1
2316	bge,pn	%icc,.xspec
2317	nop
2318
2319	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
2320
2321	fmuld	%f52,%f46,%f26		! (Y0_0) yy0 = dtmp0 * yy;
2322	add	%o5,stridey,%o5		! py += stridey
2323
2324	lda	[%o5]0x82,%i5		! (Y1_0) ay = ((int*)py)[0];
2325
2326	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
2327
2328	and	%i5,MASK_0x7fffffff,%i5	! (Y1_0) ay &= 0x7fffffff
2329	fcmped	%fcc0,HTHRESHOLD,%f26	! (Y0_0) if (yy0 >= HTHRESH)
2330
2331	cmp	%i5,%o1
2332	bge,pn	%icc,.xupdate0
2333	nop
2334
2335.xcont0:
2336	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
2337
2338	fcmped	%fcc1,LTHRESHOLD,%f26	! (Y0_1) if (yy0 <= LTHRESH)
2339
2340	add	%o5,stridey,%o5		! py += stridey
2341	fmuld	%f48,%f46,%f28		! (Y1_1) yy0 = dtmp0 * yy;
2342
2343	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
2344
2345	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
2346
2347	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
2348	fmovdl	%fcc0,HTHRESHOLD,%f26	! (Y0_1) yy0 = HTHRESH;
2349
2350	cmp	%i3,%o1
2351	bge,pn	%icc,.xupdate1
2352	fcmped	%fcc2,HTHRESHOLD,%f28	! (Y1_1) if (yy0 >= HTHRESH)
2353.xcont1:
2354	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
2355
2356	fmovdg	%fcc1,LTHRESHOLD,%f26	! (Y0_1) yy0 = LTHRESH;
2357
2358	fcmped	%fcc3,LTHRESHOLD,%f28	! (Y1_1) if (yy0 <= LTHRESH)
2359
2360	fmuld	%f52,%f46,%f22		! (Y0_0) yy0 = dtmp0 * yy;
2361
2362	fdtoi	%f26,%f0		! (Y0_1) ii0 = (int) yy0;
2363
2364	add	%o5,stridey,%o5		! py += stridey
2365	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
2366
2367	lda	[%o5]0x82,%l7		! (Y1_0) ay = ((int*)py)[0];
2368
2369	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
2370	fmovdl	%fcc2,HTHRESHOLD,%f28	! (Y1_1) yy0 = HTHRESH;
2371
2372	and	%l7,MASK_0x7fffffff,%l7	! (Y1_0) ay &= 0x7fffffff
2373	fcmped	%fcc0,HTHRESHOLD,%f22	! (Y0_0) if (yy0 >= HTHRESH)
2374
2375	cmp	%l7,%o1
2376	bge,pn	%icc,.xupdate2
2377	nop
2378.xcont2:
2379	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
2380
2381	fmovdg	%fcc3,LTHRESHOLD,%f28	! (Y1_2) yy0 = LTHRESH;
2382
2383	fcmped	%fcc1,LTHRESHOLD,%f22	! (Y0_1) if (yy0 <= LTHRESH)
2384
2385	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
2386
2387	add	%o5,stridey,%o5		! py += stridey
2388	fmuld	%f48,%f46,%f24		! (Y1_1) yy0 = dtmp0 * yy;
2389
2390	fdtoi	%f28,%f3		! (Y1_2) ii0 = (int) yy0;
2391	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
2392
2393	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
2394
2395	fsubd	%f26,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
2396	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
2397
2398	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
2399	fmovdl	%fcc0,HTHRESHOLD,%f22	! (Y0_1) yy0 = HTHRESH;
2400
2401	cmp	%i3,%o1
2402	bge,pn	%icc,.xupdate3
2403	fcmped	%fcc2,HTHRESHOLD,%f24	! (Y1_1) if (yy0 >= HTHRESH)
2404.xcont3:
2405	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
2406	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
2407	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
2408
2409	fmovdg	%fcc1,LTHRESHOLD,%f22	! (Y0_1) yy0 = LTHRESH;
2410
2411	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
2412	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
2413	fcmped	%fcc3,LTHRESHOLD,%f24	! (Y1_1) if (yy0 <= LTHRESH)
2414
2415	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
2416	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
2417	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
2418
2419	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
2420	fmuld	%f52,%f46,%f26		! (Y0_0) yy0 = dtmp0 * yy;
2421	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2422
2423	fdtoi	%f22,%f0		! (Y0_1) ii0 = (int) yy0;
2424	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2425
2426	add	%o5,stridey,%o5		! py += stridey
2427	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
2428
2429	fsubd	%f28,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
2430	lda	[%o5]0x82,%i5		! (Y1_0) ay = ((int*)py)[0];
2431
2432	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
2433	fmovdl	%fcc2,HTHRESHOLD,%f24	! (Y1_1) yy0 = HTHRESH;
2434	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
2435
2436	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
2437	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
2438	and	%i5,MASK_0x7fffffff,%i5	! (Y1_0) ay &= 0x7fffffff
2439	fcmped	%fcc0,HTHRESHOLD,%f26	! (Y0_0) if (yy0 >= HTHRESH)
2440
2441	cmp	%i5,%o1
2442	bge,pn	%icc,.xupdate4
2443.xcont4:
2444	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
2445	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
2446
2447	fmovdg	%fcc3,LTHRESHOLD,%f24	! (Y1_2) yy0 = LTHRESH;
2448	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
2449	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
2450	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
2451
2452	fcmped	%fcc1,LTHRESHOLD,%f26	! (Y0_1) if (yy0 <= LTHRESH)
2453	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
2454	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
2455
2456	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
2457	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150) + i0))[0];
2458
2459	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
2460	add	%o5,stridey,%o5		! py += stridey
2461	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2462	fmuld	%f48,%f46,%f28		! (Y1_1) yy0 = dtmp0 * yy;
2463
2464	fdtoi	%f24,%f3		! (Y1_2) ii0 = (int) yy0;
2465	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
2466
2467	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
2468	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
2469
2470	fsubd	%f22,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
2471	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
2472
2473	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
2474	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
2475	fmovdl	%fcc0,HTHRESHOLD,%f26	! (Y0_1) yy0 = HTHRESH;
2476
2477	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
2478	cmp	%i3,%o1
2479	bge,pn	%icc,.xupdate5
2480	fcmped	%fcc2,HTHRESHOLD,%f28	! (Y1_1) if (yy0 >= HTHRESH)
2481.xcont5:
2482	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
2483	add	%g1,stridez,%i3		! pz += stridez
2484	st	%f1,[%g1]		! (Y0_3) pz[0] = ftmp0;
2485
2486	subcc	counter,1,counter
2487	bneg,pn	%icc,.xbegin
2488	or	%g0,%i3,%g1
2489
2490	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
2491	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
2492	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
2493
2494	fmovdg	%fcc1,LTHRESHOLD,%f26	! (Y0_1) yy0 = LTHRESH;
2495
2496	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
2497	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
2498	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
2499	fcmped	%fcc3,LTHRESHOLD,%f28	! (Y1_1) if (yy0 <= LTHRESH)
2500
2501	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
2502	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
2503	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
2504
2505	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
2506	fmuld	%f52,%f46,%f22		! (Y0_0) yy0 = dtmp0 * yy;
2507	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2508
2509	fdtoi	%f26,%f0		! (Y0_1) ii0 = (int) yy0;
2510	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2511
2512	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
2513	add	%o5,stridey,%o5		! py += stridey
2514	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
2515
2516	fsubd	%f24,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
2517	lda	[%o5]0x82,%l7		! (Y1_0) ay = ((int*)py)[0];
2518
2519	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
2520	add	%i3,stridez,%i5		! pz += stridez
2521	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
2522	fmovdl	%fcc2,HTHRESHOLD,%f28	! (Y1_1) yy0 = HTHRESH;
2523
2524	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
2525	and	%l7,MASK_0x7fffffff,%l7	! (Y1_0) ay &= 0x7fffffff
2526	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
2527	fcmped	%fcc0,HTHRESHOLD,%f22	! (Y0_0) if (yy0 >= HTHRESH)
2528
2529	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
2530	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
2531	cmp	%l7,%o1
2532	bge,pn	%icc,.xupdate6
2533
2534.xcont6:
2535	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
2536	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
2537
2538	cmp	counter,8
2539	bl,pn	%icc,.xtail
2540	nop
2541
2542	ba	.xmain_loop
2543	nop
2544
2545	.align	16
2546.xmain_loop:
2547	fmovdg	%fcc3,LTHRESHOLD,%f28	! (Y1_2) yy0 = LTHRESH;
2548	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
2549	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
2550	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
2551
2552	fcmped	%fcc1,LTHRESHOLD,%f22	! (Y0_1) if (yy0 <= LTHRESH)
2553	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
2554	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
2555
2556	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
2557	sub	counter,4,counter
2558	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
2559
2560	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
2561	add	%o5,stridey,%o5		! py += stridey
2562	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2563	fmuld	%f48,%f46,%f24		! (Y1_1) yy0 = dtmp0 * yy;
2564
2565	fdtoi	%f28,%f3		! (Y1_2) ii0 = (int) yy0;
2566	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
2567
2568	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
2569	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
2570
2571	fsubd	%f26,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
2572	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
2573
2574	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
2575	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
2576	fmovdl	%fcc0,HTHRESHOLD,%f22	! (Y0_1) yy0 = HTHRESH;
2577
2578	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
2579	cmp	%i3,%o1
2580	bge,pn	%icc,.xupdate7
2581	fcmped	%fcc2,HTHRESHOLD,%f24	! (Y1_1) if (yy0 >= HTHRESH)
2582.xcont7:
2583	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
2584	add	%i5,stridez,%i3		! pz += stridez
2585	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
2586
2587	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
2588	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
2589	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
2590
2591	fmovdg	%fcc1,LTHRESHOLD,%f22	! (Y0_1) yy0 = LTHRESH;
2592
2593	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
2594	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
2595	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
2596	fcmped	%fcc3,LTHRESHOLD,%f24	! (Y1_1) if (yy0 <= LTHRESH)
2597
2598	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
2599	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
2600	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
2601
2602	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
2603	fmuld	%f52,%f46,%f26		! (Y0_0) yy0 = dtmp0 * yy;
2604	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2605
2606	fdtoi	%f22,%f0		! (Y0_1) ii0 = (int) yy0;
2607	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2608
2609	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
2610	add	%o5,stridey,%o5		! py += stridey
2611	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
2612
2613	fsubd	%f28,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
2614	lda	[%o5]0x82,%i5		! (Y1_0) ay = ((int*)py)[0];
2615
2616	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
2617	fmovdl	%fcc2,HTHRESHOLD,%f24	! (Y1_1) yy0 = HTHRESH;
2618	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
2619
2620	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
2621	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
2622	and	%i5,MASK_0x7fffffff,%i5	! (Y1_0) ay &= 0x7fffffff
2623	fcmped	%fcc0,HTHRESHOLD,%f26	! (Y0_0) if (yy0 >= HTHRESH)
2624
2625	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
2626	cmp	%i5,%o1
2627	bge,pn	%icc,.xupdate8
2628
2629.xcont8:
2630	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
2631	add	%i3,stridez,%i5		! pz += stridez
2632	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
2633	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
2634
2635	fmovdg	%fcc3,LTHRESHOLD,%f24	! (Y1_2) yy0 = LTHRESH;
2636	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
2637	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
2638	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
2639
2640	fcmped	%fcc1,LTHRESHOLD,%f26	! (Y0_1) if (yy0 <= LTHRESH)
2641	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
2642	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
2643
2644	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
2645	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
2646
2647	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
2648	add	%o5,stridey,%o5		! py += stridey
2649	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2650	fmuld	%f48,%f46,%f28		! (Y1_1) yy0 = dtmp0 * yy;
2651
2652	fdtoi	%f24,%f3		! (Y1_2) ii0 = (int) yy0;
2653	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
2654
2655	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
2656	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
2657
2658	fsubd	%f22,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
2659	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
2660
2661	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
2662	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
2663	fmovdl	%fcc0,HTHRESHOLD,%f26	! (Y0_1) yy0 = HTHRESH;
2664
2665	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
2666	cmp	%i3,%o1
2667	bge,pn	%icc,.xupdate9
2668	fcmped	%fcc2,HTHRESHOLD,%f28	! (Y1_1) if (yy0 >= HTHRESH)
2669.xcont9:
2670	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
2671	add	%i5,stridez,%i3		! pz += stridez
2672	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
2673
2674	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
2675	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
2676	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
2677
2678	fmovdg	%fcc1,LTHRESHOLD,%f26	! (Y0_1) yy0 = LTHRESH;
2679
2680	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
2681	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
2682	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
2683	fcmped	%fcc3,LTHRESHOLD,%f28	! (Y1_1) if (yy0 <= LTHRESH)
2684
2685	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
2686	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
2687	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
2688
2689	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
2690	fmuld	%f52,%f46,%f22		! (Y0_0) yy0 = dtmp0 * yy;
2691	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2692
2693	fdtoi	%f26,%f0		! (Y0_1) ii0 = (int) yy0;
2694	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2695
2696	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
2697	add	%o5,stridey,%o5		! py += stridey
2698	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
2699
2700	fsubd	%f24,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
2701	lda	[%o5]0x82,%l7		! (Y1_0) ay = ((int*)py)[0];
2702
2703	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
2704	add	%i3,stridez,%i5		! pz += stridez
2705	lda	[%o5]0x82,%f7		! (Y1_0) ftmp0 = py[0];
2706	fmovdl	%fcc2,HTHRESHOLD,%f28	! (Y1_1) yy0 = HTHRESH;
2707
2708	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
2709	and	%l7,MASK_0x7fffffff,%l7	! (Y1_0) ay &= 0x7fffffff
2710	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
2711	fcmped	%fcc0,HTHRESHOLD,%f22	! (Y0_0) if (yy0 >= HTHRESH)
2712
2713	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
2714	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
2715	cmp	%l7,%o1
2716	bge,pn	%icc,.xupdate10
2717.xcont10:
2718	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
2719	cmp	counter,4
2720	bge,pt	%icc,.xmain_loop
2721	fstod	%f7,%f48		! (Y1_0) dtmp0 = (double)ftmp0;
2722
2723.xtail:
2724	subcc	counter,1,counter
2725	bneg,pn	%icc,.xbegin
2726	or	%g0,%i5,%g1
2727
2728	fmovdg	%fcc3,LTHRESHOLD,%f28	! (Y1_2) yy0 = LTHRESH;
2729	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
2730	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
2731	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
2732
2733	fcmped	%fcc1,LTHRESHOLD,%f22	! (Y0_1) if (yy0 <= LTHRESH)
2734	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
2735	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
2736
2737	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
2738	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
2739
2740	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
2741	add	%o5,stridey,%o5		! py += stridey
2742	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2743	fmuld	%f48,%f46,%f24		! (Y1_1) yy0 = dtmp0 * yy;
2744
2745	fdtoi	%f28,%f3		! (Y1_2) ii0 = (int) yy0;
2746	lda	[%o5]0x82,%i3		! (Y0_0) ay = py[0];
2747
2748	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
2749	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
2750
2751	fsubd	%f26,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
2752	lda	[%o5]0x82,%f5		! (Y0_0) ftmp0 = py[0];
2753
2754	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
2755	and	%i3,MASK_0x7fffffff,%i3	! (Y0_0) ay &= 0x7fffffff
2756	fmovdl	%fcc0,HTHRESHOLD,%f22	! (Y0_1) yy0 = HTHRESH;
2757
2758	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
2759	cmp	%i3,%o1
2760	bge,pn	%icc,.xupdate11
2761	fcmped	%fcc2,HTHRESHOLD,%f24	! (Y1_1) if (yy0 >= HTHRESH)
2762.xcont11:
2763	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
2764	add	%i5,stridez,%i3		! pz += stridez
2765	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
2766
2767	subcc	counter,1,counter
2768	bneg,pn	%icc,.xbegin
2769	or	%g0,%i3,%g1
2770
2771	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
2772	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
2773	fstod	%f5,%f52		! (Y0_0) dtmp0 = (double)ftmp0;
2774
2775	fmovdg	%fcc1,LTHRESHOLD,%f22	! (Y0_1) yy0 = LTHRESH;
2776
2777	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
2778	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
2779	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
2780	fcmped	%fcc3,LTHRESHOLD,%f24	! (Y1_1) if (yy0 <= LTHRESH)
2781
2782	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
2783	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
2784	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
2785
2786	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
2787	fmuld	%f52,%f46,%f26		! (Y0_0) yy0 = dtmp0 * yy;
2788	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2789
2790	fdtoi	%f22,%f0		! (Y0_1) ii0 = (int) yy0;
2791	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2792
2793	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
2794	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
2795
2796	fsubd	%f28,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
2797
2798	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
2799	fmovdl	%fcc2,HTHRESHOLD,%f24	! (Y1_1) yy0 = HTHRESH;
2800
2801	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
2802	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
2803	fcmped	%fcc0,HTHRESHOLD,%f26	! (Y0_0) if (yy0 >= HTHRESH)
2804
2805	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
2806
2807	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
2808	add	%i3,stridez,%i5		! pz += stridez
2809	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
2810
2811	subcc	counter,1,counter
2812	bneg,pn	%icc,.xbegin
2813	or	%g0,%i5,%g1
2814
2815	fmovdg	%fcc3,LTHRESHOLD,%f24	! (Y1_2) yy0 = LTHRESH;
2816	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
2817	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
2818	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
2819
2820	fcmped	%fcc1,LTHRESHOLD,%f26	! (Y0_1) if (yy0 <= LTHRESH)
2821	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
2822	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
2823
2824	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
2825	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
2826
2827	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
2828	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2829
2830	fdtoi	%f24,%f3		! (Y1_2) ii0 = (int) yy0;
2831
2832	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
2833	st	%f3,[%fp+tmp0]		! (Y1_2) STORE ii0
2834
2835	fsubd	%f22,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
2836
2837	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
2838	fmovdl	%fcc0,HTHRESHOLD,%f26	! (Y0_1) yy0 = HTHRESH;
2839
2840	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
2841
2842	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
2843	add	%i5,stridez,%i3		! pz += stridez
2844	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
2845
2846	subcc	counter,1,counter
2847	bneg,pn	%icc,.xbegin
2848	or	%g0,%i3,%g1
2849
2850	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
2851	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
2852
2853	fmovdg	%fcc1,LTHRESHOLD,%f26	! (Y0_1) yy0 = LTHRESH;
2854
2855	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
2856	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
2857	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
2858
2859	fitod	%f3,%f56		! (Y1_2) dtmp0 = (double)ii0;
2860	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
2861	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
2862
2863	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
2864	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150) + i0))[0];
2865
2866	fdtoi	%f26,%f0		! (Y0_1) ii0 = (int) yy0;
2867	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2868
2869	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
2870	st	%f0,[%fp+tmp1]		! (Y0_1) STORE ii0
2871
2872	fsubd	%f24,%f56,%f56		! (Y1_2) y0 = yy0 - dtmp0;
2873
2874	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
2875	add	%i3,stridez,%i5		! pz += stridez
2876
2877	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
2878	ld	[%fp+tmp0],%g5		! (Y1_2) LOAD ii0
2879
2880	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
2881	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
2882
2883	subcc	counter,1,counter
2884	bneg,pn	%icc,.xbegin
2885	or	%g0,%i5,%g1
2886
2887	fmuld	KB2,%f56,%f58		! (Y1_2) dtmp0 = KB2 * y0;
2888
2889	sra	%g5,6,%i0		! (Y1_3) i0 = ii0 >> 6;
2890	and	%g5,255,%i1		! (Y1_3) ii0 &= 255;
2891	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
2892
2893	sll	%i1,3,%i3		! (Y1_3) ii0 <<= 3;
2894	and	%i0,-4,%i0		! (Y1_3) i0 &= -4;
2895
2896	fitod	%f0,%f52		! (Y0_2) dtmp0 = (double)ii0;
2897	ld	[%i0+%o3],%f10		! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
2898
2899	faddd	%f58,KB1,%f58		! (Y1_3) dtmp0 += KB1;
2900	ldd	[%o4+%i3],%f18		! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2901
2902	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
2903
2904	fsubd	%f26,%f52,%f40		! (Y0_2) y0 = yy0 - dtmp0;
2905
2906	fmuld	%f58,%f56,%f56		! (Y1_3) yy0 = dtmp0 * y0;
2907
2908	fmuld	%f10,%f18,%f50		! (Y1_3) di0 *= dtmp0;
2909
2910	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
2911	add	%i5,stridez,%i3		! pz += stridez
2912	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
2913
2914	subcc	counter,1,counter
2915	bneg,pn	%icc,.xbegin
2916	or	%g0,%i3,%g1
2917
2918	ld	[%fp+tmp1],%i2		! (Y0_2) LOAD ii0
2919	fmuld	KB2,%f40,%f36		! (Y0_2) dtmp0 = KB2 * y0;
2920
2921	fmuld	%f56,%f50,%f58		! (Y1_3) dtmp0 = yy0 * di0;
2922	sra	%i2,6,%l6		! (Y0_2) i0 = ii0 >> 6;
2923	and	%i2,255,%l7		! (Y0_2) ii0 &= 255;
2924
2925	sll	%l7,3,%o0		! (Y0_2) ii0 <<= 3;
2926	and	%l6,-4,%g5		! (Y0_2) i0 &= -4;
2927
2928	faddd	%f36,KB1,%f60		! (Y0_2) dtmp0 += KB1;
2929	ld	[%g5+%o3],%f10		! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2930
2931	ldd	[%o4+%o0],%f62		! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2932
2933	faddd	%f58,%f50,%f58		! (Y1_3) dtmp0 += di0;
2934
2935	fmuld	%f60,%f40,%f60		! (Y0_2) yy0 = dtmp0 * y0;
2936
2937	fmuld	%f10,%f62,%f62		! (Y0_2) di0 *= dtmp0;
2938
2939	fdtos	%f58,%f9		! (Y1_3) ftmp0 = (float)dtmp0;
2940	add	%i3,stridez,%i5		! pz += stridez
2941	st	%f9,[%i3]		! (Y1_3) pz[0] = ftmp0;
2942
2943	subcc	counter,1,counter
2944	bneg,pn	%icc,.xbegin
2945	or	%g0,%i5,%g1
2946
2947	fmuld	%f60,%f62,%f40		! (Y0_3) dtmp0 = yy0 * di0;
2948
2949	faddd	%f40,%f62,%f60		! (Y0_3) dtmp0 += di0;
2950
2951	fdtos	%f60,%f1		! (Y0_3) ftmp0 = (float)dtmp0;
2952	add	%i5,stridez,%i3		! pz += stridez
2953	st	%f1,[%i5]		! (Y0_3) pz[0] = ftmp0;
2954
2955	ba	.xbegin
2956	or	%g0,%i3,%g1
2957
2958.xspec:
2959	bg,a,pn	%icc,.yisnan		! if (ay > 0x7f800000) /* |Y| = Nan */
2960	ld	[%o5],%f8		! fy = *py;
2961
2962	ld	[%fp+tmp5],%l6		! LOAD (ax-0x3f800000)<<63
2963	srl	%i5,31,%i5		! uy >> 31
2964
2965	cmp	%l6,%i5			! if((ax < 0x3f800000) != (uy >> 31))
2966	be,a,pn	%icc,.xspec_exit	! if((ax < 0x3f800000) != (uy >> 31))
2967	st	%i3,[%g1]		! fy = *(float*)&ay;
2968
2969	st	%g0,[%g1]		! fy = ZERO
2970	add	%g1,stridez,%g1
2971	ba	.xbegin1
2972	add	%o5,stridey,%o5
2973
2974.yisnan:
2975	fmuls	%f8,%f8,%f8		! fy = *py * *py;  /* |Y| = Nan */
2976	st	%f8,[%g1]
2977
2978.xspec_exit:
2979	add	%g1,stridez,%g1
2980	ba	.xbegin1
2981	add	%o5,stridey,%o5
2982
2983	.align	16
2984.xupdate0:
2985	cmp	counter,0
2986	ble	.xcont0
2987	fzeros	%f7
2988
2989	stx	%o5,[%fp+tmp_py]
2990
2991	st	counter,[%fp+tmp_counter]
2992	ba	.xcont0
2993	or	%g0,0,counter
2994
2995	.align	16
2996.xupdate1:
2997	cmp	counter,1
2998	ble	.xcont1
2999	fzeros	%f5
3000
3001	sub	counter,1,counter
3002	stx	%o5,[%fp+tmp_py]
3003
3004	st	counter,[%fp+tmp_counter]
3005	ba	.xcont1
3006	or	%g0,1,counter
3007
3008	.align	16
3009.xupdate2:
3010	cmp	counter,2
3011	ble	.xcont2
3012	fzeros	%f7
3013
3014	sub	counter,2,counter
3015	stx	%o5,[%fp+tmp_py]
3016
3017	st	counter,[%fp+tmp_counter]
3018	ba	.xcont2
3019	or	%g0,2,counter
3020
3021	.align	16
3022.xupdate3:
3023	cmp	counter,3
3024	ble	.xcont3
3025	fzeros	%f5
3026
3027	sub	counter,3,counter
3028	stx	%o5,[%fp+tmp_py]
3029
3030	st	counter,[%fp+tmp_counter]
3031	ba	.xcont3
3032	or	%g0,3,counter
3033
3034	.align	16
3035.xupdate4:
3036	cmp	counter,4
3037	ble	.xcont4
3038	fzeros	%f7
3039
3040	sub	counter,4,counter
3041	stx	%o5,[%fp+tmp_py]
3042
3043	st	counter,[%fp+tmp_counter]
3044	ba	.xcont4
3045	or	%g0,4,counter
3046
3047	.align	16
3048.xupdate5:
3049	cmp	counter,5
3050	ble	.xcont5
3051	fzeros	%f5
3052
3053	sub	counter,5,counter
3054	stx	%o5,[%fp+tmp_py]
3055
3056	st	counter,[%fp+tmp_counter]
3057	ba	.xcont5
3058	or	%g0,5,counter
3059
3060	.align	16
3061.xupdate6:
3062	cmp	counter,5
3063	ble	.xcont6
3064	fzeros	%f7
3065
3066	sub	counter,5,counter
3067	stx	%o5,[%fp+tmp_py]
3068
3069	st	counter,[%fp+tmp_counter]
3070	ba	.xcont6
3071	or	%g0,5,counter
3072
3073	.align	16
3074.xupdate7:
3075	cmp	counter,2
3076	ble	.xcont7
3077	fzeros	%f5
3078
3079	sub	counter,2,counter
3080	stx	%o5,[%fp+tmp_py]
3081
3082	st	counter,[%fp+tmp_counter]
3083	ba	.xcont7
3084	or	%g0,2,counter
3085
3086	.align	16
3087.xupdate8:
3088	cmp	counter,3
3089	ble	.xcont8
3090	fzeros	%f7
3091
3092	sub	counter,3,counter
3093	stx	%o5,[%fp+tmp_py]
3094
3095	st	counter,[%fp+tmp_counter]
3096	ba	.xcont8
3097	or	%g0,3,counter
3098
3099	.align	16
3100.xupdate9:
3101	cmp	counter,4
3102	ble	.xcont9
3103	fzeros	%f5
3104
3105	sub	counter,4,counter
3106	stx	%o5,[%fp+tmp_py]
3107
3108	st	counter,[%fp+tmp_counter]
3109	ba	.xcont9
3110	or	%g0,4,counter
3111
3112	.align	16
3113.xupdate10:
3114	cmp	counter,5
3115	ble	.xcont10
3116	fzeros	%f7
3117
3118	sub	counter,5,counter
3119	stx	%o5,[%fp+tmp_py]
3120
3121	st	counter,[%fp+tmp_counter]
3122	ba	.xcont10
3123	or	%g0,5,counter
3124
3125	.align	16
3126.xupdate11:
3127	cmp	counter,5
3128	ble	.xcont11
3129	fzeros	%f5
3130
3131	sub	counter,5,counter
3132	stx	%o5,[%fp+tmp_py]
3133
3134	st	counter,[%fp+tmp_counter]
3135	ba	.xcont11
3136	or	%g0,5,counter
3137
3138	SET_SIZE(__vpowf)
3139
3140