/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ .file "__vpow.S" #include "libm.h" RO_DATA .align 64 .CONST_TBL: ! __mt_constlog2[2*i] = high order rounded 32 bits log2(1+i/256)*256, i = [0, 255] ! __mt_constlog2[2*i+1] = low order least bits log2(1+i/256)*256, i = [0, 255] .word 0x00000000, 0x00000000, 0x00000000, 0x00000000, .word 0x3ff709c4, 0x00000000, 0x3e9b5eab, 0x1dd2b66f, .word 0x4006fe51, 0x00000000, 0xbea2443d, 0xeba01c72, .word 0x40113631, 0x00000000, 0x3e97a97b, 0x0c4bb41a, .word 0x4016e797, 0x00000000, 0xbebe8f4b, 0x759d6476, .word 0x401c9364, 0x00000000, 0xbeb15ebc, 0x1e666460, .word 0x40211cd2, 0x00000000, 0xbeb57665, 0xf6893f5d, .word 0x4023ed31, 0x00000000, 0xbecae5e9, 0x7677f62d, .word 0x4026bad3, 0x00000000, 0x3ecd63bf, 0x61cc4d82, .word 0x402985c0, 0x00000000, 0xbebe5b57, 0x35cfaf8e, .word 0x402c4dfb, 0x00000000, 0xbec1bd55, 0x2842c1c2, .word 0x402f138a, 0x00000000, 0xbecf336b, 0x18178cbe, .word 0x4030eb39, 0x00000000, 0xbed81758, 0x19530c23, .word 0x40324b5b, 0x00000000, 0x3edf84d6, 0x8f2268b4, .word 0x4033aa30, 0x00000000, 0xbec16c07, 0x1e93fd97, .word 0x403507b8, 0x00000000, 0x3ecb019d, 0xdb6a796a, .word 0x403663f7, 0x00000000, 0xbe94dbb3, 0xa60cceb2, .word 0x4037beef, 0x00000000, 0xbeda51d7, 0x5fb0ef94, .word 0x403918a1, 0x00000000, 0x3edb918c, 0xd6ab9c8d, .word 0x403a7112, 0x00000000, 0xbec065bd, 0xb60a5dd4, .word 0x403bc842, 0x00000000, 0x3ed02b6a, 0xee98ecb1, .word 0x403d1e35, 0x00000000, 0xbebca47d, 0x25b2f4c7, .word 0x403e72ec, 0x00000000, 0x3eb17fa5, 0xb21cbdb6, .word 0x403fc66a, 0x00000000, 0x3eae1601, 0x49209a69, .word 0x40408c59, 0x00000000, 0xbeecc961, 0x871a7611, .word 0x404134e2, 0x00000000, 0xbee2ddbe, 0x74803297, .word 0x4041dcd2, 0x00000000, 0xbeea2ab5, 0x212856eb, .word 0x40428429, 0x00000000, 0x3ee2c1e9, 0x8fe35da3, .word 0x40432aea, 0x00000000, 0xbecd8751, 0xe5e0ae0d, .word 0x4043d114, 0x00000000, 0x3eeb66a2, 0x98fc02ce, .word 0x404476aa, 0x00000000, 0xbea9f022, 0xcb3b1c5b, .word 0x40451bac, 0x00000000, 0xbeebe168, 0xdd6dd3fe, .word 0x4045c01a, 0x00000000, 0x3edcfdeb, 0x43cfd006, .word 0x404663f7, 0x00000000, 0xbea4dbb3, 0xa60cceb2, .word 0x40470743, 0x00000000, 0xbed5887e, 0xc06b1ff2, .word 0x4047a9ff, 0x00000000, 0xbedc17d1, 0x108740d9, .word 0x40484c2c, 0x00000000, 0xbed7e87e, 0x268116ee, .word 0x4048edcb, 0x00000000, 0xbec7cad4, 0x944a32be, .word 0x40498edd, 0x00000000, 0x3eadf9c3, 0x7c0beb3a, .word 0x404a2f63, 0x00000000, 0x3ed1905c, 0x35651c43, .word 0x404acf5e, 0x00000000, 0x3ed6da76, 0x49f7f08f, .word 0x404b6ecf, 0x00000000, 0x3ec75f95, 0xe96bed8d, .word 0x404c0db7, 0x00000000, 0xbed91359, 0x08df8ec9, .word 0x404cac16, 0x00000000, 0x3ede3b86, 0xe44b6265, .word 0x404d49ee, 0x00000000, 0x3ee30c96, 0x5bf23d2d, .word 0x404de740, 0x00000000, 0xbecc4eb7, 0xf11e41be, .word 0x404e840c, 0x00000000, 0xbec8b195, 0xb338360c, .word 0x404f2053, 0x00000000, 0x3edc9047, 0x93a3ba95, .word 0x404fbc17, 0x00000000, 0xbee1bf65, 0xfd7715ca, .word 0x40502bac, 0x00000000, 0xbef76cbe, 0x67113a18, .word 0x4050790b, 0x00000000, 0xbee227e7, 0xfb487e73, .word 0x4050c629, 0x00000000, 0x3efd550a, 0xa3a93ec8, .word 0x40511308, 0x00000000, 0xbee2967a, 0x451a7b48, .word 0x40515fa6, 0x00000000, 0x3efdaec2, 0x3fd65f8e, .word 0x4051ac06, 0x00000000, 0xbef35b83, 0xe3eb5ce3, .word 0x4051f826, 0x00000000, 0xbec24ee3, 0xd9a82f2e, .word 0x40524408, 0x00000000, 0xbef53c7e, 0x319f6e92, .word 0x40528fab, 0x00000000, 0x3eead993, 0x41b181d1, .word 0x4052db11, 0x00000000, 0xbead932a, 0x8487642e, .word 0x40532639, 0x00000000, 0x3ef8daca, 0x0d66b8f9, .word 0x40537125, 0x00000000, 0xbee8ad99, 0x09933766, .word 0x4053bbd4, 0x00000000, 0xbef7d788, 0xc15a9f3d, .word 0x40540646, 0x00000000, 0x3eed8d82, 0x24bad97a, .word 0x4054507d, 0x00000000, 0xbe922b03, 0xc6b2a5f6, .word 0x40549a78, 0x00000000, 0x3ef2f346, 0xe2bf924b, .word 0x4054e439, 0x00000000, 0xbeffc5c1, 0x258110a4, .word 0x40552dbe, 0x00000000, 0xbead9b4a, 0x641184f9, .word 0x40557709, 0x00000000, 0x3edb3378, 0xcab10782, .word 0x4055c01a, 0x00000000, 0x3eecfdeb, 0x43cfd006, .word 0x405608f2, 0x00000000, 0xbef2f5ad, 0xd49a43fc, .word 0x40565190, 0x00000000, 0xbedb9884, 0x591add87, .word 0x405699f5, 0x00000000, 0x3ee2466a, 0x5c3462a4, .word 0x4056e222, 0x00000000, 0xbee93179, 0x90d43957, .word 0x40572a16, 0x00000000, 0x3eebe5e0, 0xc14a1a6d, .word 0x405771d3, 0x00000000, 0xbef16041, 0x3106e405, .word 0x4057b958, 0x00000000, 0xbef4eb95, 0x4eea2724, .word 0x405800a5, 0x00000000, 0x3ef8c587, 0x150cabae, .word 0x405847bc, 0x00000000, 0x3ee9ec30, 0xc6e3e04a, .word 0x40588e9c, 0x00000000, 0x3efcb82c, 0x89692d99, .word 0x4058d546, 0x00000000, 0x3efced70, 0xdc6acf42, .word 0x40591bbb, 0x00000000, 0xbefdb83a, 0x3dd2d353, .word 0x405961f9, 0x00000000, 0x3eb49d02, 0x6e33d676, .word 0x4059a802, 0x00000000, 0x3eec8f11, 0x979a5db7, .word 0x4059edd6, 0x00000000, 0x3efd66c9, 0x77e236c7, .word 0x405a3376, 0x00000000, 0x3ec4fec0, 0xa13af882, .word 0x405a78e1, 0x00000000, 0x3ef1bdef, 0xbd14a081, .word 0x405abe18, 0x00000000, 0x3efe5fc7, 0xd238691d, .word 0x405b031c, 0x00000000, 0xbed01f9b, 0xcb999fe9, .word 0x405b47ec, 0x00000000, 0xbec18efa, 0xbeb7d722, .word 0x405b8c89, 0x00000000, 0xbee203bc, 0xc3346511, .word 0x405bd0f3, 0x00000000, 0xbed6186f, 0xcf54bbd3, .word 0x405c152a, 0x00000000, 0x3efb0932, 0xb9700973, .word 0x405c5930, 0x00000000, 0xbef4b5a9, 0x2a606047, .word 0x405c9d03, 0x00000000, 0xbec26b70, 0x98590071, .word 0x405ce0a5, 0x00000000, 0xbefb7169, 0xe0cda8bd, .word 0x405d2415, 0x00000000, 0xbeebfa06, 0xc156f521, .word 0x405d6754, 0x00000000, 0xbedfcd15, 0xf101c142, .word 0x405daa62, 0x00000000, 0x3ee10327, 0xdc8093a5, .word 0x405ded40, 0x00000000, 0xbee5dee4, 0xd9d8a273, .word 0x405e2fed, 0x00000000, 0x3eee84b9, 0x4c06f913, .word 0x405e726b, 0x00000000, 0xbef7862a, 0xcb7ceb98, .word 0x405eb4b8, 0x00000000, 0x3ef1f456, 0xf394f972, .word 0x405ef6d6, 0x00000000, 0x3efcca38, 0x881f4780, .word 0x405f38c5, 0x00000000, 0x3ef9ef31, 0x50343f8e, .word 0x405f7a85, 0x00000000, 0x3efa32c1, 0xb3b3864c, .word 0x405fbc17, 0x00000000, 0xbef1bf65, 0xfd7715ca, .word 0x405ffd7a, 0x00000000, 0xbef95f00, 0x19518ce0, .word 0x40601f57, 0x00000000, 0x3ef3b932, 0x6ff91960, .word 0x40603fdb, 0x00000000, 0xbf0d1a19, 0xa0331af3, .word 0x40606047, 0x00000000, 0x3ee9f24e, 0xb23e991f, .word 0x4060809d, 0x00000000, 0xbedb011f, 0x855b4988, .word 0x4060a0dc, 0x00000000, 0x3efa7c70, 0xfde006c7, .word 0x4060c105, 0x00000000, 0x3e9ac754, 0xcb104aea, .word 0x4060e117, 0x00000000, 0x3f0d535f, 0x0444ebab, .word 0x40610114, 0x00000000, 0xbf03ab0d, 0xc56138c9, .word 0x406120fa, 0x00000000, 0xbef630f3, 0xfc695a97, .word 0x406140ca, 0x00000000, 0xbec5786a, 0xf187a96b, .word 0x40616084, 0x00000000, 0x3f012578, 0x0181e2b3, .word 0x40618029, 0x00000000, 0xbef846b4, 0x4ad8a38b, .word 0x40619fb8, 0x00000000, 0xbf01c336, 0xf7a3a78f, .word 0x4061bf31, 0x00000000, 0x3eee95d0, 0x0de3b514, .word 0x4061de95, 0x00000000, 0x3eed9cbb, 0xa6187a4d, .word 0x4061fde4, 0x00000000, 0xbef678bf, 0x6cdedf51, .word 0x40621d1d, 0x00000000, 0x3f06edb5, 0x668c543d, .word 0x40623c42, 0x00000000, 0xbef5ec6c, 0x1bfbf89a, .word 0x40625b51, 0x00000000, 0x3f062dcf, 0x4115a1a3, .word 0x40627a4c, 0x00000000, 0x3ec6172f, 0xe015e13c, .word 0x40629932, 0x00000000, 0xbed30dd5, 0x3f5c184c, .word 0x4062b803, 0x00000000, 0x3f01cfde, 0xb43cfd00, .word 0x4062d6c0, 0x00000000, 0x3ee35013, 0x8064a94e, .word 0x4062f568, 0x00000000, 0x3f0d7acf, 0xc98509e3, .word 0x406313fd, 0x00000000, 0xbf0d7932, 0x43718371, .word 0x4063327c, 0x00000000, 0x3f0aad27, 0x29b21ae5, .word 0x406350e8, 0x00000000, 0x3ef92b83, 0xec743665, .word 0x40636f40, 0x00000000, 0xbec249ba, 0x76fee235, .word 0x40638d84, 0x00000000, 0xbeefd0a2, 0xf6d7e41e, .word 0x4063abb4, 0x00000000, 0xbec57f7a, 0x64ccd537, .word 0x4063c9d0, 0x00000000, 0x3f09242b, 0x8488b305, .word 0x4063e7d9, 0x00000000, 0x3efbcfb8, 0x0b357154, .word 0x406405cf, 0x00000000, 0xbf0cb1c2, 0xd10504b4, .word 0x406423b0, 0x00000000, 0x3f0fa61a, 0xaa59c1d8, .word 0x4064417f, 0x00000000, 0x3ef26410, 0xb256d8d7, .word 0x40645f3b, 0x00000000, 0xbf09d77e, 0x31d6ca00, .word 0x40647ce3, 0x00000000, 0xbeda5fb4, 0xf23978de, .word 0x40649a78, 0x00000000, 0x3f02f346, 0xe2bf924b, .word 0x4064b7fb, 0x00000000, 0xbf0106da, 0x1aa0e9e7, .word 0x4064d56a, 0x00000000, 0x3f06ccf3, 0xb1129b7c, .word 0x4064f2c7, 0x00000000, 0x3f006a7c, 0xcf9dd420, .word 0x40651012, 0x00000000, 0xbf0e3dd5, 0xc1c885ae, .word 0x40652d49, 0x00000000, 0x3f00b91e, 0x4253bd27, .word 0x40654a6f, 0x00000000, 0xbf0cd6af, 0x1c9393cd, .word 0x40656781, 0x00000000, 0x3f0ee1ac, 0x0b1ec5ea, .word 0x40658482, 0x00000000, 0x3ef34c4e, 0x99e1c6c6, .word 0x4065a171, 0x00000000, 0xbf06d01c, 0xa8f50e5f, .word 0x4065be4d, 0x00000000, 0x3ed96a28, 0x6955d67e, .word 0x4065db17, 0x00000000, 0x3f0d4210, 0x4f127092, .word 0x4065f7d0, 0x00000000, 0xbed7c3ec, 0xa28e69ca, .word 0x40661477, 0x00000000, 0xbf07f393, 0xbdd98c47, .word 0x4066310c, 0x00000000, 0xbf0c2ab3, 0xedefe569, .word 0x40664d8f, 0x00000000, 0xbef44732, 0x0833c207, .word 0x40666a01, 0x00000000, 0xbf0c6e1d, 0xcd0cb449, .word 0x40668661, 0x00000000, 0xbefb4848, 0x3c643a24, .word 0x4066a2b0, 0x00000000, 0xbf08697c, 0x3d7dfd9b, .word 0x4066beed, 0x00000000, 0x3ef12866, 0xd705c554, .word 0x4066db19, 0x00000000, 0x3f0a9d86, 0x52765f7c, .word 0x4066f735, 0x00000000, 0xbf0d0e8e, 0x7a165e04, .word 0x4067133f, 0x00000000, 0xbf093aa4, 0xe106ba60, .word 0x40672f38, 0x00000000, 0xbf04bace, 0x940d18ba, .word 0x40674b20, 0x00000000, 0xbef4d8fc, 0x561c8d44, .word 0x406766f7, 0x00000000, 0x3ef5931e, 0xf6e6f15b, .word 0x406782be, 0x00000000, 0xbf000896, 0x6a210de0, .word 0x40679e74, 0x00000000, 0xbf05dbfe, 0x780eccdb, .word 0x4067ba19, 0x00000000, 0xbecb2bf4, 0x6fd85522, .word 0x4067d5ae, 0x00000000, 0xbefd2fc3, 0xaddfdee2, .word 0x4067f132, 0x00000000, 0x3ef0c167, 0x8ae89767, .word 0x40680ca6, 0x00000000, 0x3ef034a6, 0xfc6488d1, .word 0x4068280a, 0x00000000, 0xbef520c7, 0xc69211fe, .word 0x4068435d, 0x00000000, 0x3f05328d, 0xdcedf39e, .word 0x40685ea1, 0x00000000, 0xbf03d361, 0x367bde41, .word 0x406879d4, 0x00000000, 0xbebc2624, 0x7a0cdfbb, .word 0x406894f7, 0x00000000, 0x3f02c1bb, 0xe2d01ba9, .word 0x4068b00b, 0x00000000, 0xbf043a4a, 0xd5c7a4dd, .word 0x4068cb0e, 0x00000000, 0x3efda59d, 0xded9b445, .word 0x4068e602, 0x00000000, 0x3eb11eb3, 0x043f5602, .word 0x406900e6, 0x00000000, 0x3ee60002, 0xccfe43f5, .word 0x40691bbb, 0x00000000, 0xbf0db83a, 0x3dd2d353, .word 0x4069367f, 0x00000000, 0x3f0b682a, 0xcba73219, .word 0x40695135, 0x00000000, 0xbef53d8e, 0x8e4c59c3, .word 0x40696bdb, 0x00000000, 0xbef6a9a5, 0x050809db, .word 0x40698671, 0x00000000, 0x3f0db68e, 0x0ba15359, .word 0x4069a0f9, 0x00000000, 0xbef6278f, 0xd810b546, .word 0x4069bb71, 0x00000000, 0xbec528c6, 0xcdef4d8d, .word 0x4069d5da, 0x00000000, 0xbeb57f7a, 0x64ccd537, .word 0x4069f034, 0x00000000, 0xbee33716, 0xa9ae332f, .word 0x406a0a7f, 0x00000000, 0xbef2d9f7, 0x698ce769, .word 0x406a24bb, 0x00000000, 0xbef48c02, 0x44aa8cfc, .word 0x406a3ee8, 0x00000000, 0xbed8e3cf, 0xc25f0ce6, .word 0x406a5906, 0x00000000, 0x3f0044c5, 0x590979a0, .word 0x406a7316, 0x00000000, 0xbef7e86f, 0x9c2154fb, .word 0x406a8d17, 0x00000000, 0xbf03a076, 0x2ed351cd, .word 0x406aa709, 0x00000000, 0xbed4ffd6, 0x59064390, .word 0x406ac0ed, 0x00000000, 0xbf04d9bb, 0x3135f0b1, .word 0x406adac2, 0x00000000, 0xbee8ee37, 0xcd2ea9d3, .word 0x406af489, 0x00000000, 0xbf02ba1b, 0x4a95229c, .word 0x406b0e41, 0x00000000, 0x3ef35e64, 0x35ebd377, .word 0x406b27eb, 0x00000000, 0x3f02fe3c, 0x2291b5ad, .word 0x406b4187, 0x00000000, 0x3efa5480, 0x45ecbc5d, .word 0x406b5b15, 0x00000000, 0xbedee0d3, 0x3432f2c3, .word 0x406b7495, 0x00000000, 0xbf0c2ab3, 0x496d2d24, .word 0x406b8e06, 0x00000000, 0x3ef04439, 0x848e9d1e, .word 0x406ba76a, 0x00000000, 0xbf03186d, 0xa6fc41e0, .word 0x406bc0bf, 0x00000000, 0x3f05fc8d, 0x8164754e, .word 0x406bda07, 0x00000000, 0x3eecc67e, 0x6db516de, .word 0x406bf341, 0x00000000, 0x3ee14464, 0xa6bcdf48, .word 0x406c0c6d, 0x00000000, 0x3f011f17, 0x74d8b66a, .word 0x406c258c, 0x00000000, 0xbefd4cdb, 0xebaa4121, .word 0x406c3e9d, 0x00000000, 0xbf074797, 0xeab3259d, .word 0x406c57a0, 0x00000000, 0xbee44a49, 0xa82ed669, .word 0x406c7096, 0x00000000, 0xbf045b87, 0x8e27d0d9, .word 0x406c897e, 0x00000000, 0xbec7c929, 0xc9e33277, .word 0x406ca259, 0x00000000, 0xbef1ab66, 0x74e5008e, .word 0x406cbb26, 0x00000000, 0x3f09333f, 0x3d6bb35f, .word 0x406cd3e7, 0x00000000, 0xbf07cd5d, 0xbe4f6f23, .word 0x406cec9a, 0x00000000, 0xbf0848eb, 0x7f40a752, .word 0x406d053f, 0x00000000, 0x3f0b4982, 0x259cc626, .word 0x406d1dd8, 0x00000000, 0x3ee9b4c3, 0xf0c92723, .word 0x406d3664, 0x00000000, 0xbf036033, 0x8ab5a1f2, .word 0x406d4ee2, 0x00000000, 0x3f015971, 0x8aacb6ec, .word 0x406d6754, 0x00000000, 0xbeefcd15, 0xf101c142, .word 0x406d7fb9, 0x00000000, 0xbf0bd935, 0x64ee1bf6, .word 0x406d9810, 0x00000000, 0x3f090f59, 0x8530f102, .word 0x406db05b, 0x00000000, 0x3f0a28be, 0xd929effb, .word 0x406dc89a, 0x00000000, 0xbf053002, 0xa4e86631, .word 0x406de0cb, 0x00000000, 0x3efcb99c, 0x5233429f, .word 0x406df8f0, 0x00000000, 0x3ef04357, 0x9625f7a4, .word 0x406e1108, 0x00000000, 0x3f0b6bdd, 0x258a7b23, .word 0x406e2914, 0x00000000, 0x3ef70700, 0xa00fdd55, .word 0x406e4113, 0x00000000, 0x3f0bab95, 0x4f46b93f, .word 0x406e5906, 0x00000000, 0x3efe4411, 0x672b0c89, .word 0x406e70ed, 0x00000000, 0xbf06e041, 0xe4467502, .word 0x406e88c7, 0x00000000, 0xbf032765, 0x63557797, .word 0x406ea094, 0x00000000, 0x3f0d7b8f, 0x0e7b8e75, .word 0x406eb856, 0x00000000, 0xbeccd5dc, 0x13cad28e, .word 0x406ed00b, 0x00000000, 0x3f0222fb, 0x08d5c3f2, .word 0x406ee7b4, 0x00000000, 0x3f0c6cea, 0x541f5b70, .word 0x406eff52, 0x00000000, 0xbf0fd40b, 0x070e6c33, .word 0x406f16e3, 0x00000000, 0xbf0f8922, 0x73f1379b, .word 0x406f2e68, 0x00000000, 0xbf0fa051, 0xeebd4f74, .word 0x406f45e1, 0x00000000, 0xbf0d0c3e, 0x6aac6ca9, .word 0x406f5d4e, 0x00000000, 0xbf04c432, 0x5068bc88, .word 0x406f74af, 0x00000000, 0xbede20a0, 0xa450bc93, .word 0x406f8c04, 0x00000000, 0x3f08f3a3, 0x1a23946e, .word 0x406fa34e, 0x00000000, 0x3ee177c2, 0x3362928c, .word 0x406fba8c, 0x00000000, 0x3ec71513, 0x7cfebaa0, .word 0x406fd1be, 0x00000000, 0x3f031fca, 0xbe50ac88, .word 0x406fe8e5, 0x00000000, 0xbedd485c, 0xbfb44c3b, ! .word 0x01a56e1f, 0xc2f8f359, ! _TINY = 1.0e-300 .word 0x7e37e43c, 0x8800759c, ! _HUGE = 1.0e+300 .word 0x3f6d94ae, 0x0bf85de6, ! KA1_LO = (1.41052154268147309568e-05*256) .word 0x40871540, 0x00000000, ! KA1_HI = (2.8853759765625e+00*256) .word 0x3cd5d528, 0x93bc7fec, ! KB5 = 1.21195555854068860923e-15 .word 0x3e2c6b08, 0xd71f5d1e, ! KB3 = 3.30830268126604677436e-09 .word 0x3ecebfbd, 0xff82c4ed, ! KB2 = 3.66556559691003767877e-06 .word 0x3f662e42, 0xfefa39ef, ! KB1 = 2.70760617406228636578e-03 ! ! __mt_constexp2[2*i] = high order bits 2^(i/256), i = [0, 255] ! __mt_constexp2[2*i+1] = least bits 2^(i/256), i = [0, 255] .word 0x3ff00000, 0x00000000, 0x00000000, 0x00000000, .word 0x3ff00b1a, 0xfa5abcbf, 0xbc84f6b2, 0xa7609f71, .word 0x3ff0163d, 0xa9fb3335, 0x3c9b6129, 0x9ab8cdb7, .word 0x3ff02168, 0x143b0281, 0xbc82bf31, 0x0fc54eb6, .word 0x3ff02c9a, 0x3e778061, 0xbc719083, 0x535b085d, .word 0x3ff037d4, 0x2e11bbcc, 0x3c656811, 0xeeade11a, .word 0x3ff04315, 0xe86e7f85, 0xbc90a31c, 0x1977c96e, .word 0x3ff04e5f, 0x72f654b1, 0x3c84c379, 0x3aa0d08c, .word 0x3ff059b0, 0xd3158574, 0x3c8d73e2, 0xa475b465, .word 0x3ff0650a, 0x0e3c1f89, 0xbc95cb7b, 0x5799c397, .word 0x3ff0706b, 0x29ddf6de, 0xbc8c91df, 0xe2b13c27, .word 0x3ff07bd4, 0x2b72a836, 0x3c832334, 0x54458700, .word 0x3ff08745, 0x18759bc8, 0x3c6186be, 0x4bb284ff, .word 0x3ff092bd, 0xf66607e0, 0xbc968063, 0x800a3fd1, .word 0x3ff09e3e, 0xcac6f383, 0x3c914878, 0x18316136, .word 0x3ff0a9c7, 0x9b1f3919, 0x3c85d16c, 0x873d1d38, .word 0x3ff0b558, 0x6cf9890f, 0x3c98a62e, 0x4adc610b, .word 0x3ff0c0f1, 0x45e46c85, 0x3c94f989, 0x06d21cef, .word 0x3ff0cc92, 0x2b7247f7, 0x3c901edc, 0x16e24f71, .word 0x3ff0d83b, 0x23395dec, 0xbc9bc14d, 0xe43f316a, .word 0x3ff0e3ec, 0x32d3d1a2, 0x3c403a17, 0x27c57b52, .word 0x3ff0efa5, 0x5fdfa9c5, 0xbc949db9, 0xbc54021b, .word 0x3ff0fb66, 0xaffed31b, 0xbc6b9bed, 0xc44ebd7b, .word 0x3ff10730, 0x28d7233e, 0x3c8d46eb, 0x1692fdd5, .word 0x3ff11301, 0xd0125b51, 0xbc96c510, 0x39449b3a, .word 0x3ff11edb, 0xab5e2ab6, 0xbc9ca454, 0xf703fb72, .word 0x3ff12abd, 0xc06c31cc, 0xbc51b514, 0xb36ca5c7, .word 0x3ff136a8, 0x14f204ab, 0xbc67108f, 0xba48dcf0, .word 0x3ff1429a, 0xaea92de0, 0xbc932fbf, 0x9af1369e, .word 0x3ff14e95, 0x934f312e, 0xbc8b91e8, 0x39bf44ab, .word 0x3ff15a98, 0xc8a58e51, 0x3c82406a, 0xb9eeab0a, .word 0x3ff166a4, 0x5471c3c2, 0x3c58f23b, 0x82ea1a32, .word 0x3ff172b8, 0x3c7d517b, 0xbc819041, 0xb9d78a76, .word 0x3ff17ed4, 0x8695bbc0, 0x3c709e3f, 0xe2ac5a64, .word 0x3ff18af9, 0x388c8dea, 0xbc911023, 0xd1970f6c, .word 0x3ff19726, 0x58375d2f, 0x3c94aadd, 0x85f17e08, .word 0x3ff1a35b, 0xeb6fcb75, 0x3c8e5b4c, 0x7b4968e4, .word 0x3ff1af99, 0xf8138a1c, 0x3c97bf85, 0xa4b69280, .word 0x3ff1bbe0, 0x84045cd4, 0xbc995386, 0x352ef607, .word 0x3ff1c82f, 0x95281c6b, 0x3c900977, 0x8010f8c9, .word 0x3ff1d487, 0x3168b9aa, 0x3c9e016e, 0x00a2643c, .word 0x3ff1e0e7, 0x5eb44027, 0xbc96fdd8, 0x088cb6de, .word 0x3ff1ed50, 0x22fcd91d, 0xbc91df98, 0x027bb78c, .word 0x3ff1f9c1, 0x8438ce4d, 0xbc9bf524, 0xa097af5c, .word 0x3ff2063b, 0x88628cd6, 0x3c8dc775, 0x814a8495, .word 0x3ff212be, 0x3578a819, 0x3c93592d, 0x2cfcaac9, .word 0x3ff21f49, 0x917ddc96, 0x3c82a97e, 0x9494a5ee, .word 0x3ff22bdd, 0xa27912d1, 0x3c8d34fb, 0x5577d69f, .word 0x3ff2387a, 0x6e756238, 0x3c99b07e, 0xb6c70573, .word 0x3ff2451f, 0xfb82140a, 0x3c8acfcc, 0x911ca996, .word 0x3ff251ce, 0x4fb2a63f, 0x3c8ac155, 0xbef4f4a4, .word 0x3ff25e85, 0x711ece75, 0x3c93e1a2, 0x4ac31b2c, .word 0x3ff26b45, 0x65e27cdd, 0x3c82bd33, 0x9940e9d9, .word 0x3ff2780e, 0x341ddf29, 0x3c9e067c, 0x05f9e76c, .word 0x3ff284df, 0xe1f56381, 0xbc9a4c3a, 0x8c3f0d7e, .word 0x3ff291ba, 0x7591bb70, 0xbc82cc72, 0x28401cbd, .word 0x3ff29e9d, 0xf51fdee1, 0x3c8612e8, 0xafad1255, .word 0x3ff2ab8a, 0x66d10f13, 0xbc995743, 0x191690a7, .word 0x3ff2b87f, 0xd0dad990, 0xbc410adc, 0xd6381aa4, .word 0x3ff2c57e, 0x39771b2f, 0xbc950145, 0xa6eb5124, .word 0x3ff2d285, 0xa6e4030b, 0x3c900247, 0x54db41d5, .word 0x3ff2df96, 0x1f641589, 0x3c9d16cf, 0xfbbce198, .word 0x3ff2ecaf, 0xa93e2f56, 0x3c71ca0f, 0x45d52383, .word 0x3ff2f9d2, 0x4abd886b, 0xbc653c55, 0x532bda93, .word 0x3ff306fe, 0x0a31b715, 0x3c86f46a, 0xd23182e4, .word 0x3ff31432, 0xedeeb2fd, 0x3c8959a3, 0xf3f3fcd1, .word 0x3ff32170, 0xfc4cd831, 0x3c8a9ce7, 0x8e18047c, .word 0x3ff32eb8, 0x3ba8ea32, 0xbc9c45e8, 0x3cb4f318, .word 0x3ff33c08, 0xb26416ff, 0x3c932721, 0x843659a6, .word 0x3ff34962, 0x66e3fa2d, 0xbc835a75, 0x930881a4, .word 0x3ff356c5, 0x5f929ff1, 0xbc8b5cee, 0x5c4e4628, .word 0x3ff36431, 0xa2de883b, 0xbc8c3144, 0xa06cb85e, .word 0x3ff371a7, 0x373aa9cb, 0xbc963aea, 0xbf42eae2, .word 0x3ff37f26, 0x231e754a, 0xbc99f5ca, 0x9eceb23c, .word 0x3ff38cae, 0x6d05d866, 0xbc9e958d, 0x3c9904bd, .word 0x3ff39a40, 0x1b7140ef, 0xbc99a9a5, 0xfc8e2934, .word 0x3ff3a7db, 0x34e59ff7, 0xbc75e436, 0xd661f5e3, .word 0x3ff3b57f, 0xbfec6cf4, 0x3c954c66, 0xe26fff18, .word 0x3ff3c32d, 0xc313a8e5, 0xbc9efff8, 0x375d29c3, .word 0x3ff3d0e5, 0x44ede173, 0x3c7fe8d0, 0x8c284c71, .word 0x3ff3dea6, 0x4c123422, 0x3c8ada09, 0x11f09ebc, .word 0x3ff3ec70, 0xdf1c5175, 0xbc8af663, 0x7b8c9bca, .word 0x3ff3fa45, 0x04ac801c, 0xbc97d023, 0xf956f9f3, .word 0x3ff40822, 0xc367a024, 0x3c8bddf8, 0xb6f4d048, .word 0x3ff4160a, 0x21f72e2a, 0xbc5ef369, 0x1c309278, .word 0x3ff423fb, 0x2709468a, 0xbc98462d, 0xc0b314dd, .word 0x3ff431f5, 0xd950a897, 0xbc81c7dd, 0xe35f7999, .word 0x3ff43ffa, 0x3f84b9d4, 0x3c8880be, 0x9704c003, .word 0x3ff44e08, 0x6061892d, 0x3c489b7a, 0x04ef80d0, .word 0x3ff45c20, 0x42a7d232, 0xbc686419, 0x82fb1f8e, .word 0x3ff46a41, 0xed1d0057, 0x3c9c944b, 0xd1648a76, .word 0x3ff4786d, 0x668b3237, 0xbc9c20f0, 0xed445733, .word 0x3ff486a2, 0xb5c13cd0, 0x3c73c1a3, 0xb69062f0, .word 0x3ff494e1, 0xe192aed2, 0xbc83b289, 0x5e499ea0, .word 0x3ff4a32a, 0xf0d7d3de, 0x3c99cb62, 0xf3d1be56, .word 0x3ff4b17d, 0xea6db7d7, 0xbc8125b8, 0x7f2897f0, .word 0x3ff4bfda, 0xd5362a27, 0x3c7d4397, 0xafec42e2, .word 0x3ff4ce41, 0xb817c114, 0x3c905e29, 0x690abd5d, .word 0x3ff4dcb2, 0x99fddd0d, 0x3c98ecdb, 0xbc6a7833, .word 0x3ff4eb2d, 0x81d8abff, 0xbc95257d, 0x2e5d7a52, .word 0x3ff4f9b2, 0x769d2ca7, 0xbc94b309, 0xd25957e3, .word 0x3ff50841, 0x7f4531ee, 0x3c7a249b, 0x49b7465f, .word 0x3ff516da, 0xa2cf6642, 0xbc8f7685, 0x69bd93ef, .word 0x3ff5257d, 0xe83f4eef, 0xbc7c998d, 0x43efef71, .word 0x3ff5342b, 0x569d4f82, 0xbc807abe, 0x1db13cad, .word 0x3ff542e2, 0xf4f6ad27, 0x3c87926d, 0x192d5f7e, .word 0x3ff551a4, 0xca5d920f, 0xbc8d689c, 0xefede59b, .word 0x3ff56070, 0xdde910d2, 0xbc90fb6e, 0x168eebf0, .word 0x3ff56f47, 0x36b527da, 0x3c99bb2c, 0x011d93ad, .word 0x3ff57e27, 0xdbe2c4cf, 0xbc90b98c, 0x8a57b9c4, .word 0x3ff58d12, 0xd497c7fd, 0x3c8295e1, 0x5b9a1de8, .word 0x3ff59c08, 0x27ff07cc, 0xbc97e2ce, 0xe467e60f, .word 0x3ff5ab07, 0xdd485429, 0x3c96324c, 0x054647ad, .word 0x3ff5ba11, 0xfba87a03, 0xbc9b77a1, 0x4c233e1a, .word 0x3ff5c926, 0x8a5946b7, 0x3c3c4b1b, 0x816986a2, .word 0x3ff5d845, 0x90998b93, 0xbc9cd6a7, 0xa8b45643, .word 0x3ff5e76f, 0x15ad2148, 0x3c9ba6f9, 0x3080e65e, .word 0x3ff5f6a3, 0x20dceb71, 0xbc89eadd, 0xe3cdcf92, .word 0x3ff605e1, 0xb976dc09, 0xbc93e242, 0x9b56de47, .word 0x3ff6152a, 0xe6cdf6f4, 0x3c9e4b3e, 0x4ab84c27, .word 0x3ff6247e, 0xb03a5585, 0xbc9383c1, 0x7e40b497, .word 0x3ff633dd, 0x1d1929fd, 0x3c984710, 0xbeb964e5, .word 0x3ff64346, 0x34ccc320, 0xbc8c483c, 0x759d8933, .word 0x3ff652b9, 0xfebc8fb7, 0xbc9ae3d5, 0xc9a73e09, .word 0x3ff66238, 0x82552225, 0xbc9bb609, 0x87591c34, .word 0x3ff671c1, 0xc70833f6, 0xbc8e8732, 0x586c6134, .word 0x3ff68155, 0xd44ca973, 0x3c6038ae, 0x44f73e65, .word 0x3ff690f4, 0xb19e9538, 0x3c8804bd, 0x9aeb445d, .word 0x3ff6a09e, 0x667f3bcd, 0xbc9bdd34, 0x13b26456, .word 0x3ff6b052, 0xfa75173e, 0x3c7a38f5, 0x2c9a9d0e, .word 0x3ff6c012, 0x750bdabf, 0xbc728956, 0x67ff0b0d, .word 0x3ff6cfdc, 0xddd47645, 0x3c9c7aa9, 0xb6f17309, .word 0x3ff6dfb2, 0x3c651a2f, 0xbc6bbe3a, 0x683c88ab, .word 0x3ff6ef92, 0x98593ae5, 0xbc90b974, 0x9e1ac8b2, .word 0x3ff6ff7d, 0xf9519484, 0xbc883c0f, 0x25860ef6, .word 0x3ff70f74, 0x66f42e87, 0x3c59d644, 0xd45aa65f, .word 0x3ff71f75, 0xe8ec5f74, 0xbc816e47, 0x86887a99, .word 0x3ff72f82, 0x86ead08a, 0xbc920aa0, 0x2cd62c72, .word 0x3ff73f9a, 0x48a58174, 0xbc90a8d9, 0x6c65d53c, .word 0x3ff74fbd, 0x35d7cbfd, 0x3c9047fd, 0x618a6e1c, .word 0x3ff75feb, 0x564267c9, 0xbc902459, 0x57316dd3, .word 0x3ff77024, 0xb1ab6e09, 0x3c9b7877, 0x169147f8, .word 0x3ff78069, 0x4fde5d3f, 0x3c9866b8, 0x0a02162d, .word 0x3ff790b9, 0x38ac1cf6, 0x3c9349a8, 0x62aadd3e, .word 0x3ff7a114, 0x73eb0187, 0xbc841577, 0xee04992f, .word 0x3ff7b17b, 0x0976cfdb, 0xbc9bebb5, 0x8468dc88, .word 0x3ff7c1ed, 0x0130c132, 0x3c9f124c, 0xd1164dd6, .word 0x3ff7d26a, 0x62ff86f0, 0x3c91bddb, 0xfb72b8b4, .word 0x3ff7e2f3, 0x36cf4e62, 0x3c705d02, 0xba15797e, .word 0x3ff7f387, 0x8491c491, 0xbc807f11, 0xcf9311ae, .word 0x3ff80427, 0x543e1a12, 0xbc927c86, 0x626d972b, .word 0x3ff814d2, 0xadd106d9, 0x3c946437, 0x0d151d4d, .word 0x3ff82589, 0x994cce13, 0xbc9d4c1d, 0xd41532d8, .word 0x3ff8364c, 0x1eb941f7, 0x3c999b9a, 0x31df2bd5, .word 0x3ff8471a, 0x4623c7ad, 0xbc88d684, 0xa341cdfb, .word 0x3ff857f4, 0x179f5b21, 0xbc5ba748, 0xf8b216d0, .word 0x3ff868d9, 0x9b4492ed, 0xbc9fc6f8, 0x9bd4f6ba, .word 0x3ff879ca, 0xd931a436, 0x3c85d2d7, 0xd2db47bd, .word 0x3ff88ac7, 0xd98a6699, 0x3c9994c2, 0xf37cb53a, .word 0x3ff89bd0, 0xa478580f, 0x3c9d5395, 0x4475202a, .word 0x3ff8ace5, 0x422aa0db, 0x3c96e9f1, 0x56864b27, .word 0x3ff8be05, 0xbad61778, 0x3c9ecb5e, 0xfc43446e, .word 0x3ff8cf32, 0x16b5448c, 0xbc70d55e, 0x32e9e3aa, .word 0x3ff8e06a, 0x5e0866d9, 0xbc97114a, 0x6fc9b2e6, .word 0x3ff8f1ae, 0x99157736, 0x3c85cc13, 0xa2e3976c, .word 0x3ff902fe, 0xd0282c8a, 0x3c9592ca, 0x85fe3fd2, .word 0x3ff9145b, 0x0b91ffc6, 0xbc9dd679, 0x2e582524, .word 0x3ff925c3, 0x53aa2fe2, 0xbc83455f, 0xa639db7f, .word 0x3ff93737, 0xb0cdc5e5, 0xbc675fc7, 0x81b57ebc, .word 0x3ff948b8, 0x2b5f98e5, 0xbc8dc3d6, 0x797d2d99, .word 0x3ff95a44, 0xcbc8520f, 0xbc764b7c, 0x96a5f039, .word 0x3ff96bdd, 0x9a7670b3, 0xbc5ba596, 0x7f19c896, .word 0x3ff97d82, 0x9fde4e50, 0xbc9d185b, 0x7c1b85d1, .word 0x3ff98f33, 0xe47a22a2, 0x3c7cabda, 0xa24c78ec, .word 0x3ff9a0f1, 0x70ca07ba, 0xbc9173bd, 0x91cee632, .word 0x3ff9b2bb, 0x4d53fe0d, 0xbc9dd84e, 0x4df6d518, .word 0x3ff9c491, 0x82a3f090, 0x3c7c7c46, 0xb071f2be, .word 0x3ff9d674, 0x194bb8d5, 0xbc9516be, 0xa3dd8233, .word 0x3ff9e863, 0x19e32323, 0x3c7824ca, 0x78e64c6e, .word 0x3ff9fa5e, 0x8d07f29e, 0xbc84a9ce, 0xaaf1face, .word 0x3ffa0c66, 0x7b5de565, 0xbc935949, 0x5d1cd533, .word 0x3ffa1e7a, 0xed8eb8bb, 0x3c9c6618, 0xee8be70e, .word 0x3ffa309b, 0xec4a2d33, 0x3c96305c, 0x7ddc36ab, .word 0x3ffa42c9, 0x80460ad8, 0xbc9aa780, 0x589fb120, .word 0x3ffa5503, 0xb23e255d, 0xbc9d2f6e, 0xdb8d41e1, .word 0x3ffa674a, 0x8af46052, 0x3c650f56, 0x30670366, .word 0x3ffa799e, 0x1330b358, 0x3c9bcb7e, 0xcac563c7, .word 0x3ffa8bfe, 0x53c12e59, 0xbc94f867, 0xb2ba15a9, .word 0x3ffa9e6b, 0x5579fdbf, 0x3c90fac9, 0x0ef7fd31, .word 0x3ffab0e5, 0x21356eba, 0x3c889c31, 0xdae94545, .word 0x3ffac36b, 0xbfd3f37a, 0xbc8f9234, 0xcae76cd0, .word 0x3ffad5ff, 0x3a3c2774, 0x3c97ef3b, 0xb6b1b8e5, .word 0x3ffae89f, 0x995ad3ad, 0x3c97a1cd, 0x345dcc81, .word 0x3ffafb4c, 0xe622f2ff, 0xbc94b2fc, 0x0f315ecd, .word 0x3ffb0e07, 0x298db666, 0xbc9bdef5, 0x4c80e425, .word 0x3ffb20ce, 0x6c9a8952, 0x3c94dd02, 0x4a0756cc, .word 0x3ffb33a2, 0xb84f15fb, 0xbc62805e, 0x3084d708, .word 0x3ffb4684, 0x15b749b1, 0xbc7f763d, 0xe9df7c90, .word 0x3ffb5972, 0x8de5593a, 0xbc9c71df, 0xbbba6de3, .word 0x3ffb6c6e, 0x29f1c52a, 0x3c92a8f3, 0x52883f6e, .word 0x3ffb7f76, 0xf2fb5e47, 0xbc75584f, 0x7e54ac3b, .word 0x3ffb928c, 0xf22749e4, 0xbc9b7216, 0x54cb65c6, .word 0x3ffba5b0, 0x30a1064a, 0xbc9efcd3, 0x0e54292e, .word 0x3ffbb8e0, 0xb79a6f1f, 0xbc3f52d1, 0xc9696205, .word 0x3ffbcc1e, 0x904bc1d2, 0x3c823dd0, 0x7a2d9e84, .word 0x3ffbdf69, 0xc3f3a207, 0xbc3c2623, 0x60ea5b52, .word 0x3ffbf2c2, 0x5bd71e09, 0xbc9efdca, 0x3f6b9c73, .word 0x3ffc0628, 0x6141b33d, 0xbc8d8a5a, 0xa1fbca34, .word 0x3ffc199b, 0xdd85529c, 0x3c811065, 0x895048dd, .word 0x3ffc2d1c, 0xd9fa652c, 0xbc96e516, 0x17c8a5d7, .word 0x3ffc40ab, 0x5fffd07a, 0x3c9b4537, 0xe083c60a, .word 0x3ffc5447, 0x78fafb22, 0x3c912f07, 0x2493b5af, .word 0x3ffc67f1, 0x2e57d14b, 0x3c92884d, 0xff483cad, .word 0x3ffc7ba8, 0x8988c933, 0xbc8e76bb, 0xbe255559, .word 0x3ffc8f6d, 0x9406e7b5, 0x3c71acbc, 0x48805c44, .word 0x3ffca340, 0x5751c4db, 0xbc87f2be, 0xd10d08f5, .word 0x3ffcb720, 0xdcef9069, 0x3c7503cb, 0xd1e949db, .word 0x3ffccb0f, 0x2e6d1675, 0xbc7d220f, 0x86009092, .word 0x3ffcdf0b, 0x555dc3fa, 0xbc8dd83b, 0x53829d72, .word 0x3ffcf315, 0x5b5bab74, 0xbc9a08e9, 0xb86dff57, .word 0x3ffd072d, 0x4a07897c, 0xbc9cbc37, 0x43797a9c, .word 0x3ffd1b53, 0x2b08c968, 0x3c955636, 0x219a36ee, .word 0x3ffd2f87, 0x080d89f2, 0xbc9d487b, 0x719d8578, .word 0x3ffd43c8, 0xeacaa1d6, 0x3c93db53, 0xbf5a1614, .word 0x3ffd5818, 0xdcfba487, 0x3c82ed02, 0xd75b3707, .word 0x3ffd6c76, 0xe862e6d3, 0x3c5fe87a, 0x4a8165a0, .word 0x3ffd80e3, 0x16c98398, 0xbc911ec1, 0x8beddfe8, .word 0x3ffd955d, 0x71ff6075, 0x3c9a052d, 0xbb9af6be, .word 0x3ffda9e6, 0x03db3285, 0x3c9c2300, 0x696db532, .word 0x3ffdbe7c, 0xd63a8315, 0xbc9b76f1, 0x926b8be4, .word 0x3ffdd321, 0xf301b460, 0x3c92da57, 0x78f018c3, .word 0x3ffde7d5, 0x641c0658, 0xbc9ca552, 0x8e79ba8f, .word 0x3ffdfc97, 0x337b9b5f, 0xbc91a5cd, 0x4f184b5c, .word 0x3ffe1167, 0x6b197d17, 0xbc72b529, 0xbd5c7f44, .word 0x3ffe2646, 0x14f5a129, 0xbc97b627, 0x817a1496, .word 0x3ffe3b33, 0x3b16ee12, 0xbc99f4a4, 0x31fdc68b, .word 0x3ffe502e, 0xe78b3ff6, 0x3c839e89, 0x80a9cc8f, .word 0x3ffe6539, 0x24676d76, 0xbc863ff8, 0x7522b735, .word 0x3ffe7a51, 0xfbc74c83, 0x3c92d522, 0xca0c8de2, .word 0x3ffe8f79, 0x77cdb740, 0xbc910894, 0x80b054b1, .word 0x3ffea4af, 0xa2a490da, 0xbc9e9c23, 0x179c2893, .word 0x3ffeb9f4, 0x867cca6e, 0x3c94832f, 0x2293e4f2, .word 0x3ffecf48, 0x2d8e67f1, 0xbc9c93f3, 0xb411ad8c, .word 0x3ffee4aa, 0xa2188510, 0x3c91c68d, 0xa487568d, .word 0x3ffefa1b, 0xee615a27, 0x3c9dc7f4, 0x86a4b6b0, .word 0x3fff0f9c, 0x1cb6412a, 0xbc932200, 0x65181d45, .word 0x3fff252b, 0x376bba97, 0x3c93a1a5, 0xbf0d8e43, .word 0x3fff3ac9, 0x48dd7274, 0xbc795a5a, 0x3ed837de, .word 0x3fff5076, 0x5b6e4540, 0x3c99d3e1, 0x2dd8a18b, .word 0x3fff6632, 0x798844f8, 0x3c9fa37b, 0x3539343e, .word 0x3fff7bfd, 0xad9cbe14, 0xbc9dbb12, 0xd006350a, .word 0x3fff91d8, 0x02243c89, 0xbc612ea8, 0xa779f689, .word 0x3fffa7c1, 0x819e90d8, 0x3c874853, 0xf3a5931e, .word 0x3fffbdba, 0x3692d514, 0xbc796773, 0x15098eb6, .word 0x3fffd3c2, 0x2b8f71f1, 0x3c62eb74, 0x966579e7, .word 0x3fffe9d9, 0x6b2a23d9, 0x3c74a603, 0x7442fde3, ! .word 0x3c900000, 0x00000000, ! 2**(-54) = 5.551115123125782702e-17 .word 0x3ff00000, 0x00000000, ! DONE = 1.0 .word 0x43300000, 0x00000000, ! DVAIN52 = 2**52 = 4.503599627370496e15 .word 0xffffffff, 0x00000000, ! MHI32 = 0xffffffff00000000 .word 0x4062776d, 0x8ce329bd, ! KA5 = (5.77078604860893737986e-01*256) .word 0x406ec709, 0xdc39fc99, ! KA3 = (9.61796693925765549423e-01*256) .word 0x40871547, 0x652b82fe, ! KA1 = (2.885390081777926774e+00*256) .word 0x41100000, 0x00000000, ! HTHRESH = 262144.0 .word 0xc110cc00, 0x00000000, ! LTHRESH = -275200.0 .word 0x3d83b2ab, 0xc07c93d0, ! KB4 = 2.23939573811855104311e-12 .word 0x000fffff, 0xffffffff, ! MMANT .word 0x00000800, 0x00000000, ! MROUND .word 0xfffff000, 0x00000000, ! MHI20 ! local storage indices #define tmp0_lo STACK_BIAS-4 #define tmp0_hi STACK_BIAS-8 #define tmp1_lo STACK_BIAS-12 #define tmp1_hi STACK_BIAS-16 #define tmp2_lo STACK_BIAS-20 #define tmp2_hi STACK_BIAS-24 #define tmp3 STACK_BIAS-28 #define tmp4 STACK_BIAS-32 #define ind_buf STACK_BIAS-48 #define tmp_counter STACK_BIAS-56 #define tmp_px STACK_BIAS-64 #define tmp_py STACK_BIAS-72 #define tmp_mant STACK_BIAS-80 #define tmp5 STACK_BIAS-88 #define tmp6 STACK_BIAS-96 ! sizeof temp storage - must be a multiple of 16 for V9 #define tmps 96 #define LOGTBL %g5 #define EXPTBL %g1 #define EXPTBL_P8 %l4 #define MASK_0x7fffffff %o4 #define MASK_0x000fffff %o3 #define MASK_0x3ff00000 %o1 #define counter %i0 #define px %i1 #define stridex %l5 #define py %i3 #define stridey %l6 #define pz %i5 #define stridez %l7 #define HTHRESH %f0 #define LTHRESH %f2 #define MHI32 %f38 #define KA1_LO %f40 #define KA1_HI %f40 #define KB1 %f42 #define KB2 %f42 #define KB3 %f42 #define KB4 %f44 #define KB5 %f42 #define KA1 %f46 #define KA3 %f28 #define KA5 %f50 #define DZERO %f24 #define DZERO_HI %f24 #define DZERO_LO %f25 #define DONE %f18 #define DONE_HI %f18 #define DONE_LO %f19 #define XKB1 %f42 #define XKB2 %f40 #define XKB3 %f32 #define XKB4 %f36 #define XKB5 %f34 #define s_h %f46 #define yr %f30 #define ind_TINY 64 #define ind_HUGE 56 #define ind_LO 48 #define ind_HI 40 #define ind_KB5 32 #define ind_KB3 24 #define ind_KB2 16 #define ind_KB1 8 !-------------------------------------------------------------------- ! !!!!! vpow algorithm !!!!! ! ! hx = ((unsigned*)px)[0]; ! lx = ((unsigned*)px)[1]; ! hy = ((unsigned*)py)[0]; ! ly = ((unsigned*)py)[1]; ! sx = hx >> 31; ! sy = hy >> 31; ! hx &= 0x7fffffff; ! hy &= 0x7fffffff; ! y0 = *px; ! ! if (hy < 0x3bf00000) { /* |Y| < 2^(-64) */ ! if ((hy | ly) == 0) { /* pow(X,0) */ ! *pz = DONE; ! goto next; ! } ! if (hx > 0x7ff00000 || (hx == 0x7ff00000 && lx != 0)) { /* |X| = Nan */ ! *pz = y0 * y0; ! goto next; ! } ! else if ((hx | lx) == 0 || (hx == 0x7ff00000 && lx == 0)) { /* X = 0 or Inf */ ! ((int*)pz)[0] = hx; ! ((int*)pz)[1] = lx; ! if (sy) *pz = DONE / *pz; ! goto next; ! } ! else *pz = (sx) ? DZERO / DZERO : DONE; ! goto next; ! } ! yisint = 0; /* Y - non-integer */ ! expy = hy >> 20; /* Y exponent */ ! ! if (hx >= 0x7ff00000 || expy >= 0x43e) { /* X=Inf,Nan or |Y|>2^63,Inf,Nan */ ! if (hx > 0x7ff00000 || (hx == 0x7ff00000 && lx != 0) || ! hy > 0x7ff00000 || (hy == 0x7ff00000 && ly != 0)) ! *pz = y0 * *py; /* |X| or |Y| = Nan */ ! goto next; ! if (hy == 0x7ff00000 && (ly == 0)) { /* |Y| = Inf */ ! if (hx == 0x3ff00000 && (lx == 0)) ! *pz = *py - *py; /* +-1 ** +-Inf */ ! else if ((hx < 0x3ff00000) != sy) ! *pz = DZERO; ! else { ! ((int*)pz)[0] = hy; ! ((int*)pz)[1] = ly; ! } ! goto next; ! } ! if (expy < 0x43e) { /* |Y| < 2^63 */ ! if (sx) { /* X = -Inf */ ! if (expy >= 0x434) /* |Y| >= 2^53 */ ! yisint##I = 2; /* Y - even */ ! else { ! if (expy >= 0x3ff) { /* |Y| >= 1 */ ! if (expy > (20 + 0x3ff)) { ! i0 = ly >> (52 - (expy - 0x3ff)); ! if ((i0 << (52 - (expy - 0x3ff))) == ly) yisint = 2 - (i0 & 1); ! } ! else if (ly == 0) { ! i0 = hy >> (20 - (expy - 0x3ff)); ! if ((i0 << (20 - (expy - 0x3ff))) == hy) yisint = 2 - (i0 & 1); ! } ! } ! } ! } ! if (sy) hx = lx = 0; ! hx += yisint << 31; ! ((int*)pz)[0] = hx; ! ((int*)pz)[1] = lx; ! goto next; ! } ! else { /* |Y| >= 2^63 */ ! if (lx == 0 && /* |X| = 0, 1, Inf */ ! (hx == 0 || hx == 0x3ff00000 || hx == 0x7ff00000)) { ! ((int*)pz)[0] = hx; ! ((int*)pz)[1] = lx; ! if (sy) *pz = DONE / *pz; ! } ! else { ! y0 = ((hx < 0x3ff00000) != sy) ? _TINY : _HUGE; ! *pz = y0 * y0; ! } ! goto next; ! } ! } ! if (sx || (hx | lx) == 0) { /* X <= 0 */ ! if (expy >= 0x434) /* |Y| >= 2^53 */ ! yisint = 2; /* Y - even */ ! else { ! if (expy >= 0x3ff) { /* |Y| >= 1 */ ! if (expy > (20 + 0x3ff)) { ! i0 = ly >> (52 - (expy - 0x3ff)); ! if ((i0 << (52 - (expy - 0x3ff))) == ly) yisint = 2 - (i0 & 1); ! } ! else if (ly == 0) { ! i0 = hy >> (20 - (expy - 0x3ff)); ! if ((i0 << (20 - (expy - 0x3ff))) == hy) yisint = 2 - (i0 & 1); ! } ! } ! } ! if ((hx | lx) == 0) { /* X == 0 */ ! y0 = DZERO; ! if (sy) y0 = DONE / y0; ! if (sx & yisint) y0 = -y0; ! *pz = y0; ! goto next; ! } ! if (yisint == 0) { /* pow(neg,non-integer) */ ! *pz = DZERO / DZERO; /* NaN */ ! goto next; ! } ! } ! ! *((int*)&x + 1) = ((unsigned*)px)[1]; ! *((int*)&ax + 1) = 0; ! exp = hx; ! hx &= 0xfffff; ! hx |= 0x3ff00000; ! *(int*)&x = hx; ! hx += 0x800; ! hx &= 0xfffff000; ! *(int*)&ax = hx; ! if (exp <= 0xfffff) { ! y0 = vis_fand(x, MMANT); ! ax = (double) ((long long *) & y0)[0]; ! x = vis_fand(ax, MMANT); ! x = vis_for(x, DONE); ! exp = ((unsigned int*) & ax)[0]; ! exp -= (1023 + 51) << 20; ! hx = exp & 0xfffff; ! hx |= 0x3ff00000; ! hx += 0x800; ! *(int*)&ax = hx; ! } ! exp = (exp >> 20); ! exp = exp - 2046; ! ux = x + ax; ! yd = DONE / ux; ! u = x - ax; ! s = u * yd; ! ux = vis_fand(ux, MHI32); ! y = s * s; ! s_h = vis_fand(s, MHI32); ! dtmp8 = KA5 * y; ! dtmp8 = dtmp8 + KA3; ! dtmp8 = dtmp8 * y; ! s = dtmp8 * s; ! dtmp0 = (ux - ax); ! s_l = (x - dtmp0); ! dtmp0 = s_h * ux; ! dtmp1 = s_h * s_l; ! s_l = u - dtmp0; ! s_l -= dtmp1; ! dtmp0 = KA1 * yd; ! s_l = dtmp0 * s_l; ! i = (hx >> 8); ! i = i & 0xff0; ! itmp0 = (hx >> 20); ! exp += itmp0; ! yd = KA1_HI * s_h; ! y = *(double *)((char*)__mt_constlog2 + i); ! itmp0 = exp << 8; ! y += (double)itmp0; ! m_h = y + yd; ! dtmp2 = m_h - y; ! dtmp2 -= yd; ! dtmp2 -= s_l; ! y = s - dtmp2; ! dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8); ! dtmp1 = KA1_LO * s_h; ! dtmp0 += dtmp1; ! y += dtmp0; ! dtmp0 = y + m_h; ! s_h = vis_fand(dtmp0, MHI32); ! dtmp0 = (s_h - m_h); ! y = y - dtmp0; ! yd = *py; ! s = vis_fand(yd, MHI32); ! dtmp0 = (yd - s); ! dtmp1 = yd * y; ! dtmp0 *= s_h; ! yd = dtmp0 + dtmp1; ! s = s_h * s; ! if (s > HTHRESH) {s = HTHRESH; yd = DZERO;} ! if (s < LTHRESH) {s = LTHRESH; yd = DZERO;} ! dtmp0 = (s + yd); ! ind = (int)dtmp0; ! i = ind & 0xff; ! i = i << 4; ! u = (double)(int)dtmp0; ! ind >>= 8; ! y = s - u; ! y = y + yd; ! u = *(double*)((char*)__mt_constexp2 + i); ! dtmp0 = KB5 * y; ! dtmp1 = dtmp0 + KB4; ! dtmp2 = dtmp1 * y; ! dtmp3 = dtmp2 + KB3; ! dtmp4 = dtmp3 * y; ! dtmp5 = dtmp4 + KB2; ! dtmp6 = dtmp5 * y; ! dtmp7 = dtmp6 + KB1; ! y = dtmp7 * y; ! eflag = (ind + 1021); ! eflag = eflag >> 31; ! gflag = (1022 - ind); ! gflag = gflag >> 31; ! dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8); ! dtmp1 = u * y; ! dtmp2 = dtmp0 + dtmp1; ! u = dtmp2 + u; ! ind = yisint + ind; ! itmp0 = 54 & eflag; ! itmp1 = 52 & gflag; ! ind = ind + itmp0; ! ind = ind - itmp1; ! ind <<= 20; ! *(int*)&dtmp0 = ind; ! *((int*)&dtmp0 + 1) = 0; ! u = vis_fpadd32(u, dtmp0); ! ind = eflag - gflag; ! ind += 1; ! ind *= 8; ! dtmp1 = (*(double*)((char*)lconst + ind); ! dtmp1 = u * dtmp1; ! *pz = dtmp1; !-------------------------------------------------------------------- ! !!!!! vpowx algorithm !!!!! (x > 0 and x != Inf, NaN) ! ! /* perform s_h + yr = 256*log2(x) */ ! ! exp = ((unsigned*)px)[0]; ! y0 = px[0]; ! if (exp <= 0xfffff) { ! y0 = (double) ((long long *) & y0)[0]; ! exp = ((unsigned int*) & y0)[0]; ! exp -= (1023 + 51) << 20; ! } ! x = vis_fand(y0, MMANT); ! x = vis_for(x, DONE); ! ax = vis_fpadd32(x, MROUND); ! ax = vis_fand(ax, MHI20); ! hx = *(int*)&ax; ! exp = (exp >> 20); ! exp = exp - 2046; ! ux = x + ax; ! yd = DONE / ux; ! u = x - ax; ! s = u * yd; ! ux = vis_fand(ux, MHI32); ! y = s * s; ! s_h = vis_fand(s, MHI32); ! dtmp8 = KA5 * y; ! dtmp8 = dtmp8 + KA3; ! dtmp8 = dtmp8 * y; ! s = dtmp8 * s; ! dtmp0 = (ux - ax); ! s_l = (x - dtmp0); ! dtmp0 = s_h * ux; ! dtmp1 = s_h * s_l; ! s_l = u - dtmp0; ! s_l -= dtmp1; ! dtmp0 = KA1 * yd; ! s_l = dtmp0 * s_l; ! i = (hx >> 8); ! i = i & 0xff0; ! itmp0 = (hx >> 20); ! exp += itmp0; ! yd = KA1_HI * s_h; ! y = *(double *)((char*)__mt_constlog2 + i); ! itmp0 = exp << 8; ! y += (double)itmp0; ! m_h = y + yd; ! dtmp2 = m_h - y; ! dtmp2 -= yd; ! dtmp2 -= s_l; ! y = s - dtmp2; ! dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8); ! dtmp1 = KA1_LO * s_h; ! dtmp0 += dtmp1; ! y += dtmp0; ! dtmp0 = y + m_h; ! s_h = vis_fand(dtmp0, MHI32); ! dtmp0 = (s_h - m_h); ! yr = y - dtmp0; ! ! hy = ((unsigned*)py)[0]; ! ly = ((unsigned*)py)[1]; ! hx = ((unsigned*)px)[0]; ! lx = ((unsigned*)px)[1]; ! sy = hy >> 31; ! hy &= 0x7fffffff; ! ! if (hy < 0x3bf00000) {/* |Y| < 2^(-64) */ ! *pz = DONE; ! goto next; ! } ! ! if (hy >= 0x43e00000) { /* |Y|>2^63,Inf,Nan */ ! if (hy == 0x7ff00000 && (ly == 0)) { /* |Y| = Inf */ ! if (hx == 0x3ff00000 && (lx == 0)) ! *pz = *py - *py; /* 1 ** +-Inf */ ! else if ((hx < 0x3ff00000) != sy) ! *pz = DZERO; ! else { ! ((int*)pz)[0] = hy; ! ((int*)pz)[1] = ly; ! } ! goto next; ! } ! if (hy >= 0x7ff00000) { ! *pz = *px + *py; /* |Y| = Nan */ ! goto next; ! } ! /* |Y| >= 2^63 */ ! if (lx == 0 && (hx == 0x3ff00000)) { /* X = 1 */ ! *pz = DONE; ! } ! else { ! y0 = ((hx < 0x3ff00000) != sy) ? _TINY : _HUGE; ! *pz = y0 * y0; ! } ! goto next; ! } ! ! yd = *py; ! s = vis_fand(yd, MHI32); ! dtmp0 = (yd - s); ! dtmp1 = yd * yr; ! dtmp0 *= s_h; ! yd = dtmp0 + dtmp1; ! s = s_h * s; ! if (s > HTHRESH) {s = HTHRESH; yd = DZERO;} ! if (s < LTHRESH) {s = LTHRESH; yd = DZERO;} ! dtmp0 = (s + yd); ! ind = (int)dtmp0; ! i = ind & 0xff; ! i = i << 4; ! u = (double)(int)dtmp0; ! ind >>= 8; ! y = s - u; ! y = y + yd; ! u = *(double*)((char*)__mt_constexp2 + i); ! dtmp0 = XKB5 * y; ! dtmp1 = dtmp0 + XKB4; ! dtmp2 = dtmp1 * y; ! dtmp3 = dtmp2 + XKB3; ! dtmp4 = dtmp3 * y; ! dtmp5 = dtmp4 + XKB2; ! dtmp6 = dtmp5 * y; ! dtmp7 = dtmp6 + XKB1; ! y = dtmp7 * y; ! eflag = (ind + 1021); ! eflag = eflag >> 31; ! gflag = (1022 - ind); ! gflag = gflag >> 31; ! dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8); ! dtmp1 = u * y; ! dtmp2 = dtmp0 + dtmp1; ! u = dtmp2 + u; ! itmp0 = 54 & eflag; ! itmp1 = 52 & gflag; ! ind = ind + itmp0; ! ind = ind - itmp1; ! ind <<= 20; ! *(int*)&dtmp0 = ind; ! *((int*)&dtmp0 + 1) = 0; ! u = vis_fpadd32(u, dtmp0); ! ind = eflag - gflag; ! ind += 1; ! ind *= 8; ! dtmp1 = (*(double*)((char*)__mt_constexp2 + ind); ! dtmp1 = u * dtmp1; ! *pz = dtmp1; !-------------------------------------------------------------------- ENTRY(__vpow) save %sp,-SA(MINFRAME)-tmps,%sp PIC_SETUP(l7) PIC_SET(l7,.CONST_TBL,g5) wr %g0,0x82,%asi ! set %asi for non-faulting loads cmp counter,0 ble,pn %icc,.end #ifdef __sparcv9 ldx [%fp+STACK_BIAS+176],stridez #else ld [%fp+STACK_BIAS+92],stridez #endif ld [px],%o0 add LOGTBL,4095,EXPTBL st counter,[%fp+tmp_counter] add EXPTBL,65,EXPTBL sra %i2,0,stridex stx px,[%fp+tmp_px] add EXPTBL,4095,%l0 fzero DZERO stx py,[%fp+tmp_py] cmp stridex,0 bne,pt %icc,.common_case add %l0,1,%l0 cmp %o0,0 ble,pt %icc,.common_case sethi %hi(0x7f800000),%o1 cmp %o0,%o1 bl,pn %icc,.stridex_zero nop .common_case: sra stridez,0,stridez ldd [%l0+8],DONE ldd [%l0+24],MHI32 sra %i4,0,stridey ldd [%l0+32],KA5 sethi %hi(0x7ffffc00),MASK_0x7fffffff ldd [%l0+40],KA3 sethi %hi(0xffc00),MASK_0x000fffff ldd [%l0+48],KA1 sethi %hi(0x3ff00000),MASK_0x3ff00000 ldd [%l0+56],HTHRESH sllx stridex,3,stridex add MASK_0x7fffffff,0x3ff,MASK_0x7fffffff ldd [%l0+64],LTHRESH sllx stridey,3,stridey add MASK_0x000fffff,0x3ff,MASK_0x000fffff ldd [%l0+72],KB4 sllx stridez,3,stridez st %g0,[%fp+tmp1_lo] ! *((int*)&ax + 1) = 0; sub %g0,1,%o2 st %g0,[%fp+tmp2_lo] ! (Y0_0) *((int*)&dtmp0 + 1) = 0; st MASK_0x000fffff,[%fp+tmp_mant] sub pz,stridez,pz st %o2,[%fp+tmp_mant+4] .begin: ld [%fp+tmp_counter],counter ldx [%fp+tmp_px],px ldx [%fp+tmp_py],py st %g0,[%fp+tmp_counter] .begin1: subcc counter,1,counter bneg,pn %icc,.end or %g0,ind_buf,%o7 lda [py]%asi,%o2 ! (Y0_1) hy = *py; and %o2,MASK_0x7fffffff,%l1 ! (Y0_3) hy &= 0x7fffffff; lda [px]%asi,%l0 ! (Y0_3) hx = ((unsigned*)px)[0]; sra %l1,20,%o0 ! (Y0_3) expy = hy >> 20; lda [px+4]%asi,%i2 ! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1]; and MASK_0x000fffff,%l0,%o5 ! (Y0_3) hx &= 0xfffff; or MASK_0x3ff00000,%o5,%o5 ! (Y0_3) hx |= 0x3ff00000; st %o5,[%fp+tmp0_hi] ! (Y0_3) *(int*)&x = hx; add %o5,2048,%o5 ! (Y0_3) hx += 0x800; st %i2,[%fp+tmp0_lo] ! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1]; and %o5,-4096,%l4 ! (Y0_3) hx &= 0xfffff000; add pz,stridez,pz st %l4,[%fp+tmp1_hi] ! (Y0_3) *(int*)&ax = hx; and %l0,MASK_0x7fffffff,%l3 ! (Y0_3) hx &= 0x7fffffff; sra %l3,20,%l2 ! (Y0_3) exp = (exp >> 20); cmp %o0,959 ! (Y0_3) if (expy < 0x3fb); bl,pn %icc,.spec0 ! (Y0_3) if (expy < 0x3fb); st %g0,[%fp+%o7] ! (Y0_3) yisint = 0; cmp %o0,1086 ! (Y0_3) if (expy >= 0x43e); bge,pn %icc,.spec1 ! (Y0_3) if (expy >= 0x43e); nop cmp %l2,2047 ! (Y0_2) if (exp >= 0x7ff) bge,pn %icc,.spec1 ! (Y0_2) if (exp >= 0x7ff) nop cmp %l0,MASK_0x000fffff ! (Y0_2) if (hx <= 0xfffff) ldd [%fp+tmp0_hi],%f32 ! (Y0_2) *(int*)&x = hx; ble,pn %icc,.update0 ! (Y0_2) if (hx <= 0xfffff) nop .cont0: sub %o7,ind_buf,%o7 ! stack buffer pointer update sub pz,stridez,pz ldd [%fp+tmp1_hi],%f54 ! (Y0_2) *(int*)&ax = hx; add %o7,4,%o7 ! stack buffer pointer update faddd %f32,%f54,%f12 ! (Y0_2) ux = x + ax; and %o7,15,%o7 ! stack buffer pointer update add %o7,ind_buf,%o7 ! stack buffer pointer update add px,stridex,px ! px += stridex; lda [px]%asi,%l0 ! (Y1_2) hx = ((unsigned*)px)[0]; lda [px+4]%asi,%i2 ! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1]; and MASK_0x000fffff,%l0,%i4 ! (Y1_2) hx &= 0xfffff; st %g0,[%fp+%o7] ! (Y1_2) yisint = 0; or MASK_0x3ff00000,%i4,%i4 ! (Y1_2) hx |= 0x3ff00000; st %i4,[%fp+tmp0_hi] ! (Y1_2) *(int*)&x = hx; add %i4,2048,%i4 ! (Y1_2) hx += 0x800; st %i2,[%fp+tmp0_lo] ! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1]; and %i4,-4096,%i4 ! (Y1_2) hx &= 0xfffff000; st %i4,[%fp+tmp1_hi] ! (Y1_2) *(int*)&ax = hx; and %l0,MASK_0x7fffffff,%l2 ! (Y1_2) hx &= 0x7fffffff; cmp %l0,MASK_0x000fffff ! (Y1_2) if (hx <= 0xfffff) ble,pn %icc,.update1 ! (Y1_2) if (hx <= 0xfffff) nop .cont1: sub %o7,ind_buf,%o7 ! stack buffer pointer update add %o7,4,%o7 ! stack buffer pointer update fdivd DONE,%f12,%f20 ! (Y0_2) yd = DONE / ux; and %o7,15,%o7 ! stack buffer pointer update sra %l3,20,%l3 ! (Y0_2) exp = (exp >> 20); add %o7,ind_buf,%o7 ! stack buffer pointer update ldd [%fp+tmp0_hi],%f8 ! (Y1_2) *(int*)&x = hx; ldd [%fp+tmp1_hi],%f14 ! (Y1_2) *(int*)&ax = hx; sra %l4,20,%l0 ! (Y0_2) itmp0 = (hx >> 20); sub %l3,2046,%o5 ! (Y0_2) exp = exp - 2046; add %o5,%l0,%o5 ! (Y0_2) exp += itmp0; sll %o5,8,%l0 ! (Y0_2) itmp0 = exp << 8; st %l0,[%fp+tmp3] ! (Y0_2) (double)itmp0; faddd %f8,%f14,%f26 ! (Y1_2) ux = x + ax; fand %f12,MHI32,%f12 ! (Y0_2) ux = vis_fand(ux, MHI32); add px,stridex,px ! px += stridex; ldd [EXPTBL-ind_HI],KA1_HI ! (Y0_2) load KA1_HI; fsubd %f12,%f54,%f10 ! (Y0_2) dtmp0 = (ux - ax); ld [%fp+tmp3],%f16 ! (Y0_2) (double)itmp0; fsubd %f32,%f54,%f58 ! (Y0_2) u = x - ax; sra %l4,8,%l4 ! (Y0_2) i = (hx >> 8); and %l4,4080,%l4 ! (Y0_2) i = i & 0xff0; ldd [LOGTBL+%l4],%f62 ! (Y0_2) y = *(double *)((char*)__mt_constlog2 + i); fmuld %f58,%f20,%f52 ! (Y0_2) s = u * yd; fsubd %f32,%f10,%f10 ! (Y0_2) s_l = (x - dtmp0); fitod %f16,%f54 ! (Y0_2) (double)itmp0; add %l4,8,%o0 ! (Y0_2) i += 8; lda [px]%asi,%l0 ! (Y0_3) hx = ((unsigned*)px)[0]; fand %f52,MHI32,%f4 ! (Y0_2) s_h = vis_fand(s, MHI32); faddd %f62,%f54,%f54 ! (Y0_2) y += (double)itmp0; lda [px+4]%asi,%i2 ! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1]; fmuld %f4,%f12,%f32 ! (Y0_2) dtmp0 = s_h * ux; and MASK_0x000fffff,%l0,%o5 ! (Y0_3) hx &= 0xfffff; fmuld %f52,%f52,%f12 ! (Y0_2) y = s * s; or MASK_0x3ff00000,%o5,%o5 ! (Y0_3) hx |= 0x3ff00000; st %o5,[%fp+tmp0_hi] ! (Y0_3) *(int*)&x = hx; fsubd %f58,%f32,%f32 ! (Y0_2) s_l = u - dtmp0; add %o5,2048,%o5 ! (Y0_3) hx += 0x800; st %i2,[%fp+tmp0_lo] ! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1]; and %o5,-4096,%l4 ! (Y0_3) hx &= 0xfffff000; fmuld KA5,%f12,%f36 ! (Y0_2) dtmp8 = KA5 * y; st %l4,[%fp+tmp1_hi] ! (Y0_3) *(int*)&ax = hx; fmuld KA1_HI,%f4,%f48 ! (Y0_2) yd = KA1_HI * s_h; fmuld %f4,%f10,%f10 ! (Y0_2) dtmp1 = s_h * s_l; ldd [EXPTBL-ind_LO],KA1_LO ! (y0_2) load KA1_LO; and %l0,MASK_0x7fffffff,%l3 ! (Y0_3) hx &= 0x7fffffff; faddd %f36,KA3,%f62 ! (Y0_2) dtmp8 = dtmp8 + KA3; st %g0,[%fp+%o7] ! (Y0_3) yisint = 0; faddd %f54,%f48,%f36 ! (Y0_2) m_h = y + yd; fdivd DONE,%f26,%f22 ! (Y1_2) yd = DONE / ux; fsubd %f32,%f10,%f10 ! (Y0_2) s_l -= dtmp1; cmp %l0,MASK_0x000fffff ! (Y0_2) if (hx <= 0xfffff) sra %l2,20,%l2 ! (Y1_1) exp = (exp >> 20); ldd [%fp+tmp0_hi],%f32 ! (Y0_2) *(int*)&x = hx; ble,pn %icc,.update2 ! (Y0_2) if (hx <= 0xfffff) fsubd %f36,%f54,%f30 ! (Y0_1) dtmp2 = m_h - y; .cont2: cmp %l2,2047 ! (Y1_1) if (exp >= 0x7ff) sub %o7,ind_buf,%o7 ! stack buffer pointer update ldd [%fp+tmp1_hi],%f54 ! (Y0_2) *(int*)&ax = hx; sra %i4,20,%l0 ! (Y1_1) itmp0 = (hx >> 20); sub %l2,2046,%o5 ! (Y1_1) exp = exp - 2046; fmuld KA1,%f20,%f20 ! (Y0_1) dtmp0 = KA1 * yd; add %o5,%l0,%o5 ! (Y1_1) exp += itmp0; fmuld %f62,%f12,%f62 ! (Y0_1) dtmp8 = dtmp8 * y; sll %o5,8,%l0 ! (Y1_1) itmp0 = exp << 8; add %o7,4,%o7 ! stack buffer pointer update st %l0,[%fp+tmp3] ! (Y1_1) (double)itmp0; faddd %f32,%f54,%f12 ! (Y0_2) ux = x + ax; bge,pn %icc,.update3 ! (Y1_1) if (exp >= 0x7ff) fsubd %f30,%f48,%f48 ! (Y0_1) dtmp2 -= yd; .cont3: and %o7,15,%o7 ! stack buffer pointer update fmuld %f20,%f10,%f10 ! (Y0_1) s_l = dtmp0 * s_l; add %o7,ind_buf,%o7 ! stack buffer pointer update fmuld KA1_LO,%f4,%f4 ! (Y0_1) dtmp1 = KA1_LO * s_h; fand %f26,MHI32,%f26 ! (Y1_1) ux = vis_fand(ux, MHI32); fmuld %f62,%f52,%f62 ! (Y0_1) s = dtmp8 * s; ldd [LOGTBL+%o0],%f52 ! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8); fsubd %f48,%f10,%f20 ! (Y0_1) dtmp2 -= s_l; add px,stridex,px ! px += stridex; fsubd %f26,%f14,%f10 ! (Y1_1) dtmp0 = (ux - ax); faddd %f52,%f4,%f52 ! (Y0_1) dtmp0 += dtmp1; ldd [EXPTBL-ind_HI],KA1_HI ! (Y1_1) load KA1_HI; fsubd %f62,%f20,%f4 ! (Y0_1) y = s - dtmp2; ld [%fp+tmp3],%f16 ! (Y1_1) (double)itmp0; fsubd %f8,%f14,%f58 ! (Y1_1) u = x - ax; sra %i4,8,%o0 ! (Y1_1) i = (hx >> 8); faddd %f4,%f52,%f48 ! (Y0_1) y += dtmp0; and %o0,4080,%o0 ! (Y1_1) i = i & 0xff0; ldd [LOGTBL+%o0],%f62 ! (Y1_1) y = *(double *)((char*)__mt_constlog2 + i); fmuld %f58,%f22,%f52 ! (Y1_1) s = u * yd; fsubd %f8,%f10,%f10 ! (Y1_1) s_l = (x - dtmp0); lda [py]%asi,%f30 ! (Y0_1) yd = *py; fitod %f16,%f14 ! (Y1_1) (double)itmp0; lda [py+4]%asi,%f31 ! (Y0_1) yd = *py; faddd %f48,%f36,%f8 ! (Y0_1) dtmp0 = y + m_h; add %o0,8,%o0 ! (Y1_1) i += 8; lda [px]%asi,%l0 ! (Y1_2) hx = ((unsigned*)px)[0]; fand %f52,MHI32,%f4 ! (Y1_1) s_h = vis_fand(s, MHI32); faddd %f62,%f14,%f14 ! (Y1_1) y += (double)itmp0; lda [px+4]%asi,%i2 ! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1]; fand %f8,MHI32,%f20 ! (Y0_1) s_h = vis_fand(dtmp0, MHI32); fmuld %f4,%f26,%f8 ! (Y1_1) dtmp0 = s_h * ux; fand %f30,MHI32,%f6 ! (Y0_1) s = vis_fand(yd, MHI32); and MASK_0x000fffff,%l0,%i4 ! (Y1_2) hx &= 0xfffff; fmuld %f52,%f52,%f26 ! (Y1_1) y = s * s; st %g0,[%fp+%o7] ! (Y1_2) yisint = 0; or MASK_0x3ff00000,%i4,%i4 ! (Y1_2) hx |= 0x3ff00000; fsubd %f20,%f36,%f62 ! (Y0_1) dtmp0 = (s_h - m_h); st %i4,[%fp+tmp0_hi] ! (Y1_2) *(int*)&x = hx; fsubd %f58,%f8,%f8 ! (Y1_1) s_l = u - dtmp0; add %i4,2048,%i4 ! (Y1_2) hx += 0x800; fmuld %f20,%f6,%f34 ! (Y0_1) s = s_h * s; fsubd %f30,%f6,%f6 ! (Y0_1) dtmp0 = (yd - s); st %i2,[%fp+tmp0_lo] ! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1]; and %i4,-4096,%i4 ! (Y1_2) hx &= 0xfffff000; fmuld KA5,%f26,%f36 ! (Y1_1) dtmp8 = KA5 * y; st %i4,[%fp+tmp1_hi] ! (Y1_2) *(int*)&ax = hx; fsubd %f48,%f62,%f62 ! (Y0_1) y = y - dtmp0; fmuld KA1_HI,%f4,%f48 ! (Y1_1) yd = KA1_HI * s_h; fmuld %f4,%f10,%f10 ! (Y1_1) dtmp1 = s_h * s_l; ldd [EXPTBL-ind_LO],KA1_LO ! (Y1_1) load KA1_LO; and %l0,MASK_0x7fffffff,%l2 ! (Y1_2) hx &= 0x7fffffff; fmuld %f6,%f20,%f6 ! (Y0_1) dtmp0 *= s_h; fcmped %fcc0,%f34,HTHRESH ! (Y0_1) s > HTHRESH cmp %l0,MASK_0x000fffff ! (Y1_2) if (hx <= 0xfffff) fmuld %f30,%f62,%f30 ! (Y0_1) dtmp1 = yd * y; faddd %f36,KA3,%f62 ! (Y1_1) dtmp8 = dtmp8 + KA3; ble,pn %icc,.update4 ! (Y1_2) if (hx <= 0xfffff) faddd %f14,%f48,%f36 ! (Y1_1) m_h = y + yd; .cont4: sub %o7,ind_buf,%o7 ! stack buffer pointer update fmovdg %fcc0,HTHRESH,%f34 ! (Y0_1) s = HTHRESH add %o7,4,%o7 ! stack buffer pointer update fdivd DONE,%f12,%f20 ! (Y0_2) yd = DONE / ux; fsubd %f8,%f10,%f10 ! (Y1_1) s_l -= dtmp1; and %o7,15,%o7 ! stack buffer pointer update faddd %f6,%f30,%f6 ! (Y0_1) yd = dtmp0 + dtmp1; sra %l3,20,%l3 ! (Y0_2) exp = (exp >> 20); add %o7,ind_buf,%o7 ! stack buffer pointer update ldd [%fp+tmp0_hi],%f8 ! (Y1_2) *(int*)&x = hx; fsubd %f36,%f14,%f30 ! (Y1_1) dtmp2 = m_h - y; cmp %l3,2047 ! (Y0_2) if (exp >= 0x7ff) ldd [%fp+tmp1_hi],%f14 ! (Y1_2) *(int*)&ax = hx; fmuld KA1,%f22,%f22 ! (Y1_1) dtmp0 = KA1 * yd; sra %l4,20,%l0 ! (Y0_2) itmp0 = (hx >> 20); sub %l3,2046,%o5 ! (Y0_2) exp = exp - 2046; fcmped %fcc1,%f34,LTHRESH ! (Y0_1) s < LTHRESH add %o5,%l0,%o5 ! (Y0_2) exp += itmp0; add py,stridey,py ! py += stridey; fmuld %f62,%f26,%f62 ! (Y1_1) dtmp8 = dtmp8 * y; fmovdg %fcc0,DZERO,%f6 ! (Y0_1) yd = DZERO sll %o5,8,%l0 ! (Y0_2) itmp0 = exp << 8; st %l0,[%fp+tmp3] ! (Y0_2) (double)itmp0; faddd %f8,%f14,%f26 ! (Y1_2) ux = x + ax; bge,pn %icc,.update5 ! (Y0_2) if (exp >= 0x7ff) fsubd %f30,%f48,%f48 ! (Y1_1) dtmp2 -= yd; .cont5: lda [py]%asi,%l1 ! (Y1_1) hy = *py; fmuld %f22,%f10,%f10 ! (Y1_1) s_l = dtmp0 * s_l; fmovdl %fcc1,LTHRESH,%f34 ! (Y0_1) s = LTHRESH fmovdl %fcc1,DZERO,%f6 ! (Y0_1) yd = DZERO fand %f12,MHI32,%f12 ! (Y0_2) ux = vis_fand(ux, MHI32); fmuld KA1_LO,%f4,%f4 ! (Y1_1) dtmp1 = KA1_LO * s_h; fmuld %f62,%f52,%f62 ! (Y1_1) s = dtmp8 * s; ldd [LOGTBL+%o0],%f52 ! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8); fsubd %f48,%f10,%f22 ! (Y1_1) dtmp2 -= s_l; add px,stridex,px ! px += stridex; faddd %f34,%f6,%f58 ! (Y0_1) dtmp0 = (s + yd); and %l1,MASK_0x7fffffff,%l1 ! (Y1_1) hy &= 0x7fffffff; ldd [EXPTBL-ind_HI],KA1_HI ! (Y0_2) load KA1_HI; fsubd %f12,%f54,%f10 ! (Y0_2) dtmp0 = (ux - ax); faddd %f52,%f4,%f52 ! (Y1_1) dtmp0 += dtmp1; fsubd %f62,%f22,%f4 ! (Y1_1) y = s - dtmp2; fdtoi %f58,%f17 ! (Y0_1) (int)dtmp0; ld [%fp+tmp3],%f16 ! (Y0_2) (double)itmp0; fsubd %f32,%f54,%f58 ! (Y0_2) u = x - ax; sra %l4,8,%l4 ! (Y0_2) i = (hx >> 8); sra %l1,20,%l1 ! (Y1_1) expy = hy >> 20; ldd [EXPTBL-ind_KB5],KB5 ! (Y0_1) load KB5; faddd %f4,%f52,%f48 ! (Y1_1) y += dtmp0; and %l4,4080,%l4 ! (Y0_2) i = i & 0xff0; st %f17,[%fp+tmp4] ! (Y0_1) ind = (int)dtmp0; fitod %f17,%f4 ! (Y0_1) u = (double)(int)dtmp0; ldd [LOGTBL+%l4],%f62 ! (Y0_2) y = *(double *)((char*)__mt_constlog2 + i); fmuld %f58,%f20,%f52 ! (Y0_2) s = u * yd; fsubd %f32,%f10,%f10 ! (Y0_2) s_l = (x - dtmp0); lda [py]%asi,%f30 ! (Y1_1) yd = *py; fitod %f16,%f54 ! (Y0_2) (double)itmp0; lda [py+4]%asi,%f31 ! (Y1_1) yd = *py; faddd %f48,%f36,%f32 ! (Y1_1) dtmp0 = y + m_h; add %l4,8,%o0 ! (Y0_2) i += 8; fsubd %f34,%f4,%f60 ! (Y0_1) y = s - u; cmp %l1,959 ! (Y1_1) if (expy < 0x3fb); lda [px]%asi,%l0 ! (Y0_3) hx = ((unsigned*)px)[0]; fand %f52,MHI32,%f4 ! (Y0_2) s_h = vis_fand(s, MHI32); bl,pn %icc,.update6 ! (Y1_1) if (expy < 0x3fb); faddd %f62,%f54,%f54 ! (Y0_2) y += (double)itmp0; .cont6: cmp %l1,1086 ! (Y1_1) if (expy >= 0x43e); lda [px+4]%asi,%i2 ! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1]; fand %f32,MHI32,%f22 ! (Y1_1) s_h = vis_fand(dtmp0, MHI32); fmuld %f4,%f12,%f32 ! (Y0_2) dtmp0 = s_h * ux; bge,pn %icc,.update7 ! (Y1_1) if (expy >= 0x43e); faddd %f60,%f6,%f60 ! (Y0_1) y = y + yd; .cont7: ld [%fp+%o7],%o2 ! (Y0_1) load yisint fand %f30,MHI32,%f6 ! (Y1_1) s = vis_fand(yd, MHI32); and MASK_0x000fffff,%l0,%o5 ! (Y0_3) hx &= 0xfffff; fmuld %f52,%f52,%f12 ! (Y0_2) y = s * s; or MASK_0x3ff00000,%o5,%o5 ! (Y0_3) hx |= 0x3ff00000; fsubd %f22,%f36,%f62 ! (Y1_1) dtmp0 = (s_h - m_h); st %o5,[%fp+tmp0_hi] ! (Y0_3) *(int*)&x = hx; fsubd %f58,%f32,%f32 ! (Y0_2) s_l = u - dtmp0; fmuld KB5,%f60,%f58 ! (Y0_1) dtmp0 = KB5 * y; ldd [EXPTBL-ind_KB3],KB3 ! (Y0_1) load KB3; add %o5,2048,%o5 ! (Y0_3) hx += 0x800; fmuld %f22,%f6,%f34 ! (Y1_1) s = s_h * s; fsubd %f30,%f6,%f6 ! (Y1_1) dtmp0 = (yd - s); st %i2,[%fp+tmp0_lo] ! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1]; and %o5,-4096,%l4 ! (Y0_3) hx &= 0xfffff000; fmuld KA5,%f12,%f36 ! (Y0_2) dtmp8 = KA5 * y; st %l4,[%fp+tmp1_hi] ! (Y0_3) *(int*)&ax = hx; fsubd %f48,%f62,%f62 ! (Y1_1) y = y - dtmp0; fmuld KA1_HI,%f4,%f48 ! (Y0_2) yd = KA1_HI * s_h; subcc counter,1,counter fmuld %f4,%f10,%f10 ! (Y0_2) dtmp1 = s_h * s_l; faddd %f58,KB4,%f58 ! (Y0_1) dtmp1 = dtmp0 + KB4; ldd [EXPTBL-ind_LO],KA1_LO ! (y0_2) load KA1_LO; and %l0,MASK_0x7fffffff,%l3 ! (Y0_3) hx &= 0x7fffffff; fmuld %f6,%f22,%f6 ! (Y1_1) dtmp0 *= s_h; fcmped %fcc0,%f34,HTHRESH ! (Y1_1) s > HTHRESH; fmuld %f30,%f62,%f30 ! (Y1_1) dtmp1 = yd * y; ba 1f faddd %f36,KA3,%f62 ! (Y0_2) dtmp8 = dtmp8 + KA3; .align 16 1: st %g0,[%fp+%o7] ! (Y0_3) yisint = 0; fmuld %f58,%f60,%f58 ! (Y0_1) dtmp2 = dtmp1 * y; bneg,pn %icc,.tail faddd %f54,%f48,%f36 ! (Y0_2) m_h = y + yd; nop fmovdg %fcc0,HTHRESH,%f34 ! (Y1_1) s = HTHRESH; fdivd DONE,%f26,%f22 ! (Y1_2) yd = DONE / ux; fsubd %f32,%f10,%f10 ! (Y0_2) s_l -= dtmp1; .main_loop: cmp %l0,MASK_0x000fffff ! (Y0_2) if (hx <= 0xfffff) add py,stridey,py ! py += stridey; faddd %f6,%f30,%f6 ! (Y1_0) yd = dtmp0 + dtmp1; sra %l2,20,%l2 ! (Y1_1) exp = (exp >> 20); ldd [%fp+tmp0_hi],%f32 ! (Y0_2) *(int*)&x = hx; ble,pn %icc,.update8 ! (Y0_2) if (hx <= 0xfffff) fsubd %f36,%f54,%f30 ! (Y0_1) dtmp2 = m_h - y; .cont8: cmp %l2,2047 ! (Y1_1) if (exp >= 0x7ff) sub %o7,ind_buf,%o7 ! stack buffer pointer update ldd [%fp+tmp1_hi],%f54 ! (Y0_2) *(int*)&ax = hx; faddd %f58,KB3,%f58 ! (Y0_0) dtmp3 = dtmp2 + KB3; sra %i4,20,%l0 ! (Y1_1) itmp0 = (hx >> 20); sub %l2,2046,%o5 ! (Y1_1) exp = exp - 2046; fmuld KA1,%f20,%f20 ! (Y0_1) dtmp0 = KA1 * yd; fcmped %fcc1,%f34,LTHRESH ! (Y1_0) s < LTHRESH; ldd [EXPTBL-ind_KB2],KB2 ! (Y0_0) load KB2; add %o5,%l0,%o5 ! (Y1_1) exp += itmp0; fmuld %f62,%f12,%f62 ! (Y0_1) dtmp8 = dtmp8 * y; fmovdg %fcc0,DZERO,%f6 ! (Y1_0) yd = DZERO sll %o5,8,%l0 ! (Y1_1) itmp0 = exp << 8; add %o7,4,%o7 ! stack buffer pointer update st %l0,[%fp+tmp3] ! (Y1_1) (double)itmp0; faddd %f32,%f54,%f12 ! (Y0_2) ux = x + ax; ld [%fp+tmp4],%i2 ! (Y0_0) ind = (int)dtmp0; fsubd %f30,%f48,%f48 ! (Y0_1) dtmp2 -= yd; bge,pn %icc,.update9 ! (Y1_1) if (exp >= 0x7ff) fmuld %f58,%f60,%f58 ! (Y0_0) dtmp4 = dtmp3 * y; .cont9: lda [py]%asi,%l1 ! (Y0_1) hy = *py; and %o7,15,%o7 ! stack buffer pointer update fmuld %f20,%f10,%f10 ! (Y0_1) s_l = dtmp0 * s_l; fmovdl %fcc1,LTHRESH,%f34 ! (Y1_0) s = LTHRESH; add %o7,ind_buf,%o7 ! stack buffer pointer update fmovdl %fcc1,DZERO,%f6 ! (Y1_0) yd = DZERO fmuld KA1_LO,%f4,%f4 ! (Y0_1) dtmp1 = KA1_LO * s_h; fand %f26,MHI32,%f26 ! (Y1_1) ux = vis_fand(ux, MHI32); fmuld %f62,%f52,%f62 ! (Y0_1) s = dtmp8 * s; nop faddd %f58,KB2,%f30 ! (Y0_0) dtmp5 = dtmp4 + KB2; nop add pz,stridez,pz ! pz += stridez; ldd [LOGTBL+%o0],%f52 ! (Y0_1) dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8); fsubd %f48,%f10,%f20 ! (Y0_1) dtmp2 -= s_l; sra %i2,8,%l0 ! (Y0_0) ind >>= 8; ldd [EXPTBL-ind_KB1],KB1 ! (Y0_0) load KB1; add px,stridex,px ! px += stridex; faddd %f34,%f6,%f58 ! (Y1_0) dtmp0 = (s + yd); add %l0,1021,%l2 ! (Y0_0) eflag = (ind + 1021); sub %g0,%l0,%o5 ! (Y0_0) gflag = (1022 - ind); fsubd %f26,%f14,%f10 ! (Y1_1) dtmp0 = (ux - ax); sra %l2,31,%l2 ! (Y0_0) eflag = eflag >> 31; add %o5,1022,%o5 ! (Y0_0) gflag = (1022 - ind); fmuld %f30,%f60,%f48 ! (Y0_0) dtmp6 = dtmp5 * y; faddd %f52,%f4,%f52 ! (Y0_1) dtmp0 += dtmp1; sra %o5,31,%o5 ! (Y0_0) gflag = gflag >> 31; and %l2,54,%o0 ! (Y0_0) itmp0 = 54 & eflag; ldd [EXPTBL-ind_HI],KA1_HI ! (Y1_1) load KA1_HI; fsubd %f62,%f20,%f4 ! (Y0_1) y = s - dtmp2; lda [py]%asi,%f30 ! (Y0_1) yd = *py; sub %l2,%o5,%l2 ! (Y0_0) ind = eflag - gflag; add %l0,%o0,%l0 ! (Y0_0) ind = ind + itmp0; fdtoi %f58,%f20 ! (Y1_0) u = (double)(int)dtmp0; sra %i4,8,%o0 ! (Y1_1) i = (hx >> 8); and %o5,52,%o5 ! (Y0_0) itmp1 = 52 & gflag; ld [%fp+tmp3],%f16 ! (Y1_1) (double)itmp0; fsubd %f8,%f14,%f58 ! (Y1_1) u = x - ax; and %o0,4080,%o0 ! (Y1_1) i = i & 0xff0; sub %l0,%o5,%i4 ! (Y0_0) ind = ind - itmp1; st %f20,[%fp+tmp4] ! (Y1_0) ind = (int)dtmp0; faddd %f48,KB1,%f14 ! (Y0_0) dtmp7 = dtmp6 + KB1; add %o2,%i4,%i4 ! (Y0_0) ind = yisint + ind; and %i2,255,%o5 ! (Y0_0) i = ind & 0xff; lda [px]%asi,%l0 ! (Y1_2) hx = ((unsigned*)px)[0]; faddd %f4,%f52,%f48 ! (Y0_1) y += dtmp0; sll %i4,20,%i4 ! (Y0_0) ind <<= 20; ldd [LOGTBL+%o0],%f62 ! (Y1_1) y = *(double *)((char*)__mt_constlog2 + i); and %l1,MASK_0x7fffffff,%l1 ! (Y0_1) hy &= 0x7fffffff; fitod %f20,%f4 ! (Y1_0) u = (double)(int)dtmp0; lda [px+4]%asi,%i2 ! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1]; nop fmuld %f58,%f22,%f52 ! (Y1_1) s = u * yd; fsubd %f8,%f10,%f10 ! (Y1_1) s_l = (x - dtmp0); sll %o5,4,%o5 ! (Y0_0) i = i << 4; st %i4,[%fp+tmp2_hi] ! (Y0_0) *(int*)&dtmp0 = ind; fmuld %f14,%f60,%f20 ! (Y0_0) y = dtmp7 * y; fitod %f16,%f14 ! (Y1_1) (double)itmp0; sra %l1,20,%l1 ! (Y0_1) expy = hy >> 20; nop ldd [EXPTBL+%o5],%f56 ! (Y0_0) u = *(double*)((char*)__mt_constexp2 + i); faddd %f48,%f36,%f8 ! (Y0_1) dtmp0 = y + m_h; add %o5,8,%o5 ! (Y0_0) i += 8; add %o0,8,%o0 ! (Y1_1) i += 8; lda [py+4]%asi,%f31 ! (Y0_1) yd = *py; fsubd %f34,%f4,%f60 ! (Y1_0) y = s - u; cmp %l1,959 ! (Y0_1) if (expy < 0x3fb); and MASK_0x000fffff,%l0,%i4 ! (Y1_2) hx &= 0xfffff; ldd [EXPTBL-ind_KB5],KB5 ! (Y1_0) load KB5; fand %f52,MHI32,%f4 ! (Y1_1) s_h = vis_fand(s, MHI32); ldd [EXPTBL+%o5],%f16 ! (Y0_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8); fmuld %f56,%f20,%f34 ! (Y0_0) dtmp1 = u * y; bl,pn %icc,.update10 ! (Y0_1) if (expy < 0x3fb); faddd %f62,%f14,%f14 ! (Y1_1) y += (double)itmp0; .cont10: or MASK_0x3ff00000,%i4,%i4 ! (Y1_2) hx |= 0x3ff00000; cmp %l1,1086 ! (Y0_1) if (expy >= 0x43e); fand %f8,MHI32,%f20 ! (Y0_1) s_h = vis_fand(dtmp0, MHI32); fmuld %f4,%f26,%f8 ! (Y1_1) dtmp0 = s_h * ux; st %i4,[%fp+tmp0_hi] ! (Y1_2) *(int*)&x = hx; bge,pn %icc,.update11 ! (Y0_1) if (expy >= 0x43e); faddd %f60,%f6,%f60 ! (Y1_0) y = y + yd; .cont11: add %i4,2048,%i4 ! (Y1_2) hx += 0x800; ld [%fp+%o7],%o2 ! (Y1_0) load yisint fand %f30,MHI32,%f6 ! (Y0_1) s = vis_fand(yd, MHI32); st %i2,[%fp+tmp0_lo] ! (Y1_2) *((int*)&x + 1) = ((unsigned*)px)[1]; and %i4,-4096,%i4 ! (Y1_2) hx &= 0xfffff000; fmuld %f52,%f52,%f26 ! (Y1_1) y = s * s; faddd %f16,%f34,%f16 ! (Y0_0) dtmp2 = dtmp0 + dtmp1; st %i4,[%fp+tmp1_hi] ! (Y1_2) *(int*)&ax = hx; fsubd %f20,%f36,%f62 ! (Y0_1) dtmp0 = (s_h - m_h); fsubd %f58,%f8,%f8 ! (Y1_1) s_l = u - dtmp0; fmuld KB5,%f60,%f58 ! (Y1_0) dtmp0 = KB5 * y; ldd [EXPTBL-ind_KB3],KB3 ! (Y1_0) load KB3; fmuld %f20,%f6,%f34 ! (Y0_1) s = s_h * s; fsubd %f30,%f6,%f6 ! (Y0_1) dtmp0 = (yd - s); faddd %f16,%f56,%f56 ! (Y0_0) u = dtmp2 + u; nop fmuld KA5,%f26,%f36 ! (Y1_1) dtmp8 = KA5 * y; nop add %l2,513,%l2 ! (Y0_0) ind += 513; fsubd %f48,%f62,%f62 ! (Y0_1) y = y - dtmp0; fmuld KA1_HI,%f4,%f48 ! (Y1_1) yd = KA1_HI * s_h; sll %l2,3,%o5 ! (Y0_0) ind *= 8; ldd [%fp+tmp2_hi],%f16 ! (Y0_0) ld dtmp0; fmuld %f4,%f10,%f10 ! (Y1_1) dtmp1 = s_h * s_l; faddd %f58,KB4,%f58 ! (Y1_0) dtmp1 = dtmp0 + KB4; ldd [EXPTBL-ind_LO],KA1_LO ! (Y1_1) load KA1_LO; and %l0,MASK_0x7fffffff,%l2 ! (Y1_2) hx &= 0x7fffffff; fmuld %f6,%f20,%f6 ! (Y0_1) dtmp0 *= s_h; fcmped %fcc0,%f34,HTHRESH ! (Y0_1) s > HTHRESH ldd [EXPTBL+%o5],%f20 ! (Y0_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind); nop nop fpadd32 %f56,%f16,%f56 ! (Y0_0) u = vis_fpadd32(u, dtmp0); nop cmp %l0,MASK_0x000fffff ! (Y1_2) if (hx <= 0xfffff) fmuld %f30,%f62,%f30 ! (Y0_1) dtmp1 = yd * y; faddd %f36,KA3,%f62 ! (Y1_1) dtmp8 = dtmp8 + KA3; fmuld %f58,%f60,%f58 ! (Y1_0) dtmp2 = dtmp1 * y; st %g0,[%fp+%o7] ! (Y1_2) yisint = 0; ble,pn %icc,.update12 ! (Y1_2) if (hx <= 0xfffff) faddd %f14,%f48,%f36 ! (Y1_1) m_h = y + yd; .cont12: sra %l3,20,%l3 ! (Y0_2) exp = (exp >> 20); sub %o7,ind_buf,%o7 ! stack buffer pointer update fmuld %f56,%f20,%f16 ! (Y0_0) dtmp1 = u * dtmp1; fmovdg %fcc0,HTHRESH,%f34 ! (Y0_1) s = HTHRESH cmp %l3,2047 ! (Y0_2) if (exp >= 0x7ff) st %f16,[pz] ! (Y0_0) write into memory fdivd DONE,%f12,%f20 ! (Y0_2) yd = DONE / ux; fsubd %f8,%f10,%f10 ! (Y1_1) s_l -= dtmp1; sra %l4,20,%l0 ! (Y0_2) itmp0 = (hx >> 20); sub %l3,2046,%o5 ! (Y0_2) exp = exp - 2046; st %f17,[pz+4] ! (Y0_0) write into memory faddd %f6,%f30,%f6 ! (Y0_1) yd = dtmp0 + dtmp1; add %o5,%l0,%o5 ! (Y0_2) exp += itmp0; add py,stridey,py ! py += stridey; ldd [%fp+tmp0_hi],%f8 ! (Y1_2) *(int*)&x = hx; fsubd %f36,%f14,%f30 ! (Y1_1) dtmp2 = m_h - y; sll %o5,8,%l0 ! (Y0_2) itmp0 = exp << 8; ldd [%fp+tmp1_hi],%f14 ! (Y1_2) *(int*)&ax = hx; fmuld KA1,%f22,%f22 ! (Y1_1) dtmp0 = KA1 * yd; faddd %f58,KB3,%f58 ! (Y1_0) dtmp3 = dtmp2 + KB3; add %o7,4,%o7 ! stack buffer pointer update st %l0,[%fp+tmp3] ! (Y0_2) (double)itmp0; fcmped %fcc1,%f34,LTHRESH ! (Y0_1) s < LTHRESH and %o7,15,%o7 ! stack buffer pointer update ld [%fp+tmp4],%l0 ! (Y1_0) ind = (int)dtmp0; fmuld %f62,%f26,%f62 ! (Y1_1) dtmp8 = dtmp8 * y; fmovdg %fcc0,DZERO,%f6 ! (Y0_1) yd = DZERO nop add %o7,ind_buf,%o7 ! stack buffer pointer update ldd [EXPTBL-ind_KB2],KB2 ! (Y1_0) load KB2; faddd %f8,%f14,%f26 ! (Y1_2) ux = x + ax; fmuld %f58,%f60,%f58 ! (Y1_0) dtmp4 = dtmp3 * y; nop bge,pn %icc,.update13 ! (Y0_2) if (exp >= 0x7ff) fsubd %f30,%f48,%f48 ! (Y1_1) dtmp2 -= yd; .cont13: lda [py]%asi,%l1 ! (Y1_1) hy = *py; nop fmuld %f22,%f10,%f10 ! (Y1_1) s_l = dtmp0 * s_l; fmovdl %fcc1,LTHRESH,%f34 ! (Y0_1) s = LTHRESH nop nop fmovdl %fcc1,DZERO,%f6 ! (Y0_1) yd = DZERO fand %f12,MHI32,%f12 ! (Y0_2) ux = vis_fand(ux, MHI32); nop nop fmuld KA1_LO,%f4,%f4 ! (Y1_1) dtmp1 = KA1_LO * s_h; nop add px,stridex,px ! px += stridex; faddd %f58,KB2,%f30 ! (Y1_0) dtmp5 = dtmp4 + KB2; fmuld %f62,%f52,%f62 ! (Y1_1) s = dtmp8 * s; sra %l0,8,%i2 ! (Y1_0) ind >>= 8; add pz,stridez,pz ! pz += stridez; ldd [LOGTBL+%o0],%f52 ! (Y1_1) dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8); fsubd %f48,%f10,%f22 ! (Y1_1) dtmp2 -= s_l; add %i2,1021,%l3 ! (Y1_0) eflag = (ind + 1021); sub %g0,%i2,%o5 ! (Y1_0) gflag = (1022 - ind); ldd [EXPTBL-ind_KB1],KB1 ! (Y1_0) load KB1; faddd %f34,%f6,%f58 ! (Y0_1) dtmp0 = (s + yd); sra %l3,31,%l3 ! (Y1_0) eflag = eflag >> 31; add %o5,1022,%o5 ! (Y1_0) gflag = (1022 - ind); ldd [EXPTBL-ind_HI],KA1_HI ! (Y0_2) load KA1_HI; fsubd %f12,%f54,%f10 ! (Y0_2) dtmp0 = (ux - ax); sra %o5,31,%o5 ! (Y1_0) gflag = gflag >> 31; and %l3,54,%o0 ! (Y1_0) itmp0 = 54 & eflag; fmuld %f30,%f60,%f48 ! (Y1_0) dtmp6 = dtmp5 * y; faddd %f52,%f4,%f52 ! (Y1_1) dtmp0 += dtmp1; sra %l4,8,%l4 ! (Y0_2) i = (hx >> 8); add %i2,%o0,%i2 ! (Y1_0) ind = ind + itmp0; fsubd %f62,%f22,%f4 ! (Y1_1) y = s - dtmp2; lda [py]%asi,%f30 ! (Y1_1) yd = *py; and %l4,4080,%l4 ! (Y0_2) i = i & 0xff0; and %o5,52,%o0 ! (Y1_0) itmp1 = 52 & gflag; fdtoi %f58,%f22 ! (Y0_1) (int)dtmp0; sub %l3,%o5,%l3 ! (Y1_0) ind = eflag - gflag; sub %i2,%o0,%i2 ! (Y1_0) ind = ind - itmp1; ld [%fp+tmp3],%f16 ! (Y0_2) (double)itmp0; fsubd %f32,%f54,%f58 ! (Y0_2) u = x - ax; add %o2,%i2,%i2 ! (Y1_0) ind = yisint + ind; and %l0,255,%o5 ! (Y1_0) i = ind & 0xff; st %f22,[%fp+tmp4] ! (Y0_1) ind = (int)dtmp0; faddd %f48,KB1,%f54 ! (Y1_0) dtmp7 = dtmp6 + KB1; sll %i2,20,%o0 ! (Y1_0) ind <<= 20; nop lda [px]%asi,%l0 ! (Y0_3) hx = ((unsigned*)px)[0]; faddd %f4,%f52,%f48 ! (Y1_1) y += dtmp0; and %l1,MASK_0x7fffffff,%l1 ! (Y1_1) hy &= 0x7fffffff; nop st %o0,[%fp+tmp2_hi] ! (Y1_0) *(int*)&dtmp0 = ind; fitod %f22,%f4 ! (Y0_1) u = (double)(int)dtmp0; lda [px+4]%asi,%i2 ! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1]; nop fmuld %f58,%f20,%f52 ! (Y0_2) s = u * yd; fsubd %f32,%f10,%f10 ! (Y0_2) s_l = (x - dtmp0); sll %o5,4,%o5 ! (Y1_0) i = i << 4; ldd [LOGTBL+%l4],%f62 ! (Y0_2) y = *(double *)((char*)__mt_constlog2 + i); fmuld %f54,%f60,%f22 ! (Y1_0) y = dtmp7 * y; fitod %f16,%f54 ! (Y0_2) (double)itmp0; sra %l1,20,%l1 ! (Y1_1) expy = hy >> 20; nop ldd [EXPTBL+%o5],%f56 ! (Y1_0) u = *(double*)((char*)__mt_constexp2 + i); faddd %f48,%f36,%f32 ! (Y1_1) dtmp0 = y + m_h; add %o5,8,%o5 ! (Y1_0) i += 8; add %l4,8,%o0 ! (Y0_2) i += 8; lda [py+4]%asi,%f31 ! (Y1_1) yd = *py; fsubd %f34,%f4,%f60 ! (Y0_1) y = s - u; cmp %l1,959 ! (Y1_1) if (expy < 0x3fb); and MASK_0x000fffff,%l0,%l4 ! (Y0_3) hx &= 0xfffff; fand %f52,MHI32,%f4 ! (Y0_2) s_h = vis_fand(s, MHI32); ldd [EXPTBL+%o5],%f16 ! (Y1_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8); fmuld %f56,%f22,%f34 ! (Y1_0) dtmp1 = u * y; bl,pn %icc,.update14 ! (Y1_1) if (expy < 0x3fb); faddd %f62,%f54,%f54 ! (Y0_2) y += (double)itmp0; .cont14: ldd [EXPTBL-ind_KB5],KB5 ! (Y0_1) load KB5; or MASK_0x3ff00000,%l4,%o5 ! (Y0_3) hx |= 0x3ff00000; cmp %l1,1086 ! (Y1_1) if (expy >= 0x43e); fand %f32,MHI32,%f22 ! (Y1_1) s_h = vis_fand(dtmp0, MHI32); fmuld %f4,%f12,%f32 ! (Y0_2) dtmp0 = s_h * ux; st %o5,[%fp+tmp0_hi] ! (Y0_3) *(int*)&x = hx; bge,pn %icc,.update15 ! (Y1_1) if (expy >= 0x43e); faddd %f60,%f6,%f60 ! (Y0_1) y = y + yd; .cont15: add %o5,2048,%o5 ! (Y0_3) hx += 0x800; nop ld [%fp+%o7],%o2 ! (Y0_1) load yisint fand %f30,MHI32,%f6 ! (Y1_1) s = vis_fand(yd, MHI32); and %o5,-4096,%l4 ! (Y0_3) hx &= 0xfffff000; st %i2,[%fp+tmp0_lo] ! (Y0_3) *((int*)&x + 1) = ((unsigned*)px)[1]; fmuld %f52,%f52,%f12 ! (Y0_2) y = s * s; faddd %f16,%f34,%f16 ! (Y1_0) dtmp2 = dtmp0 + dtmp1; nop nop st %l4,[%fp+tmp1_hi] ! (Y0_3) *(int*)&ax = hx; fsubd %f22,%f36,%f62 ! (Y1_1) dtmp0 = (s_h - m_h); fsubd %f58,%f32,%f32 ! (Y0_2) s_l = u - dtmp0; nop nop fmuld KB5,%f60,%f58 ! (Y0_1) dtmp0 = KB5 * y; ldd [EXPTBL-ind_KB3],KB3 ! (Y0_1) load KB3; nop fmuld %f22,%f6,%f34 ! (Y1_1) s = s_h * s; fsubd %f30,%f6,%f6 ! (Y1_1) dtmp0 = (yd - s); fmuld KA5,%f12,%f36 ! (Y0_2) dtmp8 = KA5 * y; nop faddd %f16,%f56,%f56 ! (Y1_0) u = dtmp2 + u; add %l3,513,%l3 ! (Y1_0) ind += 1; fsubd %f48,%f62,%f62 ! (Y1_1) y = y - dtmp0; fmuld KA1_HI,%f4,%f48 ! (Y0_2) yd = KA1_HI * s_h; sll %l3,3,%o5 ! (Y1_0) ind *= 8; ldd [%fp+tmp2_hi],%f16 ! (Y1_0) *(int*)&dtmp0 = ind; fmuld %f4,%f10,%f10 ! (Y0_2) dtmp1 = s_h * s_l; faddd %f58,KB4,%f58 ! (Y0_1) dtmp1 = dtmp0 + KB4; ldd [EXPTBL-ind_LO],KA1_LO ! (y0_2) load KA1_LO; and %l0,MASK_0x7fffffff,%l3 ! (Y0_3) hx &= 0x7fffffff; fmuld %f6,%f22,%f6 ! (Y1_1) dtmp0 *= s_h; fcmped %fcc0,%f34,HTHRESH ! (Y1_1) s > HTHRESH; nop subcc counter,2,counter ! update cycle counter ldd [EXPTBL+%o5],%f22 ! (Y1_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind); fpadd32 %f56,%f16,%f56 ! (Y1_0) u = vis_fpadd32(u, dtmp0); fmuld %f30,%f62,%f30 ! (Y1_1) dtmp1 = yd * y; nop nop faddd %f36,KA3,%f62 ! (Y0_2) dtmp8 = dtmp8 + KA3; nop st %g0,[%fp+%o7] ! (Y0_3) yisint = 0; fmuld %f58,%f60,%f58 ! (Y0_1) dtmp2 = dtmp1 * y; faddd %f54,%f48,%f36 ! (Y0_2) m_h = y + yd; fmuld %f56,%f22,%f16 ! (Y1_0) dtmp1 = u * dtmp1; nop st %f16,[pz] ! (Y1_0) write into memory fmovdg %fcc0,HTHRESH,%f34 ! (Y1_1) s = HTHRESH; fdivd DONE,%f26,%f22 ! (Y1_2) yd = DONE / ux; st %f17,[pz+4] ! (Y1_0) write into memory bpos,pt %icc,.main_loop fsubd %f32,%f10,%f10 ! (Y0_2) s_l -= dtmp1; .tail: addcc counter,1,counter bneg,pn %icc,.end_loop faddd %f58,KB3,%f58 ! (Y0_0) dtmp3 = dtmp2 + KB3; ldd [EXPTBL-ind_KB2],KB2 ! (Y0_0) load KB2; ld [%fp+tmp4],%i2 ! (Y0_0) ind = (int)dtmp0; fmuld %f58,%f60,%f58 ! (Y0_0) dtmp4 = dtmp3 * y; faddd %f58,KB2,%f30 ! (Y0_0) dtmp5 = dtmp4 + KB2; add pz,stridez,pz ! pz += stridez; ldd [EXPTBL-ind_KB1],KB1 ! (Y0_0) load KB1; sra %i2,8,%l0 ! (Y0_0) ind >>= 8; add %l0,1021,%l2 ! (Y0_0) eflag = (ind + 1021); sub %g0,%l0,%o5 ! (Y0_0) gflag = (1022 - ind); fmuld %f30,%f60,%f48 ! (Y0_0) dtmp6 = dtmp5 * y; sra %l2,31,%l2 ! (Y0_0) eflag = eflag >> 31; add %o5,1022,%o5 ! (Y0_0) gflag = (1022 - ind); sra %o5,31,%o5 ! (Y0_0) gflag = gflag >> 31; and %l2,54,%o0 ! (Y0_0) itmp0 = 54 & eflag; sub %l2,%o5,%l2 ! (Y0_0) ind = eflag - gflag; add %l0,%o0,%l0 ! (Y0_0) ind = ind + itmp0; and %o5,52,%o5 ! (Y0_0) itmp1 = 52 & gflag; faddd %f48,KB1,%f14 ! (Y0_0) dtmp7 = dtmp6 + KB1; sub %l0,%o5,%l0 ! (Y0_0) ind = ind - itmp1; and %i2,255,%i4 ! (Y0_0) i = ind & 0xff; sll %i4,4,%o5 ! (Y0_0) i = i << 4; ldd [EXPTBL+%o5],%f56 ! (Y0_0) u = *(double*)((char*)__mt_constexp2 + i); add %o2,%l0,%l0 ! (Y0_0) ind = yisint + ind; fmuld %f14,%f60,%f20 ! (Y0_0) y = dtmp7 * y; sll %l0,20,%i2 ! (Y0_0) ind <<= 20; add %o5,8,%o5 ! (Y0_0) i += 8; st %i2,[%fp+tmp2_hi] ! (Y0_0) *(int*)&dtmp0 = ind; ldd [EXPTBL+%o5],%f16 ! (Y0_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8); fmuld %f56,%f20,%f34 ! (Y0_0) dtmp1 = u * y; faddd %f16,%f34,%f16 ! (Y0_0) dtmp2 = dtmp0 + dtmp1; faddd %f16,%f56,%f56 ! (Y0_0) u = dtmp2 + u; add %l2,513,%l2 ! (Y0_0) ind += 513; sll %l2,3,%o5 ! (Y0_0) ind *= 8; ldd [%fp+tmp2_hi],%f16 ! (Y0_0) ld dtmp0; ldd [EXPTBL+%o5],%f20 ! (Y0_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind); fpadd32 %f56,%f16,%f56 ! (Y0_0) u = vis_fpadd32(u, dtmp0); fmuld %f56,%f20,%f16 ! (Y0_0) dtmp1 = u * dtmp1; st %f16,[pz] ! (Y0_0) write into memory st %f17,[pz+4] ! (Y0_0) write into memory .end_loop: ba .begin nop .end: ret restore %g0,0,%o0 .align 16 .update0: cmp %l0,%g0 ! if (x >= 0); fzero %f30 lda [py+4]%asi,%l0 ! ld ly bge,pt %icc,.pos0 ! if (x >= 0); or %g0,%g0,%o5 ! yisint = 0; cmp %o0,1076 ! if (expy >= 0x434); bge .neg0 ! if (expy >= 0x434); or %g0,2,%o5 ! yisint = 2; cmp %o0,1023 ! if (expy < 0x3ff); bl .neg0 ! if (expy < 0x3ff); or %g0,0,%o5 ! yisint = 0; cmp %o0,1043 ! if (expy <= (20 + 0x3ff)); ble .small0 ! if (expy <= (20 + 0x3ff)); sub %o0,1023,%o0 ! expy - 0x3ff; sub %g0,%o0,%o0 add %o0,52,%o0 ! sh = (52 - (expy - 0x3ff); srl %l0,%o0,%i4 ! i0 = (ly >> sh); sll %i4,%o0,%i4 ! (i0 << sh); srl %l0,%o0,%o0 ! i0 = (ly >> sh); cmp %i4,%l0 ! if ((i0 << sh) == ly); and %o0,1,%o0 ! i0 &= 1; sub %g0,%o0,%o0 add %o0,2,%o0 ! i0 = 2 - i0; move %icc,%o0,%o5 ! yisint = i0; ba .neg0 nop .small0: sub %g0,%o0,%o0 cmp %l0,%g0 ! if (ly != 0); add %o0,20,%o0 ! sh = (20 - (expy - 0x3ff); bne .neg0 ! if (ly != 0); or %g0,0,%o5 ! yisint = 0; srl %l1,%o0,%i4 ! i0 = (hy >> sh); sll %i4,%o0,%i4 ! (i0 << sh); srl %l1,%o0,%o0 ! i0 = (hy >> sh); cmp %i4,%l1 ! if ((i0 << sh) == hy); and %o0,1,%o0 ! i0 &= 1; sub %g0,%o0,%o0 add %o0,2,%o0 ! i0 = 2 - i0; move %icc,%o0,%o5 ! yisint = i0; .neg0: orcc %l3,%i2,%g0 ! if (x != 0); sra %o2,31,%i4 ! sy = (*((unsigned*)py)[0]) >> 31; bne,pt %icc,3f ! if (x != 0); nop cmp %i4,%g0 ! if (sy == 0); be 1f ! if (sy == 0); and %o5,1,%i4 ! yisint &= 1; fdivd DONE,%f30,%f30 ! y0 = DONE / y0; 1: cmp %i4,%g0 ! if ((yisint & 1) == 0); be 2f ! if ((yisint & 1) == 0); nop fnegd %f30,%f30 ! y0 = -y0; 2: st %f30,[pz] ba .update_point st %f31,[pz+4] 3: cmp %o5,%g0 ! if (yisint != 0); bne .pos0 ! if (yisint != 0); nop fdivd DZERO,DZERO,%f30 ! y0 = DZERO / DZERO; st %f30,[pz] ba .update_point st %f31,[pz+4] .pos0: orcc %l3,%i2,%g0 ! if (x != 0); sra %o2,31,%i4 ! sy = (*((unsigned*)py)[0]) >> 31; bne,pt %icc,.nzero0 ! if (x != 0); nop cmp %i4,%g0 ! if (sy == 0); be 1f ! if (sy == 0); nop fdivd DONE,%f30,%f30 ! y0 = DONE / y0; 1: st %f30,[pz] ba .update_point st %f31,[pz+4] .nzero0: sll %o5,11,%o5 cmp %l3,MASK_0x000fffff ! if (exp > 0xfffff); bg,pt %icc,.cont0 ! if (exp > 0xfffff); st %o5,[%fp+%o7] ldd [%fp+tmp_mant],%f54 or %g0,1074,%o5 fand %f32,%f54,%f32 ! y0 = vis_fand(x, MMANT); sll %o5,20,%o5 fxtod %f32,%f32 ! ax = (double) ((long long *) & y0)[0]; std %f32,[%fp+tmp0_hi] ! exp = ((unsigned int*) & ax)[0]; fand %f32,%f54,%f32 ! x = vis_fand(ax, MMANT); ld [%fp+tmp0_hi],%i2 ! exp = ((unsigned int*) & ax)[0]; for %f32,DONE,%f32 ! x = vis_for(x, DONE); sub %i2,%o5,%l3 ! exp -= (1023 + 51) << 20; and MASK_0x000fffff,%i2,%l4 ! hx = exp & 0xfffff; or MASK_0x3ff00000,%l4,%l4 ! hx |= 0x3ff00000; add %l4,2048,%l4 ! hx += 0x800; and %l4,-4096,%l4 ! hx &= 0xfffff000; ba .cont0 st %l4,[%fp+tmp1_hi] ! *(int*)&ax = hx; .align 16 .update1: cmp counter,0 ble,pt %icc,.cont1 add py,stridey,%o5 stx px,[%fp+tmp_px] orcc %l2,%i2,%g0 ! if (x == 0); bne,pt %icc,.nzero1 ! if (x == 0); stx %o5,[%fp+tmp_py] .u1: st counter,[%fp+tmp_counter] ba .cont1 or %g0,0,counter .nzero1: lda [%o5]%asi,%l1 ! ld hy; cmp %l0,%g0 ! if (x >= 0); lda [%o5+4]%asi,%l0 ! ld ly bge,pt %icc,.pos1 ! if (x >= 0); or %g0,%g0,%o5 ! yisint = 0; and %l1,MASK_0x7fffffff,%i2 ! hy &= 0x7fffffff; sra %i2,20,%i2 ! expy = hy >> 20; cmp %i2,1076 ! if (expy >= 0x434); bge .neg1 ! if (expy >= 0x434); or %g0,2,%o5 ! yisint = 2; cmp %i2,1023 ! if (expy < 0x3ff); bl .neg1 ! if (expy < 0x3ff); or %g0,0,%o5 ! yisint = 0; cmp %i2,1043 ! if (expy <= (20 + 0x3ff)); ble .small1 ! if (expy <= (20 + 0x3ff)); sub %i2,1023,%i2 ! expy - 0x3ff; sub %g0,%i2,%i2 add %i2,52,%i2 ! sh = (52 - (expy - 0x3ff); srl %l0,%i2,%l1 ! i0 = (ly >> sh); sll %l1,%i2,%l1 ! (i0 << sh); srl %l0,%i2,%i2 ! i0 = (ly >> sh); cmp %l1,%l0 ! if ((i0 << sh) == ly); and %i2,1,%i2 ! i0 &= 1; sub %g0,%i2,%i2 add %i2,2,%i2 ! i0 = 2 - i0; move %icc,%i2,%o5 ! yisint = i0; ba .neg1 nop .small1: sub %g0,%i2,%i2 cmp %l0,%g0 ! if (ly != 0); add %i2,20,%i2 ! sh = (20 - (expy - 0x3ff); bne .neg1 ! if (ly != 0); or %g0,0,%o5 ! yisint = 0; srl %l1,%i2,%l0 ! i0 = (hy >> sh); sll %l0,%i2,%l0 ! (i0 << sh); srl %l1,%i2,%i2 ! i0 = (hy >> sh); cmp %l0,%l1 ! if ((i0 << sh) == hy); and %i2,1,%i2 ! i0 &= 1; sub %g0,%i2,%i2 add %i2,2,%i2 ! i0 = 2 - i0; move %icc,%i2,%o5 ! yisint = i0; .neg1: cmp %o5,%g0 be .u1 nop .pos1: sll %o5,11,%o5 cmp %l2,MASK_0x000fffff ! if (exp > 0xfffff); bg,pt %icc,.cont1 ! if (exp > 0xfffff); st %o5,[%fp+%o7] std %f32,[%fp+tmp5]; std %f54,[%fp+tmp6]; ldd [%fp+tmp0_hi],%f32 ldd [%fp+tmp_mant],%f54 or %g0,1074,%o5 fand %f32,%f54,%f32 ! y0 = vis_fand(x, MMANT); sll %o5,20,%o5 fxtod %f32,%f32 ! ax = (double) ((long long *) & y0)[0]; std %f32,[%fp+tmp0_hi] ! exp = ((unsigned int*) & ax)[0]; fand %f32,%f54,%f32 ! x = vis_fand(ax, MMANT); ld [%fp+tmp0_hi],%i2 ! exp = ((unsigned int*) & ax)[0]; for %f32,DONE,%f32 ! x = vis_for(x, DONE); std %f32,[%fp+tmp0_hi]; sub %i2,%o5,%l2 ! exp -= (1023 + 51) << 20; and MASK_0x000fffff,%i2,%i4 ! hx = exp & 0xfffff; ldd [%fp+tmp5],%f32 or MASK_0x3ff00000,%i4,%i4 ! hx |= 0x3ff00000; add %i4,2048,%i4 ! hx += 0x800; ldd [%fp+tmp6],%f54 and %i4,-4096,%i4 ! hx &= 0xfffff000; ba .cont1 st %i4,[%fp+tmp1_hi] ! *(int*)&ax = hx; .align 16 .update2: cmp counter,1 ble,pt %icc,.cont2 add py,stridey,%o5 add %o5,stridey,%o5 stx px,[%fp+tmp_px] orcc %l3,%i2,%g0 ! if (x == 0); bne,pt %icc,.nzero2 ! if (x == 0); stx %o5,[%fp+tmp_py] .u2: sub counter,1,counter st counter,[%fp+tmp_counter] ba .cont2 or %g0,1,counter .nzero2: lda [%o5]%asi,%l1 ! ld hy; cmp %l0,%g0 ! if (x >= 0); lda [%o5+4]%asi,%l0 ! ld ly bge,pt %icc,.pos2 ! if (x >= 0); or %g0,%g0,%o5 ! yisint = 0; and %l1,MASK_0x7fffffff,%i2 ! hy &= 0x7fffffff; sra %i2,20,%i2 ! expy = hy >> 20; cmp %i2,1076 ! if (expy >= 0x434); bge .neg2 ! if (expy >= 0x434); or %g0,2,%o5 ! yisint = 2; cmp %i2,1023 ! if (expy < 0x3ff); bl .neg2 ! if (expy < 0x3ff); or %g0,0,%o5 ! yisint = 0; cmp %i2,1043 ! if (expy <= (20 + 0x3ff)); ble .small2 ! if (expy <= (20 + 0x3ff)); sub %i2,1023,%i2 ! expy - 0x3ff; sub %g0,%i2,%i2 add %i2,52,%i2 ! sh = (52 - (expy - 0x3ff); srl %l0,%i2,%l1 ! i0 = (ly >> sh); sll %l1,%i2,%l1 ! (i0 << sh); srl %l0,%i2,%i2 ! i0 = (ly >> sh); cmp %l1,%l0 ! if ((i0 << sh) == ly); and %i2,1,%i2 ! i0 &= 1; sub %g0,%i2,%i2 add %i2,2,%i2 ! i0 = 2 - i0; move %icc,%i2,%o5 ! yisint = i0; ba .neg2 nop .small2: sub %g0,%i2,%i2 cmp %l0,%g0 ! if (ly != 0); add %i2,20,%i2 ! sh = (20 - (expy - 0x3ff); bne .neg2 ! if (ly != 0); or %g0,0,%o5 ! yisint = 0; srl %l1,%i2,%l0 ! i0 = (hy >> sh); sll %l0,%i2,%l0 ! (i0 << sh); srl %l1,%i2,%i2 ! i0 = (hy >> sh); cmp %l0,%l1 ! if ((i0 << sh) == hy); and %i2,1,%i2 ! i0 &= 1; sub %g0,%i2,%i2 add %i2,2,%i2 ! i0 = 2 - i0; move %icc,%i2,%o5 ! yisint = i0; .neg2: cmp %o5,%g0 be .u2 nop .pos2: sll %o5,11,%o5 cmp %l3,MASK_0x000fffff ! if (exp > 0xfffff); bg,pt %icc,.cont2 ! if (exp > 0xfffff); st %o5,[%fp+%o7] ldd [%fp+tmp_mant],%f54 or %g0,1074,%o5 fand %f32,%f54,%f32 ! y0 = vis_fand(x, MMANT); sll %o5,20,%o5 fxtod %f32,%f32 ! ax = (double) ((long long *) & y0)[0] std %f32,[%fp+tmp0_hi] ! exp = ((unsigned int*) & ax)[0]; fand %f32,%f54,%f32 ! x = vis_fand(ax, MMANT); ld [%fp+tmp0_hi],%i2 ! exp = ((unsigned int*) & ax)[0]; for %f32,DONE,%f32 ! x = vis_for(x, DONE); sub %i2,%o5,%l3 ! exp -= (1023 + 51) << 20; and MASK_0x000fffff,%i2,%l4 ! hx = exp & 0xfffff; or MASK_0x3ff00000,%l4,%l4 ! hx |= 0x3ff00000; add %l4,2048,%l4 ! hx += 0x800; and %l4,-4096,%l4 ! hx &= 0xfffff000; ba .cont2 st %l4,[%fp+tmp1_hi] ! *(int*)&ax = hx; .align 16 .update3: cmp counter,0 ble,pt %icc,.cont3 sub px,stridex,%o5 ld [%fp+tmp_counter],%l1 stx %o5,[%fp+tmp_px] add py,stridey,%o5 add %l1,counter,counter stx %o5,[%fp+tmp_py] st counter,[%fp+tmp_counter] ba .cont3 or %g0,0,counter .align 16 .update4: cmp counter,2 ble,pt %icc,.cont4 add py,stridey,%o5 add %o5,stridey,%o5 add %o5,stridey,%o5 stx px,[%fp+tmp_px] orcc %l2,%i2,%g0 ! if (x == 0); bne,pt %icc,.nzero4 ! if (x == 0); stx %o5,[%fp+tmp_py] .u4: sub counter,2,counter st counter,[%fp+tmp_counter] ba .cont4 or %g0,2,counter .nzero4: lda [%o5]%asi,%l1 ! ld hy; cmp %l0,%g0 ! if (x >= 0); lda [%o5+4]%asi,%l0 ! ld ly bge,pt %icc,.pos4 ! if (x >= 0); or %g0,%g0,%o5 ! yisint = 0; and %l1,MASK_0x7fffffff,%i2 ! hy &= 0x7fffffff; sra %i2,20,%i2 ! expy = hy >> 20; cmp %i2,1076 ! if (expy >= 0x434); bge .neg4 ! if (expy >= 0x434); or %g0,2,%o5 ! yisint = 2; cmp %i2,1023 ! if (expy < 0x3ff); bl .neg4 ! if (expy < 0x3ff); or %g0,0,%o5 ! yisint = 2; cmp %i2,1043 ! if (expy <= (20 + 0x3ff)); ble .small4 ! if (expy <= (20 + 0x3ff)); sub %i2,1023,%i2 ! expy - 0x3ff; sub %g0,%i2,%i2 add %i2,52,%i2 ! sh = (52 - (expy - 0x3ff); srl %l0,%i2,%l1 ! i0 = (ly >> sh); sll %l1,%i2,%l1 ! (i0 << sh); srl %l0,%i2,%i2 ! i0 = (ly >> sh); cmp %l1,%l0 ! if ((i0 << sh) == ly); and %i2,1,%i2 ! i0 &= 1; sub %g0,%i2,%i2 add %i2,2,%i2 ! i0 = 2 - i0; move %icc,%i2,%o5 ! yisint = i0; ba .neg4 nop .small4: sub %g0,%i2,%i2 cmp %l0,%g0 ! if (ly != 0); add %i2,20,%i2 ! sh = (20 - (expy - 0x3ff); bne .neg4 ! if (ly != 0); or %g0,0,%o5 ! yisint = 0; srl %l1,%i2,%l0 ! i0 = (hy >> sh); sll %l0,%i2,%l0 ! (i0 << sh); srl %l1,%i2,%i2 ! i0 = (hy >> sh); cmp %l0,%l1 ! if ((i0 << sh) == hy); and %i2,1,%i2 ! i0 &= 1; sub %g0,%i2,%i2 add %i2,2,%i2 ! i0 = 2 - i0; move %icc,%i2,%o5 ! yisint = i0; .neg4: cmp %o5,%g0 be .u4 nop .pos4: sll %o5,11,%o5 cmp %l2,MASK_0x000fffff ! if (exp > 0xfffff); bg,pt %icc,.cont4 ! if (exp > 0xfffff); st %o5,[%fp+%o7] std %f32,[%fp+tmp5]; std %f54,[%fp+tmp6]; ldd [%fp+tmp0_hi],%f32 ldd [%fp+tmp_mant],%f54 or %g0,1074,%o5 fand %f32,%f54,%f32 ! y0 = vis_fand(x, MMANT); sll %o5,20,%o5 fxtod %f32,%f32 ! ax = (double) ((long long *) & y0)[0] std %f32,[%fp+tmp0_hi] ! exp = ((unsigned int*) & ax)[0]; fand %f32,%f54,%f32 ! x = vis_fand(ax, MMANT); ld [%fp+tmp0_hi],%i2 ! exp = ((unsigned int*) & ax)[0]; for %f32,DONE,%f32 ! x = vis_for(x, DONE); std %f32,[%fp+tmp0_hi]; sub %i2,%o5,%l2 ! exp -= (1023 + 51) << 20; and MASK_0x000fffff,%i2,%i4 ! hx = exp & 0xfffff; ldd [%fp+tmp5],%f32 or MASK_0x3ff00000,%i4,%i4 ! hx |= 0x3ff00000; add %i4,2048,%i4 ! hx += 0x800; ldd [%fp+tmp6],%f54 and %i4,-4096,%i4 ! hx &= 0xfffff000; ba .cont4 st %i4,[%fp+tmp1_hi] ! *(int*)&ax = hx; .align 16 .update5: cmp counter,1 ble,pt %icc,.cont5 sub px,stridex,%o5 ld [%fp+tmp_counter],%l1 stx %o5,[%fp+tmp_px] add py,stridey,%o5 add %l1,counter,counter stx %o5,[%fp+tmp_py] sub counter,1,counter st counter,[%fp+tmp_counter] ba .cont5 or %g0,1,counter .align 16 .update6: cmp counter,0 ble,pt %icc,.cont6 fmovd DONE,%f30 ld [%fp+tmp_counter],%o2 sub px,stridex,%o5 sub %o5,stridex,%o5 stx py,[%fp+tmp_py] add %o2,counter,counter sub %o5,stridex,%o5 stx %o5,[%fp+tmp_px] st counter,[%fp+tmp_counter] ba .cont6 or %g0,0,counter .align 16 .update7: cmp counter,0 ble,pt %icc,.cont7 fmovd DONE,%f30 sub px,stridex,%o5 ld [%fp+tmp_counter],%o2 sub %o5,stridex,%o5 stx py,[%fp+tmp_py] add %o2,counter,counter sub %o5,stridex,%o5 stx %o5,[%fp+tmp_px] st counter,[%fp+tmp_counter] ba .cont7 or %g0,0,counter .align 16 .update8: cmp counter,2 ble,pt %icc,.cont8 add py,stridey,%o5 add %o5,stridey,%o5 stx px,[%fp+tmp_px] orcc %l3,%i2,%g0 ! if (x == 0); bne,pt %icc,.nzero8 ! if (x == 0); stx %o5,[%fp+tmp_py] .u8: sub counter,2,counter st counter,[%fp+tmp_counter] ba .cont8 or %g0,2,counter .nzero8: lda [%o5]%asi,%l1 ! ld hy; cmp %l0,%g0 ! if (x >= 0); lda [%o5+4]%asi,%l0 ! ld ly bge,pt %icc,.pos8 ! if (x >= 0); or %g0,%g0,%o5 ! yisint = 0; and %l1,MASK_0x7fffffff,%i2 ! hy &= 0x7fffffff; sra %i2,20,%i2 ! expy = hy >> 20; cmp %i2,1076 ! if (expy >= 0x434); bge .pos8 ! if (expy >= 0x434); or %g0,2,%o5 ! yisint = 2; cmp %i2,1023 ! if (expy < 0x3ff); bl .neg8 ! if (expy < 0x3ff); or %g0,0,%o5 ! yisint = 0; cmp %i2,1043 ! if (expy <= (20 + 0x3ff)); ble .small8 ! if (expy <= (20 + 0x3ff)); sub %i2,1023,%i2 ! expy - 0x3ff; sub %g0,%i2,%i2 add %i2,52,%i2 ! sh = (52 - (expy - 0x3ff); srl %l0,%i2,%l1 ! i0 = (ly >> sh); sll %l1,%i2,%l1 ! (i0 << sh); srl %l0,%i2,%i2 ! i0 = (ly >> sh); cmp %l1,%l0 ! if ((i0 << sh) == ly); and %i2,1,%i2 ! i0 &= 1; sub %g0,%i2,%i2 add %i2,2,%i2 ! i0 = 2 - i0; move %icc,%i2,%o5 ! yisint = i0; ba .neg8 nop .small8: sub %g0,%i2,%i2 cmp %l0,%g0 ! if (ly != 0); add %i2,20,%i2 ! sh = (20 - (expy - 0x3ff); bne .neg8 ! if (ly != 0); or %g0,0,%o5 ! yisint = 0; srl %l1,%i2,%l0 ! i0 = (hy >> sh); sll %l0,%i2,%l0 ! (i0 << sh); srl %l1,%i2,%i2 ! i0 = (hy >> sh); cmp %l0,%l1 ! if ((i0 << sh) == hy); and %i2,1,%i2 ! i0 &= 1; sub %g0,%i2,%i2 add %i2,2,%i2 ! i0 = 2 - i0; move %icc,%i2,%o5 ! yisint = i0; .neg8: cmp %o5,%g0 be .u8 nop .pos8: sll %o5,11,%o5 cmp %l3,MASK_0x000fffff ! if (exp > 0xfffff); bg,pt %icc,.cont8 ! if (exp > 0xfffff); st %o5,[%fp+%o7] ldd [%fp+tmp_mant],%f54 or %g0,1074,%o5 fand %f32,%f54,%f32 ! y0 = vis_fand(x, MMANT); sll %o5,20,%o5 fxtod %f32,%f32 ! ax = (double) ((long long *) & y0)[0] std %f32,[%fp+tmp0_hi] ! exp = ((unsigned int*) & ax)[0]; fand %f32,%f54,%f32 ! x = vis_fand(ax, MMANT); ld [%fp+tmp0_hi],%i2 ! exp = ((unsigned int*) & ax)[0]; for %f32,DONE,%f32 ! x = vis_for(x, DONE); sub %i2,%o5,%l3 ! exp -= (1023 + 51) << 20; and MASK_0x000fffff,%i2,%l4 ! hx &= 0xfffff; or MASK_0x3ff00000,%l4,%l4 ! hx |= 0x3ff00000; add %l4,2048,%l4 ! hx += 0x800; and %l4,-4096,%l4 ! hx &= 0xfffff000; ba .cont8 st %l4,[%fp+tmp1_hi] ! *(int*)&ax = hx; .align 16 .update9: cmp counter,1 ble,pt %icc,.cont9 sub px,stridex,%o5 ld [%fp+tmp_counter],%l1 stx %o5,[%fp+tmp_px] add py,stridey,%o5 add %l1,counter,counter stx %o5,[%fp+tmp_py] sub counter,1,counter st counter,[%fp+tmp_counter] ba .cont9 or %g0,1,counter .align 16 .update10: cmp counter,0 ble,pt %icc,.cont10 fmovd DONE,%f30 ld [%fp+tmp_counter],%o2 sub px,stridex,%o5 sub %o5,stridex,%o5 stx py,[%fp+tmp_py] add %o2,counter,counter sub %o5,stridex,%o5 stx %o5,[%fp+tmp_px] st counter,[%fp+tmp_counter] ba .cont10 or %g0,0,counter .align 16 .update11: cmp counter,0 ble,pt %icc,.cont11 fmovd DONE,%f30 ld [%fp+tmp_counter],%o2 sub px,stridex,%o5 sub %o5,stridex,%o5 stx py,[%fp+tmp_py] add %o2,counter,counter sub %o5,stridex,%o5 stx %o5,[%fp+tmp_px] st counter,[%fp+tmp_counter] ba .cont11 or %g0,0,counter .align 16 .update12: cmp counter,3 ble,pt %icc,.cont12 add py,stridey,%o5 add %o5,stridey,%o5 stx px,[%fp+tmp_px] add %o5,stridey,%o5 orcc %l2,%i2,%g0 ! if (x == 0); bne,pt %icc,.nzero12 ! if (x == 0); stx %o5,[%fp+tmp_py] .u12: sub counter,3,counter st counter,[%fp+tmp_counter] ba .cont12 or %g0,3,counter .nzero12: lda [%o5]%asi,%l1 ! ld hy; cmp %l0,%g0 ! if (x >= 0); lda [%o5+4]%asi,%l0 ! ld ly bge,pt %icc,.pos12 ! if (x >= 0); or %g0,%g0,%o5 ! yisint = 0; and %l1,MASK_0x7fffffff,%i2 ! hy &= 0x7fffffff; sra %i2,20,%i2 ! expy = hy >> 20; cmp %i2,1076 ! if (expy >= 0x434); bge .neg12 ! if (expy >= 0x434); or %g0,2,%o5 ! yisint = 2; cmp %i2,1023 ! if (expy < 0x3ff); bl .neg12 ! if (expy < 0x3ff); or %g0,0,%o5 ! yisint = 0; cmp %i2,1043 ! if (expy <= (20 + 0x3ff)); ble .small12 ! if (expy <= (20 + 0x3ff)); sub %i2,1023,%i2 ! expy - 0x3ff; sub %g0,%i2,%i2 add %i2,52,%i2 ! sh = (52 - (expy - 0x3ff); srl %l0,%i2,%l1 ! i0 = (ly >> sh); sll %l1,%i2,%l1 ! (i0 << sh); srl %l0,%i2,%i2 ! i0 = (ly >> sh); cmp %l1,%l0 ! if ((i0 << sh) == ly); and %i2,1,%i2 ! i0 &= 1; sub %g0,%i2,%i2 add %i2,2,%i2 ! i0 = 2 - i0; move %icc,%i2,%o5 ! yisint = i0; ba .neg12 nop .small12: sub %g0,%i2,%i2 cmp %l0,%g0 ! if (ly != 0); add %i2,20,%i2 ! sh = (20 - (expy - 0x3ff); bne .neg12 ! if (ly != 0); or %g0,0,%o5 ! yisint = 0; srl %l1,%i2,%l0 ! i0 = (hy >> sh); sll %l0,%i2,%l0 ! (i0 << sh); srl %l1,%i2,%i2 ! i0 = (hy >> sh); cmp %l0,%l1 ! if ((i0 << sh) == hy); and %i2,1,%i2 ! i0 &= 1; sub %g0,%i2,%i2 add %i2,2,%i2 ! i0 = 2 - i0; move %icc,%i2,%o5 ! yisint = i0; .neg12: cmp %o5,%g0 be .u12 nop .pos12: sll %o5,11,%o5 cmp %l2,MASK_0x000fffff ! y0 = vis_fand(x, MMANT); bg,pt %icc,.cont12 ! y0 = vis_fand(x, MMANT); st %o5,[%fp+%o7] std %f32,[%fp+tmp5]; std %f54,[%fp+tmp6]; ldd [%fp+tmp0_hi],%f32 ldd [%fp+tmp_mant],%f54 or %g0,1074,%o5 fand %f32,%f54,%f32 ! y0 = vis_fand(x, MMANT); sll %o5,20,%o5 fxtod %f32,%f32 ! ax = (double) ((long long *) & y0)[0] std %f32,[%fp+tmp0_hi] ! exp = ((unsigned int*) & ax)[0]; fand %f32,%f54,%f32 ! x = vis_fand(ax, MMANT); ld [%fp+tmp0_hi],%i2 ! exp = ((unsigned int*) & ax)[0]; for %f32,DONE,%f32 ! x = vis_for(x, DONE); std %f32,[%fp+tmp0_hi]; sub %i2,%o5,%l2 ! exp -= (1023 + 51) << 20; and MASK_0x000fffff,%i2,%i4 ! hx &= 0xfffff; ldd [%fp+tmp5],%f32 or MASK_0x3ff00000,%i4,%i4 ! hx |= 0x3ff00000; add %i4,2048,%i4 ! hx += 0x800; ldd [%fp+tmp6],%f54 and %i4,-4096,%i4 ! hx &= 0xfffff000; ba .cont12 st %i4,[%fp+tmp1_hi] ! *(int*)&ax = hx; .align 16 .update13: cmp counter,2 ble,pt %icc,.cont13 sub px,stridex,%o5 ld [%fp+tmp_counter],%l1 stx %o5,[%fp+tmp_px] add py,stridey,%o5 add %l1,counter,counter stx %o5,[%fp+tmp_py] sub counter,2,counter st counter,[%fp+tmp_counter] ba .cont13 or %g0,2,counter .align 16 .update14: cmp counter,1 ble,pt %icc,.cont14 fmovd DONE,%f30 ld [%fp+tmp_counter],%o2 sub px,stridex,%o5 sub %o5,stridex,%o5 stx py,[%fp+tmp_py] add %o2,counter,counter sub %o5,stridex,%o5 stx %o5,[%fp+tmp_px] sub counter,1,counter st counter,[%fp+tmp_counter] ba .cont14 or %g0,1,counter .align 16 .update15: cmp counter,1 ble,pt %icc,.cont15 fmovd DONE,%f30 sub px,stridex,%o5 ld [%fp+tmp_counter],%o2 sub %o5,stridex,%o5 stx py,[%fp+tmp_py] add %o2,counter,counter sub %o5,stridex,%o5 stx %o5,[%fp+tmp_px] sub counter,1,counter st counter,[%fp+tmp_counter] ba .cont15 or %g0,1,counter .align 16 .spec0: lda [py+4]%asi,%o5 ! ld ly; lda [px]%asi,%f16 ! y0 = *px; lda [px+4]%asi,%f17 ! y0 = *px; orcc %l1,%o5,%g0 ! if (hy | ly) != 0; bne,pn %icc,1f sethi %hi(0x7ff00000),%o5 st DONE_HI,[pz] ba .update_point st DONE_LO,[pz+4] 1: cmp %l3,%o5 ! if (hx > 0x7ff00000); bgu,a,pn %icc,6f ! if (hx > 0x7ff00000); fmuld %f16,%f16,%f16 ! *pz = y0 * y0; bne,pt %icc,2f ! if (hx != 0x7ff00000); orcc %l3,%i2,%g0 ! if (hx | lx) != 0; cmp %i2,0 ! if (lx) != 0; bne,pn %icc,5f ! if (lx) != 0; srl %o2,31,%o5 ! sy; st %l3,[pz] ! ((int*)pz)[0] = hx; ba 3f cmp %o5,0 ! if (sy == 0); 2: bne,pt %icc,4f ! if (hx | lx) != 0; srl %l0,31,%o5 ! sx; st %l3,[pz] ! ((int*)pz)[0] = hx; srl %o2,31,%o5 ! sy; cmp %o5,0 ! if (sy == 0); 3: be,pt %icc,.update_point ! if (sy == 0); st %i2,[pz+4] ! ((int*)pz)[1] = lx; ld [pz],%f16 ! *pz; ld [pz+4],%f17 ! *pz; fdivd DONE,%f16,%f16 ! *pz = DONE / *pz; st %f16,[pz] ba .update_point st %f17,[pz+4] 4: cmp %o5,0 ! if (sx == 0); bne,a,pt %icc,1f nop st DONE_HI,[pz] ! *pz = DONE; ba .update_point st DONE_LO,[pz+4] ! *pz = DONE; 1: fdivd DZERO,DZERO,%f16 ! *pz = DZERO / DZERO; st %f16,[pz] ba .update_point st %f17,[pz+4] 5: fmuld %f16,%f16,%f16 ! *pz = y0 * y0; 6: st %f16,[pz] ba .update_point st %f17,[pz+4] .align 16 .spec1: lda [px]%asi,%f14 ! y0 = *px; lda [px+4]%asi,%f15 ! y0 = *px; sethi %hi(0x7ff00000),%o5 lda [py+4]%asi,%i4 ! ld ly; srl %o2,31,%o2 ! sy cmp %l3,%o5 ! if (hx >= 0x7ff00000); bcc,pn %icc,3f nop cmp %l1,%o5 ! if (hy > 0x7ff00000); bgu,a,pt %icc,.spec1_nan_inf ! if (hy > 0x7ff00000); lda [py]%asi,%f16 ! ld y bne,a,pt %icc,1f ! if (hy != 0x7ff00000); cmp %i2,0 ! if (lx != 0); ba 2f ! if (hy == 0x7ff00000); cmp %i4,0 ! if (ly != 0); 1: bne,pt %icc,7f ! if (lx != 0); nop cmp %l3,0 ! if (hx == 0); be,a,pt %icc,6f ! if (hx == 0); st %l3,[pz] ! ((int*)pz)[0] = hx; cmp %l3,MASK_0x3ff00000 ! if (hx == 0x3ff00000); be,a,pn %icc,6f ! if (hx == 0x3ff00000); st %l3,[pz] ! ((int*)pz)[0] = hx; ba 5f cmp %l3,%o5 ! if (hx != 0x7ff00000); 3: bgu,a,pt %icc,.spec1_nan_inf ! if (hx > 0x7ff00000); lda [py]%asi,%f16 ! ld y bne,a,pn %icc,1f ! if (hx != 0x7ff00000); cmp %l1,%o5 ! if (hy > 0x7ff00000); cmp %i2,0 ! if (lx != 0); bne,a,pt %icc,.spec1_nan_inf ! if (lx != 0); lda [py]%asi,%f16 ! ld y cmp %l1,%o5 ! if (hy > 0x7ff00000); 1: bgu,a,pt %icc,.spec1_nan_inf ! if (hy > 0x7ff00000); lda [py]%asi,%f16 ! ld y bne,pn %icc,3f ! if (hy != 0x7ff00000); nop cmp %i4,0 ! if (ly != 0); 2: bne,a,pn %icc,.spec1_nan_inf ! if (ly != 0); lda [py]%asi,%f16 ! ld y cmp %l3,MASK_0x3ff00000 ! if (hx != 0x3ff00000); bne,pn %icc,1f ! if (hx != 0x3ff00000); cmp %i2,0 ! if (lx != 0); bne,pn %icc,1f ! if (lx != 0); nop ld [py],%f16 ! ld y ld [py+4],%f17 ! ld y fzero %f14 fmuld %f16,%f14,%f14 ! *pz = *py * 0.0; st %f14,[pz] ba .update_point st %f15,[pz+4] 1: sub %l3,MASK_0x3ff00000,%o7 ! (hx - 0x3ff00000); srlx %o7,63,%l2 ! (hx - 0x3ff00000) >> 63; cmp %l2,%o2 ! if ((hx < 0x3ff00000) == sy) be,a,pn %icc,1f ! if ((hx < 0x3ff00000) == sy) st %l1,[pz] ! ((int*)pz)[0] = hy; st DZERO_HI,[pz] ! *pz = DZERO; ba .update_point st DZERO_LO,[pz+4] ! *pz = DZERO; 1: ba .update_point st %i4,[pz+4] ! ((int*)pz)[0] = ly; 3: cmp %o0,1086 ! if (expy >= 0x43e); bge,pn %icc,4f ! if (expy >= 0x43e) nop srl %l0,31,%l0 ! sx; cmp %l0,0 ! if (sx == 0); be,pn %icc,2f or %g0,0,%l4 cmp %o0,1076 ! if (expy >= 0x434); bge,pn %icc,2f ! if (expy >= 0x434); or %g0,2,%l4 ! yisint = 2; cmp %o0,1023 ! if (expy < 0x3ff); bl,a,pn %icc,2f ! if (expy < 0x3ff); or %g0,0,%l4 ! yisint = 0; cmp %o0,1043 ! if (expy <= (20 + 0x3ff)); ble,pn %icc,1f sub %o0,1023,%l2 ! (expy - 0x3ff); sub %g0,%l2,%l2 ! 0 - (expy - 0x3ff); add %l2,52,%l2 ! sh = 52 - (expy - 0x3ff); srl %i4,%l2,%o0 ! i0 = ly >> sh; sll %o0,%l2,%l2 ! i0 << sh; cmp %l2,%i4 ! if ((i0 << sh) != ly); bne,a,pn %icc,2f ! if ((i0 << sh) != ly); or %g0,0,%l4 ! yisint = 0; and %o0,1,%o0 ! i0 &= 1; sub %g0,%o0,%o0 ba 2f add %o0,2,%l4 ! yisint = 2 - (i0 & 1); 1: cmp %i4,0 ! if (ly != 0) bne,a,pn %icc,2f ! if (ly != 0) or %g0,0,%l4 ! yisint = 0; sub %o0,1023,%l2 ! (expy - 0x3ff); sub %g0,%l2,%l2 ! 0 - (expy - 0x3ff); add %l2,20,%l2 ! sh = 20 - (expy - 0x3ff); srl %l1,%l2,%o0 ! i0 = hy >> sh; sll %o0,%l2,%l2 ! i0 << sh; cmp %l2,%l1 ! if ((i0 << sh) != hy); bne,a,pn %icc,2f ! if ((i0 << sh) != hy); or %g0,0,%l4 ! yisint = 0; and %o0,1,%o0 ! i0 &= 1; sub %g0,%o0,%o0 add %o0,2,%l4 ! yisint = 2 - (i0 & 1); 2: cmp %o2,0 ! if (sy == 0); sll %l4,31,%l4 ! yisint << 31; be,pt %icc,1f ! if (sy == 0); add %l3,%l4,%l3 ! hx += yisint << 31; or %g0,%l4,%l3 ! hx = yisint << 31; or %g0,0,%i2 ! lx = 0; 1: st %l3,[pz] ! ((int*)pz)[0] = hx; ba .update_point st %i2,[pz+4] ! ((int*)pz)[1] = lx; 4: cmp %i2,0 ! if (lx != 0); bne,pn %icc,7f ! if (lx != 0); nop cmp %l3,%o5 ! if (hx != 0x7ff00000); 5: bne,pn %icc,7f ! if (hx != 0x7ff00000); nop st %l3,[pz] ! ((int*)pz)[0] = hx; 6: cmp %o2,0 ! if (sy == 0); be,pt %icc,.update_point st %i2,[pz+4] ! ((int*)pz)[1] = lx; ld [pz],%f14 ! ld *pz; ld [pz+4],%f15 ! ld *pz; fdivd DONE,%f14,%f14 ! *pz = DONE / *pz; st %f14,[pz] ba .update_point st %f15,[pz+4] 7: sub %l3,MASK_0x3ff00000,%o7 ! hx - 0x3ff00000; srlx %o7,63,%l2 ! (hx - 0x3ff00000) >> 63; cmp %l2,%o2 ! if (hx < 0x3ff00000) == sy); be,a,pn %icc,1f ! if (hx < 0x3ff00000) == sy); ldd [EXPTBL-ind_HUGE],%f14 ! y0 = _HUGE; ldd [EXPTBL-ind_TINY],%f14 ! y0 = _TINY; 1: fmuld %f14,%f14,%f14 ! *pz = y0 * y0 st %f14,[pz] ba .update_point st %f15,[pz+4] .align 16 .spec1_nan_inf: lda [py+4]%asi,%f17 ! ld y fmuld %f14,%f16,%f16 ! *pz = *px * *py st %f16,[pz] ba .update_point st %f17,[pz+4] .align 16 .update_point: add px,stridex,px ba .begin1 add py,stridey,py .align 64 .stridex_zero: sra stridez,0,stridez ld [%i1],%f18 ! y0 = px[0]; ld [%i1+4],%f19 ! y0 = px[0]; sra %i4,0,stridey sethi %hi(0xffc00),MASK_0x000fffff ldd [%l0+80],%f12 ! ld MMANT sllx stridez,3,stridez add MASK_0x000fffff,0x3ff,MASK_0x000fffff ldd [%l0+8],%f56 ! ld DONE sllx stridey,3,stridey ldd [%l0+88],%f14 ! ld MROUND ldd [%l0+96],%f16 ! ld MHI20 cmp %o0,MASK_0x000fffff ! if (exp <= 0xfffff) bg,pt %icc,1f srl %o0,20,%o0 ! exp = (exp >> 20); fxtod %f18,%f18 ! y0 = (double) ((long long *) & y0)[0]; std %f18,[%fp+tmp0_hi] ! exp = ((unsigned int*) & y0)[0]; or %g0,1074,%i2 ld [%fp+tmp0_hi],%o0 ! exp = ((unsigned int*) & y0)[0]; srl %o0,20,%o0 ! exp = (exp >> 20); sub %o0,%i2,%o0 ! exp -= (1023 + 51) << 20; 1: ldd [%l0+24],MHI32 sub %o0,2046,%l5 ! exp = exp - 2046; fand %f18,%f12,%f18 ! x = vis_fand(y0, MMANT); ldd [%l0+48],%f10 ! ld KA1 for %f18,%f56,%f18 ! x = vis_for(x, DONE); ldd [EXPTBL-ind_HI],%f28 ! ld KA1_HI fpadd32 %f18,%f14,%f44 ! ax = vis_fpadd32(x, MROUND); ldd [%l0+32],%f46 ! ld KA5 fand %f44,%f16,%f60 ! ax = vis_fand(ax, MHI20); std %f60,[%fp+tmp0_hi] ! itmp0 = (hx >> 20); faddd %f18,%f60,%f50 ! ux = x + ax; ldd [EXPTBL-ind_LO],%f52 ! ld KA1_LO fsubd %f18,%f60,%f30 ! u = x - ax; ld [%fp+tmp0_hi],%i2 ! itmp0 = (hx >> 20); fdivd %f56,%f50,%f56 ! yd = DONE / ux; fand %f50,MHI32,%f50 ! ux = vis_fand(ux, MHI32); srl %i2,20,%l3 ! itmp0 = (hx >> 20); ldd [%l0+40],%f26 ! ld KA3 srl %i2,8,%i2 ! i = (hx >> 8); add %l5,%l3,%l5 ! exp += itmp0; and %i2,4080,%o3 ! i = i & 0xff0; sll %l5,8,%l3 ! itmp0 = exp << 8; st %l3,[%fp+tmp1_hi] ! (double)itmp0; fsubd %f50,%f60,%f60 ! dtmp0 = (ux - ax); add %o3,8,%i2 ldd [%o3+LOGTBL],%f58 ! y = *(double *)((char*)__mt_constlog2 + i); ldd [%i2+LOGTBL],%f20 ! dtmp0 = *(double *)((char*)__mt_constlog2 + i + 8); ld [%fp+tmp1_hi],%f8 ! (double)itmp0; fitod %f8,%f62 ! (double)itmp0; faddd %f58,%f62,%f22 ! y += (double)itmp0; fsubd %f18,%f60,%f62 ! s_l = (x - dtmp0); fmuld %f30,%f56,%f16 ! s = u * yd; fmuld %f10,%f56,%f8 ! dtmp0 = KA1 * yd; fand %f16,MHI32,%f58 ! s_h = vis_fand(s, MHI32); ldd [%l0+56],HTHRESH fmuld %f16,%f16,%f18 ! y = s * s; ldd [%l0+64],LTHRESH fmuld %f58,%f50,%f60 ! dtmp0 = s_h * ux; ldd [%l0+72],XKB4 fmuld %f28,%f58,%f50 ! yd = KA1_HI * s_h; ldd [EXPTBL-ind_KB1],XKB1 fmuld %f46,%f18,%f56 ! dtmp8 = KA5 * y; ldd [EXPTBL-ind_KB2],XKB2 fmuld %f58,%f62,%f46 ! dtmp1 = s_h * s_l; fsubd %f30,%f60,%f62 ! s_l = u - dtmp0; ldd [EXPTBL-ind_KB3],XKB3 fmuld %f52,%f58,%f10 ! dtmp1 = KA1_LO * s_h; faddd %f22,%f50,%f28 ! m_h = y + yd; ldd [EXPTBL-ind_KB5],XKB5 faddd %f56,%f26,%f58 ! dtmp8 = dtmp8 + KA3; add EXPTBL,8,EXPTBL_P8 fsubd %f62,%f46,%f46 ! s_l -= dtmp1; fsubd %f28,%f22,%f60 ! dtmp2 = m_h - y; st %g0,[%fp+tmp0_lo] ! *((int*)&dtmp0 + 1) = 0; faddd %f20,%f10,%f56 ! dtmp0 += dtmp1; st %g0,[%fp+tmp1_lo] ! *((int*)&dtmp0 + 1) = 0; fmuld %f58,%f18,%f18 ! dtmp8 = dtmp8 * y; st %g0,[%fp+tmp2_lo] ! *((int*)&dtmp0 + 1) = 0; fmuld %f8,%f46,%f62 ! s_l = dtmp0 * s_l; fsubd %f60,%f50,%f10 ! dtmp2 -= yd; fmuld %f18,%f16,%f58 ! s = dtmp8 * s; fsubd %f10,%f62,%f46 ! dtmp2 -= s_l; fsubd %f58,%f46,%f50 ! y = s - dtmp2; faddd %f50,%f56,%f60 ! y += dtmp0; faddd %f60,%f28,%f18 ! dtmp0 = y + m_h; fand %f18,MHI32,s_h ! s_h = vis_fand(dtmp0, MHI32); fsubd s_h,%f28,%f62 ! dtmp0 = (s_h - m_h); fsubd %f60,%f62,yr ! yr = y - dtmp0; .xbegin: ld [%fp+tmp_counter],counter ldx [%fp+tmp_py],py st %g0,[%fp+tmp_counter] .xbegin1: subcc counter,1,counter bneg,pn %icc,.end nop lda [py]0x82,%l2 ! (Y0_3) hy = *py; lda [py]0x82,%f18 ! (Y0_3) yd = *py; lda [py+4]%asi,%f19 ! (Y0_3) yd = *py; sra %l2,20,%l5 ! (Y0_3) expy = hy >> 20; and %l5,0x7ff,%l5 ! (Y0_3) expy &= 0x7ff; cmp %l5,959 ! (Y0_3) if (expy < 0x3fb); bl,pn %icc,.xspec0 ! (Y0_3) if (expy < 0x3fb); nop cmp %l5,1086 ! (Y0_2) if (expy >= 0x43e); bge,pn %icc,.xspec1 ! (Y0_2) if (expy >= 0x43e); nop add py,stridey,py ! y += stridey; fand %f18,MHI32,%f12 ! (Y0_2) s = vis_fand(yd, MHI32); lda [py]0x82,%l5 ! (Y1_2) hy = *py; lda [py]0x82,%f10 ! (Y1_2) yd = *py; lda [py+4]%asi,%f11 ! (Y1_2) yd = *py; sra %l5,20,%l5 ! (Y1_2) expy = hy >> 20; and %l5,0x7ff,%l5 ! (Y1_2) expy &= 0x7ff; cmp %l5,959 ! (Y1_2) if (expy < 0x3fb); add py,stridey,py ! y += stridey; fmuld s_h,%f12,%f50 ! (Y0_2) s = s_h * s; fsubd %f18,%f12,%f56 ! (Y0_2) dtmp0 = (yd - s); fmuld %f18,yr,%f26 ! (Y0_2) dtmp1 = yd * yr; bl,pn %icc,.xupdate0 ! (Y1_2) if (expy < 0x3fb); nop .xcont0: cmp %l5,1086 ! (Y1_2) if (expy >= 0x43e); bge,pn %icc,.xupdate1 ! (Y0_2) if (expy >= 0x43e); nop .xcont1: fmuld %f56,s_h,%f58 ! (Y0_2) dtmp0 *= s_h; fand %f10,MHI32,%f12 ! (Y1_2) s = vis_fand(yd, MHI32); fcmped %fcc0,%f50,HTHRESH ! (Y0_2) if (s > HTHRESH); faddd %f58,%f26,%f48 ! (Y0_2) yd = dtmp0 + dtmp1; lda [py]0x82,%l5 ! (Y2_2) hy = *py; fmovdg %fcc0,HTHRESH,%f50 ! (Y0_2) s = HTHRESH; fmovdg %fcc0,DZERO,%f48 ! (Y0_2) yd = DZERO; fcmped %fcc1,%f50,LTHRESH ! (Y0_2) if (s < LTHRESH); lda [py]0x82,%f14 ! (Y2_2) yd = *py; lda [py+4]%asi,%f15 ! (Y2_2) yd = *py; sra %l5,20,%l5 ! (Y2_2) expy = hy >> 20; fmovdl %fcc1,DZERO,%f48 ! (Y0_2) yd = DZERO; add py,stridey,py ! y += stridey; and %l5,0x7ff,%l5 ! (Y2_2) expy &= 0x7ff; fmovdl %fcc1,LTHRESH,%f50 ! (Y0_2) s = LTHRESH; cmp %l5,959 ! (Y2_2) if (expy < 0x3fb); fmuld s_h,%f12,%f16 ! (Y1_2) s = s_h * s; bl,pn %icc,.xupdate2 ! (Y2_2) if (expy < 0x3fb); fsubd %f10,%f12,%f56 ! (Y1_2) dtmp0 = (yd - s); .xcont2: cmp %l5,1086 ! (Y2_2) if (expy >= 0x43e); fmuld %f10,yr,%f8 ! (Y1_2) dtmp1 = yd * yr; faddd %f50,%f48,%f28 ! (Y0_2) dtmp0 = (s + yd); lda [py]0x82,%l5 ! (Y0_3) hy = *py; bge,pn %icc,.xupdate3 ! (Y2_2) if (expy >= 0x43e); nop .xcont3: fmuld %f56,s_h,%f58 ! (Y1_2) dtmp0 *= s_h; fand %f14,MHI32,%f44 ! (Y2_2) s = vis_fand(yd, MHI32); fcmped %fcc0,%f16,HTHRESH ! (Y1_2) if (s > HTHRESH); fdtoi %f28,%f3 ! (Y0_2) u = (double)(int)dtmp0; st %f3,[%fp+tmp3] ! (Y0_2) ind = (int)dtmp0; faddd %f58,%f8,%f10 ! (Y1_2) yd = dtmp0 + dtmp1; lda [py]0x82,%f18 ! (Y0_3) yd = *py; lda [py+4]%asi,%f19 ! (Y0_3) yd = *py; fmovdg %fcc0,HTHRESH,%f16 ! (Y1_2) s = HTHRESH; fitod %f3,%f58 ! (Y0_2) u = (double)(int)dtmp0; fmovdg %fcc0,DZERO,%f10 ! (Y1_2) yd = DZERO; sra %l5,20,%l5 ! (Y0_3) expy = hy >> 20; fcmped %fcc1,%f16,LTHRESH ! (Y1_2) if (s < LTHRESH); and %l5,0x7ff,%l5 ! (Y0_3) expy &= 0x7ff; fsubd %f50,%f58,%f54 ! (Y0_2) y = s - u; cmp %l5,959 ! (Y0_3) if (expy < 0x3fb); bl,pn %icc,.xupdate4 ! (Y0_3) if (expy < 0x3fb); nop .xcont4: fmovdl %fcc1,DZERO,%f10 ! (Y1_2) yd = DZERO; fmovdl %fcc1,LTHRESH,%f16 ! (Y1_2) s = LTHRESH; faddd %f54,%f48,%f54 ! (Y0_2) y = y + yd; ld [%fp+tmp3],%o2 ! (Y0_2) ind = (int)dtmp0; fsubd %f14,%f44,%f50 ! (Y2_1) dtmp0 = (yd - s); cmp %l5,1086 ! (Y0_2) if (expy >= 0x43e); fmuld s_h,%f44,%f44 ! (Y2_1) s = s_h * s; bge,pn %icc,.xupdate5 ! (Y0_2) if (expy >= 0x43e); faddd %f16,%f10,%f22 ! (Y1_1) dtmp0 = (s + yd); .xcont5: sra %o2,8,%o0 ! (Y0_1) ind >>= 8; add py,stridey,py ! y += stridey; fmuld %f14,yr,%f20 ! (Y2_1) dtmp1 = yd * yr; add %o0,1021,%i1 ! (Y0_1) eflag = (ind + 1021); fmuld XKB5,%f54,%f48 ! (Y0_1) dtmp0 = XKB5 * y; sub %g0,%o0,%o3 ! (Y0_1) gflag = (1022 - ind); fmuld %f50,s_h,%f52 ! (Y2_1) dtmp0 *= s_h; fand %f18,MHI32,%f12 ! (Y0_2) s = vis_fand(yd, MHI32); sra %i1,31,%o1 ! (Y0_1) eflag = eflag >> 31; add %o3,1022,%l0 ! (Y0_1) gflag = (1022 - ind); fcmped %fcc0,%f44,HTHRESH ! (Y2_1) if (s > HTHRESH); sra %l0,31,%o4 ! (Y0_1) gflag = gflag >> 31; and %o1,54,%i4 ! (Y0_1) itmp0 = 54 & eflag; fdtoi %f22,%f4 ! (Y1_1) u = (double)(int)dtmp0; add %o0,%i4,%i2 ! (Y0_1) ind = ind + itmp0; and %o4,52,%l3 ! (Y0_1) itmp1 = 52 & gflag; st %f4,[%fp+tmp4] ! (Y1_1) ind = (int)dtmp0; faddd %f48,XKB4,%f60 ! (Y0_1) dtmp1 = dtmp0 + XKB4; sub %i2,%l3,%l2 ! (Y0_1) ind = ind - itmp1; sub %o1,%o4,%o4 ! (Y0_1) ind = eflag - gflag; faddd %f52,%f20,%f62 ! (Y2_1) yd = dtmp0 + dtmp1; sll %l2,20,%o3 ! (Y0_1) ind <<= 20; lda [py]0x82,%l5 ! (Y1_2) hy = *py; fmovdg %fcc0,HTHRESH,%f44 ! (Y2_1) s = HTHRESH; st %o3,[%fp+tmp0_hi] ! (Y0_1) *(int*)&dtmp0 = ind; fitod %f4,%f48 ! (Y1_1) u = (double)(int)dtmp0; fmuld %f60,%f54,%f60 ! (Y0_1) dtmp2 = dtmp1 * y; lda [py]0x82,%f20 ! (Y1_2) yd = *py; lda [py+4]%asi,%f21 ! (Y1_2) yd = *py; fmovdg %fcc0,DZERO,%f62 ! (Y2_1) yd = DZERO; fcmped %fcc1,%f44,LTHRESH ! (Y2_1) if (s < LTHRESH); fsubd %f16,%f48,%f50 ! (Y1_1) y = s - u; faddd %f60,XKB3,%f60 ! (Y0_1) dtmp3 = dtmp2 + XKB3; sra %l5,20,%l5 ! (Y1_2) expy = hy >> 20; fmovdl %fcc1,DZERO,%f62 ! (Y2_1) yd = DZERO; and %l5,0x7ff,%l5 ! (Y1_2) expy &= 0x7ff; fmovdl %fcc1,LTHRESH,%f44 ! (Y2_1) s = LTHRESH; cmp %l5,959 ! (Y1_2) if (expy < 0x3fb); fmuld %f60,%f54,%f48 ! (Y0_1) dtmp4 = dtmp3 * y; faddd %f50,%f10,%f52 ! (Y1_1) y = y + yd; ld [%fp+tmp4],%o1 ! (Y1_1) ind = (int)dtmp0; add py,stridey,py ! y += stridey; fmuld s_h,%f12,%f50 ! (Y0_2) s = s_h * s; fsubd %f18,%f12,%f56 ! (Y0_2) dtmp0 = (yd - s); fmuld %f18,yr,%f26 ! (Y0_2) dtmp1 = yd * yr; bl,pn %icc,.xupdate6 ! (Y1_2) if (expy < 0x3fb); faddd %f44,%f62,%f28 ! (Y2_1) dtmp0 = (s + yd); .xcont6: sra %o1,8,%o3 ! (Y1_1) ind >>= 8; cmp %l5,1086 ! (Y1_2) if (expy >= 0x43e); fmuld XKB5,%f52,%f22 ! (Y1_1) dtmp0 = XKB5 * y; faddd %f48,XKB2,%f14 ! (Y0_1) dtmp5 = dtmp4 + XKB2; add %o3,1021,%o0 ! (Y1_1) eflag = (ind + 1021); bge,pn %icc,.xupdate7 ! (Y0_2) if (expy >= 0x43e); nop .xcont7: sub %g0,%o3,%i2 ! (Y1_1) gflag = (1022 - ind); fmuld %f56,s_h,%f58 ! (Y0_2) dtmp0 *= s_h; fand %f20,MHI32,%f12 ! (Y1_2) s = vis_fand(yd, MHI32); sra %o0,31,%l3 ! (Y1_1) eflag = eflag >> 31; add %i2,1022,%l2 ! (Y1_1) gflag = (1022 - ind); fcmped %fcc0,%f50,HTHRESH ! (Y0_2) if (s > HTHRESH); sra %l2,31,%o7 ! (Y1_1) gflag = gflag >> 31; and %l3,54,%i1 ! (Y1_1) itmp0 = 54 & eflag; fdtoi %f28,%f3 ! (Y2_1) u = (double)(int)dtmp0; add %o3,%i1,%l0 ! (Y1_1) ind = ind + itmp0; and %o7,52,%l1 ! (Y1_1) itmp1 = 52 & gflag; st %f3,[%fp+ind_buf] ! (Y2_1) ind = (int)dtmp0; faddd %f22,XKB4,%f60 ! (Y1_1) dtmp1 = dtmp0 + XKB4; sub %l0,%l1,%i4 ! (Y1_1) ind = ind - itmp1; sub %l3,%o7,%o7 ! (Y1_1) ind = eflag - gflag; faddd %f58,%f26,%f48 ! (Y0_2) yd = dtmp0 + dtmp1; sll %i4,20,%i2 ! (Y1_1) ind <<= 20; lda [py]0x82,%l5 ! (Y2_2) hy = *py; fmovdg %fcc0,HTHRESH,%f50 ! (Y0_2) s = HTHRESH; st %i2,[%fp+tmp1_hi] ! (Y1_1) *(int*)&dtmp0 = ind; fitod %f3,%f18 ! (Y2_1) u = (double)(int)dtmp0; fmuld %f60,%f52,%f60 ! (Y1_1) dtmp2 = dtmp1 * y; fmuld %f14,%f54,%f56 ! (Y0_1) dtmp6 = dtmp5 * y; fmovdg %fcc0,DZERO,%f48 ! (Y0_2) yd = DZERO; fcmped %fcc1,%f50,LTHRESH ! (Y0_2) if (s < LTHRESH); lda [py]0x82,%f26 ! (Y2_2) yd = *py; lda [py+4]%asi,%f27 ! (Y2_2) yd = *py; fsubd %f44,%f18,%f18 ! (Y2_1) y = s - u; faddd %f60,XKB3,%f44 ! (Y1_1) dtmp3 = dtmp2 + XKB3; sra %l5,20,%l5 ! (Y2_2) expy = hy >> 20; and %o2,255,%o2 ! (Y0_1) i = ind & 0xff; faddd %f56,XKB1,%f58 ! (Y0_1) dtmp7 = dtmp6 + XKB1; sll %o2,4,%l2 ! (Y0_1) i = i << 4; fmovdl %fcc1,DZERO,%f48 ! (Y0_2) yd = DZERO; add py,stridey,py ! y += stridey; and %l5,0x7ff,%l5 ! (Y2_2) expy &= 0x7ff; fmovdl %fcc1,LTHRESH,%f50 ! (Y0_2) s = LTHRESH; cmp %l5,959 ! (Y2_2) if (expy < 0x3fb); ldd [EXPTBL+%l2],%f22 ! (Y0_1) u = *(double*)((char*)__mt_constexp2 + i); faddd %f18,%f62,%f18 ! (Y2_1) y = y + yd; fmuld %f44,%f52,%f62 ! (Y1_1) dtmp4 = dtmp3 * y; ld [%fp+ind_buf],%l1 ! (Y2_1) ind = (int)dtmp0; fmuld %f58,%f54,%f54 ! (Y0_1) y = dtmp7 * y; fmuld s_h,%f12,%f16 ! (Y1_2) s = s_h * s; bl,pn %icc,.xupdate8 ! (Y2_2) if (expy < 0x3fb); fsubd %f20,%f12,%f56 ! (Y1_2) dtmp0 = (yd - s); .xcont8: cmp %l5,1086 ! (Y2_2) if (expy >= 0x43e); fmuld %f20,yr,%f8 ! (Y1_2) dtmp1 = yd * yr; faddd %f50,%f48,%f28 ! (Y0_2) dtmp0 = (s + yd); sra %l1,8,%o2 ! (Y2_1) ind >>= 8; lda [py]0x82,%l5 ! (Y0_3) hy = *py; fmuld XKB5,%f18,%f20 ! (Y2_1) dtmp0 = XKB5 * y; faddd %f62,XKB2,%f12 ! (Y1_1) dtmp5 = dtmp4 + XKB2; add %o2,1021,%l0 ! (Y2_1) eflag = (ind + 1021); bge,pn %icc,.xupdate9 ! (Y2_2) if (expy >= 0x43e); nop .xcont9: sub %g0,%o2,%l3 ! (Y2_1) gflag = (1022 - ind); ldd [EXPTBL_P8+%l2],%f14 ! (Y0_1) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8); fmuld %f56,s_h,%f58 ! (Y1_2) dtmp0 *= s_h; fand %f26,MHI32,%f44 ! (Y2_2) s = vis_fand(yd, MHI32); sra %l0,31,%o0 ! (Y2_1) eflag = eflag >> 31; add %l3,1022,%i4 ! (Y2_1) gflag = (1022 - ind); fmuld %f22,%f54,%f56 ! (Y0_1) dtmp1 = u * y; fcmped %fcc0,%f16,HTHRESH ! (Y1_2) if (s > HTHRESH); sra %i4,31,%o5 ! (Y2_1) gflag = gflag >> 31; and %o0,54,%i2 ! (Y2_1) itmp0 = 54 & eflag; fdtoi %f28,%f3 ! (Y0_2) u = (double)(int)dtmp0; add %o2,%i2,%i1 ! (Y2_1) ind = ind + itmp0; and %o5,52,%l2 ! (Y2_1) itmp1 = 52 & gflag; st %f3,[%fp+tmp3] ! (Y0_2) ind = (int)dtmp0; faddd %f20,XKB4,%f60 ! (Y2_1) dtmp1 = dtmp0 + XKB4; sub %i1,%l2,%o3 ! (Y2_1) ind = ind - itmp1; sub %o0,%o5,%o5 ! (Y2_1) ind = eflag - gflag; faddd %f58,%f8,%f10 ! (Y1_2) yd = dtmp0 + dtmp1; sll %o3,20,%l3 ! (Y2_1) ind <<= 20; lda [py]0x82,%f28 ! (Y0_3) yd = *py; lda [py+4]%asi,%f29 ! (Y0_3) yd = *py; fmovdg %fcc0,HTHRESH,%f16 ! (Y1_2) s = HTHRESH; st %l3,[%fp+tmp2_hi] ! (Y2_1) *(int*)&dtmp0 = ind; fitod %f3,%f58 ! (Y0_2) u = (double)(int)dtmp0; fmuld %f60,%f18,%f60 ! (Y2_1) dtmp2 = dtmp1 * y; faddd %f14,%f56,%f20 ! (Y0_1) dtmp2 = dtmp0 + dtmp1; fmuld %f12,%f52,%f56 ! (Y1_1) dtmp6 = dtmp5 * y; fmovdg %fcc0,DZERO,%f10 ! (Y1_2) yd = DZERO; sra %l5,20,%l5 ! (Y0_3) expy = hy >> 20; fcmped %fcc1,%f16,LTHRESH ! (Y1_2) if (s < LTHRESH); and %l5,0x7ff,%l5 ! (Y0_3) expy &= 0x7ff; fsubd %f50,%f58,%f54 ! (Y0_2) y = s - u; cmp %l5,959 ! (Y0_3) if (expy < 0x3fb); faddd %f60,XKB3,%f60 ! (Y2_1) dtmp3 = dtmp2 + XKB3; and %o1,255,%o1 ! (Y1_1) i = ind & 0xff; bl,pn %icc,.xupdate10 ! (Y0_3) if (expy < 0x3fb); faddd %f56,XKB1,%f8 ! (Y1_1) dtmp7 = dtmp6 + XKB1; .xcont10: sll %o1,4,%l0 ! (Y1_1) i = i << 4; fmovdl %fcc1,DZERO,%f10 ! (Y1_2) yd = DZERO; nop ba 1f fmovdl %fcc1,LTHRESH,%f16 ! (Y1_2) s = LTHRESH; .align 16 1: subcc counter,2,counter ldd [EXPTBL+%l0],%f56 ! (Y1_1) u = *(double*)((char*)__mt_constexp2 + i); fmuld %f60,%f18,%f58 ! (Y2_1) dtmp4 = dtmp3 * y; faddd %f54,%f48,%f54 ! (Y0_2) y = y + yd; fmuld %f8,%f52,%f60 ! (Y1_1) y = dtmp7 * y; ld [%fp+tmp3],%o2 ! (Y0_2) ind = (int)dtmp0; bneg,pn %icc,.xtail faddd %f20,%f22,%f12 ! (Y0_1) u = dtmp2 + u; .xmain_loop: cmp %l5,1086 ! (Y0_2) if (expy >= 0x43e); add %o4,513,%o4 ! (Y0_0) ind += 513; ldd [%fp+tmp0_hi],%f52 ! (Y0_0) *(int*)&dtmp0 = ind; fsubd %f26,%f44,%f50 ! (Y2_1) dtmp0 = (yd - s); fmuld s_h,%f44,%f44 ! (Y2_1) s = s_h * s; sra %o2,8,%o0 ! (Y0_1) ind >>= 8; bge,pn %icc,.xupdate11 ! (Y0_2) if (expy >= 0x43e); faddd %f16,%f10,%f22 ! (Y1_1) dtmp0 = (s + yd); .xcont11: sll %o4,3,%l2 ! (Y0_0) ind *= 8; add py,stridey,py ! y += stridey; fmuld %f26,yr,%f20 ! (Y2_1) dtmp1 = yd * yr; faddd %f58,XKB2,%f14 ! (Y2_0) dtmp5 = dtmp4 + XKB2; add %o0,1021,%i1 ! (Y0_1) eflag = (ind + 1021); ldd [%l2+EXPTBL],%f62 ! (Y0_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind); fmuld XKB5,%f54,%f48 ! (Y0_1) dtmp0 = XKB5 * y; fpadd32 %f12,%f52,%f58 ! (Y0_0) u = vis_fpadd32(u, dtmp0); sub %g0,%o0,%o3 ! (Y0_1) gflag = (1022 - ind); ldd [EXPTBL_P8+%l0],%f8 ! (Y1_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8); fand %f28,MHI32,%f12 ! (Y0_2) s = vis_fand(yd, MHI32); fmuld %f50,s_h,%f52 ! (Y2_1) dtmp0 *= s_h; sra %i1,31,%o1 ! (Y0_1) eflag = eflag >> 31; add %o3,1022,%l0 ! (Y0_1) gflag = (1022 - ind); fmuld %f56,%f60,%f26 ! (Y1_0) dtmp1 = u * y; fcmped %fcc0,%f44,HTHRESH ! (Y2_1) if (s > HTHRESH); sra %l0,31,%o4 ! (Y0_1) gflag = gflag >> 31; and %o1,54,%i4 ! (Y0_1) itmp0 = 54 & eflag; fmuld %f58,%f62,%f6 ! (Y0_0) dtmp1 = u * dtmp1; fdtoi %f22,%f4 ! (Y1_1) u = (double)(int)dtmp0; add %o0,%i4,%i2 ! (Y0_1) ind = ind + itmp0; and %o4,52,%l3 ! (Y0_1) itmp1 = 52 & gflag; st %f4,[%fp+tmp4] ! (Y1_1) ind = (int)dtmp0; faddd %f48,XKB4,%f60 ! (Y0_1) dtmp1 = dtmp0 + XKB4; sub %i2,%l3,%l2 ! (Y0_1) ind = ind - itmp1; sub %o1,%o4,%o4 ! (Y0_1) ind = eflag - gflag; st %f6,[pz] ! (Y0_0) write into memory faddd %f52,%f20,%f62 ! (Y2_1) yd = dtmp0 + dtmp1; sll %l2,20,%o3 ! (Y0_1) ind <<= 20; nop st %o3,[%fp+tmp0_hi] ! (Y0_1) *(int*)&dtmp0 = ind; fmovdg %fcc0,HTHRESH,%f44 ! (Y2_1) s = HTHRESH; lda [py]0x82,%l5 ! (Y1_2) hy = *py; nop fitod %f4,%f48 ! (Y1_1) u = (double)(int)dtmp0; fmuld %f60,%f54,%f60 ! (Y0_1) dtmp2 = dtmp1 * y; nop st %f7,[pz+4] ! (Y0_0) write into memory faddd %f8,%f26,%f26 ! (Y1_0) dtmp2 = dtmp0 + dtmp1; lda [py]0x82,%f8 ! (Y1_2) yd = *py; nop fmuld %f14,%f18,%f52 ! (Y2_0) dtmp6 = dtmp5 * y; fmovdg %fcc0,DZERO,%f62 ! (Y2_1) yd = DZERO; lda [py+4]%asi,%f9 ! (Y1_2) yd = *py; add pz,stridez,pz ! z += stridez; fcmped %fcc1,%f44,LTHRESH ! (Y2_1) if (s < LTHRESH); fsubd %f16,%f48,%f50 ! (Y1_1) y = s - u; faddd %f60,XKB3,%f60 ! (Y0_1) dtmp3 = dtmp2 + XKB3; sra %l5,20,%l5 ! (Y1_2) expy = hy >> 20; and %l1,255,%l1 ! (Y2_0) i = ind & 0xff; faddd %f52,XKB1,%f58 ! (Y2_0) dtmp7 = dtmp6 + XKB1; sll %l1,4,%l0 ! (Y2_0) i = i << 4; fmovdl %fcc1,DZERO,%f62 ! (Y2_1) yd = DZERO; and %l5,0x7ff,%l5 ! (Y1_2) expy &= 0x7ff; nop fmovdl %fcc1,LTHRESH,%f44 ! (Y2_1) s = LTHRESH; cmp %l5,959 ! (Y1_2) if (expy < 0x3fb); ldd [EXPTBL+%l0],%f20 ! (Y2_0) u = *(double*)((char*)__mt_constexp2 + i); fmuld %f60,%f54,%f48 ! (Y0_1) dtmp4 = dtmp3 * y; faddd %f50,%f10,%f52 ! (Y1_1) y = y + yd; add %o7,513,%o7 ! (Y1_0) ind += 513; ld [%fp+tmp4],%o1 ! (Y1_1) ind = (int)dtmp0; fmuld %f58,%f18,%f18 ! (Y2_0) y = dtmp7 * y; faddd %f26,%f56,%f58 ! (Y1_0) u = dtmp2 + u; add py,stridey,py ! y += stridey; ldd [%fp+tmp1_hi],%f60 ! (Y1_0) *(int*)&dtmp0 = ind; fmuld s_h,%f12,%f50 ! (Y0_2) s = s_h * s; fsubd %f28,%f12,%f56 ! (Y0_2) dtmp0 = (yd - s); sll %o7,3,%l3 ! (Y1_0) ind *= 8; fmuld %f28,yr,%f26 ! (Y0_2) dtmp1 = yd * yr; bl,pn %icc,.xupdate12 ! (Y1_2) if (expy < 0x3fb); faddd %f44,%f62,%f28 ! (Y2_1) dtmp0 = (s + yd); .xcont12: sra %o1,8,%o3 ! (Y1_1) ind >>= 8; cmp %l5,1086 ! (Y1_2) if (expy >= 0x43e); fmuld XKB5,%f52,%f22 ! (Y1_1) dtmp0 = XKB5 * y; faddd %f48,XKB2,%f14 ! (Y0_1) dtmp5 = dtmp4 + XKB2; add %o3,1021,%o0 ! (Y1_1) eflag = (ind + 1021); ldd [%l3+EXPTBL],%f48 ! (Y1_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind); bge,pn %icc,.xupdate13 ! (Y1_2) if (expy >= 0x43e); fpadd32 %f58,%f60,%f60 ! (Y1_0) u = vis_fpadd32(u, dtmp0); .xcont13: sub %g0,%o3,%i2 ! (Y1_1) gflag = (1022 - ind); ldd [EXPTBL_P8+%l0],%f16 ! (Y2_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8); fmuld %f56,s_h,%f58 ! (Y0_2) dtmp0 *= s_h; fand %f8,MHI32,%f12 ! (Y1_2) s = vis_fand(yd, MHI32); sra %o0,31,%l3 ! (Y1_1) eflag = eflag >> 31; add %i2,1022,%l2 ! (Y1_1) gflag = (1022 - ind); fmuld %f20,%f18,%f56 ! (Y2_0) dtmp1 = u * y; fcmped %fcc0,%f50,HTHRESH ! (Y0_2) if (s > HTHRESH); sra %l2,31,%o7 ! (Y1_1) gflag = gflag >> 31; and %l3,54,%i1 ! (Y1_1) itmp0 = 54 & eflag; fmuld %f60,%f48,%f18 ! (Y1_0) dtmp1 = u * dtmp1; fdtoi %f28,%f3 ! (Y2_1) u = (double)(int)dtmp0; add %o3,%i1,%l0 ! (Y1_1) ind = ind + itmp0; and %o7,52,%l1 ! (Y1_1) itmp1 = 52 & gflag; st %f3,[%fp+ind_buf] ! (Y2_1) ind = (int)dtmp0; faddd %f22,XKB4,%f60 ! (Y1_1) dtmp1 = dtmp0 + XKB4; sub %l0,%l1,%i4 ! (Y1_1) ind = ind - itmp1; sub %l3,%o7,%o7 ! (Y1_1) ind = eflag - gflag; st %f18,[pz] ! (Y1_0) write into memory faddd %f58,%f26,%f48 ! (Y0_2) yd = dtmp0 + dtmp1; sll %i4,20,%i2 ! (Y1_1) ind <<= 20; lda [py]0x82,%l5 ! (Y2_2) hy = *py; fmovdg %fcc0,HTHRESH,%f50 ! (Y0_2) s = HTHRESH; st %i2,[%fp+tmp1_hi] ! (Y1_1) *(int*)&dtmp0 = ind; fitod %f3,%f10 ! (Y2_1) u = (double)(int)dtmp0; fmuld %f60,%f52,%f60 ! (Y1_1) dtmp2 = dtmp1 * y; st %f19,[pz+4] ! (Y1_0) write into memory faddd %f16,%f56,%f28 ! (Y2_0) dtmp2 = dtmp0 + dtmp1; fmuld %f14,%f54,%f56 ! (Y0_1) dtmp6 = dtmp5 * y; fmovdg %fcc0,DZERO,%f48 ! (Y0_2) yd = DZERO; add pz,stridez,pz ! z += stridez; fcmped %fcc1,%f50,LTHRESH ! (Y0_2) if (s < LTHRESH); lda [py]0x82,%f26 ! (Y2_2) yd = *py; fsubd %f44,%f10,%f18 ! (Y2_1) y = s - u; lda [py+4]%asi,%f27 ! (Y2_2) yd = *py; faddd %f60,XKB3,%f44 ! (Y1_1) dtmp3 = dtmp2 + XKB3; sra %l5,20,%l5 ! (Y2_2) expy = hy >> 20; and %o2,255,%o2 ! (Y0_1) i = ind & 0xff; faddd %f56,XKB1,%f58 ! (Y0_1) dtmp7 = dtmp6 + XKB1; sll %o2,4,%l2 ! (Y0_1) i = i << 4; fmovdl %fcc1,DZERO,%f48 ! (Y0_2) yd = DZERO; add py,stridey,py ! y += stridey; and %l5,0x7ff,%l5 ! (Y2_2) expy &= 0x7ff; fmovdl %fcc1,LTHRESH,%f50 ! (Y0_2) s = LTHRESH; cmp %l5,959 ! (Y2_2) if (expy < 0x3fb); ldd [EXPTBL+%l2],%f22 ! (Y0_1) u = *(double*)((char*)__mt_constexp2 + i); faddd %f18,%f62,%f18 ! (Y2_1) y = y + yd; fmuld %f44,%f52,%f62 ! (Y1_1) dtmp4 = dtmp3 * y; add %o5,513,%o5 ! (Y2_0) ind += 513; ld [%fp+ind_buf],%l1 ! (Y2_1) ind = (int)dtmp0; fmuld %f58,%f54,%f54 ! (Y0_1) y = dtmp7 * y; faddd %f28,%f20,%f58 ! (Y2_0) u = dtmp2 + u; ldd [%fp+tmp2_hi],%f60 ! (Y2_0) *(int*)&dtmp0 = ind; fmuld s_h,%f12,%f16 ! (Y1_2) s = s_h * s; bl,pn %icc,.xupdate14 ! (Y2_2) if (expy < 0x3fb); fsubd %f8,%f12,%f56 ! (Y1_2) dtmp0 = (yd - s); .xcont14: sll %o5,3,%i1 ! (Y2_0) ind *= 8; cmp %l5,1086 ! (Y2_2) if (expy >= 0x43e); fmuld %f8,yr,%f8 ! (Y1_2) dtmp1 = yd * yr; faddd %f50,%f48,%f28 ! (Y0_2) dtmp0 = (s + yd); sra %l1,8,%o2 ! (Y2_1) ind >>= 8; lda [py]0x82,%l5 ! (Y0_3) hy = *py; fmuld XKB5,%f18,%f20 ! (Y2_1) dtmp0 = XKB5 * y; faddd %f62,XKB2,%f12 ! (Y1_1) dtmp5 = dtmp4 + XKB2; add %o2,1021,%l0 ! (Y2_1) eflag = (ind + 1021); ldd [%i1+EXPTBL],%f62 ! (Y2_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind); bge,pn %icc,.xupdate15 ! (Y2_2) if (expy >= 0x43e); fpadd32 %f58,%f60,%f60 ! (Y2_0) u = vis_fpadd32(u, dtmp0); .xcont15: sub %g0,%o2,%l3 ! (Y2_1) gflag = (1022 - ind); ldd [EXPTBL_P8+%l2],%f14 ! (Y0_1) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8); fmuld %f56,s_h,%f58 ! (Y1_2) dtmp0 *= s_h; fand %f26,MHI32,%f44 ! (Y2_2) s = vis_fand(yd, MHI32); sra %l0,31,%o0 ! (Y2_1) eflag = eflag >> 31; add %l3,1022,%i4 ! (Y2_1) gflag = (1022 - ind); fmuld %f22,%f54,%f56 ! (Y0_1) dtmp1 = u * y; fcmped %fcc0,%f16,HTHRESH ! (Y1_2) if (s > HTHRESH); sra %i4,31,%o5 ! (Y2_1) gflag = gflag >> 31; and %o0,54,%i2 ! (Y2_1) itmp0 = 54 & eflag; fmuld %f60,%f62,%f6 ! (Y2_0) dtmp1 = u * dtmp1; fdtoi %f28,%f3 ! (Y0_2) u = (double)(int)dtmp0; add %o2,%i2,%i1 ! (Y2_1) ind = ind + itmp0; and %o5,52,%l2 ! (Y2_1) itmp1 = 52 & gflag; st %f3,[%fp+tmp3] ! (Y0_2) ind = (int)dtmp0; faddd %f20,XKB4,%f60 ! (Y2_1) dtmp1 = dtmp0 + XKB4; sub %i1,%l2,%o3 ! (Y2_1) ind = ind - itmp1; sub %o0,%o5,%o5 ! (Y2_1) ind = eflag - gflag; st %f6,[pz] ! (Y2_0) write into memory faddd %f58,%f8,%f10 ! (Y1_2) yd = dtmp0 + dtmp1; sll %o3,20,%l3 ! (Y2_1) ind <<= 20; lda [py]0x82,%f28 ! (Y0_3) yd = *py; fmovdg %fcc0,HTHRESH,%f16 ! (Y1_2) s = HTHRESH; lda [py+4]%asi,%f29 ! (Y0_3) yd = *py; fitod %f3,%f58 ! (Y0_2) u = (double)(int)dtmp0; fmuld %f60,%f18,%f60 ! (Y2_1) dtmp2 = dtmp1 * y; st %l3,[%fp+tmp2_hi] ! (Y2_1) *(int*)&dtmp0 = ind; faddd %f14,%f56,%f20 ! (Y0_1) dtmp2 = dtmp0 + dtmp1; fmuld %f12,%f52,%f56 ! (Y1_1) dtmp6 = dtmp5 * y; st %f7,[pz+4] ! (Y2_0) write into memory fmovdg %fcc0,DZERO,%f10 ! (Y1_2) yd = DZERO; sra %l5,20,%l5 ! (Y0_3) expy = hy >> 20; add pz,stridez,pz ! z += stridez; fcmped %fcc1,%f16,LTHRESH ! (Y1_2) if (s < LTHRESH); and %l5,0x7ff,%l5 ! (Y0_3) expy &= 0x7ff; fsubd %f50,%f58,%f54 ! (Y0_2) y = s - u; cmp %l5,959 ! (Y0_3) if (expy < 0x3fb); faddd %f60,XKB3,%f60 ! (Y2_1) dtmp3 = dtmp2 + XKB3; and %o1,255,%o1 ! (Y1_1) i = ind & 0xff; bl,pn %icc,.xupdate16 ! (Y0_3) if (expy < 0x3fb); faddd %f56,XKB1,%f8 ! (Y1_1) dtmp7 = dtmp6 + XKB1; .xcont16: sll %o1,4,%l0 ! (Y1_1) i = i << 4; fmovdl %fcc1,DZERO,%f10 ! (Y1_2) yd = DZERO; subcc counter,3,counter ! update cycle counter fmovdl %fcc1,LTHRESH,%f16 ! (Y1_2) s = LTHRESH; ldd [EXPTBL+%l0],%f56 ! (Y1_1) u = *(double*)((char*)__mt_constexp2 + i); fmuld %f60,%f18,%f58 ! (Y2_1) dtmp4 = dtmp3 * y; faddd %f54,%f48,%f54 ! (Y0_2) y = y + yd; fmuld %f8,%f52,%f60 ! (Y1_1) y = dtmp7 * y; ld [%fp+tmp3],%o2 ! (Y0_2) ind = (int)dtmp0; bpos,pt %icc,.xmain_loop faddd %f20,%f22,%f12 ! (Y0_1) u = dtmp2 + u; .xtail: addcc counter,2,counter ldd [%fp+tmp0_hi],%f52 ! (Y0_0) *(int*)&dtmp0 = ind; add %o4,513,%o4 ! (Y0_0) ind += 513; bneg,pn %icc,.xend_loop nop sll %o4,3,%l2 ! (Y0_0) ind *= 8; subcc counter,1,counter ldd [%l2+EXPTBL],%f62 ! (Y0_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind); fpadd32 %f12,%f52,%f58 ! (Y0_0) u = vis_fpadd32(u, dtmp0); ldd [EXPTBL_P8+%l0],%f8 ! (Y1_0) dtmp0 = *(double*)((char*)__mt_constexp2 + i + 8); fmuld %f56,%f60,%f26 ! (Y1_0) dtmp1 = u * y; fmuld %f58,%f62,%f6 ! (Y0_0) dtmp1 = u * dtmp1; st %f6,[pz] ! (Y0_0) write into memory st %f7,[pz+4] ! (Y0_0) write into memory bneg,pn %icc,.xend_loop add pz,stridez,pz ! z += stridez; faddd %f8,%f26,%f26 ! (Y1_0) dtmp2 = dtmp0 + dtmp1; add %o7,513,%o7 ! (Y1_0) ind += 513; faddd %f26,%f56,%f58 ! (Y1_0) u = dtmp2 + u; ldd [%fp+tmp1_hi],%f60 ! (Y1_0) *(int*)&dtmp0 = ind; sll %o7,3,%l3 ! (Y1_0) ind *= 8; ldd [%l3+EXPTBL],%f48 ! (Y1_0) dtmp1 = (*(double*)((char*)__mt_constexp2 + ind); fpadd32 %f58,%f60,%f60 ! (Y1_0) u = vis_fpadd32(u, dtmp0); fmuld %f60,%f48,%f18 ! (Y1_0) dtmp1 = u * dtmp1; st %f18,[pz] ! (Y1_0) write into memory st %f19,[pz+4] ! (Y1_0) write into memory add pz,stridez,pz ! z += stridez; .xend_loop: ba .xbegin nop .align 16 .xupdate0: cmp counter,0 sub py,stridey,%i2 ble,pt %icc,.xcont0 fmovd DZERO,%f10 stx %i2,[%fp+tmp_py] st counter,[%fp+tmp_counter] ba .xcont0 or %g0,0,counter .align 16 .xupdate1: cmp counter,0 sub py,stridey,%i2 ble,pt %icc,.xcont1 fmovd DZERO,%f10 stx %i2,[%fp+tmp_py] st counter,[%fp+tmp_counter] ba .xcont1 or %g0,0,counter .align 16 .xupdate2: cmp counter,1 sub py,stridey,%l3 ble,pt %icc,.xcont2 fmovd DZERO,%f14 stx %l3,[%fp+tmp_py] sub counter,1,counter st counter,[%fp+tmp_counter] ba .xcont2 or %g0,1,counter .align 16 .xupdate3: cmp counter,1 sub py,stridey,%l3 ble,pt %icc,.xcont3 fmovd DZERO,%f14 stx %l3,[%fp+tmp_py] sub counter,1,counter st counter,[%fp+tmp_counter] ba .xcont3 or %g0,1,counter .align 16 .xupdate4: cmp counter,2 ble,pt %icc,.xcont4 fmovd DZERO,%f18 stx py,[%fp+tmp_py] sub counter,2,counter st counter,[%fp+tmp_counter] ba .xcont4 or %g0,2,counter .align 16 .xupdate5: cmp counter,2 ble,pt %icc,.xcont5 fmovd DZERO,%f18 stx py,[%fp+tmp_py] sub counter,2,counter st counter,[%fp+tmp_counter] ba .xcont5 or %g0,2,counter .align 16 .xupdate6: cmp counter,3 sub py,stridey,%i2 ble,pt %icc,.xcont6 fmovd DZERO,%f20 stx %i2,[%fp+tmp_py] sub counter,3,counter st counter,[%fp+tmp_counter] ba .xcont6 or %g0,3,counter .align 16 .xupdate7: cmp counter,3 sub py,stridey,%i2 ble,pt %icc,.xcont7 fmovd DZERO,%f20 stx %i2,[%fp+tmp_py] sub counter,3,counter st counter,[%fp+tmp_counter] ba .xcont7 or %g0,3,counter .align 16 .xupdate8: cmp counter,4 sub py,stridey,%l3 ble,pt %icc,.xcont8 fmovd DZERO,%f26 stx %l3,[%fp+tmp_py] sub counter,4,counter st counter,[%fp+tmp_counter] ba .xcont8 or %g0,4,counter .align 16 .xupdate9: cmp counter,4 sub py,stridey,%l3 ble,pt %icc,.xcont9 fmovd DZERO,%f26 stx %l3,[%fp+tmp_py] sub counter,4,counter st counter,[%fp+tmp_counter] ba .xcont9 or %g0,4,counter .align 16 .xupdate10: cmp counter,5 ble,pt %icc,.xcont10 fmovd DZERO,%f28 stx py,[%fp+tmp_py] sub counter,5,counter st counter,[%fp+tmp_counter] ba .xcont10 or %g0,5,counter .align 16 .xupdate11: cmp counter,3 ble,pt %icc,.xcont11 fmovd DZERO,%f28 stx py,[%fp+tmp_py] sub counter,3,counter st counter,[%fp+tmp_counter] ba .xcont11 or %g0,3,counter .align 16 .xupdate12: cmp counter,4 sub py,stridey,%i2 ble,pt %icc,.xcont12 fmovd DZERO,%f8 stx %i2,[%fp+tmp_py] sub counter,4,counter st counter,[%fp+tmp_counter] ba .xcont12 or %g0,4,counter .align 16 .xupdate13: cmp counter,4 sub py,stridey,%i2 ble,pt %icc,.xcont13 fmovd DZERO,%f8 stx %i2,[%fp+tmp_py] sub counter,4,counter st counter,[%fp+tmp_counter] ba .xcont13 or %g0,4,counter .align 16 .xupdate14: cmp counter,5 sub py,stridey,%l3 ble,pt %icc,.xcont14 fmovd DZERO,%f26 stx %l3,[%fp+tmp_py] sub counter,5,counter st counter,[%fp+tmp_counter] ba .xcont14 or %g0,5,counter .align 16 .xupdate15: cmp counter,5 sub py,stridey,%l3 ble,pt %icc,.xcont15 fmovd DZERO,%f26 stx %l3,[%fp+tmp_py] sub counter,5,counter st counter,[%fp+tmp_counter] ba .xcont15 or %g0,5,counter .align 16 .xupdate16: cmp counter,6 ble,pt %icc,.xcont16 fmovd DZERO,%f28 stx py,[%fp+tmp_py] sub counter,6,counter st counter,[%fp+tmp_counter] ba .xcont16 or %g0,6,counter .align 16 .xspec0: add EXPTBL,4095,%l0 add %l0,1,%l0 ldd [%l0+8],%f20 ! ld DONE st %f20,[pz] ! *pz = DONE; ba .xupdate_point st %f21,[pz+4] ! *pz = DONE; .align 16 .xspec1: ldx [%fp+tmp_px],%l1 sethi %hi(0x7ffffc00),MASK_0x7fffffff sethi %hi(0x7ff00000),%o3 add MASK_0x7fffffff,0x3ff,MASK_0x7fffffff and %l2,MASK_0x7fffffff,%o2 ! if (hy &= 0x7fffffff); sethi %hi(0x3ff00000),MASK_0x3ff00000 cmp %o2,%o3 ! if (hy != 0x7ff00000); bne,pn %icc,2f ! if (hy != 0x7ff00000); nop ld [py+4],%l3 ! ld ly; cmp %l3,0 ! if (ly != 0); bne,a,pt %icc,3f ! if (ly != 0); nop ld [%l1],%i1 ! ld hx; cmp %i1,MASK_0x3ff00000 ! if (hx != 0x3ff00000); bne,a,pn %icc,1f ! if (hx != 0x3ff00000); srl %l2,31,%o7 ! sy = hy >> 31; ld [%l1+4],%i2 ! ld lx; cmp %i2,0 ! if (lx != 0); bne,pn %icc,1f ! if (lx != 0); srl %l2,31,%o7 ! sy = hy >> 31; fzero %f28 fmuld %f18,%f28,%f28 ! *pz = *py * 0.0; st %f28,[pz] ba .xupdate_point st %f29,[pz+4] 1: sub %i1,MASK_0x3ff00000,%o0 ! hx - 0x3ff00000; srlx %o0,63,%o0 ! (hx - 0x3ff00000) >> 63; cmp %o0,%o7 ! if ((hx < 0x3ff00000) == sy); be,pn %icc,1f ! if ((hx < 0x3ff00000) == sy); st DZERO_HI,[pz] ba .xupdate_point st DZERO_LO,[pz+4] 1: st %o2,[pz] ! ((int*)pz)[0] = hy; ba .xupdate_point st %l3,[pz+4] ! ((int*)pz)[1] = ly; 2: bl,a,pn %icc,1f ! if (hy < 0x7ff00000); ld [%l1+4],%i2 ! ld lx; 3: ld [%l1],%f20 ! x = *px; ld [%l1+4],%f21 ! x = *px; fmuld %f20,%f18,%f28 ! *pz = *px * *py; st %f28,[pz] ba .xupdate_point st %f29,[pz+4] 1: ld [%l1],%i1 ! ld hx; cmp %i2,0 ! if (lx != 0); bne,pn %icc,1f ! if (lx != 0); nop cmp %i1,MASK_0x3ff00000 ! if (hx != 0x3ff00000); add EXPTBL,4095,%l0 bne,pn %icc,1f ! if (hx != 0x3ff00000); add %l0,1,%l0 ldd [%l0+8],%f20 ! ld DONE st %f20,[pz] ! *pz = DONE; ba .xupdate_point st %f21,[pz+4] ! *pz = DONE; 1: srl %l2,31,%o7 ! sy = hy >> 31; sub %i1,MASK_0x3ff00000,%o0 ! hx - 0x3ff00000; srlx %o0,63,%o0 ! (hx - 0x3ff00000) >> 63; cmp %o0,%o7 ! if (hx < 0x3ff00000) == sy); be,a,pn %icc,1f ! if (hx < 0x3ff00000) == sy); ldd [EXPTBL-ind_HUGE],%f20 ! y0 = _HUGE; ldd [EXPTBL-ind_TINY],%f20 ! y0 = _TINY; 1: fmuld %f20,%f20,%f20 ! *pz = y0 * y0 st %f20,[pz] ba .xupdate_point st %f21,[pz+4] .xupdate_point: add py,stridey,py ba .xbegin1 add pz,stridez,pz SET_SIZE(__vpow)