1*25c28e83SPiotr Jasiukajtis/* 2*25c28e83SPiotr Jasiukajtis * CDDL HEADER START 3*25c28e83SPiotr Jasiukajtis * 4*25c28e83SPiotr Jasiukajtis * The contents of this file are subject to the terms of the 5*25c28e83SPiotr Jasiukajtis * Common Development and Distribution License (the "License"). 6*25c28e83SPiotr Jasiukajtis * You may not use this file except in compliance with the License. 7*25c28e83SPiotr Jasiukajtis * 8*25c28e83SPiotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*25c28e83SPiotr Jasiukajtis * or http://www.opensolaris.org/os/licensing. 10*25c28e83SPiotr Jasiukajtis * See the License for the specific language governing permissions 11*25c28e83SPiotr Jasiukajtis * and limitations under the License. 12*25c28e83SPiotr Jasiukajtis * 13*25c28e83SPiotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each 14*25c28e83SPiotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*25c28e83SPiotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the 16*25c28e83SPiotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying 17*25c28e83SPiotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner] 18*25c28e83SPiotr Jasiukajtis * 19*25c28e83SPiotr Jasiukajtis * CDDL HEADER END 20*25c28e83SPiotr Jasiukajtis */ 21*25c28e83SPiotr Jasiukajtis/* 22*25c28e83SPiotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc. All rights reserved. 23*25c28e83SPiotr Jasiukajtis */ 24*25c28e83SPiotr Jasiukajtis/* 25*25c28e83SPiotr Jasiukajtis * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 26*25c28e83SPiotr Jasiukajtis * Use is subject to license terms. 27*25c28e83SPiotr Jasiukajtis */ 28*25c28e83SPiotr Jasiukajtis 29*25c28e83SPiotr Jasiukajtis .file "__vexp.S" 30*25c28e83SPiotr Jasiukajtis 31*25c28e83SPiotr Jasiukajtis#include "libm.h" 32*25c28e83SPiotr Jasiukajtis 33*25c28e83SPiotr Jasiukajtis RO_DATA 34*25c28e83SPiotr Jasiukajtis 35*25c28e83SPiotr Jasiukajtis/******************************************************************** 36*25c28e83SPiotr Jasiukajtis * vexp() algorithm is from mopt:f_exp.c. Basics are included here 37*25c28e83SPiotr Jasiukajtis * to supplement comments within this file. vexp() has been unrolled 38*25c28e83SPiotr Jasiukajtis * to a depth of 3. Only element 0 is documented. 39*25c28e83SPiotr Jasiukajtis * 40*25c28e83SPiotr Jasiukajtis * Note 1: INVLN2_256, LN2_256H, and LN2_256L were originally scaled by 41*25c28e83SPiotr Jasiukajtis * 2^44 to allow *2^k w/o shifting within the FP registers. These 42*25c28e83SPiotr Jasiukajtis * had to be removed for CHEETAH to avoid the fdtox of a very large 43*25c28e83SPiotr Jasiukajtis * number, which would trap to kernel (2^52). 44*25c28e83SPiotr Jasiukajtis * 45*25c28e83SPiotr Jasiukajtis * Let x = (k + j/256)ln2 + r 46*25c28e83SPiotr Jasiukajtis * then exp(x) = exp(ln2^(k+j/256)) * exp(r) 47*25c28e83SPiotr Jasiukajtis * = 2^k * 2^(j/256) * exp(r) 48*25c28e83SPiotr Jasiukajtis * where r is polynomial approximation 49*25c28e83SPiotr Jasiukajtis * exp(r) = 1 + r + r^2*B1 + r^3*B2 + r^4*B3 50*25c28e83SPiotr Jasiukajtis * = 1 + r*(1+r*(B1+r*(B2+r*B3))) 51*25c28e83SPiotr Jasiukajtis * let 52*25c28e83SPiotr Jasiukajtis * p = r*(1+r*(B1+r*(B2+r*B3))) ! notice, not quite exp(r) 53*25c28e83SPiotr Jasiukajtis * q = 2^(j/256) (high 64 bits) 54*25c28e83SPiotr Jasiukajtis * t = 2^(j/256) (extra precision) ! both from _TBL_exp_z[] 55*25c28e83SPiotr Jasiukajtis * then 56*25c28e83SPiotr Jasiukajtis * 2^(j/256) * exp(r) = (q+t)(1+p) ~ q + ( t + q*p ) 57*25c28e83SPiotr Jasiukajtis * then actual computation is 2^k * ( q + ( t + q*p ) ) 58*25c28e83SPiotr Jasiukajtis * 59*25c28e83SPiotr Jasiukajtis ********************************************************************/ 60*25c28e83SPiotr Jasiukajtis 61*25c28e83SPiotr Jasiukajtis .align 16 62*25c28e83SPiotr JasiukajtisTBL: 63*25c28e83SPiotr Jasiukajtis .word 0x3ff00000,0x00000000 64*25c28e83SPiotr Jasiukajtis .word 0x00000000,0x00000000 65*25c28e83SPiotr Jasiukajtis .word 0x3ff00b1a,0xfa5abcbf 66*25c28e83SPiotr Jasiukajtis .word 0xbc84f6b2,0xa7609f71 67*25c28e83SPiotr Jasiukajtis .word 0x3ff0163d,0xa9fb3335 68*25c28e83SPiotr Jasiukajtis .word 0x3c9b6129,0x9ab8cdb7 69*25c28e83SPiotr Jasiukajtis .word 0x3ff02168,0x143b0281 70*25c28e83SPiotr Jasiukajtis .word 0xbc82bf31,0x0fc54eb6 71*25c28e83SPiotr Jasiukajtis .word 0x3ff02c9a,0x3e778061 72*25c28e83SPiotr Jasiukajtis .word 0xbc719083,0x535b085d 73*25c28e83SPiotr Jasiukajtis .word 0x3ff037d4,0x2e11bbcc 74*25c28e83SPiotr Jasiukajtis .word 0x3c656811,0xeeade11a 75*25c28e83SPiotr Jasiukajtis .word 0x3ff04315,0xe86e7f85 76*25c28e83SPiotr Jasiukajtis .word 0xbc90a31c,0x1977c96e 77*25c28e83SPiotr Jasiukajtis .word 0x3ff04e5f,0x72f654b1 78*25c28e83SPiotr Jasiukajtis .word 0x3c84c379,0x3aa0d08c 79*25c28e83SPiotr Jasiukajtis .word 0x3ff059b0,0xd3158574 80*25c28e83SPiotr Jasiukajtis .word 0x3c8d73e2,0xa475b465 81*25c28e83SPiotr Jasiukajtis .word 0x3ff0650a,0x0e3c1f89 82*25c28e83SPiotr Jasiukajtis .word 0xbc95cb7b,0x5799c396 83*25c28e83SPiotr Jasiukajtis .word 0x3ff0706b,0x29ddf6de 84*25c28e83SPiotr Jasiukajtis .word 0xbc8c91df,0xe2b13c26 85*25c28e83SPiotr Jasiukajtis .word 0x3ff07bd4,0x2b72a836 86*25c28e83SPiotr Jasiukajtis .word 0x3c832334,0x54458700 87*25c28e83SPiotr Jasiukajtis .word 0x3ff08745,0x18759bc8 88*25c28e83SPiotr Jasiukajtis .word 0x3c6186be,0x4bb284ff 89*25c28e83SPiotr Jasiukajtis .word 0x3ff092bd,0xf66607e0 90*25c28e83SPiotr Jasiukajtis .word 0xbc968063,0x800a3fd1 91*25c28e83SPiotr Jasiukajtis .word 0x3ff09e3e,0xcac6f383 92*25c28e83SPiotr Jasiukajtis .word 0x3c914878,0x18316136 93*25c28e83SPiotr Jasiukajtis .word 0x3ff0a9c7,0x9b1f3919 94*25c28e83SPiotr Jasiukajtis .word 0x3c85d16c,0x873d1d38 95*25c28e83SPiotr Jasiukajtis .word 0x3ff0b558,0x6cf9890f 96*25c28e83SPiotr Jasiukajtis .word 0x3c98a62e,0x4adc610a 97*25c28e83SPiotr Jasiukajtis .word 0x3ff0c0f1,0x45e46c85 98*25c28e83SPiotr Jasiukajtis .word 0x3c94f989,0x06d21cef 99*25c28e83SPiotr Jasiukajtis .word 0x3ff0cc92,0x2b7247f7 100*25c28e83SPiotr Jasiukajtis .word 0x3c901edc,0x16e24f71 101*25c28e83SPiotr Jasiukajtis .word 0x3ff0d83b,0x23395dec 102*25c28e83SPiotr Jasiukajtis .word 0xbc9bc14d,0xe43f316a 103*25c28e83SPiotr Jasiukajtis .word 0x3ff0e3ec,0x32d3d1a2 104*25c28e83SPiotr Jasiukajtis .word 0x3c403a17,0x27c57b53 105*25c28e83SPiotr Jasiukajtis .word 0x3ff0efa5,0x5fdfa9c5 106*25c28e83SPiotr Jasiukajtis .word 0xbc949db9,0xbc54021b 107*25c28e83SPiotr Jasiukajtis .word 0x3ff0fb66,0xaffed31b 108*25c28e83SPiotr Jasiukajtis .word 0xbc6b9bed,0xc44ebd7b 109*25c28e83SPiotr Jasiukajtis .word 0x3ff10730,0x28d7233e 110*25c28e83SPiotr Jasiukajtis .word 0x3c8d46eb,0x1692fdd5 111*25c28e83SPiotr Jasiukajtis .word 0x3ff11301,0xd0125b51 112*25c28e83SPiotr Jasiukajtis .word 0xbc96c510,0x39449b3a 113*25c28e83SPiotr Jasiukajtis .word 0x3ff11edb,0xab5e2ab6 114*25c28e83SPiotr Jasiukajtis .word 0xbc9ca454,0xf703fb72 115*25c28e83SPiotr Jasiukajtis .word 0x3ff12abd,0xc06c31cc 116*25c28e83SPiotr Jasiukajtis .word 0xbc51b514,0xb36ca5c7 117*25c28e83SPiotr Jasiukajtis .word 0x3ff136a8,0x14f204ab 118*25c28e83SPiotr Jasiukajtis .word 0xbc67108f,0xba48dcf0 119*25c28e83SPiotr Jasiukajtis .word 0x3ff1429a,0xaea92de0 120*25c28e83SPiotr Jasiukajtis .word 0xbc932fbf,0x9af1369e 121*25c28e83SPiotr Jasiukajtis .word 0x3ff14e95,0x934f312e 122*25c28e83SPiotr Jasiukajtis .word 0xbc8b91e8,0x39bf44ab 123*25c28e83SPiotr Jasiukajtis .word 0x3ff15a98,0xc8a58e51 124*25c28e83SPiotr Jasiukajtis .word 0x3c82406a,0xb9eeab0a 125*25c28e83SPiotr Jasiukajtis .word 0x3ff166a4,0x5471c3c2 126*25c28e83SPiotr Jasiukajtis .word 0x3c58f23b,0x82ea1a32 127*25c28e83SPiotr Jasiukajtis .word 0x3ff172b8,0x3c7d517b 128*25c28e83SPiotr Jasiukajtis .word 0xbc819041,0xb9d78a76 129*25c28e83SPiotr Jasiukajtis .word 0x3ff17ed4,0x8695bbc0 130*25c28e83SPiotr Jasiukajtis .word 0x3c709e3f,0xe2ac5a64 131*25c28e83SPiotr Jasiukajtis .word 0x3ff18af9,0x388c8dea 132*25c28e83SPiotr Jasiukajtis .word 0xbc911023,0xd1970f6c 133*25c28e83SPiotr Jasiukajtis .word 0x3ff19726,0x58375d2f 134*25c28e83SPiotr Jasiukajtis .word 0x3c94aadd,0x85f17e08 135*25c28e83SPiotr Jasiukajtis .word 0x3ff1a35b,0xeb6fcb75 136*25c28e83SPiotr Jasiukajtis .word 0x3c8e5b4c,0x7b4968e4 137*25c28e83SPiotr Jasiukajtis .word 0x3ff1af99,0xf8138a1c 138*25c28e83SPiotr Jasiukajtis .word 0x3c97bf85,0xa4b69280 139*25c28e83SPiotr Jasiukajtis .word 0x3ff1bbe0,0x84045cd4 140*25c28e83SPiotr Jasiukajtis .word 0xbc995386,0x352ef607 141*25c28e83SPiotr Jasiukajtis .word 0x3ff1c82f,0x95281c6b 142*25c28e83SPiotr Jasiukajtis .word 0x3c900977,0x8010f8c9 143*25c28e83SPiotr Jasiukajtis .word 0x3ff1d487,0x3168b9aa 144*25c28e83SPiotr Jasiukajtis .word 0x3c9e016e,0x00a2643c 145*25c28e83SPiotr Jasiukajtis .word 0x3ff1e0e7,0x5eb44027 146*25c28e83SPiotr Jasiukajtis .word 0xbc96fdd8,0x088cb6de 147*25c28e83SPiotr Jasiukajtis .word 0x3ff1ed50,0x22fcd91d 148*25c28e83SPiotr Jasiukajtis .word 0xbc91df98,0x027bb78c 149*25c28e83SPiotr Jasiukajtis .word 0x3ff1f9c1,0x8438ce4d 150*25c28e83SPiotr Jasiukajtis .word 0xbc9bf524,0xa097af5c 151*25c28e83SPiotr Jasiukajtis .word 0x3ff2063b,0x88628cd6 152*25c28e83SPiotr Jasiukajtis .word 0x3c8dc775,0x814a8494 153*25c28e83SPiotr Jasiukajtis .word 0x3ff212be,0x3578a819 154*25c28e83SPiotr Jasiukajtis .word 0x3c93592d,0x2cfcaac9 155*25c28e83SPiotr Jasiukajtis .word 0x3ff21f49,0x917ddc96 156*25c28e83SPiotr Jasiukajtis .word 0x3c82a97e,0x9494a5ee 157*25c28e83SPiotr Jasiukajtis .word 0x3ff22bdd,0xa27912d1 158*25c28e83SPiotr Jasiukajtis .word 0x3c8d34fb,0x5577d69e 159*25c28e83SPiotr Jasiukajtis .word 0x3ff2387a,0x6e756238 160*25c28e83SPiotr Jasiukajtis .word 0x3c99b07e,0xb6c70573 161*25c28e83SPiotr Jasiukajtis .word 0x3ff2451f,0xfb82140a 162*25c28e83SPiotr Jasiukajtis .word 0x3c8acfcc,0x911ca996 163*25c28e83SPiotr Jasiukajtis .word 0x3ff251ce,0x4fb2a63f 164*25c28e83SPiotr Jasiukajtis .word 0x3c8ac155,0xbef4f4a4 165*25c28e83SPiotr Jasiukajtis .word 0x3ff25e85,0x711ece75 166*25c28e83SPiotr Jasiukajtis .word 0x3c93e1a2,0x4ac31b2c 167*25c28e83SPiotr Jasiukajtis .word 0x3ff26b45,0x65e27cdd 168*25c28e83SPiotr Jasiukajtis .word 0x3c82bd33,0x9940e9d9 169*25c28e83SPiotr Jasiukajtis .word 0x3ff2780e,0x341ddf29 170*25c28e83SPiotr Jasiukajtis .word 0x3c9e067c,0x05f9e76c 171*25c28e83SPiotr Jasiukajtis .word 0x3ff284df,0xe1f56381 172*25c28e83SPiotr Jasiukajtis .word 0xbc9a4c3a,0x8c3f0d7e 173*25c28e83SPiotr Jasiukajtis .word 0x3ff291ba,0x7591bb70 174*25c28e83SPiotr Jasiukajtis .word 0xbc82cc72,0x28401cbc 175*25c28e83SPiotr Jasiukajtis .word 0x3ff29e9d,0xf51fdee1 176*25c28e83SPiotr Jasiukajtis .word 0x3c8612e8,0xafad1255 177*25c28e83SPiotr Jasiukajtis .word 0x3ff2ab8a,0x66d10f13 178*25c28e83SPiotr Jasiukajtis .word 0xbc995743,0x191690a7 179*25c28e83SPiotr Jasiukajtis .word 0x3ff2b87f,0xd0dad990 180*25c28e83SPiotr Jasiukajtis .word 0xbc410adc,0xd6381aa4 181*25c28e83SPiotr Jasiukajtis .word 0x3ff2c57e,0x39771b2f 182*25c28e83SPiotr Jasiukajtis .word 0xbc950145,0xa6eb5124 183*25c28e83SPiotr Jasiukajtis .word 0x3ff2d285,0xa6e4030b 184*25c28e83SPiotr Jasiukajtis .word 0x3c900247,0x54db41d5 185*25c28e83SPiotr Jasiukajtis .word 0x3ff2df96,0x1f641589 186*25c28e83SPiotr Jasiukajtis .word 0x3c9d16cf,0xfbbce198 187*25c28e83SPiotr Jasiukajtis .word 0x3ff2ecaf,0xa93e2f56 188*25c28e83SPiotr Jasiukajtis .word 0x3c71ca0f,0x45d52383 189*25c28e83SPiotr Jasiukajtis .word 0x3ff2f9d2,0x4abd886b 190*25c28e83SPiotr Jasiukajtis .word 0xbc653c55,0x532bda93 191*25c28e83SPiotr Jasiukajtis .word 0x3ff306fe,0x0a31b715 192*25c28e83SPiotr Jasiukajtis .word 0x3c86f46a,0xd23182e4 193*25c28e83SPiotr Jasiukajtis .word 0x3ff31432,0xedeeb2fd 194*25c28e83SPiotr Jasiukajtis .word 0x3c8959a3,0xf3f3fcd0 195*25c28e83SPiotr Jasiukajtis .word 0x3ff32170,0xfc4cd831 196*25c28e83SPiotr Jasiukajtis .word 0x3c8a9ce7,0x8e18047c 197*25c28e83SPiotr Jasiukajtis .word 0x3ff32eb8,0x3ba8ea32 198*25c28e83SPiotr Jasiukajtis .word 0xbc9c45e8,0x3cb4f318 199*25c28e83SPiotr Jasiukajtis .word 0x3ff33c08,0xb26416ff 200*25c28e83SPiotr Jasiukajtis .word 0x3c932721,0x843659a6 201*25c28e83SPiotr Jasiukajtis .word 0x3ff34962,0x66e3fa2d 202*25c28e83SPiotr Jasiukajtis .word 0xbc835a75,0x930881a4 203*25c28e83SPiotr Jasiukajtis .word 0x3ff356c5,0x5f929ff1 204*25c28e83SPiotr Jasiukajtis .word 0xbc8b5cee,0x5c4e4628 205*25c28e83SPiotr Jasiukajtis .word 0x3ff36431,0xa2de883b 206*25c28e83SPiotr Jasiukajtis .word 0xbc8c3144,0xa06cb85e 207*25c28e83SPiotr Jasiukajtis .word 0x3ff371a7,0x373aa9cb 208*25c28e83SPiotr Jasiukajtis .word 0xbc963aea,0xbf42eae2 209*25c28e83SPiotr Jasiukajtis .word 0x3ff37f26,0x231e754a 210*25c28e83SPiotr Jasiukajtis .word 0xbc99f5ca,0x9eceb23c 211*25c28e83SPiotr Jasiukajtis .word 0x3ff38cae,0x6d05d866 212*25c28e83SPiotr Jasiukajtis .word 0xbc9e958d,0x3c9904bd 213*25c28e83SPiotr Jasiukajtis .word 0x3ff39a40,0x1b7140ef 214*25c28e83SPiotr Jasiukajtis .word 0xbc99a9a5,0xfc8e2934 215*25c28e83SPiotr Jasiukajtis .word 0x3ff3a7db,0x34e59ff7 216*25c28e83SPiotr Jasiukajtis .word 0xbc75e436,0xd661f5e3 217*25c28e83SPiotr Jasiukajtis .word 0x3ff3b57f,0xbfec6cf4 218*25c28e83SPiotr Jasiukajtis .word 0x3c954c66,0xe26fff18 219*25c28e83SPiotr Jasiukajtis .word 0x3ff3c32d,0xc313a8e5 220*25c28e83SPiotr Jasiukajtis .word 0xbc9efff8,0x375d29c3 221*25c28e83SPiotr Jasiukajtis .word 0x3ff3d0e5,0x44ede173 222*25c28e83SPiotr Jasiukajtis .word 0x3c7fe8d0,0x8c284c71 223*25c28e83SPiotr Jasiukajtis .word 0x3ff3dea6,0x4c123422 224*25c28e83SPiotr Jasiukajtis .word 0x3c8ada09,0x11f09ebc 225*25c28e83SPiotr Jasiukajtis .word 0x3ff3ec70,0xdf1c5175 226*25c28e83SPiotr Jasiukajtis .word 0xbc8af663,0x7b8c9bca 227*25c28e83SPiotr Jasiukajtis .word 0x3ff3fa45,0x04ac801c 228*25c28e83SPiotr Jasiukajtis .word 0xbc97d023,0xf956f9f3 229*25c28e83SPiotr Jasiukajtis .word 0x3ff40822,0xc367a024 230*25c28e83SPiotr Jasiukajtis .word 0x3c8bddf8,0xb6f4d048 231*25c28e83SPiotr Jasiukajtis .word 0x3ff4160a,0x21f72e2a 232*25c28e83SPiotr Jasiukajtis .word 0xbc5ef369,0x1c309278 233*25c28e83SPiotr Jasiukajtis .word 0x3ff423fb,0x2709468a 234*25c28e83SPiotr Jasiukajtis .word 0xbc98462d,0xc0b314dd 235*25c28e83SPiotr Jasiukajtis .word 0x3ff431f5,0xd950a897 236*25c28e83SPiotr Jasiukajtis .word 0xbc81c7dd,0xe35f7998 237*25c28e83SPiotr Jasiukajtis .word 0x3ff43ffa,0x3f84b9d4 238*25c28e83SPiotr Jasiukajtis .word 0x3c8880be,0x9704c002 239*25c28e83SPiotr Jasiukajtis .word 0x3ff44e08,0x6061892d 240*25c28e83SPiotr Jasiukajtis .word 0x3c489b7a,0x04ef80d0 241*25c28e83SPiotr Jasiukajtis .word 0x3ff45c20,0x42a7d232 242*25c28e83SPiotr Jasiukajtis .word 0xbc686419,0x82fb1f8e 243*25c28e83SPiotr Jasiukajtis .word 0x3ff46a41,0xed1d0057 244*25c28e83SPiotr Jasiukajtis .word 0x3c9c944b,0xd1648a76 245*25c28e83SPiotr Jasiukajtis .word 0x3ff4786d,0x668b3237 246*25c28e83SPiotr Jasiukajtis .word 0xbc9c20f0,0xed445733 247*25c28e83SPiotr Jasiukajtis .word 0x3ff486a2,0xb5c13cd0 248*25c28e83SPiotr Jasiukajtis .word 0x3c73c1a3,0xb69062f0 249*25c28e83SPiotr Jasiukajtis .word 0x3ff494e1,0xe192aed2 250*25c28e83SPiotr Jasiukajtis .word 0xbc83b289,0x5e499ea0 251*25c28e83SPiotr Jasiukajtis .word 0x3ff4a32a,0xf0d7d3de 252*25c28e83SPiotr Jasiukajtis .word 0x3c99cb62,0xf3d1be56 253*25c28e83SPiotr Jasiukajtis .word 0x3ff4b17d,0xea6db7d7 254*25c28e83SPiotr Jasiukajtis .word 0xbc8125b8,0x7f2897f0 255*25c28e83SPiotr Jasiukajtis .word 0x3ff4bfda,0xd5362a27 256*25c28e83SPiotr Jasiukajtis .word 0x3c7d4397,0xafec42e2 257*25c28e83SPiotr Jasiukajtis .word 0x3ff4ce41,0xb817c114 258*25c28e83SPiotr Jasiukajtis .word 0x3c905e29,0x690abd5d 259*25c28e83SPiotr Jasiukajtis .word 0x3ff4dcb2,0x99fddd0d 260*25c28e83SPiotr Jasiukajtis .word 0x3c98ecdb,0xbc6a7833 261*25c28e83SPiotr Jasiukajtis .word 0x3ff4eb2d,0x81d8abff 262*25c28e83SPiotr Jasiukajtis .word 0xbc95257d,0x2e5d7a52 263*25c28e83SPiotr Jasiukajtis .word 0x3ff4f9b2,0x769d2ca7 264*25c28e83SPiotr Jasiukajtis .word 0xbc94b309,0xd25957e3 265*25c28e83SPiotr Jasiukajtis .word 0x3ff50841,0x7f4531ee 266*25c28e83SPiotr Jasiukajtis .word 0x3c7a249b,0x49b7465f 267*25c28e83SPiotr Jasiukajtis .word 0x3ff516da,0xa2cf6642 268*25c28e83SPiotr Jasiukajtis .word 0xbc8f7685,0x69bd93ee 269*25c28e83SPiotr Jasiukajtis .word 0x3ff5257d,0xe83f4eef 270*25c28e83SPiotr Jasiukajtis .word 0xbc7c998d,0x43efef71 271*25c28e83SPiotr Jasiukajtis .word 0x3ff5342b,0x569d4f82 272*25c28e83SPiotr Jasiukajtis .word 0xbc807abe,0x1db13cac 273*25c28e83SPiotr Jasiukajtis .word 0x3ff542e2,0xf4f6ad27 274*25c28e83SPiotr Jasiukajtis .word 0x3c87926d,0x192d5f7e 275*25c28e83SPiotr Jasiukajtis .word 0x3ff551a4,0xca5d920f 276*25c28e83SPiotr Jasiukajtis .word 0xbc8d689c,0xefede59a 277*25c28e83SPiotr Jasiukajtis .word 0x3ff56070,0xdde910d2 278*25c28e83SPiotr Jasiukajtis .word 0xbc90fb6e,0x168eebf0 279*25c28e83SPiotr Jasiukajtis .word 0x3ff56f47,0x36b527da 280*25c28e83SPiotr Jasiukajtis .word 0x3c99bb2c,0x011d93ad 281*25c28e83SPiotr Jasiukajtis .word 0x3ff57e27,0xdbe2c4cf 282*25c28e83SPiotr Jasiukajtis .word 0xbc90b98c,0x8a57b9c4 283*25c28e83SPiotr Jasiukajtis .word 0x3ff58d12,0xd497c7fd 284*25c28e83SPiotr Jasiukajtis .word 0x3c8295e1,0x5b9a1de8 285*25c28e83SPiotr Jasiukajtis .word 0x3ff59c08,0x27ff07cc 286*25c28e83SPiotr Jasiukajtis .word 0xbc97e2ce,0xe467e60f 287*25c28e83SPiotr Jasiukajtis .word 0x3ff5ab07,0xdd485429 288*25c28e83SPiotr Jasiukajtis .word 0x3c96324c,0x054647ad 289*25c28e83SPiotr Jasiukajtis .word 0x3ff5ba11,0xfba87a03 290*25c28e83SPiotr Jasiukajtis .word 0xbc9b77a1,0x4c233e1a 291*25c28e83SPiotr Jasiukajtis .word 0x3ff5c926,0x8a5946b7 292*25c28e83SPiotr Jasiukajtis .word 0x3c3c4b1b,0x816986a2 293*25c28e83SPiotr Jasiukajtis .word 0x3ff5d845,0x90998b93 294*25c28e83SPiotr Jasiukajtis .word 0xbc9cd6a7,0xa8b45642 295*25c28e83SPiotr Jasiukajtis .word 0x3ff5e76f,0x15ad2148 296*25c28e83SPiotr Jasiukajtis .word 0x3c9ba6f9,0x3080e65e 297*25c28e83SPiotr Jasiukajtis .word 0x3ff5f6a3,0x20dceb71 298*25c28e83SPiotr Jasiukajtis .word 0xbc89eadd,0xe3cdcf92 299*25c28e83SPiotr Jasiukajtis .word 0x3ff605e1,0xb976dc09 300*25c28e83SPiotr Jasiukajtis .word 0xbc93e242,0x9b56de47 301*25c28e83SPiotr Jasiukajtis .word 0x3ff6152a,0xe6cdf6f4 302*25c28e83SPiotr Jasiukajtis .word 0x3c9e4b3e,0x4ab84c27 303*25c28e83SPiotr Jasiukajtis .word 0x3ff6247e,0xb03a5585 304*25c28e83SPiotr Jasiukajtis .word 0xbc9383c1,0x7e40b497 305*25c28e83SPiotr Jasiukajtis .word 0x3ff633dd,0x1d1929fd 306*25c28e83SPiotr Jasiukajtis .word 0x3c984710,0xbeb964e5 307*25c28e83SPiotr Jasiukajtis .word 0x3ff64346,0x34ccc320 308*25c28e83SPiotr Jasiukajtis .word 0xbc8c483c,0x759d8932 309*25c28e83SPiotr Jasiukajtis .word 0x3ff652b9,0xfebc8fb7 310*25c28e83SPiotr Jasiukajtis .word 0xbc9ae3d5,0xc9a73e08 311*25c28e83SPiotr Jasiukajtis .word 0x3ff66238,0x82552225 312*25c28e83SPiotr Jasiukajtis .word 0xbc9bb609,0x87591c34 313*25c28e83SPiotr Jasiukajtis .word 0x3ff671c1,0xc70833f6 314*25c28e83SPiotr Jasiukajtis .word 0xbc8e8732,0x586c6134 315*25c28e83SPiotr Jasiukajtis .word 0x3ff68155,0xd44ca973 316*25c28e83SPiotr Jasiukajtis .word 0x3c6038ae,0x44f73e65 317*25c28e83SPiotr Jasiukajtis .word 0x3ff690f4,0xb19e9538 318*25c28e83SPiotr Jasiukajtis .word 0x3c8804bd,0x9aeb445c 319*25c28e83SPiotr Jasiukajtis .word 0x3ff6a09e,0x667f3bcd 320*25c28e83SPiotr Jasiukajtis .word 0xbc9bdd34,0x13b26456 321*25c28e83SPiotr Jasiukajtis .word 0x3ff6b052,0xfa75173e 322*25c28e83SPiotr Jasiukajtis .word 0x3c7a38f5,0x2c9a9d0e 323*25c28e83SPiotr Jasiukajtis .word 0x3ff6c012,0x750bdabf 324*25c28e83SPiotr Jasiukajtis .word 0xbc728956,0x67ff0b0d 325*25c28e83SPiotr Jasiukajtis .word 0x3ff6cfdc,0xddd47645 326*25c28e83SPiotr Jasiukajtis .word 0x3c9c7aa9,0xb6f17309 327*25c28e83SPiotr Jasiukajtis .word 0x3ff6dfb2,0x3c651a2f 328*25c28e83SPiotr Jasiukajtis .word 0xbc6bbe3a,0x683c88ab 329*25c28e83SPiotr Jasiukajtis .word 0x3ff6ef92,0x98593ae5 330*25c28e83SPiotr Jasiukajtis .word 0xbc90b974,0x9e1ac8b2 331*25c28e83SPiotr Jasiukajtis .word 0x3ff6ff7d,0xf9519484 332*25c28e83SPiotr Jasiukajtis .word 0xbc883c0f,0x25860ef6 333*25c28e83SPiotr Jasiukajtis .word 0x3ff70f74,0x66f42e87 334*25c28e83SPiotr Jasiukajtis .word 0x3c59d644,0xd45aa65f 335*25c28e83SPiotr Jasiukajtis .word 0x3ff71f75,0xe8ec5f74 336*25c28e83SPiotr Jasiukajtis .word 0xbc816e47,0x86887a99 337*25c28e83SPiotr Jasiukajtis .word 0x3ff72f82,0x86ead08a 338*25c28e83SPiotr Jasiukajtis .word 0xbc920aa0,0x2cd62c72 339*25c28e83SPiotr Jasiukajtis .word 0x3ff73f9a,0x48a58174 340*25c28e83SPiotr Jasiukajtis .word 0xbc90a8d9,0x6c65d53c 341*25c28e83SPiotr Jasiukajtis .word 0x3ff74fbd,0x35d7cbfd 342*25c28e83SPiotr Jasiukajtis .word 0x3c9047fd,0x618a6e1c 343*25c28e83SPiotr Jasiukajtis .word 0x3ff75feb,0x564267c9 344*25c28e83SPiotr Jasiukajtis .word 0xbc902459,0x57316dd3 345*25c28e83SPiotr Jasiukajtis .word 0x3ff77024,0xb1ab6e09 346*25c28e83SPiotr Jasiukajtis .word 0x3c9b7877,0x169147f8 347*25c28e83SPiotr Jasiukajtis .word 0x3ff78069,0x4fde5d3f 348*25c28e83SPiotr Jasiukajtis .word 0x3c9866b8,0x0a02162c 349*25c28e83SPiotr Jasiukajtis .word 0x3ff790b9,0x38ac1cf6 350*25c28e83SPiotr Jasiukajtis .word 0x3c9349a8,0x62aadd3e 351*25c28e83SPiotr Jasiukajtis .word 0x3ff7a114,0x73eb0187 352*25c28e83SPiotr Jasiukajtis .word 0xbc841577,0xee04992f 353*25c28e83SPiotr Jasiukajtis .word 0x3ff7b17b,0x0976cfdb 354*25c28e83SPiotr Jasiukajtis .word 0xbc9bebb5,0x8468dc88 355*25c28e83SPiotr Jasiukajtis .word 0x3ff7c1ed,0x0130c132 356*25c28e83SPiotr Jasiukajtis .word 0x3c9f124c,0xd1164dd6 357*25c28e83SPiotr Jasiukajtis .word 0x3ff7d26a,0x62ff86f0 358*25c28e83SPiotr Jasiukajtis .word 0x3c91bddb,0xfb72b8b4 359*25c28e83SPiotr Jasiukajtis .word 0x3ff7e2f3,0x36cf4e62 360*25c28e83SPiotr Jasiukajtis .word 0x3c705d02,0xba15797e 361*25c28e83SPiotr Jasiukajtis .word 0x3ff7f387,0x8491c491 362*25c28e83SPiotr Jasiukajtis .word 0xbc807f11,0xcf9311ae 363*25c28e83SPiotr Jasiukajtis .word 0x3ff80427,0x543e1a12 364*25c28e83SPiotr Jasiukajtis .word 0xbc927c86,0x626d972b 365*25c28e83SPiotr Jasiukajtis .word 0x3ff814d2,0xadd106d9 366*25c28e83SPiotr Jasiukajtis .word 0x3c946437,0x0d151d4d 367*25c28e83SPiotr Jasiukajtis .word 0x3ff82589,0x994cce13 368*25c28e83SPiotr Jasiukajtis .word 0xbc9d4c1d,0xd41532d8 369*25c28e83SPiotr Jasiukajtis .word 0x3ff8364c,0x1eb941f7 370*25c28e83SPiotr Jasiukajtis .word 0x3c999b9a,0x31df2bd5 371*25c28e83SPiotr Jasiukajtis .word 0x3ff8471a,0x4623c7ad 372*25c28e83SPiotr Jasiukajtis .word 0xbc88d684,0xa341cdfb 373*25c28e83SPiotr Jasiukajtis .word 0x3ff857f4,0x179f5b21 374*25c28e83SPiotr Jasiukajtis .word 0xbc5ba748,0xf8b216d0 375*25c28e83SPiotr Jasiukajtis .word 0x3ff868d9,0x9b4492ec 376*25c28e83SPiotr Jasiukajtis .word 0x3ca01c83,0xb21584a3 377*25c28e83SPiotr Jasiukajtis .word 0x3ff879ca,0xd931a436 378*25c28e83SPiotr Jasiukajtis .word 0x3c85d2d7,0xd2db47bc 379*25c28e83SPiotr Jasiukajtis .word 0x3ff88ac7,0xd98a6699 380*25c28e83SPiotr Jasiukajtis .word 0x3c9994c2,0xf37cb53a 381*25c28e83SPiotr Jasiukajtis .word 0x3ff89bd0,0xa478580f 382*25c28e83SPiotr Jasiukajtis .word 0x3c9d5395,0x4475202a 383*25c28e83SPiotr Jasiukajtis .word 0x3ff8ace5,0x422aa0db 384*25c28e83SPiotr Jasiukajtis .word 0x3c96e9f1,0x56864b27 385*25c28e83SPiotr Jasiukajtis .word 0x3ff8be05,0xbad61778 386*25c28e83SPiotr Jasiukajtis .word 0x3c9ecb5e,0xfc43446e 387*25c28e83SPiotr Jasiukajtis .word 0x3ff8cf32,0x16b5448c 388*25c28e83SPiotr Jasiukajtis .word 0xbc70d55e,0x32e9e3aa 389*25c28e83SPiotr Jasiukajtis .word 0x3ff8e06a,0x5e0866d9 390*25c28e83SPiotr Jasiukajtis .word 0xbc97114a,0x6fc9b2e6 391*25c28e83SPiotr Jasiukajtis .word 0x3ff8f1ae,0x99157736 392*25c28e83SPiotr Jasiukajtis .word 0x3c85cc13,0xa2e3976c 393*25c28e83SPiotr Jasiukajtis .word 0x3ff902fe,0xd0282c8a 394*25c28e83SPiotr Jasiukajtis .word 0x3c9592ca,0x85fe3fd2 395*25c28e83SPiotr Jasiukajtis .word 0x3ff9145b,0x0b91ffc6 396*25c28e83SPiotr Jasiukajtis .word 0xbc9dd679,0x2e582524 397*25c28e83SPiotr Jasiukajtis .word 0x3ff925c3,0x53aa2fe2 398*25c28e83SPiotr Jasiukajtis .word 0xbc83455f,0xa639db7f 399*25c28e83SPiotr Jasiukajtis .word 0x3ff93737,0xb0cdc5e5 400*25c28e83SPiotr Jasiukajtis .word 0xbc675fc7,0x81b57ebc 401*25c28e83SPiotr Jasiukajtis .word 0x3ff948b8,0x2b5f98e5 402*25c28e83SPiotr Jasiukajtis .word 0xbc8dc3d6,0x797d2d99 403*25c28e83SPiotr Jasiukajtis .word 0x3ff95a44,0xcbc8520f 404*25c28e83SPiotr Jasiukajtis .word 0xbc764b7c,0x96a5f039 405*25c28e83SPiotr Jasiukajtis .word 0x3ff96bdd,0x9a7670b3 406*25c28e83SPiotr Jasiukajtis .word 0xbc5ba596,0x7f19c896 407*25c28e83SPiotr Jasiukajtis .word 0x3ff97d82,0x9fde4e50 408*25c28e83SPiotr Jasiukajtis .word 0xbc9d185b,0x7c1b85d0 409*25c28e83SPiotr Jasiukajtis .word 0x3ff98f33,0xe47a22a2 410*25c28e83SPiotr Jasiukajtis .word 0x3c7cabda,0xa24c78ed 411*25c28e83SPiotr Jasiukajtis .word 0x3ff9a0f1,0x70ca07ba 412*25c28e83SPiotr Jasiukajtis .word 0xbc9173bd,0x91cee632 413*25c28e83SPiotr Jasiukajtis .word 0x3ff9b2bb,0x4d53fe0d 414*25c28e83SPiotr Jasiukajtis .word 0xbc9dd84e,0x4df6d518 415*25c28e83SPiotr Jasiukajtis .word 0x3ff9c491,0x82a3f090 416*25c28e83SPiotr Jasiukajtis .word 0x3c7c7c46,0xb071f2be 417*25c28e83SPiotr Jasiukajtis .word 0x3ff9d674,0x194bb8d5 418*25c28e83SPiotr Jasiukajtis .word 0xbc9516be,0xa3dd8233 419*25c28e83SPiotr Jasiukajtis .word 0x3ff9e863,0x19e32323 420*25c28e83SPiotr Jasiukajtis .word 0x3c7824ca,0x78e64c6e 421*25c28e83SPiotr Jasiukajtis .word 0x3ff9fa5e,0x8d07f29e 422*25c28e83SPiotr Jasiukajtis .word 0xbc84a9ce,0xaaf1face 423*25c28e83SPiotr Jasiukajtis .word 0x3ffa0c66,0x7b5de565 424*25c28e83SPiotr Jasiukajtis .word 0xbc935949,0x5d1cd533 425*25c28e83SPiotr Jasiukajtis .word 0x3ffa1e7a,0xed8eb8bb 426*25c28e83SPiotr Jasiukajtis .word 0x3c9c6618,0xee8be70e 427*25c28e83SPiotr Jasiukajtis .word 0x3ffa309b,0xec4a2d33 428*25c28e83SPiotr Jasiukajtis .word 0x3c96305c,0x7ddc36ab 429*25c28e83SPiotr Jasiukajtis .word 0x3ffa42c9,0x80460ad8 430*25c28e83SPiotr Jasiukajtis .word 0xbc9aa780,0x589fb120 431*25c28e83SPiotr Jasiukajtis .word 0x3ffa5503,0xb23e255d 432*25c28e83SPiotr Jasiukajtis .word 0xbc9d2f6e,0xdb8d41e1 433*25c28e83SPiotr Jasiukajtis .word 0x3ffa674a,0x8af46052 434*25c28e83SPiotr Jasiukajtis .word 0x3c650f56,0x30670366 435*25c28e83SPiotr Jasiukajtis .word 0x3ffa799e,0x1330b358 436*25c28e83SPiotr Jasiukajtis .word 0x3c9bcb7e,0xcac563c6 437*25c28e83SPiotr Jasiukajtis .word 0x3ffa8bfe,0x53c12e59 438*25c28e83SPiotr Jasiukajtis .word 0xbc94f867,0xb2ba15a8 439*25c28e83SPiotr Jasiukajtis .word 0x3ffa9e6b,0x5579fdbf 440*25c28e83SPiotr Jasiukajtis .word 0x3c90fac9,0x0ef7fd31 441*25c28e83SPiotr Jasiukajtis .word 0x3ffab0e5,0x21356eba 442*25c28e83SPiotr Jasiukajtis .word 0x3c889c31,0xdae94544 443*25c28e83SPiotr Jasiukajtis .word 0x3ffac36b,0xbfd3f37a 444*25c28e83SPiotr Jasiukajtis .word 0xbc8f9234,0xcae76cd0 445*25c28e83SPiotr Jasiukajtis .word 0x3ffad5ff,0x3a3c2774 446*25c28e83SPiotr Jasiukajtis .word 0x3c97ef3b,0xb6b1b8e4 447*25c28e83SPiotr Jasiukajtis .word 0x3ffae89f,0x995ad3ad 448*25c28e83SPiotr Jasiukajtis .word 0x3c97a1cd,0x345dcc81 449*25c28e83SPiotr Jasiukajtis .word 0x3ffafb4c,0xe622f2ff 450*25c28e83SPiotr Jasiukajtis .word 0xbc94b2fc,0x0f315ecc 451*25c28e83SPiotr Jasiukajtis .word 0x3ffb0e07,0x298db666 452*25c28e83SPiotr Jasiukajtis .word 0xbc9bdef5,0x4c80e425 453*25c28e83SPiotr Jasiukajtis .word 0x3ffb20ce,0x6c9a8952 454*25c28e83SPiotr Jasiukajtis .word 0x3c94dd02,0x4a0756cc 455*25c28e83SPiotr Jasiukajtis .word 0x3ffb33a2,0xb84f15fb 456*25c28e83SPiotr Jasiukajtis .word 0xbc62805e,0x3084d708 457*25c28e83SPiotr Jasiukajtis .word 0x3ffb4684,0x15b749b1 458*25c28e83SPiotr Jasiukajtis .word 0xbc7f763d,0xe9df7c90 459*25c28e83SPiotr Jasiukajtis .word 0x3ffb5972,0x8de5593a 460*25c28e83SPiotr Jasiukajtis .word 0xbc9c71df,0xbbba6de3 461*25c28e83SPiotr Jasiukajtis .word 0x3ffb6c6e,0x29f1c52a 462*25c28e83SPiotr Jasiukajtis .word 0x3c92a8f3,0x52883f6e 463*25c28e83SPiotr Jasiukajtis .word 0x3ffb7f76,0xf2fb5e47 464*25c28e83SPiotr Jasiukajtis .word 0xbc75584f,0x7e54ac3b 465*25c28e83SPiotr Jasiukajtis .word 0x3ffb928c,0xf22749e4 466*25c28e83SPiotr Jasiukajtis .word 0xbc9b7216,0x54cb65c6 467*25c28e83SPiotr Jasiukajtis .word 0x3ffba5b0,0x30a1064a 468*25c28e83SPiotr Jasiukajtis .word 0xbc9efcd3,0x0e54292e 469*25c28e83SPiotr Jasiukajtis .word 0x3ffbb8e0,0xb79a6f1f 470*25c28e83SPiotr Jasiukajtis .word 0xbc3f52d1,0xc9696205 471*25c28e83SPiotr Jasiukajtis .word 0x3ffbcc1e,0x904bc1d2 472*25c28e83SPiotr Jasiukajtis .word 0x3c823dd0,0x7a2d9e84 473*25c28e83SPiotr Jasiukajtis .word 0x3ffbdf69,0xc3f3a207 474*25c28e83SPiotr Jasiukajtis .word 0xbc3c2623,0x60ea5b52 475*25c28e83SPiotr Jasiukajtis .word 0x3ffbf2c2,0x5bd71e09 476*25c28e83SPiotr Jasiukajtis .word 0xbc9efdca,0x3f6b9c73 477*25c28e83SPiotr Jasiukajtis .word 0x3ffc0628,0x6141b33d 478*25c28e83SPiotr Jasiukajtis .word 0xbc8d8a5a,0xa1fbca34 479*25c28e83SPiotr Jasiukajtis .word 0x3ffc199b,0xdd85529c 480*25c28e83SPiotr Jasiukajtis .word 0x3c811065,0x895048dd 481*25c28e83SPiotr Jasiukajtis .word 0x3ffc2d1c,0xd9fa652c 482*25c28e83SPiotr Jasiukajtis .word 0xbc96e516,0x17c8a5d7 483*25c28e83SPiotr Jasiukajtis .word 0x3ffc40ab,0x5fffd07a 484*25c28e83SPiotr Jasiukajtis .word 0x3c9b4537,0xe083c60a 485*25c28e83SPiotr Jasiukajtis .word 0x3ffc5447,0x78fafb22 486*25c28e83SPiotr Jasiukajtis .word 0x3c912f07,0x2493b5af 487*25c28e83SPiotr Jasiukajtis .word 0x3ffc67f1,0x2e57d14b 488*25c28e83SPiotr Jasiukajtis .word 0x3c92884d,0xff483cad 489*25c28e83SPiotr Jasiukajtis .word 0x3ffc7ba8,0x8988c933 490*25c28e83SPiotr Jasiukajtis .word 0xbc8e76bb,0xbe255559 491*25c28e83SPiotr Jasiukajtis .word 0x3ffc8f6d,0x9406e7b5 492*25c28e83SPiotr Jasiukajtis .word 0x3c71acbc,0x48805c44 493*25c28e83SPiotr Jasiukajtis .word 0x3ffca340,0x5751c4db 494*25c28e83SPiotr Jasiukajtis .word 0xbc87f2be,0xd10d08f4 495*25c28e83SPiotr Jasiukajtis .word 0x3ffcb720,0xdcef9069 496*25c28e83SPiotr Jasiukajtis .word 0x3c7503cb,0xd1e949db 497*25c28e83SPiotr Jasiukajtis .word 0x3ffccb0f,0x2e6d1675 498*25c28e83SPiotr Jasiukajtis .word 0xbc7d220f,0x86009093 499*25c28e83SPiotr Jasiukajtis .word 0x3ffcdf0b,0x555dc3fa 500*25c28e83SPiotr Jasiukajtis .word 0xbc8dd83b,0x53829d72 501*25c28e83SPiotr Jasiukajtis .word 0x3ffcf315,0x5b5bab74 502*25c28e83SPiotr Jasiukajtis .word 0xbc9a08e9,0xb86dff57 503*25c28e83SPiotr Jasiukajtis .word 0x3ffd072d,0x4a07897c 504*25c28e83SPiotr Jasiukajtis .word 0xbc9cbc37,0x43797a9c 505*25c28e83SPiotr Jasiukajtis .word 0x3ffd1b53,0x2b08c968 506*25c28e83SPiotr Jasiukajtis .word 0x3c955636,0x219a36ee 507*25c28e83SPiotr Jasiukajtis .word 0x3ffd2f87,0x080d89f2 508*25c28e83SPiotr Jasiukajtis .word 0xbc9d487b,0x719d8578 509*25c28e83SPiotr Jasiukajtis .word 0x3ffd43c8,0xeacaa1d6 510*25c28e83SPiotr Jasiukajtis .word 0x3c93db53,0xbf5a1614 511*25c28e83SPiotr Jasiukajtis .word 0x3ffd5818,0xdcfba487 512*25c28e83SPiotr Jasiukajtis .word 0x3c82ed02,0xd75b3706 513*25c28e83SPiotr Jasiukajtis .word 0x3ffd6c76,0xe862e6d3 514*25c28e83SPiotr Jasiukajtis .word 0x3c5fe87a,0x4a8165a0 515*25c28e83SPiotr Jasiukajtis .word 0x3ffd80e3,0x16c98398 516*25c28e83SPiotr Jasiukajtis .word 0xbc911ec1,0x8beddfe8 517*25c28e83SPiotr Jasiukajtis .word 0x3ffd955d,0x71ff6075 518*25c28e83SPiotr Jasiukajtis .word 0x3c9a052d,0xbb9af6be 519*25c28e83SPiotr Jasiukajtis .word 0x3ffda9e6,0x03db3285 520*25c28e83SPiotr Jasiukajtis .word 0x3c9c2300,0x696db532 521*25c28e83SPiotr Jasiukajtis .word 0x3ffdbe7c,0xd63a8315 522*25c28e83SPiotr Jasiukajtis .word 0xbc9b76f1,0x926b8be4 523*25c28e83SPiotr Jasiukajtis .word 0x3ffdd321,0xf301b460 524*25c28e83SPiotr Jasiukajtis .word 0x3c92da57,0x78f018c2 525*25c28e83SPiotr Jasiukajtis .word 0x3ffde7d5,0x641c0658 526*25c28e83SPiotr Jasiukajtis .word 0xbc9ca552,0x8e79ba8f 527*25c28e83SPiotr Jasiukajtis .word 0x3ffdfc97,0x337b9b5f 528*25c28e83SPiotr Jasiukajtis .word 0xbc91a5cd,0x4f184b5c 529*25c28e83SPiotr Jasiukajtis .word 0x3ffe1167,0x6b197d17 530*25c28e83SPiotr Jasiukajtis .word 0xbc72b529,0xbd5c7f44 531*25c28e83SPiotr Jasiukajtis .word 0x3ffe2646,0x14f5a129 532*25c28e83SPiotr Jasiukajtis .word 0xbc97b627,0x817a1496 533*25c28e83SPiotr Jasiukajtis .word 0x3ffe3b33,0x3b16ee12 534*25c28e83SPiotr Jasiukajtis .word 0xbc99f4a4,0x31fdc68a 535*25c28e83SPiotr Jasiukajtis .word 0x3ffe502e,0xe78b3ff6 536*25c28e83SPiotr Jasiukajtis .word 0x3c839e89,0x80a9cc8f 537*25c28e83SPiotr Jasiukajtis .word 0x3ffe6539,0x24676d76 538*25c28e83SPiotr Jasiukajtis .word 0xbc863ff8,0x7522b734 539*25c28e83SPiotr Jasiukajtis .word 0x3ffe7a51,0xfbc74c83 540*25c28e83SPiotr Jasiukajtis .word 0x3c92d522,0xca0c8de2 541*25c28e83SPiotr Jasiukajtis .word 0x3ffe8f79,0x77cdb740 542*25c28e83SPiotr Jasiukajtis .word 0xbc910894,0x80b054b1 543*25c28e83SPiotr Jasiukajtis .word 0x3ffea4af,0xa2a490da 544*25c28e83SPiotr Jasiukajtis .word 0xbc9e9c23,0x179c2893 545*25c28e83SPiotr Jasiukajtis .word 0x3ffeb9f4,0x867cca6e 546*25c28e83SPiotr Jasiukajtis .word 0x3c94832f,0x2293e4f2 547*25c28e83SPiotr Jasiukajtis .word 0x3ffecf48,0x2d8e67f1 548*25c28e83SPiotr Jasiukajtis .word 0xbc9c93f3,0xb411ad8c 549*25c28e83SPiotr Jasiukajtis .word 0x3ffee4aa,0xa2188510 550*25c28e83SPiotr Jasiukajtis .word 0x3c91c68d,0xa487568d 551*25c28e83SPiotr Jasiukajtis .word 0x3ffefa1b,0xee615a27 552*25c28e83SPiotr Jasiukajtis .word 0x3c9dc7f4,0x86a4b6b0 553*25c28e83SPiotr Jasiukajtis .word 0x3fff0f9c,0x1cb6412a 554*25c28e83SPiotr Jasiukajtis .word 0xbc932200,0x65181d45 555*25c28e83SPiotr Jasiukajtis .word 0x3fff252b,0x376bba97 556*25c28e83SPiotr Jasiukajtis .word 0x3c93a1a5,0xbf0d8e43 557*25c28e83SPiotr Jasiukajtis .word 0x3fff3ac9,0x48dd7274 558*25c28e83SPiotr Jasiukajtis .word 0xbc795a5a,0x3ed837de 559*25c28e83SPiotr Jasiukajtis .word 0x3fff5076,0x5b6e4540 560*25c28e83SPiotr Jasiukajtis .word 0x3c99d3e1,0x2dd8a18b 561*25c28e83SPiotr Jasiukajtis .word 0x3fff6632,0x798844f8 562*25c28e83SPiotr Jasiukajtis .word 0x3c9fa37b,0x3539343e 563*25c28e83SPiotr Jasiukajtis .word 0x3fff7bfd,0xad9cbe14 564*25c28e83SPiotr Jasiukajtis .word 0xbc9dbb12,0xd006350a 565*25c28e83SPiotr Jasiukajtis .word 0x3fff91d8,0x02243c89 566*25c28e83SPiotr Jasiukajtis .word 0xbc612ea8,0xa779f689 567*25c28e83SPiotr Jasiukajtis .word 0x3fffa7c1,0x819e90d8 568*25c28e83SPiotr Jasiukajtis .word 0x3c874853,0xf3a5931e 569*25c28e83SPiotr Jasiukajtis .word 0x3fffbdba,0x3692d514 570*25c28e83SPiotr Jasiukajtis .word 0xbc796773,0x15098eb6 571*25c28e83SPiotr Jasiukajtis .word 0x3fffd3c2,0x2b8f71f1 572*25c28e83SPiotr Jasiukajtis .word 0x3c62eb74,0x966579e7 573*25c28e83SPiotr Jasiukajtis .word 0x3fffe9d9,0x6b2a23d9 574*25c28e83SPiotr Jasiukajtis .word 0x3c74a603,0x7442fde3 575*25c28e83SPiotr Jasiukajtis 576*25c28e83SPiotr Jasiukajtis .align 16 577*25c28e83SPiotr Jasiukajtisconstants: 578*25c28e83SPiotr Jasiukajtis .word 0x3ef00000,0x00000000 579*25c28e83SPiotr Jasiukajtis .word 0x40862e42,0xfefa39ef 580*25c28e83SPiotr Jasiukajtis .word 0x01000000,0x00000000 581*25c28e83SPiotr Jasiukajtis .word 0x7f000000,0x00000000 582*25c28e83SPiotr Jasiukajtis .word 0x80000000,0x00000000 583*25c28e83SPiotr Jasiukajtis .word 0x43f00000,0x00000000 ! scaling 2^12 two96 584*25c28e83SPiotr Jasiukajtis .word 0xfff00000,0x00000000 585*25c28e83SPiotr Jasiukajtis .word 0x3ff00000,0x00000000 586*25c28e83SPiotr Jasiukajtis .word 0x3fdfffff,0xfffffff6 587*25c28e83SPiotr Jasiukajtis .word 0x3fc55555,0x721a1d14 588*25c28e83SPiotr Jasiukajtis .word 0x3fa55555,0x6e0896af 589*25c28e83SPiotr Jasiukajtis .word 0x41371547,0x652b82fe ! scaling 2^12 invln2_256 590*25c28e83SPiotr Jasiukajtis .word 0x3ea62e42,0xfee00000 ! scaling 2^(-12) ln2_256h 591*25c28e83SPiotr Jasiukajtis .word 0x3caa39ef,0x35793c76 ! scaling 2^(-12) ln2_256l 592*25c28e83SPiotr Jasiukajtis 593*25c28e83SPiotr Jasiukajtis ! base set w/o scaling 594*25c28e83SPiotr Jasiukajtis ! .word 0x43300000,0x00000000 ! scaling two96 595*25c28e83SPiotr Jasiukajtis ! .word 0x40771547,0x652b82fe ! scaling invln2_256 596*25c28e83SPiotr Jasiukajtis ! .word 0x3f662e42,0xfee00000 ! scaling ln2_256h 597*25c28e83SPiotr Jasiukajtis ! .word 0x3d6a39ef,0x35793c76 ! scaling ln2_256l 598*25c28e83SPiotr Jasiukajtis 599*25c28e83SPiotr Jasiukajtis#define ox3ef 0x0 600*25c28e83SPiotr Jasiukajtis#define thresh 0x8 601*25c28e83SPiotr Jasiukajtis#define tiny 0x10 602*25c28e83SPiotr Jasiukajtis#define huge 0x18 603*25c28e83SPiotr Jasiukajtis#define signbit 0x20 604*25c28e83SPiotr Jasiukajtis#define two96 0x28 605*25c28e83SPiotr Jasiukajtis#define neginf 0x30 606*25c28e83SPiotr Jasiukajtis#define one 0x38 607*25c28e83SPiotr Jasiukajtis#define B1OFF 0x40 608*25c28e83SPiotr Jasiukajtis#define B2OFF 0x48 609*25c28e83SPiotr Jasiukajtis#define B3OFF 0x50 610*25c28e83SPiotr Jasiukajtis#define invln2_256 0x58 611*25c28e83SPiotr Jasiukajtis#define ln2_256h 0x60 612*25c28e83SPiotr Jasiukajtis#define ln2_256l 0x68 613*25c28e83SPiotr Jasiukajtis 614*25c28e83SPiotr Jasiukajtis! local storage indices 615*25c28e83SPiotr Jasiukajtis 616*25c28e83SPiotr Jasiukajtis#define m2 STACK_BIAS-0x4 617*25c28e83SPiotr Jasiukajtis#define m1 STACK_BIAS-0x8 618*25c28e83SPiotr Jasiukajtis#define m0 STACK_BIAS-0xc 619*25c28e83SPiotr Jasiukajtis#define jnk STACK_BIAS-0x20 620*25c28e83SPiotr Jasiukajtis! sizeof temp storage - must be a multiple of 16 for V9 621*25c28e83SPiotr Jasiukajtis#define tmps 0x20 622*25c28e83SPiotr Jasiukajtis 623*25c28e83SPiotr Jasiukajtis! register use 624*25c28e83SPiotr Jasiukajtis 625*25c28e83SPiotr Jasiukajtis! i0 n 626*25c28e83SPiotr Jasiukajtis! i1 x 627*25c28e83SPiotr Jasiukajtis! i2 stridex 628*25c28e83SPiotr Jasiukajtis! i3 y 629*25c28e83SPiotr Jasiukajtis! i4 stridey 630*25c28e83SPiotr Jasiukajtis! i5 0x80000000 631*25c28e83SPiotr Jasiukajtis 632*25c28e83SPiotr Jasiukajtis! g1 TBL 633*25c28e83SPiotr Jasiukajtis 634*25c28e83SPiotr Jasiukajtis! l0 m0 635*25c28e83SPiotr Jasiukajtis! l1 m1 636*25c28e83SPiotr Jasiukajtis! l2 m2 637*25c28e83SPiotr Jasiukajtis! l3 j0,oy0 638*25c28e83SPiotr Jasiukajtis! l4 j1,oy1 639*25c28e83SPiotr Jasiukajtis! l5 j2,oy2 640*25c28e83SPiotr Jasiukajtis! l6 0x3e300000 641*25c28e83SPiotr Jasiukajtis! l7 0x40862e41 642*25c28e83SPiotr Jasiukajtis 643*25c28e83SPiotr Jasiukajtis! o0 py0 644*25c28e83SPiotr Jasiukajtis! o1 py1 645*25c28e83SPiotr Jasiukajtis! o2 py2 646*25c28e83SPiotr Jasiukajtis! o3 scratch 647*25c28e83SPiotr Jasiukajtis! o4 scratch 648*25c28e83SPiotr Jasiukajtis! o5 0x40874910 649*25c28e83SPiotr Jasiukajtis! o7 0x7ff00000 650*25c28e83SPiotr Jasiukajtis 651*25c28e83SPiotr Jasiukajtis! f0 x0 652*25c28e83SPiotr Jasiukajtis! f2 653*25c28e83SPiotr Jasiukajtis! f4 654*25c28e83SPiotr Jasiukajtis! f6 655*25c28e83SPiotr Jasiukajtis! f8 656*25c28e83SPiotr Jasiukajtis! f10 x1 657*25c28e83SPiotr Jasiukajtis! f12 658*25c28e83SPiotr Jasiukajtis! f14 659*25c28e83SPiotr Jasiukajtis! f16 660*25c28e83SPiotr Jasiukajtis! f18 661*25c28e83SPiotr Jasiukajtis! f20 x2 662*25c28e83SPiotr Jasiukajtis! f22 663*25c28e83SPiotr Jasiukajtis! f24 664*25c28e83SPiotr Jasiukajtis! f26 665*25c28e83SPiotr Jasiukajtis! f28 666*25c28e83SPiotr Jasiukajtis! f30 667*25c28e83SPiotr Jasiukajtis! f32 668*25c28e83SPiotr Jasiukajtis! f34 669*25c28e83SPiotr Jasiukajtis! f36 0x3ef0... 670*25c28e83SPiotr Jasiukajtis! f38 thresh 671*25c28e83SPiotr Jasiukajtis! f40 tiny 672*25c28e83SPiotr Jasiukajtis! f42 huge 673*25c28e83SPiotr Jasiukajtis! f44 signbit 674*25c28e83SPiotr Jasiukajtis! f46 two96 675*25c28e83SPiotr Jasiukajtis! f48 neginf 676*25c28e83SPiotr Jasiukajtis! f50 one 677*25c28e83SPiotr Jasiukajtis! f52 B1 678*25c28e83SPiotr Jasiukajtis! f54 B2 679*25c28e83SPiotr Jasiukajtis! f56 B3 680*25c28e83SPiotr Jasiukajtis! f58 invln2_256 681*25c28e83SPiotr Jasiukajtis! f60 ln2_256h 682*25c28e83SPiotr Jasiukajtis! f62 ln2_256l 683*25c28e83SPiotr Jasiukajtis#define BOUNDRY %f36 684*25c28e83SPiotr Jasiukajtis#define THRESH %f38 685*25c28e83SPiotr Jasiukajtis#define TINY %f40 686*25c28e83SPiotr Jasiukajtis#define HUGE %f42 687*25c28e83SPiotr Jasiukajtis#define SIGNBIT %f44 688*25c28e83SPiotr Jasiukajtis#define TWO96 %f46 689*25c28e83SPiotr Jasiukajtis#define NEGINF %f48 690*25c28e83SPiotr Jasiukajtis#define ONE %f50 691*25c28e83SPiotr Jasiukajtis#define B1 %f52 692*25c28e83SPiotr Jasiukajtis#define B2 %f54 693*25c28e83SPiotr Jasiukajtis#define B3 %f56 694*25c28e83SPiotr Jasiukajtis#define INVLN2_256 %f58 695*25c28e83SPiotr Jasiukajtis#define LN2_256H %f60 696*25c28e83SPiotr Jasiukajtis#define LN2_256L %f62 697*25c28e83SPiotr Jasiukajtis 698*25c28e83SPiotr Jasiukajtis ENTRY(__vexp) 699*25c28e83SPiotr Jasiukajtis save %sp,-SA(MINFRAME)-tmps,%sp 700*25c28e83SPiotr Jasiukajtis PIC_SETUP(l7) 701*25c28e83SPiotr Jasiukajtis PIC_SET(l7,constants,o3) 702*25c28e83SPiotr Jasiukajtis PIC_SET(l7,TBL,o0) 703*25c28e83SPiotr Jasiukajtis mov %o0,%g1 704*25c28e83SPiotr Jasiukajtis wr %g0,0x82,%asi ! set %asi for non-faulting loads 705*25c28e83SPiotr Jasiukajtis 706*25c28e83SPiotr Jasiukajtis sethi %hi(0x80000000),%i5 707*25c28e83SPiotr Jasiukajtis sethi %hi(0x3e300000),%l6 708*25c28e83SPiotr Jasiukajtis sethi %hi(0x40862e41),%l7 709*25c28e83SPiotr Jasiukajtis or %l7,%lo(0x40862e41),%l7 710*25c28e83SPiotr Jasiukajtis sethi %hi(0x40874910),%o5 711*25c28e83SPiotr Jasiukajtis or %o5,%lo(0x40874910),%o5 712*25c28e83SPiotr Jasiukajtis sethi %hi(0x7ff00000),%o7 713*25c28e83SPiotr Jasiukajtis ldd [%o3+ox3ef],BOUNDRY 714*25c28e83SPiotr Jasiukajtis ldd [%o3+thresh],THRESH 715*25c28e83SPiotr Jasiukajtis ldd [%o3+tiny],TINY 716*25c28e83SPiotr Jasiukajtis ldd [%o3+huge],HUGE 717*25c28e83SPiotr Jasiukajtis ldd [%o3+signbit],SIGNBIT 718*25c28e83SPiotr Jasiukajtis ldd [%o3+two96],TWO96 719*25c28e83SPiotr Jasiukajtis ldd [%o3+neginf],NEGINF 720*25c28e83SPiotr Jasiukajtis ldd [%o3+one],ONE 721*25c28e83SPiotr Jasiukajtis ldd [%o3+B1OFF],B1 722*25c28e83SPiotr Jasiukajtis ldd [%o3+B2OFF],B2 723*25c28e83SPiotr Jasiukajtis ldd [%o3+B3OFF],B3 724*25c28e83SPiotr Jasiukajtis ldd [%o3+invln2_256],INVLN2_256 725*25c28e83SPiotr Jasiukajtis ldd [%o3+ln2_256h],LN2_256H 726*25c28e83SPiotr Jasiukajtis ldd [%o3+ln2_256l],LN2_256L 727*25c28e83SPiotr Jasiukajtis sll %i2,3,%i2 ! scale strides 728*25c28e83SPiotr Jasiukajtis sll %i4,3,%i4 729*25c28e83SPiotr Jasiukajtis add %fp,jnk,%l3 ! precondition loop 730*25c28e83SPiotr Jasiukajtis add %fp,jnk,%l4 731*25c28e83SPiotr Jasiukajtis add %fp,jnk,%l5 732*25c28e83SPiotr Jasiukajtis ld [%i1],%l0 ! hx = *x 733*25c28e83SPiotr Jasiukajtis ld [%i1],%f0 734*25c28e83SPiotr Jasiukajtis ld [%i1+4],%f1 735*25c28e83SPiotr Jasiukajtis andn %l0,%i5,%l0 ! hx &= ~0x80000000 736*25c28e83SPiotr Jasiukajtis ba .loop0 737*25c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 738*25c28e83SPiotr Jasiukajtis 739*25c28e83SPiotr Jasiukajtis .align 16 740*25c28e83SPiotr Jasiukajtis! -- 16 byte aligned 741*25c28e83SPiotr Jasiukajtis.loop0: 742*25c28e83SPiotr Jasiukajtis lda [%i1]%asi,%l1 ! preload next argument 743*25c28e83SPiotr Jasiukajtis sub %l0,%l6,%o3 744*25c28e83SPiotr Jasiukajtis sub %l7,%l0,%o4 745*25c28e83SPiotr Jasiukajtis fand %f0,SIGNBIT,%f2 ! get sign bit 746*25c28e83SPiotr Jasiukajtis 747*25c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f10 748*25c28e83SPiotr Jasiukajtis orcc %o3,%o4,%g0 749*25c28e83SPiotr Jasiukajtis mov %i3,%o0 ! py0 = y 750*25c28e83SPiotr Jasiukajtis bl,pn %icc,.range0 ! if hx < 0x3e300000 or > 0x40862e41 751*25c28e83SPiotr Jasiukajtis 752*25c28e83SPiotr Jasiukajtis! delay slot 753*25c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f11 754*25c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 755*25c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 756*25c28e83SPiotr Jasiukajtis ble,pn %icc,.endloop1 757*25c28e83SPiotr Jasiukajtis 758*25c28e83SPiotr Jasiukajtis! delay slot 759*25c28e83SPiotr Jasiukajtis andn %l1,%i5,%l1 760*25c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 761*25c28e83SPiotr Jasiukajtis for %f2,TWO96,%f2 ! used to strip least sig bits 762*25c28e83SPiotr Jasiukajtis fmuld %f0,INVLN2_256,%f4 ! x/ (ln2/256) , creating k 763*25c28e83SPiotr Jasiukajtis 764*25c28e83SPiotr Jasiukajtis.loop1: 765*25c28e83SPiotr Jasiukajtis lda [%i1]%asi,%l2 ! preload next argument 766*25c28e83SPiotr Jasiukajtis sub %l1,%l6,%o3 767*25c28e83SPiotr Jasiukajtis sub %l7,%l1,%o4 768*25c28e83SPiotr Jasiukajtis fand %f10,SIGNBIT,%f12 769*25c28e83SPiotr Jasiukajtis 770*25c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f20 771*25c28e83SPiotr Jasiukajtis orcc %o3,%o4,%g0 772*25c28e83SPiotr Jasiukajtis mov %i3,%o1 ! py1 = y 773*25c28e83SPiotr Jasiukajtis bl,pn %icc,.range1 ! if hx < 0x3e300000 or > 0x40862e41 774*25c28e83SPiotr Jasiukajtis 775*25c28e83SPiotr Jasiukajtis! delay slot 776*25c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f21 777*25c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 778*25c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 779*25c28e83SPiotr Jasiukajtis ble,pn %icc,.endloop2 780*25c28e83SPiotr Jasiukajtis 781*25c28e83SPiotr Jasiukajtis! delay slot 782*25c28e83SPiotr Jasiukajtis andn %l2,%i5,%l2 783*25c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 784*25c28e83SPiotr Jasiukajtis for %f12,TWO96,%f12 785*25c28e83SPiotr Jasiukajtis fmuld %f10,INVLN2_256,%f14 786*25c28e83SPiotr Jasiukajtis 787*25c28e83SPiotr Jasiukajtis.loop2: 788*25c28e83SPiotr Jasiukajtis sub %l2,%l6,%o3 789*25c28e83SPiotr Jasiukajtis sub %l7,%l2,%o4 790*25c28e83SPiotr Jasiukajtis fand %f20,SIGNBIT,%f22 791*25c28e83SPiotr Jasiukajtis fmuld %f20,INVLN2_256,%f24 ! okay to put this here; for alignment 792*25c28e83SPiotr Jasiukajtis 793*25c28e83SPiotr Jasiukajtis orcc %o3,%o4,%g0 794*25c28e83SPiotr Jasiukajtis bl,pn %icc,.range2 ! if hx < 0x3e300000 or > 0x40862e41 795*25c28e83SPiotr Jasiukajtis! delay slot 796*25c28e83SPiotr Jasiukajtis for %f22,TWO96,%f22 797*25c28e83SPiotr Jasiukajtis faddd %f4,%f2,%f4 ! creating k+j/256, sra to zero bits 798*25c28e83SPiotr Jasiukajtis 799*25c28e83SPiotr Jasiukajtis.cont: 800*25c28e83SPiotr Jasiukajtis faddd %f14,%f12,%f14 801*25c28e83SPiotr Jasiukajtis mov %i3,%o2 ! py2 = y 802*25c28e83SPiotr Jasiukajtis 803*25c28e83SPiotr Jasiukajtis faddd %f24,%f22,%f24 804*25c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 805*25c28e83SPiotr Jasiukajtis 806*25c28e83SPiotr Jasiukajtis ! BUBBLE USIII 807*25c28e83SPiotr Jasiukajtis 808*25c28e83SPiotr Jasiukajtis fsubd %f4,%f2,%f8 ! creating k+j/256: sll 809*25c28e83SPiotr Jasiukajtis st %f6,[%l3] ! store previous loop x0 810*25c28e83SPiotr Jasiukajtis 811*25c28e83SPiotr Jasiukajtis fsubd %f14,%f12,%f18 812*25c28e83SPiotr Jasiukajtis st %f7,[%l3+4] ! store previous loop x0 813*25c28e83SPiotr Jasiukajtis 814*25c28e83SPiotr Jasiukajtis fsubd %f24,%f22,%f28 815*25c28e83SPiotr Jasiukajtis st %f16,[%l4] 816*25c28e83SPiotr Jasiukajtis 817*25c28e83SPiotr Jasiukajtis ! BUBBLE USIII 818*25c28e83SPiotr Jasiukajtis 819*25c28e83SPiotr Jasiukajtis fmuld %f8,LN2_256H,%f2 ! closest LN2_256 to x 820*25c28e83SPiotr Jasiukajtis st %f17,[%l4+4] 821*25c28e83SPiotr Jasiukajtis 822*25c28e83SPiotr Jasiukajtis fmuld %f18,LN2_256H,%f12 823*25c28e83SPiotr Jasiukajtis st %f26,[%l5] 824*25c28e83SPiotr Jasiukajtis 825*25c28e83SPiotr Jasiukajtis fmuld %f28,LN2_256H,%f22 826*25c28e83SPiotr Jasiukajtis st %f27,[%l5+4] 827*25c28e83SPiotr Jasiukajtis 828*25c28e83SPiotr Jasiukajtis ! BUBBLE USIII 829*25c28e83SPiotr Jasiukajtis 830*25c28e83SPiotr Jasiukajtis fsubd %f0,%f2,%f0 ! r = x - p*LN2_256H 831*25c28e83SPiotr Jasiukajtis fmuld %f8,LN2_256L,%f4 ! closest LN2_256 to x , added prec 832*25c28e83SPiotr Jasiukajtis 833*25c28e83SPiotr Jasiukajtis fsubd %f10,%f12,%f10 834*25c28e83SPiotr Jasiukajtis fmuld %f18,LN2_256L,%f14 835*25c28e83SPiotr Jasiukajtis 836*25c28e83SPiotr Jasiukajtis fsubd %f20,%f22,%f20 837*25c28e83SPiotr Jasiukajtis fmuld %f28,LN2_256L,%f24 838*25c28e83SPiotr Jasiukajtis 839*25c28e83SPiotr Jasiukajtis ! BUBBLE USIII 840*25c28e83SPiotr Jasiukajtis 841*25c28e83SPiotr Jasiukajtis fsubd %f0,%f4,%f0 ! r -= p*LN2_256L 842*25c28e83SPiotr Jasiukajtis 843*25c28e83SPiotr Jasiukajtis fsubd %f10,%f14,%f10 844*25c28e83SPiotr Jasiukajtis 845*25c28e83SPiotr Jasiukajtis fsubd %f20,%f24,%f20 846*25c28e83SPiotr Jasiukajtis 847*25c28e83SPiotr Jasiukajtis!!!!!!!!!!!!!!!!!!! New polynomial reorder starts here 848*25c28e83SPiotr Jasiukajtis 849*25c28e83SPiotr Jasiukajtis ! Alternate polynomial grouping allowing non-sequential calc of p 850*25c28e83SPiotr Jasiukajtis ! OLD : p = r * ( 1 + r * ( B1 + r * ( B2 + r * B3) ) ) 851*25c28e83SPiotr Jasiukajtis ! NEW : p = r * [ (1+r*B1) + (r*r) * ( B2 + r * B3) ) ] 852*25c28e83SPiotr Jasiukajtis ! 853*25c28e83SPiotr Jasiukajtis ! let SLi Ri SRi be accumulators 854*25c28e83SPiotr Jasiukajtis 855*25c28e83SPiotr Jasiukajtis fmuld %f0,B3,%f2 ! SR1 = r1 * B3 856*25c28e83SPiotr Jasiukajtis fdtoi %f8,%f8 ! convert k+j/256 to int 857*25c28e83SPiotr Jasiukajtis st %f8,[%fp+m0] ! store k, to shift return/use 858*25c28e83SPiotr Jasiukajtis 859*25c28e83SPiotr Jasiukajtis fmuld %f10,B3,%f12 ! SR2 = r2 * B3 860*25c28e83SPiotr Jasiukajtis fdtoi %f18,%f18 ! convert k+j/256 to int 861*25c28e83SPiotr Jasiukajtis st %f18,[%fp+m1] ! store k, to shift return/use 862*25c28e83SPiotr Jasiukajtis 863*25c28e83SPiotr Jasiukajtis fmuld %f20,B3,%f22 ! SR3 = r3 * B3 864*25c28e83SPiotr Jasiukajtis fdtoi %f28,%f28 ! convert k+j/256 to int 865*25c28e83SPiotr Jasiukajtis st %f28,[%fp+m2] ! store k, to shift return/use 866*25c28e83SPiotr Jasiukajtis 867*25c28e83SPiotr Jasiukajtis fmuld %f0,%f0,%f4 ! R1 = r1 * r1 868*25c28e83SPiotr Jasiukajtis 869*25c28e83SPiotr Jasiukajtis fmuld %f10,%f10,%f14 ! R2 = r2 * r2 870*25c28e83SPiotr Jasiukajtis faddd %f2,B2,%f2 ! SR1 += B2 871*25c28e83SPiotr Jasiukajtis 872*25c28e83SPiotr Jasiukajtis fmuld %f20,%f20,%f24 ! R3 = r3 * r3 873*25c28e83SPiotr Jasiukajtis faddd %f12,B2,%f12 ! SR2 += B2 874*25c28e83SPiotr Jasiukajtis 875*25c28e83SPiotr Jasiukajtis faddd %f22,B2,%f22 ! SR3 += B2 876*25c28e83SPiotr Jasiukajtis fmuld %f0,B1,%f6 ! SL1 = r1 * B1 877*25c28e83SPiotr Jasiukajtis 878*25c28e83SPiotr Jasiukajtis fmuld %f10,B1,%f32 ! SL2 = r2 * B1 879*25c28e83SPiotr Jasiukajtis fand %f8,NEGINF,%f8 880*25c28e83SPiotr Jasiukajtis ! best here for RAW BYPASS 881*25c28e83SPiotr Jasiukajtis ld [%fp+m0],%l0 ! get nonshifted k into intreg 882*25c28e83SPiotr Jasiukajtis 883*25c28e83SPiotr Jasiukajtis fmuld %f20,B1,%f34 ! SL3 = r3 * B1 884*25c28e83SPiotr Jasiukajtis fand %f18,NEGINF,%f18 885*25c28e83SPiotr Jasiukajtis ld [%fp+m1],%l1 ! get nonshifted k into intreg 886*25c28e83SPiotr Jasiukajtis 887*25c28e83SPiotr Jasiukajtis fmuld %f4,%f2,%f4 ! R1 = R1 * SR1 888*25c28e83SPiotr Jasiukajtis fand %f28,NEGINF,%f28 889*25c28e83SPiotr Jasiukajtis ld [%fp+m2],%l2 ! get nonshifted k into intreg 890*25c28e83SPiotr Jasiukajtis 891*25c28e83SPiotr Jasiukajtis fmuld %f14,%f12,%f14 ! R2 = R2 * SR2 892*25c28e83SPiotr Jasiukajtis faddd %f6,ONE,%f6 ! SL1 += 1 893*25c28e83SPiotr Jasiukajtis 894*25c28e83SPiotr Jasiukajtis fmuld %f24,%f22,%f24 ! R3 = R3 * SR3 895*25c28e83SPiotr Jasiukajtis faddd %f32,ONE,%f32 ! SL2 += 1 896*25c28e83SPiotr Jasiukajtis sra %l0,8,%l3 ! shift k tobe offset 256-8byte 897*25c28e83SPiotr Jasiukajtis 898*25c28e83SPiotr Jasiukajtis faddd %f34,ONE,%f34 ! SL3 += 1 899*25c28e83SPiotr Jasiukajtis sra %l1,8,%l4 ! shift k tobe offset 256-8byte 900*25c28e83SPiotr Jasiukajtis sra %l2,8,%l5 ! shift k tobe offset 256-8byte 901*25c28e83SPiotr Jasiukajtis 902*25c28e83SPiotr Jasiukajtis ! BUBBLE in USIII 903*25c28e83SPiotr Jasiukajtis and %l3,0xff0,%l3 904*25c28e83SPiotr Jasiukajtis and %l4,0xff0,%l4 905*25c28e83SPiotr Jasiukajtis 906*25c28e83SPiotr Jasiukajtis 907*25c28e83SPiotr Jasiukajtis 908*25c28e83SPiotr Jasiukajtis faddd %f6,%f4,%f6 ! R1 = SL1 + R1 909*25c28e83SPiotr Jasiukajtis ldd [%g1+%l3],%f4 ! tbl[j] 910*25c28e83SPiotr Jasiukajtis add %l3,8,%l3 ! inc j 911*25c28e83SPiotr Jasiukajtis and %l5,0xff0,%l5 912*25c28e83SPiotr Jasiukajtis 913*25c28e83SPiotr Jasiukajtis 914*25c28e83SPiotr Jasiukajtis faddd %f32,%f14,%f32 ! R2 = SL2 + R2 915*25c28e83SPiotr Jasiukajtis ldd [%g1+%l4],%f14 ! tbl[j] 916*25c28e83SPiotr Jasiukajtis add %l4,8,%l4 ! inc j 917*25c28e83SPiotr Jasiukajtis sra %l0,20,%o3 918*25c28e83SPiotr Jasiukajtis 919*25c28e83SPiotr Jasiukajtis faddd %f34,%f24,%f34 ! R3 = SL3 + R3 920*25c28e83SPiotr Jasiukajtis ldd [%g1+%l5],%f24 ! tbl[j] 921*25c28e83SPiotr Jasiukajtis add %l5,8,%l5 ! inc j 922*25c28e83SPiotr Jasiukajtis sra %l1,20,%l1 923*25c28e83SPiotr Jasiukajtis 924*25c28e83SPiotr Jasiukajtis ! BUBBLE in USIII 925*25c28e83SPiotr Jasiukajtis ldd [%g1+%l4],%f16 ! tbl[j+1] 926*25c28e83SPiotr Jasiukajtis add %o3,1021,%o3 ! inc j 927*25c28e83SPiotr Jasiukajtis 928*25c28e83SPiotr Jasiukajtis fmuld %f0,%f6,%f0 ! p1 = r1 * R1 929*25c28e83SPiotr Jasiukajtis ldd [%g1+%l3],%f6 ! tbl[j+1] 930*25c28e83SPiotr Jasiukajtis add %l1,1021,%l1 ! inc j 931*25c28e83SPiotr Jasiukajtis sra %l2,20,%l2 932*25c28e83SPiotr Jasiukajtis 933*25c28e83SPiotr Jasiukajtis fmuld %f10,%f32,%f10 ! p2 = r2 * R2 934*25c28e83SPiotr Jasiukajtis ldd [%g1+%l5],%f26 ! tbl[j+1] 935*25c28e83SPiotr Jasiukajtis add %l2,1021,%l2 ! inc j 936*25c28e83SPiotr Jasiukajtis 937*25c28e83SPiotr Jasiukajtis fmuld %f20,%f34,%f20 ! p3 = r3 * R3 938*25c28e83SPiotr Jasiukajtis 939*25c28e83SPiotr Jasiukajtis 940*25c28e83SPiotr Jasiukajtis 941*25c28e83SPiotr Jasiukajtis 942*25c28e83SPiotr Jasiukajtis 943*25c28e83SPiotr Jasiukajtis!!!!!!!!!!!!!!!!!!! poly-reorder - ends here 944*25c28e83SPiotr Jasiukajtis 945*25c28e83SPiotr Jasiukajtis fmuld %f0,%f4,%f0 ! start exp(x) = exp(r) * tbl[j] 946*25c28e83SPiotr Jasiukajtis mov %o0,%l3 947*25c28e83SPiotr Jasiukajtis 948*25c28e83SPiotr Jasiukajtis fmuld %f10,%f14,%f10 949*25c28e83SPiotr Jasiukajtis mov %o1,%l4 950*25c28e83SPiotr Jasiukajtis 951*25c28e83SPiotr Jasiukajtis fmuld %f20,%f24,%f20 952*25c28e83SPiotr Jasiukajtis mov %o2,%l5 953*25c28e83SPiotr Jasiukajtis 954*25c28e83SPiotr Jasiukajtis faddd %f0,%f6,%f6 ! cont exp(x) : apply tbl[j] high bits 955*25c28e83SPiotr Jasiukajtis lda [%i1]%asi,%l0 ! preload next argument 956*25c28e83SPiotr Jasiukajtis 957*25c28e83SPiotr Jasiukajtis faddd %f10,%f16,%f16 958*25c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f0 959*25c28e83SPiotr Jasiukajtis 960*25c28e83SPiotr Jasiukajtis faddd %f20,%f26,%f26 961*25c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f1 962*25c28e83SPiotr Jasiukajtis 963*25c28e83SPiotr Jasiukajtis faddd %f6,%f4,%f6 ! cont exp(x) : apply tbl[j+1] low bits 964*25c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 965*25c28e83SPiotr Jasiukajtis 966*25c28e83SPiotr Jasiukajtis faddd %f16,%f14,%f16 967*25c28e83SPiotr Jasiukajtis andn %l0,%i5,%l0 968*25c28e83SPiotr Jasiukajtis or %o3,%l1,%o4 969*25c28e83SPiotr Jasiukajtis 970*25c28e83SPiotr Jasiukajtis! -- 16 byte aligned 971*25c28e83SPiotr Jasiukajtis orcc %o4,%l2,%o4 972*25c28e83SPiotr Jasiukajtis bl,pn %icc,.small 973*25c28e83SPiotr Jasiukajtis! delay slot 974*25c28e83SPiotr Jasiukajtis faddd %f26,%f24,%f26 975*25c28e83SPiotr Jasiukajtis 976*25c28e83SPiotr Jasiukajtis fpadd32 %f6,%f8,%f6 ! done exp(x) : apply 2^k 977*25c28e83SPiotr Jasiukajtis fpadd32 %f16,%f18,%f16 978*25c28e83SPiotr Jasiukajtis 979*25c28e83SPiotr Jasiukajtis 980*25c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 981*25c28e83SPiotr Jasiukajtis bg,pn %icc,.loop0 982*25c28e83SPiotr Jasiukajtis! delay slot 983*25c28e83SPiotr Jasiukajtis fpadd32 %f26,%f28,%f26 984*25c28e83SPiotr Jasiukajtis 985*25c28e83SPiotr Jasiukajtis ba,pt %icc,.endloop0 986*25c28e83SPiotr Jasiukajtis! delay slot 987*25c28e83SPiotr Jasiukajtis nop 988*25c28e83SPiotr Jasiukajtis 989*25c28e83SPiotr Jasiukajtis 990*25c28e83SPiotr Jasiukajtis .align 16 991*25c28e83SPiotr Jasiukajtis.small: 992*25c28e83SPiotr Jasiukajtis tst %o3 993*25c28e83SPiotr Jasiukajtis bge,pt %icc,1f 994*25c28e83SPiotr Jasiukajtis! delay slot 995*25c28e83SPiotr Jasiukajtis fpadd32 %f6,%f8,%f6 996*25c28e83SPiotr Jasiukajtis fpadd32 %f6,BOUNDRY,%f6 997*25c28e83SPiotr Jasiukajtis fmuld %f6,TINY,%f6 998*25c28e83SPiotr Jasiukajtis1: 999*25c28e83SPiotr Jasiukajtis tst %l1 1000*25c28e83SPiotr Jasiukajtis bge,pt %icc,1f 1001*25c28e83SPiotr Jasiukajtis! delay slot 1002*25c28e83SPiotr Jasiukajtis fpadd32 %f16,%f18,%f16 1003*25c28e83SPiotr Jasiukajtis fpadd32 %f16,BOUNDRY,%f16 1004*25c28e83SPiotr Jasiukajtis fmuld %f16,TINY,%f16 1005*25c28e83SPiotr Jasiukajtis1: 1006*25c28e83SPiotr Jasiukajtis tst %l2 1007*25c28e83SPiotr Jasiukajtis bge,pt %icc,1f 1008*25c28e83SPiotr Jasiukajtis! delay slot 1009*25c28e83SPiotr Jasiukajtis fpadd32 %f26,%f28,%f26 1010*25c28e83SPiotr Jasiukajtis fpadd32 %f26,BOUNDRY,%f26 1011*25c28e83SPiotr Jasiukajtis fmuld %f26,TINY,%f26 1012*25c28e83SPiotr Jasiukajtis1: 1013*25c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 1014*25c28e83SPiotr Jasiukajtis bg,pn %icc,.loop0 1015*25c28e83SPiotr Jasiukajtis! delay slot 1016*25c28e83SPiotr Jasiukajtis nop 1017*25c28e83SPiotr Jasiukajtis ba,pt %icc,.endloop0 1018*25c28e83SPiotr Jasiukajtis! delay slot 1019*25c28e83SPiotr Jasiukajtis nop 1020*25c28e83SPiotr Jasiukajtis 1021*25c28e83SPiotr Jasiukajtis 1022*25c28e83SPiotr Jasiukajtis.endloop2: 1023*25c28e83SPiotr Jasiukajtis for %f12,TWO96,%f12 1024*25c28e83SPiotr Jasiukajtis fmuld %f10,INVLN2_256,%f14 1025*25c28e83SPiotr Jasiukajtis faddd %f14,%f12,%f14 1026*25c28e83SPiotr Jasiukajtis fsubd %f14,%f12,%f18 1027*25c28e83SPiotr Jasiukajtis fmuld %f18,LN2_256H,%f12 1028*25c28e83SPiotr Jasiukajtis fsubd %f10,%f12,%f10 1029*25c28e83SPiotr Jasiukajtis fmuld %f18,LN2_256L,%f14 1030*25c28e83SPiotr Jasiukajtis fsubd %f10,%f14,%f10 1031*25c28e83SPiotr Jasiukajtis fmuld %f10,B3,%f12 1032*25c28e83SPiotr Jasiukajtis fdtoi %f18,%f18 1033*25c28e83SPiotr Jasiukajtis st %f18,[%fp+m1] 1034*25c28e83SPiotr Jasiukajtis fmuld %f10,%f10,%f14 1035*25c28e83SPiotr Jasiukajtis faddd %f12,B2,%f12 1036*25c28e83SPiotr Jasiukajtis fmuld %f10,B1,%f32 1037*25c28e83SPiotr Jasiukajtis fand %f18,NEGINF,%f18 1038*25c28e83SPiotr Jasiukajtis ld [%fp+m1],%l1 1039*25c28e83SPiotr Jasiukajtis fmuld %f14,%f12,%f14 1040*25c28e83SPiotr Jasiukajtis faddd %f32,ONE,%f32 1041*25c28e83SPiotr Jasiukajtis sra %l1,8,%o4 1042*25c28e83SPiotr Jasiukajtis and %o4,0xff0,%o4 1043*25c28e83SPiotr Jasiukajtis faddd %f32,%f14,%f32 1044*25c28e83SPiotr Jasiukajtis ldd [%g1+%o4],%f14 1045*25c28e83SPiotr Jasiukajtis add %o4,8,%o4 1046*25c28e83SPiotr Jasiukajtis sra %l1,20,%l1 1047*25c28e83SPiotr Jasiukajtis ldd [%g1+%o4],%f30 1048*25c28e83SPiotr Jasiukajtis addcc %l1,1021,%l1 1049*25c28e83SPiotr Jasiukajtis fmuld %f10,%f32,%f10 1050*25c28e83SPiotr Jasiukajtis fmuld %f10,%f14,%f10 1051*25c28e83SPiotr Jasiukajtis faddd %f10,%f30,%f30 1052*25c28e83SPiotr Jasiukajtis faddd %f30,%f14,%f30 1053*25c28e83SPiotr Jasiukajtis bge,pt %icc,1f 1054*25c28e83SPiotr Jasiukajtis! delay slot 1055*25c28e83SPiotr Jasiukajtis fpadd32 %f30,%f18,%f30 1056*25c28e83SPiotr Jasiukajtis fpadd32 %f30,BOUNDRY,%f30 1057*25c28e83SPiotr Jasiukajtis fmuld %f30,TINY,%f30 1058*25c28e83SPiotr Jasiukajtis1: 1059*25c28e83SPiotr Jasiukajtis st %f30,[%o1] 1060*25c28e83SPiotr Jasiukajtis st %f31,[%o1+4] 1061*25c28e83SPiotr Jasiukajtis 1062*25c28e83SPiotr Jasiukajtis.endloop1: 1063*25c28e83SPiotr Jasiukajtis for %f2,TWO96,%f2 1064*25c28e83SPiotr Jasiukajtis fmuld %f0,INVLN2_256,%f4 1065*25c28e83SPiotr Jasiukajtis faddd %f4,%f2,%f4 1066*25c28e83SPiotr Jasiukajtis fsubd %f4,%f2,%f8 1067*25c28e83SPiotr Jasiukajtis fmuld %f8,LN2_256H,%f2 1068*25c28e83SPiotr Jasiukajtis fsubd %f0,%f2,%f0 1069*25c28e83SPiotr Jasiukajtis fmuld %f8,LN2_256L,%f4 1070*25c28e83SPiotr Jasiukajtis fsubd %f0,%f4,%f0 1071*25c28e83SPiotr Jasiukajtis fmuld %f0,B3,%f2 1072*25c28e83SPiotr Jasiukajtis fdtoi %f8,%f8 1073*25c28e83SPiotr Jasiukajtis st %f8,[%fp+m0] 1074*25c28e83SPiotr Jasiukajtis fmuld %f0,%f0,%f4 1075*25c28e83SPiotr Jasiukajtis faddd %f2,B2,%f2 1076*25c28e83SPiotr Jasiukajtis fmuld %f0,B1,%f32 1077*25c28e83SPiotr Jasiukajtis fand %f8,NEGINF,%f8 1078*25c28e83SPiotr Jasiukajtis ld [%fp+m0],%l0 1079*25c28e83SPiotr Jasiukajtis fmuld %f4,%f2,%f4 1080*25c28e83SPiotr Jasiukajtis faddd %f32,ONE,%f32 1081*25c28e83SPiotr Jasiukajtis sra %l0,8,%o4 1082*25c28e83SPiotr Jasiukajtis and %o4,0xff0,%o4 1083*25c28e83SPiotr Jasiukajtis faddd %f32,%f4,%f32 1084*25c28e83SPiotr Jasiukajtis ldd [%g1+%o4],%f4 1085*25c28e83SPiotr Jasiukajtis add %o4,8,%o4 1086*25c28e83SPiotr Jasiukajtis sra %l0,20,%o3 1087*25c28e83SPiotr Jasiukajtis ldd [%g1+%o4],%f30 1088*25c28e83SPiotr Jasiukajtis addcc %o3,1021,%o3 1089*25c28e83SPiotr Jasiukajtis fmuld %f0,%f32,%f0 1090*25c28e83SPiotr Jasiukajtis fmuld %f0,%f4,%f0 1091*25c28e83SPiotr Jasiukajtis faddd %f0,%f30,%f30 1092*25c28e83SPiotr Jasiukajtis faddd %f30,%f4,%f30 1093*25c28e83SPiotr Jasiukajtis bge,pt %icc,1f 1094*25c28e83SPiotr Jasiukajtis! delay slot 1095*25c28e83SPiotr Jasiukajtis fpadd32 %f30,%f8,%f30 1096*25c28e83SPiotr Jasiukajtis fpadd32 %f30,BOUNDRY,%f30 1097*25c28e83SPiotr Jasiukajtis fmuld %f30,TINY,%f30 1098*25c28e83SPiotr Jasiukajtis1: 1099*25c28e83SPiotr Jasiukajtis st %f30,[%o0] 1100*25c28e83SPiotr Jasiukajtis st %f31,[%o0+4] 1101*25c28e83SPiotr Jasiukajtis 1102*25c28e83SPiotr Jasiukajtis.endloop0: 1103*25c28e83SPiotr Jasiukajtis st %f6,[%l3] 1104*25c28e83SPiotr Jasiukajtis st %f7,[%l3+4] 1105*25c28e83SPiotr Jasiukajtis st %f16,[%l4] 1106*25c28e83SPiotr Jasiukajtis st %f17,[%l4+4] 1107*25c28e83SPiotr Jasiukajtis st %f26,[%l5] 1108*25c28e83SPiotr Jasiukajtis st %f27,[%l5+4] 1109*25c28e83SPiotr Jasiukajtis ret 1110*25c28e83SPiotr Jasiukajtis restore 1111*25c28e83SPiotr Jasiukajtis 1112*25c28e83SPiotr Jasiukajtis 1113*25c28e83SPiotr Jasiukajtis.range0: 1114*25c28e83SPiotr Jasiukajtis cmp %l0,%l6 1115*25c28e83SPiotr Jasiukajtis bl,a,pt %icc,3f ! if x is tiny 1116*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 1117*25c28e83SPiotr Jasiukajtis faddd %f0,ONE,%f4 1118*25c28e83SPiotr Jasiukajtis 1119*25c28e83SPiotr Jasiukajtis cmp %l0,%o5 1120*25c28e83SPiotr Jasiukajtis bg,pt %icc,1f ! if x is huge, inf, nan 1121*25c28e83SPiotr Jasiukajtis! delay slot 1122*25c28e83SPiotr Jasiukajtis nop 1123*25c28e83SPiotr Jasiukajtis 1124*25c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f0,THRESH 1125*25c28e83SPiotr Jasiukajtis fbg,a,pt %fcc0,3f ! if x is huge and positive 1126*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 1127*25c28e83SPiotr Jasiukajtis fmuld HUGE,HUGE,%f4 1128*25c28e83SPiotr Jasiukajtis 1129*25c28e83SPiotr Jasiukajtis! x is near the extremes but within range; return to the loop 1130*25c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 1131*25c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 1132*25c28e83SPiotr Jasiukajtis ble,pn %icc,.endloop1 1133*25c28e83SPiotr Jasiukajtis! delay slot 1134*25c28e83SPiotr Jasiukajtis andn %l1,%i5,%l1 1135*25c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 1136*25c28e83SPiotr Jasiukajtis for %f2,TWO96,%f2 1137*25c28e83SPiotr Jasiukajtis ba,pt %icc,.loop1 1138*25c28e83SPiotr Jasiukajtis! delay slot 1139*25c28e83SPiotr Jasiukajtis fmuld %f0,INVLN2_256,%f4 1140*25c28e83SPiotr Jasiukajtis 1141*25c28e83SPiotr Jasiukajtis1: 1142*25c28e83SPiotr Jasiukajtis cmp %l0,%o7 1143*25c28e83SPiotr Jasiukajtis bl,pn %icc,2f ! if x is finite 1144*25c28e83SPiotr Jasiukajtis! delay slot 1145*25c28e83SPiotr Jasiukajtis nop 1146*25c28e83SPiotr Jasiukajtis fzero %f4 1147*25c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f0,NEGINF 1148*25c28e83SPiotr Jasiukajtis fmovdne %fcc0,%f0,%f4 1149*25c28e83SPiotr Jasiukajtis ba,pt %icc,3f 1150*25c28e83SPiotr Jasiukajtis fmuld %f4,%f4,%f4 ! x*x or zero*zero 1151*25c28e83SPiotr Jasiukajtis2: 1152*25c28e83SPiotr Jasiukajtis fmovd HUGE,%f4 1153*25c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f0,ONE 1154*25c28e83SPiotr Jasiukajtis fmovdl %fcc0,TINY,%f4 1155*25c28e83SPiotr Jasiukajtis fmuld %f4,%f4,%f4 ! huge*huge or tiny*tiny 1156*25c28e83SPiotr Jasiukajtis3: 1157*25c28e83SPiotr Jasiukajtis st %f4,[%o0] 1158*25c28e83SPiotr Jasiukajtis andn %l1,%i5,%l0 1159*25c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 1160*25c28e83SPiotr Jasiukajtis fmovd %f10,%f0 1161*25c28e83SPiotr Jasiukajtis st %f5,[%o0+4] 1162*25c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 1163*25c28e83SPiotr Jasiukajtis bg,pt %icc,.loop0 1164*25c28e83SPiotr Jasiukajtis! delay slot 1165*25c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 1166*25c28e83SPiotr Jasiukajtis ba,pt %icc,.endloop0 1167*25c28e83SPiotr Jasiukajtis! delay slot 1168*25c28e83SPiotr Jasiukajtis nop 1169*25c28e83SPiotr Jasiukajtis 1170*25c28e83SPiotr Jasiukajtis 1171*25c28e83SPiotr Jasiukajtis.range1: 1172*25c28e83SPiotr Jasiukajtis cmp %l1,%l6 1173*25c28e83SPiotr Jasiukajtis bl,a,pt %icc,3f ! if x is tiny 1174*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 1175*25c28e83SPiotr Jasiukajtis faddd %f10,ONE,%f14 1176*25c28e83SPiotr Jasiukajtis 1177*25c28e83SPiotr Jasiukajtis cmp %l1,%o5 1178*25c28e83SPiotr Jasiukajtis bg,pt %icc,1f ! if x is huge, inf, nan 1179*25c28e83SPiotr Jasiukajtis! delay slot 1180*25c28e83SPiotr Jasiukajtis nop 1181*25c28e83SPiotr Jasiukajtis 1182*25c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f10,THRESH 1183*25c28e83SPiotr Jasiukajtis fbg,a,pt %fcc0,3f ! if x is huge and positive 1184*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 1185*25c28e83SPiotr Jasiukajtis fmuld HUGE,HUGE,%f14 1186*25c28e83SPiotr Jasiukajtis 1187*25c28e83SPiotr Jasiukajtis! x is near the extremes but within range; return to the loop 1188*25c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 1189*25c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 1190*25c28e83SPiotr Jasiukajtis ble,pn %icc,.endloop2 1191*25c28e83SPiotr Jasiukajtis! delay slot 1192*25c28e83SPiotr Jasiukajtis andn %l2,%i5,%l2 1193*25c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 1194*25c28e83SPiotr Jasiukajtis for %f12,TWO96,%f12 1195*25c28e83SPiotr Jasiukajtis ba,pt %icc,.loop2 1196*25c28e83SPiotr Jasiukajtis! delay slot 1197*25c28e83SPiotr Jasiukajtis fmuld %f10,INVLN2_256,%f14 1198*25c28e83SPiotr Jasiukajtis 1199*25c28e83SPiotr Jasiukajtis1: 1200*25c28e83SPiotr Jasiukajtis cmp %l1,%o7 1201*25c28e83SPiotr Jasiukajtis bl,pn %icc,2f ! if x is finite 1202*25c28e83SPiotr Jasiukajtis! delay slot 1203*25c28e83SPiotr Jasiukajtis nop 1204*25c28e83SPiotr Jasiukajtis fzero %f14 1205*25c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f10,NEGINF 1206*25c28e83SPiotr Jasiukajtis fmovdne %fcc0,%f10,%f14 1207*25c28e83SPiotr Jasiukajtis ba,pt %icc,3f 1208*25c28e83SPiotr Jasiukajtis fmuld %f14,%f14,%f14 ! x*x or zero*zero 1209*25c28e83SPiotr Jasiukajtis2: 1210*25c28e83SPiotr Jasiukajtis fmovd HUGE,%f14 1211*25c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f10,ONE 1212*25c28e83SPiotr Jasiukajtis fmovdl %fcc0,TINY,%f14 1213*25c28e83SPiotr Jasiukajtis fmuld %f14,%f14,%f14 ! huge*huge or tiny*tiny 1214*25c28e83SPiotr Jasiukajtis3: 1215*25c28e83SPiotr Jasiukajtis st %f14,[%o1] 1216*25c28e83SPiotr Jasiukajtis andn %l2,%i5,%l1 1217*25c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 1218*25c28e83SPiotr Jasiukajtis fmovd %f20,%f10 1219*25c28e83SPiotr Jasiukajtis st %f15,[%o1+4] 1220*25c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 1221*25c28e83SPiotr Jasiukajtis bg,pt %icc,.loop1 1222*25c28e83SPiotr Jasiukajtis! delay slot 1223*25c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 1224*25c28e83SPiotr Jasiukajtis ba,pt %icc,.endloop1 1225*25c28e83SPiotr Jasiukajtis! delay slot 1226*25c28e83SPiotr Jasiukajtis nop 1227*25c28e83SPiotr Jasiukajtis 1228*25c28e83SPiotr Jasiukajtis 1229*25c28e83SPiotr Jasiukajtis.range2: 1230*25c28e83SPiotr Jasiukajtis cmp %l2,%l6 1231*25c28e83SPiotr Jasiukajtis bl,a,pt %icc,3f ! if x is tiny 1232*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 1233*25c28e83SPiotr Jasiukajtis faddd %f20,ONE,%f24 1234*25c28e83SPiotr Jasiukajtis 1235*25c28e83SPiotr Jasiukajtis cmp %l2,%o5 1236*25c28e83SPiotr Jasiukajtis bg,pt %icc,1f ! if x is huge, inf, nan 1237*25c28e83SPiotr Jasiukajtis! delay slot 1238*25c28e83SPiotr Jasiukajtis nop 1239*25c28e83SPiotr Jasiukajtis 1240*25c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f20,THRESH 1241*25c28e83SPiotr Jasiukajtis fbg,a,pt %fcc0,3f ! if x is huge and positive 1242*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 1243*25c28e83SPiotr Jasiukajtis fmuld HUGE,HUGE,%f24 1244*25c28e83SPiotr Jasiukajtis 1245*25c28e83SPiotr Jasiukajtis! x is near the extremes but within range; return to the loop 1246*25c28e83SPiotr Jasiukajtis ba,pt %icc,.cont 1247*25c28e83SPiotr Jasiukajtis! delay slot 1248*25c28e83SPiotr Jasiukajtis faddd %f4,%f2,%f4 1249*25c28e83SPiotr Jasiukajtis 1250*25c28e83SPiotr Jasiukajtis1: 1251*25c28e83SPiotr Jasiukajtis cmp %l2,%o7 1252*25c28e83SPiotr Jasiukajtis bl,pn %icc,2f ! if x is finite 1253*25c28e83SPiotr Jasiukajtis! delay slot 1254*25c28e83SPiotr Jasiukajtis nop 1255*25c28e83SPiotr Jasiukajtis fzero %f24 1256*25c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f20,NEGINF 1257*25c28e83SPiotr Jasiukajtis fmovdne %fcc0,%f20,%f24 1258*25c28e83SPiotr Jasiukajtis ba,pt %icc,3f 1259*25c28e83SPiotr Jasiukajtis fmuld %f24,%f24,%f24 ! x*x or zero*zero 1260*25c28e83SPiotr Jasiukajtis2: 1261*25c28e83SPiotr Jasiukajtis fmovd HUGE,%f24 1262*25c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f20,ONE 1263*25c28e83SPiotr Jasiukajtis fmovdl %fcc0,TINY,%f24 1264*25c28e83SPiotr Jasiukajtis fmuld %f24,%f24,%f24 ! huge*huge or tiny*tiny 1265*25c28e83SPiotr Jasiukajtis3: 1266*25c28e83SPiotr Jasiukajtis st %f24,[%i3] 1267*25c28e83SPiotr Jasiukajtis st %f25,[%i3+4] 1268*25c28e83SPiotr Jasiukajtis lda [%i1]%asi,%l2 ! preload next argument 1269*25c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f20 1270*25c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f21 1271*25c28e83SPiotr Jasiukajtis andn %l2,%i5,%l2 1272*25c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 1273*25c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 1274*25c28e83SPiotr Jasiukajtis bg,pt %icc,.loop2 1275*25c28e83SPiotr Jasiukajtis! delay slot 1276*25c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 1277*25c28e83SPiotr Jasiukajtis ba,pt %icc,.endloop2 1278*25c28e83SPiotr Jasiukajtis! delay slot 1279*25c28e83SPiotr Jasiukajtis nop 1280*25c28e83SPiotr Jasiukajtis 1281*25c28e83SPiotr Jasiukajtis SET_SIZE(__vexp) 1282*25c28e83SPiotr Jasiukajtis 1283