125c28e83SPiotr Jasiukajtis/* 225c28e83SPiotr Jasiukajtis * CDDL HEADER START 325c28e83SPiotr Jasiukajtis * 425c28e83SPiotr Jasiukajtis * The contents of this file are subject to the terms of the 525c28e83SPiotr Jasiukajtis * Common Development and Distribution License (the "License"). 625c28e83SPiotr Jasiukajtis * You may not use this file except in compliance with the License. 725c28e83SPiotr Jasiukajtis * 825c28e83SPiotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 925c28e83SPiotr Jasiukajtis * or http://www.opensolaris.org/os/licensing. 1025c28e83SPiotr Jasiukajtis * See the License for the specific language governing permissions 1125c28e83SPiotr Jasiukajtis * and limitations under the License. 1225c28e83SPiotr Jasiukajtis * 1325c28e83SPiotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each 1425c28e83SPiotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1525c28e83SPiotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the 1625c28e83SPiotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying 1725c28e83SPiotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner] 1825c28e83SPiotr Jasiukajtis * 1925c28e83SPiotr Jasiukajtis * CDDL HEADER END 2025c28e83SPiotr Jasiukajtis */ 2125c28e83SPiotr Jasiukajtis/* 2225c28e83SPiotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc. All rights reserved. 2325c28e83SPiotr Jasiukajtis */ 2425c28e83SPiotr Jasiukajtis/* 2525c28e83SPiotr Jasiukajtis * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 2625c28e83SPiotr Jasiukajtis * Use is subject to license terms. 2725c28e83SPiotr Jasiukajtis */ 2825c28e83SPiotr Jasiukajtis 2925c28e83SPiotr Jasiukajtis .file "__vexp.S" 3025c28e83SPiotr Jasiukajtis 3125c28e83SPiotr Jasiukajtis#include "libm.h" 3225c28e83SPiotr Jasiukajtis 3325c28e83SPiotr Jasiukajtis RO_DATA 3425c28e83SPiotr Jasiukajtis 3525c28e83SPiotr Jasiukajtis/******************************************************************** 3625c28e83SPiotr Jasiukajtis * vexp() algorithm is from mopt:f_exp.c. Basics are included here 3725c28e83SPiotr Jasiukajtis * to supplement comments within this file. vexp() has been unrolled 3825c28e83SPiotr Jasiukajtis * to a depth of 3. Only element 0 is documented. 3925c28e83SPiotr Jasiukajtis * 4025c28e83SPiotr Jasiukajtis * Note 1: INVLN2_256, LN2_256H, and LN2_256L were originally scaled by 4125c28e83SPiotr Jasiukajtis * 2^44 to allow *2^k w/o shifting within the FP registers. These 4225c28e83SPiotr Jasiukajtis * had to be removed for CHEETAH to avoid the fdtox of a very large 4325c28e83SPiotr Jasiukajtis * number, which would trap to kernel (2^52). 4425c28e83SPiotr Jasiukajtis * 4525c28e83SPiotr Jasiukajtis * Let x = (k + j/256)ln2 + r 4625c28e83SPiotr Jasiukajtis * then exp(x) = exp(ln2^(k+j/256)) * exp(r) 4725c28e83SPiotr Jasiukajtis * = 2^k * 2^(j/256) * exp(r) 4825c28e83SPiotr Jasiukajtis * where r is polynomial approximation 4925c28e83SPiotr Jasiukajtis * exp(r) = 1 + r + r^2*B1 + r^3*B2 + r^4*B3 5025c28e83SPiotr Jasiukajtis * = 1 + r*(1+r*(B1+r*(B2+r*B3))) 5125c28e83SPiotr Jasiukajtis * let 5225c28e83SPiotr Jasiukajtis * p = r*(1+r*(B1+r*(B2+r*B3))) ! notice, not quite exp(r) 5325c28e83SPiotr Jasiukajtis * q = 2^(j/256) (high 64 bits) 5425c28e83SPiotr Jasiukajtis * t = 2^(j/256) (extra precision) ! both from _TBL_exp_z[] 5525c28e83SPiotr Jasiukajtis * then 5625c28e83SPiotr Jasiukajtis * 2^(j/256) * exp(r) = (q+t)(1+p) ~ q + ( t + q*p ) 5725c28e83SPiotr Jasiukajtis * then actual computation is 2^k * ( q + ( t + q*p ) ) 58*55fea89dSDan Cross * 5925c28e83SPiotr Jasiukajtis ********************************************************************/ 6025c28e83SPiotr Jasiukajtis 6125c28e83SPiotr Jasiukajtis .align 16 6225c28e83SPiotr JasiukajtisTBL: 6325c28e83SPiotr Jasiukajtis .word 0x3ff00000,0x00000000 6425c28e83SPiotr Jasiukajtis .word 0x00000000,0x00000000 6525c28e83SPiotr Jasiukajtis .word 0x3ff00b1a,0xfa5abcbf 6625c28e83SPiotr Jasiukajtis .word 0xbc84f6b2,0xa7609f71 6725c28e83SPiotr Jasiukajtis .word 0x3ff0163d,0xa9fb3335 6825c28e83SPiotr Jasiukajtis .word 0x3c9b6129,0x9ab8cdb7 6925c28e83SPiotr Jasiukajtis .word 0x3ff02168,0x143b0281 7025c28e83SPiotr Jasiukajtis .word 0xbc82bf31,0x0fc54eb6 7125c28e83SPiotr Jasiukajtis .word 0x3ff02c9a,0x3e778061 7225c28e83SPiotr Jasiukajtis .word 0xbc719083,0x535b085d 7325c28e83SPiotr Jasiukajtis .word 0x3ff037d4,0x2e11bbcc 7425c28e83SPiotr Jasiukajtis .word 0x3c656811,0xeeade11a 7525c28e83SPiotr Jasiukajtis .word 0x3ff04315,0xe86e7f85 7625c28e83SPiotr Jasiukajtis .word 0xbc90a31c,0x1977c96e 7725c28e83SPiotr Jasiukajtis .word 0x3ff04e5f,0x72f654b1 7825c28e83SPiotr Jasiukajtis .word 0x3c84c379,0x3aa0d08c 7925c28e83SPiotr Jasiukajtis .word 0x3ff059b0,0xd3158574 8025c28e83SPiotr Jasiukajtis .word 0x3c8d73e2,0xa475b465 8125c28e83SPiotr Jasiukajtis .word 0x3ff0650a,0x0e3c1f89 8225c28e83SPiotr Jasiukajtis .word 0xbc95cb7b,0x5799c396 8325c28e83SPiotr Jasiukajtis .word 0x3ff0706b,0x29ddf6de 8425c28e83SPiotr Jasiukajtis .word 0xbc8c91df,0xe2b13c26 8525c28e83SPiotr Jasiukajtis .word 0x3ff07bd4,0x2b72a836 8625c28e83SPiotr Jasiukajtis .word 0x3c832334,0x54458700 8725c28e83SPiotr Jasiukajtis .word 0x3ff08745,0x18759bc8 8825c28e83SPiotr Jasiukajtis .word 0x3c6186be,0x4bb284ff 8925c28e83SPiotr Jasiukajtis .word 0x3ff092bd,0xf66607e0 9025c28e83SPiotr Jasiukajtis .word 0xbc968063,0x800a3fd1 9125c28e83SPiotr Jasiukajtis .word 0x3ff09e3e,0xcac6f383 9225c28e83SPiotr Jasiukajtis .word 0x3c914878,0x18316136 9325c28e83SPiotr Jasiukajtis .word 0x3ff0a9c7,0x9b1f3919 9425c28e83SPiotr Jasiukajtis .word 0x3c85d16c,0x873d1d38 9525c28e83SPiotr Jasiukajtis .word 0x3ff0b558,0x6cf9890f 9625c28e83SPiotr Jasiukajtis .word 0x3c98a62e,0x4adc610a 9725c28e83SPiotr Jasiukajtis .word 0x3ff0c0f1,0x45e46c85 9825c28e83SPiotr Jasiukajtis .word 0x3c94f989,0x06d21cef 9925c28e83SPiotr Jasiukajtis .word 0x3ff0cc92,0x2b7247f7 10025c28e83SPiotr Jasiukajtis .word 0x3c901edc,0x16e24f71 10125c28e83SPiotr Jasiukajtis .word 0x3ff0d83b,0x23395dec 10225c28e83SPiotr Jasiukajtis .word 0xbc9bc14d,0xe43f316a 10325c28e83SPiotr Jasiukajtis .word 0x3ff0e3ec,0x32d3d1a2 10425c28e83SPiotr Jasiukajtis .word 0x3c403a17,0x27c57b53 10525c28e83SPiotr Jasiukajtis .word 0x3ff0efa5,0x5fdfa9c5 10625c28e83SPiotr Jasiukajtis .word 0xbc949db9,0xbc54021b 10725c28e83SPiotr Jasiukajtis .word 0x3ff0fb66,0xaffed31b 10825c28e83SPiotr Jasiukajtis .word 0xbc6b9bed,0xc44ebd7b 10925c28e83SPiotr Jasiukajtis .word 0x3ff10730,0x28d7233e 11025c28e83SPiotr Jasiukajtis .word 0x3c8d46eb,0x1692fdd5 11125c28e83SPiotr Jasiukajtis .word 0x3ff11301,0xd0125b51 11225c28e83SPiotr Jasiukajtis .word 0xbc96c510,0x39449b3a 11325c28e83SPiotr Jasiukajtis .word 0x3ff11edb,0xab5e2ab6 11425c28e83SPiotr Jasiukajtis .word 0xbc9ca454,0xf703fb72 11525c28e83SPiotr Jasiukajtis .word 0x3ff12abd,0xc06c31cc 11625c28e83SPiotr Jasiukajtis .word 0xbc51b514,0xb36ca5c7 11725c28e83SPiotr Jasiukajtis .word 0x3ff136a8,0x14f204ab 11825c28e83SPiotr Jasiukajtis .word 0xbc67108f,0xba48dcf0 11925c28e83SPiotr Jasiukajtis .word 0x3ff1429a,0xaea92de0 12025c28e83SPiotr Jasiukajtis .word 0xbc932fbf,0x9af1369e 12125c28e83SPiotr Jasiukajtis .word 0x3ff14e95,0x934f312e 12225c28e83SPiotr Jasiukajtis .word 0xbc8b91e8,0x39bf44ab 12325c28e83SPiotr Jasiukajtis .word 0x3ff15a98,0xc8a58e51 12425c28e83SPiotr Jasiukajtis .word 0x3c82406a,0xb9eeab0a 12525c28e83SPiotr Jasiukajtis .word 0x3ff166a4,0x5471c3c2 12625c28e83SPiotr Jasiukajtis .word 0x3c58f23b,0x82ea1a32 12725c28e83SPiotr Jasiukajtis .word 0x3ff172b8,0x3c7d517b 12825c28e83SPiotr Jasiukajtis .word 0xbc819041,0xb9d78a76 12925c28e83SPiotr Jasiukajtis .word 0x3ff17ed4,0x8695bbc0 13025c28e83SPiotr Jasiukajtis .word 0x3c709e3f,0xe2ac5a64 13125c28e83SPiotr Jasiukajtis .word 0x3ff18af9,0x388c8dea 13225c28e83SPiotr Jasiukajtis .word 0xbc911023,0xd1970f6c 13325c28e83SPiotr Jasiukajtis .word 0x3ff19726,0x58375d2f 13425c28e83SPiotr Jasiukajtis .word 0x3c94aadd,0x85f17e08 13525c28e83SPiotr Jasiukajtis .word 0x3ff1a35b,0xeb6fcb75 13625c28e83SPiotr Jasiukajtis .word 0x3c8e5b4c,0x7b4968e4 13725c28e83SPiotr Jasiukajtis .word 0x3ff1af99,0xf8138a1c 13825c28e83SPiotr Jasiukajtis .word 0x3c97bf85,0xa4b69280 13925c28e83SPiotr Jasiukajtis .word 0x3ff1bbe0,0x84045cd4 14025c28e83SPiotr Jasiukajtis .word 0xbc995386,0x352ef607 14125c28e83SPiotr Jasiukajtis .word 0x3ff1c82f,0x95281c6b 14225c28e83SPiotr Jasiukajtis .word 0x3c900977,0x8010f8c9 14325c28e83SPiotr Jasiukajtis .word 0x3ff1d487,0x3168b9aa 14425c28e83SPiotr Jasiukajtis .word 0x3c9e016e,0x00a2643c 14525c28e83SPiotr Jasiukajtis .word 0x3ff1e0e7,0x5eb44027 14625c28e83SPiotr Jasiukajtis .word 0xbc96fdd8,0x088cb6de 14725c28e83SPiotr Jasiukajtis .word 0x3ff1ed50,0x22fcd91d 14825c28e83SPiotr Jasiukajtis .word 0xbc91df98,0x027bb78c 14925c28e83SPiotr Jasiukajtis .word 0x3ff1f9c1,0x8438ce4d 15025c28e83SPiotr Jasiukajtis .word 0xbc9bf524,0xa097af5c 15125c28e83SPiotr Jasiukajtis .word 0x3ff2063b,0x88628cd6 15225c28e83SPiotr Jasiukajtis .word 0x3c8dc775,0x814a8494 15325c28e83SPiotr Jasiukajtis .word 0x3ff212be,0x3578a819 15425c28e83SPiotr Jasiukajtis .word 0x3c93592d,0x2cfcaac9 15525c28e83SPiotr Jasiukajtis .word 0x3ff21f49,0x917ddc96 15625c28e83SPiotr Jasiukajtis .word 0x3c82a97e,0x9494a5ee 15725c28e83SPiotr Jasiukajtis .word 0x3ff22bdd,0xa27912d1 15825c28e83SPiotr Jasiukajtis .word 0x3c8d34fb,0x5577d69e 15925c28e83SPiotr Jasiukajtis .word 0x3ff2387a,0x6e756238 16025c28e83SPiotr Jasiukajtis .word 0x3c99b07e,0xb6c70573 16125c28e83SPiotr Jasiukajtis .word 0x3ff2451f,0xfb82140a 16225c28e83SPiotr Jasiukajtis .word 0x3c8acfcc,0x911ca996 16325c28e83SPiotr Jasiukajtis .word 0x3ff251ce,0x4fb2a63f 16425c28e83SPiotr Jasiukajtis .word 0x3c8ac155,0xbef4f4a4 16525c28e83SPiotr Jasiukajtis .word 0x3ff25e85,0x711ece75 16625c28e83SPiotr Jasiukajtis .word 0x3c93e1a2,0x4ac31b2c 16725c28e83SPiotr Jasiukajtis .word 0x3ff26b45,0x65e27cdd 16825c28e83SPiotr Jasiukajtis .word 0x3c82bd33,0x9940e9d9 16925c28e83SPiotr Jasiukajtis .word 0x3ff2780e,0x341ddf29 17025c28e83SPiotr Jasiukajtis .word 0x3c9e067c,0x05f9e76c 17125c28e83SPiotr Jasiukajtis .word 0x3ff284df,0xe1f56381 17225c28e83SPiotr Jasiukajtis .word 0xbc9a4c3a,0x8c3f0d7e 17325c28e83SPiotr Jasiukajtis .word 0x3ff291ba,0x7591bb70 17425c28e83SPiotr Jasiukajtis .word 0xbc82cc72,0x28401cbc 17525c28e83SPiotr Jasiukajtis .word 0x3ff29e9d,0xf51fdee1 17625c28e83SPiotr Jasiukajtis .word 0x3c8612e8,0xafad1255 17725c28e83SPiotr Jasiukajtis .word 0x3ff2ab8a,0x66d10f13 17825c28e83SPiotr Jasiukajtis .word 0xbc995743,0x191690a7 17925c28e83SPiotr Jasiukajtis .word 0x3ff2b87f,0xd0dad990 18025c28e83SPiotr Jasiukajtis .word 0xbc410adc,0xd6381aa4 18125c28e83SPiotr Jasiukajtis .word 0x3ff2c57e,0x39771b2f 18225c28e83SPiotr Jasiukajtis .word 0xbc950145,0xa6eb5124 18325c28e83SPiotr Jasiukajtis .word 0x3ff2d285,0xa6e4030b 18425c28e83SPiotr Jasiukajtis .word 0x3c900247,0x54db41d5 18525c28e83SPiotr Jasiukajtis .word 0x3ff2df96,0x1f641589 18625c28e83SPiotr Jasiukajtis .word 0x3c9d16cf,0xfbbce198 18725c28e83SPiotr Jasiukajtis .word 0x3ff2ecaf,0xa93e2f56 18825c28e83SPiotr Jasiukajtis .word 0x3c71ca0f,0x45d52383 18925c28e83SPiotr Jasiukajtis .word 0x3ff2f9d2,0x4abd886b 19025c28e83SPiotr Jasiukajtis .word 0xbc653c55,0x532bda93 19125c28e83SPiotr Jasiukajtis .word 0x3ff306fe,0x0a31b715 19225c28e83SPiotr Jasiukajtis .word 0x3c86f46a,0xd23182e4 19325c28e83SPiotr Jasiukajtis .word 0x3ff31432,0xedeeb2fd 19425c28e83SPiotr Jasiukajtis .word 0x3c8959a3,0xf3f3fcd0 19525c28e83SPiotr Jasiukajtis .word 0x3ff32170,0xfc4cd831 19625c28e83SPiotr Jasiukajtis .word 0x3c8a9ce7,0x8e18047c 19725c28e83SPiotr Jasiukajtis .word 0x3ff32eb8,0x3ba8ea32 19825c28e83SPiotr Jasiukajtis .word 0xbc9c45e8,0x3cb4f318 19925c28e83SPiotr Jasiukajtis .word 0x3ff33c08,0xb26416ff 20025c28e83SPiotr Jasiukajtis .word 0x3c932721,0x843659a6 20125c28e83SPiotr Jasiukajtis .word 0x3ff34962,0x66e3fa2d 20225c28e83SPiotr Jasiukajtis .word 0xbc835a75,0x930881a4 20325c28e83SPiotr Jasiukajtis .word 0x3ff356c5,0x5f929ff1 20425c28e83SPiotr Jasiukajtis .word 0xbc8b5cee,0x5c4e4628 20525c28e83SPiotr Jasiukajtis .word 0x3ff36431,0xa2de883b 20625c28e83SPiotr Jasiukajtis .word 0xbc8c3144,0xa06cb85e 20725c28e83SPiotr Jasiukajtis .word 0x3ff371a7,0x373aa9cb 20825c28e83SPiotr Jasiukajtis .word 0xbc963aea,0xbf42eae2 20925c28e83SPiotr Jasiukajtis .word 0x3ff37f26,0x231e754a 21025c28e83SPiotr Jasiukajtis .word 0xbc99f5ca,0x9eceb23c 21125c28e83SPiotr Jasiukajtis .word 0x3ff38cae,0x6d05d866 21225c28e83SPiotr Jasiukajtis .word 0xbc9e958d,0x3c9904bd 21325c28e83SPiotr Jasiukajtis .word 0x3ff39a40,0x1b7140ef 21425c28e83SPiotr Jasiukajtis .word 0xbc99a9a5,0xfc8e2934 21525c28e83SPiotr Jasiukajtis .word 0x3ff3a7db,0x34e59ff7 21625c28e83SPiotr Jasiukajtis .word 0xbc75e436,0xd661f5e3 21725c28e83SPiotr Jasiukajtis .word 0x3ff3b57f,0xbfec6cf4 21825c28e83SPiotr Jasiukajtis .word 0x3c954c66,0xe26fff18 21925c28e83SPiotr Jasiukajtis .word 0x3ff3c32d,0xc313a8e5 22025c28e83SPiotr Jasiukajtis .word 0xbc9efff8,0x375d29c3 22125c28e83SPiotr Jasiukajtis .word 0x3ff3d0e5,0x44ede173 22225c28e83SPiotr Jasiukajtis .word 0x3c7fe8d0,0x8c284c71 22325c28e83SPiotr Jasiukajtis .word 0x3ff3dea6,0x4c123422 22425c28e83SPiotr Jasiukajtis .word 0x3c8ada09,0x11f09ebc 22525c28e83SPiotr Jasiukajtis .word 0x3ff3ec70,0xdf1c5175 22625c28e83SPiotr Jasiukajtis .word 0xbc8af663,0x7b8c9bca 22725c28e83SPiotr Jasiukajtis .word 0x3ff3fa45,0x04ac801c 22825c28e83SPiotr Jasiukajtis .word 0xbc97d023,0xf956f9f3 22925c28e83SPiotr Jasiukajtis .word 0x3ff40822,0xc367a024 23025c28e83SPiotr Jasiukajtis .word 0x3c8bddf8,0xb6f4d048 23125c28e83SPiotr Jasiukajtis .word 0x3ff4160a,0x21f72e2a 23225c28e83SPiotr Jasiukajtis .word 0xbc5ef369,0x1c309278 23325c28e83SPiotr Jasiukajtis .word 0x3ff423fb,0x2709468a 23425c28e83SPiotr Jasiukajtis .word 0xbc98462d,0xc0b314dd 23525c28e83SPiotr Jasiukajtis .word 0x3ff431f5,0xd950a897 23625c28e83SPiotr Jasiukajtis .word 0xbc81c7dd,0xe35f7998 23725c28e83SPiotr Jasiukajtis .word 0x3ff43ffa,0x3f84b9d4 23825c28e83SPiotr Jasiukajtis .word 0x3c8880be,0x9704c002 23925c28e83SPiotr Jasiukajtis .word 0x3ff44e08,0x6061892d 24025c28e83SPiotr Jasiukajtis .word 0x3c489b7a,0x04ef80d0 24125c28e83SPiotr Jasiukajtis .word 0x3ff45c20,0x42a7d232 24225c28e83SPiotr Jasiukajtis .word 0xbc686419,0x82fb1f8e 24325c28e83SPiotr Jasiukajtis .word 0x3ff46a41,0xed1d0057 24425c28e83SPiotr Jasiukajtis .word 0x3c9c944b,0xd1648a76 24525c28e83SPiotr Jasiukajtis .word 0x3ff4786d,0x668b3237 24625c28e83SPiotr Jasiukajtis .word 0xbc9c20f0,0xed445733 24725c28e83SPiotr Jasiukajtis .word 0x3ff486a2,0xb5c13cd0 24825c28e83SPiotr Jasiukajtis .word 0x3c73c1a3,0xb69062f0 24925c28e83SPiotr Jasiukajtis .word 0x3ff494e1,0xe192aed2 25025c28e83SPiotr Jasiukajtis .word 0xbc83b289,0x5e499ea0 25125c28e83SPiotr Jasiukajtis .word 0x3ff4a32a,0xf0d7d3de 25225c28e83SPiotr Jasiukajtis .word 0x3c99cb62,0xf3d1be56 25325c28e83SPiotr Jasiukajtis .word 0x3ff4b17d,0xea6db7d7 25425c28e83SPiotr Jasiukajtis .word 0xbc8125b8,0x7f2897f0 25525c28e83SPiotr Jasiukajtis .word 0x3ff4bfda,0xd5362a27 25625c28e83SPiotr Jasiukajtis .word 0x3c7d4397,0xafec42e2 25725c28e83SPiotr Jasiukajtis .word 0x3ff4ce41,0xb817c114 25825c28e83SPiotr Jasiukajtis .word 0x3c905e29,0x690abd5d 25925c28e83SPiotr Jasiukajtis .word 0x3ff4dcb2,0x99fddd0d 26025c28e83SPiotr Jasiukajtis .word 0x3c98ecdb,0xbc6a7833 26125c28e83SPiotr Jasiukajtis .word 0x3ff4eb2d,0x81d8abff 26225c28e83SPiotr Jasiukajtis .word 0xbc95257d,0x2e5d7a52 26325c28e83SPiotr Jasiukajtis .word 0x3ff4f9b2,0x769d2ca7 26425c28e83SPiotr Jasiukajtis .word 0xbc94b309,0xd25957e3 26525c28e83SPiotr Jasiukajtis .word 0x3ff50841,0x7f4531ee 26625c28e83SPiotr Jasiukajtis .word 0x3c7a249b,0x49b7465f 26725c28e83SPiotr Jasiukajtis .word 0x3ff516da,0xa2cf6642 26825c28e83SPiotr Jasiukajtis .word 0xbc8f7685,0x69bd93ee 26925c28e83SPiotr Jasiukajtis .word 0x3ff5257d,0xe83f4eef 27025c28e83SPiotr Jasiukajtis .word 0xbc7c998d,0x43efef71 27125c28e83SPiotr Jasiukajtis .word 0x3ff5342b,0x569d4f82 27225c28e83SPiotr Jasiukajtis .word 0xbc807abe,0x1db13cac 27325c28e83SPiotr Jasiukajtis .word 0x3ff542e2,0xf4f6ad27 27425c28e83SPiotr Jasiukajtis .word 0x3c87926d,0x192d5f7e 27525c28e83SPiotr Jasiukajtis .word 0x3ff551a4,0xca5d920f 27625c28e83SPiotr Jasiukajtis .word 0xbc8d689c,0xefede59a 27725c28e83SPiotr Jasiukajtis .word 0x3ff56070,0xdde910d2 27825c28e83SPiotr Jasiukajtis .word 0xbc90fb6e,0x168eebf0 27925c28e83SPiotr Jasiukajtis .word 0x3ff56f47,0x36b527da 28025c28e83SPiotr Jasiukajtis .word 0x3c99bb2c,0x011d93ad 28125c28e83SPiotr Jasiukajtis .word 0x3ff57e27,0xdbe2c4cf 28225c28e83SPiotr Jasiukajtis .word 0xbc90b98c,0x8a57b9c4 28325c28e83SPiotr Jasiukajtis .word 0x3ff58d12,0xd497c7fd 28425c28e83SPiotr Jasiukajtis .word 0x3c8295e1,0x5b9a1de8 28525c28e83SPiotr Jasiukajtis .word 0x3ff59c08,0x27ff07cc 28625c28e83SPiotr Jasiukajtis .word 0xbc97e2ce,0xe467e60f 28725c28e83SPiotr Jasiukajtis .word 0x3ff5ab07,0xdd485429 28825c28e83SPiotr Jasiukajtis .word 0x3c96324c,0x054647ad 28925c28e83SPiotr Jasiukajtis .word 0x3ff5ba11,0xfba87a03 29025c28e83SPiotr Jasiukajtis .word 0xbc9b77a1,0x4c233e1a 29125c28e83SPiotr Jasiukajtis .word 0x3ff5c926,0x8a5946b7 29225c28e83SPiotr Jasiukajtis .word 0x3c3c4b1b,0x816986a2 29325c28e83SPiotr Jasiukajtis .word 0x3ff5d845,0x90998b93 29425c28e83SPiotr Jasiukajtis .word 0xbc9cd6a7,0xa8b45642 29525c28e83SPiotr Jasiukajtis .word 0x3ff5e76f,0x15ad2148 29625c28e83SPiotr Jasiukajtis .word 0x3c9ba6f9,0x3080e65e 29725c28e83SPiotr Jasiukajtis .word 0x3ff5f6a3,0x20dceb71 29825c28e83SPiotr Jasiukajtis .word 0xbc89eadd,0xe3cdcf92 29925c28e83SPiotr Jasiukajtis .word 0x3ff605e1,0xb976dc09 30025c28e83SPiotr Jasiukajtis .word 0xbc93e242,0x9b56de47 30125c28e83SPiotr Jasiukajtis .word 0x3ff6152a,0xe6cdf6f4 30225c28e83SPiotr Jasiukajtis .word 0x3c9e4b3e,0x4ab84c27 30325c28e83SPiotr Jasiukajtis .word 0x3ff6247e,0xb03a5585 30425c28e83SPiotr Jasiukajtis .word 0xbc9383c1,0x7e40b497 30525c28e83SPiotr Jasiukajtis .word 0x3ff633dd,0x1d1929fd 30625c28e83SPiotr Jasiukajtis .word 0x3c984710,0xbeb964e5 30725c28e83SPiotr Jasiukajtis .word 0x3ff64346,0x34ccc320 30825c28e83SPiotr Jasiukajtis .word 0xbc8c483c,0x759d8932 30925c28e83SPiotr Jasiukajtis .word 0x3ff652b9,0xfebc8fb7 31025c28e83SPiotr Jasiukajtis .word 0xbc9ae3d5,0xc9a73e08 31125c28e83SPiotr Jasiukajtis .word 0x3ff66238,0x82552225 31225c28e83SPiotr Jasiukajtis .word 0xbc9bb609,0x87591c34 31325c28e83SPiotr Jasiukajtis .word 0x3ff671c1,0xc70833f6 31425c28e83SPiotr Jasiukajtis .word 0xbc8e8732,0x586c6134 31525c28e83SPiotr Jasiukajtis .word 0x3ff68155,0xd44ca973 31625c28e83SPiotr Jasiukajtis .word 0x3c6038ae,0x44f73e65 31725c28e83SPiotr Jasiukajtis .word 0x3ff690f4,0xb19e9538 31825c28e83SPiotr Jasiukajtis .word 0x3c8804bd,0x9aeb445c 31925c28e83SPiotr Jasiukajtis .word 0x3ff6a09e,0x667f3bcd 32025c28e83SPiotr Jasiukajtis .word 0xbc9bdd34,0x13b26456 32125c28e83SPiotr Jasiukajtis .word 0x3ff6b052,0xfa75173e 32225c28e83SPiotr Jasiukajtis .word 0x3c7a38f5,0x2c9a9d0e 32325c28e83SPiotr Jasiukajtis .word 0x3ff6c012,0x750bdabf 32425c28e83SPiotr Jasiukajtis .word 0xbc728956,0x67ff0b0d 32525c28e83SPiotr Jasiukajtis .word 0x3ff6cfdc,0xddd47645 32625c28e83SPiotr Jasiukajtis .word 0x3c9c7aa9,0xb6f17309 32725c28e83SPiotr Jasiukajtis .word 0x3ff6dfb2,0x3c651a2f 32825c28e83SPiotr Jasiukajtis .word 0xbc6bbe3a,0x683c88ab 32925c28e83SPiotr Jasiukajtis .word 0x3ff6ef92,0x98593ae5 33025c28e83SPiotr Jasiukajtis .word 0xbc90b974,0x9e1ac8b2 33125c28e83SPiotr Jasiukajtis .word 0x3ff6ff7d,0xf9519484 33225c28e83SPiotr Jasiukajtis .word 0xbc883c0f,0x25860ef6 33325c28e83SPiotr Jasiukajtis .word 0x3ff70f74,0x66f42e87 33425c28e83SPiotr Jasiukajtis .word 0x3c59d644,0xd45aa65f 33525c28e83SPiotr Jasiukajtis .word 0x3ff71f75,0xe8ec5f74 33625c28e83SPiotr Jasiukajtis .word 0xbc816e47,0x86887a99 33725c28e83SPiotr Jasiukajtis .word 0x3ff72f82,0x86ead08a 33825c28e83SPiotr Jasiukajtis .word 0xbc920aa0,0x2cd62c72 33925c28e83SPiotr Jasiukajtis .word 0x3ff73f9a,0x48a58174 34025c28e83SPiotr Jasiukajtis .word 0xbc90a8d9,0x6c65d53c 34125c28e83SPiotr Jasiukajtis .word 0x3ff74fbd,0x35d7cbfd 34225c28e83SPiotr Jasiukajtis .word 0x3c9047fd,0x618a6e1c 34325c28e83SPiotr Jasiukajtis .word 0x3ff75feb,0x564267c9 34425c28e83SPiotr Jasiukajtis .word 0xbc902459,0x57316dd3 34525c28e83SPiotr Jasiukajtis .word 0x3ff77024,0xb1ab6e09 34625c28e83SPiotr Jasiukajtis .word 0x3c9b7877,0x169147f8 34725c28e83SPiotr Jasiukajtis .word 0x3ff78069,0x4fde5d3f 34825c28e83SPiotr Jasiukajtis .word 0x3c9866b8,0x0a02162c 34925c28e83SPiotr Jasiukajtis .word 0x3ff790b9,0x38ac1cf6 35025c28e83SPiotr Jasiukajtis .word 0x3c9349a8,0x62aadd3e 35125c28e83SPiotr Jasiukajtis .word 0x3ff7a114,0x73eb0187 35225c28e83SPiotr Jasiukajtis .word 0xbc841577,0xee04992f 35325c28e83SPiotr Jasiukajtis .word 0x3ff7b17b,0x0976cfdb 35425c28e83SPiotr Jasiukajtis .word 0xbc9bebb5,0x8468dc88 35525c28e83SPiotr Jasiukajtis .word 0x3ff7c1ed,0x0130c132 35625c28e83SPiotr Jasiukajtis .word 0x3c9f124c,0xd1164dd6 35725c28e83SPiotr Jasiukajtis .word 0x3ff7d26a,0x62ff86f0 35825c28e83SPiotr Jasiukajtis .word 0x3c91bddb,0xfb72b8b4 35925c28e83SPiotr Jasiukajtis .word 0x3ff7e2f3,0x36cf4e62 36025c28e83SPiotr Jasiukajtis .word 0x3c705d02,0xba15797e 36125c28e83SPiotr Jasiukajtis .word 0x3ff7f387,0x8491c491 36225c28e83SPiotr Jasiukajtis .word 0xbc807f11,0xcf9311ae 36325c28e83SPiotr Jasiukajtis .word 0x3ff80427,0x543e1a12 36425c28e83SPiotr Jasiukajtis .word 0xbc927c86,0x626d972b 36525c28e83SPiotr Jasiukajtis .word 0x3ff814d2,0xadd106d9 36625c28e83SPiotr Jasiukajtis .word 0x3c946437,0x0d151d4d 36725c28e83SPiotr Jasiukajtis .word 0x3ff82589,0x994cce13 36825c28e83SPiotr Jasiukajtis .word 0xbc9d4c1d,0xd41532d8 36925c28e83SPiotr Jasiukajtis .word 0x3ff8364c,0x1eb941f7 37025c28e83SPiotr Jasiukajtis .word 0x3c999b9a,0x31df2bd5 37125c28e83SPiotr Jasiukajtis .word 0x3ff8471a,0x4623c7ad 37225c28e83SPiotr Jasiukajtis .word 0xbc88d684,0xa341cdfb 37325c28e83SPiotr Jasiukajtis .word 0x3ff857f4,0x179f5b21 37425c28e83SPiotr Jasiukajtis .word 0xbc5ba748,0xf8b216d0 37525c28e83SPiotr Jasiukajtis .word 0x3ff868d9,0x9b4492ec 37625c28e83SPiotr Jasiukajtis .word 0x3ca01c83,0xb21584a3 37725c28e83SPiotr Jasiukajtis .word 0x3ff879ca,0xd931a436 37825c28e83SPiotr Jasiukajtis .word 0x3c85d2d7,0xd2db47bc 37925c28e83SPiotr Jasiukajtis .word 0x3ff88ac7,0xd98a6699 38025c28e83SPiotr Jasiukajtis .word 0x3c9994c2,0xf37cb53a 38125c28e83SPiotr Jasiukajtis .word 0x3ff89bd0,0xa478580f 38225c28e83SPiotr Jasiukajtis .word 0x3c9d5395,0x4475202a 38325c28e83SPiotr Jasiukajtis .word 0x3ff8ace5,0x422aa0db 38425c28e83SPiotr Jasiukajtis .word 0x3c96e9f1,0x56864b27 38525c28e83SPiotr Jasiukajtis .word 0x3ff8be05,0xbad61778 38625c28e83SPiotr Jasiukajtis .word 0x3c9ecb5e,0xfc43446e 38725c28e83SPiotr Jasiukajtis .word 0x3ff8cf32,0x16b5448c 38825c28e83SPiotr Jasiukajtis .word 0xbc70d55e,0x32e9e3aa 38925c28e83SPiotr Jasiukajtis .word 0x3ff8e06a,0x5e0866d9 39025c28e83SPiotr Jasiukajtis .word 0xbc97114a,0x6fc9b2e6 39125c28e83SPiotr Jasiukajtis .word 0x3ff8f1ae,0x99157736 39225c28e83SPiotr Jasiukajtis .word 0x3c85cc13,0xa2e3976c 39325c28e83SPiotr Jasiukajtis .word 0x3ff902fe,0xd0282c8a 39425c28e83SPiotr Jasiukajtis .word 0x3c9592ca,0x85fe3fd2 39525c28e83SPiotr Jasiukajtis .word 0x3ff9145b,0x0b91ffc6 39625c28e83SPiotr Jasiukajtis .word 0xbc9dd679,0x2e582524 39725c28e83SPiotr Jasiukajtis .word 0x3ff925c3,0x53aa2fe2 39825c28e83SPiotr Jasiukajtis .word 0xbc83455f,0xa639db7f 39925c28e83SPiotr Jasiukajtis .word 0x3ff93737,0xb0cdc5e5 40025c28e83SPiotr Jasiukajtis .word 0xbc675fc7,0x81b57ebc 40125c28e83SPiotr Jasiukajtis .word 0x3ff948b8,0x2b5f98e5 40225c28e83SPiotr Jasiukajtis .word 0xbc8dc3d6,0x797d2d99 40325c28e83SPiotr Jasiukajtis .word 0x3ff95a44,0xcbc8520f 40425c28e83SPiotr Jasiukajtis .word 0xbc764b7c,0x96a5f039 40525c28e83SPiotr Jasiukajtis .word 0x3ff96bdd,0x9a7670b3 40625c28e83SPiotr Jasiukajtis .word 0xbc5ba596,0x7f19c896 40725c28e83SPiotr Jasiukajtis .word 0x3ff97d82,0x9fde4e50 40825c28e83SPiotr Jasiukajtis .word 0xbc9d185b,0x7c1b85d0 40925c28e83SPiotr Jasiukajtis .word 0x3ff98f33,0xe47a22a2 41025c28e83SPiotr Jasiukajtis .word 0x3c7cabda,0xa24c78ed 41125c28e83SPiotr Jasiukajtis .word 0x3ff9a0f1,0x70ca07ba 41225c28e83SPiotr Jasiukajtis .word 0xbc9173bd,0x91cee632 41325c28e83SPiotr Jasiukajtis .word 0x3ff9b2bb,0x4d53fe0d 41425c28e83SPiotr Jasiukajtis .word 0xbc9dd84e,0x4df6d518 41525c28e83SPiotr Jasiukajtis .word 0x3ff9c491,0x82a3f090 41625c28e83SPiotr Jasiukajtis .word 0x3c7c7c46,0xb071f2be 41725c28e83SPiotr Jasiukajtis .word 0x3ff9d674,0x194bb8d5 41825c28e83SPiotr Jasiukajtis .word 0xbc9516be,0xa3dd8233 41925c28e83SPiotr Jasiukajtis .word 0x3ff9e863,0x19e32323 42025c28e83SPiotr Jasiukajtis .word 0x3c7824ca,0x78e64c6e 42125c28e83SPiotr Jasiukajtis .word 0x3ff9fa5e,0x8d07f29e 42225c28e83SPiotr Jasiukajtis .word 0xbc84a9ce,0xaaf1face 42325c28e83SPiotr Jasiukajtis .word 0x3ffa0c66,0x7b5de565 42425c28e83SPiotr Jasiukajtis .word 0xbc935949,0x5d1cd533 42525c28e83SPiotr Jasiukajtis .word 0x3ffa1e7a,0xed8eb8bb 42625c28e83SPiotr Jasiukajtis .word 0x3c9c6618,0xee8be70e 42725c28e83SPiotr Jasiukajtis .word 0x3ffa309b,0xec4a2d33 42825c28e83SPiotr Jasiukajtis .word 0x3c96305c,0x7ddc36ab 42925c28e83SPiotr Jasiukajtis .word 0x3ffa42c9,0x80460ad8 43025c28e83SPiotr Jasiukajtis .word 0xbc9aa780,0x589fb120 43125c28e83SPiotr Jasiukajtis .word 0x3ffa5503,0xb23e255d 43225c28e83SPiotr Jasiukajtis .word 0xbc9d2f6e,0xdb8d41e1 43325c28e83SPiotr Jasiukajtis .word 0x3ffa674a,0x8af46052 43425c28e83SPiotr Jasiukajtis .word 0x3c650f56,0x30670366 43525c28e83SPiotr Jasiukajtis .word 0x3ffa799e,0x1330b358 43625c28e83SPiotr Jasiukajtis .word 0x3c9bcb7e,0xcac563c6 43725c28e83SPiotr Jasiukajtis .word 0x3ffa8bfe,0x53c12e59 43825c28e83SPiotr Jasiukajtis .word 0xbc94f867,0xb2ba15a8 43925c28e83SPiotr Jasiukajtis .word 0x3ffa9e6b,0x5579fdbf 44025c28e83SPiotr Jasiukajtis .word 0x3c90fac9,0x0ef7fd31 44125c28e83SPiotr Jasiukajtis .word 0x3ffab0e5,0x21356eba 44225c28e83SPiotr Jasiukajtis .word 0x3c889c31,0xdae94544 44325c28e83SPiotr Jasiukajtis .word 0x3ffac36b,0xbfd3f37a 44425c28e83SPiotr Jasiukajtis .word 0xbc8f9234,0xcae76cd0 44525c28e83SPiotr Jasiukajtis .word 0x3ffad5ff,0x3a3c2774 44625c28e83SPiotr Jasiukajtis .word 0x3c97ef3b,0xb6b1b8e4 44725c28e83SPiotr Jasiukajtis .word 0x3ffae89f,0x995ad3ad 44825c28e83SPiotr Jasiukajtis .word 0x3c97a1cd,0x345dcc81 44925c28e83SPiotr Jasiukajtis .word 0x3ffafb4c,0xe622f2ff 45025c28e83SPiotr Jasiukajtis .word 0xbc94b2fc,0x0f315ecc 45125c28e83SPiotr Jasiukajtis .word 0x3ffb0e07,0x298db666 45225c28e83SPiotr Jasiukajtis .word 0xbc9bdef5,0x4c80e425 45325c28e83SPiotr Jasiukajtis .word 0x3ffb20ce,0x6c9a8952 45425c28e83SPiotr Jasiukajtis .word 0x3c94dd02,0x4a0756cc 45525c28e83SPiotr Jasiukajtis .word 0x3ffb33a2,0xb84f15fb 45625c28e83SPiotr Jasiukajtis .word 0xbc62805e,0x3084d708 45725c28e83SPiotr Jasiukajtis .word 0x3ffb4684,0x15b749b1 45825c28e83SPiotr Jasiukajtis .word 0xbc7f763d,0xe9df7c90 45925c28e83SPiotr Jasiukajtis .word 0x3ffb5972,0x8de5593a 46025c28e83SPiotr Jasiukajtis .word 0xbc9c71df,0xbbba6de3 46125c28e83SPiotr Jasiukajtis .word 0x3ffb6c6e,0x29f1c52a 46225c28e83SPiotr Jasiukajtis .word 0x3c92a8f3,0x52883f6e 46325c28e83SPiotr Jasiukajtis .word 0x3ffb7f76,0xf2fb5e47 46425c28e83SPiotr Jasiukajtis .word 0xbc75584f,0x7e54ac3b 46525c28e83SPiotr Jasiukajtis .word 0x3ffb928c,0xf22749e4 46625c28e83SPiotr Jasiukajtis .word 0xbc9b7216,0x54cb65c6 46725c28e83SPiotr Jasiukajtis .word 0x3ffba5b0,0x30a1064a 46825c28e83SPiotr Jasiukajtis .word 0xbc9efcd3,0x0e54292e 46925c28e83SPiotr Jasiukajtis .word 0x3ffbb8e0,0xb79a6f1f 47025c28e83SPiotr Jasiukajtis .word 0xbc3f52d1,0xc9696205 47125c28e83SPiotr Jasiukajtis .word 0x3ffbcc1e,0x904bc1d2 47225c28e83SPiotr Jasiukajtis .word 0x3c823dd0,0x7a2d9e84 47325c28e83SPiotr Jasiukajtis .word 0x3ffbdf69,0xc3f3a207 47425c28e83SPiotr Jasiukajtis .word 0xbc3c2623,0x60ea5b52 47525c28e83SPiotr Jasiukajtis .word 0x3ffbf2c2,0x5bd71e09 47625c28e83SPiotr Jasiukajtis .word 0xbc9efdca,0x3f6b9c73 47725c28e83SPiotr Jasiukajtis .word 0x3ffc0628,0x6141b33d 47825c28e83SPiotr Jasiukajtis .word 0xbc8d8a5a,0xa1fbca34 47925c28e83SPiotr Jasiukajtis .word 0x3ffc199b,0xdd85529c 48025c28e83SPiotr Jasiukajtis .word 0x3c811065,0x895048dd 48125c28e83SPiotr Jasiukajtis .word 0x3ffc2d1c,0xd9fa652c 48225c28e83SPiotr Jasiukajtis .word 0xbc96e516,0x17c8a5d7 48325c28e83SPiotr Jasiukajtis .word 0x3ffc40ab,0x5fffd07a 48425c28e83SPiotr Jasiukajtis .word 0x3c9b4537,0xe083c60a 48525c28e83SPiotr Jasiukajtis .word 0x3ffc5447,0x78fafb22 48625c28e83SPiotr Jasiukajtis .word 0x3c912f07,0x2493b5af 48725c28e83SPiotr Jasiukajtis .word 0x3ffc67f1,0x2e57d14b 48825c28e83SPiotr Jasiukajtis .word 0x3c92884d,0xff483cad 48925c28e83SPiotr Jasiukajtis .word 0x3ffc7ba8,0x8988c933 49025c28e83SPiotr Jasiukajtis .word 0xbc8e76bb,0xbe255559 49125c28e83SPiotr Jasiukajtis .word 0x3ffc8f6d,0x9406e7b5 49225c28e83SPiotr Jasiukajtis .word 0x3c71acbc,0x48805c44 49325c28e83SPiotr Jasiukajtis .word 0x3ffca340,0x5751c4db 49425c28e83SPiotr Jasiukajtis .word 0xbc87f2be,0xd10d08f4 49525c28e83SPiotr Jasiukajtis .word 0x3ffcb720,0xdcef9069 49625c28e83SPiotr Jasiukajtis .word 0x3c7503cb,0xd1e949db 49725c28e83SPiotr Jasiukajtis .word 0x3ffccb0f,0x2e6d1675 49825c28e83SPiotr Jasiukajtis .word 0xbc7d220f,0x86009093 49925c28e83SPiotr Jasiukajtis .word 0x3ffcdf0b,0x555dc3fa 50025c28e83SPiotr Jasiukajtis .word 0xbc8dd83b,0x53829d72 50125c28e83SPiotr Jasiukajtis .word 0x3ffcf315,0x5b5bab74 50225c28e83SPiotr Jasiukajtis .word 0xbc9a08e9,0xb86dff57 50325c28e83SPiotr Jasiukajtis .word 0x3ffd072d,0x4a07897c 50425c28e83SPiotr Jasiukajtis .word 0xbc9cbc37,0x43797a9c 50525c28e83SPiotr Jasiukajtis .word 0x3ffd1b53,0x2b08c968 50625c28e83SPiotr Jasiukajtis .word 0x3c955636,0x219a36ee 50725c28e83SPiotr Jasiukajtis .word 0x3ffd2f87,0x080d89f2 50825c28e83SPiotr Jasiukajtis .word 0xbc9d487b,0x719d8578 50925c28e83SPiotr Jasiukajtis .word 0x3ffd43c8,0xeacaa1d6 51025c28e83SPiotr Jasiukajtis .word 0x3c93db53,0xbf5a1614 51125c28e83SPiotr Jasiukajtis .word 0x3ffd5818,0xdcfba487 51225c28e83SPiotr Jasiukajtis .word 0x3c82ed02,0xd75b3706 51325c28e83SPiotr Jasiukajtis .word 0x3ffd6c76,0xe862e6d3 51425c28e83SPiotr Jasiukajtis .word 0x3c5fe87a,0x4a8165a0 51525c28e83SPiotr Jasiukajtis .word 0x3ffd80e3,0x16c98398 51625c28e83SPiotr Jasiukajtis .word 0xbc911ec1,0x8beddfe8 51725c28e83SPiotr Jasiukajtis .word 0x3ffd955d,0x71ff6075 51825c28e83SPiotr Jasiukajtis .word 0x3c9a052d,0xbb9af6be 51925c28e83SPiotr Jasiukajtis .word 0x3ffda9e6,0x03db3285 52025c28e83SPiotr Jasiukajtis .word 0x3c9c2300,0x696db532 52125c28e83SPiotr Jasiukajtis .word 0x3ffdbe7c,0xd63a8315 52225c28e83SPiotr Jasiukajtis .word 0xbc9b76f1,0x926b8be4 52325c28e83SPiotr Jasiukajtis .word 0x3ffdd321,0xf301b460 52425c28e83SPiotr Jasiukajtis .word 0x3c92da57,0x78f018c2 52525c28e83SPiotr Jasiukajtis .word 0x3ffde7d5,0x641c0658 52625c28e83SPiotr Jasiukajtis .word 0xbc9ca552,0x8e79ba8f 52725c28e83SPiotr Jasiukajtis .word 0x3ffdfc97,0x337b9b5f 52825c28e83SPiotr Jasiukajtis .word 0xbc91a5cd,0x4f184b5c 52925c28e83SPiotr Jasiukajtis .word 0x3ffe1167,0x6b197d17 53025c28e83SPiotr Jasiukajtis .word 0xbc72b529,0xbd5c7f44 53125c28e83SPiotr Jasiukajtis .word 0x3ffe2646,0x14f5a129 53225c28e83SPiotr Jasiukajtis .word 0xbc97b627,0x817a1496 53325c28e83SPiotr Jasiukajtis .word 0x3ffe3b33,0x3b16ee12 53425c28e83SPiotr Jasiukajtis .word 0xbc99f4a4,0x31fdc68a 53525c28e83SPiotr Jasiukajtis .word 0x3ffe502e,0xe78b3ff6 53625c28e83SPiotr Jasiukajtis .word 0x3c839e89,0x80a9cc8f 53725c28e83SPiotr Jasiukajtis .word 0x3ffe6539,0x24676d76 53825c28e83SPiotr Jasiukajtis .word 0xbc863ff8,0x7522b734 53925c28e83SPiotr Jasiukajtis .word 0x3ffe7a51,0xfbc74c83 54025c28e83SPiotr Jasiukajtis .word 0x3c92d522,0xca0c8de2 54125c28e83SPiotr Jasiukajtis .word 0x3ffe8f79,0x77cdb740 54225c28e83SPiotr Jasiukajtis .word 0xbc910894,0x80b054b1 54325c28e83SPiotr Jasiukajtis .word 0x3ffea4af,0xa2a490da 54425c28e83SPiotr Jasiukajtis .word 0xbc9e9c23,0x179c2893 54525c28e83SPiotr Jasiukajtis .word 0x3ffeb9f4,0x867cca6e 54625c28e83SPiotr Jasiukajtis .word 0x3c94832f,0x2293e4f2 54725c28e83SPiotr Jasiukajtis .word 0x3ffecf48,0x2d8e67f1 54825c28e83SPiotr Jasiukajtis .word 0xbc9c93f3,0xb411ad8c 54925c28e83SPiotr Jasiukajtis .word 0x3ffee4aa,0xa2188510 55025c28e83SPiotr Jasiukajtis .word 0x3c91c68d,0xa487568d 55125c28e83SPiotr Jasiukajtis .word 0x3ffefa1b,0xee615a27 55225c28e83SPiotr Jasiukajtis .word 0x3c9dc7f4,0x86a4b6b0 55325c28e83SPiotr Jasiukajtis .word 0x3fff0f9c,0x1cb6412a 55425c28e83SPiotr Jasiukajtis .word 0xbc932200,0x65181d45 55525c28e83SPiotr Jasiukajtis .word 0x3fff252b,0x376bba97 55625c28e83SPiotr Jasiukajtis .word 0x3c93a1a5,0xbf0d8e43 55725c28e83SPiotr Jasiukajtis .word 0x3fff3ac9,0x48dd7274 55825c28e83SPiotr Jasiukajtis .word 0xbc795a5a,0x3ed837de 55925c28e83SPiotr Jasiukajtis .word 0x3fff5076,0x5b6e4540 56025c28e83SPiotr Jasiukajtis .word 0x3c99d3e1,0x2dd8a18b 56125c28e83SPiotr Jasiukajtis .word 0x3fff6632,0x798844f8 56225c28e83SPiotr Jasiukajtis .word 0x3c9fa37b,0x3539343e 56325c28e83SPiotr Jasiukajtis .word 0x3fff7bfd,0xad9cbe14 56425c28e83SPiotr Jasiukajtis .word 0xbc9dbb12,0xd006350a 56525c28e83SPiotr Jasiukajtis .word 0x3fff91d8,0x02243c89 56625c28e83SPiotr Jasiukajtis .word 0xbc612ea8,0xa779f689 56725c28e83SPiotr Jasiukajtis .word 0x3fffa7c1,0x819e90d8 56825c28e83SPiotr Jasiukajtis .word 0x3c874853,0xf3a5931e 56925c28e83SPiotr Jasiukajtis .word 0x3fffbdba,0x3692d514 57025c28e83SPiotr Jasiukajtis .word 0xbc796773,0x15098eb6 57125c28e83SPiotr Jasiukajtis .word 0x3fffd3c2,0x2b8f71f1 57225c28e83SPiotr Jasiukajtis .word 0x3c62eb74,0x966579e7 57325c28e83SPiotr Jasiukajtis .word 0x3fffe9d9,0x6b2a23d9 57425c28e83SPiotr Jasiukajtis .word 0x3c74a603,0x7442fde3 57525c28e83SPiotr Jasiukajtis 57625c28e83SPiotr Jasiukajtis .align 16 57725c28e83SPiotr Jasiukajtisconstants: 57825c28e83SPiotr Jasiukajtis .word 0x3ef00000,0x00000000 57925c28e83SPiotr Jasiukajtis .word 0x40862e42,0xfefa39ef 58025c28e83SPiotr Jasiukajtis .word 0x01000000,0x00000000 58125c28e83SPiotr Jasiukajtis .word 0x7f000000,0x00000000 58225c28e83SPiotr Jasiukajtis .word 0x80000000,0x00000000 58325c28e83SPiotr Jasiukajtis .word 0x43f00000,0x00000000 ! scaling 2^12 two96 58425c28e83SPiotr Jasiukajtis .word 0xfff00000,0x00000000 58525c28e83SPiotr Jasiukajtis .word 0x3ff00000,0x00000000 58625c28e83SPiotr Jasiukajtis .word 0x3fdfffff,0xfffffff6 58725c28e83SPiotr Jasiukajtis .word 0x3fc55555,0x721a1d14 58825c28e83SPiotr Jasiukajtis .word 0x3fa55555,0x6e0896af 58925c28e83SPiotr Jasiukajtis .word 0x41371547,0x652b82fe ! scaling 2^12 invln2_256 59025c28e83SPiotr Jasiukajtis .word 0x3ea62e42,0xfee00000 ! scaling 2^(-12) ln2_256h 59125c28e83SPiotr Jasiukajtis .word 0x3caa39ef,0x35793c76 ! scaling 2^(-12) ln2_256l 59225c28e83SPiotr Jasiukajtis 59325c28e83SPiotr Jasiukajtis ! base set w/o scaling 59425c28e83SPiotr Jasiukajtis ! .word 0x43300000,0x00000000 ! scaling two96 59525c28e83SPiotr Jasiukajtis ! .word 0x40771547,0x652b82fe ! scaling invln2_256 59625c28e83SPiotr Jasiukajtis ! .word 0x3f662e42,0xfee00000 ! scaling ln2_256h 59725c28e83SPiotr Jasiukajtis ! .word 0x3d6a39ef,0x35793c76 ! scaling ln2_256l 59825c28e83SPiotr Jasiukajtis 59925c28e83SPiotr Jasiukajtis#define ox3ef 0x0 60025c28e83SPiotr Jasiukajtis#define thresh 0x8 60125c28e83SPiotr Jasiukajtis#define tiny 0x10 60225c28e83SPiotr Jasiukajtis#define huge 0x18 60325c28e83SPiotr Jasiukajtis#define signbit 0x20 60425c28e83SPiotr Jasiukajtis#define two96 0x28 60525c28e83SPiotr Jasiukajtis#define neginf 0x30 60625c28e83SPiotr Jasiukajtis#define one 0x38 60725c28e83SPiotr Jasiukajtis#define B1OFF 0x40 60825c28e83SPiotr Jasiukajtis#define B2OFF 0x48 60925c28e83SPiotr Jasiukajtis#define B3OFF 0x50 61025c28e83SPiotr Jasiukajtis#define invln2_256 0x58 61125c28e83SPiotr Jasiukajtis#define ln2_256h 0x60 61225c28e83SPiotr Jasiukajtis#define ln2_256l 0x68 61325c28e83SPiotr Jasiukajtis 61425c28e83SPiotr Jasiukajtis! local storage indices 61525c28e83SPiotr Jasiukajtis 61625c28e83SPiotr Jasiukajtis#define m2 STACK_BIAS-0x4 61725c28e83SPiotr Jasiukajtis#define m1 STACK_BIAS-0x8 61825c28e83SPiotr Jasiukajtis#define m0 STACK_BIAS-0xc 61925c28e83SPiotr Jasiukajtis#define jnk STACK_BIAS-0x20 62025c28e83SPiotr Jasiukajtis! sizeof temp storage - must be a multiple of 16 for V9 62125c28e83SPiotr Jasiukajtis#define tmps 0x20 62225c28e83SPiotr Jasiukajtis 62325c28e83SPiotr Jasiukajtis! register use 62425c28e83SPiotr Jasiukajtis 62525c28e83SPiotr Jasiukajtis! i0 n 62625c28e83SPiotr Jasiukajtis! i1 x 62725c28e83SPiotr Jasiukajtis! i2 stridex 62825c28e83SPiotr Jasiukajtis! i3 y 62925c28e83SPiotr Jasiukajtis! i4 stridey 63025c28e83SPiotr Jasiukajtis! i5 0x80000000 63125c28e83SPiotr Jasiukajtis 63225c28e83SPiotr Jasiukajtis! g1 TBL 63325c28e83SPiotr Jasiukajtis 63425c28e83SPiotr Jasiukajtis! l0 m0 63525c28e83SPiotr Jasiukajtis! l1 m1 63625c28e83SPiotr Jasiukajtis! l2 m2 63725c28e83SPiotr Jasiukajtis! l3 j0,oy0 63825c28e83SPiotr Jasiukajtis! l4 j1,oy1 63925c28e83SPiotr Jasiukajtis! l5 j2,oy2 64025c28e83SPiotr Jasiukajtis! l6 0x3e300000 64125c28e83SPiotr Jasiukajtis! l7 0x40862e41 64225c28e83SPiotr Jasiukajtis 64325c28e83SPiotr Jasiukajtis! o0 py0 64425c28e83SPiotr Jasiukajtis! o1 py1 64525c28e83SPiotr Jasiukajtis! o2 py2 64625c28e83SPiotr Jasiukajtis! o3 scratch 64725c28e83SPiotr Jasiukajtis! o4 scratch 64825c28e83SPiotr Jasiukajtis! o5 0x40874910 64925c28e83SPiotr Jasiukajtis! o7 0x7ff00000 65025c28e83SPiotr Jasiukajtis 65125c28e83SPiotr Jasiukajtis! f0 x0 652*55fea89dSDan Cross! f2 653*55fea89dSDan Cross! f4 654*55fea89dSDan Cross! f6 655*55fea89dSDan Cross! f8 65625c28e83SPiotr Jasiukajtis! f10 x1 657*55fea89dSDan Cross! f12 658*55fea89dSDan Cross! f14 659*55fea89dSDan Cross! f16 660*55fea89dSDan Cross! f18 66125c28e83SPiotr Jasiukajtis! f20 x2 662*55fea89dSDan Cross! f22 663*55fea89dSDan Cross! f24 664*55fea89dSDan Cross! f26 665*55fea89dSDan Cross! f28 666*55fea89dSDan Cross! f30 667*55fea89dSDan Cross! f32 668*55fea89dSDan Cross! f34 66925c28e83SPiotr Jasiukajtis! f36 0x3ef0... 67025c28e83SPiotr Jasiukajtis! f38 thresh 67125c28e83SPiotr Jasiukajtis! f40 tiny 67225c28e83SPiotr Jasiukajtis! f42 huge 67325c28e83SPiotr Jasiukajtis! f44 signbit 67425c28e83SPiotr Jasiukajtis! f46 two96 67525c28e83SPiotr Jasiukajtis! f48 neginf 67625c28e83SPiotr Jasiukajtis! f50 one 67725c28e83SPiotr Jasiukajtis! f52 B1 67825c28e83SPiotr Jasiukajtis! f54 B2 67925c28e83SPiotr Jasiukajtis! f56 B3 68025c28e83SPiotr Jasiukajtis! f58 invln2_256 68125c28e83SPiotr Jasiukajtis! f60 ln2_256h 68225c28e83SPiotr Jasiukajtis! f62 ln2_256l 68325c28e83SPiotr Jasiukajtis#define BOUNDRY %f36 68425c28e83SPiotr Jasiukajtis#define THRESH %f38 68525c28e83SPiotr Jasiukajtis#define TINY %f40 68625c28e83SPiotr Jasiukajtis#define HUGE %f42 68725c28e83SPiotr Jasiukajtis#define SIGNBIT %f44 68825c28e83SPiotr Jasiukajtis#define TWO96 %f46 68925c28e83SPiotr Jasiukajtis#define NEGINF %f48 69025c28e83SPiotr Jasiukajtis#define ONE %f50 69125c28e83SPiotr Jasiukajtis#define B1 %f52 69225c28e83SPiotr Jasiukajtis#define B2 %f54 69325c28e83SPiotr Jasiukajtis#define B3 %f56 69425c28e83SPiotr Jasiukajtis#define INVLN2_256 %f58 69525c28e83SPiotr Jasiukajtis#define LN2_256H %f60 69625c28e83SPiotr Jasiukajtis#define LN2_256L %f62 69725c28e83SPiotr Jasiukajtis 69825c28e83SPiotr Jasiukajtis ENTRY(__vexp) 69925c28e83SPiotr Jasiukajtis save %sp,-SA(MINFRAME)-tmps,%sp 70025c28e83SPiotr Jasiukajtis PIC_SETUP(l7) 70125c28e83SPiotr Jasiukajtis PIC_SET(l7,constants,o3) 70225c28e83SPiotr Jasiukajtis PIC_SET(l7,TBL,o0) 70325c28e83SPiotr Jasiukajtis mov %o0,%g1 70425c28e83SPiotr Jasiukajtis wr %g0,0x82,%asi ! set %asi for non-faulting loads 70525c28e83SPiotr Jasiukajtis 70625c28e83SPiotr Jasiukajtis sethi %hi(0x80000000),%i5 70725c28e83SPiotr Jasiukajtis sethi %hi(0x3e300000),%l6 70825c28e83SPiotr Jasiukajtis sethi %hi(0x40862e41),%l7 70925c28e83SPiotr Jasiukajtis or %l7,%lo(0x40862e41),%l7 71025c28e83SPiotr Jasiukajtis sethi %hi(0x40874910),%o5 71125c28e83SPiotr Jasiukajtis or %o5,%lo(0x40874910),%o5 71225c28e83SPiotr Jasiukajtis sethi %hi(0x7ff00000),%o7 71325c28e83SPiotr Jasiukajtis ldd [%o3+ox3ef],BOUNDRY 71425c28e83SPiotr Jasiukajtis ldd [%o3+thresh],THRESH 71525c28e83SPiotr Jasiukajtis ldd [%o3+tiny],TINY 71625c28e83SPiotr Jasiukajtis ldd [%o3+huge],HUGE 71725c28e83SPiotr Jasiukajtis ldd [%o3+signbit],SIGNBIT 71825c28e83SPiotr Jasiukajtis ldd [%o3+two96],TWO96 71925c28e83SPiotr Jasiukajtis ldd [%o3+neginf],NEGINF 72025c28e83SPiotr Jasiukajtis ldd [%o3+one],ONE 72125c28e83SPiotr Jasiukajtis ldd [%o3+B1OFF],B1 72225c28e83SPiotr Jasiukajtis ldd [%o3+B2OFF],B2 72325c28e83SPiotr Jasiukajtis ldd [%o3+B3OFF],B3 72425c28e83SPiotr Jasiukajtis ldd [%o3+invln2_256],INVLN2_256 72525c28e83SPiotr Jasiukajtis ldd [%o3+ln2_256h],LN2_256H 72625c28e83SPiotr Jasiukajtis ldd [%o3+ln2_256l],LN2_256L 72725c28e83SPiotr Jasiukajtis sll %i2,3,%i2 ! scale strides 72825c28e83SPiotr Jasiukajtis sll %i4,3,%i4 72925c28e83SPiotr Jasiukajtis add %fp,jnk,%l3 ! precondition loop 73025c28e83SPiotr Jasiukajtis add %fp,jnk,%l4 73125c28e83SPiotr Jasiukajtis add %fp,jnk,%l5 73225c28e83SPiotr Jasiukajtis ld [%i1],%l0 ! hx = *x 73325c28e83SPiotr Jasiukajtis ld [%i1],%f0 73425c28e83SPiotr Jasiukajtis ld [%i1+4],%f1 73525c28e83SPiotr Jasiukajtis andn %l0,%i5,%l0 ! hx &= ~0x80000000 73625c28e83SPiotr Jasiukajtis ba .loop0 73725c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 73825c28e83SPiotr Jasiukajtis 73925c28e83SPiotr Jasiukajtis .align 16 74025c28e83SPiotr Jasiukajtis! -- 16 byte aligned 74125c28e83SPiotr Jasiukajtis.loop0: 74225c28e83SPiotr Jasiukajtis lda [%i1]%asi,%l1 ! preload next argument 74325c28e83SPiotr Jasiukajtis sub %l0,%l6,%o3 74425c28e83SPiotr Jasiukajtis sub %l7,%l0,%o4 74525c28e83SPiotr Jasiukajtis fand %f0,SIGNBIT,%f2 ! get sign bit 74625c28e83SPiotr Jasiukajtis 74725c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f10 74825c28e83SPiotr Jasiukajtis orcc %o3,%o4,%g0 74925c28e83SPiotr Jasiukajtis mov %i3,%o0 ! py0 = y 75025c28e83SPiotr Jasiukajtis bl,pn %icc,.range0 ! if hx < 0x3e300000 or > 0x40862e41 75125c28e83SPiotr Jasiukajtis 75225c28e83SPiotr Jasiukajtis! delay slot 75325c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f11 75425c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 75525c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 75625c28e83SPiotr Jasiukajtis ble,pn %icc,.endloop1 75725c28e83SPiotr Jasiukajtis 75825c28e83SPiotr Jasiukajtis! delay slot 75925c28e83SPiotr Jasiukajtis andn %l1,%i5,%l1 76025c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 76125c28e83SPiotr Jasiukajtis for %f2,TWO96,%f2 ! used to strip least sig bits 76225c28e83SPiotr Jasiukajtis fmuld %f0,INVLN2_256,%f4 ! x/ (ln2/256) , creating k 76325c28e83SPiotr Jasiukajtis 76425c28e83SPiotr Jasiukajtis.loop1: 76525c28e83SPiotr Jasiukajtis lda [%i1]%asi,%l2 ! preload next argument 76625c28e83SPiotr Jasiukajtis sub %l1,%l6,%o3 76725c28e83SPiotr Jasiukajtis sub %l7,%l1,%o4 76825c28e83SPiotr Jasiukajtis fand %f10,SIGNBIT,%f12 76925c28e83SPiotr Jasiukajtis 77025c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f20 77125c28e83SPiotr Jasiukajtis orcc %o3,%o4,%g0 77225c28e83SPiotr Jasiukajtis mov %i3,%o1 ! py1 = y 77325c28e83SPiotr Jasiukajtis bl,pn %icc,.range1 ! if hx < 0x3e300000 or > 0x40862e41 77425c28e83SPiotr Jasiukajtis 77525c28e83SPiotr Jasiukajtis! delay slot 77625c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f21 77725c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 77825c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 77925c28e83SPiotr Jasiukajtis ble,pn %icc,.endloop2 78025c28e83SPiotr Jasiukajtis 78125c28e83SPiotr Jasiukajtis! delay slot 78225c28e83SPiotr Jasiukajtis andn %l2,%i5,%l2 78325c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 78425c28e83SPiotr Jasiukajtis for %f12,TWO96,%f12 78525c28e83SPiotr Jasiukajtis fmuld %f10,INVLN2_256,%f14 78625c28e83SPiotr Jasiukajtis 78725c28e83SPiotr Jasiukajtis.loop2: 78825c28e83SPiotr Jasiukajtis sub %l2,%l6,%o3 78925c28e83SPiotr Jasiukajtis sub %l7,%l2,%o4 79025c28e83SPiotr Jasiukajtis fand %f20,SIGNBIT,%f22 79125c28e83SPiotr Jasiukajtis fmuld %f20,INVLN2_256,%f24 ! okay to put this here; for alignment 79225c28e83SPiotr Jasiukajtis 79325c28e83SPiotr Jasiukajtis orcc %o3,%o4,%g0 79425c28e83SPiotr Jasiukajtis bl,pn %icc,.range2 ! if hx < 0x3e300000 or > 0x40862e41 79525c28e83SPiotr Jasiukajtis! delay slot 79625c28e83SPiotr Jasiukajtis for %f22,TWO96,%f22 79725c28e83SPiotr Jasiukajtis faddd %f4,%f2,%f4 ! creating k+j/256, sra to zero bits 79825c28e83SPiotr Jasiukajtis 79925c28e83SPiotr Jasiukajtis.cont: 80025c28e83SPiotr Jasiukajtis faddd %f14,%f12,%f14 80125c28e83SPiotr Jasiukajtis mov %i3,%o2 ! py2 = y 80225c28e83SPiotr Jasiukajtis 80325c28e83SPiotr Jasiukajtis faddd %f24,%f22,%f24 80425c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 80525c28e83SPiotr Jasiukajtis 80625c28e83SPiotr Jasiukajtis ! BUBBLE USIII 80725c28e83SPiotr Jasiukajtis 808*55fea89dSDan Cross fsubd %f4,%f2,%f8 ! creating k+j/256: sll 80925c28e83SPiotr Jasiukajtis st %f6,[%l3] ! store previous loop x0 81025c28e83SPiotr Jasiukajtis 81125c28e83SPiotr Jasiukajtis fsubd %f14,%f12,%f18 81225c28e83SPiotr Jasiukajtis st %f7,[%l3+4] ! store previous loop x0 81325c28e83SPiotr Jasiukajtis 81425c28e83SPiotr Jasiukajtis fsubd %f24,%f22,%f28 81525c28e83SPiotr Jasiukajtis st %f16,[%l4] 81625c28e83SPiotr Jasiukajtis 81725c28e83SPiotr Jasiukajtis ! BUBBLE USIII 81825c28e83SPiotr Jasiukajtis 81925c28e83SPiotr Jasiukajtis fmuld %f8,LN2_256H,%f2 ! closest LN2_256 to x 82025c28e83SPiotr Jasiukajtis st %f17,[%l4+4] 82125c28e83SPiotr Jasiukajtis 82225c28e83SPiotr Jasiukajtis fmuld %f18,LN2_256H,%f12 82325c28e83SPiotr Jasiukajtis st %f26,[%l5] 82425c28e83SPiotr Jasiukajtis 82525c28e83SPiotr Jasiukajtis fmuld %f28,LN2_256H,%f22 82625c28e83SPiotr Jasiukajtis st %f27,[%l5+4] 82725c28e83SPiotr Jasiukajtis 82825c28e83SPiotr Jasiukajtis ! BUBBLE USIII 82925c28e83SPiotr Jasiukajtis 83025c28e83SPiotr Jasiukajtis fsubd %f0,%f2,%f0 ! r = x - p*LN2_256H 83125c28e83SPiotr Jasiukajtis fmuld %f8,LN2_256L,%f4 ! closest LN2_256 to x , added prec 83225c28e83SPiotr Jasiukajtis 83325c28e83SPiotr Jasiukajtis fsubd %f10,%f12,%f10 83425c28e83SPiotr Jasiukajtis fmuld %f18,LN2_256L,%f14 83525c28e83SPiotr Jasiukajtis 83625c28e83SPiotr Jasiukajtis fsubd %f20,%f22,%f20 83725c28e83SPiotr Jasiukajtis fmuld %f28,LN2_256L,%f24 83825c28e83SPiotr Jasiukajtis 83925c28e83SPiotr Jasiukajtis ! BUBBLE USIII 84025c28e83SPiotr Jasiukajtis 84125c28e83SPiotr Jasiukajtis fsubd %f0,%f4,%f0 ! r -= p*LN2_256L 84225c28e83SPiotr Jasiukajtis 84325c28e83SPiotr Jasiukajtis fsubd %f10,%f14,%f10 84425c28e83SPiotr Jasiukajtis 84525c28e83SPiotr Jasiukajtis fsubd %f20,%f24,%f20 84625c28e83SPiotr Jasiukajtis 84725c28e83SPiotr Jasiukajtis!!!!!!!!!!!!!!!!!!! New polynomial reorder starts here 84825c28e83SPiotr Jasiukajtis 84925c28e83SPiotr Jasiukajtis ! Alternate polynomial grouping allowing non-sequential calc of p 85025c28e83SPiotr Jasiukajtis ! OLD : p = r * ( 1 + r * ( B1 + r * ( B2 + r * B3) ) ) 85125c28e83SPiotr Jasiukajtis ! NEW : p = r * [ (1+r*B1) + (r*r) * ( B2 + r * B3) ) ] 85225c28e83SPiotr Jasiukajtis ! 85325c28e83SPiotr Jasiukajtis ! let SLi Ri SRi be accumulators 85425c28e83SPiotr Jasiukajtis 85525c28e83SPiotr Jasiukajtis fmuld %f0,B3,%f2 ! SR1 = r1 * B3 85625c28e83SPiotr Jasiukajtis fdtoi %f8,%f8 ! convert k+j/256 to int 85725c28e83SPiotr Jasiukajtis st %f8,[%fp+m0] ! store k, to shift return/use 85825c28e83SPiotr Jasiukajtis 85925c28e83SPiotr Jasiukajtis fmuld %f10,B3,%f12 ! SR2 = r2 * B3 86025c28e83SPiotr Jasiukajtis fdtoi %f18,%f18 ! convert k+j/256 to int 86125c28e83SPiotr Jasiukajtis st %f18,[%fp+m1] ! store k, to shift return/use 86225c28e83SPiotr Jasiukajtis 86325c28e83SPiotr Jasiukajtis fmuld %f20,B3,%f22 ! SR3 = r3 * B3 86425c28e83SPiotr Jasiukajtis fdtoi %f28,%f28 ! convert k+j/256 to int 86525c28e83SPiotr Jasiukajtis st %f28,[%fp+m2] ! store k, to shift return/use 86625c28e83SPiotr Jasiukajtis 86725c28e83SPiotr Jasiukajtis fmuld %f0,%f0,%f4 ! R1 = r1 * r1 86825c28e83SPiotr Jasiukajtis 86925c28e83SPiotr Jasiukajtis fmuld %f10,%f10,%f14 ! R2 = r2 * r2 87025c28e83SPiotr Jasiukajtis faddd %f2,B2,%f2 ! SR1 += B2 87125c28e83SPiotr Jasiukajtis 87225c28e83SPiotr Jasiukajtis fmuld %f20,%f20,%f24 ! R3 = r3 * r3 87325c28e83SPiotr Jasiukajtis faddd %f12,B2,%f12 ! SR2 += B2 87425c28e83SPiotr Jasiukajtis 87525c28e83SPiotr Jasiukajtis faddd %f22,B2,%f22 ! SR3 += B2 87625c28e83SPiotr Jasiukajtis fmuld %f0,B1,%f6 ! SL1 = r1 * B1 87725c28e83SPiotr Jasiukajtis 87825c28e83SPiotr Jasiukajtis fmuld %f10,B1,%f32 ! SL2 = r2 * B1 87925c28e83SPiotr Jasiukajtis fand %f8,NEGINF,%f8 88025c28e83SPiotr Jasiukajtis ! best here for RAW BYPASS 88125c28e83SPiotr Jasiukajtis ld [%fp+m0],%l0 ! get nonshifted k into intreg 88225c28e83SPiotr Jasiukajtis 88325c28e83SPiotr Jasiukajtis fmuld %f20,B1,%f34 ! SL3 = r3 * B1 88425c28e83SPiotr Jasiukajtis fand %f18,NEGINF,%f18 88525c28e83SPiotr Jasiukajtis ld [%fp+m1],%l1 ! get nonshifted k into intreg 88625c28e83SPiotr Jasiukajtis 88725c28e83SPiotr Jasiukajtis fmuld %f4,%f2,%f4 ! R1 = R1 * SR1 88825c28e83SPiotr Jasiukajtis fand %f28,NEGINF,%f28 88925c28e83SPiotr Jasiukajtis ld [%fp+m2],%l2 ! get nonshifted k into intreg 89025c28e83SPiotr Jasiukajtis 89125c28e83SPiotr Jasiukajtis fmuld %f14,%f12,%f14 ! R2 = R2 * SR2 89225c28e83SPiotr Jasiukajtis faddd %f6,ONE,%f6 ! SL1 += 1 89325c28e83SPiotr Jasiukajtis 89425c28e83SPiotr Jasiukajtis fmuld %f24,%f22,%f24 ! R3 = R3 * SR3 89525c28e83SPiotr Jasiukajtis faddd %f32,ONE,%f32 ! SL2 += 1 89625c28e83SPiotr Jasiukajtis sra %l0,8,%l3 ! shift k tobe offset 256-8byte 89725c28e83SPiotr Jasiukajtis 89825c28e83SPiotr Jasiukajtis faddd %f34,ONE,%f34 ! SL3 += 1 89925c28e83SPiotr Jasiukajtis sra %l1,8,%l4 ! shift k tobe offset 256-8byte 90025c28e83SPiotr Jasiukajtis sra %l2,8,%l5 ! shift k tobe offset 256-8byte 90125c28e83SPiotr Jasiukajtis 90225c28e83SPiotr Jasiukajtis ! BUBBLE in USIII 90325c28e83SPiotr Jasiukajtis and %l3,0xff0,%l3 90425c28e83SPiotr Jasiukajtis and %l4,0xff0,%l4 90525c28e83SPiotr Jasiukajtis 90625c28e83SPiotr Jasiukajtis 90725c28e83SPiotr Jasiukajtis 90825c28e83SPiotr Jasiukajtis faddd %f6,%f4,%f6 ! R1 = SL1 + R1 90925c28e83SPiotr Jasiukajtis ldd [%g1+%l3],%f4 ! tbl[j] 91025c28e83SPiotr Jasiukajtis add %l3,8,%l3 ! inc j 91125c28e83SPiotr Jasiukajtis and %l5,0xff0,%l5 91225c28e83SPiotr Jasiukajtis 91325c28e83SPiotr Jasiukajtis 91425c28e83SPiotr Jasiukajtis faddd %f32,%f14,%f32 ! R2 = SL2 + R2 91525c28e83SPiotr Jasiukajtis ldd [%g1+%l4],%f14 ! tbl[j] 91625c28e83SPiotr Jasiukajtis add %l4,8,%l4 ! inc j 91725c28e83SPiotr Jasiukajtis sra %l0,20,%o3 91825c28e83SPiotr Jasiukajtis 91925c28e83SPiotr Jasiukajtis faddd %f34,%f24,%f34 ! R3 = SL3 + R3 92025c28e83SPiotr Jasiukajtis ldd [%g1+%l5],%f24 ! tbl[j] 92125c28e83SPiotr Jasiukajtis add %l5,8,%l5 ! inc j 92225c28e83SPiotr Jasiukajtis sra %l1,20,%l1 92325c28e83SPiotr Jasiukajtis 92425c28e83SPiotr Jasiukajtis ! BUBBLE in USIII 92525c28e83SPiotr Jasiukajtis ldd [%g1+%l4],%f16 ! tbl[j+1] 92625c28e83SPiotr Jasiukajtis add %o3,1021,%o3 ! inc j 92725c28e83SPiotr Jasiukajtis 92825c28e83SPiotr Jasiukajtis fmuld %f0,%f6,%f0 ! p1 = r1 * R1 92925c28e83SPiotr Jasiukajtis ldd [%g1+%l3],%f6 ! tbl[j+1] 93025c28e83SPiotr Jasiukajtis add %l1,1021,%l1 ! inc j 93125c28e83SPiotr Jasiukajtis sra %l2,20,%l2 93225c28e83SPiotr Jasiukajtis 93325c28e83SPiotr Jasiukajtis fmuld %f10,%f32,%f10 ! p2 = r2 * R2 93425c28e83SPiotr Jasiukajtis ldd [%g1+%l5],%f26 ! tbl[j+1] 93525c28e83SPiotr Jasiukajtis add %l2,1021,%l2 ! inc j 93625c28e83SPiotr Jasiukajtis 93725c28e83SPiotr Jasiukajtis fmuld %f20,%f34,%f20 ! p3 = r3 * R3 93825c28e83SPiotr Jasiukajtis 939*55fea89dSDan Cross 940*55fea89dSDan Cross 94125c28e83SPiotr Jasiukajtis 94225c28e83SPiotr Jasiukajtis 94325c28e83SPiotr Jasiukajtis!!!!!!!!!!!!!!!!!!! poly-reorder - ends here 94425c28e83SPiotr Jasiukajtis 94525c28e83SPiotr Jasiukajtis fmuld %f0,%f4,%f0 ! start exp(x) = exp(r) * tbl[j] 94625c28e83SPiotr Jasiukajtis mov %o0,%l3 94725c28e83SPiotr Jasiukajtis 94825c28e83SPiotr Jasiukajtis fmuld %f10,%f14,%f10 94925c28e83SPiotr Jasiukajtis mov %o1,%l4 95025c28e83SPiotr Jasiukajtis 95125c28e83SPiotr Jasiukajtis fmuld %f20,%f24,%f20 95225c28e83SPiotr Jasiukajtis mov %o2,%l5 95325c28e83SPiotr Jasiukajtis 95425c28e83SPiotr Jasiukajtis faddd %f0,%f6,%f6 ! cont exp(x) : apply tbl[j] high bits 95525c28e83SPiotr Jasiukajtis lda [%i1]%asi,%l0 ! preload next argument 95625c28e83SPiotr Jasiukajtis 95725c28e83SPiotr Jasiukajtis faddd %f10,%f16,%f16 95825c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f0 95925c28e83SPiotr Jasiukajtis 96025c28e83SPiotr Jasiukajtis faddd %f20,%f26,%f26 96125c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f1 96225c28e83SPiotr Jasiukajtis 96325c28e83SPiotr Jasiukajtis faddd %f6,%f4,%f6 ! cont exp(x) : apply tbl[j+1] low bits 96425c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 96525c28e83SPiotr Jasiukajtis 96625c28e83SPiotr Jasiukajtis faddd %f16,%f14,%f16 96725c28e83SPiotr Jasiukajtis andn %l0,%i5,%l0 96825c28e83SPiotr Jasiukajtis or %o3,%l1,%o4 96925c28e83SPiotr Jasiukajtis 97025c28e83SPiotr Jasiukajtis! -- 16 byte aligned 97125c28e83SPiotr Jasiukajtis orcc %o4,%l2,%o4 97225c28e83SPiotr Jasiukajtis bl,pn %icc,.small 97325c28e83SPiotr Jasiukajtis! delay slot 97425c28e83SPiotr Jasiukajtis faddd %f26,%f24,%f26 97525c28e83SPiotr Jasiukajtis 97625c28e83SPiotr Jasiukajtis fpadd32 %f6,%f8,%f6 ! done exp(x) : apply 2^k 97725c28e83SPiotr Jasiukajtis fpadd32 %f16,%f18,%f16 97825c28e83SPiotr Jasiukajtis 97925c28e83SPiotr Jasiukajtis 98025c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 98125c28e83SPiotr Jasiukajtis bg,pn %icc,.loop0 98225c28e83SPiotr Jasiukajtis! delay slot 98325c28e83SPiotr Jasiukajtis fpadd32 %f26,%f28,%f26 98425c28e83SPiotr Jasiukajtis 98525c28e83SPiotr Jasiukajtis ba,pt %icc,.endloop0 98625c28e83SPiotr Jasiukajtis! delay slot 98725c28e83SPiotr Jasiukajtis nop 98825c28e83SPiotr Jasiukajtis 98925c28e83SPiotr Jasiukajtis 99025c28e83SPiotr Jasiukajtis .align 16 99125c28e83SPiotr Jasiukajtis.small: 99225c28e83SPiotr Jasiukajtis tst %o3 99325c28e83SPiotr Jasiukajtis bge,pt %icc,1f 99425c28e83SPiotr Jasiukajtis! delay slot 99525c28e83SPiotr Jasiukajtis fpadd32 %f6,%f8,%f6 99625c28e83SPiotr Jasiukajtis fpadd32 %f6,BOUNDRY,%f6 99725c28e83SPiotr Jasiukajtis fmuld %f6,TINY,%f6 99825c28e83SPiotr Jasiukajtis1: 99925c28e83SPiotr Jasiukajtis tst %l1 100025c28e83SPiotr Jasiukajtis bge,pt %icc,1f 100125c28e83SPiotr Jasiukajtis! delay slot 100225c28e83SPiotr Jasiukajtis fpadd32 %f16,%f18,%f16 100325c28e83SPiotr Jasiukajtis fpadd32 %f16,BOUNDRY,%f16 100425c28e83SPiotr Jasiukajtis fmuld %f16,TINY,%f16 100525c28e83SPiotr Jasiukajtis1: 100625c28e83SPiotr Jasiukajtis tst %l2 100725c28e83SPiotr Jasiukajtis bge,pt %icc,1f 100825c28e83SPiotr Jasiukajtis! delay slot 100925c28e83SPiotr Jasiukajtis fpadd32 %f26,%f28,%f26 101025c28e83SPiotr Jasiukajtis fpadd32 %f26,BOUNDRY,%f26 101125c28e83SPiotr Jasiukajtis fmuld %f26,TINY,%f26 101225c28e83SPiotr Jasiukajtis1: 101325c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 101425c28e83SPiotr Jasiukajtis bg,pn %icc,.loop0 101525c28e83SPiotr Jasiukajtis! delay slot 101625c28e83SPiotr Jasiukajtis nop 101725c28e83SPiotr Jasiukajtis ba,pt %icc,.endloop0 101825c28e83SPiotr Jasiukajtis! delay slot 101925c28e83SPiotr Jasiukajtis nop 102025c28e83SPiotr Jasiukajtis 102125c28e83SPiotr Jasiukajtis 102225c28e83SPiotr Jasiukajtis.endloop2: 102325c28e83SPiotr Jasiukajtis for %f12,TWO96,%f12 102425c28e83SPiotr Jasiukajtis fmuld %f10,INVLN2_256,%f14 102525c28e83SPiotr Jasiukajtis faddd %f14,%f12,%f14 102625c28e83SPiotr Jasiukajtis fsubd %f14,%f12,%f18 102725c28e83SPiotr Jasiukajtis fmuld %f18,LN2_256H,%f12 102825c28e83SPiotr Jasiukajtis fsubd %f10,%f12,%f10 102925c28e83SPiotr Jasiukajtis fmuld %f18,LN2_256L,%f14 103025c28e83SPiotr Jasiukajtis fsubd %f10,%f14,%f10 103125c28e83SPiotr Jasiukajtis fmuld %f10,B3,%f12 103225c28e83SPiotr Jasiukajtis fdtoi %f18,%f18 103325c28e83SPiotr Jasiukajtis st %f18,[%fp+m1] 103425c28e83SPiotr Jasiukajtis fmuld %f10,%f10,%f14 103525c28e83SPiotr Jasiukajtis faddd %f12,B2,%f12 103625c28e83SPiotr Jasiukajtis fmuld %f10,B1,%f32 103725c28e83SPiotr Jasiukajtis fand %f18,NEGINF,%f18 103825c28e83SPiotr Jasiukajtis ld [%fp+m1],%l1 103925c28e83SPiotr Jasiukajtis fmuld %f14,%f12,%f14 104025c28e83SPiotr Jasiukajtis faddd %f32,ONE,%f32 1041*55fea89dSDan Cross sra %l1,8,%o4 104225c28e83SPiotr Jasiukajtis and %o4,0xff0,%o4 104325c28e83SPiotr Jasiukajtis faddd %f32,%f14,%f32 104425c28e83SPiotr Jasiukajtis ldd [%g1+%o4],%f14 104525c28e83SPiotr Jasiukajtis add %o4,8,%o4 104625c28e83SPiotr Jasiukajtis sra %l1,20,%l1 104725c28e83SPiotr Jasiukajtis ldd [%g1+%o4],%f30 104825c28e83SPiotr Jasiukajtis addcc %l1,1021,%l1 104925c28e83SPiotr Jasiukajtis fmuld %f10,%f32,%f10 105025c28e83SPiotr Jasiukajtis fmuld %f10,%f14,%f10 105125c28e83SPiotr Jasiukajtis faddd %f10,%f30,%f30 105225c28e83SPiotr Jasiukajtis faddd %f30,%f14,%f30 105325c28e83SPiotr Jasiukajtis bge,pt %icc,1f 105425c28e83SPiotr Jasiukajtis! delay slot 105525c28e83SPiotr Jasiukajtis fpadd32 %f30,%f18,%f30 105625c28e83SPiotr Jasiukajtis fpadd32 %f30,BOUNDRY,%f30 105725c28e83SPiotr Jasiukajtis fmuld %f30,TINY,%f30 105825c28e83SPiotr Jasiukajtis1: 105925c28e83SPiotr Jasiukajtis st %f30,[%o1] 106025c28e83SPiotr Jasiukajtis st %f31,[%o1+4] 106125c28e83SPiotr Jasiukajtis 106225c28e83SPiotr Jasiukajtis.endloop1: 106325c28e83SPiotr Jasiukajtis for %f2,TWO96,%f2 106425c28e83SPiotr Jasiukajtis fmuld %f0,INVLN2_256,%f4 106525c28e83SPiotr Jasiukajtis faddd %f4,%f2,%f4 106625c28e83SPiotr Jasiukajtis fsubd %f4,%f2,%f8 106725c28e83SPiotr Jasiukajtis fmuld %f8,LN2_256H,%f2 106825c28e83SPiotr Jasiukajtis fsubd %f0,%f2,%f0 106925c28e83SPiotr Jasiukajtis fmuld %f8,LN2_256L,%f4 107025c28e83SPiotr Jasiukajtis fsubd %f0,%f4,%f0 107125c28e83SPiotr Jasiukajtis fmuld %f0,B3,%f2 107225c28e83SPiotr Jasiukajtis fdtoi %f8,%f8 107325c28e83SPiotr Jasiukajtis st %f8,[%fp+m0] 107425c28e83SPiotr Jasiukajtis fmuld %f0,%f0,%f4 107525c28e83SPiotr Jasiukajtis faddd %f2,B2,%f2 107625c28e83SPiotr Jasiukajtis fmuld %f0,B1,%f32 107725c28e83SPiotr Jasiukajtis fand %f8,NEGINF,%f8 107825c28e83SPiotr Jasiukajtis ld [%fp+m0],%l0 107925c28e83SPiotr Jasiukajtis fmuld %f4,%f2,%f4 108025c28e83SPiotr Jasiukajtis faddd %f32,ONE,%f32 1081*55fea89dSDan Cross sra %l0,8,%o4 108225c28e83SPiotr Jasiukajtis and %o4,0xff0,%o4 108325c28e83SPiotr Jasiukajtis faddd %f32,%f4,%f32 108425c28e83SPiotr Jasiukajtis ldd [%g1+%o4],%f4 108525c28e83SPiotr Jasiukajtis add %o4,8,%o4 108625c28e83SPiotr Jasiukajtis sra %l0,20,%o3 108725c28e83SPiotr Jasiukajtis ldd [%g1+%o4],%f30 108825c28e83SPiotr Jasiukajtis addcc %o3,1021,%o3 108925c28e83SPiotr Jasiukajtis fmuld %f0,%f32,%f0 109025c28e83SPiotr Jasiukajtis fmuld %f0,%f4,%f0 109125c28e83SPiotr Jasiukajtis faddd %f0,%f30,%f30 109225c28e83SPiotr Jasiukajtis faddd %f30,%f4,%f30 109325c28e83SPiotr Jasiukajtis bge,pt %icc,1f 109425c28e83SPiotr Jasiukajtis! delay slot 109525c28e83SPiotr Jasiukajtis fpadd32 %f30,%f8,%f30 109625c28e83SPiotr Jasiukajtis fpadd32 %f30,BOUNDRY,%f30 109725c28e83SPiotr Jasiukajtis fmuld %f30,TINY,%f30 109825c28e83SPiotr Jasiukajtis1: 109925c28e83SPiotr Jasiukajtis st %f30,[%o0] 110025c28e83SPiotr Jasiukajtis st %f31,[%o0+4] 110125c28e83SPiotr Jasiukajtis 110225c28e83SPiotr Jasiukajtis.endloop0: 110325c28e83SPiotr Jasiukajtis st %f6,[%l3] 110425c28e83SPiotr Jasiukajtis st %f7,[%l3+4] 110525c28e83SPiotr Jasiukajtis st %f16,[%l4] 110625c28e83SPiotr Jasiukajtis st %f17,[%l4+4] 110725c28e83SPiotr Jasiukajtis st %f26,[%l5] 110825c28e83SPiotr Jasiukajtis st %f27,[%l5+4] 110925c28e83SPiotr Jasiukajtis ret 111025c28e83SPiotr Jasiukajtis restore 111125c28e83SPiotr Jasiukajtis 111225c28e83SPiotr Jasiukajtis 111325c28e83SPiotr Jasiukajtis.range0: 111425c28e83SPiotr Jasiukajtis cmp %l0,%l6 111525c28e83SPiotr Jasiukajtis bl,a,pt %icc,3f ! if x is tiny 111625c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 111725c28e83SPiotr Jasiukajtis faddd %f0,ONE,%f4 111825c28e83SPiotr Jasiukajtis 111925c28e83SPiotr Jasiukajtis cmp %l0,%o5 112025c28e83SPiotr Jasiukajtis bg,pt %icc,1f ! if x is huge, inf, nan 112125c28e83SPiotr Jasiukajtis! delay slot 112225c28e83SPiotr Jasiukajtis nop 112325c28e83SPiotr Jasiukajtis 112425c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f0,THRESH 112525c28e83SPiotr Jasiukajtis fbg,a,pt %fcc0,3f ! if x is huge and positive 112625c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 112725c28e83SPiotr Jasiukajtis fmuld HUGE,HUGE,%f4 112825c28e83SPiotr Jasiukajtis 112925c28e83SPiotr Jasiukajtis! x is near the extremes but within range; return to the loop 113025c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 113125c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 113225c28e83SPiotr Jasiukajtis ble,pn %icc,.endloop1 113325c28e83SPiotr Jasiukajtis! delay slot 113425c28e83SPiotr Jasiukajtis andn %l1,%i5,%l1 113525c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 113625c28e83SPiotr Jasiukajtis for %f2,TWO96,%f2 113725c28e83SPiotr Jasiukajtis ba,pt %icc,.loop1 113825c28e83SPiotr Jasiukajtis! delay slot 113925c28e83SPiotr Jasiukajtis fmuld %f0,INVLN2_256,%f4 114025c28e83SPiotr Jasiukajtis 114125c28e83SPiotr Jasiukajtis1: 114225c28e83SPiotr Jasiukajtis cmp %l0,%o7 114325c28e83SPiotr Jasiukajtis bl,pn %icc,2f ! if x is finite 114425c28e83SPiotr Jasiukajtis! delay slot 114525c28e83SPiotr Jasiukajtis nop 114625c28e83SPiotr Jasiukajtis fzero %f4 114725c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f0,NEGINF 114825c28e83SPiotr Jasiukajtis fmovdne %fcc0,%f0,%f4 114925c28e83SPiotr Jasiukajtis ba,pt %icc,3f 115025c28e83SPiotr Jasiukajtis fmuld %f4,%f4,%f4 ! x*x or zero*zero 115125c28e83SPiotr Jasiukajtis2: 115225c28e83SPiotr Jasiukajtis fmovd HUGE,%f4 115325c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f0,ONE 115425c28e83SPiotr Jasiukajtis fmovdl %fcc0,TINY,%f4 115525c28e83SPiotr Jasiukajtis fmuld %f4,%f4,%f4 ! huge*huge or tiny*tiny 115625c28e83SPiotr Jasiukajtis3: 115725c28e83SPiotr Jasiukajtis st %f4,[%o0] 115825c28e83SPiotr Jasiukajtis andn %l1,%i5,%l0 115925c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 116025c28e83SPiotr Jasiukajtis fmovd %f10,%f0 116125c28e83SPiotr Jasiukajtis st %f5,[%o0+4] 116225c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 116325c28e83SPiotr Jasiukajtis bg,pt %icc,.loop0 116425c28e83SPiotr Jasiukajtis! delay slot 116525c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 116625c28e83SPiotr Jasiukajtis ba,pt %icc,.endloop0 116725c28e83SPiotr Jasiukajtis! delay slot 116825c28e83SPiotr Jasiukajtis nop 116925c28e83SPiotr Jasiukajtis 117025c28e83SPiotr Jasiukajtis 117125c28e83SPiotr Jasiukajtis.range1: 117225c28e83SPiotr Jasiukajtis cmp %l1,%l6 117325c28e83SPiotr Jasiukajtis bl,a,pt %icc,3f ! if x is tiny 117425c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 117525c28e83SPiotr Jasiukajtis faddd %f10,ONE,%f14 117625c28e83SPiotr Jasiukajtis 117725c28e83SPiotr Jasiukajtis cmp %l1,%o5 117825c28e83SPiotr Jasiukajtis bg,pt %icc,1f ! if x is huge, inf, nan 117925c28e83SPiotr Jasiukajtis! delay slot 118025c28e83SPiotr Jasiukajtis nop 118125c28e83SPiotr Jasiukajtis 118225c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f10,THRESH 118325c28e83SPiotr Jasiukajtis fbg,a,pt %fcc0,3f ! if x is huge and positive 118425c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 118525c28e83SPiotr Jasiukajtis fmuld HUGE,HUGE,%f14 118625c28e83SPiotr Jasiukajtis 118725c28e83SPiotr Jasiukajtis! x is near the extremes but within range; return to the loop 118825c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 118925c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 119025c28e83SPiotr Jasiukajtis ble,pn %icc,.endloop2 119125c28e83SPiotr Jasiukajtis! delay slot 119225c28e83SPiotr Jasiukajtis andn %l2,%i5,%l2 119325c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 119425c28e83SPiotr Jasiukajtis for %f12,TWO96,%f12 119525c28e83SPiotr Jasiukajtis ba,pt %icc,.loop2 119625c28e83SPiotr Jasiukajtis! delay slot 119725c28e83SPiotr Jasiukajtis fmuld %f10,INVLN2_256,%f14 119825c28e83SPiotr Jasiukajtis 119925c28e83SPiotr Jasiukajtis1: 120025c28e83SPiotr Jasiukajtis cmp %l1,%o7 120125c28e83SPiotr Jasiukajtis bl,pn %icc,2f ! if x is finite 120225c28e83SPiotr Jasiukajtis! delay slot 120325c28e83SPiotr Jasiukajtis nop 120425c28e83SPiotr Jasiukajtis fzero %f14 120525c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f10,NEGINF 120625c28e83SPiotr Jasiukajtis fmovdne %fcc0,%f10,%f14 120725c28e83SPiotr Jasiukajtis ba,pt %icc,3f 120825c28e83SPiotr Jasiukajtis fmuld %f14,%f14,%f14 ! x*x or zero*zero 120925c28e83SPiotr Jasiukajtis2: 121025c28e83SPiotr Jasiukajtis fmovd HUGE,%f14 121125c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f10,ONE 121225c28e83SPiotr Jasiukajtis fmovdl %fcc0,TINY,%f14 121325c28e83SPiotr Jasiukajtis fmuld %f14,%f14,%f14 ! huge*huge or tiny*tiny 121425c28e83SPiotr Jasiukajtis3: 121525c28e83SPiotr Jasiukajtis st %f14,[%o1] 121625c28e83SPiotr Jasiukajtis andn %l2,%i5,%l1 121725c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 121825c28e83SPiotr Jasiukajtis fmovd %f20,%f10 121925c28e83SPiotr Jasiukajtis st %f15,[%o1+4] 122025c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 122125c28e83SPiotr Jasiukajtis bg,pt %icc,.loop1 122225c28e83SPiotr Jasiukajtis! delay slot 122325c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 122425c28e83SPiotr Jasiukajtis ba,pt %icc,.endloop1 122525c28e83SPiotr Jasiukajtis! delay slot 122625c28e83SPiotr Jasiukajtis nop 122725c28e83SPiotr Jasiukajtis 122825c28e83SPiotr Jasiukajtis 122925c28e83SPiotr Jasiukajtis.range2: 123025c28e83SPiotr Jasiukajtis cmp %l2,%l6 123125c28e83SPiotr Jasiukajtis bl,a,pt %icc,3f ! if x is tiny 123225c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 123325c28e83SPiotr Jasiukajtis faddd %f20,ONE,%f24 123425c28e83SPiotr Jasiukajtis 123525c28e83SPiotr Jasiukajtis cmp %l2,%o5 123625c28e83SPiotr Jasiukajtis bg,pt %icc,1f ! if x is huge, inf, nan 123725c28e83SPiotr Jasiukajtis! delay slot 123825c28e83SPiotr Jasiukajtis nop 123925c28e83SPiotr Jasiukajtis 124025c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f20,THRESH 124125c28e83SPiotr Jasiukajtis fbg,a,pt %fcc0,3f ! if x is huge and positive 124225c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken 124325c28e83SPiotr Jasiukajtis fmuld HUGE,HUGE,%f24 124425c28e83SPiotr Jasiukajtis 124525c28e83SPiotr Jasiukajtis! x is near the extremes but within range; return to the loop 124625c28e83SPiotr Jasiukajtis ba,pt %icc,.cont 124725c28e83SPiotr Jasiukajtis! delay slot 124825c28e83SPiotr Jasiukajtis faddd %f4,%f2,%f4 124925c28e83SPiotr Jasiukajtis 125025c28e83SPiotr Jasiukajtis1: 125125c28e83SPiotr Jasiukajtis cmp %l2,%o7 125225c28e83SPiotr Jasiukajtis bl,pn %icc,2f ! if x is finite 125325c28e83SPiotr Jasiukajtis! delay slot 125425c28e83SPiotr Jasiukajtis nop 125525c28e83SPiotr Jasiukajtis fzero %f24 125625c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f20,NEGINF 125725c28e83SPiotr Jasiukajtis fmovdne %fcc0,%f20,%f24 125825c28e83SPiotr Jasiukajtis ba,pt %icc,3f 125925c28e83SPiotr Jasiukajtis fmuld %f24,%f24,%f24 ! x*x or zero*zero 126025c28e83SPiotr Jasiukajtis2: 126125c28e83SPiotr Jasiukajtis fmovd HUGE,%f24 126225c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f20,ONE 126325c28e83SPiotr Jasiukajtis fmovdl %fcc0,TINY,%f24 126425c28e83SPiotr Jasiukajtis fmuld %f24,%f24,%f24 ! huge*huge or tiny*tiny 126525c28e83SPiotr Jasiukajtis3: 126625c28e83SPiotr Jasiukajtis st %f24,[%i3] 126725c28e83SPiotr Jasiukajtis st %f25,[%i3+4] 126825c28e83SPiotr Jasiukajtis lda [%i1]%asi,%l2 ! preload next argument 126925c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f20 127025c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f21 127125c28e83SPiotr Jasiukajtis andn %l2,%i5,%l2 127225c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! x += stridex 127325c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 127425c28e83SPiotr Jasiukajtis bg,pt %icc,.loop2 127525c28e83SPiotr Jasiukajtis! delay slot 127625c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! y += stridey 127725c28e83SPiotr Jasiukajtis ba,pt %icc,.endloop2 127825c28e83SPiotr Jasiukajtis! delay slot 127925c28e83SPiotr Jasiukajtis nop 128025c28e83SPiotr Jasiukajtis 128125c28e83SPiotr Jasiukajtis SET_SIZE(__vexp) 128225c28e83SPiotr Jasiukajtis 1283