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