1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  23  */
  24 /*
  25  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
  26  * Use is subject to license terms.
  27  */
  28 
  29         .file   "__vpowf.S"
  30 
  31 #include "libm.h"
  32 
  33         RO_DATA
  34         .align  64
  35 
  36 ! __mt_constexp2fa:
  37         .word   0x3ff00000, 0x00000000, 0x3ff00b1a, 0xfa5abcbf
  38         .word   0x3ff0163d, 0xa9fb3335, 0x3ff02168, 0x143b0281
  39         .word   0x3ff02c9a, 0x3e778061, 0x3ff037d4, 0x2e11bbcc
  40         .word   0x3ff04315, 0xe86e7f85, 0x3ff04e5f, 0x72f654b1
  41         .word   0x3ff059b0, 0xd3158574, 0x3ff0650a, 0x0e3c1f89
  42         .word   0x3ff0706b, 0x29ddf6de, 0x3ff07bd4, 0x2b72a836
  43         .word   0x3ff08745, 0x18759bc8, 0x3ff092bd, 0xf66607e0
  44         .word   0x3ff09e3e, 0xcac6f383, 0x3ff0a9c7, 0x9b1f3919
  45         .word   0x3ff0b558, 0x6cf9890f, 0x3ff0c0f1, 0x45e46c85
  46         .word   0x3ff0cc92, 0x2b7247f7, 0x3ff0d83b, 0x23395dec
  47         .word   0x3ff0e3ec, 0x32d3d1a2, 0x3ff0efa5, 0x5fdfa9c5
  48         .word   0x3ff0fb66, 0xaffed31b, 0x3ff10730, 0x28d7233e
  49         .word   0x3ff11301, 0xd0125b51, 0x3ff11edb, 0xab5e2ab6
  50         .word   0x3ff12abd, 0xc06c31cc, 0x3ff136a8, 0x14f204ab
  51         .word   0x3ff1429a, 0xaea92de0, 0x3ff14e95, 0x934f312e
  52         .word   0x3ff15a98, 0xc8a58e51, 0x3ff166a4, 0x5471c3c2
  53         .word   0x3ff172b8, 0x3c7d517b, 0x3ff17ed4, 0x8695bbc0
  54         .word   0x3ff18af9, 0x388c8dea, 0x3ff19726, 0x58375d2f
  55         .word   0x3ff1a35b, 0xeb6fcb75, 0x3ff1af99, 0xf8138a1c
  56         .word   0x3ff1bbe0, 0x84045cd4, 0x3ff1c82f, 0x95281c6b
  57         .word   0x3ff1d487, 0x3168b9aa, 0x3ff1e0e7, 0x5eb44027
  58         .word   0x3ff1ed50, 0x22fcd91d, 0x3ff1f9c1, 0x8438ce4d
  59         .word   0x3ff2063b, 0x88628cd6, 0x3ff212be, 0x3578a819
  60         .word   0x3ff21f49, 0x917ddc96, 0x3ff22bdd, 0xa27912d1
  61         .word   0x3ff2387a, 0x6e756238, 0x3ff2451f, 0xfb82140a
  62         .word   0x3ff251ce, 0x4fb2a63f, 0x3ff25e85, 0x711ece75
  63         .word   0x3ff26b45, 0x65e27cdd, 0x3ff2780e, 0x341ddf29
  64         .word   0x3ff284df, 0xe1f56381, 0x3ff291ba, 0x7591bb70
  65         .word   0x3ff29e9d, 0xf51fdee1, 0x3ff2ab8a, 0x66d10f13
  66         .word   0x3ff2b87f, 0xd0dad990, 0x3ff2c57e, 0x39771b2f
  67         .word   0x3ff2d285, 0xa6e4030b, 0x3ff2df96, 0x1f641589
  68         .word   0x3ff2ecaf, 0xa93e2f56, 0x3ff2f9d2, 0x4abd886b
  69         .word   0x3ff306fe, 0x0a31b715, 0x3ff31432, 0xedeeb2fd
  70         .word   0x3ff32170, 0xfc4cd831, 0x3ff32eb8, 0x3ba8ea32
  71         .word   0x3ff33c08, 0xb26416ff, 0x3ff34962, 0x66e3fa2d
  72         .word   0x3ff356c5, 0x5f929ff1, 0x3ff36431, 0xa2de883b
  73         .word   0x3ff371a7, 0x373aa9cb, 0x3ff37f26, 0x231e754a
  74         .word   0x3ff38cae, 0x6d05d866, 0x3ff39a40, 0x1b7140ef
  75         .word   0x3ff3a7db, 0x34e59ff7, 0x3ff3b57f, 0xbfec6cf4
  76         .word   0x3ff3c32d, 0xc313a8e5, 0x3ff3d0e5, 0x44ede173
  77         .word   0x3ff3dea6, 0x4c123422, 0x3ff3ec70, 0xdf1c5175
  78         .word   0x3ff3fa45, 0x04ac801c, 0x3ff40822, 0xc367a024
  79         .word   0x3ff4160a, 0x21f72e2a, 0x3ff423fb, 0x2709468a
  80         .word   0x3ff431f5, 0xd950a897, 0x3ff43ffa, 0x3f84b9d4
  81         .word   0x3ff44e08, 0x6061892d, 0x3ff45c20, 0x42a7d232
  82         .word   0x3ff46a41, 0xed1d0057, 0x3ff4786d, 0x668b3237
  83         .word   0x3ff486a2, 0xb5c13cd0, 0x3ff494e1, 0xe192aed2
  84         .word   0x3ff4a32a, 0xf0d7d3de, 0x3ff4b17d, 0xea6db7d7
  85         .word   0x3ff4bfda, 0xd5362a27, 0x3ff4ce41, 0xb817c114
  86         .word   0x3ff4dcb2, 0x99fddd0d, 0x3ff4eb2d, 0x81d8abff
  87         .word   0x3ff4f9b2, 0x769d2ca7, 0x3ff50841, 0x7f4531ee
  88         .word   0x3ff516da, 0xa2cf6642, 0x3ff5257d, 0xe83f4eef
  89         .word   0x3ff5342b, 0x569d4f82, 0x3ff542e2, 0xf4f6ad27
  90         .word   0x3ff551a4, 0xca5d920f, 0x3ff56070, 0xdde910d2
  91         .word   0x3ff56f47, 0x36b527da, 0x3ff57e27, 0xdbe2c4cf
  92         .word   0x3ff58d12, 0xd497c7fd, 0x3ff59c08, 0x27ff07cc
  93         .word   0x3ff5ab07, 0xdd485429, 0x3ff5ba11, 0xfba87a03
  94         .word   0x3ff5c926, 0x8a5946b7, 0x3ff5d845, 0x90998b93
  95         .word   0x3ff5e76f, 0x15ad2148, 0x3ff5f6a3, 0x20dceb71
  96         .word   0x3ff605e1, 0xb976dc09, 0x3ff6152a, 0xe6cdf6f4
  97         .word   0x3ff6247e, 0xb03a5585, 0x3ff633dd, 0x1d1929fd
  98         .word   0x3ff64346, 0x34ccc320, 0x3ff652b9, 0xfebc8fb7
  99         .word   0x3ff66238, 0x82552225, 0x3ff671c1, 0xc70833f6
 100         .word   0x3ff68155, 0xd44ca973, 0x3ff690f4, 0xb19e9538
 101         .word   0x3ff6a09e, 0x667f3bcd, 0x3ff6b052, 0xfa75173e
 102         .word   0x3ff6c012, 0x750bdabf, 0x3ff6cfdc, 0xddd47645
 103         .word   0x3ff6dfb2, 0x3c651a2f, 0x3ff6ef92, 0x98593ae5
 104         .word   0x3ff6ff7d, 0xf9519484, 0x3ff70f74, 0x66f42e87
 105         .word   0x3ff71f75, 0xe8ec5f74, 0x3ff72f82, 0x86ead08a
 106         .word   0x3ff73f9a, 0x48a58174, 0x3ff74fbd, 0x35d7cbfd
 107         .word   0x3ff75feb, 0x564267c9, 0x3ff77024, 0xb1ab6e09
 108         .word   0x3ff78069, 0x4fde5d3f, 0x3ff790b9, 0x38ac1cf6
 109         .word   0x3ff7a114, 0x73eb0187, 0x3ff7b17b, 0x0976cfdb
 110         .word   0x3ff7c1ed, 0x0130c132, 0x3ff7d26a, 0x62ff86f0
 111         .word   0x3ff7e2f3, 0x36cf4e62, 0x3ff7f387, 0x8491c491
 112         .word   0x3ff80427, 0x543e1a12, 0x3ff814d2, 0xadd106d9
 113         .word   0x3ff82589, 0x994cce13, 0x3ff8364c, 0x1eb941f7
 114         .word   0x3ff8471a, 0x4623c7ad, 0x3ff857f4, 0x179f5b21
 115         .word   0x3ff868d9, 0x9b4492ed, 0x3ff879ca, 0xd931a436
 116         .word   0x3ff88ac7, 0xd98a6699, 0x3ff89bd0, 0xa478580f
 117         .word   0x3ff8ace5, 0x422aa0db, 0x3ff8be05, 0xbad61778
 118         .word   0x3ff8cf32, 0x16b5448c, 0x3ff8e06a, 0x5e0866d9
 119         .word   0x3ff8f1ae, 0x99157736, 0x3ff902fe, 0xd0282c8a
 120         .word   0x3ff9145b, 0x0b91ffc6, 0x3ff925c3, 0x53aa2fe2
 121         .word   0x3ff93737, 0xb0cdc5e5, 0x3ff948b8, 0x2b5f98e5
 122         .word   0x3ff95a44, 0xcbc8520f, 0x3ff96bdd, 0x9a7670b3
 123         .word   0x3ff97d82, 0x9fde4e50, 0x3ff98f33, 0xe47a22a2
 124         .word   0x3ff9a0f1, 0x70ca07ba, 0x3ff9b2bb, 0x4d53fe0d
 125         .word   0x3ff9c491, 0x82a3f090, 0x3ff9d674, 0x194bb8d5
 126         .word   0x3ff9e863, 0x19e32323, 0x3ff9fa5e, 0x8d07f29e
 127         .word   0x3ffa0c66, 0x7b5de565, 0x3ffa1e7a, 0xed8eb8bb
 128         .word   0x3ffa309b, 0xec4a2d33, 0x3ffa42c9, 0x80460ad8
 129         .word   0x3ffa5503, 0xb23e255d, 0x3ffa674a, 0x8af46052
 130         .word   0x3ffa799e, 0x1330b358, 0x3ffa8bfe, 0x53c12e59
 131         .word   0x3ffa9e6b, 0x5579fdbf, 0x3ffab0e5, 0x21356eba
 132         .word   0x3ffac36b, 0xbfd3f37a, 0x3ffad5ff, 0x3a3c2774
 133         .word   0x3ffae89f, 0x995ad3ad, 0x3ffafb4c, 0xe622f2ff
 134         .word   0x3ffb0e07, 0x298db666, 0x3ffb20ce, 0x6c9a8952
 135         .word   0x3ffb33a2, 0xb84f15fb, 0x3ffb4684, 0x15b749b1
 136         .word   0x3ffb5972, 0x8de5593a, 0x3ffb6c6e, 0x29f1c52a
 137         .word   0x3ffb7f76, 0xf2fb5e47, 0x3ffb928c, 0xf22749e4
 138         .word   0x3ffba5b0, 0x30a1064a, 0x3ffbb8e0, 0xb79a6f1f
 139         .word   0x3ffbcc1e, 0x904bc1d2, 0x3ffbdf69, 0xc3f3a207
 140         .word   0x3ffbf2c2, 0x5bd71e09, 0x3ffc0628, 0x6141b33d
 141         .word   0x3ffc199b, 0xdd85529c, 0x3ffc2d1c, 0xd9fa652c
 142         .word   0x3ffc40ab, 0x5fffd07a, 0x3ffc5447, 0x78fafb22
 143         .word   0x3ffc67f1, 0x2e57d14b, 0x3ffc7ba8, 0x8988c933
 144         .word   0x3ffc8f6d, 0x9406e7b5, 0x3ffca340, 0x5751c4db
 145         .word   0x3ffcb720, 0xdcef9069, 0x3ffccb0f, 0x2e6d1675
 146         .word   0x3ffcdf0b, 0x555dc3fa, 0x3ffcf315, 0x5b5bab74
 147         .word   0x3ffd072d, 0x4a07897c, 0x3ffd1b53, 0x2b08c968
 148         .word   0x3ffd2f87, 0x080d89f2, 0x3ffd43c8, 0xeacaa1d6
 149         .word   0x3ffd5818, 0xdcfba487, 0x3ffd6c76, 0xe862e6d3
 150         .word   0x3ffd80e3, 0x16c98398, 0x3ffd955d, 0x71ff6075
 151         .word   0x3ffda9e6, 0x03db3285, 0x3ffdbe7c, 0xd63a8315
 152         .word   0x3ffdd321, 0xf301b460, 0x3ffde7d5, 0x641c0658
 153         .word   0x3ffdfc97, 0x337b9b5f, 0x3ffe1167, 0x6b197d17
 154         .word   0x3ffe2646, 0x14f5a129, 0x3ffe3b33, 0x3b16ee12
 155         .word   0x3ffe502e, 0xe78b3ff6, 0x3ffe6539, 0x24676d76
 156         .word   0x3ffe7a51, 0xfbc74c83, 0x3ffe8f79, 0x77cdb740
 157         .word   0x3ffea4af, 0xa2a490da, 0x3ffeb9f4, 0x867cca6e
 158         .word   0x3ffecf48, 0x2d8e67f1, 0x3ffee4aa, 0xa2188510
 159         .word   0x3ffefa1b, 0xee615a27, 0x3fff0f9c, 0x1cb6412a
 160         .word   0x3fff252b, 0x376bba97, 0x3fff3ac9, 0x48dd7274
 161         .word   0x3fff5076, 0x5b6e4540, 0x3fff6632, 0x798844f8
 162         .word   0x3fff7bfd, 0xad9cbe14, 0x3fff91d8, 0x02243c89
 163         .word   0x3fffa7c1, 0x819e90d8, 0x3fffbdba, 0x3692d514
 164         .word   0x3fffd3c2, 0x2b8f71f1, 0x3fffe9d9, 0x6b2a23d9
 165 
 166 ! __mt_constexp2fb:
 167         .word   0x36900000, 0x36a00000, 0x36b00000, 0x36c00000
 168         .word   0x36d00000, 0x36e00000, 0x36f00000, 0x37000000
 169         .word   0x37100000, 0x37200000, 0x37300000, 0x37400000
 170         .word   0x37500000, 0x37600000, 0x37700000, 0x37800000
 171         .word   0x37900000, 0x37a00000, 0x37b00000, 0x37c00000
 172         .word   0x37d00000, 0x37e00000, 0x37f00000, 0x38000000
 173         .word   0x38100000, 0x38200000, 0x38300000, 0x38400000
 174         .word   0x38500000, 0x38600000, 0x38700000, 0x38800000
 175         .word   0x38900000, 0x38a00000, 0x38b00000, 0x38c00000
 176         .word   0x38d00000, 0x38e00000, 0x38f00000, 0x39000000
 177         .word   0x39100000, 0x39200000, 0x39300000, 0x39400000
 178         .word   0x39500000, 0x39600000, 0x39700000, 0x39800000
 179         .word   0x39900000, 0x39a00000, 0x39b00000, 0x39c00000
 180         .word   0x39d00000, 0x39e00000, 0x39f00000, 0x3a000000
 181         .word   0x3a100000, 0x3a200000, 0x3a300000, 0x3a400000
 182         .word   0x3a500000, 0x3a600000, 0x3a700000, 0x3a800000
 183         .word   0x3a900000, 0x3aa00000, 0x3ab00000, 0x3ac00000
 184         .word   0x3ad00000, 0x3ae00000, 0x3af00000, 0x3b000000
 185         .word   0x3b100000, 0x3b200000, 0x3b300000, 0x3b400000
 186         .word   0x3b500000, 0x3b600000, 0x3b700000, 0x3b800000
 187         .word   0x3b900000, 0x3ba00000, 0x3bb00000, 0x3bc00000
 188         .word   0x3bd00000, 0x3be00000, 0x3bf00000, 0x3c000000
 189         .word   0x3c100000, 0x3c200000, 0x3c300000, 0x3c400000
 190         .word   0x3c500000, 0x3c600000, 0x3c700000, 0x3c800000
 191         .word   0x3c900000, 0x3ca00000, 0x3cb00000, 0x3cc00000
 192         .word   0x3cd00000, 0x3ce00000, 0x3cf00000, 0x3d000000
 193         .word   0x3d100000, 0x3d200000, 0x3d300000, 0x3d400000
 194         .word   0x3d500000, 0x3d600000, 0x3d700000, 0x3d800000
 195         .word   0x3d900000, 0x3da00000, 0x3db00000, 0x3dc00000
 196         .word   0x3dd00000, 0x3de00000, 0x3df00000, 0x3e000000
 197         .word   0x3e100000, 0x3e200000, 0x3e300000, 0x3e400000
 198         .word   0x3e500000, 0x3e600000, 0x3e700000, 0x3e800000
 199         .word   0x3e900000, 0x3ea00000, 0x3eb00000, 0x3ec00000
 200         .word   0x3ed00000, 0x3ee00000, 0x3ef00000, 0x3f000000
 201         .word   0x3f100000, 0x3f200000, 0x3f300000, 0x3f400000
 202         .word   0x3f500000, 0x3f600000, 0x3f700000, 0x3f800000
 203         .word   0x3f900000, 0x3fa00000, 0x3fb00000, 0x3fc00000
 204         .word   0x3fd00000, 0x3fe00000, 0x3ff00000, 0x40000000
 205         .word   0x40100000, 0x40200000, 0x40300000, 0x40400000
 206         .word   0x40500000, 0x40600000, 0x40700000, 0x40800000
 207         .word   0x40900000, 0x40a00000, 0x40b00000, 0x40c00000
 208         .word   0x40d00000, 0x40e00000, 0x40f00000, 0x41000000
 209         .word   0x41100000, 0x41200000, 0x41300000, 0x41400000
 210         .word   0x41500000, 0x41600000, 0x41700000, 0x41800000
 211         .word   0x41900000, 0x41a00000, 0x41b00000, 0x41c00000
 212         .word   0x41d00000, 0x41e00000, 0x41f00000, 0x42000000
 213         .word   0x42100000, 0x42200000, 0x42300000, 0x42400000
 214         .word   0x42500000, 0x42600000, 0x42700000, 0x42800000
 215         .word   0x42900000, 0x42a00000, 0x42b00000, 0x42c00000
 216         .word   0x42d00000, 0x42e00000, 0x42f00000, 0x43000000
 217         .word   0x43100000, 0x43200000, 0x43300000, 0x43400000
 218         .word   0x43500000, 0x43600000, 0x43700000, 0x43800000
 219         .word   0x43900000, 0x43a00000, 0x43b00000, 0x43c00000
 220         .word   0x43d00000, 0x43e00000, 0x43f00000, 0x44000000
 221         .word   0x44100000, 0x44200000, 0x44300000, 0x44400000
 222         .word   0x44500000, 0x44600000, 0x44700000, 0x44800000
 223         .word   0x44900000, 0x44a00000, 0x44b00000, 0x44c00000
 224         .word   0x44d00000, 0x44e00000, 0x44f00000, 0x45000000
 225         .word   0x45100000, 0x45200000, 0x45300000, 0x45400000
 226         .word   0x45500000, 0x45600000, 0x45700000, 0x45800000
 227         .word   0x45900000, 0x45a00000, 0x45b00000, 0x45c00000
 228         .word   0x45d00000, 0x45e00000, 0x45f00000, 0x46000000
 229         .word   0x46100000, 0x46200000, 0x46300000, 0x46400000
 230         .word   0x46500000, 0x46600000, 0x46700000, 0x46800000
 231         .word   0x46900000, 0x46a00000, 0x46b00000, 0x46c00000
 232         .word   0x46d00000, 0x46e00000, 0x46f00000, 0x47000000
 233         .word   0x47100000, 0x47200000, 0x47300000, 0x47400000
 234         .word   0x47500000, 0x47600000, 0x47700000, 0x47800000
 235         .word   0x47900000, 0x47a00000, 0x47b00000, 0x47c00000
 236         .word   0x47d00000, 0x47e00000, 0x47f00000, 0x00000000
 237 
 238         .word   0,0,0,0
 239         .word   0,0,0,0
 240 
 241 .CONST_TBL:
 242 ! __mt_constlog4f:
 243         .word   0x00000000, 0x00000000, 0x3e800000, 0x00000000
 244         .word   0x4006fe50, 0xb6ef0851, 0x3e7fc07f, 0x01fc07f0
 245         .word   0x4016e796, 0x85c2d22a, 0x3e7f81f8, 0x1f81f820
 246         .word   0x40211cd1, 0xd5133413, 0x3e7f4465, 0x9e4a4271
 247         .word   0x4026bad3, 0x758efd87, 0x3e7f07c1, 0xf07c1f08
 248         .word   0x402c4dfa, 0xb90aab5f, 0x3e7ecc07, 0xb301ecc0
 249         .word   0x4030eb38, 0x9fa29f9b, 0x3e7e9131, 0xabf0b767
 250         .word   0x4033aa2f, 0xdd27f1c3, 0x3e7e573a, 0xc901e574
 251         .word   0x403663f6, 0xfac91316, 0x3e7e1e1e, 0x1e1e1e1e
 252         .word   0x403918a1, 0x6e46335b, 0x3e7de5d6, 0xe3f8868a
 253         .word   0x403bc842, 0x40adabba, 0x3e7dae60, 0x76b981db
 254         .word   0x403e72ec, 0x117fa5b2, 0x3e7d77b6, 0x54b82c34
 255         .word   0x40408c58, 0x8cda79e4, 0x3e7d41d4, 0x1d41d41d
 256         .word   0x4041dcd1, 0x97552b7b, 0x3e7d0cb5, 0x8f6ec074
 257         .word   0x40432ae9, 0xe278ae1a, 0x3e7cd856, 0x89039b0b
 258         .word   0x404476a9, 0xf983f74d, 0x3e7ca4b3, 0x055ee191
 259         .word   0x4045c01a, 0x39fbd688, 0x3e7c71c7, 0x1c71c71c
 260         .word   0x40470742, 0xd4ef027f, 0x3e7c3f8f, 0x01c3f8f0
 261         .word   0x40484c2b, 0xd02f03b3, 0x3e7c0e07, 0x0381c0e0
 262         .word   0x40498edd, 0x077e70df, 0x3e7bdd2b, 0x899406f7
 263         .word   0x404acf5e, 0x2db4ec94, 0x3e7bacf9, 0x14c1bad0
 264         .word   0x404c0db6, 0xcdd94dee, 0x3e7b7d6c, 0x3dda338b
 265         .word   0x404d49ee, 0x4c325970, 0x3e7b4e81, 0xb4e81b4f
 266         .word   0x404e840b, 0xe74e6a4d, 0x3e7b2036, 0x406c80d9
 267         .word   0x404fbc16, 0xb902680a, 0x3e7af286, 0xbca1af28
 268         .word   0x4050790a, 0xdbb03009, 0x3e7ac570, 0x1ac5701b
 269         .word   0x40511307, 0xdad30b76, 0x3e7a98ef, 0x606a63be
 270         .word   0x4051ac05, 0xb291f070, 0x3e7a6d01, 0xa6d01a6d
 271         .word   0x40524407, 0xab0e073a, 0x3e7a41a4, 0x1a41a41a
 272         .word   0x4052db10, 0xfc4d9aaf, 0x3e7a16d3, 0xf97a4b02
 273         .word   0x40537124, 0xcea4cded, 0x3e79ec8e, 0x951033d9
 274         .word   0x40540646, 0x3b1b0449, 0x3e79c2d1, 0x4ee4a102
 275         .word   0x40549a78, 0x4bcd1b8b, 0x3e799999, 0x9999999a
 276         .word   0x40552dbd, 0xfc4c96b3, 0x3e7970e4, 0xf80cb872
 277         .word   0x4055c01a, 0x39fbd688, 0x3e7948b0, 0xfcd6e9e0
 278         .word   0x4056518f, 0xe4677ba7, 0x3e7920fb, 0x49d0e229
 279         .word   0x4056e221, 0xcd9d0cde, 0x3e78f9c1, 0x8f9c18fa
 280         .word   0x405771d2, 0xba7efb3c, 0x3e78d301, 0x8d3018d3
 281         .word   0x405800a5, 0x63161c54, 0x3e78acb9, 0x0f6bf3aa
 282         .word   0x40588e9c, 0x72e0b226, 0x3e7886e5, 0xf0abb04a
 283         .word   0x40591bba, 0x891f1709, 0x3e786186, 0x18618618
 284         .word   0x4059a802, 0x391e232f, 0x3e783c97, 0x7ab2bedd
 285         .word   0x405a3376, 0x0a7f6051, 0x3e781818, 0x18181818
 286         .word   0x405abe18, 0x797f1f49, 0x3e77f405, 0xfd017f40
 287         .word   0x405b47eb, 0xf73882a1, 0x3e77d05f, 0x417d05f4
 288         .word   0x405bd0f2, 0xe9e79031, 0x3e77ad22, 0x08e0ecc3
 289         .word   0x405c592f, 0xad295b56, 0x3e778a4c, 0x8178a4c8
 290         .word   0x405ce0a4, 0x923a587d, 0x3e7767dc, 0xe434a9b1
 291         .word   0x405d6753, 0xe032ea0f, 0x3e7745d1, 0x745d1746
 292         .word   0x405ded3f, 0xd442364c, 0x3e772428, 0x7f46debc
 293         .word   0x405e726a, 0xa1e754d2, 0x3e7702e0, 0x5c0b8170
 294         .word   0x405ef6d6, 0x7328e220, 0x3e76e1f7, 0x6b4337c7
 295         .word   0x405f7a85, 0x68cb06cf, 0x3e76c16c, 0x16c16c17
 296         .word   0x405ffd79, 0x9a83ff9b, 0x3e76a13c, 0xd1537290
 297         .word   0x40603fda, 0x8b97997f, 0x3e768168, 0x16816817
 298         .word   0x4060809c, 0xf27f703d, 0x3e7661ec, 0x6a5122f9
 299         .word   0x4060c105, 0x00d63aa6, 0x3e7642c8, 0x590b2164
 300         .word   0x40610113, 0xb153c8ea, 0x3e7623fa, 0x77016240
 301         .word   0x406140c9, 0xfaa1e544, 0x3e760581, 0x60581606
 302         .word   0x40618028, 0xcf72976a, 0x3e75e75b, 0xb8d015e7
 303         .word   0x4061bf31, 0x1e95d00e, 0x3e75c988, 0x2b931057
 304         .word   0x4061fde3, 0xd30e8126, 0x3e75ac05, 0x6b015ac0
 305         .word   0x40623c41, 0xd42727c8, 0x3e758ed2, 0x308158ed
 306         .word   0x40627a4c, 0x0585cbf8, 0x3e7571ed, 0x3c506b3a
 307         .word   0x4062b803, 0x473f7ad1, 0x3e755555, 0x55555555
 308         .word   0x4062f568, 0x75eb3f26, 0x3e753909, 0x48f40feb
 309         .word   0x4063327c, 0x6ab49ca7, 0x3e751d07, 0xeae2f815
 310         .word   0x40636f3f, 0xfb6d9162, 0x3e750150, 0x15015015
 311         .word   0x4063abb3, 0xfaa02167, 0x3e74e5e0, 0xa72f0539
 312         .word   0x4063e7d9, 0x379f7016, 0x3e74cab8, 0x8725af6e
 313         .word   0x406423b0, 0x7e986aa9, 0x3e74afd6, 0xa052bf5b
 314         .word   0x40645f3a, 0x98a20739, 0x3e749539, 0xe3b2d067
 315         .word   0x40649a78, 0x4bcd1b8b, 0x3e747ae1, 0x47ae147b
 316         .word   0x4064d56a, 0x5b33cec4, 0x3e7460cb, 0xc7f5cf9a
 317         .word   0x40651011, 0x8708a8f9, 0x3e7446f8, 0x6562d9fb
 318         .word   0x40654a6e, 0x8ca5438e, 0x3e742d66, 0x25d51f87
 319         .word   0x40658482, 0x26989d34, 0x3e741414, 0x14141414
 320         .word   0x4065be4d, 0x0cb51435, 0x3e73fb01, 0x3fb013fb
 321         .word   0x4065f7cf, 0xf41e09af, 0x3e73e22c, 0xbce4a902
 322         .word   0x4066310b, 0x8f553048, 0x3e73c995, 0xa47babe7
 323         .word   0x40666a00, 0x8e4788cc, 0x3e73b13b, 0x13b13b14
 324         .word   0x4066a2af, 0x9e5a0f0a, 0x3e73991c, 0x2c187f63
 325         .word   0x4066db19, 0x6a76194a, 0x3e738138, 0x13813814
 326         .word   0x4067133e, 0x9b156c7c, 0x3e73698d, 0xf3de0748
 327         .word   0x40674b1f, 0xd64e0754, 0x3e73521c, 0xfb2b78c1
 328         .word   0x406782bd, 0xbfdda657, 0x3e733ae4, 0x5b57bcb2
 329         .word   0x4067ba18, 0xf93502e4, 0x3e7323e3, 0x4a2b10bf
 330         .word   0x4067f132, 0x2182cf16, 0x3e730d19, 0x0130d190
 331         .word   0x40682809, 0xd5be7073, 0x3e72f684, 0xbda12f68
 332         .word   0x40685ea0, 0xb0b27b26, 0x3e72e025, 0xc04b8097
 333         .word   0x406894f7, 0x4b06ef8b, 0x3e72c9fb, 0x4d812ca0
 334         .word   0x4068cb0e, 0x3b4b3bbe, 0x3e72b404, 0xad012b40
 335         .word   0x406900e6, 0x160002cd, 0x3e729e41, 0x29e4129e
 336         .word   0x4069367f, 0x6da0ab2f, 0x3e7288b0, 0x1288b013
 337         .word   0x40696bda, 0xd2acb5f6, 0x3e727350, 0xb8812735
 338         .word   0x4069a0f8, 0xd3b0e050, 0x3e725e22, 0x708092f1
 339         .word   0x4069d5d9, 0xfd5010b3, 0x3e724924, 0x92492492
 340         .word   0x406a0a7e, 0xda4c112d, 0x3e723456, 0x789abcdf
 341         .word   0x406a3ee7, 0xf38e181f, 0x3e721fb7, 0x8121fb78
 342         .word   0x406a7315, 0xd02f20c8, 0x3e720b47, 0x0c67c0d9
 343         .word   0x406aa708, 0xf58014d3, 0x3e71f704, 0x7dc11f70
 344         .word   0x406adac1, 0xe711c833, 0x3e71e2ef, 0x3b3fb874
 345         .word   0x406b0e41, 0x26bcc86c, 0x3e71cf06, 0xada2811d
 346         .word   0x406b4187, 0x34a9008c, 0x3e71bb4a, 0x4046ed29
 347         .word   0x406b7494, 0x8f5532da, 0x3e71a7b9, 0x611a7b96
 348         .word   0x406ba769, 0xb39e4964, 0x3e719453, 0x808ca29c
 349         .word   0x406bda07, 0x1cc67e6e, 0x3e718118, 0x11811812
 350         .word   0x406c0c6d, 0x447c5dd3, 0x3e716e06, 0x89427379
 351         .word   0x406c3e9c, 0xa2e1a055, 0x3e715b1e, 0x5f75270d
 352         .word   0x406c7095, 0xae91e1c7, 0x3e71485f, 0x0e0acd3b
 353         .word   0x406ca258, 0xdca93316, 0x3e7135c8, 0x1135c811
 354         .word   0x406cd3e6, 0xa0ca8907, 0x3e712358, 0xe75d3033
 355         .word   0x406d053f, 0x6d260896, 0x3e711111, 0x11111111
 356         .word   0x406d3663, 0xb27f31d5, 0x3e70fef0, 0x10fef011
 357         .word   0x406d6753, 0xe032ea0f, 0x3e70ecf5, 0x6be69c90
 358         .word   0x406d9810, 0x643d6615, 0x3e70db20, 0xa88f4696
 359         .word   0x406dc899, 0xab3ff56c, 0x3e70c971, 0x4fbcda3b
 360         .word   0x406df8f0, 0x2086af2c, 0x3e70b7e6, 0xec259dc8
 361         .word   0x406e2914, 0x2e0e0140, 0x3e70a681, 0x0a6810a7
 362         .word   0x406e5906, 0x3c8822ce, 0x3e70953f, 0x39010954
 363         .word   0x406e88c6, 0xb3626a73, 0x3e708421, 0x08421084
 364         .word   0x406eb855, 0xf8ca88fb, 0x3e707326, 0x0a47f7c6
 365         .word   0x406ee7b4, 0x71b3a950, 0x3e70624d, 0xd2f1a9fc
 366         .word   0x406f16e2, 0x81db7630, 0x3e705197, 0xf7d73404
 367         .word   0x406f45e0, 0x8bcf0655, 0x3e704104, 0x10410410
 368         .word   0x406f74ae, 0xf0efafae, 0x3e703091, 0xb51f5e1a
 369         .word   0x406fa34e, 0x1177c233, 0x3e702040, 0x81020408
 370         .word   0x406fd1be, 0x4c7f2af9, 0x3e701010, 0x10101010
 371         .word   0x40700000, 0x00000000, 0x3e700000, 0x00000000
 372 
 373 ! __mt_constexp2f:
 374         .word   0x3ff00000, 0x00000000, 0x3ff00b1a, 0xfa5abcbf
 375         .word   0x3ff0163d, 0xa9fb3335, 0x3ff02168, 0x143b0281
 376         .word   0x3ff02c9a, 0x3e778061, 0x3ff037d4, 0x2e11bbcc
 377         .word   0x3ff04315, 0xe86e7f85, 0x3ff04e5f, 0x72f654b1
 378         .word   0x3ff059b0, 0xd3158574, 0x3ff0650a, 0x0e3c1f89
 379         .word   0x3ff0706b, 0x29ddf6de, 0x3ff07bd4, 0x2b72a836
 380         .word   0x3ff08745, 0x18759bc8, 0x3ff092bd, 0xf66607e0
 381         .word   0x3ff09e3e, 0xcac6f383, 0x3ff0a9c7, 0x9b1f3919
 382         .word   0x3fefb558, 0x6cf9890f, 0x3fefc0f1, 0x45e46c85
 383         .word   0x3fefcc92, 0x2b7247f7, 0x3fefd83b, 0x23395dec
 384         .word   0x3fefe3ec, 0x32d3d1a2, 0x3fefefa5, 0x5fdfa9c5
 385         .word   0x3feffb66, 0xaffed31b, 0x3ff00730, 0x28d7233e
 386         .word   0x3ff01301, 0xd0125b51, 0x3ff01edb, 0xab5e2ab6
 387         .word   0x3ff02abd, 0xc06c31cc, 0x3ff036a8, 0x14f204ab
 388         .word   0x3ff0429a, 0xaea92de0, 0x3ff04e95, 0x934f312e
 389         .word   0x3ff05a98, 0xc8a58e51, 0x3ff066a4, 0x5471c3c2
 390         .word   0x3fef72b8, 0x3c7d517b, 0x3fef7ed4, 0x8695bbc0
 391         .word   0x3fef8af9, 0x388c8dea, 0x3fef9726, 0x58375d2f
 392         .word   0x3fefa35b, 0xeb6fcb75, 0x3fefaf99, 0xf8138a1c
 393         .word   0x3fefbbe0, 0x84045cd4, 0x3fefc82f, 0x95281c6b
 394         .word   0x3fefd487, 0x3168b9aa, 0x3fefe0e7, 0x5eb44027
 395         .word   0x3fefed50, 0x22fcd91d, 0x3feff9c1, 0x8438ce4d
 396         .word   0x3ff0063b, 0x88628cd6, 0x3ff012be, 0x3578a819
 397         .word   0x3ff01f49, 0x917ddc96, 0x3ff02bdd, 0xa27912d1
 398         .word   0x3fef387a, 0x6e756238, 0x3fef451f, 0xfb82140a
 399         .word   0x3fef51ce, 0x4fb2a63f, 0x3fef5e85, 0x711ece75
 400         .word   0x3fef6b45, 0x65e27cdd, 0x3fef780e, 0x341ddf29
 401         .word   0x3fef84df, 0xe1f56381, 0x3fef91ba, 0x7591bb70
 402         .word   0x3fef9e9d, 0xf51fdee1, 0x3fefab8a, 0x66d10f13
 403         .word   0x3fefb87f, 0xd0dad990, 0x3fefc57e, 0x39771b2f
 404         .word   0x3fefd285, 0xa6e4030b, 0x3fefdf96, 0x1f641589
 405         .word   0x3fefecaf, 0xa93e2f56, 0x3feff9d2, 0x4abd886b
 406         .word   0x3fef06fe, 0x0a31b715, 0x3fef1432, 0xedeeb2fd
 407         .word   0x3fef2170, 0xfc4cd831, 0x3fef2eb8, 0x3ba8ea32
 408         .word   0x3fef3c08, 0xb26416ff, 0x3fef4962, 0x66e3fa2d
 409         .word   0x3fef56c5, 0x5f929ff1, 0x3fef6431, 0xa2de883b
 410         .word   0x3fef71a7, 0x373aa9cb, 0x3fef7f26, 0x231e754a
 411         .word   0x3fef8cae, 0x6d05d866, 0x3fef9a40, 0x1b7140ef
 412         .word   0x3fefa7db, 0x34e59ff7, 0x3fefb57f, 0xbfec6cf4
 413         .word   0x3fefc32d, 0xc313a8e5, 0x3fefd0e5, 0x44ede173
 414         .word   0x3feedea6, 0x4c123422, 0x3feeec70, 0xdf1c5175
 415         .word   0x3feefa45, 0x04ac801c, 0x3fef0822, 0xc367a024
 416         .word   0x3fef160a, 0x21f72e2a, 0x3fef23fb, 0x2709468a
 417         .word   0x3fef31f5, 0xd950a897, 0x3fef3ffa, 0x3f84b9d4
 418         .word   0x3fef4e08, 0x6061892d, 0x3fef5c20, 0x42a7d232
 419         .word   0x3fef6a41, 0xed1d0057, 0x3fef786d, 0x668b3237
 420         .word   0x3fef86a2, 0xb5c13cd0, 0x3fef94e1, 0xe192aed2
 421         .word   0x3fefa32a, 0xf0d7d3de, 0x3fefb17d, 0xea6db7d7
 422         .word   0x3feebfda, 0xd5362a27, 0x3feece41, 0xb817c114
 423         .word   0x3feedcb2, 0x99fddd0d, 0x3feeeb2d, 0x81d8abff
 424         .word   0x3feef9b2, 0x769d2ca7, 0x3fef0841, 0x7f4531ee
 425         .word   0x3fef16da, 0xa2cf6642, 0x3fef257d, 0xe83f4eef
 426         .word   0x3fef342b, 0x569d4f82, 0x3fef42e2, 0xf4f6ad27
 427         .word   0x3fef51a4, 0xca5d920f, 0x3fef6070, 0xdde910d2
 428         .word   0x3fef6f47, 0x36b527da, 0x3fef7e27, 0xdbe2c4cf
 429         .word   0x3fef8d12, 0xd497c7fd, 0x3fef9c08, 0x27ff07cc
 430         .word   0x3feeab07, 0xdd485429, 0x3feeba11, 0xfba87a03
 431         .word   0x3feec926, 0x8a5946b7, 0x3feed845, 0x90998b93
 432         .word   0x3feee76f, 0x15ad2148, 0x3feef6a3, 0x20dceb71
 433         .word   0x3fef05e1, 0xb976dc09, 0x3fef152a, 0xe6cdf6f4
 434         .word   0x3fef247e, 0xb03a5585, 0x3fef33dd, 0x1d1929fd
 435         .word   0x3fef4346, 0x34ccc320, 0x3fef52b9, 0xfebc8fb7
 436         .word   0x3fef6238, 0x82552225, 0x3fef71c1, 0xc70833f6
 437         .word   0x3fef8155, 0xd44ca973, 0x3fef90f4, 0xb19e9538
 438         .word   0x3feea09e, 0x667f3bcd, 0x3feeb052, 0xfa75173e
 439         .word   0x3feec012, 0x750bdabf, 0x3feecfdc, 0xddd47645
 440         .word   0x3feedfb2, 0x3c651a2f, 0x3feeef92, 0x98593ae5
 441         .word   0x3feeff7d, 0xf9519484, 0x3fef0f74, 0x66f42e87
 442         .word   0x3fef1f75, 0xe8ec5f74, 0x3fef2f82, 0x86ead08a
 443         .word   0x3fef3f9a, 0x48a58174, 0x3fef4fbd, 0x35d7cbfd
 444         .word   0x3fef5feb, 0x564267c9, 0x3fef7024, 0xb1ab6e09
 445         .word   0x3fef8069, 0x4fde5d3f, 0x3fef90b9, 0x38ac1cf6
 446         .word   0x3feea114, 0x73eb0187, 0x3feeb17b, 0x0976cfdb
 447         .word   0x3feec1ed, 0x0130c132, 0x3feed26a, 0x62ff86f0
 448         .word   0x3feee2f3, 0x36cf4e62, 0x3feef387, 0x8491c491
 449         .word   0x3fef0427, 0x543e1a12, 0x3fef14d2, 0xadd106d9
 450         .word   0x3fef2589, 0x994cce13, 0x3fef364c, 0x1eb941f7
 451         .word   0x3fef471a, 0x4623c7ad, 0x3fef57f4, 0x179f5b21
 452         .word   0x3fef68d9, 0x9b4492ed, 0x3fef79ca, 0xd931a436
 453         .word   0x3fef8ac7, 0xd98a6699, 0x3fef9bd0, 0xa478580f
 454         .word   0x3feeace5, 0x422aa0db, 0x3feebe05, 0xbad61778
 455         .word   0x3feecf32, 0x16b5448c, 0x3feee06a, 0x5e0866d9
 456         .word   0x3feef1ae, 0x99157736, 0x3fef02fe, 0xd0282c8a
 457         .word   0x3fef145b, 0x0b91ffc6, 0x3fef25c3, 0x53aa2fe2
 458         .word   0x3fef3737, 0xb0cdc5e5, 0x3fef48b8, 0x2b5f98e5
 459         .word   0x3fef5a44, 0xcbc8520f, 0x3fef6bdd, 0x9a7670b3
 460         .word   0x3fef7d82, 0x9fde4e50, 0x3fef8f33, 0xe47a22a2
 461         .word   0x3fefa0f1, 0x70ca07ba, 0x3fefb2bb, 0x4d53fe0d
 462         .word   0x3feec491, 0x82a3f090, 0x3feed674, 0x194bb8d5
 463         .word   0x3feee863, 0x19e32323, 0x3feefa5e, 0x8d07f29e
 464         .word   0x3fef0c66, 0x7b5de565, 0x3fef1e7a, 0xed8eb8bb
 465         .word   0x3fef309b, 0xec4a2d33, 0x3fef42c9, 0x80460ad8
 466         .word   0x3fef5503, 0xb23e255d, 0x3fef674a, 0x8af46052
 467         .word   0x3fef799e, 0x1330b358, 0x3fef8bfe, 0x53c12e59
 468         .word   0x3fef9e6b, 0x5579fdbf, 0x3fefb0e5, 0x21356eba
 469         .word   0x3fefc36b, 0xbfd3f37a, 0x3fefd5ff, 0x3a3c2774
 470         .word   0x3feee89f, 0x995ad3ad, 0x3feefb4c, 0xe622f2ff
 471         .word   0x3fef0e07, 0x298db666, 0x3fef20ce, 0x6c9a8952
 472         .word   0x3fef33a2, 0xb84f15fb, 0x3fef4684, 0x15b749b1
 473         .word   0x3fef5972, 0x8de5593a, 0x3fef6c6e, 0x29f1c52a
 474         .word   0x3fef7f76, 0xf2fb5e47, 0x3fef928c, 0xf22749e4
 475         .word   0x3fefa5b0, 0x30a1064a, 0x3fefb8e0, 0xb79a6f1f
 476         .word   0x3fefcc1e, 0x904bc1d2, 0x3fefdf69, 0xc3f3a207
 477         .word   0x3feff2c2, 0x5bd71e09, 0x3ff00628, 0x6141b33d
 478         .word   0x3fef199b, 0xdd85529c, 0x3fef2d1c, 0xd9fa652c
 479         .word   0x3fef40ab, 0x5fffd07a, 0x3fef5447, 0x78fafb22
 480         .word   0x3fef67f1, 0x2e57d14b, 0x3fef7ba8, 0x8988c933
 481         .word   0x3fef8f6d, 0x9406e7b5, 0x3fefa340, 0x5751c4db
 482         .word   0x3fefb720, 0xdcef9069, 0x3fefcb0f, 0x2e6d1675
 483         .word   0x3fefdf0b, 0x555dc3fa, 0x3feff315, 0x5b5bab74
 484         .word   0x3ff0072d, 0x4a07897c, 0x3ff01b53, 0x2b08c968
 485         .word   0x3ff02f87, 0x080d89f2, 0x3ff043c8, 0xeacaa1d6
 486         .word   0x3fef5818, 0xdcfba487, 0x3fef6c76, 0xe862e6d3
 487         .word   0x3fef80e3, 0x16c98398, 0x3fef955d, 0x71ff6075
 488         .word   0x3fefa9e6, 0x03db3285, 0x3fefbe7c, 0xd63a8315
 489         .word   0x3fefd321, 0xf301b460, 0x3fefe7d5, 0x641c0658
 490         .word   0x3feffc97, 0x337b9b5f, 0x3ff01167, 0x6b197d17
 491         .word   0x3ff02646, 0x14f5a129, 0x3ff03b33, 0x3b16ee12
 492         .word   0x3ff0502e, 0xe78b3ff6, 0x3ff06539, 0x24676d76
 493         .word   0x3ff07a51, 0xfbc74c83, 0x3ff08f79, 0x77cdb740
 494         .word   0x3fefa4af, 0xa2a490da, 0x3fefb9f4, 0x867cca6e
 495         .word   0x3fefcf48, 0x2d8e67f1, 0x3fefe4aa, 0xa2188510
 496         .word   0x3feffa1b, 0xee615a27, 0x3ff00f9c, 0x1cb6412a
 497         .word   0x3ff0252b, 0x376bba97, 0x3ff03ac9, 0x48dd7274
 498         .word   0x3ff05076, 0x5b6e4540, 0x3ff06632, 0x798844f8
 499         .word   0x3ff07bfd, 0xad9cbe14, 0x3ff091d8, 0x02243c89
 500         .word   0x3ff0a7c1, 0x819e90d8, 0x3ff0bdba, 0x3692d514
 501         .word   0x3ff0d3c2, 0x2b8f71f1, 0x3ff0e9d9, 0x6b2a23d9
 502 
 503         .word   0xc057150d, 0x5f6e1c54  ! KA3 = -3.60659926599003171364e-01*256.0
 504         .word   0x405ec71c, 0x2e92efda  ! KA2 =  4.80902715189356683026e-01*256.0
 505         .word   0xc0671547, 0x653cbec4  ! KA1 = -7.21347520569871841065e-01*256.0
 506         .word   0x40771547, 0x652af190  ! KA0 =  1.44269504088069658645e+00*256.0
 507         .word   0x3ecebfbe, 0x9d182250  ! KB2 = 3.66556671660783833261e-06
 508         .word   0x3f662e43, 0xe2528362  ! KB1 = 2.70760782821392980564e-03
 509         .word   0x40e00000, 0x00000000  ! HTHRESH = 32768.0
 510         .word   0xc0e2c000, 0x00000000  ! LTHRESH = -38400.0 ; 0.0f
 511         .word   0x3f800000, 0x00000000  ! 1.0f               ; free
 512 
 513 #define tmp_px          STACK_BIAS-48
 514 #define tmp_py          STACK_BIAS-40
 515 #define tmp_counter     STACK_BIAS-32
 516 #define tmp0            STACK_BIAS-28
 517 #define tmp1            STACK_BIAS-24
 518 #define tmp2            STACK_BIAS-20
 519 #define tmp3            STACK_BIAS-16
 520 #define tmp4            STACK_BIAS-12
 521 #define tmp5            STACK_BIAS-8
 522 #define tmp6            STACK_BIAS-4
 523 
 524 
 525 #define KA3             %f34
 526 #define KA2             %f36
 527 #define KA1             %f38
 528 #define KA0             %f40
 529 #define KB2             %f42
 530 #define KB1             %f44
 531 #define HTHRESHOLD      %f30
 532 #define LTHRESHOLD      %f32
 533 
 534 #define counter         %o7
 535 #define stridex         %i0
 536 #define stridey         %i4
 537 #define stridez         %l3
 538 
 539 #define CONST_0x8000    %l1
 540 #define MASK_0x007fffff %l4
 541 #define MASK_0x7fffffff %l5
 542 
 543 ! sizeof temp storage - must be a multiple of 16 for V9
 544 #define tmps            0x30
 545 
 546 !--------------------------------------------------------------------
 547 !               !!!!!   vpowf algorithm !!!!!
 548 !  uy = *(unsigned int*)py;
 549 !  ux = *(unsigned int*)px;
 550 !  ay = uy & 0x7fffffff;
 551 !  ax0 = ux & 0x7fffffff;
 552 !  sx = ux >> 31;
 553 !  yisint0 = 0;                /* Y - non-integer */
 554 !  if (ax0 >= 0x7f800000 || ay >= 0x7f800000) { /* |X| or |Y| = Inf,Nan */
 555 !    if (ax0 > 0x7f800000 || ay > 0x7f800000)   /* |X| or |Y| = Nan     */
 556 !      pz[0] = *px * *py;
 557 !      goto next;
 558 !    if (ay == 0x7f800000) { /* |Y| = Inf */
 559 !      float fy;
 560 !      if (ax0 == 0x3f800000) fy = *py - *py; /* +-1 ** +-Inf = NaN */
 561 !      else fy = ((ax0 < 0x3f800000) != (uy >> 31)) ? ZERO : *(float*) &ay;
 562 !      pz[0] = fy;
 563 !      goto next;
 564 !    }
 565 !    if (sx) {                               /* X = -Inf     */
 566 !      exp = ay >> 23;
 567 !      if (exp >= 0x97)                      /* |Y| >= 2^24  */
 568 !        yisint0 = 2;                      /* Y - even     */
 569 !      else {
 570 !        if (exp >= 0x7f) {                  /* |Y| >= 1     */
 571 !          i0 = ay >> ((0x7f + 23) - exp);
 572 !          if ((i0 << ((0x7f + 23) - exp)) == ay) yisint0 = 2 - (i0 & 1);
 573 !        }
 574 !      }
 575 !    }
 576 !    if (uy >> 31) ax0 = 0;
 577 !    ax0 += yisint0 << 31;
 578 !    pz[0] =  *(float*)&ax0;
 579 !    goto next;
 580 !  }
 581 !  exp0 = (ax0 >> 23) - 127;
 582 !  if ((int)ux < 0x00800000) {         /* X = denormal or negative */
 583 !    if ((int)ax0 < 0x00800000) {    /* X = denormal */
 584 !      *((float*) &ax0) = (float) (int)ax0;
 585 !      exp0 = (ax0 >> 23) - (127 + 149);
 586 !    }
 587 !    if ((int)ux <= 0) {                      /* X <= 0       */
 588 !      exp = ay >> 23;
 589 !      if (exp >= 0x97)                       /* |Y| >= 2^24  */
 590 !        yisint0 = 2;                       /* Y - even     */
 591 !      else {
 592 !        if (exp >= 0x7f) {                   /* |Y| >= 1     */
 593 !          i0 = ay >> ((0x7f + 23) - exp);
 594 !          if ((i0 << ((0x7f + 23) - exp)) == ay) yisint0 = 2 - (i0 & 1);
 595 !        }
 596 !      }
 597 !      if (ax0 == 0) { /* pow(0,Y) */
 598 !        float fy;
 599 !        fy = (uy >> 31) ? ONE / ZERO : ZERO;
 600 !        if (sx & yisint0) fy = -fy;
 601 !        pz[0] = fy;
 602 !        goto next;
 603 !      }
 604 !      if (yisint0 == 0) { /* pow(neg,non-integer) */
 605 !        pz[0] = ZERO / ZERO;  /* NaN */
 606 !        goto next;
 607 !      }
 608 !    }
 609 !  }
 610 !
 611 !  ax0 = *px;
 612 !  exp0 = ax0 & 0x7fffffff;
 613 !  exp0 >>= 23;
 614 !  exp0 -= 127;
 615 !  exp0 <<= 8;
 616 !  ax0 &= 0x007fffff;
 617 !  i0 = ax0 + 0x8000;
 618 !  i0 &= 0xffff0000;
 619 !  ind0 = i0 >> 12;
 620 !  ind0 &= -8;
 621 !  i0 = ax0 - i0;
 622 !  dtmp0 = (double) i0;
 623 !  dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
 624 !  y0 =  dtmp0 * dtmp1;
 625 !  dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
 626 !  dtmp1 = (double) exp0;
 627 !  yy0 = dtmp0 + dtmp1;
 628 !  dtmp0 = KA3 * y0;
 629 !  dtmp0 += KA2;
 630 !  dtmp0 *= y0;
 631 !  dtmp0 += KA1;
 632 !  dtmp0 *= y0;
 633 !  dtmp0 += KA0;
 634 !  dtmp0 *= y0;
 635 !  yy0 += dtmp0;
 636 !  ftmp0 = *py0;
 637 !  dtmp0 = (double)ftmp0;
 638 !  yy0 *= dtmp0;
 639 !  if (yy0 >= HTHRESH)
 640 !    yy0 = HTHRESH;
 641 !  if (yy0 <= LTHRESH)
 642 !    yy0 = LTHRESH;
 643 !  ind0 = (int) yy0;
 644 !  ((int*)&dtmp1)[0] = ind0;
 645 !  ((int*)&dtmp1)[1] = 0;
 646 !  dtmp1 = vis_fpackfix(dtmp1);
 647 !  dtmp0 = (double)ind0;
 648 !  y0 = yy0 - dtmp0;
 649 !  dtmp0 = KB2 * y0;
 650 !  dtmp0 += KB1;
 651 !  yy0 = dtmp0 * y0;
 652 !  ind0 &= 255;
 653 !  ind0 <<= 3;
 654 !  di0 = *(double*)((char*)__mt_constexp2f + ind0);
 655 !  di0 = vis_fpadd32(di0,dtmp1);
 656 !  yy0 *= di0;
 657 !  yy0 += di0;
 658 !  ftmp0 = (float)yy0;
 659 !  *pz0 = ftmp0;
 660 !--------------------------------------------------------------------
 661 !               !!!!!   vpowf algorithm,stridex=0       !!!!!
 662 !
 663 !  ax = ax0 = *px;
 664 !  exp0 = ax0 & 0x7fffffff;
 665 !  exp0 >>= 23;
 666 !  exp0 -= 127;
 667 !  exp0 <<= 8;
 668 !  ax0 &= 0x007fffff;
 669 !  i0 = ax0 + 0x8000;
 670 !  i0 &= 0xffff0000;
 671 !  ind0 = i0 >> 12;
 672 !  ind0 &= -8;
 673 !  i0 = ax0 - i0;
 674 !  dtmp0 = (double) i0;
 675 !  dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
 676 !  y0 =  dtmp0 * dtmp1;
 677 !  dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
 678 !  dtmp1 = (double) exp0;
 679 !  yy0 = dtmp0 + dtmp1;
 680 !  dtmp0 = KA3 * y0;
 681 !  dtmp0 += KA2;
 682 !  dtmp0 *= y0;
 683 !  dtmp0 += KA1;
 684 !  dtmp0 *= y0;
 685 !  dtmp0 += KA0;
 686 !  dtmp0 *= y0;
 687 !  yy = yy0 + dtmp0;
 688 !
 689 !  uy = ((int*)py)[0];
 690 !  ay = uy & 0x7fffffff;
 691 !  if (ay >= 0x7f800000) {       /* |Y| = Inf or Nan */
 692 !    float fy;
 693 !   if (ay > 0x7f800000) fy = *py + *py;  /* |Y| = Nan     */
 694 !    else fy = ((ax < 0x3f800000) != (uy >> 31)) ? ZERO : *(float*)&ay;
 695 !    pz[0] = fy;
 696 !    goto next;
 697 !  }
 698 !
 699 !
 700 !  ftmp0 = py[0];
 701 !  dtmp0 = (double)ftmp0;
 702 !  yy0 = dtmp0 * yy;
 703 !  if (yy0 >= HTHRESH)
 704 !  if (yy0 <= LTHRESH)
 705 !  yy0 = HTHRESH;
 706 !  yy0 = LTHRESH;
 707 !  ii0 = (int) yy0;
 708 !  dtmp0 = (double)ii0;
 709 !  i0 = ii0 >> 5;
 710 !  i0 &= -8;
 711 !  di0 = ((double*)((char*)(__mt_constexp2fb + 150) + i0))[0];
 712 !  y0 = yy0 - dtmp0;
 713 !  dtmp0 = KB2 * y0;
 714 !  dtmp0 += KB1;
 715 !  yy0 = dtmp0 * y0;
 716 !  ii0 &= 255;
 717 !  ii0 <<= 3;
 718 !  dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
 719 !  di0 *= dtmp0;
 720 !  dtmp0 = yy0 * di0;
 721 !  dtmp0 += di0;
 722 !  ftmp0 = (float)dtmp0;
 723 !  pz[0] = ftmp0;
 724 !--------------------------------------------------------------------
 725         ENTRY(__vpowf)
 726         save    %sp,-SA(MINFRAME)-tmps,%sp
 727         PIC_SETUP(l7)
 728         PIC_SET(l7,.CONST_TBL,l2)
 729         wr      %g0,0x60,%gsr
 730 
 731 #ifdef __sparcv9
 732         ldx     [%fp+STACK_BIAS+176],stridez
 733 #else
 734         ld      [%fp+STACK_BIAS+92],stridez
 735 #endif
 736 
 737         ld      [%i1],%o3
 738         add     %l2,2064,%l0
 739         st      %i0,[%fp+tmp_counter]
 740         add     %l0,2048,%l6
 741         ldd     [%l6],KA3
 742         ldd     [%l6+8],KA2
 743         sll     stridey,2,stridey
 744         ldd     [%l6+16],KA1
 745         sll     stridez,2,stridez
 746         ldd     [%l6+24],KA0
 747         sll     %i2,2,stridex
 748         ldd     [%l6+32],KB2
 749         sethi   %hi(0x7ffffc00),MASK_0x7fffffff
 750         fzero   %f2
 751         ldd     [%l6+40],KB1
 752         add     MASK_0x7fffffff,1023,MASK_0x7fffffff
 753         fzero   %f10
 754         ldd     [%l6+48],HTHRESHOLD
 755         sethi   %hi(0x7ffc00),MASK_0x007fffff
 756         fzero   %f20
 757         ldd     [%l6+56],LTHRESHOLD
 758         sethi   %hi(0x8000),CONST_0x8000
 759         add     MASK_0x007fffff,1023,MASK_0x007fffff
 760 
 761         cmp     stridex,0
 762         bne,pt  %icc,.common_case
 763         sethi   %hi(0x00800000),%l6
 764 
 765         cmp     %o3,%l6
 766         bl,pn   %icc,.common_case
 767         sethi   %hi(0x7f800000),%o1
 768 
 769         cmp     %o3,%o1
 770         bge,pn  %icc,.common_case
 771         sethi   %hi(0x3f800000),%l6
 772 
 773         cmp     %o3,%l6
 774         bne,pt  %icc,.stridex_zero
 775         nop
 776 
 777 .common_case:
 778         stx     %i1,[%fp+tmp_px]
 779         stx     %i3,[%fp+tmp_py]
 780 .begin:
 781         ld      [%fp+tmp_counter],counter
 782         ldx     [%fp+tmp_px],%o2
 783         ldx     [%fp+tmp_py],%i2
 784         st      %g0,[%fp+tmp_counter]
 785 .begin1:
 786         cmp     counter,0
 787         ble,pn  %icc,.exit
 788         lda     [%o2]0x82,%i1           ! (Y0_2) ax0 = *px;
 789 
 790         lda     [%i2]0x82,%l7
 791         sethi   %hi(0xffff0000),%l6
 792         sethi   %hi(0x7f800000),%o5
 793 
 794         and     %i1,MASK_0x7fffffff,%i3 ! (Y0_2) exp0 = ax0 & 0x7fffffff;
 795         and     %i1,MASK_0x007fffff,%g5 ! (Y0_2) ax0 &= 0x007fffff;
 796 
 797         cmp     %i3,%o5                 ! (Y0_2) ax0 ? 0x7f800000
 798         bge,pn  %icc,.spec1             ! (Y0_2) if( ax0 >= 0x7f800000 )
 799         and     %l7,MASK_0x7fffffff,%o4
 800 
 801         cmp     %o4,%o5                 ! (Y0_2) ay0 ? 0x7f800000
 802         bge,pn  %icc,.spec1             ! (Y0_2) if( ay0 >= 0x7f800000 )
 803         nop
 804 
 805         cmp     %i1,MASK_0x007fffff     ! (Y0_2) ux0 ? 0x800000
 806         ble,pn  %icc,.spec2             ! (Y0_2) if(ux0 < 0x800000)
 807         srl     %i3,23,%o3              ! (Y0_2) exp0 >>= 23;
 808 
 809         sub     %o3,127,%o3             ! (Y0_2) exp0 -= 127;
 810 
 811         add     %g5,CONST_0x8000,%i3    ! (Y0_2) i0 = ax0 + 0x8000;
 812 
 813         sll     %o3,8,%o4               ! (Y0_2) exp0 <<= 8;
 814         and     %i3,%l6,%i3             ! (Y0_2) i0 &= 0xffff0000;
 815         st      %o4,[%fp+tmp3]          ! (Y0_2) STORE exp0
 816 
 817         sub     %g5,%i3,%o4             ! (Y0_2) i0 = ax0 - i0;
 818         st      %o4,[%fp+tmp2]          ! (Y0_2) STORE i0
 819         add     %o2,stridex,%o2         ! px += stridex
 820 
 821         sra     %i3,12,%o0              ! (Y0_2) ind0 = i0 >> 12;
 822         lda     [%o2]0x82,%o3           ! (Y1_2) ax0 = *px;
 823 
 824         and     %o0,-8,%g5              ! (Y0_2) ind0 &= -8;
 825         ld      [%fp+tmp2],%f14         ! (Y0_2) dtmp0 = (double) i0;
 826 
 827         and     %o3,MASK_0x7fffffff,%i3 ! (Y1_2) exp0 = ax0 & 0x7fffffff;
 828         and     %o3,MASK_0x007fffff,%o0 ! (Y1_2) ax0 &= 0x007fffff;
 829 
 830         cmp     %i3,%o5                 ! (Y1_2) ax0 ? 0x7f800000
 831         add     %l2,%g5,%g1             ! (Y0_2) (char*)__mt_constlog4f + ind0
 832 
 833         srl     %i3,23,%i3              ! (Y1_2) exp0 >>= 23;
 834         add     %o0,CONST_0x8000,%i1    ! (Y1_2) i0 = ax0 + 0x8000;
 835 
 836         ldd     [%g1+8],%f48            ! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
 837         sub     %i3,127,%i3             ! (Y1_2) exp0 -= 127;
 838         fitod   %f14,%f60               ! (Y0_2) dtmp0 = (double) i0;
 839 
 840         sll     %i3,8,%i3               ! (Y1_2) exp0 <<= 8;
 841         and     %i1,%l6,%i1             ! (Y1_2) i0 &= 0xffff0000;
 842         st      %i3,[%fp+tmp4]          ! (Y1_2) STORE exp0
 843 
 844         sub     %o0,%i1,%o0             ! (Y1_2) i0 = ax0 - i0;
 845         st      %o0,[%fp+tmp5]          ! (Y1_2) STORE i0
 846         bge,pn  %icc,.update0           ! (Y1_2) if(ax0 >= 0x7f800000)
 847         nop
 848 .cont0:
 849         cmp     %o3,MASK_0x007fffff     ! (Y1_2) ux0 ? 0x800000
 850 
 851         fmuld   %f60,%f48,%f48          ! (Y0_2) y0 =  dtmp0 * dtmp1;
 852         ble,pn  %icc,.update1           ! (Y1_2) if(ux0 < 0x800000)
 853         nop
 854 .cont1:
 855         fmuld   KA3,%f48,%f62           ! (Y0_2) dtmp0 = KA3 * y0;
 856 
 857         faddd   %f62,KA2,%f22           ! (Y0_2) dtmp0 += KA2;
 858 
 859         sra     %i1,12,%o1              ! (Y1_2) ind0 = i0 >> 12;
 860         add     %o2,stridex,%i3         ! px += stridex
 861         lda     [stridex+%o2]0x82,%g1   ! (Y2_2) ax0 = *px;
 862 
 863         and     %o1,-8,%o0              ! (Y1_2) ind0 &= -8;
 864         ld      [%fp+tmp5],%f12         ! (Y1_2) LOAD i0
 865 
 866         and     %g1,MASK_0x7fffffff,%i1 ! (Y2_2) exp0 = ax0 & 0x7fffffff;
 867         and     %g1,MASK_0x007fffff,%o2 ! (Y2_2) ax0 &= 0x007fffff;
 868         lda     [%i2]0x82,%f0           ! (Y0_2) ftmp0 = *py0;
 869 
 870         srl     %i1,23,%o3              ! (Y2_2) exp0 >>= 23;
 871         cmp     %i1,%o5                 ! (Y2_2) ax0 ? 0x7f800000
 872 
 873         fmuld   %f22,%f48,%f26          ! (Y0_2) dtmp0 *= y0;
 874         add     %l2,%o0,%i1             ! (Y1_2) (char*)__mt_constlog4f + ind0
 875         sub     %o3,127,%l7             ! (Y2_2) exp0 -= 127;
 876 
 877         add     %o2,CONST_0x8000,%o1    ! (Y2_2) i0 = ax0 + 0x8000;
 878         ldd     [%i1+8],%f50            ! (Y1_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
 879         fitod   %f12,%f28               ! (Y1_2) dtmp0 = (double) i0;
 880 
 881         sll     %l7,8,%l7               ! (Y2_2) exp0 <<= 8;
 882         and     %o1,%l6,%o1             ! (Y2_2) i0 &= 0xffff0000;
 883         st      %l7,[%fp+tmp6]          ! (Y2_2) STORE exp0
 884 
 885         sub     %o2,%o1,%i1             ! (Y2_2) i0 = ax0 - i0;
 886         st      %i1,[%fp+tmp2]          ! (Y2_2) STORE i0
 887         bge,pn  %icc,.update2           ! (Y2_2) if(ax0 >= 0x7f800000)
 888         nop
 889 .cont2:
 890         cmp     %g1,MASK_0x007fffff     ! (Y2_2) ux0 ? 0x800000
 891 
 892         fmuld   %f28,%f50,%f46          ! (Y1_2) y0 =  dtmp0 * dtmp1;
 893         ble,pn  %icc,.update3           ! (Y2_2) if(ux0 < 0x800000)
 894         faddd   %f26,KA1,%f50           ! (Y0_2) dtmp0 += KA1;
 895 .cont3:
 896         ld      [%fp+tmp3],%f4          ! (Y0_2) dtmp1 = (double) exp0;
 897 
 898         fstod   %f0,%f24                ! (Y0_2) dtmp0 = (double)ftmp0;
 899 
 900         fmuld   KA3,%f46,%f28           ! (Y1_1) dtmp0 = KA3 * y0;
 901 
 902         fitod   %f4,%f26                ! (Y0_1) dtmp1 = (double) exp0;
 903 
 904         fmuld   %f50,%f48,%f50          ! (Y0_1) dtmp0 *= y0;
 905 
 906         faddd   %f28,KA2,%f28           ! (Y1_1) dtmp0 += KA2;
 907 
 908         ldd     [%l2+%g5],%f60          ! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
 909         add     %i3,stridex,%o2         ! px += stridex
 910 
 911         lda     [%o2]0x82,%i1           ! (Y0_2) ax0 = *px;
 912         sra     %o1,12,%g5              ! (Y2_1) ind0 = i0 >> 12;
 913 
 914         faddd   %f50,KA0,%f58           ! (Y0_1) dtmp0 += KA0;
 915         and     %g5,-8,%o1              ! (Y2_1) ind0 &= -8;
 916         ld      [%fp+tmp2],%f6          ! (Y2_1) dtmp0 = (double) i0;
 917 
 918         and     %i1,MASK_0x7fffffff,%i3 ! (Y0_2) exp0 = ax0 & 0x7fffffff;
 919         and     %i1,MASK_0x007fffff,%g5 ! (Y0_2) ax0 &= 0x007fffff;
 920 
 921         srl     %i3,23,%o3              ! (Y0_2) exp0 >>= 23;
 922         add     %l2,%o1,%g1             ! (Y2_1) (char*)__mt_constlog4f + ind0
 923         faddd   %f60,%f26,%f26          ! (Y0_1) yy0 = dtmp0 + dtmp1;
 924 
 925         fmuld   %f28,%f46,%f50          ! (Y1_1) dtmp0 *= y0;
 926         sub     %o3,127,%o3             ! (Y0_2) exp0 -= 127;
 927         cmp     %i3,%o5                 ! (Y0_2) ax0 ? 0x7f800000
 928 
 929         fmuld   %f58,%f48,%f48          ! (Y0_1) dtmp0 *= y0;
 930         add     %g5,CONST_0x8000,%i3    ! (Y0_2) i0 = ax0 + 0x8000;
 931         ldd     [%g1+8],%f58            ! (Y2_1) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
 932         fitod   %f6,%f54                ! (Y2_1) dtmp0 = (double) i0;
 933 
 934         sll     %o3,8,%o4               ! (Y0_2) exp0 <<= 8;
 935         and     %i3,%l6,%i3             ! (Y0_2) i0 &= 0xffff0000;
 936         st      %o4,[%fp+tmp3]          ! (Y0_2) STORE exp0
 937 
 938         sub     %g5,%i3,%o4             ! (Y0_2) i0 = ax0 - i0;
 939         st      %o4,[%fp+tmp2]          ! (Y0_2) STORE i0
 940         bge,pn  %icc,.update4           ! (Y0_2) if( ax0 >= 0x7f800000 )
 941         nop
 942 .cont4:
 943         lda     [stridey+%i2]0x82,%g1   ! (Y1_1) ay0 = *(unsigned*)py0
 944         add     %i2,stridey,%o4         ! py += stridey
 945         cmp     %i1,MASK_0x007fffff     ! (Y0_2) ux0 ? 0x800000
 946 
 947         fmuld   %f54,%f58,%f28          ! (Y2_1) y0 =  dtmp0 * dtmp1;
 948         lda     [stridey+%i2]0x82,%f2   ! (Y1_1) ftmp0 = *py0;
 949         ble,pn  %icc,.update5           ! (Y0_2) if(ux0 < 0x800000)
 950         faddd   %f50,KA1,%f54           ! (Y1_1) dtmp0 += KA1;
 951 .cont5:
 952         and     %g1,MASK_0x7fffffff,%g1 ! (Y1_1) ay0 &= 0x7fffffff;
 953         ld      [%fp+tmp4],%f1          ! (Y1_1) LOAD exp0
 954         faddd   %f26,%f48,%f58          ! (Y0_1) yy0 += dtmp0;
 955 
 956         cmp     %g1,%o5                 ! (Y1_1) ay0 ? 0x7f800000
 957         bge,pn  %icc,.update6           ! (Y1_1) if(ay0 >= 0x7f800000)
 958         nop
 959 .cont6:
 960         fmuld   KA3,%f28,%f62           ! (Y2_1) dtmp0 = KA3 * y0;
 961         fstod   %f2,%f22                ! (Y1_1) dtmp0 = (double)ftmp0;
 962 
 963         fmuld   %f24,%f58,%f58          ! (Y0_1) yy0 *= dtmp0;
 964 
 965         fitod   %f1,%f48                ! (Y1_1) dtmp1 = (double) exp0;
 966 
 967         fmuld   %f54,%f46,%f54          ! (Y1_1) dtmp0 *= y0;
 968 
 969         faddd   %f62,KA2,%f26           ! (Y2_1) dtmp0 += KA2;
 970 
 971         add     %o2,stridex,%o2         ! px += stridex
 972         ldd     [%l2+%o0],%f60          ! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
 973         fcmped  %fcc0,HTHRESHOLD,%f58   ! (Y0_1) if (yy0 >= HTHRESH)
 974 
 975         sra     %i3,12,%o0              ! (Y0_2) ind0 = i0 >> 12;
 976         lda     [%o2]0x82,%o3           ! (Y1_2) ax0 = *px;
 977 
 978         faddd   %f54,KA0,%f56           ! (Y1_1) dtmp0 += KA0;
 979         and     %o0,-8,%g5              ! (Y0_2) ind0 &= -8;
 980         ld      [%fp+tmp2],%f14         ! (Y0_2) dtmp0 = (double) i0;
 981 
 982         and     %o3,MASK_0x7fffffff,%i3 ! (Y1_2) exp0 = ax0 & 0x7fffffff;
 983         and     %o3,MASK_0x007fffff,%o0 ! (Y1_2) ax0 &= 0x007fffff;
 984 
 985         cmp     %i3,%o5                 ! (Y1_2) ax0 ? 0x7f800000
 986         add     %l2,%g5,%g1             ! (Y0_2) (char*)__mt_constlog4f + ind0
 987         faddd   %f60,%f48,%f12          ! (Y1_1) yy0 = dtmp0 + dtmp1;
 988 
 989         fmuld   %f26,%f28,%f50          ! (Y2_1) dtmp0 *= y0;
 990         srl     %i3,23,%i3              ! (Y1_2) exp0 >>= 23;
 991         add     %o0,CONST_0x8000,%i1    ! (Y1_2) i0 = ax0 + 0x8000;
 992         fcmped  %fcc1,LTHRESHOLD,%f58   ! (Y0_1) if (yy0 <= LTHRESH)
 993 
 994         fmuld   %f56,%f46,%f46          ! (Y1_1) dtmp0 *= y0;
 995         ldd     [%g1+8],%f48            ! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
 996         sub     %i3,127,%i3             ! (Y1_2) exp0 -= 127;
 997         fitod   %f14,%f60               ! (Y0_2) dtmp0 = (double) i0;
 998 
 999         sll     %i3,8,%i2               ! (Y1_2) exp0 <<= 8;
1000         and     %i1,%l6,%i1             ! (Y1_2) i0 &= 0xffff0000;
1001         st      %i2,[%fp+tmp4]          ! (Y1_2) STORE exp0
1002 
1003         sub     %o0,%i1,%o0             ! (Y1_2) i0 = ax0 - i0;
1004         st      %o0,[%fp+tmp5]          ! (Y1_2) STORE i0
1005         bge,pn  %icc,.update7           ! (Y1_2) if(ax0 >= 0x7f800000)
1006         nop
1007 .cont7:
1008         lda     [stridey+%o4]0x82,%i3   ! Y(2_1) ay0 = *py0
1009         cmp     %o3,MASK_0x007fffff     ! (Y1_2) ux0 ? 0x800000
1010         add     %o4,stridey,%i2         ! py += stridey;
1011         fmovdl  %fcc0,HTHRESHOLD,%f58   ! (Y0_1) yy0 = HTHRESH;
1012 
1013         fmuld   %f60,%f48,%f48          ! (Y0_2) y0 =  dtmp0 * dtmp1;
1014         lda     [stridey+%o4]0x82,%f16  ! (Y2_1) ftmp0 = *py0;
1015         ble,pn  %icc,.update8           ! (Y1_2) if(ux0 < 0x800000)
1016         faddd   %f50,KA1,%f52           ! (Y2_1) dtmp0 += KA1;
1017 .cont8:
1018         and     %i3,MASK_0x7fffffff,%i3 ! (Y2_1) ay0 &= 0x7fffffff
1019         ld      [%fp+tmp6],%f17         ! (Y2_1) dtmp1 = (double) exp0;
1020         faddd   %f12,%f46,%f60          ! (Y1_1) yy0 += dtmp0;
1021 
1022         cmp     %i3,%o5                 ! (Y2_1) ay0 ? 0x7f800000
1023         bge,pn  %icc,.update9           ! (Y2_1) if(ay0 >= 0x7f800000)
1024         nop
1025 
1026 .cont9:
1027         fmovdg  %fcc1,LTHRESHOLD,%f58   ! (Y0_1) yy0 = LTHRESH;
1028 
1029         fmuld   KA3,%f48,%f62           ! (Y0_2) dtmp0 = KA3 * y0;
1030         fstod   %f16,%f54               ! (Y2_1) dtmp0 = (double)ftmp0;
1031 
1032         fmuld   %f22,%f60,%f56          ! (Y1_1) yy0 *= dtmp0;
1033 
1034         fitod   %f17,%f24               ! (Y2_1) dtmp1 = (double) exp0;
1035 
1036         fmuld   %f52,%f28,%f52          ! (Y2_1) dtmp0 *= y0;
1037         fdtoi   %f58,%f10               ! (Y0_1) ind0 = (int) yy0;
1038 
1039         st      %f10,[%fp+tmp0]         ! (Y0_1) STORE ind0
1040         faddd   %f62,KA2,%f22           ! (Y0_2) dtmp0 += KA2;
1041 
1042         fcmped  %fcc0,HTHRESHOLD,%f56   ! (Y1_1) if (yy0 >= HTHRESH)
1043         ldd     [%l2+%o1],%f60          ! (Y2_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1044 
1045         sra     %i1,12,%o1              ! (Y1_2) ind0 = i0 >> 12;
1046         add     %o2,stridex,%i3         ! px += stridex
1047         lda     [stridex+%o2]0x82,%g1   ! (Y2_2) ax0 = *px;
1048 
1049         and     %o1,-8,%o0              ! (Y1_2) ind0 &= -8;
1050         add     %i2,stridey,%i2         ! py += stridey
1051         ld      [%fp+tmp5],%f12         ! (Y1_2) LOAD i0
1052         faddd   %f52,KA0,%f4            ! (Y2_1) dtmp0 += KA0;
1053 
1054         and     %g1,MASK_0x7fffffff,%i1 ! (Y2_2) exp0 = ax0 & 0x7fffffff;
1055         and     %g1,MASK_0x007fffff,%o2 ! (Y2_2) ax0 &= 0x007fffff;
1056         lda     [%i2]0x82,%f0           ! (Y0_2) ftmp0 = *py0;
1057         fitod   %f10,%f52               ! (Y0_1) dtmp0 = (double)ind0;
1058 
1059         srl     %i1,23,%o3              ! (Y2_2) exp0 >>= 23;
1060         cmp     %i1,%o5                 ! (Y2_2) ax0 ? 0x7f800000
1061         faddd   %f60,%f24,%f18          ! (Y2_1) yy0 = dtmp0 + dtmp1;
1062 
1063         fmuld   %f22,%f48,%f26          ! (Y0_2) dtmp0 *= y0;
1064         add     %l2,%o0,%i1             ! (Y1_2) (char*)__mt_constlog4f + ind0
1065         sub     %o3,127,%l7             ! (Y2_2) exp0 -= 127;
1066         fcmped  %fcc1,LTHRESHOLD,%f56   ! (Y1_1) if (yy0 <= LTHRESH)
1067 
1068         fmuld   %f4,%f28,%f24           ! (Y2_1) dtmp0 *= y0;
1069         add     %o2,CONST_0x8000,%o1    ! (Y2_2) i0 = ax0 + 0x8000;
1070         ldd     [%i1+8],%f50            ! (Y1_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
1071         fitod   %f12,%f28               ! (Y1_2) dtmp0 = (double) i0;
1072 
1073         sll     %l7,8,%l7               ! (Y2_2) exp0 <<= 8;
1074         and     %o1,%l6,%o1             ! (Y2_2) i0 &= 0xffff0000;
1075         st      %l7,[%fp+tmp6]          ! (Y2_2) STORE exp0
1076         fsubd   %f58,%f52,%f60          ! (Y0_1) y0 = yy0 - dtmp0;
1077 
1078 
1079         sub     %o2,%o1,%i1             ! (Y2_2) i0 = ax0 - i0;
1080         st      %i1,[%fp+tmp2]          ! (Y2_2) STORE i0
1081         bge,pn  %icc,.update10          ! (Y2_2) if(ax0 >= 0x7f800000)
1082         nop
1083 .cont10:
1084         lda     [%i2]0x82,%o2           ! (Y0_2) ay0 = *(int*)py0;
1085         cmp     %g1,MASK_0x007fffff     ! (Y2_2) ux0 ? 0x800000
1086         fmovdl  %fcc0,HTHRESHOLD,%f56   ! (Y1_1) yy0 = HTHRESH;
1087 
1088         fmuld   %f28,%f50,%f46          ! (Y1_2) y0 =  dtmp0 * dtmp1;
1089         ble,pn  %icc,.update11          ! (Y2_2) if(ux0 < 0x800000)
1090         faddd   %f26,KA1,%f50           ! (Y0_2) dtmp0 += KA1;
1091 .cont11:
1092         fmuld   KB2,%f60,%f62           ! (Y0_1) dtmp0 = KB2 * y0;
1093         and     %o2,MASK_0x7fffffff,%o2 ! (Y0_2) ay0 &= 0x7fffffff
1094         ld      [%fp+tmp3],%f4          ! (Y0_2) dtmp1 = (double) exp0;
1095         faddd   %f18,%f24,%f52          ! (Y2_1) yy0 += dtmp0;
1096 
1097         ld      [%fp+tmp0],%g1          ! (Y0_1) LAOD ind0
1098         cmp     %o2,%o5                 ! (Y0_2) ay0 ? 0x7f800000
1099         bge,pn  %icc,.update12          ! (Y0_2) if( ay0 >= 0x7f800000)
1100         nop
1101 .cont12:
1102         fstod   %f0,%f24                ! (Y0_2) dtmp0 = (double)ftmp0;
1103 
1104         cmp     counter,6               ! counter
1105         bl,pn   %icc,.tail
1106         sub     %i5,stridez,%o4
1107 
1108         ba      .main_loop
1109         nop
1110 
1111         .align  16
1112 .main_loop:
1113         fmuld   KA3,%f46,%f28           ! (Y1_1) dtmp0 = KA3 * y0;
1114         and     %g1,255,%o2             ! (Y0_0) ind0 &= 255;
1115         sub     counter,3,counter       ! counter
1116         fmovdg  %fcc1,LTHRESHOLD,%f56   ! (Y1_0) yy0 = LTHRESH;
1117 
1118         fmuld   %f54,%f52,%f18          ! (Y2_0) yy0 *= dtmp0;
1119         sll     %o2,3,%i1               ! (Y0_0) ind0 <<= 3;
1120         add     %o4,stridez,%l7         ! pz += stridez
1121         faddd   %f62,KB1,%f62           ! (Y0_0) dtmp0 += KB1;
1122 
1123         fpackfix        %f10,%f10       ! (Y0_0) dtmp1 = vis_fpackfix(dtmp1);
1124         fitod   %f4,%f26                ! (Y0_1) dtmp1 = (double) exp0;
1125         ldd     [%l0+%i1],%f58          ! (Y0_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1126 
1127         fmuld   %f50,%f48,%f50          ! (Y0_1) dtmp0 *= y0;
1128         fdtoi   %f56,%f20               ! (Y1_0) ind0 = (int) yy0;
1129         st      %f20,[%fp+tmp1]         ! (Y1_0) STORE ind0
1130 
1131         faddd   %f28,KA2,%f28           ! (Y1_1) dtmp0 += KA2;
1132 
1133         fmuld   %f62,%f60,%f62          ! (Y0_0) yy0 = dtmp0 * y0;
1134         ldd     [%l2+%g5],%f60          ! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1135         add     %i3,stridex,%o2         ! px += stridex
1136         fcmped  %fcc0,HTHRESHOLD,%f18   ! (Y2_0) if (yy0 >= HTHRESH)
1137 
1138         lda     [%o2]0x82,%i1           ! (Y0_2) ax0 = *px;
1139         sra     %o1,12,%g5              ! (Y2_1) ind0 = i0 >> 12;
1140         fpadd32 %f10,%f58,%f22          ! (Y0_0) di0 = vis_fpadd32(di0,dtmp1);
1141 
1142         faddd   %f50,KA0,%f58           ! (Y0_1) dtmp0 += KA0;
1143         and     %g5,-8,%o1              ! (Y2_1) ind0 &= -8;
1144         ld      [%fp+tmp2],%f6          ! (Y2_1) dtmp0 = (double) i0;
1145 
1146         fitod   %f20,%f52               ! (Y1_0) dtmp0 = (double)ind0;
1147         and     %i1,MASK_0x7fffffff,%i3 ! (Y0_2) exp0 = ax0 & 0x7fffffff;
1148         and     %i1,MASK_0x007fffff,%g5 ! (Y0_2) ax0 &= 0x007fffff;
1149 
1150         fmuld   %f62,%f22,%f62          ! (Y0_0) yy0 *= di0;
1151         srl     %i3,23,%o3              ! (Y0_2) exp0 >>= 23;
1152         add     %l2,%o1,%g1             ! (Y2_1) (char*)__mt_constlog4f + ind0
1153         faddd   %f60,%f26,%f26          ! (Y0_1) yy0 = dtmp0 + dtmp1;
1154 
1155         fmuld   %f28,%f46,%f50          ! (Y1_1) dtmp0 *= y0;
1156         sub     %o3,127,%o3             ! (Y0_2) exp0 -= 127;
1157         cmp     %i3,%o5                 ! (Y0_2) ax0 ? 0x7f800000
1158         fcmped  %fcc1,LTHRESHOLD,%f18   ! (Y2_0) if (yy0 <= LTHRESH)
1159 
1160         fmuld   %f58,%f48,%f48          ! (Y0_1) dtmp0 *= y0;
1161         add     %g5,CONST_0x8000,%i3    ! (Y0_2) i0 = ax0 + 0x8000;
1162         ldd     [%g1+8],%f58            ! (Y2_1) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
1163         fitod   %f6,%f54                ! (Y2_1) dtmp0 = (double) i0;
1164 
1165         sll     %o3,8,%o4               ! (Y0_2) exp0 <<= 8;
1166         and     %i3,%l6,%i3             ! (Y0_2) i0 &= 0xffff0000;
1167         st      %o4,[%fp+tmp3]          ! (Y0_2) STORE exp0
1168         fsubd   %f56,%f52,%f52          ! (Y1_0) y0 = yy0 - dtmp0;
1169 
1170         sub     %g5,%i3,%o4             ! (Y0_2) i0 = ax0 - i0;
1171         st      %o4,[%fp+tmp2]          ! (Y0_2) STORE i0
1172         bge,pn  %icc,.update13          ! (Y0_2) if( ax0 >= 0x7f800000 )
1173         faddd   %f62,%f22,%f62          ! (Y0_0) yy0 += di0;
1174 .cont13:
1175         lda     [stridey+%i2]0x82,%g1   ! (Y1_1) ay0 = *(unsigned*)py0
1176         add     %i2,stridey,%o4         ! py += stridey
1177         cmp     %i1,MASK_0x007fffff     ! (Y0_2) ux0 ? 0x800000
1178         fmovdl  %fcc0,HTHRESHOLD,%f18   ! (Y2_0) yy0 = HTHRESH;
1179 
1180         fmuld   %f54,%f58,%f28          ! (Y2_1) y0 =  dtmp0 * dtmp1;
1181         lda     [stridey+%i2]0x82,%f2   ! (Y1_1) ftmp0 = *py0;
1182         ble,pn  %icc,.update14          ! (Y0_2) if(ux0 < 0x800000)
1183         faddd   %f50,KA1,%f54           ! (Y1_1) dtmp0 += KA1;
1184 .cont14:
1185         fmuld   KB2,%f52,%f56           ! (Y1_0) dtmp0 = KB2 * y0;
1186         and     %g1,MASK_0x7fffffff,%g1 ! (Y1_1) ay0 &= 0x7fffffff;
1187         ld      [%fp+tmp4],%f1          ! (Y1_1) LOAD exp0
1188         faddd   %f26,%f48,%f58          ! (Y0_1) yy0 += dtmp0;
1189 
1190         ld      [%fp+tmp1],%g5          ! (Y1_0) ind0 = (int) yy0;
1191         cmp     %g1,%o5                 ! (Y1_1) ay0 ? 0x7f800000
1192         bge,pn  %icc,.update15          ! (Y1_1) if(ay0 >= 0x7f800000)
1193         fdtos   %f62,%f8                ! (Y0_0) ftmp0 = (float)yy0;
1194 .cont15:
1195         st      %f8,[%l7]               ! (Y0_0) *pz0 = ftmp0;
1196         fmovdg  %fcc1,LTHRESHOLD,%f18   ! (Y2_0) yy0 = LTHRESH;
1197 
1198         add     %l7,stridez,%l7         ! pz += stridez
1199         fmuld   KA3,%f28,%f62           ! (Y2_1) dtmp0 = KA3 * y0;
1200         and     %g5,255,%g5             ! (Y1_0) ind0 &= 255;
1201         fstod   %f2,%f22                ! (Y1_1) dtmp0 = (double)ftmp0;
1202 
1203         fmuld   %f24,%f58,%f58          ! (Y0_1) yy0 *= dtmp0;
1204         sll     %g5,3,%i2               ! (Y1_0) ind0 <<= 3;
1205         faddd   %f56,KB1,%f60           ! (Y1_0) dtmp0 += KB1;
1206 
1207         fpackfix        %f20,%f20       ! (Y1_0) dtmp1 = vis_fpackfix(dtmp1);
1208         fitod   %f1,%f48                ! (Y1_1) dtmp1 = (double) exp0;
1209         ldd     [%l0+%i2],%f56          ! (Y1_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1210 
1211         fmuld   %f54,%f46,%f54          ! (Y1_1) dtmp0 *= y0;
1212         fdtoi   %f18,%f2                ! (Y2_0) ind0 = (int) yy0;
1213         st      %f2,[%fp+tmp1]          ! (Y2_0) STORE ind0
1214 
1215         faddd   %f62,KA2,%f26           ! (Y2_1) dtmp0 += KA2;
1216 
1217         fmuld   %f60,%f52,%f62          ! (Y1_0) yy0 = dtmp0 * y0;
1218         add     %o2,stridex,%o2         ! px += stridex
1219         ldd     [%l2+%o0],%f60          ! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1220         fcmped  %fcc0,HTHRESHOLD,%f58   ! (Y0_1) if (yy0 >= HTHRESH)
1221 
1222         fpadd32 %f20,%f56,%f52          ! (Y1_0) di0 = vis_fpadd32(di0,dtmp1);
1223         sra     %i3,12,%o0              ! (Y0_2) ind0 = i0 >> 12;
1224         lda     [%o2]0x82,%o3           ! (Y1_2) ax0 = *px;
1225 
1226         faddd   %f54,KA0,%f56           ! (Y1_1) dtmp0 += KA0;
1227         and     %o0,-8,%g5              ! (Y0_2) ind0 &= -8;
1228         ld      [%fp+tmp2],%f14         ! (Y0_2) dtmp0 = (double) i0;
1229 
1230         fitod   %f2,%f54                ! (Y2_0) dtmp0 = (double)ind0;
1231         and     %o3,MASK_0x7fffffff,%i3 ! (Y1_2) exp0 = ax0 & 0x7fffffff;
1232         and     %o3,MASK_0x007fffff,%o0 ! (Y1_2) ax0 &= 0x007fffff;
1233 
1234         fmuld   %f62,%f52,%f62          ! (Y1_0) yy0 *= di0;
1235         cmp     %i3,%o5                 ! (Y1_2) ax0 ? 0x7f800000
1236         add     %l2,%g5,%g1             ! (Y0_2) (char*)__mt_constlog4f + ind0
1237         faddd   %f60,%f48,%f12          ! (Y1_1) yy0 = dtmp0 + dtmp1;
1238 
1239         fmuld   %f26,%f28,%f50          ! (Y2_1) dtmp0 *= y0;
1240         srl     %i3,23,%i3              ! (Y1_2) exp0 >>= 23;
1241         add     %o0,CONST_0x8000,%i1    ! (Y1_2) i0 = ax0 + 0x8000;
1242         fcmped  %fcc1,LTHRESHOLD,%f58   ! (Y0_1) if (yy0 <= LTHRESH)
1243 
1244         fmuld   %f56,%f46,%f46          ! (Y1_1) dtmp0 *= y0;
1245         ldd     [%g1+8],%f48            ! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
1246         sub     %i3,127,%i3             ! (Y1_2) exp0 -= 127;
1247         fitod   %f14,%f60               ! (Y0_2) dtmp0 = (double) i0;
1248 
1249         sll     %i3,8,%i2               ! (Y1_2) exp0 <<= 8;
1250         and     %i1,%l6,%i1             ! (Y1_2) i0 &= 0xffff0000;
1251         st      %i2,[%fp+tmp4]          ! (Y1_2) STORE exp0
1252         fsubd   %f18,%f54,%f26          ! (Y2_0) y0 = yy0 - dtmp0;
1253 
1254         sub     %o0,%i1,%o0             ! (Y1_2) i0 = ax0 - i0;
1255         st      %o0,[%fp+tmp5]          ! (Y1_2) STORE i0
1256         bge,pn  %icc,.update16          ! (Y1_2) if(ax0 >= 0x7f800000)
1257         faddd   %f62,%f52,%f54          ! (Y1_0) yy0 += di0;
1258 .cont16:
1259         lda     [stridey+%o4]0x82,%i3   ! Y(2_1) ay0 = *py0
1260         cmp     %o3,MASK_0x007fffff     ! (Y1_2) ux0 ? 0x800000
1261         add     %o4,stridey,%i2         ! py += stridey;
1262         fmovdl  %fcc0,HTHRESHOLD,%f58   ! (Y0_1) yy0 = HTHRESH;
1263 
1264         fmuld   %f60,%f48,%f48          ! (Y0_2) y0 =  dtmp0 * dtmp1;
1265         lda     [stridey+%o4]0x82,%f16  ! (Y2_1) ftmp0 = *py0;
1266         ble,pn  %icc,.update17          ! (Y1_2) if(ux0 < 0x800000)
1267         faddd   %f50,KA1,%f52           ! (Y2_1) dtmp0 += KA1;
1268 .cont17:
1269         fmuld   KB2,%f26,%f4            ! (Y2_0) dtmp0 = KB2 * y0;
1270         and     %i3,MASK_0x7fffffff,%i3 ! (Y2_1) ay0 &= 0x7fffffff
1271         ld      [%fp+tmp6],%f17         ! (Y2_1) dtmp1 = (double) exp0;
1272         faddd   %f12,%f46,%f60          ! (Y1_1) yy0 += dtmp0;
1273 
1274         ld      [%fp+tmp1],%o0
1275         cmp     %i3,%o5                 ! (Y2_1) ay0 ? 0x7f800000
1276         bge,pn  %icc,.update18          ! (Y2_1) if(ay0 >= 0x7f800000)
1277         fdtos   %f54,%f15               ! (Y1_0) ftmp0 = (float)yy0;
1278 .cont18:
1279         st      %f15,[%l7]              ! (Y1_0) *pz0 = ftmp0;
1280         add     %l7,stridez,%o4         ! pz += stridez
1281         fmovdg  %fcc1,LTHRESHOLD,%f58   ! (Y0_1) yy0 = LTHRESH;
1282 
1283         fmuld   KA3,%f48,%f62           ! (Y0_2) dtmp0 = KA3 * y0;
1284         and     %o0,255,%o0             ! (Y2_0) ind0 &= 255;
1285         fstod   %f16,%f54               ! (Y2_1) dtmp0 = (double)ftmp0;
1286 
1287         fmuld   %f22,%f60,%f56          ! (Y1_1) yy0 *= dtmp0;
1288         sll     %o0,3,%l7               ! (Y2_0) ind0 <<= 3;
1289         faddd   %f4,KB1,%f60            ! (Y2_0) dtmp0 += KB1;
1290 
1291         fpackfix        %f2,%f2         ! (Y2_0) dtmp1 = vis_fpackfix(dtmp1);
1292         fitod   %f17,%f24               ! (Y2_1) dtmp1 = (double) exp0;
1293         ldd     [%l0+%l7],%f4           ! (Y2_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1294 
1295         fmuld   %f52,%f28,%f52          ! (Y2_1) dtmp0 *= y0;
1296         fdtoi   %f58,%f10               ! (Y0_1) ind0 = (int) yy0;
1297 
1298         st      %f10,[%fp+tmp0]         ! (Y0_1) STORE ind0
1299         faddd   %f62,KA2,%f22           ! (Y0_2) dtmp0 += KA2;
1300 
1301         fmuld   %f60,%f26,%f62          ! (Y2_0) yy0 = dtmp0 * y0;
1302         fcmped  %fcc0,HTHRESHOLD,%f56   ! (Y1_1) if (yy0 >= HTHRESH)
1303         ldd     [%l2+%o1],%f60          ! (Y2_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1304 
1305         sra     %i1,12,%o1              ! (Y1_2) ind0 = i0 >> 12;
1306         add     %o2,stridex,%i3         ! px += stridex
1307         lda     [stridex+%o2]0x82,%g1   ! (Y2_2) ax0 = *px;
1308         fpadd32 %f2,%f4,%f46            ! (Y2_0) di0 = vis_fpadd32(di0,dtmp1);
1309 
1310         and     %o1,-8,%o0              ! (Y1_2) ind0 &= -8;
1311         add     %i2,stridey,%i2         ! py += stridey
1312         ld      [%fp+tmp5],%f12         ! (Y1_2) LOAD i0
1313         faddd   %f52,KA0,%f4            ! (Y2_1) dtmp0 += KA0;
1314 
1315         and     %g1,MASK_0x7fffffff,%i1 ! (Y2_2) exp0 = ax0 & 0x7fffffff;
1316         and     %g1,MASK_0x007fffff,%o2 ! (Y2_2) ax0 &= 0x007fffff;
1317         lda     [%i2]0x82,%f0           ! (Y0_2) ftmp0 = *py0;
1318         fitod   %f10,%f52               ! (Y0_1) dtmp0 = (double)ind0;
1319 
1320         fmuld   %f62,%f46,%f62          ! (Y2_0) yy0 *= di0;
1321         srl     %i1,23,%o3              ! (Y2_2) exp0 >>= 23;
1322         cmp     %i1,%o5                 ! (Y2_2) ax0 ? 0x7f800000
1323         faddd   %f60,%f24,%f18          ! (Y2_1) yy0 = dtmp0 + dtmp1;
1324 
1325         fmuld   %f22,%f48,%f26          ! (Y0_2) dtmp0 *= y0;
1326         add     %l2,%o0,%i1             ! (Y1_2) (char*)__mt_constlog4f + ind0
1327         sub     %o3,127,%l7             ! (Y2_2) exp0 -= 127;
1328         fcmped  %fcc1,LTHRESHOLD,%f56   ! (Y1_1) if (yy0 <= LTHRESH)
1329 
1330         fmuld   %f4,%f28,%f24           ! (Y2_1) dtmp0 *= y0;
1331         add     %o2,CONST_0x8000,%o1    ! (Y2_2) i0 = ax0 + 0x8000;
1332         ldd     [%i1+8],%f50            ! (Y1_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
1333         fitod   %f12,%f28               ! (Y1_2) dtmp0 = (double) i0;
1334 
1335         sll     %l7,8,%l7               ! (Y2_2) exp0 <<= 8;
1336         and     %o1,%l6,%o1             ! (Y2_2) i0 &= 0xffff0000;
1337         st      %l7,[%fp+tmp6]          ! (Y2_2) STORE exp0
1338         fsubd   %f58,%f52,%f60          ! (Y0_1) y0 = yy0 - dtmp0;
1339 
1340         sub     %o2,%o1,%i1             ! (Y2_2) i0 = ax0 - i0;
1341         st      %i1,[%fp+tmp2]          ! (Y2_2) STORE i0
1342         bge,pn  %icc,.update19          ! (Y2_2) if(ax0 >= 0x7f800000)
1343         faddd   %f62,%f46,%f22          ! (Y2_0) yy0 += di0;
1344 .cont19:
1345         lda     [%i2]0x82,%o2           ! (Y0_2) ay0 = *(int*)py0;
1346         cmp     %g1,MASK_0x007fffff     ! (Y2_2) ux0 ? 0x800000
1347         fmovdl  %fcc0,HTHRESHOLD,%f56   ! (Y1_1) yy0 = HTHRESH;
1348 
1349         fmuld   %f28,%f50,%f46          ! (Y1_2) y0 =  dtmp0 * dtmp1;
1350         ble,pn  %icc,.update20          ! (Y2_2) if(ux0 < 0x800000)
1351         faddd   %f26,KA1,%f50           ! (Y0_2) dtmp0 += KA1;
1352 .cont20:
1353         fmuld   KB2,%f60,%f62           ! (Y0_1) dtmp0 = KB2 * y0;
1354         and     %o2,MASK_0x7fffffff,%o2 ! (Y0_2) ay0 &= 0x7fffffff
1355         ld      [%fp+tmp3],%f4          ! (Y0_2) dtmp1 = (double) exp0;
1356         faddd   %f18,%f24,%f52          ! (Y2_1) yy0 += dtmp0;
1357 
1358         ld      [%fp+tmp0],%g1          ! (Y0_1) LAOD ind0
1359         cmp     %o2,%o5                 ! (Y0_2) ay0 ? 0x7f800000
1360         bge,pn  %icc,.update21          ! (Y0_2) if( ay0 >= 0x7f800000)
1361         fdtos   %f22,%f12               ! (Y2_0) ftmp0 = (float)yy0;
1362 .cont21:
1363         st      %f12,[%o4]              ! (Y2_0) *pz0 = ftmp0;
1364         cmp     counter,6               ! counter
1365         bge,pt  %icc,.main_loop
1366         fstod   %f0,%f24                ! (Y0_2) dtmp0 = (double)ftmp0;
1367 
1368 .tail:
1369         subcc   counter,1,counter
1370         bneg,pn %icc,.begin
1371         add     %o4,stridez,%i5
1372 
1373         fmuld   KA3,%f46,%f28           ! (Y1_1) dtmp0 = KA3 * y0;
1374         and     %g1,255,%o2             ! (Y0_0) ind0 &= 255;
1375         fmovdg  %fcc1,LTHRESHOLD,%f56   ! (Y1_0) yy0 = LTHRESH;
1376 
1377         fmuld   %f54,%f52,%f18          ! (Y2_0) yy0 *= dtmp0;
1378         sll     %o2,3,%i1               ! (Y0_0) ind0 <<= 3;
1379         add     %o4,stridez,%l7         ! pz += stridez
1380         faddd   %f62,KB1,%f62           ! (Y0_0) dtmp0 += KB1;
1381 
1382         fpackfix        %f10,%f10       ! (Y0_0) dtmp1 = vis_fpackfix(dtmp1);
1383         fitod   %f4,%f26                ! (Y0_1) dtmp1 = (double) exp0;
1384         ldd     [%l0+%i1],%f58          ! (Y0_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1385 
1386         fmuld   %f50,%f48,%f50          ! (Y0_1) dtmp0 *= y0;
1387         fdtoi   %f56,%f20               ! (Y1_0) ind0 = (int) yy0;
1388         st      %f20,[%fp+tmp1]         ! (Y1_0) STORE ind0
1389 
1390         faddd   %f28,KA2,%f28           ! (Y1_1) dtmp0 += KA2;
1391 
1392         fmuld   %f62,%f60,%f62          ! (Y0_0) yy0 = dtmp0 * y0;
1393         ldd     [%l2+%g5],%f60          ! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1394         fcmped  %fcc0,HTHRESHOLD,%f18   ! (Y2_0) if (yy0 >= HTHRESH)
1395 
1396         fpadd32 %f10,%f58,%f22          ! (Y0_0) di0 = vis_fpadd32(di0,dtmp1);
1397 
1398         faddd   %f50,KA0,%f58           ! (Y0_1) dtmp0 += KA0;
1399 
1400         fitod   %f20,%f52               ! (Y1_0) dtmp0 = (double)ind0;
1401 
1402         fmuld   %f62,%f22,%f62          ! (Y0_0) yy0 *= di0;
1403         faddd   %f60,%f26,%f26          ! (Y0_1) yy0 = dtmp0 + dtmp1;
1404 
1405         fmuld   %f28,%f46,%f50          ! (Y1_1) dtmp0 *= y0;
1406         fcmped  %fcc1,LTHRESHOLD,%f18   ! (Y2_0) if (yy0 <= LTHRESH)
1407 
1408         fmuld   %f58,%f48,%f48          ! (Y0_1) dtmp0 *= y0;
1409 
1410         fsubd   %f56,%f52,%f52          ! (Y1_0) y0 = yy0 - dtmp0;
1411 
1412         faddd   %f62,%f22,%f62          ! (Y0_0) yy0 += di0;
1413 
1414         lda     [stridey+%i2]0x82,%g1   ! (Y1_1) ay0 = *(unsigned*)py0
1415         add     %i2,stridey,%o4         ! py += stridey
1416         fmovdl  %fcc0,HTHRESHOLD,%f18   ! (Y2_0) yy0 = HTHRESH;
1417 
1418         lda     [stridey+%i2]0x82,%f2   ! (Y1_1) ftmp0 = *py0;
1419         faddd   %f50,KA1,%f54           ! (Y1_1) dtmp0 += KA1;
1420 
1421         fmuld   KB2,%f52,%f56           ! (Y1_0) dtmp0 = KB2 * y0;
1422         and     %g1,MASK_0x7fffffff,%g1 ! (Y1_1) ay0 &= 0x7fffffff;
1423         ld      [%fp+tmp4],%f1          ! (Y1_1) LOAD exp0
1424         faddd   %f26,%f48,%f58          ! (Y0_1) yy0 += dtmp0;
1425 
1426         ld      [%fp+tmp1],%g5          ! (Y1_0) ind0 = (int) yy0;
1427         cmp     %g1,%o5                 ! (Y1_1) ay0 ? 0x7f800000
1428         bge,pn  %icc,.update22          ! (Y1_1) if(ay0 >= 0x7f800000)
1429         fdtos   %f62,%f8                ! (Y0_0) ftmp0 = (float)yy0;
1430 .cont22:
1431         st      %f8,[%l7]               ! (Y0_0) *pz0 = ftmp0;
1432         fmovdg  %fcc1,LTHRESHOLD,%f18   ! (Y2_0) yy0 = LTHRESH;
1433 
1434         subcc   counter,1,counter
1435         bneg,pn %icc,.begin
1436         add     %l7,stridez,%i5
1437 
1438         add     %l7,stridez,%l7         ! pz += stridez
1439         and     %g5,255,%g5             ! (Y1_0) ind0 &= 255;
1440         fstod   %f2,%f22                ! (Y1_1) dtmp0 = (double)ftmp0;
1441 
1442         fmuld   %f24,%f58,%f58          ! (Y0_1) yy0 *= dtmp0;
1443         sll     %g5,3,%i2               ! (Y1_0) ind0 <<= 3;
1444         faddd   %f56,KB1,%f60           ! (Y1_0) dtmp0 += KB1;
1445 
1446         fpackfix        %f20,%f20       ! (Y1_0) dtmp1 = vis_fpackfix(dtmp1);
1447         fitod   %f1,%f48                ! (Y1_1) dtmp1 = (double) exp0;
1448         ldd     [%l0+%i2],%f56          ! (Y1_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1449 
1450         fmuld   %f54,%f46,%f54          ! (Y1_1) dtmp0 *= y0;
1451         fdtoi   %f18,%f2                ! (Y2_0) ind0 = (int) yy0;
1452         st      %f2,[%fp+tmp1]          ! (Y2_0) STORE ind0
1453 
1454 
1455         fmuld   %f60,%f52,%f62          ! (Y1_0) yy0 = dtmp0 * y0;
1456         ldd     [%l2+%o0],%f60          ! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
1457         fcmped  %fcc0,HTHRESHOLD,%f58   ! (Y0_1) if (yy0 >= HTHRESH)
1458 
1459         fpadd32 %f20,%f56,%f52          ! (Y1_0) di0 = vis_fpadd32(di0,dtmp1);
1460 
1461         faddd   %f54,KA0,%f56           ! (Y1_1) dtmp0 += KA0;
1462 
1463         fitod   %f2,%f54                ! (Y2_0) dtmp0 = (double)ind0;
1464 
1465         fmuld   %f62,%f52,%f62          ! (Y1_0) yy0 *= di0;
1466         faddd   %f60,%f48,%f12          ! (Y1_1) yy0 = dtmp0 + dtmp1;
1467 
1468         fcmped  %fcc1,LTHRESHOLD,%f58   ! (Y0_1) if (yy0 <= LTHRESH)
1469 
1470         fmuld   %f56,%f46,%f46          ! (Y1_1) dtmp0 *= y0;
1471 
1472         fsubd   %f18,%f54,%f26          ! (Y2_0) y0 = yy0 - dtmp0;
1473 
1474         faddd   %f62,%f52,%f54          ! (Y1_0) yy0 += di0;
1475 
1476         fmovdl  %fcc0,HTHRESHOLD,%f58   ! (Y0_1) yy0 = HTHRESH;
1477 
1478 
1479         fmuld   KB2,%f26,%f4            ! (Y2_0) dtmp0 = KB2 * y0;
1480         faddd   %f12,%f46,%f60          ! (Y1_1) yy0 += dtmp0;
1481 
1482         ld      [%fp+tmp1],%o0
1483         fdtos   %f54,%f15               ! (Y1_0) ftmp0 = (float)yy0;
1484 
1485         st      %f15,[%l7]              ! (Y1_0) *pz0 = ftmp0;
1486         add     %l7,stridez,%o4         ! pz += stridez
1487         fmovdg  %fcc1,LTHRESHOLD,%f58   ! (Y0_1) yy0 = LTHRESH;
1488 
1489         subcc   counter,1,counter
1490         bneg,pn %icc,.begin
1491         or      %g0,%o4,%i5
1492 
1493         and     %o0,255,%o0             ! (Y2_0) ind0 &= 255;
1494 
1495         fmuld   %f22,%f60,%f56          ! (Y1_1) yy0 *= dtmp0;
1496         sll     %o0,3,%l7               ! (Y2_0) ind0 <<= 3;
1497         faddd   %f4,KB1,%f60            ! (Y2_0) dtmp0 += KB1;
1498 
1499         fpackfix        %f2,%f2         ! (Y2_0) dtmp1 = vis_fpackfix(dtmp1);
1500         ldd     [%l0+%l7],%f4           ! (Y2_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1501 
1502         fdtoi   %f58,%f10               ! (Y0_1) ind0 = (int) yy0;
1503 
1504         st      %f10,[%fp+tmp0]         ! (Y0_1) STORE ind0
1505 
1506         fmuld   %f60,%f26,%f62          ! (Y2_0) yy0 = dtmp0 * y0;
1507         fcmped  %fcc0,HTHRESHOLD,%f56   ! (Y1_1) if (yy0 >= HTHRESH)
1508 
1509         fpadd32 %f2,%f4,%f46            ! (Y2_0) di0 = vis_fpadd32(di0,dtmp1);
1510 
1511         add     %i2,stridey,%i2         ! py += stridey
1512 
1513         fitod   %f10,%f52               ! (Y0_1) dtmp0 = (double)ind0;
1514 
1515         fmuld   %f62,%f46,%f62          ! (Y2_0) yy0 *= di0;
1516 
1517         fcmped  %fcc1,LTHRESHOLD,%f56   ! (Y1_1) if (yy0 <= LTHRESH)
1518 
1519 
1520         fsubd   %f58,%f52,%f60          ! (Y0_1) y0 = yy0 - dtmp0;
1521 
1522         faddd   %f62,%f46,%f22          ! (Y2_0) yy0 += di0;
1523 
1524         fmovdl  %fcc0,HTHRESHOLD,%f56   ! (Y1_1) yy0 = HTHRESH;
1525 
1526         fmuld   KB2,%f60,%f62           ! (Y0_1) dtmp0 = KB2 * y0;
1527 
1528         ld      [%fp+tmp0],%g1          ! (Y0_1) LAOD ind0
1529         fdtos   %f22,%f12               ! (Y2_0) ftmp0 = (float)yy0;
1530 
1531         st      %f12,[%o4]              ! (Y2_0) *pz0 = ftmp0;
1532 
1533         subcc   counter,1,counter
1534         bneg,pn %icc,.begin
1535         add     %o4,stridez,%i5
1536 
1537         and     %g1,255,%o2             ! (Y0_0) ind0 &= 255;
1538         fmovdg  %fcc1,LTHRESHOLD,%f56   ! (Y1_0) yy0 = LTHRESH;
1539 
1540         sll     %o2,3,%i1               ! (Y0_0) ind0 <<= 3;
1541         add     %o4,stridez,%l7         ! pz += stridez
1542         faddd   %f62,KB1,%f62           ! (Y0_0) dtmp0 += KB1;
1543 
1544         fpackfix        %f10,%f10       ! (Y0_0) dtmp1 = vis_fpackfix(dtmp1);
1545         ldd     [%l0+%i1],%f58          ! (Y0_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1546 
1547         fdtoi   %f56,%f20               ! (Y1_0) ind0 = (int) yy0;
1548         st      %f20,[%fp+tmp1]         ! (Y1_0) STORE ind0
1549 
1550         fmuld   %f62,%f60,%f62          ! (Y0_0) yy0 = dtmp0 * y0;
1551 
1552         fpadd32 %f10,%f58,%f22          ! (Y0_0) di0 = vis_fpadd32(di0,dtmp1);
1553 
1554         fitod   %f20,%f52               ! (Y1_0) dtmp0 = (double)ind0;
1555 
1556         fmuld   %f62,%f22,%f62          ! (Y0_0) yy0 *= di0;
1557 
1558         fsubd   %f56,%f52,%f52          ! (Y1_0) y0 = yy0 - dtmp0;
1559 
1560         faddd   %f62,%f22,%f62          ! (Y0_0) yy0 += di0;
1561 
1562         fmuld   KB2,%f52,%f56           ! (Y1_0) dtmp0 = KB2 * y0;
1563 
1564         ld      [%fp+tmp1],%g5          ! (Y1_0) ind0 = (int) yy0;
1565         fdtos   %f62,%f8                ! (Y0_0) ftmp0 = (float)yy0;
1566         st      %f8,[%l7]               ! (Y0_0) *pz0 = ftmp0;
1567 
1568         subcc   counter,1,counter
1569         bneg    .begin
1570         add     %l7,stridez,%i5
1571 
1572         add     %l7,stridez,%l7         ! pz += stridez
1573         and     %g5,255,%g5             ! (Y1_0) ind0 &= 255;
1574 
1575         sll     %g5,3,%i2               ! (Y1_0) ind0 <<= 3;
1576         faddd   %f56,KB1,%f60           ! (Y1_0) dtmp0 += KB1;
1577 
1578         fpackfix        %f20,%f20       ! (Y1_0) dtmp1 = vis_fpackfix(dtmp1);
1579         ldd     [%l0+%i2],%f56          ! (Y1_0) di0 = *(double*)((char*)__mt_constexp2f + ind0);
1580 
1581         fmuld   %f60,%f52,%f62          ! (Y1_0) yy0 = dtmp0 * y0;
1582 
1583         fpadd32 %f20,%f56,%f52          ! (Y1_0) di0 = vis_fpadd32(di0,dtmp1);
1584 
1585         fmuld   %f62,%f52,%f62          ! (Y1_0) yy0 *= di0;
1586 
1587         faddd   %f62,%f52,%f54          ! (Y1_0) yy0 += di0;
1588 
1589         fdtos   %f54,%f15               ! (Y1_0) ftmp0 = (float)yy0;
1590 
1591         st      %f15,[%l7]              ! (Y1_0) *pz0 = ftmp0;
1592         ba      .begin
1593         add     %l7,stridez,%i5         ! pz += stridez
1594 
1595 .exit:
1596         ret
1597         restore
1598 
1599         .align  16
1600 .specs_exit:
1601         add     %i1,stridex,%o2
1602         add     %i3,stridey,%i2
1603         st      %f4,[%i5]
1604 
1605         sub     counter,1,counter
1606         ba      .begin1
1607         add     %i5,stridez,%i5
1608 
1609 .spec1:
1610         ld      [%l0+2048+64],%f0       ! LOAD 1.0f
1611         or      %g0,%i1,%o1
1612         or      %g0,%i3,%o3
1613 
1614         ld      [%o2],%f4               ! *px
1615         or      %g0,%o2,%i1
1616         or      %g0,%i2,%i3
1617 
1618         ld      [%i3],%f6               ! *py
1619         or      %g0,%l7,%o2
1620         fsubs   %f0,%f0,%f5             ! 0.0f
1621 
1622         sethi   %hi(0x7f800000),%l6
1623         cmp     %o4,0                   ! ay ? 0
1624         be,a,pn %icc,.specs_exit        ! if(ay == 0)
1625         fmovs   %f0,%f4                 ! return 1.0f
1626 
1627         cmp     %o3,%l6                 ! ax0 ? 0x7f800000
1628         bgu,a   %icc,.specs_exit        ! ax0 > 0x7f800000
1629         fmuls   %f4,%f6,%f4             ! return *px * *py; /* |X| or |Y| = Nan */
1630 
1631         cmp     %o4,%l6                 ! ay ? 0x7f800000
1632         bgu,a   .specs_exit             ! ay > 0x7f800000
1633         fmuls   %f4,%f6,%f4             ! return *px * *py; /* |X| or |Y| = Nan */
1634 
1635         sethi   %hi(0x3f800000),%o5
1636         bne,a   %icc,1f                 ! if (ay != 0x7f800000) { /* |Y| = Inf */
1637         srl     %o1,31,%o1              ! sx = ux >> 31
1638 
1639         cmp     %o3,%o5                 ! ax0 ? 0x3f800000
1640         be,a    .specs_exit             ! if (ax0 == 0x3f800000)
1641         fmuls   %f6,%f5,%f4             ! return *py * 0.0f; /* +-1 ** +-Inf = NaN */
1642 
1643         sub     %o3,%o5,%o3             ! ax0 - 0x3f800000
1644         srl     %o2,31,%o2              ! uy >> 31
1645 
1646         srlx    %o3,63,%o3              ! (ax0 - 0x3f800000) << 63
1647 
1648         cmp     %o3,%o2                 ! ((ax0 - 0x3f800000) << 63) ? (uy >> 31)
1649         bne,a   .specs_exit
1650         fzeros  %f4                     ! return 0.f;
1651 
1652         ba      .specs_exit
1653         fabss   %f6,%f4                 ! return fabss(*py)
1654 1:
1655         cmp     %o1,0                   ! sx ? 0
1656         be,pn   %icc,.spec1_exit        ! if (sx == 0)
1657         or      %g0,%g0,%o5             ! yisint0 = 0;
1658 
1659         srl     %o4,23,%l7              ! exp = ay >> 23;
1660         cmp     %l7,0x97                ! exp ? 0x97
1661         bge,a,pn %icc,.spec1_exit       ! if (exp >= 0x97) /* |Y| >= 2^24  */
1662         add     %g0,2,%o5               ! yisint = 2;
1663 
1664         cmp     %l7,0x7f                ! exp ? 0x7f
1665         bl,pn   %icc,.spec1_exit        ! if (exp < 0x7f)
1666         sub     %g0,%l7,%l7             ! exp = -exp;
1667 
1668         add     %l7,(0x7f + 23),%l7     ! exp += (0x07f + 23);
1669         srl     %o4,%l7,%l6             ! i0 = ay >> exp
1670         sll     %l6,%l7,%l7             ! i0 << exp
1671 
1672         cmp     %l7,%o4                 ! (i0 << exp) ? ay
1673         bne,pn  %icc,.spec1_exit        ! if((i0 << exp) != ay)
1674         and     %l6,1,%l6               ! i0 &= 1
1675 
1676         sub     %g0,%l6,%l6             ! i0 = -i0;
1677         add     %l6,2,%o5               ! yisint0 = 2 + i0;
1678 
1679 .spec1_exit:
1680         srl     %o2,31,%o2              ! uy >> 31
1681         cmp     %o2,0                   ! (uy >> 31) ? 0
1682         movne   %icc,%g0,%o3            ! if (uy >> 31) ax0 = 0;
1683 
1684         sll     %o5,31,%o5              ! yisint0 <<= 31;
1685         add     %o5,%o3,%o5             ! ax0 += yisint0;
1686 
1687         add     %i1,stridex,%o2         ! px += stridex;
1688         add     %i3,stridey,%i2         ! py += stridey;
1689         st      %o5,[%i5]               ! return *(float*)&ax0;
1690 
1691         sub     counter,1,counter       ! counter--;
1692         ba      .begin1
1693         add     %i5,stridez,%i5         ! pz += stridez;
1694 
1695 .spec2:
1696         or      %g0,%i1,%o1
1697         or      %g0,%i3,%o3
1698         ld      [%l0+2048+64],%f0       ! LOAD 1.0f
1699         or      %g0,%o2,%i1
1700         or      %g0,%i2,%i3
1701 
1702         or      %g0,%l7,%o2
1703         cmp     %o4,0                   ! ay ? 0
1704         be,a,pn %icc,.specs_exit        ! if(ay == 0)
1705         fmovs   %f0,%f4                 ! return 1.0f
1706 
1707         srl     %o3,23,%l7              ! exp0 = (ax0 >> 23);
1708         sub     %l7,127,%l7             ! exp = exp0 = exp0 - 127;
1709 
1710         or      %g0,%g0,%o5             ! yisint = 0;
1711         cmp     %o3,MASK_0x007fffff     ! (int)ax0 ? 0x00800000
1712         bg,pn   %icc,1f                 ! if ((int)ax0 >= 0x00800000)
1713         nop
1714 
1715                                         ! X = denormal or negative
1716         st      %o3,[%fp+tmp0]          ! *((float*) &ax0) = (float) (int)ax0;
1717         ld      [%fp+tmp0],%f4
1718         fitos   %f4,%f4
1719         st      %f4,[%fp+tmp0]
1720         ld      [%fp+tmp0],%o3
1721 
1722         srl     %o3,23,%l7              ! exp = (ax0 >> 23)
1723         sub     %l7,127+149,%l7         ! exp -= (127+149)
1724 1:
1725         cmp     %o1,0                   ! ux ? 0
1726         bg,a    %icc,.spec_proc         ! if((int)ux > 0)
1727         sethi   %hi(0xffff0000),%l6
1728 
1729         srl     %o4,23,%o0              ! exp = ay >> 23;
1730         cmp     %o0,0x97                ! exp ? 0x97
1731         bge,a,pn %icc,2f                ! if (exp >= 0x97) /* |Y| >= 2^24  */
1732         add     %g0,2,%o5               ! yisint0 = 2;     /* Y - even */
1733 
1734         cmp     %o0,0x7f                ! exp ? 0x7f
1735         bl,pn   %icc,2f                 ! if(exp < 0x7f)
1736         nop
1737 
1738         sub     %g0,%o0,%o0             ! exp = -exp;
1739         add     %o0,(0x7f + 23),%o0     ! exp += (0x7f + 23)
1740         srl     %o4,%o0,%l6             ! i0 = ay >> ((0x7f + 23) - exp);
1741         sll     %l6,%o0,%o0             ! i0 << ((0x7f + 23) - exp
1742         cmp     %o0,%o4                 ! (i0 << ((0x7f + 23) - exp)) ? ay
1743         bne,pn  %icc,2f                 ! if(i0 << ((0x7f + 23) - exp)) != ay)
1744         nop
1745 
1746         and     %l6,1,%l6               ! i0 &= 1;
1747         sub     %g0,%l6,%l6             ! i0 = -i0;
1748         add     %l6,2,%o5               ! yisint = i0 + 2;
1749 2:
1750         cmp     %o3,0                   ! ax0 ? 0
1751         bne,pn  %icc,4f                 ! if(ax0 != 0)
1752         nop
1753 
1754         srl     %o1,31,%o1              ! sx = ux >> 31
1755         srl     %o2,31,%o2              ! uy >> 31
1756 
1757         cmp     %o2,0                   ! (uy >> 31) ? 0
1758         be,a,pn %icc,3f                 ! if((uy >> 31) == 0)
1759         fzeros  %f4                     ! return ZERO
1760 
1761         fdivs   %f0,%f3,%f4             ! fy = ONE/ZERO
1762 3:
1763         andcc   %o1,%o5,%g0             ! sx & yisint0
1764         be,pn   %icc,.specs_exit        ! if( (sx & yisint0) == 0 )
1765         nop
1766 
1767         ba      .specs_exit
1768         fnegs   %f4,%f4                 ! fy = -fy;
1769 4:
1770         cmp     %o5,0                   ! ysisint0 ? 0
1771         be,a    %icc,.specs_exit        ! if(yisint0 == 0)
1772         fdivs   %f3,%f3,%f4             ! return ZERO/ZERO
1773 
1774         sethi   %hi(0xffff0000),%l6
1775 
1776 .spec_proc:
1777         sll     %l7,8,%l7               ! exp0 = exp0 << 8;
1778         st      %l7,[%fp+tmp1]          ! STORE exp0
1779         and     %o3,MASK_0x007fffff,%g5 ! ax0 &= 0x007fffff;
1780         ld      [%i3],%f14              ! ftmp0 = py[0]
1781         sllx    %o5,63,%o5              ! ysisint0 <<= 63;
1782         add     %g5,CONST_0x8000,%o3    ! i0 = ax0 + 0x8000;
1783         stx     %o5,[%fp+tmp5]          ! STORE yisint0
1784         and     %o3,%l6,%l7             ! i0 &= 0xffff0000;
1785         sub     %g5,%l7,%o1             ! i0 = ax0 - i0;
1786         sra     %l7,12,%g5              ! ind0 = i0 >> 12;
1787         st      %o1,[%fp+tmp2]          ! STORE i0
1788         fstod   %f14,%f54               ! dtmp1 = (double)ftmp0
1789         and     %g5,-8,%g5              ! ind0 &= -8;
1790         add     %l2,%g5,%l7             ! (char*)__mt_constlog4f + ind0
1791         ld      [%fp+tmp1],%f18         ! LOAD exp0
1792         ld      [%fp+tmp2],%f16         ! LOAD i0
1793         ldd     [%l7+8],%f62            ! dtmp2 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
1794         ldd     [%l2+%g5],%f56          ! dtmp3 = *(double *)((char*)__mt_constlog4f + ind0);
1795         fitod   %f18,%f58               ! dtmp4 = (double)exp0
1796         fitod   %f16,%f60               ! dtmp5 = (double)i0
1797         fmuld   %f60,%f62,%f60          ! y0 =  dtmp5 * dtmp2;
1798         faddd   %f56,%f58,%f58          ! yy0 = dtmp3 + dtmp4;
1799         fmuld   KA3,%f60,%f52           ! dtmp0 = KA3 * y0;
1800         faddd   %f52,KA2,%f50           ! dtmp0 += KA2;
1801         fmuld   %f50,%f60,%f48          ! dtmp0 *= y0;
1802         faddd   %f48,KA1,%f46           ! dtmp0 += KA1;
1803         fmuld   %f46,%f60,%f62          ! dtmp0 *= y0;
1804         ldd     [%fp+tmp5],%f24         ! LOAD yisint0
1805         faddd   %f62,KA0,%f56           ! dtmp0 += KA0;
1806         fmuld   %f56,%f60,%f52          ! dtmp0 *= y0;
1807         faddd   %f58,%f52,%f50          ! yy0 += dtmp1;
1808         fmuld   %f54,%f50,%f52          ! yy0 *= dtmp1;
1809         fcmped  %fcc0,HTHRESHOLD,%f52   ! if (yy0 >= HTHRESH)
1810         fcmped  %fcc1,LTHRESHOLD,%f52   ! yy0 = HTHRESH;
1811         fmovdl  %fcc0,HTHRESHOLD,%f52   ! if (yy0 <= LTHRESH)
1812         fmovdg  %fcc1,LTHRESHOLD,%f52   ! yy0 = LTHRESH;
1813         fdtoi   %f52,%f20               ! ind0 = (int) yy0;
1814         st      %f20,[%fp+tmp3]         ! STORE ind0
1815         fitod   %f20,%f58               ! dtmp0 = (double) ind0;
1816         fpackfix        %f20,%f20       ! dtmp1 = vis_fpackfix(dtmp1)
1817         ld      [%fp+tmp3],%g1          ! LOAD ind0
1818         fsubd   %f52,%f58,%f46          ! y0 = yy0 - dtmp0;
1819         fpadd32 %f20,%f24,%f56          ! dtmp1 += yisint0
1820         and     %g1,255,%o4             ! ind0 &= 255;
1821         sll     %o4,3,%o3               ! ind0 <<= 3;
1822         ldd     [%l0+%o3],%f54          ! di0 = *(double*)((char*)__mt_constexp2f + ind0);
1823         fmuld   KB2,%f46,%f48           ! dtmp0 = KB2 * y0;
1824         fpadd32 %f56,%f54,%f56          ! di0 = vis_fpadd32(di0,dtmp1);
1825         faddd   %f48,KB1,%f62           ! dtmp0 += KB1;
1826         fmuld   %f62,%f46,%f60          ! yy0 = dtmp0 * y0;
1827         fmuld   %f60,%f56,%f52          ! yy0 *= di0;
1828         faddd   %f52,%f56,%f58          ! yy0 += di0;
1829         ba      .specs_exit
1830         fdtos   %f58,%f4                ! ftmp0 = (float)yy0;
1831 
1832         .align  16
1833 .update0:
1834         cmp     counter,1
1835         ble     .cont0
1836         nop
1837 
1838         add     %i2,stridey,%o1
1839         stx     %o2,[%fp+tmp_px]
1840 
1841         stx     %o1,[%fp+tmp_py]
1842         sub     counter,1,counter
1843 
1844         st      counter,[%fp+tmp_counter]
1845         ba      .cont0
1846         or      %g0,1,counter
1847 
1848         .align  16
1849 .update1:
1850         cmp     counter,1
1851         ble     .cont1
1852         nop
1853 
1854         add     %i2,stridey,%o1
1855         stx     %o2,[%fp+tmp_px]
1856 
1857         stx     %o1,[%fp+tmp_py]
1858         sub     counter,1,counter
1859 
1860         st      counter,[%fp+tmp_counter]
1861         ba      .cont1
1862         or      %g0,1,counter
1863 
1864         .align  16
1865 .update2:
1866         cmp     counter,2
1867         ble     .cont2
1868         nop
1869 
1870         add     %i2,stridey,%o2
1871         stx     %i3,[%fp+tmp_px]
1872 
1873         add     %o2,stridey,%o2
1874         stx     %o2,[%fp+tmp_py]
1875 
1876         sub     counter,2,counter
1877         st      counter,[%fp+tmp_counter]
1878         ba      .cont2
1879         or      %g0,2,counter
1880 
1881         .align  16
1882 .update3:
1883         cmp     counter,2
1884         ble     .cont3
1885         nop
1886 
1887         add     %i2,stridey,%o2
1888         stx     %i3,[%fp+tmp_px]
1889 
1890         add     %o2,stridey,%o2
1891         stx     %o2,[%fp+tmp_py]
1892 
1893         sub     counter,2,counter
1894         st      counter,[%fp+tmp_counter]
1895         ba      .cont3
1896         or      %g0,2,counter
1897 
1898         .align  16
1899 .update4:
1900         cmp     counter,3
1901         ble     .cont4
1902         nop
1903 
1904         sll     stridey,1,%g5
1905         add     %i2,stridey,%o3
1906         stx     %o2,[%fp+tmp_px]
1907 
1908         add     %o3,%g5,%o3
1909         stx     %o3,[%fp+tmp_py]
1910 
1911         sub     counter,3,counter
1912         st      counter,[%fp+tmp_counter]
1913         ba      .cont4
1914         or      %g0,3,counter
1915 
1916         .align  16
1917 .update5:
1918         cmp     counter,3
1919         ble     .cont5
1920         nop
1921 
1922         sll     stridey,1,%g5
1923         add     %i2,stridey,%o3
1924         stx     %o2,[%fp+tmp_px]
1925 
1926         add     %o3,%g5,%o3
1927         stx     %o3,[%fp+tmp_py]
1928 
1929         sub     counter,3,counter
1930         st      counter,[%fp+tmp_counter]
1931         ba      .cont5
1932         or      %g0,3,counter
1933 
1934         .align  16
1935 .update6:
1936         fzeros  %f2
1937         cmp     counter,1
1938         ble     .cont6
1939         nop
1940 
1941         ld      [%fp+tmp_counter],%g1
1942 
1943         sub     %o2,stridex,%o3
1944         stx     %o4,[%fp+tmp_py]
1945 
1946         sub     %o3,stridex,%o3
1947         add     %g1,counter,counter
1948         stx     %o3,[%fp+tmp_px]
1949 
1950         sub     counter,1,counter
1951         st      counter,[%fp+tmp_counter]
1952         ba      .cont6
1953         or      %g0,1,counter
1954 
1955         .align  16
1956 .update7:
1957         cmp     counter,4
1958         ble     .cont7
1959         nop
1960 
1961         sll     stridey,1,%g1
1962         add     %o4,stridey,%o0
1963         stx     %o2,[%fp+tmp_px]
1964 
1965         add     %o0,%g1,%o0
1966         stx     %o0,[%fp+tmp_py]
1967 
1968         sub     counter,4,counter
1969         st      counter,[%fp+tmp_counter]
1970         ba      .cont7
1971         or      %g0,4,counter
1972 
1973         .align  16
1974 .update8:
1975         cmp     counter,4
1976         ble     .cont8
1977         nop
1978 
1979         sll     stridey,1,%g1
1980         add     %o4,stridey,%o0
1981         stx     %o2,[%fp+tmp_px]
1982 
1983         add     %o0,%g1,%o0
1984         stx     %o0,[%fp+tmp_py]
1985 
1986         sub     counter,4,counter
1987         st      counter,[%fp+tmp_counter]
1988         ba      .cont8
1989         or      %g0,4,counter
1990 
1991         .align  16
1992 .update9:
1993         cmp     counter,2
1994         ble     .cont9
1995         fzeros  %f16
1996 
1997         ld      [%fp+tmp_counter],%i3
1998 
1999         sub     %o2,stridex,%g1
2000         stx     %i2,[%fp+tmp_py]
2001 
2002         sub     %g1,stridex,%g1
2003         add     %i3,counter,counter
2004         stx     %g1,[%fp+tmp_px]
2005 
2006         sub     counter,2,counter
2007         st      counter,[%fp+tmp_counter]
2008         ba      .cont9
2009         or      %g0,2,counter
2010 
2011         .align  16
2012 .update10:
2013         cmp     counter,5
2014         ble     .cont10
2015         nop
2016 
2017         add     %i2,stridey,%i1
2018         stx     %i3,[%fp+tmp_px]
2019 
2020         add     %i1,stridey,%i1
2021         stx     %i1,[%fp+tmp_py]
2022 
2023         sub     counter,5,counter
2024         st      counter,[%fp+tmp_counter]
2025         ba      .cont10
2026         or      %g0,5,counter
2027 
2028         .align  16
2029 .update11:
2030         cmp     counter,5
2031         ble     .cont11
2032         nop
2033 
2034         add     %i2,stridey,%i1
2035         stx     %i3,[%fp+tmp_px]
2036 
2037         add     %i1,stridey,%i1
2038         stx     %i1,[%fp+tmp_py]
2039 
2040         sub     counter,5,counter
2041         st      counter,[%fp+tmp_counter]
2042         ba      .cont11
2043         or      %g0,5,counter
2044 
2045         .align  16
2046 .update12:
2047         fzeros  %f0
2048         cmp     counter,3
2049         ble     .cont12
2050         nop
2051 
2052         ld      [%fp+tmp_counter],%o2
2053 
2054         sub     %i3,stridex,%i1
2055         stx     %i2,[%fp+tmp_py]
2056 
2057         sub     %i1,stridex,%i1
2058         add     %o2,counter,counter
2059         stx     %i1,[%fp+tmp_px]
2060 
2061         sub     counter,3,counter
2062         st      counter,[%fp+tmp_counter]
2063         ba      .cont12
2064         or      %g0,3,counter
2065 
2066         .align  16
2067 .update13:
2068         cmp     counter,3
2069         ble     .cont13
2070         nop
2071 
2072         sll     stridey,1,%g5
2073         add     %i2,stridey,%o3
2074         stx     %o2,[%fp+tmp_px]
2075 
2076         add     %o3,%g5,%o3
2077         stx     %o3,[%fp+tmp_py]
2078 
2079         sub     counter,3,counter
2080         st      counter,[%fp+tmp_counter]
2081         ba      .cont13
2082         or      %g0,3,counter
2083 
2084         .align  16
2085 .update14:
2086         cmp     counter,3
2087         ble     .cont14
2088         nop
2089 
2090         sll     stridey,1,%g5
2091         add     %i2,stridey,%o3
2092         stx     %o2,[%fp+tmp_px]
2093 
2094         add     %o3,%g5,%o3
2095         stx     %o3,[%fp+tmp_py]
2096 
2097         sub     counter,3,counter
2098         st      counter,[%fp+tmp_counter]
2099         ba      .cont14
2100         or      %g0,3,counter
2101 
2102         .align  16
2103 .update15:
2104         cmp     counter,1
2105         ble     .cont15
2106         fzeros  %f2
2107 
2108         ld      [%fp+tmp_counter],%g1
2109 
2110         sub     %o2,stridex,%o3
2111         stx     %o4,[%fp+tmp_py]
2112 
2113         sub     %o3,stridex,%o3
2114         add     %g1,counter,counter
2115         stx     %o3,[%fp+tmp_px]
2116 
2117         sub     counter,1,counter
2118         st      counter,[%fp+tmp_counter]
2119         ba      .cont15
2120         or      %g0,1,counter
2121 
2122         .align  16
2123 .update16:
2124         cmp     counter,4
2125         ble     .cont16
2126         nop
2127 
2128         sll     stridey,1,%g1
2129         add     %o4,stridey,%o0
2130         stx     %o2,[%fp+tmp_px]
2131 
2132         add     %o0,%g1,%o0
2133         stx     %o0,[%fp+tmp_py]
2134 
2135         sub     counter,4,counter
2136         st      counter,[%fp+tmp_counter]
2137         ba      .cont16
2138         or      %g0,4,counter
2139 
2140         .align  16
2141 .update17:
2142         cmp     counter,4
2143         ble     .cont17
2144         nop
2145 
2146         sll     stridey,1,%g1
2147         add     %o4,stridey,%o0
2148         stx     %o2,[%fp+tmp_px]
2149 
2150         add     %o0,%g1,%o0
2151         stx     %o0,[%fp+tmp_py]
2152 
2153         sub     counter,4,counter
2154         st      counter,[%fp+tmp_counter]
2155         ba      .cont17
2156         or      %g0,4,counter
2157 
2158         .align  16
2159 .update18:
2160         fzeros  %f16
2161         cmp     counter,2
2162         ble     .cont18
2163         nop
2164 
2165         ld      [%fp+tmp_counter],%i3
2166 
2167         sub     %o2,stridex,%g1
2168         stx     %i2,[%fp+tmp_py]
2169 
2170         sub     %g1,stridex,%g1
2171         add     %i3,counter,counter
2172         stx     %g1,[%fp+tmp_px]
2173 
2174         sub     counter,2,counter
2175         st      counter,[%fp+tmp_counter]
2176         ba      .cont18
2177         or      %g0,2,counter
2178 
2179         .align  16
2180 .update19:
2181         cmp     counter,5
2182         ble     .cont19
2183         nop
2184 
2185         add     %i2,stridey,%i1
2186         stx     %i3,[%fp+tmp_px]
2187 
2188         add     %i1,stridey,%i1
2189         stx     %i1,[%fp+tmp_py]
2190 
2191         sub     counter,5,counter
2192         st      counter,[%fp+tmp_counter]
2193         ba      .cont19
2194         or      %g0,5,counter
2195 
2196         .align  16
2197 .update20:
2198         cmp     counter,5
2199         ble     .cont20
2200         nop
2201 
2202         add     %i2,stridey,%i1
2203         stx     %i3,[%fp+tmp_px]
2204 
2205         add     %i1,stridey,%i1
2206         stx     %i1,[%fp+tmp_py]
2207 
2208         sub     counter,5,counter
2209         st      counter,[%fp+tmp_counter]
2210         ba      .cont20
2211         or      %g0,5,counter
2212 
2213         .align  16
2214 .update21:
2215         cmp     counter,3
2216         ble     .cont21
2217         fzeros  %f0
2218 
2219         ld      [%fp+tmp_counter],%o2
2220 
2221         sub     %i3,stridex,%i1
2222         stx     %i2,[%fp+tmp_py]
2223 
2224         sub     %i1,stridex,%i1
2225         add     %o2,counter,counter
2226         stx     %i1,[%fp+tmp_px]
2227 
2228 
2229         sub     counter,3,counter
2230         st      counter,[%fp+tmp_counter]
2231         ba      .cont21
2232         or      %g0,3,counter
2233 
2234         .align  16
2235 .update22:
2236         cmp     counter,3
2237         ble     .cont22
2238         fzeros  %f2
2239 
2240         ld      [%fp+tmp_counter],%g1
2241 
2242         sub     %i3,stridex,%i2
2243         stx     %i2,[%fp+tmp_px]
2244 
2245         add     %g1,counter,counter
2246         stx     %o4,[%fp+tmp_py]
2247 
2248         sub     counter,3,counter
2249         st      counter,[%fp+tmp_counter]
2250         ba      .cont22
2251         or      %g0,3,counter
2252 
2253 .stridex_zero:
2254         ld      [%fp+tmp_counter],counter
2255 
2256         stx     %i3,[%fp+tmp_py]
2257 
2258         cmp     counter,0
2259         ble,pn  %icc,.exit
2260         lda     [%i1]0x82,%i1           ! (Y0_2) ax0 = *px;
2261 
2262         and     %i1,MASK_0x7fffffff,%i3 ! (Y0_2) exp0 = ax0 & 0x7fffffff;
2263         sub     %i3,%l6,%l6
2264         and     %i1,MASK_0x007fffff,%g5 ! (Y0_2) ax0 &= 0x007fffff;
2265         srl     %i3,23,%o3              ! (Y0_2) exp0 >>= 23;
2266         srl     %l6,31,%l6
2267         st      %l6,[%fp+tmp5]
2268         add     %g5,CONST_0x8000,%i3    ! (Y0_2) i0 = ax0 + 0x8000;
2269         sethi   %hi(0xffff0000),%l6
2270         sub     %o3,127,%o3             ! (Y0_2) exp0 -= 127;
2271         and     %i3,%l6,%i3             ! (Y0_2) i0 &= 0xffff0000;
2272         sll     %o3,8,%o4               ! (Y0_2) exp0 <<= 8;
2273         st      %o4,[%fp+tmp3]          ! (Y0_2) STORE exp0
2274         sra     %i3,12,%o0              ! (Y0_2) ind0 = i0 >> 12;
2275         sub     %g5,%i3,%o4             ! (Y0_2) i0 = ax0 - i0;
2276         st      %o4,[%fp+tmp2]          ! (Y0_2) STORE i0
2277         and     %o0,-8,%g5              ! (Y0_2) ind0 &= -8;
2278         ld      [%fp+tmp2],%f14         ! (Y0_2) dtmp0 = (double) i0;
2279         add     %l2,%g5,%g1             ! (Y0_2) (char*)__mt_constlog4f + ind0
2280         ldd     [%g1+8],%f48            ! (Y0_2) dtmp1 = *(double *)((char*)__mt_constlog4f + ind0 + 8);
2281         fitod   %f14,%f60               ! (Y0_2) dtmp0 = (double) i0;
2282         fmuld   %f60,%f48,%f48          ! (Y0_2) y0 =  dtmp0 * dtmp1;
2283         fmuld   KA3,%f48,%f62           ! (Y0_2) dtmp0 = KA3 * y0;
2284         faddd   %f62,KA2,%f22           ! (Y0_2) dtmp0 += KA2;
2285         fmuld   %f22,%f48,%f26          ! (Y0_2) dtmp0 *= y0;
2286         faddd   %f26,KA1,%f50           ! (Y0_2) dtmp0 += KA1;
2287         ld      [%fp+tmp3],%f4          ! (Y0_2) dtmp1 = (double) exp0;
2288         fitod   %f4,%f26                ! (Y0_1) dtmp1 = (double) exp0;
2289         fmuld   %f50,%f48,%f50          ! (Y0_1) dtmp0 *= y0;
2290         ldd     [%l2+%g5],%f60          ! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog4f + ind0);
2291         faddd   %f50,KA0,%f58           ! (Y0_1) dtmp0 += KA0;
2292         faddd   %f60,%f26,%f26          ! (Y0_1) yy0 = dtmp0 + dtmp1;
2293         fmuld   %f58,%f48,%f48          ! (Y0_1) dtmp0 *= y0;
2294         sub     %l2,3200,%o4
2295         sub     %l2,1152-600,%o3
2296         faddd   %f26,%f48,%f46          ! (Y0_1) yy0 += dtmp0;
2297         or      %g0,%i5,%g1
2298         sethi   %hi(0x7f800000),%o1
2299 
2300 .xbegin:
2301         ld      [%fp+tmp_counter],counter
2302         ldx     [%fp+tmp_py],%o5
2303         st      %g0,[%fp+tmp_counter]
2304 .xbegin1:
2305         subcc   counter,1,counter
2306         bneg,pn %icc,.exit
2307         nop
2308 
2309         lda     [%o5]0x82,%i5           ! (Y0_0) ay = py[0];
2310 
2311         lda     [%o5]0x82,%f5           ! (Y0_0) ftmp0 = py[0];
2312 
2313         and     %i5,MASK_0x7fffffff,%i3 ! (Y0_0) ay &= 0x7fffffff
2314 
2315         cmp     %i3,%o1
2316         bge,pn  %icc,.xspec
2317         nop
2318 
2319         fstod   %f5,%f52                ! (Y0_0) dtmp0 = (double)ftmp0;
2320 
2321         fmuld   %f52,%f46,%f26          ! (Y0_0) yy0 = dtmp0 * yy;
2322         add     %o5,stridey,%o5         ! py += stridey
2323 
2324         lda     [%o5]0x82,%i5           ! (Y1_0) ay = ((int*)py)[0];
2325 
2326         lda     [%o5]0x82,%f7           ! (Y1_0) ftmp0 = py[0];
2327 
2328         and     %i5,MASK_0x7fffffff,%i5 ! (Y1_0) ay &= 0x7fffffff
2329         fcmped  %fcc0,HTHRESHOLD,%f26   ! (Y0_0) if (yy0 >= HTHRESH)
2330 
2331         cmp     %i5,%o1
2332         bge,pn  %icc,.xupdate0
2333         nop
2334 
2335 .xcont0:
2336         fstod   %f7,%f48                ! (Y1_0) dtmp0 = (double)ftmp0;
2337 
2338         fcmped  %fcc1,LTHRESHOLD,%f26   ! (Y0_1) if (yy0 <= LTHRESH)
2339 
2340         add     %o5,stridey,%o5         ! py += stridey
2341         fmuld   %f48,%f46,%f28          ! (Y1_1) yy0 = dtmp0 * yy;
2342 
2343         lda     [%o5]0x82,%i3           ! (Y0_0) ay = py[0];
2344 
2345         lda     [%o5]0x82,%f5           ! (Y0_0) ftmp0 = py[0];
2346 
2347         and     %i3,MASK_0x7fffffff,%i3 ! (Y0_0) ay &= 0x7fffffff
2348         fmovdl  %fcc0,HTHRESHOLD,%f26   ! (Y0_1) yy0 = HTHRESH;
2349 
2350         cmp     %i3,%o1
2351         bge,pn  %icc,.xupdate1
2352         fcmped  %fcc2,HTHRESHOLD,%f28   ! (Y1_1) if (yy0 >= HTHRESH)
2353 .xcont1:
2354         fstod   %f5,%f52                ! (Y0_0) dtmp0 = (double)ftmp0;
2355 
2356         fmovdg  %fcc1,LTHRESHOLD,%f26   ! (Y0_1) yy0 = LTHRESH;
2357 
2358         fcmped  %fcc3,LTHRESHOLD,%f28   ! (Y1_1) if (yy0 <= LTHRESH)
2359 
2360         fmuld   %f52,%f46,%f22          ! (Y0_0) yy0 = dtmp0 * yy;
2361 
2362         fdtoi   %f26,%f0                ! (Y0_1) ii0 = (int) yy0;
2363 
2364         add     %o5,stridey,%o5         ! py += stridey
2365         st      %f0,[%fp+tmp1]          ! (Y0_1) STORE ii0
2366 
2367         lda     [%o5]0x82,%l7           ! (Y1_0) ay = ((int*)py)[0];
2368 
2369         lda     [%o5]0x82,%f7           ! (Y1_0) ftmp0 = py[0];
2370         fmovdl  %fcc2,HTHRESHOLD,%f28   ! (Y1_1) yy0 = HTHRESH;
2371 
2372         and     %l7,MASK_0x7fffffff,%l7 ! (Y1_0) ay &= 0x7fffffff
2373         fcmped  %fcc0,HTHRESHOLD,%f22   ! (Y0_0) if (yy0 >= HTHRESH)
2374 
2375         cmp     %l7,%o1
2376         bge,pn  %icc,.xupdate2
2377         nop
2378 .xcont2:
2379         fstod   %f7,%f48                ! (Y1_0) dtmp0 = (double)ftmp0;
2380 
2381         fmovdg  %fcc3,LTHRESHOLD,%f28   ! (Y1_2) yy0 = LTHRESH;
2382 
2383         fcmped  %fcc1,LTHRESHOLD,%f22   ! (Y0_1) if (yy0 <= LTHRESH)
2384 
2385         fitod   %f0,%f52                ! (Y0_2) dtmp0 = (double)ii0;
2386 
2387         add     %o5,stridey,%o5         ! py += stridey
2388         fmuld   %f48,%f46,%f24          ! (Y1_1) yy0 = dtmp0 * yy;
2389 
2390         fdtoi   %f28,%f3                ! (Y1_2) ii0 = (int) yy0;
2391         lda     [%o5]0x82,%i3           ! (Y0_0) ay = py[0];
2392 
2393         st      %f3,[%fp+tmp0]          ! (Y1_2) STORE ii0
2394 
2395         fsubd   %f26,%f52,%f40          ! (Y0_2) y0 = yy0 - dtmp0;
2396         lda     [%o5]0x82,%f5           ! (Y0_0) ftmp0 = py[0];
2397 
2398         and     %i3,MASK_0x7fffffff,%i3 ! (Y0_0) ay &= 0x7fffffff
2399         fmovdl  %fcc0,HTHRESHOLD,%f22   ! (Y0_1) yy0 = HTHRESH;
2400 
2401         cmp     %i3,%o1
2402         bge,pn  %icc,.xupdate3
2403         fcmped  %fcc2,HTHRESHOLD,%f24   ! (Y1_1) if (yy0 >= HTHRESH)
2404 .xcont3:
2405         ld      [%fp+tmp1],%i2          ! (Y0_2) LOAD ii0
2406         fmuld   KB2,%f40,%f36           ! (Y0_2) dtmp0 = KB2 * y0;
2407         fstod   %f5,%f52                ! (Y0_0) dtmp0 = (double)ftmp0;
2408 
2409         fmovdg  %fcc1,LTHRESHOLD,%f22   ! (Y0_1) yy0 = LTHRESH;
2410 
2411         sra     %i2,6,%l6               ! (Y0_2) i0 = ii0 >> 6;
2412         and     %i2,255,%l7             ! (Y0_2) ii0 &= 255;
2413         fcmped  %fcc3,LTHRESHOLD,%f24   ! (Y1_1) if (yy0 <= LTHRESH)
2414 
2415         fitod   %f3,%f56                ! (Y1_2) dtmp0 = (double)ii0;
2416         sll     %l7,3,%o0               ! (Y0_2) ii0 <<= 3;
2417         and     %l6,-4,%g5              ! (Y0_2) i0 &= -4;
2418 
2419         faddd   %f36,KB1,%f60           ! (Y0_2) dtmp0 += KB1;
2420         fmuld   %f52,%f46,%f26          ! (Y0_0) yy0 = dtmp0 * yy;
2421         ld      [%g5+%o3],%f10          ! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2422 
2423         fdtoi   %f22,%f0                ! (Y0_1) ii0 = (int) yy0;
2424         ldd     [%o4+%o0],%f62          ! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2425 
2426         add     %o5,stridey,%o5         ! py += stridey
2427         st      %f0,[%fp+tmp1]          ! (Y0_1) STORE ii0
2428 
2429         fsubd   %f28,%f56,%f56          ! (Y1_2) y0 = yy0 - dtmp0;
2430         lda     [%o5]0x82,%i5           ! (Y1_0) ay = ((int*)py)[0];
2431 
2432         fmuld   %f60,%f40,%f60          ! (Y0_2) yy0 = dtmp0 * y0;
2433         fmovdl  %fcc2,HTHRESHOLD,%f24   ! (Y1_1) yy0 = HTHRESH;
2434         lda     [%o5]0x82,%f7           ! (Y1_0) ftmp0 = py[0];
2435 
2436         fmuld   %f10,%f62,%f62          ! (Y0_2) di0 *= dtmp0;
2437         ld      [%fp+tmp0],%g5          ! (Y1_2) LOAD ii0
2438         and     %i5,MASK_0x7fffffff,%i5 ! (Y1_0) ay &= 0x7fffffff
2439         fcmped  %fcc0,HTHRESHOLD,%f26   ! (Y0_0) if (yy0 >= HTHRESH)
2440 
2441         cmp     %i5,%o1
2442         bge,pn  %icc,.xupdate4
2443 .xcont4:
2444         fmuld   KB2,%f56,%f58           ! (Y1_2) dtmp0 = KB2 * y0;
2445         fstod   %f7,%f48                ! (Y1_0) dtmp0 = (double)ftmp0;
2446 
2447         fmovdg  %fcc3,LTHRESHOLD,%f24   ! (Y1_2) yy0 = LTHRESH;
2448         sra     %g5,6,%i0               ! (Y1_3) i0 = ii0 >> 6;
2449         and     %g5,255,%i1             ! (Y1_3) ii0 &= 255;
2450         fmuld   %f60,%f62,%f40          ! (Y0_3) dtmp0 = yy0 * di0;
2451 
2452         fcmped  %fcc1,LTHRESHOLD,%f26   ! (Y0_1) if (yy0 <= LTHRESH)
2453         sll     %i1,3,%i3               ! (Y1_3) ii0 <<= 3;
2454         and     %i0,-4,%i0              ! (Y1_3) i0 &= -4;
2455 
2456         fitod   %f0,%f52                ! (Y0_2) dtmp0 = (double)ii0;
2457         ld      [%i0+%o3],%f10          ! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150) + i0))[0];
2458 
2459         faddd   %f58,KB1,%f58           ! (Y1_3) dtmp0 += KB1;
2460         add     %o5,stridey,%o5         ! py += stridey
2461         ldd     [%o4+%i3],%f18          ! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2462         fmuld   %f48,%f46,%f28          ! (Y1_1) yy0 = dtmp0 * yy;
2463 
2464         fdtoi   %f24,%f3                ! (Y1_2) ii0 = (int) yy0;
2465         lda     [%o5]0x82,%i3           ! (Y0_0) ay = py[0];
2466 
2467         faddd   %f40,%f62,%f60          ! (Y0_3) dtmp0 += di0;
2468         st      %f3,[%fp+tmp0]          ! (Y1_2) STORE ii0
2469 
2470         fsubd   %f22,%f52,%f40          ! (Y0_2) y0 = yy0 - dtmp0;
2471         lda     [%o5]0x82,%f5           ! (Y0_0) ftmp0 = py[0];
2472 
2473         fmuld   %f58,%f56,%f56          ! (Y1_3) yy0 = dtmp0 * y0;
2474         and     %i3,MASK_0x7fffffff,%i3 ! (Y0_0) ay &= 0x7fffffff
2475         fmovdl  %fcc0,HTHRESHOLD,%f26   ! (Y0_1) yy0 = HTHRESH;
2476 
2477         fmuld   %f10,%f18,%f50          ! (Y1_3) di0 *= dtmp0;
2478         cmp     %i3,%o1
2479         bge,pn  %icc,.xupdate5
2480         fcmped  %fcc2,HTHRESHOLD,%f28   ! (Y1_1) if (yy0 >= HTHRESH)
2481 .xcont5:
2482         fdtos   %f60,%f1                ! (Y0_3) ftmp0 = (float)dtmp0;
2483         add     %g1,stridez,%i3         ! pz += stridez
2484         st      %f1,[%g1]               ! (Y0_3) pz[0] = ftmp0;
2485 
2486         subcc   counter,1,counter
2487         bneg,pn %icc,.xbegin
2488         or      %g0,%i3,%g1
2489 
2490         ld      [%fp+tmp1],%i2          ! (Y0_2) LOAD ii0
2491         fmuld   KB2,%f40,%f36           ! (Y0_2) dtmp0 = KB2 * y0;
2492         fstod   %f5,%f52                ! (Y0_0) dtmp0 = (double)ftmp0;
2493 
2494         fmovdg  %fcc1,LTHRESHOLD,%f26   ! (Y0_1) yy0 = LTHRESH;
2495 
2496         fmuld   %f56,%f50,%f58          ! (Y1_3) dtmp0 = yy0 * di0;
2497         sra     %i2,6,%l6               ! (Y0_2) i0 = ii0 >> 6;
2498         and     %i2,255,%l7             ! (Y0_2) ii0 &= 255;
2499         fcmped  %fcc3,LTHRESHOLD,%f28   ! (Y1_1) if (yy0 <= LTHRESH)
2500 
2501         fitod   %f3,%f56                ! (Y1_2) dtmp0 = (double)ii0;
2502         sll     %l7,3,%o0               ! (Y0_2) ii0 <<= 3;
2503         and     %l6,-4,%g5              ! (Y0_2) i0 &= -4;
2504 
2505         faddd   %f36,KB1,%f60           ! (Y0_2) dtmp0 += KB1;
2506         fmuld   %f52,%f46,%f22          ! (Y0_0) yy0 = dtmp0 * yy;
2507         ld      [%g5+%o3],%f10          ! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2508 
2509         fdtoi   %f26,%f0                ! (Y0_1) ii0 = (int) yy0;
2510         ldd     [%o4+%o0],%f62          ! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2511 
2512         faddd   %f58,%f50,%f58          ! (Y1_3) dtmp0 += di0;
2513         add     %o5,stridey,%o5         ! py += stridey
2514         st      %f0,[%fp+tmp1]          ! (Y0_1) STORE ii0
2515 
2516         fsubd   %f24,%f56,%f56          ! (Y1_2) y0 = yy0 - dtmp0;
2517         lda     [%o5]0x82,%l7           ! (Y1_0) ay = ((int*)py)[0];
2518 
2519         fmuld   %f60,%f40,%f60          ! (Y0_2) yy0 = dtmp0 * y0;
2520         add     %i3,stridez,%i5         ! pz += stridez
2521         lda     [%o5]0x82,%f7           ! (Y1_0) ftmp0 = py[0];
2522         fmovdl  %fcc2,HTHRESHOLD,%f28   ! (Y1_1) yy0 = HTHRESH;
2523 
2524         fmuld   %f10,%f62,%f62          ! (Y0_2) di0 *= dtmp0;
2525         and     %l7,MASK_0x7fffffff,%l7 ! (Y1_0) ay &= 0x7fffffff
2526         ld      [%fp+tmp0],%g5          ! (Y1_2) LOAD ii0
2527         fcmped  %fcc0,HTHRESHOLD,%f22   ! (Y0_0) if (yy0 >= HTHRESH)
2528 
2529         fdtos   %f58,%f9                ! (Y1_3) ftmp0 = (float)dtmp0;
2530         st      %f9,[%i3]               ! (Y1_3) pz[0] = ftmp0;
2531         cmp     %l7,%o1
2532         bge,pn  %icc,.xupdate6
2533 
2534 .xcont6:
2535         fmuld   KB2,%f56,%f58           ! (Y1_2) dtmp0 = KB2 * y0;
2536         fstod   %f7,%f48                ! (Y1_0) dtmp0 = (double)ftmp0;
2537 
2538         cmp     counter,8
2539         bl,pn   %icc,.xtail
2540         nop
2541 
2542         ba      .xmain_loop
2543         nop
2544 
2545         .align  16
2546 .xmain_loop:
2547         fmovdg  %fcc3,LTHRESHOLD,%f28   ! (Y1_2) yy0 = LTHRESH;
2548         sra     %g5,6,%i0               ! (Y1_3) i0 = ii0 >> 6;
2549         and     %g5,255,%i1             ! (Y1_3) ii0 &= 255;
2550         fmuld   %f60,%f62,%f40          ! (Y0_3) dtmp0 = yy0 * di0;
2551 
2552         fcmped  %fcc1,LTHRESHOLD,%f22   ! (Y0_1) if (yy0 <= LTHRESH)
2553         sll     %i1,3,%i3               ! (Y1_3) ii0 <<= 3;
2554         and     %i0,-4,%i0              ! (Y1_3) i0 &= -4;
2555 
2556         fitod   %f0,%f52                ! (Y0_2) dtmp0 = (double)ii0;
2557         sub     counter,4,counter
2558         ld      [%i0+%o3],%f10          ! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
2559 
2560         faddd   %f58,KB1,%f58           ! (Y1_3) dtmp0 += KB1;
2561         add     %o5,stridey,%o5         ! py += stridey
2562         ldd     [%o4+%i3],%f18          ! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2563         fmuld   %f48,%f46,%f24          ! (Y1_1) yy0 = dtmp0 * yy;
2564 
2565         fdtoi   %f28,%f3                ! (Y1_2) ii0 = (int) yy0;
2566         lda     [%o5]0x82,%i3           ! (Y0_0) ay = py[0];
2567 
2568         faddd   %f40,%f62,%f60          ! (Y0_3) dtmp0 += di0;
2569         st      %f3,[%fp+tmp0]          ! (Y1_2) STORE ii0
2570 
2571         fsubd   %f26,%f52,%f40          ! (Y0_2) y0 = yy0 - dtmp0;
2572         lda     [%o5]0x82,%f5           ! (Y0_0) ftmp0 = py[0];
2573 
2574         fmuld   %f58,%f56,%f56          ! (Y1_3) yy0 = dtmp0 * y0;
2575         and     %i3,MASK_0x7fffffff,%i3 ! (Y0_0) ay &= 0x7fffffff
2576         fmovdl  %fcc0,HTHRESHOLD,%f22   ! (Y0_1) yy0 = HTHRESH;
2577 
2578         fmuld   %f10,%f18,%f50          ! (Y1_3) di0 *= dtmp0;
2579         cmp     %i3,%o1
2580         bge,pn  %icc,.xupdate7
2581         fcmped  %fcc2,HTHRESHOLD,%f24   ! (Y1_1) if (yy0 >= HTHRESH)
2582 .xcont7:
2583         fdtos   %f60,%f1                ! (Y0_3) ftmp0 = (float)dtmp0;
2584         add     %i5,stridez,%i3         ! pz += stridez
2585         st      %f1,[%i5]               ! (Y0_3) pz[0] = ftmp0;
2586 
2587         ld      [%fp+tmp1],%i2          ! (Y0_2) LOAD ii0
2588         fmuld   KB2,%f40,%f36           ! (Y0_2) dtmp0 = KB2 * y0;
2589         fstod   %f5,%f52                ! (Y0_0) dtmp0 = (double)ftmp0;
2590 
2591         fmovdg  %fcc1,LTHRESHOLD,%f22   ! (Y0_1) yy0 = LTHRESH;
2592 
2593         fmuld   %f56,%f50,%f58          ! (Y1_3) dtmp0 = yy0 * di0;
2594         sra     %i2,6,%l6               ! (Y0_2) i0 = ii0 >> 6;
2595         and     %i2,255,%l7             ! (Y0_2) ii0 &= 255;
2596         fcmped  %fcc3,LTHRESHOLD,%f24   ! (Y1_1) if (yy0 <= LTHRESH)
2597 
2598         fitod   %f3,%f56                ! (Y1_2) dtmp0 = (double)ii0;
2599         sll     %l7,3,%o0               ! (Y0_2) ii0 <<= 3;
2600         and     %l6,-4,%g5              ! (Y0_2) i0 &= -4;
2601 
2602         faddd   %f36,KB1,%f60           ! (Y0_2) dtmp0 += KB1;
2603         fmuld   %f52,%f46,%f26          ! (Y0_0) yy0 = dtmp0 * yy;
2604         ld      [%g5+%o3],%f10          ! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2605 
2606         fdtoi   %f22,%f0                ! (Y0_1) ii0 = (int) yy0;
2607         ldd     [%o4+%o0],%f62          ! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2608 
2609         faddd   %f58,%f50,%f58          ! (Y1_3) dtmp0 += di0;
2610         add     %o5,stridey,%o5         ! py += stridey
2611         st      %f0,[%fp+tmp1]          ! (Y0_1) STORE ii0
2612 
2613         fsubd   %f28,%f56,%f56          ! (Y1_2) y0 = yy0 - dtmp0;
2614         lda     [%o5]0x82,%i5           ! (Y1_0) ay = ((int*)py)[0];
2615 
2616         fmuld   %f60,%f40,%f60          ! (Y0_2) yy0 = dtmp0 * y0;
2617         fmovdl  %fcc2,HTHRESHOLD,%f24   ! (Y1_1) yy0 = HTHRESH;
2618         lda     [%o5]0x82,%f7           ! (Y1_0) ftmp0 = py[0];
2619 
2620         fmuld   %f10,%f62,%f62          ! (Y0_2) di0 *= dtmp0;
2621         ld      [%fp+tmp0],%g5          ! (Y1_2) LOAD ii0
2622         and     %i5,MASK_0x7fffffff,%i5 ! (Y1_0) ay &= 0x7fffffff
2623         fcmped  %fcc0,HTHRESHOLD,%f26   ! (Y0_0) if (yy0 >= HTHRESH)
2624 
2625         fdtos   %f58,%f9                ! (Y1_3) ftmp0 = (float)dtmp0;
2626         cmp     %i5,%o1
2627         bge,pn  %icc,.xupdate8
2628 
2629 .xcont8:
2630         fmuld   KB2,%f56,%f58           ! (Y1_2) dtmp0 = KB2 * y0;
2631         add     %i3,stridez,%i5         ! pz += stridez
2632         st      %f9,[%i3]               ! (Y1_3) pz[0] = ftmp0;
2633         fstod   %f7,%f48                ! (Y1_0) dtmp0 = (double)ftmp0;
2634 
2635         fmovdg  %fcc3,LTHRESHOLD,%f24   ! (Y1_2) yy0 = LTHRESH;
2636         sra     %g5,6,%i0               ! (Y1_3) i0 = ii0 >> 6;
2637         and     %g5,255,%i1             ! (Y1_3) ii0 &= 255;
2638         fmuld   %f60,%f62,%f40          ! (Y0_3) dtmp0 = yy0 * di0;
2639 
2640         fcmped  %fcc1,LTHRESHOLD,%f26   ! (Y0_1) if (yy0 <= LTHRESH)
2641         sll     %i1,3,%i3               ! (Y1_3) ii0 <<= 3;
2642         and     %i0,-4,%i0              ! (Y1_3) i0 &= -4;
2643 
2644         fitod   %f0,%f52                ! (Y0_2) dtmp0 = (double)ii0;
2645         ld      [%i0+%o3],%f10          ! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
2646 
2647         faddd   %f58,KB1,%f58           ! (Y1_3) dtmp0 += KB1;
2648         add     %o5,stridey,%o5         ! py += stridey
2649         ldd     [%o4+%i3],%f18          ! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2650         fmuld   %f48,%f46,%f28          ! (Y1_1) yy0 = dtmp0 * yy;
2651 
2652         fdtoi   %f24,%f3                ! (Y1_2) ii0 = (int) yy0;
2653         lda     [%o5]0x82,%i3           ! (Y0_0) ay = py[0];
2654 
2655         faddd   %f40,%f62,%f60          ! (Y0_3) dtmp0 += di0;
2656         st      %f3,[%fp+tmp0]          ! (Y1_2) STORE ii0
2657 
2658         fsubd   %f22,%f52,%f40          ! (Y0_2) y0 = yy0 - dtmp0;
2659         lda     [%o5]0x82,%f5           ! (Y0_0) ftmp0 = py[0];
2660 
2661         fmuld   %f58,%f56,%f56          ! (Y1_3) yy0 = dtmp0 * y0;
2662         and     %i3,MASK_0x7fffffff,%i3 ! (Y0_0) ay &= 0x7fffffff
2663         fmovdl  %fcc0,HTHRESHOLD,%f26   ! (Y0_1) yy0 = HTHRESH;
2664 
2665         fmuld   %f10,%f18,%f50          ! (Y1_3) di0 *= dtmp0;
2666         cmp     %i3,%o1
2667         bge,pn  %icc,.xupdate9
2668         fcmped  %fcc2,HTHRESHOLD,%f28   ! (Y1_1) if (yy0 >= HTHRESH)
2669 .xcont9:
2670         fdtos   %f60,%f1                ! (Y0_3) ftmp0 = (float)dtmp0;
2671         add     %i5,stridez,%i3         ! pz += stridez
2672         st      %f1,[%i5]               ! (Y0_3) pz[0] = ftmp0;
2673 
2674         ld      [%fp+tmp1],%i2          ! (Y0_2) LOAD ii0
2675         fmuld   KB2,%f40,%f36           ! (Y0_2) dtmp0 = KB2 * y0;
2676         fstod   %f5,%f52                ! (Y0_0) dtmp0 = (double)ftmp0;
2677 
2678         fmovdg  %fcc1,LTHRESHOLD,%f26   ! (Y0_1) yy0 = LTHRESH;
2679 
2680         fmuld   %f56,%f50,%f58          ! (Y1_3) dtmp0 = yy0 * di0;
2681         sra     %i2,6,%l6               ! (Y0_2) i0 = ii0 >> 6;
2682         and     %i2,255,%l7             ! (Y0_2) ii0 &= 255;
2683         fcmped  %fcc3,LTHRESHOLD,%f28   ! (Y1_1) if (yy0 <= LTHRESH)
2684 
2685         fitod   %f3,%f56                ! (Y1_2) dtmp0 = (double)ii0;
2686         sll     %l7,3,%o0               ! (Y0_2) ii0 <<= 3;
2687         and     %l6,-4,%g5              ! (Y0_2) i0 &= -4;
2688 
2689         faddd   %f36,KB1,%f60           ! (Y0_2) dtmp0 += KB1;
2690         fmuld   %f52,%f46,%f22          ! (Y0_0) yy0 = dtmp0 * yy;
2691         ld      [%g5+%o3],%f10          ! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2692 
2693         fdtoi   %f26,%f0                ! (Y0_1) ii0 = (int) yy0;
2694         ldd     [%o4+%o0],%f62          ! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2695 
2696         faddd   %f58,%f50,%f58          ! (Y1_3) dtmp0 += di0;
2697         add     %o5,stridey,%o5         ! py += stridey
2698         st      %f0,[%fp+tmp1]          ! (Y0_1) STORE ii0
2699 
2700         fsubd   %f24,%f56,%f56          ! (Y1_2) y0 = yy0 - dtmp0;
2701         lda     [%o5]0x82,%l7           ! (Y1_0) ay = ((int*)py)[0];
2702 
2703         fmuld   %f60,%f40,%f60          ! (Y0_2) yy0 = dtmp0 * y0;
2704         add     %i3,stridez,%i5         ! pz += stridez
2705         lda     [%o5]0x82,%f7           ! (Y1_0) ftmp0 = py[0];
2706         fmovdl  %fcc2,HTHRESHOLD,%f28   ! (Y1_1) yy0 = HTHRESH;
2707 
2708         fmuld   %f10,%f62,%f62          ! (Y0_2) di0 *= dtmp0;
2709         and     %l7,MASK_0x7fffffff,%l7 ! (Y1_0) ay &= 0x7fffffff
2710         ld      [%fp+tmp0],%g5          ! (Y1_2) LOAD ii0
2711         fcmped  %fcc0,HTHRESHOLD,%f22   ! (Y0_0) if (yy0 >= HTHRESH)
2712 
2713         fdtos   %f58,%f9                ! (Y1_3) ftmp0 = (float)dtmp0;
2714         st      %f9,[%i3]               ! (Y1_3) pz[0] = ftmp0;
2715         cmp     %l7,%o1
2716         bge,pn  %icc,.xupdate10
2717 .xcont10:
2718         fmuld   KB2,%f56,%f58           ! (Y1_2) dtmp0 = KB2 * y0;
2719         cmp     counter,4
2720         bge,pt  %icc,.xmain_loop
2721         fstod   %f7,%f48                ! (Y1_0) dtmp0 = (double)ftmp0;
2722 
2723 .xtail:
2724         subcc   counter,1,counter
2725         bneg,pn %icc,.xbegin
2726         or      %g0,%i5,%g1
2727 
2728         fmovdg  %fcc3,LTHRESHOLD,%f28   ! (Y1_2) yy0 = LTHRESH;
2729         sra     %g5,6,%i0               ! (Y1_3) i0 = ii0 >> 6;
2730         and     %g5,255,%i1             ! (Y1_3) ii0 &= 255;
2731         fmuld   %f60,%f62,%f40          ! (Y0_3) dtmp0 = yy0 * di0;
2732 
2733         fcmped  %fcc1,LTHRESHOLD,%f22   ! (Y0_1) if (yy0 <= LTHRESH)
2734         sll     %i1,3,%i3               ! (Y1_3) ii0 <<= 3;
2735         and     %i0,-4,%i0              ! (Y1_3) i0 &= -4;
2736 
2737         fitod   %f0,%f52                ! (Y0_2) dtmp0 = (double)ii0;
2738         ld      [%i0+%o3],%f10          ! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
2739 
2740         faddd   %f58,KB1,%f58           ! (Y1_3) dtmp0 += KB1;
2741         add     %o5,stridey,%o5         ! py += stridey
2742         ldd     [%o4+%i3],%f18          ! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2743         fmuld   %f48,%f46,%f24          ! (Y1_1) yy0 = dtmp0 * yy;
2744 
2745         fdtoi   %f28,%f3                ! (Y1_2) ii0 = (int) yy0;
2746         lda     [%o5]0x82,%i3           ! (Y0_0) ay = py[0];
2747 
2748         faddd   %f40,%f62,%f60          ! (Y0_3) dtmp0 += di0;
2749         st      %f3,[%fp+tmp0]          ! (Y1_2) STORE ii0
2750 
2751         fsubd   %f26,%f52,%f40          ! (Y0_2) y0 = yy0 - dtmp0;
2752         lda     [%o5]0x82,%f5           ! (Y0_0) ftmp0 = py[0];
2753 
2754         fmuld   %f58,%f56,%f56          ! (Y1_3) yy0 = dtmp0 * y0;
2755         and     %i3,MASK_0x7fffffff,%i3 ! (Y0_0) ay &= 0x7fffffff
2756         fmovdl  %fcc0,HTHRESHOLD,%f22   ! (Y0_1) yy0 = HTHRESH;
2757 
2758         fmuld   %f10,%f18,%f50          ! (Y1_3) di0 *= dtmp0;
2759         cmp     %i3,%o1
2760         bge,pn  %icc,.xupdate11
2761         fcmped  %fcc2,HTHRESHOLD,%f24   ! (Y1_1) if (yy0 >= HTHRESH)
2762 .xcont11:
2763         fdtos   %f60,%f1                ! (Y0_3) ftmp0 = (float)dtmp0;
2764         add     %i5,stridez,%i3         ! pz += stridez
2765         st      %f1,[%i5]               ! (Y0_3) pz[0] = ftmp0;
2766 
2767         subcc   counter,1,counter
2768         bneg,pn %icc,.xbegin
2769         or      %g0,%i3,%g1
2770 
2771         ld      [%fp+tmp1],%i2          ! (Y0_2) LOAD ii0
2772         fmuld   KB2,%f40,%f36           ! (Y0_2) dtmp0 = KB2 * y0;
2773         fstod   %f5,%f52                ! (Y0_0) dtmp0 = (double)ftmp0;
2774 
2775         fmovdg  %fcc1,LTHRESHOLD,%f22   ! (Y0_1) yy0 = LTHRESH;
2776 
2777         fmuld   %f56,%f50,%f58          ! (Y1_3) dtmp0 = yy0 * di0;
2778         sra     %i2,6,%l6               ! (Y0_2) i0 = ii0 >> 6;
2779         and     %i2,255,%l7             ! (Y0_2) ii0 &= 255;
2780         fcmped  %fcc3,LTHRESHOLD,%f24   ! (Y1_1) if (yy0 <= LTHRESH)
2781 
2782         fitod   %f3,%f56                ! (Y1_2) dtmp0 = (double)ii0;
2783         sll     %l7,3,%o0               ! (Y0_2) ii0 <<= 3;
2784         and     %l6,-4,%g5              ! (Y0_2) i0 &= -4;
2785 
2786         faddd   %f36,KB1,%f60           ! (Y0_2) dtmp0 += KB1;
2787         fmuld   %f52,%f46,%f26          ! (Y0_0) yy0 = dtmp0 * yy;
2788         ld      [%g5+%o3],%f10          ! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2789 
2790         fdtoi   %f22,%f0                ! (Y0_1) ii0 = (int) yy0;
2791         ldd     [%o4+%o0],%f62          ! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2792 
2793         faddd   %f58,%f50,%f58          ! (Y1_3) dtmp0 += di0;
2794         st      %f0,[%fp+tmp1]          ! (Y0_1) STORE ii0
2795 
2796         fsubd   %f28,%f56,%f56          ! (Y1_2) y0 = yy0 - dtmp0;
2797 
2798         fmuld   %f60,%f40,%f60          ! (Y0_2) yy0 = dtmp0 * y0;
2799         fmovdl  %fcc2,HTHRESHOLD,%f24   ! (Y1_1) yy0 = HTHRESH;
2800 
2801         fmuld   %f10,%f62,%f62          ! (Y0_2) di0 *= dtmp0;
2802         ld      [%fp+tmp0],%g5          ! (Y1_2) LOAD ii0
2803         fcmped  %fcc0,HTHRESHOLD,%f26   ! (Y0_0) if (yy0 >= HTHRESH)
2804 
2805         fdtos   %f58,%f9                ! (Y1_3) ftmp0 = (float)dtmp0;
2806 
2807         fmuld   KB2,%f56,%f58           ! (Y1_2) dtmp0 = KB2 * y0;
2808         add     %i3,stridez,%i5         ! pz += stridez
2809         st      %f9,[%i3]               ! (Y1_3) pz[0] = ftmp0;
2810 
2811         subcc   counter,1,counter
2812         bneg,pn %icc,.xbegin
2813         or      %g0,%i5,%g1
2814 
2815         fmovdg  %fcc3,LTHRESHOLD,%f24   ! (Y1_2) yy0 = LTHRESH;
2816         sra     %g5,6,%i0               ! (Y1_3) i0 = ii0 >> 6;
2817         and     %g5,255,%i1             ! (Y1_3) ii0 &= 255;
2818         fmuld   %f60,%f62,%f40          ! (Y0_3) dtmp0 = yy0 * di0;
2819 
2820         fcmped  %fcc1,LTHRESHOLD,%f26   ! (Y0_1) if (yy0 <= LTHRESH)
2821         sll     %i1,3,%i3               ! (Y1_3) ii0 <<= 3;
2822         and     %i0,-4,%i0              ! (Y1_3) i0 &= -4;
2823 
2824         fitod   %f0,%f52                ! (Y0_2) dtmp0 = (double)ii0;
2825         ld      [%i0+%o3],%f10          ! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
2826 
2827         faddd   %f58,KB1,%f58           ! (Y1_3) dtmp0 += KB1;
2828         ldd     [%o4+%i3],%f18          ! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2829 
2830         fdtoi   %f24,%f3                ! (Y1_2) ii0 = (int) yy0;
2831 
2832         faddd   %f40,%f62,%f60          ! (Y0_3) dtmp0 += di0;
2833         st      %f3,[%fp+tmp0]          ! (Y1_2) STORE ii0
2834 
2835         fsubd   %f22,%f52,%f40          ! (Y0_2) y0 = yy0 - dtmp0;
2836 
2837         fmuld   %f58,%f56,%f56          ! (Y1_3) yy0 = dtmp0 * y0;
2838         fmovdl  %fcc0,HTHRESHOLD,%f26   ! (Y0_1) yy0 = HTHRESH;
2839 
2840         fmuld   %f10,%f18,%f50          ! (Y1_3) di0 *= dtmp0;
2841 
2842         fdtos   %f60,%f1                ! (Y0_3) ftmp0 = (float)dtmp0;
2843         add     %i5,stridez,%i3         ! pz += stridez
2844         st      %f1,[%i5]               ! (Y0_3) pz[0] = ftmp0;
2845 
2846         subcc   counter,1,counter
2847         bneg,pn %icc,.xbegin
2848         or      %g0,%i3,%g1
2849 
2850         ld      [%fp+tmp1],%i2          ! (Y0_2) LOAD ii0
2851         fmuld   KB2,%f40,%f36           ! (Y0_2) dtmp0 = KB2 * y0;
2852 
2853         fmovdg  %fcc1,LTHRESHOLD,%f26   ! (Y0_1) yy0 = LTHRESH;
2854 
2855         fmuld   %f56,%f50,%f58          ! (Y1_3) dtmp0 = yy0 * di0;
2856         sra     %i2,6,%l6               ! (Y0_2) i0 = ii0 >> 6;
2857         and     %i2,255,%l7             ! (Y0_2) ii0 &= 255;
2858 
2859         fitod   %f3,%f56                ! (Y1_2) dtmp0 = (double)ii0;
2860         sll     %l7,3,%o0               ! (Y0_2) ii0 <<= 3;
2861         and     %l6,-4,%g5              ! (Y0_2) i0 &= -4;
2862 
2863         faddd   %f36,KB1,%f60           ! (Y0_2) dtmp0 += KB1;
2864         ld      [%g5+%o3],%f10          ! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150) + i0))[0];
2865 
2866         fdtoi   %f26,%f0                ! (Y0_1) ii0 = (int) yy0;
2867         ldd     [%o4+%o0],%f62          ! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2868 
2869         faddd   %f58,%f50,%f58          ! (Y1_3) dtmp0 += di0;
2870         st      %f0,[%fp+tmp1]          ! (Y0_1) STORE ii0
2871 
2872         fsubd   %f24,%f56,%f56          ! (Y1_2) y0 = yy0 - dtmp0;
2873 
2874         fmuld   %f60,%f40,%f60          ! (Y0_2) yy0 = dtmp0 * y0;
2875         add     %i3,stridez,%i5         ! pz += stridez
2876 
2877         fmuld   %f10,%f62,%f62          ! (Y0_2) di0 *= dtmp0;
2878         ld      [%fp+tmp0],%g5          ! (Y1_2) LOAD ii0
2879 
2880         fdtos   %f58,%f9                ! (Y1_3) ftmp0 = (float)dtmp0;
2881         st      %f9,[%i3]               ! (Y1_3) pz[0] = ftmp0;
2882 
2883         subcc   counter,1,counter
2884         bneg,pn %icc,.xbegin
2885         or      %g0,%i5,%g1
2886 
2887         fmuld   KB2,%f56,%f58           ! (Y1_2) dtmp0 = KB2 * y0;
2888 
2889         sra     %g5,6,%i0               ! (Y1_3) i0 = ii0 >> 6;
2890         and     %g5,255,%i1             ! (Y1_3) ii0 &= 255;
2891         fmuld   %f60,%f62,%f40          ! (Y0_3) dtmp0 = yy0 * di0;
2892 
2893         sll     %i1,3,%i3               ! (Y1_3) ii0 <<= 3;
2894         and     %i0,-4,%i0              ! (Y1_3) i0 &= -4;
2895 
2896         fitod   %f0,%f52                ! (Y0_2) dtmp0 = (double)ii0;
2897         ld      [%i0+%o3],%f10          ! (Y1_3) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0];
2898 
2899         faddd   %f58,KB1,%f58           ! (Y1_3) dtmp0 += KB1;
2900         ldd     [%o4+%i3],%f18          ! (Y1_3) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2901 
2902         faddd   %f40,%f62,%f60          ! (Y0_3) dtmp0 += di0;
2903 
2904         fsubd   %f26,%f52,%f40          ! (Y0_2) y0 = yy0 - dtmp0;
2905 
2906         fmuld   %f58,%f56,%f56          ! (Y1_3) yy0 = dtmp0 * y0;
2907 
2908         fmuld   %f10,%f18,%f50          ! (Y1_3) di0 *= dtmp0;
2909 
2910         fdtos   %f60,%f1                ! (Y0_3) ftmp0 = (float)dtmp0;
2911         add     %i5,stridez,%i3         ! pz += stridez
2912         st      %f1,[%i5]               ! (Y0_3) pz[0] = ftmp0;
2913 
2914         subcc   counter,1,counter
2915         bneg,pn %icc,.xbegin
2916         or      %g0,%i3,%g1
2917 
2918         ld      [%fp+tmp1],%i2          ! (Y0_2) LOAD ii0
2919         fmuld   KB2,%f40,%f36           ! (Y0_2) dtmp0 = KB2 * y0;
2920 
2921         fmuld   %f56,%f50,%f58          ! (Y1_3) dtmp0 = yy0 * di0;
2922         sra     %i2,6,%l6               ! (Y0_2) i0 = ii0 >> 6;
2923         and     %i2,255,%l7             ! (Y0_2) ii0 &= 255;
2924 
2925         sll     %l7,3,%o0               ! (Y0_2) ii0 <<= 3;
2926         and     %l6,-4,%g5              ! (Y0_2) i0 &= -4;
2927 
2928         faddd   %f36,KB1,%f60           ! (Y0_2) dtmp0 += KB1;
2929         ld      [%g5+%o3],%f10          ! (Y0_2) di0 = ((double*)((char*)(__mt_constexp2fb + 150 ) + i0))[0]
2930 
2931         ldd     [%o4+%o0],%f62          ! (Y0_2) dtmp0 = ((double*)((char*)__mt_constexp2fa + ii0))[0];
2932 
2933         faddd   %f58,%f50,%f58          ! (Y1_3) dtmp0 += di0;
2934 
2935         fmuld   %f60,%f40,%f60          ! (Y0_2) yy0 = dtmp0 * y0;
2936 
2937         fmuld   %f10,%f62,%f62          ! (Y0_2) di0 *= dtmp0;
2938 
2939         fdtos   %f58,%f9                ! (Y1_3) ftmp0 = (float)dtmp0;
2940         add     %i3,stridez,%i5         ! pz += stridez
2941         st      %f9,[%i3]               ! (Y1_3) pz[0] = ftmp0;
2942 
2943         subcc   counter,1,counter
2944         bneg,pn %icc,.xbegin
2945         or      %g0,%i5,%g1
2946 
2947         fmuld   %f60,%f62,%f40          ! (Y0_3) dtmp0 = yy0 * di0;
2948 
2949         faddd   %f40,%f62,%f60          ! (Y0_3) dtmp0 += di0;
2950 
2951         fdtos   %f60,%f1                ! (Y0_3) ftmp0 = (float)dtmp0;
2952         add     %i5,stridez,%i3         ! pz += stridez
2953         st      %f1,[%i5]               ! (Y0_3) pz[0] = ftmp0;
2954 
2955         ba      .xbegin
2956         or      %g0,%i3,%g1
2957 
2958 .xspec:
2959         bg,a,pn %icc,.yisnan            ! if (ay > 0x7f800000) /* |Y| = Nan */
2960         ld      [%o5],%f8               ! fy = *py;
2961 
2962         ld      [%fp+tmp5],%l6          ! LOAD (ax-0x3f800000)<<63
2963         srl     %i5,31,%i5              ! uy >> 31
2964 
2965         cmp     %l6,%i5                 ! if((ax < 0x3f800000) != (uy >> 31))
2966         be,a,pn %icc,.xspec_exit        ! if((ax < 0x3f800000) != (uy >> 31))
2967         st      %i3,[%g1]               ! fy = *(float*)&ay;
2968 
2969         st      %g0,[%g1]               ! fy = ZERO
2970         add     %g1,stridez,%g1
2971         ba      .xbegin1
2972         add     %o5,stridey,%o5
2973 
2974 .yisnan:
2975         fmuls   %f8,%f8,%f8             ! fy = *py * *py;  /* |Y| = Nan */
2976         st      %f8,[%g1]
2977 
2978 .xspec_exit:
2979         add     %g1,stridez,%g1
2980         ba      .xbegin1
2981         add     %o5,stridey,%o5
2982 
2983         .align  16
2984 .xupdate0:
2985         cmp     counter,0
2986         ble     .xcont0
2987         fzeros  %f7
2988 
2989         stx     %o5,[%fp+tmp_py]
2990 
2991         st      counter,[%fp+tmp_counter]
2992         ba      .xcont0
2993         or      %g0,0,counter
2994 
2995         .align  16
2996 .xupdate1:
2997         cmp     counter,1
2998         ble     .xcont1
2999         fzeros  %f5
3000 
3001         sub     counter,1,counter
3002         stx     %o5,[%fp+tmp_py]
3003 
3004         st      counter,[%fp+tmp_counter]
3005         ba      .xcont1
3006         or      %g0,1,counter
3007 
3008         .align  16
3009 .xupdate2:
3010         cmp     counter,2
3011         ble     .xcont2
3012         fzeros  %f7
3013 
3014         sub     counter,2,counter
3015         stx     %o5,[%fp+tmp_py]
3016 
3017         st      counter,[%fp+tmp_counter]
3018         ba      .xcont2
3019         or      %g0,2,counter
3020 
3021         .align  16
3022 .xupdate3:
3023         cmp     counter,3
3024         ble     .xcont3
3025         fzeros  %f5
3026 
3027         sub     counter,3,counter
3028         stx     %o5,[%fp+tmp_py]
3029 
3030         st      counter,[%fp+tmp_counter]
3031         ba      .xcont3
3032         or      %g0,3,counter
3033 
3034         .align  16
3035 .xupdate4:
3036         cmp     counter,4
3037         ble     .xcont4
3038         fzeros  %f7
3039 
3040         sub     counter,4,counter
3041         stx     %o5,[%fp+tmp_py]
3042 
3043         st      counter,[%fp+tmp_counter]
3044         ba      .xcont4
3045         or      %g0,4,counter
3046 
3047         .align  16
3048 .xupdate5:
3049         cmp     counter,5
3050         ble     .xcont5
3051         fzeros  %f5
3052 
3053         sub     counter,5,counter
3054         stx     %o5,[%fp+tmp_py]
3055 
3056         st      counter,[%fp+tmp_counter]
3057         ba      .xcont5
3058         or      %g0,5,counter
3059 
3060         .align  16
3061 .xupdate6:
3062         cmp     counter,5
3063         ble     .xcont6
3064         fzeros  %f7
3065 
3066         sub     counter,5,counter
3067         stx     %o5,[%fp+tmp_py]
3068 
3069         st      counter,[%fp+tmp_counter]
3070         ba      .xcont6
3071         or      %g0,5,counter
3072 
3073         .align  16
3074 .xupdate7:
3075         cmp     counter,2
3076         ble     .xcont7
3077         fzeros  %f5
3078 
3079         sub     counter,2,counter
3080         stx     %o5,[%fp+tmp_py]
3081 
3082         st      counter,[%fp+tmp_counter]
3083         ba      .xcont7
3084         or      %g0,2,counter
3085 
3086         .align  16
3087 .xupdate8:
3088         cmp     counter,3
3089         ble     .xcont8
3090         fzeros  %f7
3091 
3092         sub     counter,3,counter
3093         stx     %o5,[%fp+tmp_py]
3094 
3095         st      counter,[%fp+tmp_counter]
3096         ba      .xcont8
3097         or      %g0,3,counter
3098 
3099         .align  16
3100 .xupdate9:
3101         cmp     counter,4
3102         ble     .xcont9
3103         fzeros  %f5
3104 
3105         sub     counter,4,counter
3106         stx     %o5,[%fp+tmp_py]
3107 
3108         st      counter,[%fp+tmp_counter]
3109         ba      .xcont9
3110         or      %g0,4,counter
3111 
3112         .align  16
3113 .xupdate10:
3114         cmp     counter,5
3115         ble     .xcont10
3116         fzeros  %f7
3117 
3118         sub     counter,5,counter
3119         stx     %o5,[%fp+tmp_py]
3120 
3121         st      counter,[%fp+tmp_counter]
3122         ba      .xcont10
3123         or      %g0,5,counter
3124 
3125         .align  16
3126 .xupdate11:
3127         cmp     counter,5
3128         ble     .xcont11
3129         fzeros  %f5
3130 
3131         sub     counter,5,counter
3132         stx     %o5,[%fp+tmp_py]
3133 
3134         st      counter,[%fp+tmp_counter]
3135         ba      .xcont11
3136         or      %g0,5,counter
3137 
3138         SET_SIZE(__vpowf)
3139