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