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