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