1*25c28e83SPiotr Jasiukajtis/*
2*25c28e83SPiotr Jasiukajtis * CDDL HEADER START
3*25c28e83SPiotr Jasiukajtis *
4*25c28e83SPiotr Jasiukajtis * The contents of this file are subject to the terms of the
5*25c28e83SPiotr Jasiukajtis * Common Development and Distribution License (the "License").
6*25c28e83SPiotr Jasiukajtis * You may not use this file except in compliance with the License.
7*25c28e83SPiotr Jasiukajtis *
8*25c28e83SPiotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*25c28e83SPiotr Jasiukajtis * or http://www.opensolaris.org/os/licensing.
10*25c28e83SPiotr Jasiukajtis * See the License for the specific language governing permissions
11*25c28e83SPiotr Jasiukajtis * and limitations under the License.
12*25c28e83SPiotr Jasiukajtis *
13*25c28e83SPiotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each
14*25c28e83SPiotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*25c28e83SPiotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the
16*25c28e83SPiotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying
17*25c28e83SPiotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner]
18*25c28e83SPiotr Jasiukajtis *
19*25c28e83SPiotr Jasiukajtis * CDDL HEADER END
20*25c28e83SPiotr Jasiukajtis */
21*25c28e83SPiotr Jasiukajtis/*
22*25c28e83SPiotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
23*25c28e83SPiotr Jasiukajtis */
24*25c28e83SPiotr Jasiukajtis/*
25*25c28e83SPiotr Jasiukajtis * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
26*25c28e83SPiotr Jasiukajtis * Use is subject to license terms.
27*25c28e83SPiotr Jasiukajtis */
28*25c28e83SPiotr Jasiukajtis
29*25c28e83SPiotr Jasiukajtis	.file	"__vexpf.S"
30*25c28e83SPiotr Jasiukajtis
31*25c28e83SPiotr Jasiukajtis#include "libm.h"
32*25c28e83SPiotr Jasiukajtis
33*25c28e83SPiotr Jasiukajtis	RO_DATA
34*25c28e83SPiotr Jasiukajtis	.align	64
35*25c28e83SPiotr Jasiukajtis!!  2^(i/256) - ((i & 0xf0) << 44), i = [0, 255]
36*25c28e83SPiotr Jasiukajtis.CONST_TBL:
37*25c28e83SPiotr Jasiukajtis	.word	0x3ff00000, 0x00000000, 0x3ff00b1a, 0xfa5abcbf
38*25c28e83SPiotr Jasiukajtis	.word	0x3ff0163d, 0xa9fb3335, 0x3ff02168, 0x143b0281
39*25c28e83SPiotr Jasiukajtis	.word	0x3ff02c9a, 0x3e778061, 0x3ff037d4, 0x2e11bbcc
40*25c28e83SPiotr Jasiukajtis	.word	0x3ff04315, 0xe86e7f85, 0x3ff04e5f, 0x72f654b1
41*25c28e83SPiotr Jasiukajtis	.word	0x3ff059b0, 0xd3158574, 0x3ff0650a, 0x0e3c1f89
42*25c28e83SPiotr Jasiukajtis	.word	0x3ff0706b, 0x29ddf6de, 0x3ff07bd4, 0x2b72a836
43*25c28e83SPiotr Jasiukajtis	.word	0x3ff08745, 0x18759bc8, 0x3ff092bd, 0xf66607e0
44*25c28e83SPiotr Jasiukajtis	.word	0x3ff09e3e, 0xcac6f383, 0x3ff0a9c7, 0x9b1f3919
45*25c28e83SPiotr Jasiukajtis	.word	0x3fefb558, 0x6cf9890f, 0x3fefc0f1, 0x45e46c85
46*25c28e83SPiotr Jasiukajtis	.word	0x3fefcc92, 0x2b7247f7, 0x3fefd83b, 0x23395dec
47*25c28e83SPiotr Jasiukajtis	.word	0x3fefe3ec, 0x32d3d1a2, 0x3fefefa5, 0x5fdfa9c5
48*25c28e83SPiotr Jasiukajtis	.word	0x3feffb66, 0xaffed31b, 0x3ff00730, 0x28d7233e
49*25c28e83SPiotr Jasiukajtis	.word	0x3ff01301, 0xd0125b51, 0x3ff01edb, 0xab5e2ab6
50*25c28e83SPiotr Jasiukajtis	.word	0x3ff02abd, 0xc06c31cc, 0x3ff036a8, 0x14f204ab
51*25c28e83SPiotr Jasiukajtis	.word	0x3ff0429a, 0xaea92de0, 0x3ff04e95, 0x934f312e
52*25c28e83SPiotr Jasiukajtis	.word	0x3ff05a98, 0xc8a58e51, 0x3ff066a4, 0x5471c3c2
53*25c28e83SPiotr Jasiukajtis	.word	0x3fef72b8, 0x3c7d517b, 0x3fef7ed4, 0x8695bbc0
54*25c28e83SPiotr Jasiukajtis	.word	0x3fef8af9, 0x388c8dea, 0x3fef9726, 0x58375d2f
55*25c28e83SPiotr Jasiukajtis	.word	0x3fefa35b, 0xeb6fcb75, 0x3fefaf99, 0xf8138a1c
56*25c28e83SPiotr Jasiukajtis	.word	0x3fefbbe0, 0x84045cd4, 0x3fefc82f, 0x95281c6b
57*25c28e83SPiotr Jasiukajtis	.word	0x3fefd487, 0x3168b9aa, 0x3fefe0e7, 0x5eb44027
58*25c28e83SPiotr Jasiukajtis	.word	0x3fefed50, 0x22fcd91d, 0x3feff9c1, 0x8438ce4d
59*25c28e83SPiotr Jasiukajtis	.word	0x3ff0063b, 0x88628cd6, 0x3ff012be, 0x3578a819
60*25c28e83SPiotr Jasiukajtis	.word	0x3ff01f49, 0x917ddc96, 0x3ff02bdd, 0xa27912d1
61*25c28e83SPiotr Jasiukajtis	.word	0x3fef387a, 0x6e756238, 0x3fef451f, 0xfb82140a
62*25c28e83SPiotr Jasiukajtis	.word	0x3fef51ce, 0x4fb2a63f, 0x3fef5e85, 0x711ece75
63*25c28e83SPiotr Jasiukajtis	.word	0x3fef6b45, 0x65e27cdd, 0x3fef780e, 0x341ddf29
64*25c28e83SPiotr Jasiukajtis	.word	0x3fef84df, 0xe1f56381, 0x3fef91ba, 0x7591bb70
65*25c28e83SPiotr Jasiukajtis	.word	0x3fef9e9d, 0xf51fdee1, 0x3fefab8a, 0x66d10f13
66*25c28e83SPiotr Jasiukajtis	.word	0x3fefb87f, 0xd0dad990, 0x3fefc57e, 0x39771b2f
67*25c28e83SPiotr Jasiukajtis	.word	0x3fefd285, 0xa6e4030b, 0x3fefdf96, 0x1f641589
68*25c28e83SPiotr Jasiukajtis	.word	0x3fefecaf, 0xa93e2f56, 0x3feff9d2, 0x4abd886b
69*25c28e83SPiotr Jasiukajtis	.word	0x3fef06fe, 0x0a31b715, 0x3fef1432, 0xedeeb2fd
70*25c28e83SPiotr Jasiukajtis	.word	0x3fef2170, 0xfc4cd831, 0x3fef2eb8, 0x3ba8ea32
71*25c28e83SPiotr Jasiukajtis	.word	0x3fef3c08, 0xb26416ff, 0x3fef4962, 0x66e3fa2d
72*25c28e83SPiotr Jasiukajtis	.word	0x3fef56c5, 0x5f929ff1, 0x3fef6431, 0xa2de883b
73*25c28e83SPiotr Jasiukajtis	.word	0x3fef71a7, 0x373aa9cb, 0x3fef7f26, 0x231e754a
74*25c28e83SPiotr Jasiukajtis	.word	0x3fef8cae, 0x6d05d866, 0x3fef9a40, 0x1b7140ef
75*25c28e83SPiotr Jasiukajtis	.word	0x3fefa7db, 0x34e59ff7, 0x3fefb57f, 0xbfec6cf4
76*25c28e83SPiotr Jasiukajtis	.word	0x3fefc32d, 0xc313a8e5, 0x3fefd0e5, 0x44ede173
77*25c28e83SPiotr Jasiukajtis	.word	0x3feedea6, 0x4c123422, 0x3feeec70, 0xdf1c5175
78*25c28e83SPiotr Jasiukajtis	.word	0x3feefa45, 0x04ac801c, 0x3fef0822, 0xc367a024
79*25c28e83SPiotr Jasiukajtis	.word	0x3fef160a, 0x21f72e2a, 0x3fef23fb, 0x2709468a
80*25c28e83SPiotr Jasiukajtis	.word	0x3fef31f5, 0xd950a897, 0x3fef3ffa, 0x3f84b9d4
81*25c28e83SPiotr Jasiukajtis	.word	0x3fef4e08, 0x6061892d, 0x3fef5c20, 0x42a7d232
82*25c28e83SPiotr Jasiukajtis	.word	0x3fef6a41, 0xed1d0057, 0x3fef786d, 0x668b3237
83*25c28e83SPiotr Jasiukajtis	.word	0x3fef86a2, 0xb5c13cd0, 0x3fef94e1, 0xe192aed2
84*25c28e83SPiotr Jasiukajtis	.word	0x3fefa32a, 0xf0d7d3de, 0x3fefb17d, 0xea6db7d7
85*25c28e83SPiotr Jasiukajtis	.word	0x3feebfda, 0xd5362a27, 0x3feece41, 0xb817c114
86*25c28e83SPiotr Jasiukajtis	.word	0x3feedcb2, 0x99fddd0d, 0x3feeeb2d, 0x81d8abff
87*25c28e83SPiotr Jasiukajtis	.word	0x3feef9b2, 0x769d2ca7, 0x3fef0841, 0x7f4531ee
88*25c28e83SPiotr Jasiukajtis	.word	0x3fef16da, 0xa2cf6642, 0x3fef257d, 0xe83f4eef
89*25c28e83SPiotr Jasiukajtis	.word	0x3fef342b, 0x569d4f82, 0x3fef42e2, 0xf4f6ad27
90*25c28e83SPiotr Jasiukajtis	.word	0x3fef51a4, 0xca5d920f, 0x3fef6070, 0xdde910d2
91*25c28e83SPiotr Jasiukajtis	.word	0x3fef6f47, 0x36b527da, 0x3fef7e27, 0xdbe2c4cf
92*25c28e83SPiotr Jasiukajtis	.word	0x3fef8d12, 0xd497c7fd, 0x3fef9c08, 0x27ff07cc
93*25c28e83SPiotr Jasiukajtis	.word	0x3feeab07, 0xdd485429, 0x3feeba11, 0xfba87a03
94*25c28e83SPiotr Jasiukajtis	.word	0x3feec926, 0x8a5946b7, 0x3feed845, 0x90998b93
95*25c28e83SPiotr Jasiukajtis	.word	0x3feee76f, 0x15ad2148, 0x3feef6a3, 0x20dceb71
96*25c28e83SPiotr Jasiukajtis	.word	0x3fef05e1, 0xb976dc09, 0x3fef152a, 0xe6cdf6f4
97*25c28e83SPiotr Jasiukajtis	.word	0x3fef247e, 0xb03a5585, 0x3fef33dd, 0x1d1929fd
98*25c28e83SPiotr Jasiukajtis	.word	0x3fef4346, 0x34ccc320, 0x3fef52b9, 0xfebc8fb7
99*25c28e83SPiotr Jasiukajtis	.word	0x3fef6238, 0x82552225, 0x3fef71c1, 0xc70833f6
100*25c28e83SPiotr Jasiukajtis	.word	0x3fef8155, 0xd44ca973, 0x3fef90f4, 0xb19e9538
101*25c28e83SPiotr Jasiukajtis	.word	0x3feea09e, 0x667f3bcd, 0x3feeb052, 0xfa75173e
102*25c28e83SPiotr Jasiukajtis	.word	0x3feec012, 0x750bdabf, 0x3feecfdc, 0xddd47645
103*25c28e83SPiotr Jasiukajtis	.word	0x3feedfb2, 0x3c651a2f, 0x3feeef92, 0x98593ae5
104*25c28e83SPiotr Jasiukajtis	.word	0x3feeff7d, 0xf9519484, 0x3fef0f74, 0x66f42e87
105*25c28e83SPiotr Jasiukajtis	.word	0x3fef1f75, 0xe8ec5f74, 0x3fef2f82, 0x86ead08a
106*25c28e83SPiotr Jasiukajtis	.word	0x3fef3f9a, 0x48a58174, 0x3fef4fbd, 0x35d7cbfd
107*25c28e83SPiotr Jasiukajtis	.word	0x3fef5feb, 0x564267c9, 0x3fef7024, 0xb1ab6e09
108*25c28e83SPiotr Jasiukajtis	.word	0x3fef8069, 0x4fde5d3f, 0x3fef90b9, 0x38ac1cf6
109*25c28e83SPiotr Jasiukajtis	.word	0x3feea114, 0x73eb0187, 0x3feeb17b, 0x0976cfdb
110*25c28e83SPiotr Jasiukajtis	.word	0x3feec1ed, 0x0130c132, 0x3feed26a, 0x62ff86f0
111*25c28e83SPiotr Jasiukajtis	.word	0x3feee2f3, 0x36cf4e62, 0x3feef387, 0x8491c491
112*25c28e83SPiotr Jasiukajtis	.word	0x3fef0427, 0x543e1a12, 0x3fef14d2, 0xadd106d9
113*25c28e83SPiotr Jasiukajtis	.word	0x3fef2589, 0x994cce13, 0x3fef364c, 0x1eb941f7
114*25c28e83SPiotr Jasiukajtis	.word	0x3fef471a, 0x4623c7ad, 0x3fef57f4, 0x179f5b21
115*25c28e83SPiotr Jasiukajtis	.word	0x3fef68d9, 0x9b4492ed, 0x3fef79ca, 0xd931a436
116*25c28e83SPiotr Jasiukajtis	.word	0x3fef8ac7, 0xd98a6699, 0x3fef9bd0, 0xa478580f
117*25c28e83SPiotr Jasiukajtis	.word	0x3feeace5, 0x422aa0db, 0x3feebe05, 0xbad61778
118*25c28e83SPiotr Jasiukajtis	.word	0x3feecf32, 0x16b5448c, 0x3feee06a, 0x5e0866d9
119*25c28e83SPiotr Jasiukajtis	.word	0x3feef1ae, 0x99157736, 0x3fef02fe, 0xd0282c8a
120*25c28e83SPiotr Jasiukajtis	.word	0x3fef145b, 0x0b91ffc6, 0x3fef25c3, 0x53aa2fe2
121*25c28e83SPiotr Jasiukajtis	.word	0x3fef3737, 0xb0cdc5e5, 0x3fef48b8, 0x2b5f98e5
122*25c28e83SPiotr Jasiukajtis	.word	0x3fef5a44, 0xcbc8520f, 0x3fef6bdd, 0x9a7670b3
123*25c28e83SPiotr Jasiukajtis	.word	0x3fef7d82, 0x9fde4e50, 0x3fef8f33, 0xe47a22a2
124*25c28e83SPiotr Jasiukajtis	.word	0x3fefa0f1, 0x70ca07ba, 0x3fefb2bb, 0x4d53fe0d
125*25c28e83SPiotr Jasiukajtis	.word	0x3feec491, 0x82a3f090, 0x3feed674, 0x194bb8d5
126*25c28e83SPiotr Jasiukajtis	.word	0x3feee863, 0x19e32323, 0x3feefa5e, 0x8d07f29e
127*25c28e83SPiotr Jasiukajtis	.word	0x3fef0c66, 0x7b5de565, 0x3fef1e7a, 0xed8eb8bb
128*25c28e83SPiotr Jasiukajtis	.word	0x3fef309b, 0xec4a2d33, 0x3fef42c9, 0x80460ad8
129*25c28e83SPiotr Jasiukajtis	.word	0x3fef5503, 0xb23e255d, 0x3fef674a, 0x8af46052
130*25c28e83SPiotr Jasiukajtis	.word	0x3fef799e, 0x1330b358, 0x3fef8bfe, 0x53c12e59
131*25c28e83SPiotr Jasiukajtis	.word	0x3fef9e6b, 0x5579fdbf, 0x3fefb0e5, 0x21356eba
132*25c28e83SPiotr Jasiukajtis	.word	0x3fefc36b, 0xbfd3f37a, 0x3fefd5ff, 0x3a3c2774
133*25c28e83SPiotr Jasiukajtis	.word	0x3feee89f, 0x995ad3ad, 0x3feefb4c, 0xe622f2ff
134*25c28e83SPiotr Jasiukajtis	.word	0x3fef0e07, 0x298db666, 0x3fef20ce, 0x6c9a8952
135*25c28e83SPiotr Jasiukajtis	.word	0x3fef33a2, 0xb84f15fb, 0x3fef4684, 0x15b749b1
136*25c28e83SPiotr Jasiukajtis	.word	0x3fef5972, 0x8de5593a, 0x3fef6c6e, 0x29f1c52a
137*25c28e83SPiotr Jasiukajtis	.word	0x3fef7f76, 0xf2fb5e47, 0x3fef928c, 0xf22749e4
138*25c28e83SPiotr Jasiukajtis	.word	0x3fefa5b0, 0x30a1064a, 0x3fefb8e0, 0xb79a6f1f
139*25c28e83SPiotr Jasiukajtis	.word	0x3fefcc1e, 0x904bc1d2, 0x3fefdf69, 0xc3f3a207
140*25c28e83SPiotr Jasiukajtis	.word	0x3feff2c2, 0x5bd71e09, 0x3ff00628, 0x6141b33d
141*25c28e83SPiotr Jasiukajtis	.word	0x3fef199b, 0xdd85529c, 0x3fef2d1c, 0xd9fa652c
142*25c28e83SPiotr Jasiukajtis	.word	0x3fef40ab, 0x5fffd07a, 0x3fef5447, 0x78fafb22
143*25c28e83SPiotr Jasiukajtis	.word	0x3fef67f1, 0x2e57d14b, 0x3fef7ba8, 0x8988c933
144*25c28e83SPiotr Jasiukajtis	.word	0x3fef8f6d, 0x9406e7b5, 0x3fefa340, 0x5751c4db
145*25c28e83SPiotr Jasiukajtis	.word	0x3fefb720, 0xdcef9069, 0x3fefcb0f, 0x2e6d1675
146*25c28e83SPiotr Jasiukajtis	.word	0x3fefdf0b, 0x555dc3fa, 0x3feff315, 0x5b5bab74
147*25c28e83SPiotr Jasiukajtis	.word	0x3ff0072d, 0x4a07897c, 0x3ff01b53, 0x2b08c968
148*25c28e83SPiotr Jasiukajtis	.word	0x3ff02f87, 0x080d89f2, 0x3ff043c8, 0xeacaa1d6
149*25c28e83SPiotr Jasiukajtis	.word	0x3fef5818, 0xdcfba487, 0x3fef6c76, 0xe862e6d3
150*25c28e83SPiotr Jasiukajtis	.word	0x3fef80e3, 0x16c98398, 0x3fef955d, 0x71ff6075
151*25c28e83SPiotr Jasiukajtis	.word	0x3fefa9e6, 0x03db3285, 0x3fefbe7c, 0xd63a8315
152*25c28e83SPiotr Jasiukajtis	.word	0x3fefd321, 0xf301b460, 0x3fefe7d5, 0x641c0658
153*25c28e83SPiotr Jasiukajtis	.word	0x3feffc97, 0x337b9b5f, 0x3ff01167, 0x6b197d17
154*25c28e83SPiotr Jasiukajtis	.word	0x3ff02646, 0x14f5a129, 0x3ff03b33, 0x3b16ee12
155*25c28e83SPiotr Jasiukajtis	.word	0x3ff0502e, 0xe78b3ff6, 0x3ff06539, 0x24676d76
156*25c28e83SPiotr Jasiukajtis	.word	0x3ff07a51, 0xfbc74c83, 0x3ff08f79, 0x77cdb740
157*25c28e83SPiotr Jasiukajtis	.word	0x3fefa4af, 0xa2a490da, 0x3fefb9f4, 0x867cca6e
158*25c28e83SPiotr Jasiukajtis	.word	0x3fefcf48, 0x2d8e67f1, 0x3fefe4aa, 0xa2188510
159*25c28e83SPiotr Jasiukajtis	.word	0x3feffa1b, 0xee615a27, 0x3ff00f9c, 0x1cb6412a
160*25c28e83SPiotr Jasiukajtis	.word	0x3ff0252b, 0x376bba97, 0x3ff03ac9, 0x48dd7274
161*25c28e83SPiotr Jasiukajtis	.word	0x3ff05076, 0x5b6e4540, 0x3ff06632, 0x798844f8
162*25c28e83SPiotr Jasiukajtis	.word	0x3ff07bfd, 0xad9cbe14, 0x3ff091d8, 0x02243c89
163*25c28e83SPiotr Jasiukajtis	.word	0x3ff0a7c1, 0x819e90d8, 0x3ff0bdba, 0x3692d514
164*25c28e83SPiotr Jasiukajtis	.word	0x3ff0d3c2, 0x2b8f71f1, 0x3ff0e9d9, 0x6b2a23d9
165*25c28e83SPiotr Jasiukajtis
166*25c28e83SPiotr Jasiukajtis	.word	0x7149f2ca, 0x0da24260	! 1.0e30f, 1.0e-30f
167*25c28e83SPiotr Jasiukajtis	.word	0x3ecebfbe, 0x9d182250	! KA2 = 3.66556671660783833261e-06
168*25c28e83SPiotr Jasiukajtis	.word	0x3f662e43, 0xe2528362	! KA1 = 2.70760782821392980564e-03
169*25c28e83SPiotr Jasiukajtis	.word	0x40771547, 0x652b82fe	! K256ONLN2 = 369.3299304675746271
170*25c28e83SPiotr Jasiukajtis	.word	0x42aeac4f, 0x42b17218	! THRESHOLD = 87.3365402f
171*25c28e83SPiotr Jasiukajtis					! THRESHOLDL = 88.7228394f
172*25c28e83SPiotr Jasiukajtis! local storage indices
173*25c28e83SPiotr Jasiukajtis
174*25c28e83SPiotr Jasiukajtis#define tmp0		STACK_BIAS-32
175*25c28e83SPiotr Jasiukajtis#define tmp1		STACK_BIAS-28
176*25c28e83SPiotr Jasiukajtis#define tmp2		STACK_BIAS-24
177*25c28e83SPiotr Jasiukajtis#define tmp3		STACK_BIAS-20
178*25c28e83SPiotr Jasiukajtis#define tmp4		STACK_BIAS-16
179*25c28e83SPiotr Jasiukajtis#define tmp5		STACK_BIAS-12
180*25c28e83SPiotr Jasiukajtis#define tmp6		STACK_BIAS-8
181*25c28e83SPiotr Jasiukajtis#define tmp7		STACK_BIAS-4
182*25c28e83SPiotr Jasiukajtis
183*25c28e83SPiotr Jasiukajtis! sizeof temp storage - must be a multiple of 16 for V9
184*25c28e83SPiotr Jasiukajtis#define tmps 		0x20
185*25c28e83SPiotr Jasiukajtis
186*25c28e83SPiotr Jasiukajtis#define I5_THRESHOLD	%i5
187*25c28e83SPiotr Jasiukajtis#define G1_CONST_TBL	%g5
188*25c28e83SPiotr Jasiukajtis#define G5_CONST	%g1
189*25c28e83SPiotr Jasiukajtis
190*25c28e83SPiotr Jasiukajtis#define F62_K256ONLN2	%f62
191*25c28e83SPiotr Jasiukajtis#define F60_KA2		%f60
192*25c28e83SPiotr Jasiukajtis#define F58_KA1		%f58
193*25c28e83SPiotr Jasiukajtis
194*25c28e83SPiotr Jasiukajtis#define THRESHOLDL	%f0
195*25c28e83SPiotr Jasiukajtis
196*25c28e83SPiotr Jasiukajtis! register use
197*25c28e83SPiotr Jasiukajtis! i0  n
198*25c28e83SPiotr Jasiukajtis! i1  x
199*25c28e83SPiotr Jasiukajtis! i2  stridex
200*25c28e83SPiotr Jasiukajtis! i3  y
201*25c28e83SPiotr Jasiukajtis! i4  stridey
202*25c28e83SPiotr Jasiukajtis
203*25c28e83SPiotr Jasiukajtis! i5  0x42aeac4f (87.3365402f)
204*25c28e83SPiotr Jasiukajtis
205*25c28e83SPiotr Jasiukajtis! g1  CONST_TBL
206*25c28e83SPiotr Jasiukajtis! g5  0x7fffffff
207*25c28e83SPiotr Jasiukajtis
208*25c28e83SPiotr Jasiukajtis! f62 K256ONLN2 = 369.3299304675746271
209*25c28e83SPiotr Jasiukajtis! f60 KA2 = 3.66556671660783833261e-06
210*25c28e83SPiotr Jasiukajtis! f58 KA1 = 2.70760782821392980564e-03
211*25c28e83SPiotr Jasiukajtis
212*25c28e83SPiotr Jasiukajtis
213*25c28e83SPiotr Jasiukajtis!		!!!!!  Algorithm  !!!!!
214*25c28e83SPiotr Jasiukajtis!
215*25c28e83SPiotr Jasiukajtis!  double y, dtmp, drez;
216*25c28e83SPiotr Jasiukajtis!  int k, sign, Xi;
217*25c28e83SPiotr Jasiukajtis!  float X, Y;
218*25c28e83SPiotr Jasiukajtis!  int THRESHOLD = 0x42aeac4f; /* 87.3365402f */
219*25c28e83SPiotr Jasiukajtis!  float THRESHOLDL = 88.7228394f;
220*25c28e83SPiotr Jasiukajtis!  double KA2 = 3.66556671660783833261e-06;
221*25c28e83SPiotr Jasiukajtis!  double KA1 = 2.70760782821392980564e-03;
222*25c28e83SPiotr Jasiukajtis!  double K256ONLN2 = 369.3299304675746271;
223*25c28e83SPiotr Jasiukajtis!  char *CONST_TBL;
224*25c28e83SPiotr Jasiukajtis!
225*25c28e83SPiotr Jasiukajtis!  X  = px[0];
226*25c28e83SPiotr Jasiukajtis!  Xi = ((int*)px)[0];
227*25c28e83SPiotr Jasiukajtis!  ax = Xi & 0x7fffffff;
228*25c28e83SPiotr Jasiukajtis!
229*25c28e83SPiotr Jasiukajtis!  if (ax > THRESHOLD) {
230*25c28e83SPiotr Jasiukajtis!    sign = ((unsigned)Xi >> 29) & 4;
231*25c28e83SPiotr Jasiukajtis!    if (ax >= 0x7f800000) {      /* Inf or NaN */
232*25c28e83SPiotr Jasiukajtis!      if (ax > 0x7f800000) {     /* NaN */
233*25c28e83SPiotr Jasiukajtis!        Y = X * X;               /* NaN -> NaN */
234*25c28e83SPiotr Jasiukajtis!        return Y;
235*25c28e83SPiotr Jasiukajtis!      }
236*25c28e83SPiotr Jasiukajtis!      Y = (sign) ? zero : X;     /* +Inf -> +Inf , -Inf -> zero */
237*25c28e83SPiotr Jasiukajtis!      return Y;
238*25c28e83SPiotr Jasiukajtis!    }
239*25c28e83SPiotr Jasiukajtis!
240*25c28e83SPiotr Jasiukajtis!    if ( X < 0.0f || X >= THRESHOLDL ) {
241*25c28e83SPiotr Jasiukajtis!      Y = ((float*)(CONST_TBL + 2048 + sign))[0];
242*25c28e83SPiotr Jasiukajtis!         /* Xi >= THRESHOLDL : Y = 1.0e+30f */
243*25c28e83SPiotr Jasiukajtis!         /* Xi < -THRESHOLD  : Y = 1.0e-30f */
244*25c28e83SPiotr Jasiukajtis!      Y =  Y * Y;
245*25c28e83SPiotr Jasiukajtis!         /* Xi >= THRESHOLDL : +Inf + overflow  */
246*25c28e83SPiotr Jasiukajtis!         /* Xi < -THRESHOLD  : +0 + underflow */
247*25c28e83SPiotr Jasiukajtis!      return Y;
248*25c28e83SPiotr Jasiukajtis!    }
249*25c28e83SPiotr Jasiukajtis!  }
250*25c28e83SPiotr Jasiukajtis!  vis_write_gsr(12 << 3);
251*25c28e83SPiotr Jasiukajtis!  y = (double) X;
252*25c28e83SPiotr Jasiukajtis!  y = K256ONLN2 * y;
253*25c28e83SPiotr Jasiukajtis!  k = (int) y;
254*25c28e83SPiotr Jasiukajtis!  dtmp = (double) k;
255*25c28e83SPiotr Jasiukajtis!  y -= dtmp;
256*25c28e83SPiotr Jasiukajtis!  dtmp = y * KA2;
257*25c28e83SPiotr Jasiukajtis!  dtmp += KA1;
258*25c28e83SPiotr Jasiukajtis!  y *= dtmp;
259*25c28e83SPiotr Jasiukajtis!  y = (y * KA2 + KA1) * y;
260*25c28e83SPiotr Jasiukajtis!  ((int*)&drez)[0] = k;
261*25c28e83SPiotr Jasiukajtis!  ((int*)&drez)[1] = 0;
262*25c28e83SPiotr Jasiukajtis!  ((float*)&drez)[0] = vis_fpackfix(drez);
263*25c28e83SPiotr Jasiukajtis!  k &= 255;
264*25c28e83SPiotr Jasiukajtis!  k <<= 3;
265*25c28e83SPiotr Jasiukajtis!  dtmp = ((double*)(CONST_TBL + k))[0];
266*25c28e83SPiotr Jasiukajtis!  drez = vis_fpadd32(drez,dtmp);
267*25c28e83SPiotr Jasiukajtis!  y *= drez;
268*25c28e83SPiotr Jasiukajtis!  y += drez;
269*25c28e83SPiotr Jasiukajtis!  Y = (float) y;
270*25c28e83SPiotr Jasiukajtis!
271*25c28e83SPiotr Jasiukajtis!
272*25c28e83SPiotr Jasiukajtis!  fstod %f16,%f40			! y = (double) X
273*25c28e83SPiotr Jasiukajtis!  fmuld F62_K256ONLN2,%f40,%f40	! y *= K256ONLN2
274*25c28e83SPiotr Jasiukajtis!  fdtoi %f40,%f16			! k = (int) y
275*25c28e83SPiotr Jasiukajtis!  st  %f16,[%fp+tmp0]			! store k
276*25c28e83SPiotr Jasiukajtis!  fitod %f16,%f34			! dtmp = (double) k
277*25c28e83SPiotr Jasiukajtis!  fpackfix  %f16,%f16			! ((float*)&drez)[0] = vis_fpackfix(drez)
278*25c28e83SPiotr Jasiukajtis!  fsubd %f40,%f34,%f40			! y -= dtmp
279*25c28e83SPiotr Jasiukajtis!  fmuld F60_KA2,%f40,%f34		! dtmp = y * KA2
280*25c28e83SPiotr Jasiukajtis!  faddd F58_KA1,%f34,%f34		! dtmp += KA1
281*25c28e83SPiotr Jasiukajtis!  ld  [%fp+tmp0],%o0			! load k
282*25c28e83SPiotr Jasiukajtis!  fmuld %f34,%f40,%f40			! y *= dtmp
283*25c28e83SPiotr Jasiukajtis!  and %o0,255,%o0			! k &= 255
284*25c28e83SPiotr Jasiukajtis!  sll  %o0,3,%o0			! k <<= 3
285*25c28e83SPiotr Jasiukajtis!  ldd [G1_CONST_TBL+%o0],%f34		! dtmp = ((double*)(CONST_TBL + k))[0]
286*25c28e83SPiotr Jasiukajtis!  fpadd32 %f16,%f34,%f34		! drez = vis_fpadd32(drez,dtmp)
287*25c28e83SPiotr Jasiukajtis!  fmuld %f34,%f40,%f40			! y *= drez
288*25c28e83SPiotr Jasiukajtis!  faddd %f34,%f40,%f40			! y += drez
289*25c28e83SPiotr Jasiukajtis!  fdtos %f40,%f26			! (float) y
290*25c28e83SPiotr Jasiukajtis!--------------------------------------------------------------------
291*25c28e83SPiotr Jasiukajtis
292*25c28e83SPiotr Jasiukajtis	ENTRY(__vexpf)
293*25c28e83SPiotr Jasiukajtis	save	%sp,-SA(MINFRAME)-tmps,%sp
294*25c28e83SPiotr Jasiukajtis	PIC_SETUP(l7)
295*25c28e83SPiotr Jasiukajtis	PIC_SET(l7,.CONST_TBL,g5)
296*25c28e83SPiotr Jasiukajtis
297*25c28e83SPiotr Jasiukajtis	wr	%g0,0x82,%asi		! set %asi for non-faulting loads
298*25c28e83SPiotr Jasiukajtis	wr	%g0,0x60,%gsr
299*25c28e83SPiotr Jasiukajtis
300*25c28e83SPiotr Jasiukajtis	sll	%i2,2,%i2
301*25c28e83SPiotr Jasiukajtis	sll	%i4,2,%i4
302*25c28e83SPiotr Jasiukajtis
303*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+2056],F60_KA2
304*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ffffc00),G5_CONST
305*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+2064],F58_KA1
306*25c28e83SPiotr Jasiukajtis	add	G5_CONST,1023,G5_CONST
307*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+2072],F62_K256ONLN2
308*25c28e83SPiotr Jasiukajtis	ld	[G1_CONST_TBL+2080],I5_THRESHOLD
309*25c28e83SPiotr Jasiukajtis	ld	[G1_CONST_TBL+2084],THRESHOLDL
310*25c28e83SPiotr Jasiukajtis
311*25c28e83SPiotr Jasiukajtis	subcc	%i0,8,%i0
312*25c28e83SPiotr Jasiukajtis	bneg,pn	%icc,.tail
313*25c28e83SPiotr Jasiukajtis	fzeros	%f3
314*25c28e83SPiotr Jasiukajtis
315*25c28e83SPiotr Jasiukajtis.main_loop_preload:
316*25c28e83SPiotr Jasiukajtis
317*25c28e83SPiotr Jasiukajtis! preload 8 elements and get absolute values
318*25c28e83SPiotr Jasiukajtis	ld	[%i1],%l0		! (0) Xi = ((int*)px)[0]
319*25c28e83SPiotr Jasiukajtis	fzeros	%f5
320*25c28e83SPiotr Jasiukajtis	ld	[%i1],%f16		! (0) X = px[0]
321*25c28e83SPiotr Jasiukajtis	fzeros	%f7
322*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%o5		! px += stridex
323*25c28e83SPiotr Jasiukajtis	ld	[%o5],%l1		! (1) Xi = ((int*)px)[0]
324*25c28e83SPiotr Jasiukajtis	and	%l0,G5_CONST,%l0	! (0) ax = Xi & 0x7fffffff
325*25c28e83SPiotr Jasiukajtis	fzeros	%f9
326*25c28e83SPiotr Jasiukajtis	ld	[%o5],%f2		! (1) X = px[0]
327*25c28e83SPiotr Jasiukajtis	fzeros	%f11
328*25c28e83SPiotr Jasiukajtis	add	%o5,%i2,%i1		! px += stridex
329*25c28e83SPiotr Jasiukajtis	ld	[%i1],%l2		! (2) Xi = ((int*)px)[0]
330*25c28e83SPiotr Jasiukajtis	and	%l1,G5_CONST,%l1	! (1) ax = Xi & 0x7fffffff
331*25c28e83SPiotr Jasiukajtis	fzeros	%f13
332*25c28e83SPiotr Jasiukajtis	ld	[%i1],%f4		! (2) X = px[0]
333*25c28e83SPiotr Jasiukajtis	fzeros	%f15
334*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%o5		! px += stridex
335*25c28e83SPiotr Jasiukajtis	ld	[%o5],%l3		! (3) Xi = ((int*)px)[0]
336*25c28e83SPiotr Jasiukajtis	and	%l2,G5_CONST,%l2	! (2) ax = Xi & 0x7fffffff
337*25c28e83SPiotr Jasiukajtis	fzeros	%f17
338*25c28e83SPiotr Jasiukajtis	ld	[%o5],%f6		! (3) X = px[0]
339*25c28e83SPiotr Jasiukajtis	add	%o5,%i2,%o0		! px += stridex
340*25c28e83SPiotr Jasiukajtis	ld	[%o0],%l4		! (4) Xi = ((int*)px)[0]
341*25c28e83SPiotr Jasiukajtis	and	%l3,G5_CONST,%l3	! (3) ax = Xi & 0x7fffffff
342*25c28e83SPiotr Jasiukajtis	add	%o0,%i2,%o1		! px += stridex
343*25c28e83SPiotr Jasiukajtis	ld	[%o1],%l5		! (5) Xi = ((int*)px)[0]
344*25c28e83SPiotr Jasiukajtis	add	%o1,%i2,%o2		! px += stridex
345*25c28e83SPiotr Jasiukajtis	ld	[%o2],%l6		! (6) Xi = ((int*)px)[0]
346*25c28e83SPiotr Jasiukajtis	and	%l4,G5_CONST,%l4	! (4) ax = Xi & 0x7fffffff
347*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%o3		! px += stridex
348*25c28e83SPiotr Jasiukajtis	ld	[%o3],%l7		! (7) Xi = ((int*)px)[0]
349*25c28e83SPiotr Jasiukajtis	add	%o3,%i2,%i1		! px += stridex
350*25c28e83SPiotr Jasiukajtis	and	%l5,G5_CONST,%l5	! (5) ax = Xi & 0x7fffffff
351*25c28e83SPiotr Jasiukajtis	and	%l6,G5_CONST,%l6	! (6) ax = Xi & 0x7fffffff
352*25c28e83SPiotr Jasiukajtis	ba	.main_loop
353*25c28e83SPiotr Jasiukajtis	and	%l7,G5_CONST,%l7	! (7) ax = Xi & 0x7fffffff
354*25c28e83SPiotr Jasiukajtis
355*25c28e83SPiotr Jasiukajtis	.align	16
356*25c28e83SPiotr Jasiukajtis.main_loop:
357*25c28e83SPiotr Jasiukajtis	cmp	%l0,I5_THRESHOLD
358*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.spec0		! (0) if (ax > THRESHOLD)
359*25c28e83SPiotr Jasiukajtis	lda	[%o0]%asi,%f8		! (4) X = px[0]
360*25c28e83SPiotr Jasiukajtis	fstod	%f16,%f40		! (0) y = (double) X
361*25c28e83SPiotr Jasiukajtis.spec0_cont:
362*25c28e83SPiotr Jasiukajtis	cmp	%l1,I5_THRESHOLD
363*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.spec1		! (1) if (ax > THRESHOLD)
364*25c28e83SPiotr Jasiukajtis	lda	[%o1]%asi,%f10		! (5) X = px[0]
365*25c28e83SPiotr Jasiukajtis	fstod	%f2,%f42		! (1) y = (double) X
366*25c28e83SPiotr Jasiukajtis.spec1_cont:
367*25c28e83SPiotr Jasiukajtis	cmp	%l2,I5_THRESHOLD
368*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.spec2		! (2) if (ax > THRESHOLD)
369*25c28e83SPiotr Jasiukajtis	lda	[%o2]%asi,%f12		! (6) X = px[0]
370*25c28e83SPiotr Jasiukajtis	fstod	%f4,%f44		! (2) y = (double) X
371*25c28e83SPiotr Jasiukajtis.spec2_cont:
372*25c28e83SPiotr Jasiukajtis	cmp	%l3,I5_THRESHOLD
373*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.spec3		! (3) if (ax > THRESHOLD)
374*25c28e83SPiotr Jasiukajtis	lda	[%o3]%asi,%f14		! (7) X = px[0]
375*25c28e83SPiotr Jasiukajtis	fstod	%f6,%f46		! (3) y = (double) X
376*25c28e83SPiotr Jasiukajtis.spec3_cont:
377*25c28e83SPiotr Jasiukajtis	cmp	%l4,I5_THRESHOLD
378*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.spec4		! (4) if (ax > THRESHOLD)
379*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f40,%f40	! (0) y *= K256ONLN2
380*25c28e83SPiotr Jasiukajtis	fstod	%f8,%f48		! (4) y = (double) X
381*25c28e83SPiotr Jasiukajtis.spec4_cont:
382*25c28e83SPiotr Jasiukajtis	cmp	%l5,I5_THRESHOLD
383*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.spec5		! (5) if (ax > THRESHOLD)
384*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f42,%f42	! (1) y *= K256ONLN2
385*25c28e83SPiotr Jasiukajtis	fstod	%f10,%f50		! (5) y = (double) X
386*25c28e83SPiotr Jasiukajtis.spec5_cont:
387*25c28e83SPiotr Jasiukajtis	cmp	%l6,I5_THRESHOLD
388*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.spec6		! (6) if (ax > THRESHOLD)
389*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f44,%f44	! (2) y *= K256ONLN2
390*25c28e83SPiotr Jasiukajtis	fstod	%f12,%f52		! (6) y = (double) X
391*25c28e83SPiotr Jasiukajtis.spec6_cont:
392*25c28e83SPiotr Jasiukajtis	cmp	%l7,I5_THRESHOLD
393*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.spec7		! (7) if (ax > THRESHOLD)
394*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f46,%f46	! (3) y *= K256ONLN2
395*25c28e83SPiotr Jasiukajtis	fstod	%f14,%f54		! (7) y = (double) X
396*25c28e83SPiotr Jasiukajtis.spec7_cont:
397*25c28e83SPiotr Jasiukajtis	fdtoi	%f40,%f16		! (0) k = (int) y
398*25c28e83SPiotr Jasiukajtis	st	%f16,[%fp+tmp0]
399*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f48,%f48	! (4) y *= K256ONLN2
400*25c28e83SPiotr Jasiukajtis
401*25c28e83SPiotr Jasiukajtis	fdtoi	%f42,%f2		! (1) k = (int) y
402*25c28e83SPiotr Jasiukajtis	st	%f2,[%fp+tmp1]
403*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f50,%f50	! (5) y *= K256ONLN2
404*25c28e83SPiotr Jasiukajtis
405*25c28e83SPiotr Jasiukajtis	fdtoi	%f44,%f4		! (2) k = (int) y
406*25c28e83SPiotr Jasiukajtis	st	%f4,[%fp+tmp2]
407*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f52,%f52	! (6) y *= K256ONLN2
408*25c28e83SPiotr Jasiukajtis
409*25c28e83SPiotr Jasiukajtis	fdtoi	%f46,%f6		! (3) k = (int) y
410*25c28e83SPiotr Jasiukajtis	st	%f6,[%fp+tmp3]
411*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f54,%f54	! (7) y *= K256ONLN2
412*25c28e83SPiotr Jasiukajtis
413*25c28e83SPiotr Jasiukajtis	fdtoi	%f48,%f8		! (4) k = (int) y
414*25c28e83SPiotr Jasiukajtis	st	%f8,[%fp+tmp4]
415*25c28e83SPiotr Jasiukajtis
416*25c28e83SPiotr Jasiukajtis	fdtoi	%f50,%f10		! (5) k = (int) y
417*25c28e83SPiotr Jasiukajtis	st	%f10,[%fp+tmp5]
418*25c28e83SPiotr Jasiukajtis
419*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f34		! (0) dtmp = (double) k
420*25c28e83SPiotr Jasiukajtis	fpackfix	%f16,%f16	! (0) ((float*)&drez)[0] = vis_fpackfix(drez)
421*25c28e83SPiotr Jasiukajtis	nop
422*25c28e83SPiotr Jasiukajtis	nop
423*25c28e83SPiotr Jasiukajtis
424*25c28e83SPiotr Jasiukajtis	fdtoi	%f52,%f12		! (6) k = (int) y
425*25c28e83SPiotr Jasiukajtis	st	%f12,[%fp+tmp6]
426*25c28e83SPiotr Jasiukajtis
427*25c28e83SPiotr Jasiukajtis	fdtoi	%f54,%f14		! (7) k = (int) y
428*25c28e83SPiotr Jasiukajtis	st	%f14,[%fp+tmp7]
429*25c28e83SPiotr Jasiukajtis
430*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! (8) Xi = ((int*)px)[0]
431*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%o5		! px += stridex
432*25c28e83SPiotr Jasiukajtis	fitod	%f2,%f18		! (1) dtmp = (double) k
433*25c28e83SPiotr Jasiukajtis	fpackfix	%f2,%f2		! (1) ((float*)&drez)[0] = vis_fpackfix(drez)
434*25c28e83SPiotr Jasiukajtis
435*25c28e83SPiotr Jasiukajtis	lda	[%o5]%asi,%l1		! (9) Xi = ((int*)px)[0]
436*25c28e83SPiotr Jasiukajtis	add	%o5,%i2,%i1		! px += stridex
437*25c28e83SPiotr Jasiukajtis	fitod	%f4,%f20		! (2) dtmp = (double) k
438*25c28e83SPiotr Jasiukajtis	fpackfix	%f4,%f4		! (2) ((float*)&drez)[0] = vis_fpackfix(drez)
439*25c28e83SPiotr Jasiukajtis
440*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l2		! (10) Xi = ((int*)px)[0]
441*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%o5		! px += stridex
442*25c28e83SPiotr Jasiukajtis	fitod	%f6,%f22		! (3) dtmp = (double) k
443*25c28e83SPiotr Jasiukajtis	fpackfix	%f6,%f6		! (3) ((float*)&drez)[0] = vis_fpackfix(drez)
444*25c28e83SPiotr Jasiukajtis
445*25c28e83SPiotr Jasiukajtis	lda	[%o5]%asi,%l3		! (11) Xi = ((int*)px)[0]
446*25c28e83SPiotr Jasiukajtis	add	%o5,%i2,%i1		! px += stridex
447*25c28e83SPiotr Jasiukajtis	fitod	%f8,%f24		! (4) dtmp = (double) k
448*25c28e83SPiotr Jasiukajtis	fpackfix	%f8,%f8		! (4) ((float*)&drez)[0] = vis_fpackfix(drez)
449*25c28e83SPiotr Jasiukajtis
450*25c28e83SPiotr Jasiukajtis	fitod	%f10,%f26		! (5) dtmp = (double) k
451*25c28e83SPiotr Jasiukajtis	fpackfix	%f10,%f10	! (5) ((float*)&drez)[0] = vis_fpackfix(drez)
452*25c28e83SPiotr Jasiukajtis
453*25c28e83SPiotr Jasiukajtis	fitod	%f12,%f28		! (6) dtmp = (double) k
454*25c28e83SPiotr Jasiukajtis	fpackfix	%f12,%f12	! (6) ((float*)&drez)[0] = vis_fpackfix(drez)
455*25c28e83SPiotr Jasiukajtis
456*25c28e83SPiotr Jasiukajtis	fitod	%f14,%f30		! (7) dtmp = (double) k
457*25c28e83SPiotr Jasiukajtis	fpackfix	%f14,%f14	! (7) ((float*)&drez)[0] = vis_fpackfix(drez)
458*25c28e83SPiotr Jasiukajtis
459*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0],%o0		! (0) load k
460*25c28e83SPiotr Jasiukajtis	and	%l0,G5_CONST,%l0	! (8) ax = Xi & 0x7fffffff
461*25c28e83SPiotr Jasiukajtis	fsubd	%f40,%f34,%f40		! (0) y -= dtmp
462*25c28e83SPiotr Jasiukajtis
463*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp1],%o1		! (1) load k
464*25c28e83SPiotr Jasiukajtis	and	%l1,G5_CONST,%l1	! (9) ax = Xi & 0x7fffffff
465*25c28e83SPiotr Jasiukajtis	fsubd	%f42,%f18,%f42		! (1) y -= dtmp
466*25c28e83SPiotr Jasiukajtis
467*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp2],%o2		! (2) load k
468*25c28e83SPiotr Jasiukajtis	and	%l2,G5_CONST,%l2	! (10) ax = Xi & 0x7fffffff
469*25c28e83SPiotr Jasiukajtis	and	%o0,255,%o0		! (0) k &= 255
470*25c28e83SPiotr Jasiukajtis	fsubd	%f44,%f20,%f44		! (2) y -= dtmp
471*25c28e83SPiotr Jasiukajtis
472*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%o3		! (3) load k
473*25c28e83SPiotr Jasiukajtis	and	%o1,255,%o1		! (1) k &= 255
474*25c28e83SPiotr Jasiukajtis	fsubd	%f46,%f22,%f46		! (3) y -= dtmp
475*25c28e83SPiotr Jasiukajtis
476*25c28e83SPiotr Jasiukajtis	sll	%o0,3,%o0		! (0) k <<= 3
477*25c28e83SPiotr Jasiukajtis	sll	%o1,3,%o1		! (1) k <<= 3
478*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f40,%f34	! (0) dtmp = y * KA2
479*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f24,%f48		! (4) y -= dtmp
480*25c28e83SPiotr Jasiukajtis
481*25c28e83SPiotr Jasiukajtis	and	%l3,G5_CONST,%l3	! (11) ax = Xi & 0x7fffffff
482*25c28e83SPiotr Jasiukajtis	and	%o2,255,%o2		! (2) k &= 255
483*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f42,%f18	! (1) dtmp = y * KA2
484*25c28e83SPiotr Jasiukajtis	fsubd	%f50,%f26,%f50		! (5) y -= dtmp
485*25c28e83SPiotr Jasiukajtis
486*25c28e83SPiotr Jasiukajtis	sll	%o2,3,%o2		! (2) k <<= 3
487*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f44,%f20	! (2) dtmp = y * KA2
488*25c28e83SPiotr Jasiukajtis	fsubd	%f52,%f28,%f52		! (6) y -= dtmp
489*25c28e83SPiotr Jasiukajtis
490*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp4],%o4		! (4) load k
491*25c28e83SPiotr Jasiukajtis	and	%o3,255,%o3		! (3) k &= 255
492*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f46,%f22	! (3) dtmp = y * KA2
493*25c28e83SPiotr Jasiukajtis	fsubd	%f54,%f30,%f54		! (7) y -= dtmp
494*25c28e83SPiotr Jasiukajtis
495*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp5],%o5		! (5) load k
496*25c28e83SPiotr Jasiukajtis	sll	%o3,3,%o3		! (3) k <<= 3
497*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f48,%f24	! (4) dtmp = y * KA2
498*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f34,%f34	! (0) dtmp += KA1
499*25c28e83SPiotr Jasiukajtis
500*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp6],%o7		! (6) load k
501*25c28e83SPiotr Jasiukajtis	and	%o4,255,%o4		! (4) k &= 255
502*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f50,%f26	! (5) dtmp = y * KA2
503*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f18,%f18	! (1) dtmp += KA1
504*25c28e83SPiotr Jasiukajtis
505*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp7],%l4		! (7) load k
506*25c28e83SPiotr Jasiukajtis	and	%o5,255,%o5		! (5) k &= 255
507*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f52,%f28	! (6) dtmp = y * KA2
508*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f20,%f20	! (2) dtmp += KA1
509*25c28e83SPiotr Jasiukajtis
510*25c28e83SPiotr Jasiukajtis	sll	%o5,3,%o5		! (5) k <<= 3
511*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f54,%f30	! (7) dtmp = y * KA2
512*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f22,%f22	! (3) dtmp += KA1
513*25c28e83SPiotr Jasiukajtis
514*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40		! (0) y *= dtmp
515*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o0],%f34	! (0) dtmp = ((double*)(CONST_TBL + k))[0]
516*25c28e83SPiotr Jasiukajtis	and	%l4,255,%l4		! (7) k &= 255
517*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f24,%f24	! (4) dtmp += KA1
518*25c28e83SPiotr Jasiukajtis
519*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42		! (1) y *= dtmp
520*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o1],%f18	! (1) dtmp = ((double*)(CONST_TBL + k))[0]
521*25c28e83SPiotr Jasiukajtis	sll	%l4,3,%l4		! (7) k <<= 3
522*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f26,%f26	! (5) dtmp += KA1
523*25c28e83SPiotr Jasiukajtis
524*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44		! (2) y *= dtmp
525*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o2],%f20	! (2) dtmp = ((double*)(CONST_TBL + k))[0]
526*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f28,%f28	! (6) dtmp += KA1
527*25c28e83SPiotr Jasiukajtis
528*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f46		! (3) y *= dtmp
529*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o3],%f22	! (3) dtmp = ((double*)(CONST_TBL + k))[0]
530*25c28e83SPiotr Jasiukajtis	sll	%o4,3,%o4		! (4) k <<= 3
531*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f30,%f30	! (7) dtmp += KA1
532*25c28e83SPiotr Jasiukajtis
533*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f48,%f48		! (4) y *= dtmp
534*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o4],%f24	! (4) dtmp = ((double*)(CONST_TBL + k))[0]
535*25c28e83SPiotr Jasiukajtis	and	%o7,255,%o7		! (6) k &= 255
536*25c28e83SPiotr Jasiukajtis	fpadd32 %f16,%f34,%f34		! (0) drez = vis_fpadd32(drez,dtmp)
537*25c28e83SPiotr Jasiukajtis
538*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f50,%f50		! (5) y *= dtmp
539*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o5],%f26	! (5) dtmp = ((double*)(CONST_TBL + k))[0]
540*25c28e83SPiotr Jasiukajtis	sll	%o7,3,%o7		! (6) k <<= 3
541*25c28e83SPiotr Jasiukajtis	fpadd32 %f2,%f18,%f18		! (1) drez = vis_fpadd32(drez,dtmp)
542*25c28e83SPiotr Jasiukajtis
543*25c28e83SPiotr Jasiukajtis	fmuld	%f28,%f52,%f52		! (6) y *= dtmp
544*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o7],%f28	! (6) dtmp = ((double*)(CONST_TBL + k))[0]
545*25c28e83SPiotr Jasiukajtis	sll	%i2,2,%o0
546*25c28e83SPiotr Jasiukajtis	fpadd32 %f4,%f20,%f20		! (2) drez = vis_fpadd32(drez,dtmp)
547*25c28e83SPiotr Jasiukajtis
548*25c28e83SPiotr Jasiukajtis	fmuld	%f30,%f54,%f54		! (7) y *= dtmp
549*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%l4],%f30	! (7) dtmp = ((double*)(CONST_TBL + k))[0]
550*25c28e83SPiotr Jasiukajtis	sub	%i1,%o0,%o0
551*25c28e83SPiotr Jasiukajtis	fpadd32 %f6,%f22,%f22		! (3) drez = vis_fpadd32(drez,dtmp)
552*25c28e83SPiotr Jasiukajtis
553*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l4		! (12) Xi = ((int*)px)[0]
554*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%o1		! px += stridex
555*25c28e83SPiotr Jasiukajtis	fpadd32 %f8,%f24,%f24		! (4) drez = vis_fpadd32(drez,dtmp)
556*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40		! (0) y *= drez
557*25c28e83SPiotr Jasiukajtis
558*25c28e83SPiotr Jasiukajtis	lda	[%o1]%asi,%l5		! (13) Xi = ((int*)px)[0]
559*25c28e83SPiotr Jasiukajtis	add	%o1,%i2,%o2		! px += stridex
560*25c28e83SPiotr Jasiukajtis	fpadd32 %f10,%f26,%f26		! (5)  drez = vis_fpadd32(drez,dtmp)
561*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42		! (1)  y *= drez
562*25c28e83SPiotr Jasiukajtis
563*25c28e83SPiotr Jasiukajtis	lda	[%o2]%asi,%l6		! (14) Xi = ((int*)px)[0]
564*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%o3		! px += stridex
565*25c28e83SPiotr Jasiukajtis	fpadd32 %f12,%f28,%f28		! (6)  drez = vis_fpadd32(drez,dtmp)
566*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44		! (2)  y *= drez
567*25c28e83SPiotr Jasiukajtis
568*25c28e83SPiotr Jasiukajtis	lda	[%o3]%asi,%l7		! (15) Xi = ((int*)px)[0]
569*25c28e83SPiotr Jasiukajtis	add	%o3,%i2,%i1		! px += stridex
570*25c28e83SPiotr Jasiukajtis	fpadd32 %f14,%f30,%f30		! (7)  drez = vis_fpadd32(drez,dtmp)
571*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f46		! (3)  y *= drez
572*25c28e83SPiotr Jasiukajtis
573*25c28e83SPiotr Jasiukajtis	lda	[%o0]%asi,%f16		! (8)  X = px[0]
574*25c28e83SPiotr Jasiukajtis	add	%o0,%i2,%o5
575*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f48,%f48		! (4)  y *= drez
576*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f40,%f40		! (0)  y += drez
577*25c28e83SPiotr Jasiukajtis
578*25c28e83SPiotr Jasiukajtis	lda	[%o5]%asi,%f2		! (9)  X = px[0]
579*25c28e83SPiotr Jasiukajtis	add	%o5,%i2,%o0
580*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f50,%f50		! (5)  y *= drez
581*25c28e83SPiotr Jasiukajtis	faddd	%f18,%f42,%f42		! (1)  y += drez
582*25c28e83SPiotr Jasiukajtis
583*25c28e83SPiotr Jasiukajtis	lda	[%o0]%asi,%f4		! (10) X = px[0]
584*25c28e83SPiotr Jasiukajtis	add	%o0,%i2,%o5
585*25c28e83SPiotr Jasiukajtis	fmuld	%f28,%f52,%f52		! (6)  y *= drez
586*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f44,%f44		! (2)  y += drez
587*25c28e83SPiotr Jasiukajtis
588*25c28e83SPiotr Jasiukajtis	lda	[%o5]%asi,%f6		! (11) X = px[0]
589*25c28e83SPiotr Jasiukajtis	add	%o5,%i2,%o0
590*25c28e83SPiotr Jasiukajtis	fmuld	%f30,%f54,%f54		! (7)  y *= drez
591*25c28e83SPiotr Jasiukajtis	faddd	%f22,%f46,%f46		! (3)  y += drez
592*25c28e83SPiotr Jasiukajtis
593*25c28e83SPiotr Jasiukajtis	and	%l4,G5_CONST,%l4	! (12) ax = Xi & 0x7fffffff
594*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f48		! (4)  y += drez
595*25c28e83SPiotr Jasiukajtis
596*25c28e83SPiotr Jasiukajtis	and	%l5,G5_CONST,%l5	! (13) ax = Xi & 0x7fffffff
597*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f50,%f50		! (5)  y += drez
598*25c28e83SPiotr Jasiukajtis
599*25c28e83SPiotr Jasiukajtis	and	%l6,G5_CONST,%l6	! (14) ax = Xi & 0x7fffffff
600*25c28e83SPiotr Jasiukajtis	faddd	%f28,%f52,%f52		! (6)  y += drez
601*25c28e83SPiotr Jasiukajtis
602*25c28e83SPiotr Jasiukajtis	and	%l7,G5_CONST,%l7	! (15) ax = Xi & 0x7fffffff
603*25c28e83SPiotr Jasiukajtis	faddd	%f30,%f54,%f54		! (7)  y += drez
604*25c28e83SPiotr Jasiukajtis
605*25c28e83SPiotr Jasiukajtis	fdtos	%f40,%f26		! (0) (float) y
606*25c28e83SPiotr Jasiukajtis	st	%f26,[%i3]
607*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4		! py += stridey
608*25c28e83SPiotr Jasiukajtis
609*25c28e83SPiotr Jasiukajtis	fdtos	%f42,%f18		! (1) (float) y
610*25c28e83SPiotr Jasiukajtis	st	%f18,[%o4]
611*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3		! py += stridey
612*25c28e83SPiotr Jasiukajtis
613*25c28e83SPiotr Jasiukajtis	fdtos	%f44,%f20		! (2) (float) y
614*25c28e83SPiotr Jasiukajtis	st	%f20,[%i3]
615*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4		! py += stridey
616*25c28e83SPiotr Jasiukajtis
617*25c28e83SPiotr Jasiukajtis	fdtos	%f46,%f22		! (3) (float) y
618*25c28e83SPiotr Jasiukajtis	st	%f22,[%o4]
619*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3		! py += stridey
620*25c28e83SPiotr Jasiukajtis
621*25c28e83SPiotr Jasiukajtis	fdtos	%f48,%f24		! (4) (float) y
622*25c28e83SPiotr Jasiukajtis	st	%f24,[%i3]
623*25c28e83SPiotr Jasiukajtis	subcc	%i0,8,%i0
624*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4		! py += stridey
625*25c28e83SPiotr Jasiukajtis
626*25c28e83SPiotr Jasiukajtis	fdtos	%f50,%f26		! (5) (float) y
627*25c28e83SPiotr Jasiukajtis	st	%f26,[%o4]
628*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%o5		! py += stridey
629*25c28e83SPiotr Jasiukajtis	add	%i4,%i4,%o7
630*25c28e83SPiotr Jasiukajtis
631*25c28e83SPiotr Jasiukajtis	fdtos	%f52,%f28		! (6) (float) y
632*25c28e83SPiotr Jasiukajtis	st	%f28,[%o5]
633*25c28e83SPiotr Jasiukajtis	add	%o5,%i4,%o4		! py += stridey
634*25c28e83SPiotr Jasiukajtis	add	%o5,%o7,%i3		! py += stridey
635*25c28e83SPiotr Jasiukajtis
636*25c28e83SPiotr Jasiukajtis	fdtos	%f54,%f30		! (7) (float) y
637*25c28e83SPiotr Jasiukajtis	st	%f30,[%o4]
638*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.main_loop
639*25c28e83SPiotr Jasiukajtis	nop
640*25c28e83SPiotr Jasiukajtis.after_main_loop:
641*25c28e83SPiotr Jasiukajtis	sll	%i2,3,%o2
642*25c28e83SPiotr Jasiukajtis	sub	%i1,%o2,%i1
643*25c28e83SPiotr Jasiukajtis
644*25c28e83SPiotr Jasiukajtis.tail:
645*25c28e83SPiotr Jasiukajtis	add	%i0,8,%i0
646*25c28e83SPiotr Jasiukajtis	subcc	%i0,1,%i0
647*25c28e83SPiotr Jasiukajtis	bneg,pn	%icc,.exit
648*25c28e83SPiotr Jasiukajtis
649*25c28e83SPiotr Jasiukajtis	ld	[%i1],%l0
650*25c28e83SPiotr Jasiukajtis	ld	[%i1],%f2
651*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
652*25c28e83SPiotr Jasiukajtis
653*25c28e83SPiotr Jasiukajtis.tail_loop:
654*25c28e83SPiotr Jasiukajtis	and	%l0,G5_CONST,%l1
655*25c28e83SPiotr Jasiukajtis	cmp	%l1,I5_THRESHOLD
656*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.tail_spec
657*25c28e83SPiotr Jasiukajtis	nop
658*25c28e83SPiotr Jasiukajtis.tail_spec_cont:
659*25c28e83SPiotr Jasiukajtis	fstod	%f2,%f40
660*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f40,%f40
661*25c28e83SPiotr Jasiukajtis	fdtoi	%f40,%f2
662*25c28e83SPiotr Jasiukajtis	st	%f2,[%fp+tmp0]
663*25c28e83SPiotr Jasiukajtis	fitod	%f2,%f16
664*25c28e83SPiotr Jasiukajtis	fpackfix	%f2,%f2
665*25c28e83SPiotr Jasiukajtis	fsubd	%f40,%f16,%f40
666*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f40,%f16
667*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f16,%f16
668*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0],%o0
669*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f40,%f40
670*25c28e83SPiotr Jasiukajtis	and	%o0,255,%o0
671*25c28e83SPiotr Jasiukajtis	sll	%o0,3,%o0
672*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o0],%f16
673*25c28e83SPiotr Jasiukajtis	fpadd32 %f2,%f16,%f16
674*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0
675*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f40,%f40
676*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f2
677*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f40,%f40
678*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
679*25c28e83SPiotr Jasiukajtis	fdtos	%f40,%f16
680*25c28e83SPiotr Jasiukajtis	st	%f16,[%i3]
681*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
682*25c28e83SPiotr Jasiukajtis	subcc	%i0,1,%i0
683*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.tail_loop
684*25c28e83SPiotr Jasiukajtis	nop
685*25c28e83SPiotr Jasiukajtis
686*25c28e83SPiotr Jasiukajtis.exit:
687*25c28e83SPiotr Jasiukajtis	ret
688*25c28e83SPiotr Jasiukajtis	restore
689*25c28e83SPiotr Jasiukajtis
690*25c28e83SPiotr Jasiukajtis.tail_spec:
691*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o4
692*25c28e83SPiotr Jasiukajtis	cmp	%l1,%o4
693*25c28e83SPiotr Jasiukajtis	bl,pt	%icc,.tail_spec_out_of_range
694*25c28e83SPiotr Jasiukajtis	nop
695*25c28e83SPiotr Jasiukajtis
696*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
697*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.tail_spec_inf
698*25c28e83SPiotr Jasiukajtis	andcc	%l0,4,%g0
699*25c28e83SPiotr Jasiukajtis
700*25c28e83SPiotr Jasiukajtis! NaN -> NaN
701*25c28e83SPiotr Jasiukajtis
702*25c28e83SPiotr Jasiukajtis	fmuls	%f2,%f2,%f2
703*25c28e83SPiotr Jasiukajtis	ba	.tail_spec_exit
704*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
705*25c28e83SPiotr Jasiukajtis
706*25c28e83SPiotr Jasiukajtis.tail_spec_inf:
707*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,.tail_spec_exit
708*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
709*25c28e83SPiotr Jasiukajtis
710*25c28e83SPiotr Jasiukajtis	ba	.tail_spec_exit
711*25c28e83SPiotr Jasiukajtis	st	%f3,[%i3]
712*25c28e83SPiotr Jasiukajtis
713*25c28e83SPiotr Jasiukajtis.tail_spec_out_of_range:
714*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc0,%f2,%f3
715*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc1,%f2,THRESHOLDL
716*25c28e83SPiotr Jasiukajtis	fbl,pn	%fcc0,1f		! if ( X < 0.0f )
717*25c28e83SPiotr Jasiukajtis	nop
718*25c28e83SPiotr Jasiukajtis	fbl,pt	%fcc1,.tail_spec_cont	! if ( X < THRESHOLDL )
719*25c28e83SPiotr Jasiukajtis	nop
720*25c28e83SPiotr Jasiukajtis1:
721*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
722*25c28e83SPiotr Jasiukajtis	and	%l0,4,%l0
723*25c28e83SPiotr Jasiukajtis	add	%l0,2048,%l0
724*25c28e83SPiotr Jasiukajtis	ld	[G1_CONST_TBL+%l0],%f2
725*25c28e83SPiotr Jasiukajtis	fmuls	%f2,%f2,%f2
726*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
727*25c28e83SPiotr Jasiukajtis
728*25c28e83SPiotr Jasiukajtis.tail_spec_exit:
729*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0
730*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f2
731*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
732*25c28e83SPiotr Jasiukajtis
733*25c28e83SPiotr Jasiukajtis	subcc	%i0,1,%i0
734*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.tail_loop
735*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
736*25c28e83SPiotr Jasiukajtis	ba	.exit
737*25c28e83SPiotr Jasiukajtis	nop
738*25c28e83SPiotr Jasiukajtis
739*25c28e83SPiotr Jasiukajtis	.align	16
740*25c28e83SPiotr Jasiukajtis.spec0:
741*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o5
742*25c28e83SPiotr Jasiukajtis	cmp	%l0,%o5
743*25c28e83SPiotr Jasiukajtis	bl,pt	%icc,.spec0_out_of_range
744*25c28e83SPiotr Jasiukajtis	sll	%i2,3,%o4
745*25c28e83SPiotr Jasiukajtis
746*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.spec0_inf
747*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
748*25c28e83SPiotr Jasiukajtis
749*25c28e83SPiotr Jasiukajtis! NaN -> NaN
750*25c28e83SPiotr Jasiukajtis
751*25c28e83SPiotr Jasiukajtis	fmuls	%f16,%f16,%f16
752*25c28e83SPiotr Jasiukajtis	ba	.spec0_exit
753*25c28e83SPiotr Jasiukajtis	st	%f16,[%i3]
754*25c28e83SPiotr Jasiukajtis
755*25c28e83SPiotr Jasiukajtis.spec0_inf:
756*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
757*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
758*25c28e83SPiotr Jasiukajtis	andcc	%l0,4,%l0
759*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,.spec0_exit
760*25c28e83SPiotr Jasiukajtis	st	%f16,[%i3]
761*25c28e83SPiotr Jasiukajtis
762*25c28e83SPiotr Jasiukajtis	ba	.spec0_exit
763*25c28e83SPiotr Jasiukajtis	st	%f3,[%i3]
764*25c28e83SPiotr Jasiukajtis
765*25c28e83SPiotr Jasiukajtis.spec0_out_of_range:
766*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc0,%f16,%f3
767*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc1,%f16,THRESHOLDL
768*25c28e83SPiotr Jasiukajtis	fbl,a,pn	%fcc0,1f		! if ( X < 0.0f )
769*25c28e83SPiotr Jasiukajtis	fstod	%f16,%f40			! (0) y = (double) X
770*25c28e83SPiotr Jasiukajtis	fbl,a,pt	%fcc1,.spec0_cont	! if ( X < THRESHOLDL )
771*25c28e83SPiotr Jasiukajtis	fstod	%f16,%f40			! (0) y = (double) X
772*25c28e83SPiotr Jasiukajtis1:
773*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
774*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
775*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
776*25c28e83SPiotr Jasiukajtis	and	%l0,4,%l0
777*25c28e83SPiotr Jasiukajtis	add	%l0,2048,%l0
778*25c28e83SPiotr Jasiukajtis	ld	[G1_CONST_TBL+%l0],%f16
779*25c28e83SPiotr Jasiukajtis	fmuls	%f16,%f16,%f16
780*25c28e83SPiotr Jasiukajtis	st	%f16,[%i3]
781*25c28e83SPiotr Jasiukajtis
782*25c28e83SPiotr Jasiukajtis.spec0_exit:
783*25c28e83SPiotr Jasiukajtis	fmovs	%f2,%f16
784*25c28e83SPiotr Jasiukajtis	mov	%l1,%l0
785*25c28e83SPiotr Jasiukajtis	fmovs	%f4,%f2
786*25c28e83SPiotr Jasiukajtis	mov	%l2,%l1
787*25c28e83SPiotr Jasiukajtis	fmovs	%f6,%f4
788*25c28e83SPiotr Jasiukajtis	mov	%l3,%l2
789*25c28e83SPiotr Jasiukajtis	fmovs	%f8,%f6
790*25c28e83SPiotr Jasiukajtis	mov	%l4,%l3
791*25c28e83SPiotr Jasiukajtis	mov	%l5,%l4
792*25c28e83SPiotr Jasiukajtis	mov	%l6,%l5
793*25c28e83SPiotr Jasiukajtis	mov	%l7,%l6
794*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l7
795*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
796*25c28e83SPiotr Jasiukajtis	mov	%o1,%o0
797*25c28e83SPiotr Jasiukajtis	mov	%o2,%o1
798*25c28e83SPiotr Jasiukajtis	mov	%o3,%o2
799*25c28e83SPiotr Jasiukajtis	and	%l7,G5_CONST,%l7
800*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%o3
801*25c28e83SPiotr Jasiukajtis
802*25c28e83SPiotr Jasiukajtis	subcc	%i0,1,%i0
803*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.main_loop
804*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
805*25c28e83SPiotr Jasiukajtis	ba	.after_main_loop
806*25c28e83SPiotr Jasiukajtis	nop
807*25c28e83SPiotr Jasiukajtis
808*25c28e83SPiotr Jasiukajtis	.align	16
809*25c28e83SPiotr Jasiukajtis.spec1:
810*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o5
811*25c28e83SPiotr Jasiukajtis	cmp	%l1,%o5
812*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,1f
813*25c28e83SPiotr Jasiukajtis	nop
814*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc0,%f2,%f3
815*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc1,%f2,THRESHOLDL
816*25c28e83SPiotr Jasiukajtis	fbl,a,pn	%fcc0,1f		! if ( X < 0.0f )
817*25c28e83SPiotr Jasiukajtis	fstod	%f2,%f42			! (1) y = (double) X
818*25c28e83SPiotr Jasiukajtis	fbl,a,pt	%fcc1,.spec1_cont	! if ( X < THRESHOLDL )
819*25c28e83SPiotr Jasiukajtis	fstod	%f2,%f42			! (1) y = (double) X
820*25c28e83SPiotr Jasiukajtis1:
821*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f40,%f40
822*25c28e83SPiotr Jasiukajtis	fdtoi	%f40,%f16
823*25c28e83SPiotr Jasiukajtis	st	%f16,[%fp+tmp0]
824*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f34
825*25c28e83SPiotr Jasiukajtis	fpackfix	%f16,%f16
826*25c28e83SPiotr Jasiukajtis	fsubd	%f40,%f34,%f40
827*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f40,%f34
828*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f34,%f34
829*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0],%o0
830*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
831*25c28e83SPiotr Jasiukajtis	and	%o0,255,%o0
832*25c28e83SPiotr Jasiukajtis	sll	%o0,3,%o0
833*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o0],%f34
834*25c28e83SPiotr Jasiukajtis	fpadd32 %f16,%f34,%f34
835*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
836*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f40,%f40
837*25c28e83SPiotr Jasiukajtis	fdtos	%f40,%f26
838*25c28e83SPiotr Jasiukajtis	st	%f26,[%i3]
839*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
840*25c28e83SPiotr Jasiukajtis
841*25c28e83SPiotr Jasiukajtis	cmp	%l1,%o5
842*25c28e83SPiotr Jasiukajtis	bl,pt	%icc,.spec1_out_of_range
843*25c28e83SPiotr Jasiukajtis	sll	%i2,3,%o4
844*25c28e83SPiotr Jasiukajtis
845*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.spec1_inf
846*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
847*25c28e83SPiotr Jasiukajtis
848*25c28e83SPiotr Jasiukajtis! NaN -> NaN
849*25c28e83SPiotr Jasiukajtis
850*25c28e83SPiotr Jasiukajtis	fmuls	%f2,%f2,%f2
851*25c28e83SPiotr Jasiukajtis	ba	.spec1_exit
852*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
853*25c28e83SPiotr Jasiukajtis
854*25c28e83SPiotr Jasiukajtis.spec1_inf:
855*25c28e83SPiotr Jasiukajtis	add	%o4,%i2,%o4
856*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
857*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
858*25c28e83SPiotr Jasiukajtis	andcc	%l0,4,%l0
859*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,.spec1_exit
860*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
861*25c28e83SPiotr Jasiukajtis
862*25c28e83SPiotr Jasiukajtis	ba	.spec1_exit
863*25c28e83SPiotr Jasiukajtis	st	%f3,[%i3]
864*25c28e83SPiotr Jasiukajtis
865*25c28e83SPiotr Jasiukajtis.spec1_out_of_range:
866*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
867*25c28e83SPiotr Jasiukajtis	add	%o4,%i2,%o4
868*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
869*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
870*25c28e83SPiotr Jasiukajtis	and	%l0,4,%l0
871*25c28e83SPiotr Jasiukajtis	add	%l0,2048,%l0
872*25c28e83SPiotr Jasiukajtis	ld	[G1_CONST_TBL+%l0],%f2
873*25c28e83SPiotr Jasiukajtis	fmuls	%f2,%f2,%f2
874*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
875*25c28e83SPiotr Jasiukajtis
876*25c28e83SPiotr Jasiukajtis.spec1_exit:
877*25c28e83SPiotr Jasiukajtis	fmovs	%f4,%f16
878*25c28e83SPiotr Jasiukajtis	mov	%l2,%l0
879*25c28e83SPiotr Jasiukajtis	fmovs	%f6,%f2
880*25c28e83SPiotr Jasiukajtis	mov	%l3,%l1
881*25c28e83SPiotr Jasiukajtis	fmovs	%f8,%f4
882*25c28e83SPiotr Jasiukajtis	mov	%l4,%l2
883*25c28e83SPiotr Jasiukajtis	fmovs	%f10,%f6
884*25c28e83SPiotr Jasiukajtis	mov	%l5,%l3
885*25c28e83SPiotr Jasiukajtis	mov	%l6,%l4
886*25c28e83SPiotr Jasiukajtis	mov	%l7,%l5
887*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l6
888*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
889*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l7
890*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
891*25c28e83SPiotr Jasiukajtis	and	%l6,G5_CONST,%l6
892*25c28e83SPiotr Jasiukajtis	and	%l7,G5_CONST,%l7
893*25c28e83SPiotr Jasiukajtis	mov	%o2,%o0
894*25c28e83SPiotr Jasiukajtis	mov	%o3,%o1
895*25c28e83SPiotr Jasiukajtis	add	%o1,%i2,%o2
896*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%o3
897*25c28e83SPiotr Jasiukajtis
898*25c28e83SPiotr Jasiukajtis	subcc	%i0,2,%i0
899*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.main_loop
900*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
901*25c28e83SPiotr Jasiukajtis	ba	.after_main_loop
902*25c28e83SPiotr Jasiukajtis	nop
903*25c28e83SPiotr Jasiukajtis
904*25c28e83SPiotr Jasiukajtis	.align	16
905*25c28e83SPiotr Jasiukajtis.spec2:
906*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o5
907*25c28e83SPiotr Jasiukajtis	cmp	%l2,%o5
908*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,1f
909*25c28e83SPiotr Jasiukajtis	nop
910*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc0,%f4,%f3
911*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc1,%f4,THRESHOLDL
912*25c28e83SPiotr Jasiukajtis	fbl,a,pn	%fcc0,1f		! if ( X < 0.0f )
913*25c28e83SPiotr Jasiukajtis	fstod	%f4,%f44			! (2) y = (double) X
914*25c28e83SPiotr Jasiukajtis	fbl,a,pt	%fcc1,.spec2_cont	! if ( X < THRESHOLDL )
915*25c28e83SPiotr Jasiukajtis	fstod	%f4,%f44			! (2) y = (double) X
916*25c28e83SPiotr Jasiukajtis1:
917*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f40,%f40
918*25c28e83SPiotr Jasiukajtis
919*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f42,%f42
920*25c28e83SPiotr Jasiukajtis
921*25c28e83SPiotr Jasiukajtis	fdtoi	%f40,%f16
922*25c28e83SPiotr Jasiukajtis	st	%f16,[%fp+tmp0]
923*25c28e83SPiotr Jasiukajtis
924*25c28e83SPiotr Jasiukajtis	fdtoi	%f42,%f2
925*25c28e83SPiotr Jasiukajtis	st	%f2,[%fp+tmp1]
926*25c28e83SPiotr Jasiukajtis
927*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f34
928*25c28e83SPiotr Jasiukajtis	fpackfix	%f16,%f16
929*25c28e83SPiotr Jasiukajtis
930*25c28e83SPiotr Jasiukajtis	fitod	%f2,%f18
931*25c28e83SPiotr Jasiukajtis	fpackfix	%f2,%f2
932*25c28e83SPiotr Jasiukajtis
933*25c28e83SPiotr Jasiukajtis	fsubd	%f40,%f34,%f40
934*25c28e83SPiotr Jasiukajtis
935*25c28e83SPiotr Jasiukajtis	fsubd	%f42,%f18,%f42
936*25c28e83SPiotr Jasiukajtis
937*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f40,%f34
938*25c28e83SPiotr Jasiukajtis
939*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f42,%f18
940*25c28e83SPiotr Jasiukajtis
941*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f34,%f34
942*25c28e83SPiotr Jasiukajtis
943*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f18,%f18
944*25c28e83SPiotr Jasiukajtis
945*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0],%o0
946*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
947*25c28e83SPiotr Jasiukajtis
948*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp1],%o1
949*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
950*25c28e83SPiotr Jasiukajtis
951*25c28e83SPiotr Jasiukajtis	and	%o0,255,%o0
952*25c28e83SPiotr Jasiukajtis
953*25c28e83SPiotr Jasiukajtis	and	%o1,255,%o1
954*25c28e83SPiotr Jasiukajtis
955*25c28e83SPiotr Jasiukajtis	sll	%o0,3,%o0
956*25c28e83SPiotr Jasiukajtis
957*25c28e83SPiotr Jasiukajtis	sll	%o1,3,%o1
958*25c28e83SPiotr Jasiukajtis
959*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o0],%f34
960*25c28e83SPiotr Jasiukajtis
961*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o1],%f18
962*25c28e83SPiotr Jasiukajtis
963*25c28e83SPiotr Jasiukajtis	fpadd32 %f16,%f34,%f34
964*25c28e83SPiotr Jasiukajtis
965*25c28e83SPiotr Jasiukajtis	fpadd32 %f2,%f18,%f18
966*25c28e83SPiotr Jasiukajtis
967*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
968*25c28e83SPiotr Jasiukajtis
969*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
970*25c28e83SPiotr Jasiukajtis
971*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f40,%f40
972*25c28e83SPiotr Jasiukajtis
973*25c28e83SPiotr Jasiukajtis	faddd	%f18,%f42,%f42
974*25c28e83SPiotr Jasiukajtis
975*25c28e83SPiotr Jasiukajtis	fdtos	%f40,%f26
976*25c28e83SPiotr Jasiukajtis	st	%f26,[%i3]
977*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
978*25c28e83SPiotr Jasiukajtis
979*25c28e83SPiotr Jasiukajtis	fdtos	%f42,%f18
980*25c28e83SPiotr Jasiukajtis	st	%f18,[%o4]
981*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
982*25c28e83SPiotr Jasiukajtis
983*25c28e83SPiotr Jasiukajtis	cmp	%l2,%o5
984*25c28e83SPiotr Jasiukajtis	sll	%i2,1,%o5
985*25c28e83SPiotr Jasiukajtis	bl,pt	%icc,.spec2_out_of_range
986*25c28e83SPiotr Jasiukajtis	sll	%i2,2,%o4
987*25c28e83SPiotr Jasiukajtis
988*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.spec2_inf
989*25c28e83SPiotr Jasiukajtis	add	%o4,%o5,%o4
990*25c28e83SPiotr Jasiukajtis
991*25c28e83SPiotr Jasiukajtis! NaN -> NaN
992*25c28e83SPiotr Jasiukajtis
993*25c28e83SPiotr Jasiukajtis	fmuls	%f4,%f4,%f4
994*25c28e83SPiotr Jasiukajtis	ba	.spec2_exit
995*25c28e83SPiotr Jasiukajtis	st	%f4,[%i3]
996*25c28e83SPiotr Jasiukajtis
997*25c28e83SPiotr Jasiukajtis.spec2_inf:
998*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
999*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
1000*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
1001*25c28e83SPiotr Jasiukajtis	andcc	%l0,4,%l0
1002*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,.spec2_exit
1003*25c28e83SPiotr Jasiukajtis	st	%f4,[%i3]
1004*25c28e83SPiotr Jasiukajtis
1005*25c28e83SPiotr Jasiukajtis	ba	.spec2_exit
1006*25c28e83SPiotr Jasiukajtis	st	%f3,[%i3]
1007*25c28e83SPiotr Jasiukajtis
1008*25c28e83SPiotr Jasiukajtis.spec2_out_of_range:
1009*25c28e83SPiotr Jasiukajtis	add	%o4,%o5,%o4
1010*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
1011*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
1012*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
1013*25c28e83SPiotr Jasiukajtis	and	%l0,4,%l0
1014*25c28e83SPiotr Jasiukajtis	add	%l0,2048,%l0
1015*25c28e83SPiotr Jasiukajtis	ld	[G1_CONST_TBL+%l0],%f2
1016*25c28e83SPiotr Jasiukajtis	fmuls	%f2,%f2,%f2
1017*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
1018*25c28e83SPiotr Jasiukajtis
1019*25c28e83SPiotr Jasiukajtis.spec2_exit:
1020*25c28e83SPiotr Jasiukajtis	fmovs	%f6,%f16
1021*25c28e83SPiotr Jasiukajtis	mov	%l3,%l0
1022*25c28e83SPiotr Jasiukajtis	mov	%o3,%o0
1023*25c28e83SPiotr Jasiukajtis	fmovs	%f8,%f2
1024*25c28e83SPiotr Jasiukajtis	mov	%l4,%l1
1025*25c28e83SPiotr Jasiukajtis	add	%o0,%i2,%o1
1026*25c28e83SPiotr Jasiukajtis	fmovs	%f10,%f4
1027*25c28e83SPiotr Jasiukajtis	mov	%l5,%l2
1028*25c28e83SPiotr Jasiukajtis	add	%o1,%i2,%o2
1029*25c28e83SPiotr Jasiukajtis	fmovs	%f12,%f6
1030*25c28e83SPiotr Jasiukajtis	mov	%l6,%l3
1031*25c28e83SPiotr Jasiukajtis	mov	%l7,%l4
1032*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l5
1033*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
1034*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%o3
1035*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l6
1036*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
1037*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l7
1038*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
1039*25c28e83SPiotr Jasiukajtis	and	%l5,G5_CONST,%l5
1040*25c28e83SPiotr Jasiukajtis	and	%l6,G5_CONST,%l6
1041*25c28e83SPiotr Jasiukajtis	and	%l7,G5_CONST,%l7
1042*25c28e83SPiotr Jasiukajtis
1043*25c28e83SPiotr Jasiukajtis	subcc	%i0,3,%i0
1044*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.main_loop
1045*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
1046*25c28e83SPiotr Jasiukajtis	ba	.after_main_loop
1047*25c28e83SPiotr Jasiukajtis	nop
1048*25c28e83SPiotr Jasiukajtis.spec3:
1049*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o5
1050*25c28e83SPiotr Jasiukajtis	cmp	%l3,%o5
1051*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,1f
1052*25c28e83SPiotr Jasiukajtis	nop
1053*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc0,%f6,%f3
1054*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc1,%f6,THRESHOLDL
1055*25c28e83SPiotr Jasiukajtis	fbl,a,pn	%fcc0,1f		! if ( X < 0.0f )
1056*25c28e83SPiotr Jasiukajtis	fstod	%f6,%f46			! (3) y = (double) X
1057*25c28e83SPiotr Jasiukajtis	fbl,a,pt	%fcc1,.spec3_cont	! if ( X < THRESHOLDL )
1058*25c28e83SPiotr Jasiukajtis	fstod	%f6,%f46			! (3) y = (double) X
1059*25c28e83SPiotr Jasiukajtis1:
1060*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f40,%f40
1061*25c28e83SPiotr Jasiukajtis
1062*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f42,%f42
1063*25c28e83SPiotr Jasiukajtis
1064*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f44,%f44
1065*25c28e83SPiotr Jasiukajtis
1066*25c28e83SPiotr Jasiukajtis	fdtoi	%f40,%f16
1067*25c28e83SPiotr Jasiukajtis	st	%f16,[%fp+tmp0]
1068*25c28e83SPiotr Jasiukajtis
1069*25c28e83SPiotr Jasiukajtis	fdtoi	%f42,%f2
1070*25c28e83SPiotr Jasiukajtis	st	%f2,[%fp+tmp1]
1071*25c28e83SPiotr Jasiukajtis
1072*25c28e83SPiotr Jasiukajtis	fdtoi	%f44,%f4
1073*25c28e83SPiotr Jasiukajtis	st	%f4,[%fp+tmp2]
1074*25c28e83SPiotr Jasiukajtis
1075*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f34
1076*25c28e83SPiotr Jasiukajtis	fpackfix	%f16,%f16
1077*25c28e83SPiotr Jasiukajtis
1078*25c28e83SPiotr Jasiukajtis	fitod	%f2,%f18
1079*25c28e83SPiotr Jasiukajtis	fpackfix	%f2,%f2
1080*25c28e83SPiotr Jasiukajtis
1081*25c28e83SPiotr Jasiukajtis	fitod	%f4,%f20
1082*25c28e83SPiotr Jasiukajtis	fpackfix	%f4,%f4
1083*25c28e83SPiotr Jasiukajtis
1084*25c28e83SPiotr Jasiukajtis	fsubd	%f40,%f34,%f40
1085*25c28e83SPiotr Jasiukajtis
1086*25c28e83SPiotr Jasiukajtis	fsubd	%f42,%f18,%f42
1087*25c28e83SPiotr Jasiukajtis
1088*25c28e83SPiotr Jasiukajtis	fsubd	%f44,%f20,%f44
1089*25c28e83SPiotr Jasiukajtis
1090*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f40,%f34
1091*25c28e83SPiotr Jasiukajtis
1092*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f42,%f18
1093*25c28e83SPiotr Jasiukajtis
1094*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f44,%f20
1095*25c28e83SPiotr Jasiukajtis
1096*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f34,%f34
1097*25c28e83SPiotr Jasiukajtis
1098*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f18,%f18
1099*25c28e83SPiotr Jasiukajtis
1100*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f20,%f20
1101*25c28e83SPiotr Jasiukajtis
1102*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0],%o0
1103*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
1104*25c28e83SPiotr Jasiukajtis
1105*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp1],%o1
1106*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
1107*25c28e83SPiotr Jasiukajtis
1108*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp2],%o2
1109*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44
1110*25c28e83SPiotr Jasiukajtis
1111*25c28e83SPiotr Jasiukajtis	and	%o0,255,%o0
1112*25c28e83SPiotr Jasiukajtis	and	%o1,255,%o1
1113*25c28e83SPiotr Jasiukajtis
1114*25c28e83SPiotr Jasiukajtis	and	%o2,255,%o2
1115*25c28e83SPiotr Jasiukajtis	sll	%o0,3,%o0
1116*25c28e83SPiotr Jasiukajtis
1117*25c28e83SPiotr Jasiukajtis	sll	%o1,3,%o1
1118*25c28e83SPiotr Jasiukajtis	sll	%o2,3,%o2
1119*25c28e83SPiotr Jasiukajtis
1120*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o0],%f34
1121*25c28e83SPiotr Jasiukajtis
1122*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o1],%f18
1123*25c28e83SPiotr Jasiukajtis
1124*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o2],%f20
1125*25c28e83SPiotr Jasiukajtis
1126*25c28e83SPiotr Jasiukajtis	fpadd32 %f16,%f34,%f34
1127*25c28e83SPiotr Jasiukajtis
1128*25c28e83SPiotr Jasiukajtis	fpadd32 %f2,%f18,%f18
1129*25c28e83SPiotr Jasiukajtis
1130*25c28e83SPiotr Jasiukajtis	fpadd32 %f4,%f20,%f20
1131*25c28e83SPiotr Jasiukajtis
1132*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
1133*25c28e83SPiotr Jasiukajtis
1134*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
1135*25c28e83SPiotr Jasiukajtis
1136*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44
1137*25c28e83SPiotr Jasiukajtis
1138*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f40,%f40
1139*25c28e83SPiotr Jasiukajtis
1140*25c28e83SPiotr Jasiukajtis	faddd	%f18,%f42,%f42
1141*25c28e83SPiotr Jasiukajtis
1142*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f44,%f44
1143*25c28e83SPiotr Jasiukajtis
1144*25c28e83SPiotr Jasiukajtis	fdtos	%f40,%f26
1145*25c28e83SPiotr Jasiukajtis	st	%f26,[%i3]
1146*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
1147*25c28e83SPiotr Jasiukajtis
1148*25c28e83SPiotr Jasiukajtis	fdtos	%f42,%f18
1149*25c28e83SPiotr Jasiukajtis	st	%f18,[%o4]
1150*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
1151*25c28e83SPiotr Jasiukajtis
1152*25c28e83SPiotr Jasiukajtis	fdtos	%f44,%f20
1153*25c28e83SPiotr Jasiukajtis	st	%f20,[%i3]
1154*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
1155*25c28e83SPiotr Jasiukajtis
1156*25c28e83SPiotr Jasiukajtis	cmp	%l3,%o5
1157*25c28e83SPiotr Jasiukajtis	bl,pt	%icc,.spec3_out_of_range
1158*25c28e83SPiotr Jasiukajtis	sll	%i2,2,%o4
1159*25c28e83SPiotr Jasiukajtis
1160*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.spec3_inf
1161*25c28e83SPiotr Jasiukajtis	add	%o4,%i2,%o4
1162*25c28e83SPiotr Jasiukajtis
1163*25c28e83SPiotr Jasiukajtis! NaN -> NaN
1164*25c28e83SPiotr Jasiukajtis
1165*25c28e83SPiotr Jasiukajtis	fmuls	%f6,%f6,%f6
1166*25c28e83SPiotr Jasiukajtis	ba	.spec3_exit
1167*25c28e83SPiotr Jasiukajtis	st	%f6,[%i3]
1168*25c28e83SPiotr Jasiukajtis
1169*25c28e83SPiotr Jasiukajtis.spec3_inf:
1170*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
1171*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
1172*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
1173*25c28e83SPiotr Jasiukajtis	andcc	%l0,4,%l0
1174*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,.spec3_exit
1175*25c28e83SPiotr Jasiukajtis	st	%f6,[%i3]
1176*25c28e83SPiotr Jasiukajtis
1177*25c28e83SPiotr Jasiukajtis	ba	.spec3_exit
1178*25c28e83SPiotr Jasiukajtis	st	%f3,[%i3]
1179*25c28e83SPiotr Jasiukajtis
1180*25c28e83SPiotr Jasiukajtis.spec3_out_of_range:
1181*25c28e83SPiotr Jasiukajtis	add	%o4,%i2,%o4
1182*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
1183*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
1184*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
1185*25c28e83SPiotr Jasiukajtis	and	%l0,4,%l0
1186*25c28e83SPiotr Jasiukajtis	add	%l0,2048,%l0
1187*25c28e83SPiotr Jasiukajtis	ld	[G1_CONST_TBL+%l0],%f2
1188*25c28e83SPiotr Jasiukajtis	fmuls	%f2,%f2,%f2
1189*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
1190*25c28e83SPiotr Jasiukajtis
1191*25c28e83SPiotr Jasiukajtis.spec3_exit:
1192*25c28e83SPiotr Jasiukajtis	fmovs	%f8,%f16
1193*25c28e83SPiotr Jasiukajtis	mov	%l4,%l0
1194*25c28e83SPiotr Jasiukajtis	fmovs	%f10,%f2
1195*25c28e83SPiotr Jasiukajtis	mov	%l5,%l1
1196*25c28e83SPiotr Jasiukajtis	fmovs	%f12,%f4
1197*25c28e83SPiotr Jasiukajtis	mov	%l6,%l2
1198*25c28e83SPiotr Jasiukajtis	fmovs	%f14,%f6
1199*25c28e83SPiotr Jasiukajtis	mov	%l7,%l3
1200*25c28e83SPiotr Jasiukajtis	mov	%i1,%o0
1201*25c28e83SPiotr Jasiukajtis	lda	[%o0]%asi,%l4
1202*25c28e83SPiotr Jasiukajtis	add	%o0,%i2,%o1
1203*25c28e83SPiotr Jasiukajtis	lda	[%o1]%asi,%l5
1204*25c28e83SPiotr Jasiukajtis	add	%o1,%i2,%o2
1205*25c28e83SPiotr Jasiukajtis	lda	[%o2]%asi,%l6
1206*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%o3
1207*25c28e83SPiotr Jasiukajtis	lda	[%o3]%asi,%l7
1208*25c28e83SPiotr Jasiukajtis	add	%o3,%i2,%i1
1209*25c28e83SPiotr Jasiukajtis	and	%l4,G5_CONST,%l4
1210*25c28e83SPiotr Jasiukajtis	and	%l5,G5_CONST,%l5
1211*25c28e83SPiotr Jasiukajtis	and	%l6,G5_CONST,%l6
1212*25c28e83SPiotr Jasiukajtis	and	%l7,G5_CONST,%l7
1213*25c28e83SPiotr Jasiukajtis
1214*25c28e83SPiotr Jasiukajtis	subcc	%i0,4,%i0
1215*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.main_loop
1216*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
1217*25c28e83SPiotr Jasiukajtis	ba	.after_main_loop
1218*25c28e83SPiotr Jasiukajtis	nop
1219*25c28e83SPiotr Jasiukajtis
1220*25c28e83SPiotr Jasiukajtis	.align	16
1221*25c28e83SPiotr Jasiukajtis.spec4:
1222*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o5
1223*25c28e83SPiotr Jasiukajtis	cmp	%l4,%o5
1224*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,1f
1225*25c28e83SPiotr Jasiukajtis	nop
1226*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc0,%f8,%f3
1227*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc1,%f8,THRESHOLDL
1228*25c28e83SPiotr Jasiukajtis	fbl,a,pn	%fcc0,1f		! if ( X < 0.0f )
1229*25c28e83SPiotr Jasiukajtis	fstod	%f8,%f48			! (4) y = (double) X
1230*25c28e83SPiotr Jasiukajtis	fbl,a,pt	%fcc1,.spec4_cont	! if ( X < THRESHOLDL )
1231*25c28e83SPiotr Jasiukajtis	fstod	%f8,%f48			! (4) y = (double) X
1232*25c28e83SPiotr Jasiukajtis1:
1233*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f42,%f42
1234*25c28e83SPiotr Jasiukajtis
1235*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f44,%f44
1236*25c28e83SPiotr Jasiukajtis
1237*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f46,%f46
1238*25c28e83SPiotr Jasiukajtis
1239*25c28e83SPiotr Jasiukajtis	fdtoi	%f40,%f16
1240*25c28e83SPiotr Jasiukajtis	st	%f16,[%fp+tmp0]
1241*25c28e83SPiotr Jasiukajtis
1242*25c28e83SPiotr Jasiukajtis	fdtoi	%f42,%f2
1243*25c28e83SPiotr Jasiukajtis	st	%f2,[%fp+tmp1]
1244*25c28e83SPiotr Jasiukajtis
1245*25c28e83SPiotr Jasiukajtis	fdtoi	%f44,%f4
1246*25c28e83SPiotr Jasiukajtis	st	%f4,[%fp+tmp2]
1247*25c28e83SPiotr Jasiukajtis
1248*25c28e83SPiotr Jasiukajtis	fdtoi	%f46,%f6
1249*25c28e83SPiotr Jasiukajtis	st	%f6,[%fp+tmp3]
1250*25c28e83SPiotr Jasiukajtis
1251*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f34
1252*25c28e83SPiotr Jasiukajtis	fpackfix	%f16,%f16
1253*25c28e83SPiotr Jasiukajtis
1254*25c28e83SPiotr Jasiukajtis	fitod	%f2,%f18
1255*25c28e83SPiotr Jasiukajtis	fpackfix	%f2,%f2
1256*25c28e83SPiotr Jasiukajtis
1257*25c28e83SPiotr Jasiukajtis	fitod	%f4,%f20
1258*25c28e83SPiotr Jasiukajtis	fpackfix	%f4,%f4
1259*25c28e83SPiotr Jasiukajtis
1260*25c28e83SPiotr Jasiukajtis	fitod	%f6,%f22
1261*25c28e83SPiotr Jasiukajtis	fpackfix	%f6,%f6
1262*25c28e83SPiotr Jasiukajtis
1263*25c28e83SPiotr Jasiukajtis	fsubd	%f40,%f34,%f40
1264*25c28e83SPiotr Jasiukajtis
1265*25c28e83SPiotr Jasiukajtis	fsubd	%f42,%f18,%f42
1266*25c28e83SPiotr Jasiukajtis
1267*25c28e83SPiotr Jasiukajtis	fsubd	%f44,%f20,%f44
1268*25c28e83SPiotr Jasiukajtis
1269*25c28e83SPiotr Jasiukajtis	fsubd	%f46,%f22,%f46
1270*25c28e83SPiotr Jasiukajtis
1271*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f40,%f34
1272*25c28e83SPiotr Jasiukajtis
1273*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f42,%f18
1274*25c28e83SPiotr Jasiukajtis
1275*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f44,%f20
1276*25c28e83SPiotr Jasiukajtis
1277*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f46,%f22
1278*25c28e83SPiotr Jasiukajtis
1279*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f34,%f34
1280*25c28e83SPiotr Jasiukajtis
1281*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f18,%f18
1282*25c28e83SPiotr Jasiukajtis
1283*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f20,%f20
1284*25c28e83SPiotr Jasiukajtis
1285*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f22,%f22
1286*25c28e83SPiotr Jasiukajtis
1287*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0],%o0
1288*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
1289*25c28e83SPiotr Jasiukajtis
1290*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp1],%o1
1291*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
1292*25c28e83SPiotr Jasiukajtis
1293*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp2],%o2
1294*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44
1295*25c28e83SPiotr Jasiukajtis
1296*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%o3
1297*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f46
1298*25c28e83SPiotr Jasiukajtis
1299*25c28e83SPiotr Jasiukajtis	and	%o0,255,%o0
1300*25c28e83SPiotr Jasiukajtis	and	%o1,255,%o1
1301*25c28e83SPiotr Jasiukajtis
1302*25c28e83SPiotr Jasiukajtis	and	%o2,255,%o2
1303*25c28e83SPiotr Jasiukajtis	and	%o3,255,%o3
1304*25c28e83SPiotr Jasiukajtis
1305*25c28e83SPiotr Jasiukajtis	sll	%o0,3,%o0
1306*25c28e83SPiotr Jasiukajtis	sll	%o1,3,%o1
1307*25c28e83SPiotr Jasiukajtis
1308*25c28e83SPiotr Jasiukajtis	sll	%o2,3,%o2
1309*25c28e83SPiotr Jasiukajtis	sll	%o3,3,%o3
1310*25c28e83SPiotr Jasiukajtis
1311*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o0],%f34
1312*25c28e83SPiotr Jasiukajtis
1313*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o1],%f18
1314*25c28e83SPiotr Jasiukajtis
1315*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o2],%f20
1316*25c28e83SPiotr Jasiukajtis
1317*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o3],%f22
1318*25c28e83SPiotr Jasiukajtis
1319*25c28e83SPiotr Jasiukajtis	fpadd32 %f16,%f34,%f34
1320*25c28e83SPiotr Jasiukajtis
1321*25c28e83SPiotr Jasiukajtis	fpadd32 %f2,%f18,%f18
1322*25c28e83SPiotr Jasiukajtis
1323*25c28e83SPiotr Jasiukajtis	fpadd32 %f4,%f20,%f20
1324*25c28e83SPiotr Jasiukajtis
1325*25c28e83SPiotr Jasiukajtis	fpadd32 %f6,%f22,%f22
1326*25c28e83SPiotr Jasiukajtis
1327*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
1328*25c28e83SPiotr Jasiukajtis
1329*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
1330*25c28e83SPiotr Jasiukajtis
1331*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44
1332*25c28e83SPiotr Jasiukajtis
1333*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f46
1334*25c28e83SPiotr Jasiukajtis
1335*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f40,%f40
1336*25c28e83SPiotr Jasiukajtis
1337*25c28e83SPiotr Jasiukajtis	faddd	%f18,%f42,%f42
1338*25c28e83SPiotr Jasiukajtis
1339*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f44,%f44
1340*25c28e83SPiotr Jasiukajtis
1341*25c28e83SPiotr Jasiukajtis	faddd	%f22,%f46,%f46
1342*25c28e83SPiotr Jasiukajtis
1343*25c28e83SPiotr Jasiukajtis	fdtos	%f40,%f26
1344*25c28e83SPiotr Jasiukajtis	st	%f26,[%i3]
1345*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
1346*25c28e83SPiotr Jasiukajtis
1347*25c28e83SPiotr Jasiukajtis	fdtos	%f42,%f18
1348*25c28e83SPiotr Jasiukajtis	st	%f18,[%o4]
1349*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
1350*25c28e83SPiotr Jasiukajtis
1351*25c28e83SPiotr Jasiukajtis	fdtos	%f44,%f20
1352*25c28e83SPiotr Jasiukajtis	st	%f20,[%i3]
1353*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
1354*25c28e83SPiotr Jasiukajtis
1355*25c28e83SPiotr Jasiukajtis	fdtos	%f46,%f22
1356*25c28e83SPiotr Jasiukajtis	st	%f22,[%o4]
1357*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
1358*25c28e83SPiotr Jasiukajtis
1359*25c28e83SPiotr Jasiukajtis	cmp	%l4,%o5
1360*25c28e83SPiotr Jasiukajtis	bl,pt	%icc,.spec4_out_of_range
1361*25c28e83SPiotr Jasiukajtis	sll	%i2,2,%o4
1362*25c28e83SPiotr Jasiukajtis
1363*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.spec4_inf
1364*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
1365*25c28e83SPiotr Jasiukajtis
1366*25c28e83SPiotr Jasiukajtis! NaN -> NaN
1367*25c28e83SPiotr Jasiukajtis
1368*25c28e83SPiotr Jasiukajtis	fmuls	%f8,%f8,%f8
1369*25c28e83SPiotr Jasiukajtis	ba	.spec4_exit
1370*25c28e83SPiotr Jasiukajtis	st	%f8,[%i3]
1371*25c28e83SPiotr Jasiukajtis
1372*25c28e83SPiotr Jasiukajtis.spec4_inf:
1373*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
1374*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
1375*25c28e83SPiotr Jasiukajtis	andcc	%l0,4,%l0
1376*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,.spec4_exit
1377*25c28e83SPiotr Jasiukajtis	st	%f8,[%i3]
1378*25c28e83SPiotr Jasiukajtis
1379*25c28e83SPiotr Jasiukajtis	ba	.spec4_exit
1380*25c28e83SPiotr Jasiukajtis	st	%f3,[%i3]
1381*25c28e83SPiotr Jasiukajtis
1382*25c28e83SPiotr Jasiukajtis.spec4_out_of_range:
1383*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
1384*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
1385*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
1386*25c28e83SPiotr Jasiukajtis	and	%l0,4,%l0
1387*25c28e83SPiotr Jasiukajtis	add	%l0,2048,%l0
1388*25c28e83SPiotr Jasiukajtis	ld	[G1_CONST_TBL+%l0],%f2
1389*25c28e83SPiotr Jasiukajtis	fmuls	%f2,%f2,%f2
1390*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
1391*25c28e83SPiotr Jasiukajtis
1392*25c28e83SPiotr Jasiukajtis.spec4_exit:
1393*25c28e83SPiotr Jasiukajtis	fmovs	%f10,%f16
1394*25c28e83SPiotr Jasiukajtis	mov	%l5,%l0
1395*25c28e83SPiotr Jasiukajtis	fmovs	%f12,%f2
1396*25c28e83SPiotr Jasiukajtis	mov	%l6,%l1
1397*25c28e83SPiotr Jasiukajtis	fmovs	%f14,%f4
1398*25c28e83SPiotr Jasiukajtis	mov	%l7,%l2
1399*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l3
1400*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f6
1401*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%o0
1402*25c28e83SPiotr Jasiukajtis	lda	[%o0]%asi,%l4
1403*25c28e83SPiotr Jasiukajtis	add	%o0,%i2,%o1
1404*25c28e83SPiotr Jasiukajtis	lda	[%o1]%asi,%l5
1405*25c28e83SPiotr Jasiukajtis	add	%o1,%i2,%o2
1406*25c28e83SPiotr Jasiukajtis	lda	[%o2]%asi,%l6
1407*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%o3
1408*25c28e83SPiotr Jasiukajtis	lda	[%o3]%asi,%l7
1409*25c28e83SPiotr Jasiukajtis	add	%o3,%i2,%i1
1410*25c28e83SPiotr Jasiukajtis	and	%l3,G5_CONST,%l3
1411*25c28e83SPiotr Jasiukajtis	and	%l4,G5_CONST,%l4
1412*25c28e83SPiotr Jasiukajtis	and	%l5,G5_CONST,%l5
1413*25c28e83SPiotr Jasiukajtis	and	%l6,G5_CONST,%l6
1414*25c28e83SPiotr Jasiukajtis	and	%l7,G5_CONST,%l7
1415*25c28e83SPiotr Jasiukajtis
1416*25c28e83SPiotr Jasiukajtis	subcc	%i0,5,%i0
1417*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.main_loop
1418*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
1419*25c28e83SPiotr Jasiukajtis	ba	.after_main_loop
1420*25c28e83SPiotr Jasiukajtis	nop
1421*25c28e83SPiotr Jasiukajtis
1422*25c28e83SPiotr Jasiukajtis	.align 16
1423*25c28e83SPiotr Jasiukajtis.spec5:
1424*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o5
1425*25c28e83SPiotr Jasiukajtis	cmp	%l5,%o5
1426*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,1f
1427*25c28e83SPiotr Jasiukajtis	nop
1428*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc0,%f10,%f3
1429*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc1,%f10,THRESHOLDL
1430*25c28e83SPiotr Jasiukajtis	fbl,a,pn	%fcc0,1f		! if ( X < 0.0f )
1431*25c28e83SPiotr Jasiukajtis	fstod	%f10,%f50			! (5) y = (double) X
1432*25c28e83SPiotr Jasiukajtis	fbl,a,pt	%fcc1,.spec5_cont	! if ( X < THRESHOLDL )
1433*25c28e83SPiotr Jasiukajtis	fstod	%f10,%f50			! (5) y = (double) X
1434*25c28e83SPiotr Jasiukajtis1:
1435*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f44,%f44
1436*25c28e83SPiotr Jasiukajtis
1437*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f46,%f46
1438*25c28e83SPiotr Jasiukajtis
1439*25c28e83SPiotr Jasiukajtis	fdtoi	%f40,%f16
1440*25c28e83SPiotr Jasiukajtis	st	%f16,[%fp+tmp0]
1441*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f48,%f48
1442*25c28e83SPiotr Jasiukajtis
1443*25c28e83SPiotr Jasiukajtis	fdtoi	%f42,%f2
1444*25c28e83SPiotr Jasiukajtis	st	%f2,[%fp+tmp1]
1445*25c28e83SPiotr Jasiukajtis
1446*25c28e83SPiotr Jasiukajtis	fdtoi	%f44,%f4
1447*25c28e83SPiotr Jasiukajtis	st	%f4,[%fp+tmp2]
1448*25c28e83SPiotr Jasiukajtis
1449*25c28e83SPiotr Jasiukajtis	fdtoi	%f46,%f6
1450*25c28e83SPiotr Jasiukajtis	st	%f6,[%fp+tmp3]
1451*25c28e83SPiotr Jasiukajtis
1452*25c28e83SPiotr Jasiukajtis	fdtoi	%f48,%f8
1453*25c28e83SPiotr Jasiukajtis	st	%f8,[%fp+tmp4]
1454*25c28e83SPiotr Jasiukajtis
1455*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f34
1456*25c28e83SPiotr Jasiukajtis	fpackfix	%f16,%f16
1457*25c28e83SPiotr Jasiukajtis
1458*25c28e83SPiotr Jasiukajtis	fitod	%f2,%f18
1459*25c28e83SPiotr Jasiukajtis	fpackfix	%f2,%f2
1460*25c28e83SPiotr Jasiukajtis
1461*25c28e83SPiotr Jasiukajtis	fitod	%f4,%f20
1462*25c28e83SPiotr Jasiukajtis	fpackfix	%f4,%f4
1463*25c28e83SPiotr Jasiukajtis
1464*25c28e83SPiotr Jasiukajtis	fitod	%f6,%f22
1465*25c28e83SPiotr Jasiukajtis	fpackfix	%f6,%f6
1466*25c28e83SPiotr Jasiukajtis
1467*25c28e83SPiotr Jasiukajtis	fitod	%f8,%f24
1468*25c28e83SPiotr Jasiukajtis	fpackfix	%f8,%f8
1469*25c28e83SPiotr Jasiukajtis
1470*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0],%o0
1471*25c28e83SPiotr Jasiukajtis	fsubd	%f40,%f34,%f40
1472*25c28e83SPiotr Jasiukajtis
1473*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp1],%o1
1474*25c28e83SPiotr Jasiukajtis	fsubd	%f42,%f18,%f42
1475*25c28e83SPiotr Jasiukajtis
1476*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp2],%o2
1477*25c28e83SPiotr Jasiukajtis	and	%o0,255,%o0
1478*25c28e83SPiotr Jasiukajtis	fsubd	%f44,%f20,%f44
1479*25c28e83SPiotr Jasiukajtis
1480*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%o3
1481*25c28e83SPiotr Jasiukajtis	and	%o1,255,%o1
1482*25c28e83SPiotr Jasiukajtis	fsubd	%f46,%f22,%f46
1483*25c28e83SPiotr Jasiukajtis
1484*25c28e83SPiotr Jasiukajtis	sll	%o0,3,%o0
1485*25c28e83SPiotr Jasiukajtis	sll	%o1,3,%o1
1486*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f40,%f34
1487*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f24,%f48
1488*25c28e83SPiotr Jasiukajtis
1489*25c28e83SPiotr Jasiukajtis	and	%o2,255,%o2
1490*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f42,%f18
1491*25c28e83SPiotr Jasiukajtis
1492*25c28e83SPiotr Jasiukajtis	sll	%o2,3,%o2
1493*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f44,%f20
1494*25c28e83SPiotr Jasiukajtis
1495*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp4],%o4
1496*25c28e83SPiotr Jasiukajtis	and	%o3,255,%o3
1497*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f46,%f22
1498*25c28e83SPiotr Jasiukajtis
1499*25c28e83SPiotr Jasiukajtis	sll	%o3,3,%o3
1500*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f48,%f24
1501*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f34,%f34
1502*25c28e83SPiotr Jasiukajtis
1503*25c28e83SPiotr Jasiukajtis	and	%o4,255,%o4
1504*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f18,%f18
1505*25c28e83SPiotr Jasiukajtis
1506*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f20,%f20
1507*25c28e83SPiotr Jasiukajtis
1508*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f22,%f22
1509*25c28e83SPiotr Jasiukajtis
1510*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
1511*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o0],%f34
1512*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f24,%f24
1513*25c28e83SPiotr Jasiukajtis
1514*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
1515*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o1],%f18
1516*25c28e83SPiotr Jasiukajtis
1517*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44
1518*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o2],%f20
1519*25c28e83SPiotr Jasiukajtis
1520*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f46
1521*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o3],%f22
1522*25c28e83SPiotr Jasiukajtis	sll	%o4,3,%o4
1523*25c28e83SPiotr Jasiukajtis
1524*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f48,%f48
1525*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o4],%f24
1526*25c28e83SPiotr Jasiukajtis	fpadd32 %f16,%f34,%f34
1527*25c28e83SPiotr Jasiukajtis
1528*25c28e83SPiotr Jasiukajtis	fpadd32 %f2,%f18,%f18
1529*25c28e83SPiotr Jasiukajtis
1530*25c28e83SPiotr Jasiukajtis	fpadd32 %f4,%f20,%f20
1531*25c28e83SPiotr Jasiukajtis
1532*25c28e83SPiotr Jasiukajtis	fpadd32 %f6,%f22,%f22
1533*25c28e83SPiotr Jasiukajtis
1534*25c28e83SPiotr Jasiukajtis	fpadd32 %f8,%f24,%f24
1535*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
1536*25c28e83SPiotr Jasiukajtis
1537*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
1538*25c28e83SPiotr Jasiukajtis
1539*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44
1540*25c28e83SPiotr Jasiukajtis
1541*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f46
1542*25c28e83SPiotr Jasiukajtis
1543*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f48,%f48
1544*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f40,%f40
1545*25c28e83SPiotr Jasiukajtis
1546*25c28e83SPiotr Jasiukajtis	faddd	%f18,%f42,%f42
1547*25c28e83SPiotr Jasiukajtis
1548*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f44,%f44
1549*25c28e83SPiotr Jasiukajtis
1550*25c28e83SPiotr Jasiukajtis	faddd	%f22,%f46,%f46
1551*25c28e83SPiotr Jasiukajtis
1552*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f48
1553*25c28e83SPiotr Jasiukajtis
1554*25c28e83SPiotr Jasiukajtis	fdtos	%f40,%f26
1555*25c28e83SPiotr Jasiukajtis	st	%f26,[%i3]
1556*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
1557*25c28e83SPiotr Jasiukajtis
1558*25c28e83SPiotr Jasiukajtis	fdtos	%f42,%f18
1559*25c28e83SPiotr Jasiukajtis	st	%f18,[%o4]
1560*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
1561*25c28e83SPiotr Jasiukajtis
1562*25c28e83SPiotr Jasiukajtis	fdtos	%f44,%f20
1563*25c28e83SPiotr Jasiukajtis	st	%f20,[%i3]
1564*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
1565*25c28e83SPiotr Jasiukajtis
1566*25c28e83SPiotr Jasiukajtis	fdtos	%f46,%f22
1567*25c28e83SPiotr Jasiukajtis	st	%f22,[%o4]
1568*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
1569*25c28e83SPiotr Jasiukajtis
1570*25c28e83SPiotr Jasiukajtis	fdtos	%f48,%f24
1571*25c28e83SPiotr Jasiukajtis	st	%f24,[%i3]
1572*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
1573*25c28e83SPiotr Jasiukajtis
1574*25c28e83SPiotr Jasiukajtis	cmp	%l5,%o5
1575*25c28e83SPiotr Jasiukajtis	bl,pt	%icc,.spec5_out_of_range
1576*25c28e83SPiotr Jasiukajtis	sll	%i2,2,%o4
1577*25c28e83SPiotr Jasiukajtis
1578*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.spec5_inf
1579*25c28e83SPiotr Jasiukajtis	sub	%o4,%i2,%o4
1580*25c28e83SPiotr Jasiukajtis
1581*25c28e83SPiotr Jasiukajtis! NaN -> NaN
1582*25c28e83SPiotr Jasiukajtis
1583*25c28e83SPiotr Jasiukajtis	fmuls	%f10,%f10,%f10
1584*25c28e83SPiotr Jasiukajtis	ba	.spec5_exit
1585*25c28e83SPiotr Jasiukajtis	st	%f10,[%i3]
1586*25c28e83SPiotr Jasiukajtis
1587*25c28e83SPiotr Jasiukajtis.spec5_inf:
1588*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
1589*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
1590*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
1591*25c28e83SPiotr Jasiukajtis	andcc	%l0,4,%l0
1592*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,.spec5_exit
1593*25c28e83SPiotr Jasiukajtis	st	%f10,[%i3]
1594*25c28e83SPiotr Jasiukajtis
1595*25c28e83SPiotr Jasiukajtis	ba	.spec5_exit
1596*25c28e83SPiotr Jasiukajtis	st	%f3,[%i3]
1597*25c28e83SPiotr Jasiukajtis
1598*25c28e83SPiotr Jasiukajtis.spec5_out_of_range:
1599*25c28e83SPiotr Jasiukajtis	sub	%o4,%i2,%o4
1600*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
1601*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
1602*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
1603*25c28e83SPiotr Jasiukajtis	and	%l0,4,%l0
1604*25c28e83SPiotr Jasiukajtis	add	%l0,2048,%l0
1605*25c28e83SPiotr Jasiukajtis	ld	[G1_CONST_TBL+%l0],%f2
1606*25c28e83SPiotr Jasiukajtis	fmuls	%f2,%f2,%f2
1607*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
1608*25c28e83SPiotr Jasiukajtis
1609*25c28e83SPiotr Jasiukajtis.spec5_exit:
1610*25c28e83SPiotr Jasiukajtis	fmovs	%f12,%f16
1611*25c28e83SPiotr Jasiukajtis	mov	%l6,%l0
1612*25c28e83SPiotr Jasiukajtis	fmovs	%f14,%f2
1613*25c28e83SPiotr Jasiukajtis	mov	%l7,%l1
1614*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l2
1615*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f4
1616*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
1617*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l3
1618*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f6
1619*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%o0
1620*25c28e83SPiotr Jasiukajtis	lda	[%o0]%asi,%l4
1621*25c28e83SPiotr Jasiukajtis	add	%o0,%i2,%o1
1622*25c28e83SPiotr Jasiukajtis	lda	[%o1]%asi,%l5
1623*25c28e83SPiotr Jasiukajtis	add	%o1,%i2,%o2
1624*25c28e83SPiotr Jasiukajtis	lda	[%o2]%asi,%l6
1625*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%o3
1626*25c28e83SPiotr Jasiukajtis	lda	[%o3]%asi,%l7
1627*25c28e83SPiotr Jasiukajtis	add	%o3,%i2,%i1
1628*25c28e83SPiotr Jasiukajtis	and	%l2,G5_CONST,%l2
1629*25c28e83SPiotr Jasiukajtis	and	%l3,G5_CONST,%l3
1630*25c28e83SPiotr Jasiukajtis	and	%l4,G5_CONST,%l4
1631*25c28e83SPiotr Jasiukajtis	and	%l5,G5_CONST,%l5
1632*25c28e83SPiotr Jasiukajtis	and	%l6,G5_CONST,%l6
1633*25c28e83SPiotr Jasiukajtis	and	%l7,G5_CONST,%l7
1634*25c28e83SPiotr Jasiukajtis
1635*25c28e83SPiotr Jasiukajtis	subcc	%i0,6,%i0
1636*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.main_loop
1637*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
1638*25c28e83SPiotr Jasiukajtis	ba	.after_main_loop
1639*25c28e83SPiotr Jasiukajtis	nop
1640*25c28e83SPiotr Jasiukajtis.spec6:
1641*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o5
1642*25c28e83SPiotr Jasiukajtis	cmp	%l6,%o5
1643*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,1f
1644*25c28e83SPiotr Jasiukajtis	nop
1645*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc0,%f12,%f3
1646*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc1,%f12,THRESHOLDL
1647*25c28e83SPiotr Jasiukajtis	fbl,a,pn	%fcc0,1f		! if ( X < 0.0f )
1648*25c28e83SPiotr Jasiukajtis	fstod	%f12,%f52			! (6) y = (double) X
1649*25c28e83SPiotr Jasiukajtis	fbl,a,pt	%fcc1,.spec6_cont	! if ( X < THRESHOLDL )
1650*25c28e83SPiotr Jasiukajtis	fstod	%f12,%f52			! (6) y = (double) X
1651*25c28e83SPiotr Jasiukajtis1:
1652*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f46,%f46
1653*25c28e83SPiotr Jasiukajtis
1654*25c28e83SPiotr Jasiukajtis	fdtoi	%f40,%f16
1655*25c28e83SPiotr Jasiukajtis	st	%f16,[%fp+tmp0]
1656*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f48,%f48
1657*25c28e83SPiotr Jasiukajtis
1658*25c28e83SPiotr Jasiukajtis	fdtoi	%f42,%f2
1659*25c28e83SPiotr Jasiukajtis	st	%f2,[%fp+tmp1]
1660*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f50,%f50
1661*25c28e83SPiotr Jasiukajtis
1662*25c28e83SPiotr Jasiukajtis	fdtoi	%f44,%f4
1663*25c28e83SPiotr Jasiukajtis	st	%f4,[%fp+tmp2]
1664*25c28e83SPiotr Jasiukajtis
1665*25c28e83SPiotr Jasiukajtis	fdtoi	%f46,%f6
1666*25c28e83SPiotr Jasiukajtis	st	%f6,[%fp+tmp3]
1667*25c28e83SPiotr Jasiukajtis
1668*25c28e83SPiotr Jasiukajtis	fdtoi	%f48,%f8
1669*25c28e83SPiotr Jasiukajtis	st	%f8,[%fp+tmp4]
1670*25c28e83SPiotr Jasiukajtis
1671*25c28e83SPiotr Jasiukajtis	fdtoi	%f50,%f10
1672*25c28e83SPiotr Jasiukajtis	st	%f10,[%fp+tmp5]
1673*25c28e83SPiotr Jasiukajtis
1674*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f34
1675*25c28e83SPiotr Jasiukajtis	fpackfix	%f16,%f16
1676*25c28e83SPiotr Jasiukajtis
1677*25c28e83SPiotr Jasiukajtis	fitod	%f2,%f18
1678*25c28e83SPiotr Jasiukajtis	fpackfix	%f2,%f2
1679*25c28e83SPiotr Jasiukajtis
1680*25c28e83SPiotr Jasiukajtis	fitod	%f4,%f20
1681*25c28e83SPiotr Jasiukajtis	fpackfix	%f4,%f4
1682*25c28e83SPiotr Jasiukajtis
1683*25c28e83SPiotr Jasiukajtis	fitod	%f6,%f22
1684*25c28e83SPiotr Jasiukajtis	fpackfix	%f6,%f6
1685*25c28e83SPiotr Jasiukajtis
1686*25c28e83SPiotr Jasiukajtis	fitod	%f8,%f24
1687*25c28e83SPiotr Jasiukajtis	fpackfix	%f8,%f8
1688*25c28e83SPiotr Jasiukajtis
1689*25c28e83SPiotr Jasiukajtis	fitod	%f10,%f26
1690*25c28e83SPiotr Jasiukajtis	fpackfix	%f10,%f10
1691*25c28e83SPiotr Jasiukajtis
1692*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0],%o0
1693*25c28e83SPiotr Jasiukajtis	fsubd	%f40,%f34,%f40
1694*25c28e83SPiotr Jasiukajtis
1695*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp1],%o1
1696*25c28e83SPiotr Jasiukajtis	fsubd	%f42,%f18,%f42
1697*25c28e83SPiotr Jasiukajtis
1698*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp2],%o2
1699*25c28e83SPiotr Jasiukajtis	and	%o0,255,%o0
1700*25c28e83SPiotr Jasiukajtis	fsubd	%f44,%f20,%f44
1701*25c28e83SPiotr Jasiukajtis
1702*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%o3
1703*25c28e83SPiotr Jasiukajtis	and	%o1,255,%o1
1704*25c28e83SPiotr Jasiukajtis	fsubd	%f46,%f22,%f46
1705*25c28e83SPiotr Jasiukajtis
1706*25c28e83SPiotr Jasiukajtis	sll	%o0,3,%o0
1707*25c28e83SPiotr Jasiukajtis	sll	%o1,3,%o1
1708*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f40,%f34
1709*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f24,%f48
1710*25c28e83SPiotr Jasiukajtis
1711*25c28e83SPiotr Jasiukajtis	and	%o2,255,%o2
1712*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f42,%f18
1713*25c28e83SPiotr Jasiukajtis	fsubd	%f50,%f26,%f50
1714*25c28e83SPiotr Jasiukajtis
1715*25c28e83SPiotr Jasiukajtis	sll	%o2,3,%o2
1716*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f44,%f20
1717*25c28e83SPiotr Jasiukajtis
1718*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp4],%o4
1719*25c28e83SPiotr Jasiukajtis	and	%o3,255,%o3
1720*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f46,%f22
1721*25c28e83SPiotr Jasiukajtis
1722*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp5],%o5
1723*25c28e83SPiotr Jasiukajtis	sll	%o3,3,%o3
1724*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f48,%f24
1725*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f34,%f34
1726*25c28e83SPiotr Jasiukajtis
1727*25c28e83SPiotr Jasiukajtis	and	%o4,255,%o4
1728*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f50,%f26
1729*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f18,%f18
1730*25c28e83SPiotr Jasiukajtis
1731*25c28e83SPiotr Jasiukajtis	and	%o5,255,%o5
1732*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f20,%f20
1733*25c28e83SPiotr Jasiukajtis
1734*25c28e83SPiotr Jasiukajtis	sll	%o5,3,%o5
1735*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f22,%f22
1736*25c28e83SPiotr Jasiukajtis
1737*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
1738*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o0],%f34
1739*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f24,%f24
1740*25c28e83SPiotr Jasiukajtis
1741*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
1742*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o1],%f18
1743*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f26,%f26
1744*25c28e83SPiotr Jasiukajtis
1745*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44
1746*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o2],%f20
1747*25c28e83SPiotr Jasiukajtis
1748*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f46
1749*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o3],%f22
1750*25c28e83SPiotr Jasiukajtis	sll	%o4,3,%o4
1751*25c28e83SPiotr Jasiukajtis
1752*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f48,%f48
1753*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o4],%f24
1754*25c28e83SPiotr Jasiukajtis	fpadd32 %f16,%f34,%f34
1755*25c28e83SPiotr Jasiukajtis
1756*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f50,%f50
1757*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o5],%f26
1758*25c28e83SPiotr Jasiukajtis	fpadd32 %f2,%f18,%f18
1759*25c28e83SPiotr Jasiukajtis
1760*25c28e83SPiotr Jasiukajtis	fpadd32 %f4,%f20,%f20
1761*25c28e83SPiotr Jasiukajtis
1762*25c28e83SPiotr Jasiukajtis	fpadd32 %f6,%f22,%f22
1763*25c28e83SPiotr Jasiukajtis
1764*25c28e83SPiotr Jasiukajtis	fpadd32 %f8,%f24,%f24
1765*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
1766*25c28e83SPiotr Jasiukajtis
1767*25c28e83SPiotr Jasiukajtis	fpadd32 %f10,%f26,%f26
1768*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
1769*25c28e83SPiotr Jasiukajtis
1770*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44
1771*25c28e83SPiotr Jasiukajtis
1772*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f46
1773*25c28e83SPiotr Jasiukajtis
1774*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f48,%f48
1775*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f40,%f40
1776*25c28e83SPiotr Jasiukajtis
1777*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f50,%f50
1778*25c28e83SPiotr Jasiukajtis	faddd	%f18,%f42,%f42
1779*25c28e83SPiotr Jasiukajtis
1780*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f44,%f44
1781*25c28e83SPiotr Jasiukajtis
1782*25c28e83SPiotr Jasiukajtis	faddd	%f22,%f46,%f46
1783*25c28e83SPiotr Jasiukajtis
1784*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f48
1785*25c28e83SPiotr Jasiukajtis
1786*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f50,%f50
1787*25c28e83SPiotr Jasiukajtis
1788*25c28e83SPiotr Jasiukajtis	fdtos	%f40,%f26
1789*25c28e83SPiotr Jasiukajtis	st	%f26,[%i3]
1790*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
1791*25c28e83SPiotr Jasiukajtis
1792*25c28e83SPiotr Jasiukajtis	fdtos	%f42,%f18
1793*25c28e83SPiotr Jasiukajtis	st	%f18,[%o4]
1794*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
1795*25c28e83SPiotr Jasiukajtis
1796*25c28e83SPiotr Jasiukajtis	fdtos	%f44,%f20
1797*25c28e83SPiotr Jasiukajtis	st	%f20,[%i3]
1798*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
1799*25c28e83SPiotr Jasiukajtis
1800*25c28e83SPiotr Jasiukajtis	fdtos	%f46,%f22
1801*25c28e83SPiotr Jasiukajtis	st	%f22,[%o4]
1802*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
1803*25c28e83SPiotr Jasiukajtis
1804*25c28e83SPiotr Jasiukajtis	fdtos	%f48,%f24
1805*25c28e83SPiotr Jasiukajtis	st	%f24,[%i3]
1806*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
1807*25c28e83SPiotr Jasiukajtis
1808*25c28e83SPiotr Jasiukajtis	fdtos	%f50,%f26
1809*25c28e83SPiotr Jasiukajtis	st	%f26,[%o4]
1810*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
1811*25c28e83SPiotr Jasiukajtis
1812*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o5
1813*25c28e83SPiotr Jasiukajtis	cmp	%l6,%o5
1814*25c28e83SPiotr Jasiukajtis	bl,pt	%icc,.spec6_out_of_range
1815*25c28e83SPiotr Jasiukajtis	sll	%i2,1,%o4
1816*25c28e83SPiotr Jasiukajtis
1817*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.spec6_inf
1818*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
1819*25c28e83SPiotr Jasiukajtis
1820*25c28e83SPiotr Jasiukajtis! NaN -> NaN
1821*25c28e83SPiotr Jasiukajtis
1822*25c28e83SPiotr Jasiukajtis	fmuls	%f12,%f12,%f12
1823*25c28e83SPiotr Jasiukajtis	ba	.spec6_exit
1824*25c28e83SPiotr Jasiukajtis	st	%f12,[%i3]
1825*25c28e83SPiotr Jasiukajtis
1826*25c28e83SPiotr Jasiukajtis.spec6_inf:
1827*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
1828*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
1829*25c28e83SPiotr Jasiukajtis	andcc	%l0,4,%l0
1830*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,.spec6_exit
1831*25c28e83SPiotr Jasiukajtis	st	%f12,[%i3]
1832*25c28e83SPiotr Jasiukajtis
1833*25c28e83SPiotr Jasiukajtis	ba	.spec6_exit
1834*25c28e83SPiotr Jasiukajtis	st	%f3,[%i3]
1835*25c28e83SPiotr Jasiukajtis
1836*25c28e83SPiotr Jasiukajtis.spec6_out_of_range:
1837*25c28e83SPiotr Jasiukajtis	sub	%i1,%o4,%o4
1838*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
1839*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
1840*25c28e83SPiotr Jasiukajtis	and	%l0,4,%l0
1841*25c28e83SPiotr Jasiukajtis	add	%l0,2048,%l0
1842*25c28e83SPiotr Jasiukajtis	ld	[G1_CONST_TBL+%l0],%f2
1843*25c28e83SPiotr Jasiukajtis	fmuls	%f2,%f2,%f2
1844*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
1845*25c28e83SPiotr Jasiukajtis
1846*25c28e83SPiotr Jasiukajtis.spec6_exit:
1847*25c28e83SPiotr Jasiukajtis	fmovs	%f14,%f16
1848*25c28e83SPiotr Jasiukajtis	mov	%l7,%l0
1849*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l1
1850*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f2
1851*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
1852*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l2
1853*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f4
1854*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
1855*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l3
1856*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f6
1857*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%o0
1858*25c28e83SPiotr Jasiukajtis	lda	[%o0]%asi,%l4
1859*25c28e83SPiotr Jasiukajtis	add	%o0,%i2,%o1
1860*25c28e83SPiotr Jasiukajtis	lda	[%o1]%asi,%l5
1861*25c28e83SPiotr Jasiukajtis	add	%o1,%i2,%o2
1862*25c28e83SPiotr Jasiukajtis	lda	[%o2]%asi,%l6
1863*25c28e83SPiotr Jasiukajtis	add	%o2,%i2,%o3
1864*25c28e83SPiotr Jasiukajtis	lda	[%o3]%asi,%l7
1865*25c28e83SPiotr Jasiukajtis	add	%o3,%i2,%i1
1866*25c28e83SPiotr Jasiukajtis	and	%l1,G5_CONST,%l1
1867*25c28e83SPiotr Jasiukajtis	and	%l2,G5_CONST,%l2
1868*25c28e83SPiotr Jasiukajtis	and	%l3,G5_CONST,%l3
1869*25c28e83SPiotr Jasiukajtis	and	%l4,G5_CONST,%l4
1870*25c28e83SPiotr Jasiukajtis	and	%l5,G5_CONST,%l5
1871*25c28e83SPiotr Jasiukajtis	and	%l6,G5_CONST,%l6
1872*25c28e83SPiotr Jasiukajtis	and	%l7,G5_CONST,%l7
1873*25c28e83SPiotr Jasiukajtis
1874*25c28e83SPiotr Jasiukajtis	subcc	%i0,7,%i0
1875*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.main_loop
1876*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
1877*25c28e83SPiotr Jasiukajtis	ba	.after_main_loop
1878*25c28e83SPiotr Jasiukajtis	nop
1879*25c28e83SPiotr Jasiukajtis
1880*25c28e83SPiotr Jasiukajtis	.align	16
1881*25c28e83SPiotr Jasiukajtis.spec7:
1882*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o5
1883*25c28e83SPiotr Jasiukajtis	cmp	%l7,%o5
1884*25c28e83SPiotr Jasiukajtis	bge,pn	%icc,1f
1885*25c28e83SPiotr Jasiukajtis	nop
1886*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc0,%f14,%f3
1887*25c28e83SPiotr Jasiukajtis	fcmpes	%fcc1,%f14,THRESHOLDL
1888*25c28e83SPiotr Jasiukajtis	fbl,a,pn	%fcc0,1f		! if ( X < 0.0f )
1889*25c28e83SPiotr Jasiukajtis	fstod	%f14,%f54			! (7) y = (double) X
1890*25c28e83SPiotr Jasiukajtis	fbl,a,pt	%fcc1,.spec7_cont	! if ( X < THRESHOLDL )
1891*25c28e83SPiotr Jasiukajtis	fstod	%f14,%f54			! (7) y = (double) X
1892*25c28e83SPiotr Jasiukajtis1:
1893*25c28e83SPiotr Jasiukajtis	fdtoi	%f40,%f16
1894*25c28e83SPiotr Jasiukajtis	st	%f16,[%fp+tmp0]
1895*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f48,%f48
1896*25c28e83SPiotr Jasiukajtis
1897*25c28e83SPiotr Jasiukajtis	fdtoi	%f42,%f2
1898*25c28e83SPiotr Jasiukajtis	st	%f2,[%fp+tmp1]
1899*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f50,%f50
1900*25c28e83SPiotr Jasiukajtis
1901*25c28e83SPiotr Jasiukajtis	fdtoi	%f44,%f4
1902*25c28e83SPiotr Jasiukajtis	st	%f4,[%fp+tmp2]
1903*25c28e83SPiotr Jasiukajtis	fmuld	F62_K256ONLN2,%f52,%f52
1904*25c28e83SPiotr Jasiukajtis
1905*25c28e83SPiotr Jasiukajtis	fdtoi	%f46,%f6
1906*25c28e83SPiotr Jasiukajtis	st	%f6,[%fp+tmp3]
1907*25c28e83SPiotr Jasiukajtis
1908*25c28e83SPiotr Jasiukajtis	fdtoi	%f48,%f8
1909*25c28e83SPiotr Jasiukajtis	st	%f8,[%fp+tmp4]
1910*25c28e83SPiotr Jasiukajtis
1911*25c28e83SPiotr Jasiukajtis	fdtoi	%f50,%f10
1912*25c28e83SPiotr Jasiukajtis	st	%f10,[%fp+tmp5]
1913*25c28e83SPiotr Jasiukajtis
1914*25c28e83SPiotr Jasiukajtis	fdtoi	%f52,%f12
1915*25c28e83SPiotr Jasiukajtis	st	%f12,[%fp+tmp6]
1916*25c28e83SPiotr Jasiukajtis
1917*25c28e83SPiotr Jasiukajtis	fitod	%f16,%f34
1918*25c28e83SPiotr Jasiukajtis	fpackfix	%f16,%f16
1919*25c28e83SPiotr Jasiukajtis
1920*25c28e83SPiotr Jasiukajtis	fitod	%f2,%f18
1921*25c28e83SPiotr Jasiukajtis	fpackfix	%f2,%f2
1922*25c28e83SPiotr Jasiukajtis
1923*25c28e83SPiotr Jasiukajtis	fitod	%f4,%f20
1924*25c28e83SPiotr Jasiukajtis	fpackfix	%f4,%f4
1925*25c28e83SPiotr Jasiukajtis
1926*25c28e83SPiotr Jasiukajtis	fitod	%f6,%f22
1927*25c28e83SPiotr Jasiukajtis	fpackfix	%f6,%f6
1928*25c28e83SPiotr Jasiukajtis
1929*25c28e83SPiotr Jasiukajtis	fitod	%f8,%f24
1930*25c28e83SPiotr Jasiukajtis	fpackfix	%f8,%f8
1931*25c28e83SPiotr Jasiukajtis
1932*25c28e83SPiotr Jasiukajtis	fitod	%f10,%f26
1933*25c28e83SPiotr Jasiukajtis	fpackfix	%f10,%f10
1934*25c28e83SPiotr Jasiukajtis
1935*25c28e83SPiotr Jasiukajtis	fitod	%f12,%f28
1936*25c28e83SPiotr Jasiukajtis	fpackfix	%f12,%f12
1937*25c28e83SPiotr Jasiukajtis
1938*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp0],%o0
1939*25c28e83SPiotr Jasiukajtis	fsubd	%f40,%f34,%f40
1940*25c28e83SPiotr Jasiukajtis
1941*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp1],%o1
1942*25c28e83SPiotr Jasiukajtis	fsubd	%f42,%f18,%f42
1943*25c28e83SPiotr Jasiukajtis
1944*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp2],%o2
1945*25c28e83SPiotr Jasiukajtis	and	%o0,255,%o0
1946*25c28e83SPiotr Jasiukajtis	fsubd	%f44,%f20,%f44
1947*25c28e83SPiotr Jasiukajtis
1948*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp3],%o3
1949*25c28e83SPiotr Jasiukajtis	and	%o1,255,%o1
1950*25c28e83SPiotr Jasiukajtis	fsubd	%f46,%f22,%f46
1951*25c28e83SPiotr Jasiukajtis
1952*25c28e83SPiotr Jasiukajtis	sll	%o0,3,%o0
1953*25c28e83SPiotr Jasiukajtis	sll	%o1,3,%o1
1954*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f40,%f34
1955*25c28e83SPiotr Jasiukajtis	fsubd	%f48,%f24,%f48
1956*25c28e83SPiotr Jasiukajtis
1957*25c28e83SPiotr Jasiukajtis	and	%o2,255,%o2
1958*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f42,%f18
1959*25c28e83SPiotr Jasiukajtis	fsubd	%f50,%f26,%f50
1960*25c28e83SPiotr Jasiukajtis
1961*25c28e83SPiotr Jasiukajtis	sll	%o2,3,%o2
1962*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f44,%f20
1963*25c28e83SPiotr Jasiukajtis	fsubd	%f52,%f28,%f52
1964*25c28e83SPiotr Jasiukajtis
1965*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp4],%o4
1966*25c28e83SPiotr Jasiukajtis	and	%o3,255,%o3
1967*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f46,%f22
1968*25c28e83SPiotr Jasiukajtis
1969*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp5],%o5
1970*25c28e83SPiotr Jasiukajtis	sll	%o3,3,%o3
1971*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f48,%f24
1972*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f34,%f34
1973*25c28e83SPiotr Jasiukajtis
1974*25c28e83SPiotr Jasiukajtis	ld	[%fp+tmp6],%o7
1975*25c28e83SPiotr Jasiukajtis	and	%o4,255,%o4
1976*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f50,%f26
1977*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f18,%f18
1978*25c28e83SPiotr Jasiukajtis
1979*25c28e83SPiotr Jasiukajtis	and	%o5,255,%o5
1980*25c28e83SPiotr Jasiukajtis	fmuld	F60_KA2,%f52,%f28
1981*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f20,%f20
1982*25c28e83SPiotr Jasiukajtis
1983*25c28e83SPiotr Jasiukajtis	sll	%o5,3,%o5
1984*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f22,%f22
1985*25c28e83SPiotr Jasiukajtis
1986*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
1987*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o0],%f34
1988*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f24,%f24
1989*25c28e83SPiotr Jasiukajtis
1990*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
1991*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o1],%f18
1992*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f26,%f26
1993*25c28e83SPiotr Jasiukajtis
1994*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44
1995*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o2],%f20
1996*25c28e83SPiotr Jasiukajtis	faddd	F58_KA1,%f28,%f28
1997*25c28e83SPiotr Jasiukajtis
1998*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f46
1999*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o3],%f22
2000*25c28e83SPiotr Jasiukajtis	sll	%o4,3,%o4
2001*25c28e83SPiotr Jasiukajtis
2002*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f48,%f48
2003*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o4],%f24
2004*25c28e83SPiotr Jasiukajtis	and	%o7,255,%o7
2005*25c28e83SPiotr Jasiukajtis	fpadd32 %f16,%f34,%f34
2006*25c28e83SPiotr Jasiukajtis
2007*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f50,%f50
2008*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o5],%f26
2009*25c28e83SPiotr Jasiukajtis	sll	%o7,3,%o7
2010*25c28e83SPiotr Jasiukajtis	fpadd32 %f2,%f18,%f18
2011*25c28e83SPiotr Jasiukajtis
2012*25c28e83SPiotr Jasiukajtis	fmuld	%f28,%f52,%f52
2013*25c28e83SPiotr Jasiukajtis	ldd	[G1_CONST_TBL+%o7],%f28
2014*25c28e83SPiotr Jasiukajtis	fpadd32 %f4,%f20,%f20
2015*25c28e83SPiotr Jasiukajtis
2016*25c28e83SPiotr Jasiukajtis	fpadd32 %f6,%f22,%f22
2017*25c28e83SPiotr Jasiukajtis
2018*25c28e83SPiotr Jasiukajtis	fpadd32 %f8,%f24,%f24
2019*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f40,%f40
2020*25c28e83SPiotr Jasiukajtis
2021*25c28e83SPiotr Jasiukajtis	fpadd32 %f10,%f26,%f26
2022*25c28e83SPiotr Jasiukajtis	fmuld	%f18,%f42,%f42
2023*25c28e83SPiotr Jasiukajtis
2024*25c28e83SPiotr Jasiukajtis	fpadd32 %f12,%f28,%f28
2025*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f44,%f44
2026*25c28e83SPiotr Jasiukajtis
2027*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f46
2028*25c28e83SPiotr Jasiukajtis
2029*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f48,%f48
2030*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f40,%f40
2031*25c28e83SPiotr Jasiukajtis
2032*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f50,%f50
2033*25c28e83SPiotr Jasiukajtis	faddd	%f18,%f42,%f42
2034*25c28e83SPiotr Jasiukajtis
2035*25c28e83SPiotr Jasiukajtis	fmuld	%f28,%f52,%f52
2036*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f44,%f44
2037*25c28e83SPiotr Jasiukajtis
2038*25c28e83SPiotr Jasiukajtis	faddd	%f22,%f46,%f46
2039*25c28e83SPiotr Jasiukajtis
2040*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f48
2041*25c28e83SPiotr Jasiukajtis
2042*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f50,%f50
2043*25c28e83SPiotr Jasiukajtis
2044*25c28e83SPiotr Jasiukajtis	faddd	%f28,%f52,%f52
2045*25c28e83SPiotr Jasiukajtis
2046*25c28e83SPiotr Jasiukajtis	fdtos	%f40,%f26
2047*25c28e83SPiotr Jasiukajtis	st	%f26,[%i3]
2048*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
2049*25c28e83SPiotr Jasiukajtis
2050*25c28e83SPiotr Jasiukajtis	fdtos	%f42,%f18
2051*25c28e83SPiotr Jasiukajtis	st	%f18,[%o4]
2052*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
2053*25c28e83SPiotr Jasiukajtis
2054*25c28e83SPiotr Jasiukajtis	fdtos	%f44,%f20
2055*25c28e83SPiotr Jasiukajtis	st	%f20,[%i3]
2056*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
2057*25c28e83SPiotr Jasiukajtis
2058*25c28e83SPiotr Jasiukajtis	fdtos	%f46,%f22
2059*25c28e83SPiotr Jasiukajtis	st	%f22,[%o4]
2060*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
2061*25c28e83SPiotr Jasiukajtis
2062*25c28e83SPiotr Jasiukajtis	fdtos	%f48,%f24
2063*25c28e83SPiotr Jasiukajtis	st	%f24,[%i3]
2064*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%o4
2065*25c28e83SPiotr Jasiukajtis
2066*25c28e83SPiotr Jasiukajtis	fdtos	%f50,%f26
2067*25c28e83SPiotr Jasiukajtis	st	%f26,[%o4]
2068*25c28e83SPiotr Jasiukajtis	add	%o4,%i4,%i3
2069*25c28e83SPiotr Jasiukajtis
2070*25c28e83SPiotr Jasiukajtis	fdtos	%f52,%f28
2071*25c28e83SPiotr Jasiukajtis	st	%f28,[%i3]
2072*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
2073*25c28e83SPiotr Jasiukajtis
2074*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7f800000),%o5
2075*25c28e83SPiotr Jasiukajtis	cmp	%l7,%o5
2076*25c28e83SPiotr Jasiukajtis	bl,pt	%icc,.spec7_out_of_range
2077*25c28e83SPiotr Jasiukajtis	sub	%i1,%i2,%o4
2078*25c28e83SPiotr Jasiukajtis
2079*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.spec7_inf
2080*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
2081*25c28e83SPiotr Jasiukajtis
2082*25c28e83SPiotr Jasiukajtis! NaN -> NaN
2083*25c28e83SPiotr Jasiukajtis
2084*25c28e83SPiotr Jasiukajtis	fmuls	%f14,%f14,%f14
2085*25c28e83SPiotr Jasiukajtis	ba	.spec7_exit
2086*25c28e83SPiotr Jasiukajtis	st	%f14,[%i3]
2087*25c28e83SPiotr Jasiukajtis
2088*25c28e83SPiotr Jasiukajtis.spec7_inf:
2089*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
2090*25c28e83SPiotr Jasiukajtis	andcc	%l0,4,%l0
2091*25c28e83SPiotr Jasiukajtis	be,a,pn	%icc,.spec7_exit
2092*25c28e83SPiotr Jasiukajtis	st	%f14,[%i3]
2093*25c28e83SPiotr Jasiukajtis
2094*25c28e83SPiotr Jasiukajtis	ba	.spec7_exit
2095*25c28e83SPiotr Jasiukajtis	st	%f3,[%i3]
2096*25c28e83SPiotr Jasiukajtis
2097*25c28e83SPiotr Jasiukajtis.spec7_out_of_range:
2098*25c28e83SPiotr Jasiukajtis	ld	[%o4],%l0
2099*25c28e83SPiotr Jasiukajtis	srl	%l0,29,%l0
2100*25c28e83SPiotr Jasiukajtis	and	%l0,4,%l0
2101*25c28e83SPiotr Jasiukajtis	add	%l0,2048,%l0
2102*25c28e83SPiotr Jasiukajtis	ld	[G1_CONST_TBL+%l0],%f2
2103*25c28e83SPiotr Jasiukajtis	fmuls	%f2,%f2,%f2
2104*25c28e83SPiotr Jasiukajtis	st	%f2,[%i3]
2105*25c28e83SPiotr Jasiukajtis
2106*25c28e83SPiotr Jasiukajtis.spec7_exit:
2107*25c28e83SPiotr Jasiukajtis	subcc	%i0,8,%i0
2108*25c28e83SPiotr Jasiukajtis	bpos,pt	%icc,.main_loop_preload
2109*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
2110*25c28e83SPiotr Jasiukajtis
2111*25c28e83SPiotr Jasiukajtis	ba	.tail
2112*25c28e83SPiotr Jasiukajtis	nop
2113*25c28e83SPiotr Jasiukajtis	SET_SIZE(__vexpf)
2114*25c28e83SPiotr Jasiukajtis
2115