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