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