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