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)
1654 1:
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)
1724 1:
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;
1749 2:
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
1762 3:
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;
1769 4:
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