xref: /titanic_41/usr/src/lib/libmvec/common/vis/__vatan2.S (revision 5b2ba9d3d1e04dde804c89e9879f7dfc9bcebf61)
1*5b2ba9d3SPiotr Jasiukajtis/*
2*5b2ba9d3SPiotr Jasiukajtis * CDDL HEADER START
3*5b2ba9d3SPiotr Jasiukajtis *
4*5b2ba9d3SPiotr Jasiukajtis * The contents of this file are subject to the terms of the
5*5b2ba9d3SPiotr Jasiukajtis * Common Development and Distribution License (the "License").
6*5b2ba9d3SPiotr Jasiukajtis * You may not use this file except in compliance with the License.
7*5b2ba9d3SPiotr Jasiukajtis *
8*5b2ba9d3SPiotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*5b2ba9d3SPiotr Jasiukajtis * or http://www.opensolaris.org/os/licensing.
10*5b2ba9d3SPiotr Jasiukajtis * See the License for the specific language governing permissions
11*5b2ba9d3SPiotr Jasiukajtis * and limitations under the License.
12*5b2ba9d3SPiotr Jasiukajtis *
13*5b2ba9d3SPiotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each
14*5b2ba9d3SPiotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*5b2ba9d3SPiotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the
16*5b2ba9d3SPiotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying
17*5b2ba9d3SPiotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner]
18*5b2ba9d3SPiotr Jasiukajtis *
19*5b2ba9d3SPiotr Jasiukajtis * CDDL HEADER END
20*5b2ba9d3SPiotr Jasiukajtis */
21*5b2ba9d3SPiotr Jasiukajtis/*
22*5b2ba9d3SPiotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
23*5b2ba9d3SPiotr Jasiukajtis */
24*5b2ba9d3SPiotr Jasiukajtis/*
25*5b2ba9d3SPiotr Jasiukajtis * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
26*5b2ba9d3SPiotr Jasiukajtis * Use is subject to license terms.
27*5b2ba9d3SPiotr Jasiukajtis */
28*5b2ba9d3SPiotr Jasiukajtis
29*5b2ba9d3SPiotr Jasiukajtis	.file	"__vatan2.S"
30*5b2ba9d3SPiotr Jasiukajtis
31*5b2ba9d3SPiotr Jasiukajtis#include "libm.h"
32*5b2ba9d3SPiotr Jasiukajtis
33*5b2ba9d3SPiotr Jasiukajtis	RO_DATA
34*5b2ba9d3SPiotr Jasiukajtis	.align	64
35*5b2ba9d3SPiotr Jasiukajtisconstants:
36*5b2ba9d3SPiotr Jasiukajtis	.word	0x3ff921fb,0x54442d18	! pio2
37*5b2ba9d3SPiotr Jasiukajtis	.word	0x3c91a626,0x33145c07	! pio2_lo
38*5b2ba9d3SPiotr Jasiukajtis	.word	0xbfd55555,0x555554ee	! p1
39*5b2ba9d3SPiotr Jasiukajtis	.word	0x3fc99999,0x997a1559	! p2
40*5b2ba9d3SPiotr Jasiukajtis	.word	0xbfc24923,0x158dfe02	! p3
41*5b2ba9d3SPiotr Jasiukajtis	.word	0x3fbc639d,0x0ed1347b	! p4
42*5b2ba9d3SPiotr Jasiukajtis	.word	0xffffffff,0x00000000	! mask
43*5b2ba9d3SPiotr Jasiukajtis	.word	0x3fc00000,0x00000000	! twom3
44*5b2ba9d3SPiotr Jasiukajtis	.word	0x46d00000,0x00000000	! two110
45*5b2ba9d3SPiotr Jasiukajtis	.word	0x3fe921fb,0x54442d18	! pio4
46*5b2ba9d3SPiotr Jasiukajtis
47*5b2ba9d3SPiotr Jasiukajtis! local storage indices
48*5b2ba9d3SPiotr Jasiukajtis
49*5b2ba9d3SPiotr Jasiukajtis#define xscl		STACK_BIAS-0x8
50*5b2ba9d3SPiotr Jasiukajtis#define yscl		STACK_BIAS-0x10
51*5b2ba9d3SPiotr Jasiukajtis#define twom3		STACK_BIAS-0x18
52*5b2ba9d3SPiotr Jasiukajtis#define two110		STACK_BIAS-0x20
53*5b2ba9d3SPiotr Jasiukajtis#define pio4		STACK_BIAS-0x28
54*5b2ba9d3SPiotr Jasiukajtis#define junk		STACK_BIAS-0x30
55*5b2ba9d3SPiotr Jasiukajtis! sizeof temp storage - must be a multiple of 16 for V9
56*5b2ba9d3SPiotr Jasiukajtis#define tmps		0x30
57*5b2ba9d3SPiotr Jasiukajtis
58*5b2ba9d3SPiotr Jasiukajtis! register use
59*5b2ba9d3SPiotr Jasiukajtis
60*5b2ba9d3SPiotr Jasiukajtis! i0  n
61*5b2ba9d3SPiotr Jasiukajtis! i1  y
62*5b2ba9d3SPiotr Jasiukajtis! i2  stridey
63*5b2ba9d3SPiotr Jasiukajtis! i3  x
64*5b2ba9d3SPiotr Jasiukajtis! i4  stridex
65*5b2ba9d3SPiotr Jasiukajtis! i5  z
66*5b2ba9d3SPiotr Jasiukajtis
67*5b2ba9d3SPiotr Jasiukajtis! l0  k0
68*5b2ba9d3SPiotr Jasiukajtis! l1  k1
69*5b2ba9d3SPiotr Jasiukajtis! l2  k2
70*5b2ba9d3SPiotr Jasiukajtis! l3  hx
71*5b2ba9d3SPiotr Jasiukajtis! l4  pz0
72*5b2ba9d3SPiotr Jasiukajtis! l5  pz1
73*5b2ba9d3SPiotr Jasiukajtis! l6  pz2
74*5b2ba9d3SPiotr Jasiukajtis! l7  stridez
75*5b2ba9d3SPiotr Jasiukajtis
76*5b2ba9d3SPiotr Jasiukajtis! the following are 64-bit registers in both V8+ and V9
77*5b2ba9d3SPiotr Jasiukajtis
78*5b2ba9d3SPiotr Jasiukajtis! g1  __vlibm_TBL_atan2
79*5b2ba9d3SPiotr Jasiukajtis! g5
80*5b2ba9d3SPiotr Jasiukajtis
81*5b2ba9d3SPiotr Jasiukajtis! o0  hy
82*5b2ba9d3SPiotr Jasiukajtis! o1  0x00004000
83*5b2ba9d3SPiotr Jasiukajtis! o2  0x1420
84*5b2ba9d3SPiotr Jasiukajtis! o3  0x7fe00000
85*5b2ba9d3SPiotr Jasiukajtis! o4  0x03600000
86*5b2ba9d3SPiotr Jasiukajtis! o5  0x00100000
87*5b2ba9d3SPiotr Jasiukajtis! o7
88*5b2ba9d3SPiotr Jasiukajtis
89*5b2ba9d3SPiotr Jasiukajtis! f0  y0
90*5b2ba9d3SPiotr Jasiukajtis! f2  x0
91*5b2ba9d3SPiotr Jasiukajtis! f4  t0
92*5b2ba9d3SPiotr Jasiukajtis! f6  ah0
93*5b2ba9d3SPiotr Jasiukajtis! f8  al0
94*5b2ba9d3SPiotr Jasiukajtis! f10 y1
95*5b2ba9d3SPiotr Jasiukajtis! f12 x1
96*5b2ba9d3SPiotr Jasiukajtis! f14 t1
97*5b2ba9d3SPiotr Jasiukajtis! f16 ah1
98*5b2ba9d3SPiotr Jasiukajtis! f18 al1
99*5b2ba9d3SPiotr Jasiukajtis! f20 y2
100*5b2ba9d3SPiotr Jasiukajtis! f22 x2
101*5b2ba9d3SPiotr Jasiukajtis! f24 t2
102*5b2ba9d3SPiotr Jasiukajtis! f26 ah2
103*5b2ba9d3SPiotr Jasiukajtis! f28 al2
104*5b2ba9d3SPiotr Jasiukajtis! f30
105*5b2ba9d3SPiotr Jasiukajtis! f32
106*5b2ba9d3SPiotr Jasiukajtis! f34
107*5b2ba9d3SPiotr Jasiukajtis! f36 sx0
108*5b2ba9d3SPiotr Jasiukajtis! f38 sx1
109*5b2ba9d3SPiotr Jasiukajtis! f40 sx2
110*5b2ba9d3SPiotr Jasiukajtis! f42 sy0
111*5b2ba9d3SPiotr Jasiukajtis! f44 sy1
112*5b2ba9d3SPiotr Jasiukajtis! f46 sy2
113*5b2ba9d3SPiotr Jasiukajtis
114*5b2ba9d3SPiotr Jasiukajtis#define mask	%f48
115*5b2ba9d3SPiotr Jasiukajtis#define signbit	%f50
116*5b2ba9d3SPiotr Jasiukajtis#define pio2	%f52
117*5b2ba9d3SPiotr Jasiukajtis#define pio2_lo	%f54
118*5b2ba9d3SPiotr Jasiukajtis#define p1	%f56
119*5b2ba9d3SPiotr Jasiukajtis#define p2	%f58
120*5b2ba9d3SPiotr Jasiukajtis#define p3	%f60
121*5b2ba9d3SPiotr Jasiukajtis#define p4	%f62
122*5b2ba9d3SPiotr Jasiukajtis
123*5b2ba9d3SPiotr Jasiukajtis	ENTRY(__vatan2)
124*5b2ba9d3SPiotr Jasiukajtis	save	%sp,-SA(MINFRAME)-tmps,%sp
125*5b2ba9d3SPiotr Jasiukajtis	PIC_SETUP(l7)
126*5b2ba9d3SPiotr Jasiukajtis	PIC_SET(l7,constants,o0)
127*5b2ba9d3SPiotr Jasiukajtis	PIC_SET(l7,__vlibm_TBL_atan2,o1)
128*5b2ba9d3SPiotr Jasiukajtis	wr	%g0,0x82,%asi		! set %asi for non-faulting loads
129*5b2ba9d3SPiotr Jasiukajtis	mov	%o1, %g1
130*5b2ba9d3SPiotr Jasiukajtis#ifdef __sparcv9
131*5b2ba9d3SPiotr Jasiukajtis	ldx	[%fp+STACK_BIAS+0xb0],%l7
132*5b2ba9d3SPiotr Jasiukajtis#else
133*5b2ba9d3SPiotr Jasiukajtis	ld	[%fp+0x5c],%l7
134*5b2ba9d3SPiotr Jasiukajtis#endif
135*5b2ba9d3SPiotr Jasiukajtis	ldd	[%o0+0x00],pio2		! load/set up constants
136*5b2ba9d3SPiotr Jasiukajtis	ldd	[%o0+0x08],pio2_lo
137*5b2ba9d3SPiotr Jasiukajtis	ldd	[%o0+0x10],p1
138*5b2ba9d3SPiotr Jasiukajtis	ldd	[%o0+0x18],p2
139*5b2ba9d3SPiotr Jasiukajtis	ldd	[%o0+0x20],p3
140*5b2ba9d3SPiotr Jasiukajtis	ldd	[%o0+0x28],p4
141*5b2ba9d3SPiotr Jasiukajtis	ldd	[%o0+0x30],mask
142*5b2ba9d3SPiotr Jasiukajtis	fzero	signbit
143*5b2ba9d3SPiotr Jasiukajtis	fnegd	signbit,signbit
144*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x00004000),%o1
145*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x1420),%o2
146*5b2ba9d3SPiotr Jasiukajtis	or	%o2,%lo(0x1420),%o2
147*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x7fe00000),%o3
148*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x03600000),%o4
149*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x00100000),%o5
150*5b2ba9d3SPiotr Jasiukajtis	ldd	[%o0+0x38],%f0		! copy rarely used constants to stack
151*5b2ba9d3SPiotr Jasiukajtis	ldd	[%o0+0x40],%f2
152*5b2ba9d3SPiotr Jasiukajtis	ldd	[%o0+0x48],%f4
153*5b2ba9d3SPiotr Jasiukajtis	std	%f0,[%fp+twom3]
154*5b2ba9d3SPiotr Jasiukajtis	std	%f2,[%fp+two110]
155*5b2ba9d3SPiotr Jasiukajtis	std	%f4,[%fp+pio4]
156*5b2ba9d3SPiotr Jasiukajtis	sll	%i2,3,%i2		! scale strides
157*5b2ba9d3SPiotr Jasiukajtis	sll	%i4,3,%i4
158*5b2ba9d3SPiotr Jasiukajtis	sll	%l7,3,%l7
159*5b2ba9d3SPiotr Jasiukajtis	fzero	%f20			! loop prologue
160*5b2ba9d3SPiotr Jasiukajtis	fzero	%f22
161*5b2ba9d3SPiotr Jasiukajtis	fzero	%f24
162*5b2ba9d3SPiotr Jasiukajtis	fzero	%f26
163*5b2ba9d3SPiotr Jasiukajtis	fzero	%f46
164*5b2ba9d3SPiotr Jasiukajtis	add	%fp,junk,%l6
165*5b2ba9d3SPiotr Jasiukajtis	ld	[%i1],%f0		! *y
166*5b2ba9d3SPiotr Jasiukajtis	ld	[%i1+4],%f1
167*5b2ba9d3SPiotr Jasiukajtis	ld	[%i3],%f8		! *x
168*5b2ba9d3SPiotr Jasiukajtis	ld	[%i3+4],%f9
169*5b2ba9d3SPiotr Jasiukajtis	ld	[%i1],%o0		! hy
170*5b2ba9d3SPiotr Jasiukajtis	ba	.loop
171*5b2ba9d3SPiotr Jasiukajtis	ld	[%i3],%l3		! hx
172*5b2ba9d3SPiotr Jasiukajtis
173*5b2ba9d3SPiotr Jasiukajtis! 16-byte aligned
174*5b2ba9d3SPiotr Jasiukajtis	.align	16
175*5b2ba9d3SPiotr Jasiukajtis.loop:
176*5b2ba9d3SPiotr Jasiukajtis	fabsd	%f0,%f4
177*5b2ba9d3SPiotr Jasiukajtis	mov	%i5,%l4
178*5b2ba9d3SPiotr Jasiukajtis	add	%i1,%i2,%i1		! y += stridey
179*5b2ba9d3SPiotr Jasiukajtis
180*5b2ba9d3SPiotr Jasiukajtis	fabsd	%f8,%f2
181*5b2ba9d3SPiotr Jasiukajtis	add	%i3,%i4,%i3		! x += stridex
182*5b2ba9d3SPiotr Jasiukajtis	add	%i5,%l7,%i5		! z += stridez
183*5b2ba9d3SPiotr Jasiukajtis
184*5b2ba9d3SPiotr Jasiukajtis	fand	%f0,signbit,%f42
185*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x80000000),%g5
186*5b2ba9d3SPiotr Jasiukajtis
187*5b2ba9d3SPiotr Jasiukajtis	fand	%f8,signbit,%f36
188*5b2ba9d3SPiotr Jasiukajtis	andn	%o0,%g5,%o0
189*5b2ba9d3SPiotr Jasiukajtis	andn	%l3,%g5,%l3
190*5b2ba9d3SPiotr Jasiukajtis
191*5b2ba9d3SPiotr Jasiukajtis	fcmpd	%fcc0,%f4,%f2
192*5b2ba9d3SPiotr Jasiukajtis
193*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f4,%f0
194*5b2ba9d3SPiotr Jasiukajtis
195*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc0,%f2,%f0		! swap if |y| > |x|
196*5b2ba9d3SPiotr Jasiukajtis
197*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc0,%f4,%f2
198*5b2ba9d3SPiotr Jasiukajtis	mov	%o0,%o7
199*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1]%asi,%f10		! preload next argument
200*5b2ba9d3SPiotr Jasiukajtis
201*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f26,%f20,%f26
202*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1+4]%asi,%f11
203*5b2ba9d3SPiotr Jasiukajtis
204*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f22,%f24,%f22
205*5b2ba9d3SPiotr Jasiukajtis	movg	%fcc0,%l3,%o0
206*5b2ba9d3SPiotr Jasiukajtis
207*5b2ba9d3SPiotr Jasiukajtis	movg	%fcc0,%o7,%l3
208*5b2ba9d3SPiotr Jasiukajtis
209*5b2ba9d3SPiotr Jasiukajtis	fbu,pn	%fcc0,.nan0		! if x or y is nan
210*5b2ba9d3SPiotr Jasiukajtis! delay slot
211*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%f18
212*5b2ba9d3SPiotr Jasiukajtis
213*5b2ba9d3SPiotr Jasiukajtis	sub	%l3,%o0,%l0		! hx - hy
214*5b2ba9d3SPiotr Jasiukajtis	sub	%l3,%o3,%g5
215*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f10,%f14
216*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3+4]%asi,%f19
217*5b2ba9d3SPiotr Jasiukajtis
218*5b2ba9d3SPiotr Jasiukajtis	sub	%l0,%o4,%o7
219*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f22,%f26,%f26
220*5b2ba9d3SPiotr Jasiukajtis
221*5b2ba9d3SPiotr Jasiukajtis	andcc	%g5,%o7,%g0
222*5b2ba9d3SPiotr Jasiukajtis	bge,pn	%icc,.big0		! if |x| or |x/y| is big
223*5b2ba9d3SPiotr Jasiukajtis! delay slot
224*5b2ba9d3SPiotr Jasiukajtis	nop
225*5b2ba9d3SPiotr Jasiukajtis
226*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f18,%f12
227*5b2ba9d3SPiotr Jasiukajtis	cmp	%o0,%o5
228*5b2ba9d3SPiotr Jasiukajtis	bl,pn	%icc,.small0		! if |y| is small
229*5b2ba9d3SPiotr Jasiukajtis! delay slot
230*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
231*5b2ba9d3SPiotr Jasiukajtis
232*5b2ba9d3SPiotr Jasiukajtis	add	%l0,%o1,%l0		! k
233*5b2ba9d3SPiotr Jasiukajtis	addcc	%i0,-1,%i0
234*5b2ba9d3SPiotr Jasiukajtis	ble,pn	%icc,.last1
235*5b2ba9d3SPiotr Jasiukajtis! delay slot
236*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
237*5b2ba9d3SPiotr Jasiukajtis
238*5b2ba9d3SPiotr Jasiukajtis.cont1:
239*5b2ba9d3SPiotr Jasiukajtis	srl	%l0,10,%l0
240*5b2ba9d3SPiotr Jasiukajtis	 mov	%i5,%l5
241*5b2ba9d3SPiotr Jasiukajtis	  fxor	%f26,%f46,%f26
242*5b2ba9d3SPiotr Jasiukajtis	  st	%f26,[%l6]
243*5b2ba9d3SPiotr Jasiukajtis
244*5b2ba9d3SPiotr Jasiukajtis	 fand	%f10,signbit,%f44
245*5b2ba9d3SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
246*5b2ba9d3SPiotr Jasiukajtis	 add	%i1,%i2,%i1
247*5b2ba9d3SPiotr Jasiukajtis	  st	%f27,[%l6+4]
248*5b2ba9d3SPiotr Jasiukajtis
249*5b2ba9d3SPiotr Jasiukajtis	 fand	%f18,signbit,%f38
250*5b2ba9d3SPiotr Jasiukajtis	cmp	%l0,%o2
251*5b2ba9d3SPiotr Jasiukajtis	movg	%icc,%o2,%l0
252*5b2ba9d3SPiotr Jasiukajtis
253*5b2ba9d3SPiotr Jasiukajtis	 fcmpd	%fcc1,%f14,%f12
254*5b2ba9d3SPiotr Jasiukajtis	 add	%i3,%i4,%i3
255*5b2ba9d3SPiotr Jasiukajtis	 add	%i5,%l7,%i5
256*5b2ba9d3SPiotr Jasiukajtis
257*5b2ba9d3SPiotr Jasiukajtis	 fmovd	%f14,%f10
258*5b2ba9d3SPiotr Jasiukajtis	add	%l0,%g1,%l0
259*5b2ba9d3SPiotr Jasiukajtis	 sethi	%hi(0x80000000),%g5
260*5b2ba9d3SPiotr Jasiukajtis
261*5b2ba9d3SPiotr Jasiukajtis	ldd	[%l0+0x10],%f4
262*5b2ba9d3SPiotr Jasiukajtis	fand	%f2,mask,%f6
263*5b2ba9d3SPiotr Jasiukajtis	 andn	%o0,%g5,%o0
264*5b2ba9d3SPiotr Jasiukajtis	 andn	%l3,%g5,%l3
265*5b2ba9d3SPiotr Jasiukajtis
266*5b2ba9d3SPiotr Jasiukajtis	 fmovdg	%fcc1,%f12,%f10
267*5b2ba9d3SPiotr Jasiukajtis
268*5b2ba9d3SPiotr Jasiukajtis	 fmovdg	%fcc1,%f14,%f12
269*5b2ba9d3SPiotr Jasiukajtis	 mov	%o0,%o7
270*5b2ba9d3SPiotr Jasiukajtis	  lda	[%i1]%asi,%f20
271*5b2ba9d3SPiotr Jasiukajtis
272*5b2ba9d3SPiotr Jasiukajtis	fsubd	%f2,%f6,%f30
273*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f6,%f4,%f6
274*5b2ba9d3SPiotr Jasiukajtis	 movg	%fcc1,%l3,%o0
275*5b2ba9d3SPiotr Jasiukajtis
276*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f0,%f4,%f8
277*5b2ba9d3SPiotr Jasiukajtis	 movg	%fcc1,%o7,%l3
278*5b2ba9d3SPiotr Jasiukajtis
279*5b2ba9d3SPiotr Jasiukajtis	  lda	[%i1+4]%asi,%f21
280*5b2ba9d3SPiotr Jasiukajtis	 fbu,pn	%fcc1,.nan1
281*5b2ba9d3SPiotr Jasiukajtis! delay slot
282*5b2ba9d3SPiotr Jasiukajtis	 nop
283*5b2ba9d3SPiotr Jasiukajtis
284*5b2ba9d3SPiotr Jasiukajtis	  lda	[%i3]%asi,%f28
285*5b2ba9d3SPiotr Jasiukajtis	 sub	%l3,%o0,%l1
286*5b2ba9d3SPiotr Jasiukajtis	 sub	%l3,%o3,%g5
287*5b2ba9d3SPiotr Jasiukajtis
288*5b2ba9d3SPiotr Jasiukajtis	  lda	[%i3+4]%asi,%f29
289*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f30,%f4,%f30
290*5b2ba9d3SPiotr Jasiukajtis	fsubd	%f0,%f6,%f4
291*5b2ba9d3SPiotr Jasiukajtis	 sub	%l1,%o4,%o7
292*5b2ba9d3SPiotr Jasiukajtis
293*5b2ba9d3SPiotr Jasiukajtis	  fabsd	%f20,%f24
294*5b2ba9d3SPiotr Jasiukajtis	 andcc	%g5,%o7,%g0
295*5b2ba9d3SPiotr Jasiukajtis	 bge,pn	%icc,.big1
296*5b2ba9d3SPiotr Jasiukajtis! delay slot
297*5b2ba9d3SPiotr Jasiukajtis	 nop
298*5b2ba9d3SPiotr Jasiukajtis
299*5b2ba9d3SPiotr Jasiukajtis	faddd	%f2,%f8,%f8
300*5b2ba9d3SPiotr Jasiukajtis	 cmp	%o0,%o5
301*5b2ba9d3SPiotr Jasiukajtis	 bl,pn	%icc,.small1
302*5b2ba9d3SPiotr Jasiukajtis! delay slot
303*5b2ba9d3SPiotr Jasiukajtis	  lda	[%i1]%asi,%o0
304*5b2ba9d3SPiotr Jasiukajtis
305*5b2ba9d3SPiotr Jasiukajtis	  fabsd	%f28,%f22
306*5b2ba9d3SPiotr Jasiukajtis	 add	%l1,%o1,%l1
307*5b2ba9d3SPiotr Jasiukajtis	 addcc	%i0,-1,%i0
308*5b2ba9d3SPiotr Jasiukajtis	  lda	[%i3]%asi,%l3
309*5b2ba9d3SPiotr Jasiukajtis
310*5b2ba9d3SPiotr Jasiukajtis	fsubd	%f4,%f30,%f4
311*5b2ba9d3SPiotr Jasiukajtis	 srl	%l1,10,%l1
312*5b2ba9d3SPiotr Jasiukajtis	 ble,pn	%icc,.last2
313*5b2ba9d3SPiotr Jasiukajtis! delay slot
314*5b2ba9d3SPiotr Jasiukajtis	  mov	%i5,%l6
315*5b2ba9d3SPiotr Jasiukajtis
316*5b2ba9d3SPiotr Jasiukajtis.cont2:
317*5b2ba9d3SPiotr Jasiukajtis	  fand	%f20,signbit,%f46
318*5b2ba9d3SPiotr Jasiukajtis	 andn	%l1,0x1f,%l1
319*5b2ba9d3SPiotr Jasiukajtis	  add	%i1,%i2,%i1
320*5b2ba9d3SPiotr Jasiukajtis
321*5b2ba9d3SPiotr Jasiukajtis	  fand	%f28,signbit,%f40
322*5b2ba9d3SPiotr Jasiukajtis	 cmp	%l1,%o2
323*5b2ba9d3SPiotr Jasiukajtis	 movg	%icc,%o2,%l1
324*5b2ba9d3SPiotr Jasiukajtis
325*5b2ba9d3SPiotr Jasiukajtis	  fcmpd	%fcc2,%f24,%f22
326*5b2ba9d3SPiotr Jasiukajtis	  add	%i3,%i4,%i3
327*5b2ba9d3SPiotr Jasiukajtis	  add	%i5,%l7,%i5
328*5b2ba9d3SPiotr Jasiukajtis
329*5b2ba9d3SPiotr Jasiukajtis	fdivd	%f4,%f8,%f4
330*5b2ba9d3SPiotr Jasiukajtis	  fmovd	%f24,%f20
331*5b2ba9d3SPiotr Jasiukajtis	 add	%l1,%g1,%l1
332*5b2ba9d3SPiotr Jasiukajtis	  sethi	%hi(0x80000000),%g5
333*5b2ba9d3SPiotr Jasiukajtis
334*5b2ba9d3SPiotr Jasiukajtis	 ldd	[%l1+0x10],%f14
335*5b2ba9d3SPiotr Jasiukajtis	 fand	%f12,mask,%f16
336*5b2ba9d3SPiotr Jasiukajtis	  andn	%o0,%g5,%o0
337*5b2ba9d3SPiotr Jasiukajtis	  andn	%l3,%g5,%l3
338*5b2ba9d3SPiotr Jasiukajtis
339*5b2ba9d3SPiotr Jasiukajtis	  fmovdg %fcc2,%f22,%f20
340*5b2ba9d3SPiotr Jasiukajtis
341*5b2ba9d3SPiotr Jasiukajtis	  fmovdg %fcc2,%f24,%f22
342*5b2ba9d3SPiotr Jasiukajtis	  mov	%o0,%o7
343*5b2ba9d3SPiotr Jasiukajtis
344*5b2ba9d3SPiotr Jasiukajtis	 fsubd	%f12,%f16,%f32
345*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f16,%f14,%f16
346*5b2ba9d3SPiotr Jasiukajtis	  movg	%fcc2,%l3,%o0
347*5b2ba9d3SPiotr Jasiukajtis
348*5b2ba9d3SPiotr Jasiukajtis	fnegd	pio2_lo,%f8		! al
349*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f10,%f14,%f18
350*5b2ba9d3SPiotr Jasiukajtis	  movg	%fcc2,%o7,%l3
351*5b2ba9d3SPiotr Jasiukajtis
352*5b2ba9d3SPiotr Jasiukajtis	fzero	%f0
353*5b2ba9d3SPiotr Jasiukajtis	  fbu,pn %fcc2,.nan2
354*5b2ba9d3SPiotr Jasiukajtis! delay slot
355*5b2ba9d3SPiotr Jasiukajtis	  nop
356*5b2ba9d3SPiotr Jasiukajtis
357*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f0
358*5b2ba9d3SPiotr Jasiukajtis	  sub	%l3,%o0,%l2
359*5b2ba9d3SPiotr Jasiukajtis	  sub	%l3,%o3,%g5
360*5b2ba9d3SPiotr Jasiukajtis
361*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f32,%f14,%f32
362*5b2ba9d3SPiotr Jasiukajtis	 fsubd	%f10,%f16,%f14
363*5b2ba9d3SPiotr Jasiukajtis	  sub	%l2,%o4,%o7
364*5b2ba9d3SPiotr Jasiukajtis
365*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f12,%f18,%f18
366*5b2ba9d3SPiotr Jasiukajtis	  andcc	%g5,%o7,%g0
367*5b2ba9d3SPiotr Jasiukajtis	  bge,pn %icc,.big2
368*5b2ba9d3SPiotr Jasiukajtis! delay slot
369*5b2ba9d3SPiotr Jasiukajtis	  nop
370*5b2ba9d3SPiotr Jasiukajtis
371*5b2ba9d3SPiotr Jasiukajtis	fxor	%f36,%f0,%f36
372*5b2ba9d3SPiotr Jasiukajtis	  cmp	%o0,%o5
373*5b2ba9d3SPiotr Jasiukajtis	  bl,pn	%icc,.small2
374*5b2ba9d3SPiotr Jasiukajtis! delay slot
375*5b2ba9d3SPiotr Jasiukajtis	  nop
376*5b2ba9d3SPiotr Jasiukajtis
377*5b2ba9d3SPiotr Jasiukajtis.cont3:
378*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f8
379*5b2ba9d3SPiotr Jasiukajtis	  add	%l2,%o1,%l2
380*5b2ba9d3SPiotr Jasiukajtis
381*5b2ba9d3SPiotr Jasiukajtis	 fsubd	%f14,%f32,%f14
382*5b2ba9d3SPiotr Jasiukajtis	  srl	%l2,10,%l2
383*5b2ba9d3SPiotr Jasiukajtis
384*5b2ba9d3SPiotr Jasiukajtis	fxor	%f36,pio2_lo,%f30	! al
385*5b2ba9d3SPiotr Jasiukajtis	  andn	%l2,0x1f,%l2
386*5b2ba9d3SPiotr Jasiukajtis
387*5b2ba9d3SPiotr Jasiukajtis	fxor	%f36,pio2,%f0		! ah
388*5b2ba9d3SPiotr Jasiukajtis	  cmp	%l2,%o2
389*5b2ba9d3SPiotr Jasiukajtis	  movg	%icc,%o2,%l2
390*5b2ba9d3SPiotr Jasiukajtis
391*5b2ba9d3SPiotr Jasiukajtis	fxor	%f42,%f36,%f42		! sy
392*5b2ba9d3SPiotr Jasiukajtis
393*5b2ba9d3SPiotr Jasiukajtis	faddd	%f8,%f30,%f8
394*5b2ba9d3SPiotr Jasiukajtis	ldd	[%l0+0x8],%f30
395*5b2ba9d3SPiotr Jasiukajtis	  add	%l2,%g1,%l2
396*5b2ba9d3SPiotr Jasiukajtis
397*5b2ba9d3SPiotr Jasiukajtis	 fdivd	%f14,%f18,%f14
398*5b2ba9d3SPiotr Jasiukajtis	 fzero	%f10
399*5b2ba9d3SPiotr Jasiukajtis
400*5b2ba9d3SPiotr Jasiukajtis	  ldd	[%l2+0x10],%f24
401*5b2ba9d3SPiotr Jasiukajtis	  fand	%f22,mask,%f26
402*5b2ba9d3SPiotr Jasiukajtis
403*5b2ba9d3SPiotr Jasiukajtis	 fmovdg	%fcc1,signbit,%f10
404*5b2ba9d3SPiotr Jasiukajtis
405*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f4,%f4,%f36
406*5b2ba9d3SPiotr Jasiukajtis	faddd	%f8,%f30,%f8
407*5b2ba9d3SPiotr Jasiukajtis
408*5b2ba9d3SPiotr Jasiukajtis	  fsubd	%f22,%f26,%f34
409*5b2ba9d3SPiotr Jasiukajtis	  fmuld	%f26,%f24,%f26
410*5b2ba9d3SPiotr Jasiukajtis
411*5b2ba9d3SPiotr Jasiukajtis	  fmuld	%f20,%f24,%f28
412*5b2ba9d3SPiotr Jasiukajtis	 fxor	%f38,%f10,%f38
413*5b2ba9d3SPiotr Jasiukajtis
414*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f4,p3,%f6
415*5b2ba9d3SPiotr Jasiukajtis	 fnegd	pio2_lo,%f18
416*5b2ba9d3SPiotr Jasiukajtis
417*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f36,p2,%f2
418*5b2ba9d3SPiotr Jasiukajtis	 fmovdg	%fcc1,signbit,%f18
419*5b2ba9d3SPiotr Jasiukajtis
420*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f36,%f4,%f36
421*5b2ba9d3SPiotr Jasiukajtis	 fxor	%f38,pio2,%f10
422*5b2ba9d3SPiotr Jasiukajtis
423*5b2ba9d3SPiotr Jasiukajtis	  fmuld	%f34,%f24,%f34
424*5b2ba9d3SPiotr Jasiukajtis	  fsubd	%f20,%f26,%f24
425*5b2ba9d3SPiotr Jasiukajtis
426*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f22,%f28,%f28
427*5b2ba9d3SPiotr Jasiukajtis
428*5b2ba9d3SPiotr Jasiukajtis	faddd	%f2,p1,%f2
429*5b2ba9d3SPiotr Jasiukajtis
430*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f36,p4,%f30
431*5b2ba9d3SPiotr Jasiukajtis	 fxor	%f38,pio2_lo,%f32
432*5b2ba9d3SPiotr Jasiukajtis
433*5b2ba9d3SPiotr Jasiukajtis	  fsubd	%f24,%f34,%f24
434*5b2ba9d3SPiotr Jasiukajtis
435*5b2ba9d3SPiotr Jasiukajtis	 fxor	%f44,%f38,%f44
436*5b2ba9d3SPiotr Jasiukajtis
437*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f36,%f2,%f2
438*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f18,%f32,%f18
439*5b2ba9d3SPiotr Jasiukajtis	 ldd	[%l1+0x8],%f32
440*5b2ba9d3SPiotr Jasiukajtis
441*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f36,%f36,%f36
442*5b2ba9d3SPiotr Jasiukajtis	faddd	%f6,%f30,%f30
443*5b2ba9d3SPiotr Jasiukajtis
444*5b2ba9d3SPiotr Jasiukajtis	  fdivd	%f24,%f28,%f24
445*5b2ba9d3SPiotr Jasiukajtis	  fzero	%f20
446*5b2ba9d3SPiotr Jasiukajtis
447*5b2ba9d3SPiotr Jasiukajtis	  fmovdg %fcc2,signbit,%f20
448*5b2ba9d3SPiotr Jasiukajtis
449*5b2ba9d3SPiotr Jasiukajtis	faddd	%f2,%f8,%f2
450*5b2ba9d3SPiotr Jasiukajtis
451*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f14,%f14,%f38
452*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f18,%f32,%f18
453*5b2ba9d3SPiotr Jasiukajtis
454*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f36,%f30,%f36
455*5b2ba9d3SPiotr Jasiukajtis	  fxor	%f40,%f20,%f40
456*5b2ba9d3SPiotr Jasiukajtis
457*5b2ba9d3SPiotr Jasiukajtis	fnegd	pio2,%f6		! ah
458*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f14,p3,%f16
459*5b2ba9d3SPiotr Jasiukajtis
460*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f6
461*5b2ba9d3SPiotr Jasiukajtis
462*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f38,p2,%f12
463*5b2ba9d3SPiotr Jasiukajtis	  fnegd	pio2_lo,%f28
464*5b2ba9d3SPiotr Jasiukajtis
465*5b2ba9d3SPiotr Jasiukajtis	faddd	%f2,%f36,%f2
466*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f38,%f14,%f38
467*5b2ba9d3SPiotr Jasiukajtis
468*5b2ba9d3SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
469*5b2ba9d3SPiotr Jasiukajtis	ldd	[%l0],%f0
470*5b2ba9d3SPiotr Jasiukajtis
471*5b2ba9d3SPiotr Jasiukajtis	  fmovdg %fcc2,signbit,%f28
472*5b2ba9d3SPiotr Jasiukajtis
473*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f12,p1,%f12
474*5b2ba9d3SPiotr Jasiukajtis
475*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f38,p4,%f32
476*5b2ba9d3SPiotr Jasiukajtis	  fxor	%f40,pio2_lo,%f34
477*5b2ba9d3SPiotr Jasiukajtis
478*5b2ba9d3SPiotr Jasiukajtis	  fxor	%f40,pio2,%f20
479*5b2ba9d3SPiotr Jasiukajtis
480*5b2ba9d3SPiotr Jasiukajtis	faddd	%f2,%f4,%f2
481*5b2ba9d3SPiotr Jasiukajtis
482*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f38,%f12,%f12
483*5b2ba9d3SPiotr Jasiukajtis	  fxor	%f46,%f40,%f46
484*5b2ba9d3SPiotr Jasiukajtis
485*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f38,%f38,%f38
486*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f16,%f32,%f32
487*5b2ba9d3SPiotr Jasiukajtis
488*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f28,%f34,%f28
489*5b2ba9d3SPiotr Jasiukajtis	  ldd	[%l2+0x8],%f34
490*5b2ba9d3SPiotr Jasiukajtis
491*5b2ba9d3SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
492*5b2ba9d3SPiotr Jasiukajtis	lda	[%i1]%asi,%f0		! preload next argument
493*5b2ba9d3SPiotr Jasiukajtis
494*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f12,%f18,%f12
495*5b2ba9d3SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
496*5b2ba9d3SPiotr Jasiukajtis
497*5b2ba9d3SPiotr Jasiukajtis	  fmuld	%f24,%f24,%f40
498*5b2ba9d3SPiotr Jasiukajtis	lda	[%i3]%asi,%f8
499*5b2ba9d3SPiotr Jasiukajtis
500*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f38,%f32,%f38
501*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f28,%f34,%f28
502*5b2ba9d3SPiotr Jasiukajtis	lda	[%i3+4]%asi,%f9
503*5b2ba9d3SPiotr Jasiukajtis
504*5b2ba9d3SPiotr Jasiukajtis	 fnegd	pio2,%f16
505*5b2ba9d3SPiotr Jasiukajtis	  fmuld	%f24,p3,%f26
506*5b2ba9d3SPiotr Jasiukajtis	lda	[%i1]%asi,%o0
507*5b2ba9d3SPiotr Jasiukajtis
508*5b2ba9d3SPiotr Jasiukajtis	 fmovdg	%fcc1,signbit,%f16
509*5b2ba9d3SPiotr Jasiukajtis	lda	[%i3]%asi,%l3
510*5b2ba9d3SPiotr Jasiukajtis
511*5b2ba9d3SPiotr Jasiukajtis	  fmuld	%f40,p2,%f22
512*5b2ba9d3SPiotr Jasiukajtis
513*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f12,%f38,%f12
514*5b2ba9d3SPiotr Jasiukajtis	  fmuld	%f40,%f24,%f40
515*5b2ba9d3SPiotr Jasiukajtis
516*5b2ba9d3SPiotr Jasiukajtis	faddd	%f2,%f6,%f6
517*5b2ba9d3SPiotr Jasiukajtis
518*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f16,%f10,%f16
519*5b2ba9d3SPiotr Jasiukajtis	 ldd	[%l1],%f10
520*5b2ba9d3SPiotr Jasiukajtis
521*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f22,p1,%f22
522*5b2ba9d3SPiotr Jasiukajtis
523*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f12,%f14,%f12
524*5b2ba9d3SPiotr Jasiukajtis	  fmuld	%f40,p4,%f34
525*5b2ba9d3SPiotr Jasiukajtis
526*5b2ba9d3SPiotr Jasiukajtis	fxor	%f6,%f42,%f6
527*5b2ba9d3SPiotr Jasiukajtis	st	%f6,[%l4]
528*5b2ba9d3SPiotr Jasiukajtis
529*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f16,%f10,%f16
530*5b2ba9d3SPiotr Jasiukajtis	st	%f7,[%l4+4]
531*5b2ba9d3SPiotr Jasiukajtis
532*5b2ba9d3SPiotr Jasiukajtis	  fmuld	%f40,%f22,%f22
533*5b2ba9d3SPiotr Jasiukajtis
534*5b2ba9d3SPiotr Jasiukajtis	  fmuld	%f40,%f40,%f40
535*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f26,%f34,%f34
536*5b2ba9d3SPiotr Jasiukajtis
537*5b2ba9d3SPiotr Jasiukajtis	  fnegd	pio2,%f26
538*5b2ba9d3SPiotr Jasiukajtis
539*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f12,%f16,%f16
540*5b2ba9d3SPiotr Jasiukajtis
541*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f22,%f28,%f22
542*5b2ba9d3SPiotr Jasiukajtis
543*5b2ba9d3SPiotr Jasiukajtis	  fmuld	%f40,%f34,%f40
544*5b2ba9d3SPiotr Jasiukajtis	  fmovdg %fcc2,signbit,%f26
545*5b2ba9d3SPiotr Jasiukajtis
546*5b2ba9d3SPiotr Jasiukajtis! -
547*5b2ba9d3SPiotr Jasiukajtis
548*5b2ba9d3SPiotr Jasiukajtis	 fxor	%f16,%f44,%f16
549*5b2ba9d3SPiotr Jasiukajtis	 st	%f16,[%l5]
550*5b2ba9d3SPiotr Jasiukajtis
551*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f26,%f20,%f26
552*5b2ba9d3SPiotr Jasiukajtis	 st	%f17,[%l5+4]
553*5b2ba9d3SPiotr Jasiukajtis	addcc	%i0,-1,%i0
554*5b2ba9d3SPiotr Jasiukajtis
555*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f22,%f40,%f22
556*5b2ba9d3SPiotr Jasiukajtis	bg,pt	%icc,.loop
557*5b2ba9d3SPiotr Jasiukajtis! delay slot
558*5b2ba9d3SPiotr Jasiukajtis	  ldd	[%l2],%f20
559*5b2ba9d3SPiotr Jasiukajtis
560*5b2ba9d3SPiotr Jasiukajtis
561*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f26,%f20,%f26
562*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f22,%f24,%f22
563*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f22,%f26,%f26
564*5b2ba9d3SPiotr Jasiukajtis.done_from_special0:
565*5b2ba9d3SPiotr Jasiukajtis	  fxor	%f26,%f46,%f26
566*5b2ba9d3SPiotr Jasiukajtis	  st	%f26,[%l6]
567*5b2ba9d3SPiotr Jasiukajtis	  st	%f27,[%l6+4]
568*5b2ba9d3SPiotr Jasiukajtis	  ret
569*5b2ba9d3SPiotr Jasiukajtis	  restore
570*5b2ba9d3SPiotr Jasiukajtis
571*5b2ba9d3SPiotr Jasiukajtis
572*5b2ba9d3SPiotr Jasiukajtis
573*5b2ba9d3SPiotr Jasiukajtis	.align	16
574*5b2ba9d3SPiotr Jasiukajtis.last1:
575*5b2ba9d3SPiotr Jasiukajtis	fmovd	pio2,%f10		! set up dummy arguments
576*5b2ba9d3SPiotr Jasiukajtis	fmovd	pio2,%f18
577*5b2ba9d3SPiotr Jasiukajtis	fabsd	%f10,%f14
578*5b2ba9d3SPiotr Jasiukajtis	fabsd	%f18,%f12
579*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x3ff921fb),%o0
580*5b2ba9d3SPiotr Jasiukajtis	or	%o0,%lo(0x3ff921fb),%o0
581*5b2ba9d3SPiotr Jasiukajtis	mov	%o0,%l3
582*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont1
583*5b2ba9d3SPiotr Jasiukajtis! delay slot
584*5b2ba9d3SPiotr Jasiukajtis	add	%fp,junk,%i5
585*5b2ba9d3SPiotr Jasiukajtis
586*5b2ba9d3SPiotr Jasiukajtis
587*5b2ba9d3SPiotr Jasiukajtis
588*5b2ba9d3SPiotr Jasiukajtis	.align	16
589*5b2ba9d3SPiotr Jasiukajtis.last2:
590*5b2ba9d3SPiotr Jasiukajtis	fmovd	pio2,%f20
591*5b2ba9d3SPiotr Jasiukajtis	fmovd	pio2,%f28
592*5b2ba9d3SPiotr Jasiukajtis	fabsd	%f20,%f24
593*5b2ba9d3SPiotr Jasiukajtis	fabsd	%f28,%f22
594*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x3ff921fb),%o0
595*5b2ba9d3SPiotr Jasiukajtis	or	%o0,%lo(0x3ff921fb),%o0
596*5b2ba9d3SPiotr Jasiukajtis	mov	%o0,%l3
597*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont2
598*5b2ba9d3SPiotr Jasiukajtis! delay slot
599*5b2ba9d3SPiotr Jasiukajtis	add	%fp,junk,%l6
600*5b2ba9d3SPiotr Jasiukajtis
601*5b2ba9d3SPiotr Jasiukajtis
602*5b2ba9d3SPiotr Jasiukajtis
603*5b2ba9d3SPiotr Jasiukajtis	.align	16
604*5b2ba9d3SPiotr Jasiukajtis.nan0:
605*5b2ba9d3SPiotr Jasiukajtis	  faddd	%f22,%f26,%f26
606*5b2ba9d3SPiotr Jasiukajtis.nan0_from_special0:
607*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f10,%f14
608*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3+4]%asi,%f19
609*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f18,%f12
610*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
611*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
612*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.special0
613*5b2ba9d3SPiotr Jasiukajtis! delay slot
614*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f0,%f2,%f6
615*5b2ba9d3SPiotr Jasiukajtis
616*5b2ba9d3SPiotr Jasiukajtis
617*5b2ba9d3SPiotr Jasiukajtis	.align	16
618*5b2ba9d3SPiotr Jasiukajtis.big0:
619*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f18,%f12
620*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
621*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
622*5b2ba9d3SPiotr Jasiukajtis	cmp	%g5,%o5
623*5b2ba9d3SPiotr Jasiukajtis	bge,pn	%icc,.return_ah0	! if hx >= 0x7ff00000
624*5b2ba9d3SPiotr Jasiukajtis! delay slot
625*5b2ba9d3SPiotr Jasiukajtis	nop
626*5b2ba9d3SPiotr Jasiukajtis	cmp	%l0,%o4
627*5b2ba9d3SPiotr Jasiukajtis	bge,pn	%icc,1f			! if hx - hy >= 0x03600000
628*5b2ba9d3SPiotr Jasiukajtis! delay slot
629*5b2ba9d3SPiotr Jasiukajtis	nop
630*5b2ba9d3SPiotr Jasiukajtis	ldd	[%fp+twom3],%f6
631*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f0,%f6,%f0
632*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f2,%f6,%f2
633*5b2ba9d3SPiotr Jasiukajtis	add	%l0,%o1,%l0
634*5b2ba9d3SPiotr Jasiukajtis	addcc	%i0,-1,%i0
635*5b2ba9d3SPiotr Jasiukajtis	ble,pn	%icc,.last1
636*5b2ba9d3SPiotr Jasiukajtis! delay slot
637*5b2ba9d3SPiotr Jasiukajtis	nop
638*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont1
639*5b2ba9d3SPiotr Jasiukajtis! delay slot
640*5b2ba9d3SPiotr Jasiukajtis	nop
641*5b2ba9d3SPiotr Jasiukajtis1:
642*5b2ba9d3SPiotr Jasiukajtis	fbg,pn	%fcc0,.return_ah0
643*5b2ba9d3SPiotr Jasiukajtis! delay slot
644*5b2ba9d3SPiotr Jasiukajtis	nop
645*5b2ba9d3SPiotr Jasiukajtis	fcmpd	%fcc3,%f8,signbit
646*5b2ba9d3SPiotr Jasiukajtis	fbl,pn	%fcc3,.return_ah0
647*5b2ba9d3SPiotr Jasiukajtis! delay slot
648*5b2ba9d3SPiotr Jasiukajtis	nop
649*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.special0
650*5b2ba9d3SPiotr Jasiukajtis! delay slot
651*5b2ba9d3SPiotr Jasiukajtis	fdivd	%f0,%f2,%f6
652*5b2ba9d3SPiotr Jasiukajtis
653*5b2ba9d3SPiotr Jasiukajtis
654*5b2ba9d3SPiotr Jasiukajtis	.align	16
655*5b2ba9d3SPiotr Jasiukajtis.small0:
656*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
657*5b2ba9d3SPiotr Jasiukajtis	fcmpd	%fcc3,%f0,signbit
658*5b2ba9d3SPiotr Jasiukajtis	fbe,pt	%fcc3,.return_ah0
659*5b2ba9d3SPiotr Jasiukajtis! delay slot
660*5b2ba9d3SPiotr Jasiukajtis	nop
661*5b2ba9d3SPiotr Jasiukajtis	ldd	[%fp+two110],%f6
662*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f0,%f6,%f0
663*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f2,%f6,%f2
664*5b2ba9d3SPiotr Jasiukajtis	st	%f0,[%fp+yscl]
665*5b2ba9d3SPiotr Jasiukajtis	ld	[%fp+yscl],%o7
666*5b2ba9d3SPiotr Jasiukajtis	st	%f2,[%fp+xscl]
667*5b2ba9d3SPiotr Jasiukajtis	ld	[%fp+xscl],%l0
668*5b2ba9d3SPiotr Jasiukajtis	sub	%l0,%o7,%l0
669*5b2ba9d3SPiotr Jasiukajtis	add	%l0,%o1,%l0
670*5b2ba9d3SPiotr Jasiukajtis	addcc	%i0,-1,%i0
671*5b2ba9d3SPiotr Jasiukajtis	ble,pn	%icc,.last1
672*5b2ba9d3SPiotr Jasiukajtis! delay slot
673*5b2ba9d3SPiotr Jasiukajtis	nop
674*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont1
675*5b2ba9d3SPiotr Jasiukajtis! delay slot
676*5b2ba9d3SPiotr Jasiukajtis	nop
677*5b2ba9d3SPiotr Jasiukajtis
678*5b2ba9d3SPiotr Jasiukajtis
679*5b2ba9d3SPiotr Jasiukajtis	.align	16
680*5b2ba9d3SPiotr Jasiukajtis.return_ah0:
681*5b2ba9d3SPiotr Jasiukajtis	fzero	%f0
682*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f0
683*5b2ba9d3SPiotr Jasiukajtis	fxor	%f36,%f0,%f36
684*5b2ba9d3SPiotr Jasiukajtis	fxor	%f36,pio2,%f0
685*5b2ba9d3SPiotr Jasiukajtis	fxor	%f42,%f36,%f42
686*5b2ba9d3SPiotr Jasiukajtis	fnegd	pio2,%f6
687*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f6
688*5b2ba9d3SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
689*5b2ba9d3SPiotr Jasiukajtis	sub	%g5,%l0,%o7
690*5b2ba9d3SPiotr Jasiukajtis	cmp	%o7,%o5
691*5b2ba9d3SPiotr Jasiukajtis	bl,pt	%icc,1f			! if hy < 0x7ff00000
692*5b2ba9d3SPiotr Jasiukajtis! delay slot
693*5b2ba9d3SPiotr Jasiukajtis	nop
694*5b2ba9d3SPiotr Jasiukajtis	ldd	[%fp+pio4],%f0
695*5b2ba9d3SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
696*5b2ba9d3SPiotr Jasiukajtis1:
697*5b2ba9d3SPiotr Jasiukajtis	fdtoi	%f6,%f4
698*5b2ba9d3SPiotr Jasiukajtis.special0:
699*5b2ba9d3SPiotr Jasiukajtis	fxor	%f6,%f42,%f6
700*5b2ba9d3SPiotr Jasiukajtis	st	%f6,[%l4]
701*5b2ba9d3SPiotr Jasiukajtis	st	%f7,[%l4+4]
702*5b2ba9d3SPiotr Jasiukajtis	addcc	%i0,-1,%i0
703*5b2ba9d3SPiotr Jasiukajtis	ble,pn	%icc,.done_from_special0
704*5b2ba9d3SPiotr Jasiukajtis! delay slot
705*5b2ba9d3SPiotr Jasiukajtis	nop
706*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f10,%f0
707*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f18,%f8
708*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f14,%f4
709*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f12,%f2
710*5b2ba9d3SPiotr Jasiukajtis	mov	%i5,%l4
711*5b2ba9d3SPiotr Jasiukajtis	add	%i1,%i2,%i1
712*5b2ba9d3SPiotr Jasiukajtis	add	%i3,%i4,%i3
713*5b2ba9d3SPiotr Jasiukajtis	add	%i5,%l7,%i5
714*5b2ba9d3SPiotr Jasiukajtis	fand	%f0,signbit,%f42
715*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x80000000),%g5
716*5b2ba9d3SPiotr Jasiukajtis	fand	%f8,signbit,%f36
717*5b2ba9d3SPiotr Jasiukajtis	andn	%o0,%g5,%o0
718*5b2ba9d3SPiotr Jasiukajtis	andn	%l3,%g5,%l3
719*5b2ba9d3SPiotr Jasiukajtis	fcmpd	%fcc0,%f4,%f2
720*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f4,%f0
721*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc0,%f2,%f0
722*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc0,%f4,%f2
723*5b2ba9d3SPiotr Jasiukajtis	mov	%o0,%o7
724*5b2ba9d3SPiotr Jasiukajtis	movg	%fcc0,%l3,%o0
725*5b2ba9d3SPiotr Jasiukajtis	movg	%fcc0,%o7,%l3
726*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1]%asi,%f10
727*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1+4]%asi,%f11
728*5b2ba9d3SPiotr Jasiukajtis	fbu,pn	%fcc0,.nan0_from_special0
729*5b2ba9d3SPiotr Jasiukajtis! delay slot
730*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%f18
731*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f10,%f14
732*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3+4]%asi,%f19
733*5b2ba9d3SPiotr Jasiukajtis	sub	%l3,%o0,%l0
734*5b2ba9d3SPiotr Jasiukajtis	sub	%l3,%o3,%g5
735*5b2ba9d3SPiotr Jasiukajtis	sub	%l0,%o4,%o7
736*5b2ba9d3SPiotr Jasiukajtis	andcc	%g5,%o7,%g0
737*5b2ba9d3SPiotr Jasiukajtis	bge,pn	%icc,.big0
738*5b2ba9d3SPiotr Jasiukajtis! delay slot
739*5b2ba9d3SPiotr Jasiukajtis	nop
740*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f18,%f12
741*5b2ba9d3SPiotr Jasiukajtis	cmp	%o0,%o5
742*5b2ba9d3SPiotr Jasiukajtis	bl,pn	%icc,.small0
743*5b2ba9d3SPiotr Jasiukajtis! delay slot
744*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
745*5b2ba9d3SPiotr Jasiukajtis	add	%l0,%o1,%l0
746*5b2ba9d3SPiotr Jasiukajtis	addcc	%i0,-1,%i0
747*5b2ba9d3SPiotr Jasiukajtis	ble,pn	%icc,.last1
748*5b2ba9d3SPiotr Jasiukajtis! delay slot
749*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
750*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont1
751*5b2ba9d3SPiotr Jasiukajtis! delay slot
752*5b2ba9d3SPiotr Jasiukajtis	nop
753*5b2ba9d3SPiotr Jasiukajtis
754*5b2ba9d3SPiotr Jasiukajtis
755*5b2ba9d3SPiotr Jasiukajtis
756*5b2ba9d3SPiotr Jasiukajtis	.align	16
757*5b2ba9d3SPiotr Jasiukajtis.nan1:
758*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f30,%f4,%f30
759*5b2ba9d3SPiotr Jasiukajtis	fsubd	%f0,%f6,%f4
760*5b2ba9d3SPiotr Jasiukajtis	faddd	%f2,%f8,%f8
761*5b2ba9d3SPiotr Jasiukajtis	fsubd	%f4,%f30,%f4
762*5b2ba9d3SPiotr Jasiukajtis.nan1_from_special1:
763*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%f28
764*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3+4]%asi,%f29
765*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f20,%f24
766*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
767*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f28,%f22
768*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
769*5b2ba9d3SPiotr Jasiukajtis	 mov	%i5,%l6
770*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.special1
771*5b2ba9d3SPiotr Jasiukajtis! delay slot
772*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f10,%f12,%f16
773*5b2ba9d3SPiotr Jasiukajtis
774*5b2ba9d3SPiotr Jasiukajtis
775*5b2ba9d3SPiotr Jasiukajtis	.align	16
776*5b2ba9d3SPiotr Jasiukajtis.big1:
777*5b2ba9d3SPiotr Jasiukajtis	faddd	%f2,%f8,%f8
778*5b2ba9d3SPiotr Jasiukajtis	fsubd	%f4,%f30,%f4
779*5b2ba9d3SPiotr Jasiukajtis.big1_from_special1:
780*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
781*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f28,%f22
782*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
783*5b2ba9d3SPiotr Jasiukajtis	 mov	%i5,%l6
784*5b2ba9d3SPiotr Jasiukajtis	cmp	%g5,%o5
785*5b2ba9d3SPiotr Jasiukajtis	bge,pn	%icc,.return_ah1
786*5b2ba9d3SPiotr Jasiukajtis! delay slot
787*5b2ba9d3SPiotr Jasiukajtis	nop
788*5b2ba9d3SPiotr Jasiukajtis	cmp	%l1,%o4
789*5b2ba9d3SPiotr Jasiukajtis	bge,pn	%icc,1f
790*5b2ba9d3SPiotr Jasiukajtis! delay slot
791*5b2ba9d3SPiotr Jasiukajtis	nop
792*5b2ba9d3SPiotr Jasiukajtis	ldd	[%fp+twom3],%f16
793*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f10,%f16,%f10
794*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f12,%f16,%f12
795*5b2ba9d3SPiotr Jasiukajtis	add	%l1,%o1,%l1
796*5b2ba9d3SPiotr Jasiukajtis	srl	%l1,10,%l1
797*5b2ba9d3SPiotr Jasiukajtis	addcc	%i0,-1,%i0
798*5b2ba9d3SPiotr Jasiukajtis	ble,pn	%icc,.last2
799*5b2ba9d3SPiotr Jasiukajtis! delay slot
800*5b2ba9d3SPiotr Jasiukajtis	nop
801*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont2
802*5b2ba9d3SPiotr Jasiukajtis! delay slot
803*5b2ba9d3SPiotr Jasiukajtis	nop
804*5b2ba9d3SPiotr Jasiukajtis1:
805*5b2ba9d3SPiotr Jasiukajtis	fbg,pn	%fcc1,.return_ah1
806*5b2ba9d3SPiotr Jasiukajtis! delay slot
807*5b2ba9d3SPiotr Jasiukajtis	nop
808*5b2ba9d3SPiotr Jasiukajtis	fcmpd	%fcc3,%f18,signbit
809*5b2ba9d3SPiotr Jasiukajtis	fbl,pn	%fcc3,.return_ah1
810*5b2ba9d3SPiotr Jasiukajtis! delay slot
811*5b2ba9d3SPiotr Jasiukajtis	nop
812*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.special1
813*5b2ba9d3SPiotr Jasiukajtis! delay slot
814*5b2ba9d3SPiotr Jasiukajtis	fdivd	%f10,%f12,%f16
815*5b2ba9d3SPiotr Jasiukajtis
816*5b2ba9d3SPiotr Jasiukajtis
817*5b2ba9d3SPiotr Jasiukajtis	.align	16
818*5b2ba9d3SPiotr Jasiukajtis.small1:
819*5b2ba9d3SPiotr Jasiukajtis	fsubd	%f4,%f30,%f4
820*5b2ba9d3SPiotr Jasiukajtis.small1_from_special1:
821*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f28,%f22
822*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
823*5b2ba9d3SPiotr Jasiukajtis	 mov	%i5,%l6
824*5b2ba9d3SPiotr Jasiukajtis	fcmpd	%fcc3,%f10,signbit
825*5b2ba9d3SPiotr Jasiukajtis	fbe,pt	%fcc3,.return_ah1
826*5b2ba9d3SPiotr Jasiukajtis! delay slot
827*5b2ba9d3SPiotr Jasiukajtis	nop
828*5b2ba9d3SPiotr Jasiukajtis	ldd	[%fp+two110],%f16
829*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f10,%f16,%f10
830*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f12,%f16,%f12
831*5b2ba9d3SPiotr Jasiukajtis	st	%f10,[%fp+yscl]
832*5b2ba9d3SPiotr Jasiukajtis	ld	[%fp+yscl],%o7
833*5b2ba9d3SPiotr Jasiukajtis	st	%f12,[%fp+xscl]
834*5b2ba9d3SPiotr Jasiukajtis	ld	[%fp+xscl],%l1
835*5b2ba9d3SPiotr Jasiukajtis	sub	%l1,%o7,%l1
836*5b2ba9d3SPiotr Jasiukajtis	add	%l1,%o1,%l1
837*5b2ba9d3SPiotr Jasiukajtis	srl	%l1,10,%l1
838*5b2ba9d3SPiotr Jasiukajtis	addcc	%i0,-1,%i0
839*5b2ba9d3SPiotr Jasiukajtis	ble,pn	%icc,.last2
840*5b2ba9d3SPiotr Jasiukajtis! delay slot
841*5b2ba9d3SPiotr Jasiukajtis	nop
842*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont2
843*5b2ba9d3SPiotr Jasiukajtis! delay slot
844*5b2ba9d3SPiotr Jasiukajtis	nop
845*5b2ba9d3SPiotr Jasiukajtis
846*5b2ba9d3SPiotr Jasiukajtis
847*5b2ba9d3SPiotr Jasiukajtis	.align	16
848*5b2ba9d3SPiotr Jasiukajtis.return_ah1:
849*5b2ba9d3SPiotr Jasiukajtis	fzero	%f10
850*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc1,signbit,%f10
851*5b2ba9d3SPiotr Jasiukajtis	fxor	%f38,%f10,%f38
852*5b2ba9d3SPiotr Jasiukajtis	fxor	%f38,pio2,%f10
853*5b2ba9d3SPiotr Jasiukajtis	fxor	%f44,%f38,%f44
854*5b2ba9d3SPiotr Jasiukajtis	fnegd	pio2,%f16
855*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc1,signbit,%f16
856*5b2ba9d3SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
857*5b2ba9d3SPiotr Jasiukajtis	sub	%g5,%l1,%o7
858*5b2ba9d3SPiotr Jasiukajtis	cmp	%o7,%o5
859*5b2ba9d3SPiotr Jasiukajtis	bl,pt	%icc,1f
860*5b2ba9d3SPiotr Jasiukajtis! delay slot
861*5b2ba9d3SPiotr Jasiukajtis	nop
862*5b2ba9d3SPiotr Jasiukajtis	ldd	[%fp+pio4],%f10
863*5b2ba9d3SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
864*5b2ba9d3SPiotr Jasiukajtis1:
865*5b2ba9d3SPiotr Jasiukajtis	fdtoi	%f16,%f14
866*5b2ba9d3SPiotr Jasiukajtis.special1:
867*5b2ba9d3SPiotr Jasiukajtis	fxor	%f16,%f44,%f16
868*5b2ba9d3SPiotr Jasiukajtis	st	%f16,[%l5]
869*5b2ba9d3SPiotr Jasiukajtis	st	%f17,[%l5+4]
870*5b2ba9d3SPiotr Jasiukajtis	addcc	%i0,-1,%i0
871*5b2ba9d3SPiotr Jasiukajtis	bg,pn	%icc,1f
872*5b2ba9d3SPiotr Jasiukajtis! delay slot
873*5b2ba9d3SPiotr Jasiukajtis	nop
874*5b2ba9d3SPiotr Jasiukajtis	fmovd	pio2,%f20		! set up dummy argument
875*5b2ba9d3SPiotr Jasiukajtis	fmovd	pio2,%f28
876*5b2ba9d3SPiotr Jasiukajtis	fabsd	%f20,%f24
877*5b2ba9d3SPiotr Jasiukajtis	fabsd	%f28,%f22
878*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x3ff921fb),%o0
879*5b2ba9d3SPiotr Jasiukajtis	or	%o0,%lo(0x3ff921fb),%o0
880*5b2ba9d3SPiotr Jasiukajtis	mov	%o0,%l3
881*5b2ba9d3SPiotr Jasiukajtis	add	%fp,junk,%i5
882*5b2ba9d3SPiotr Jasiukajtis1:
883*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f20,%f10
884*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f28,%f18
885*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f24,%f14
886*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f22,%f12
887*5b2ba9d3SPiotr Jasiukajtis	mov	%i5,%l5
888*5b2ba9d3SPiotr Jasiukajtis	add	%i1,%i2,%i1
889*5b2ba9d3SPiotr Jasiukajtis	add	%i3,%i4,%i3
890*5b2ba9d3SPiotr Jasiukajtis	add	%i5,%l7,%i5
891*5b2ba9d3SPiotr Jasiukajtis	fand	%f10,signbit,%f44
892*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x80000000),%g5
893*5b2ba9d3SPiotr Jasiukajtis	fand	%f18,signbit,%f38
894*5b2ba9d3SPiotr Jasiukajtis	andn	%o0,%g5,%o0
895*5b2ba9d3SPiotr Jasiukajtis	andn	%l3,%g5,%l3
896*5b2ba9d3SPiotr Jasiukajtis	fcmpd	%fcc1,%f14,%f12
897*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f14,%f10
898*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc1,%f12,%f10
899*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc1,%f14,%f12
900*5b2ba9d3SPiotr Jasiukajtis	mov	%o0,%o7
901*5b2ba9d3SPiotr Jasiukajtis	movg	%fcc1,%l3,%o0
902*5b2ba9d3SPiotr Jasiukajtis	movg	%fcc1,%o7,%l3
903*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1]%asi,%f20
904*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1+4]%asi,%f21
905*5b2ba9d3SPiotr Jasiukajtis	fbu,pn	%fcc1,.nan1_from_special1
906*5b2ba9d3SPiotr Jasiukajtis! delay slot
907*5b2ba9d3SPiotr Jasiukajtis	nop
908*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%f28
909*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3+4]%asi,%f29
910*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f20,%f24
911*5b2ba9d3SPiotr Jasiukajtis	sub	%l3,%o0,%l1
912*5b2ba9d3SPiotr Jasiukajtis	sub	%l3,%o3,%g5
913*5b2ba9d3SPiotr Jasiukajtis	sub	%l1,%o4,%o7
914*5b2ba9d3SPiotr Jasiukajtis	andcc	%g5,%o7,%g0
915*5b2ba9d3SPiotr Jasiukajtis	bge,pn	%icc,.big1_from_special1
916*5b2ba9d3SPiotr Jasiukajtis! delay slot
917*5b2ba9d3SPiotr Jasiukajtis	nop
918*5b2ba9d3SPiotr Jasiukajtis	cmp	%o0,%o5
919*5b2ba9d3SPiotr Jasiukajtis	bl,pn	%icc,.small1_from_special1
920*5b2ba9d3SPiotr Jasiukajtis! delay slot
921*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
922*5b2ba9d3SPiotr Jasiukajtis	 fabsd	%f28,%f22
923*5b2ba9d3SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
924*5b2ba9d3SPiotr Jasiukajtis	add	%l1,%o1,%l1
925*5b2ba9d3SPiotr Jasiukajtis	srl	%l1,10,%l1
926*5b2ba9d3SPiotr Jasiukajtis	addcc	%i0,-1,%i0
927*5b2ba9d3SPiotr Jasiukajtis	ble,pn	%icc,.last2
928*5b2ba9d3SPiotr Jasiukajtis! delay slot
929*5b2ba9d3SPiotr Jasiukajtis	 mov	%i5,%l6
930*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont2
931*5b2ba9d3SPiotr Jasiukajtis! delay slot
932*5b2ba9d3SPiotr Jasiukajtis	nop
933*5b2ba9d3SPiotr Jasiukajtis
934*5b2ba9d3SPiotr Jasiukajtis
935*5b2ba9d3SPiotr Jasiukajtis
936*5b2ba9d3SPiotr Jasiukajtis	.align	16
937*5b2ba9d3SPiotr Jasiukajtis.nan2:
938*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f0
939*5b2ba9d3SPiotr Jasiukajtis	 fmuld	%f32,%f14,%f32
940*5b2ba9d3SPiotr Jasiukajtis	 fsubd	%f10,%f16,%f14
941*5b2ba9d3SPiotr Jasiukajtis	 faddd	%f12,%f18,%f18
942*5b2ba9d3SPiotr Jasiukajtis	fxor	%f36,%f0,%f36
943*5b2ba9d3SPiotr Jasiukajtis.nan2_from_special2:
944*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.special2
945*5b2ba9d3SPiotr Jasiukajtis! delay slot
946*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f20,%f22,%f26
947*5b2ba9d3SPiotr Jasiukajtis
948*5b2ba9d3SPiotr Jasiukajtis
949*5b2ba9d3SPiotr Jasiukajtis	.align	16
950*5b2ba9d3SPiotr Jasiukajtis.big2:
951*5b2ba9d3SPiotr Jasiukajtis	fxor	%f36,%f0,%f36
952*5b2ba9d3SPiotr Jasiukajtis.big2_from_special2:
953*5b2ba9d3SPiotr Jasiukajtis	cmp	%g5,%o5
954*5b2ba9d3SPiotr Jasiukajtis	bge,pn	%icc,.return_ah2
955*5b2ba9d3SPiotr Jasiukajtis! delay slot
956*5b2ba9d3SPiotr Jasiukajtis	nop
957*5b2ba9d3SPiotr Jasiukajtis	cmp	%l2,%o4
958*5b2ba9d3SPiotr Jasiukajtis	bge,pn	%icc,1f
959*5b2ba9d3SPiotr Jasiukajtis! delay slot
960*5b2ba9d3SPiotr Jasiukajtis	nop
961*5b2ba9d3SPiotr Jasiukajtis	ldd	[%fp+twom3],%f26
962*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f20,%f26,%f20
963*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f22,%f26,%f22
964*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont3
965*5b2ba9d3SPiotr Jasiukajtis! delay slot
966*5b2ba9d3SPiotr Jasiukajtis	nop
967*5b2ba9d3SPiotr Jasiukajtis1:
968*5b2ba9d3SPiotr Jasiukajtis	fbg,pn	%fcc2,.return_ah2
969*5b2ba9d3SPiotr Jasiukajtis! delay slot
970*5b2ba9d3SPiotr Jasiukajtis	nop
971*5b2ba9d3SPiotr Jasiukajtis	fcmpd	%fcc3,%f28,signbit
972*5b2ba9d3SPiotr Jasiukajtis	fbl,pn	%fcc3,.return_ah2
973*5b2ba9d3SPiotr Jasiukajtis! delay slot
974*5b2ba9d3SPiotr Jasiukajtis	nop
975*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.special2
976*5b2ba9d3SPiotr Jasiukajtis! delay slot
977*5b2ba9d3SPiotr Jasiukajtis	fdivd	%f20,%f22,%f26
978*5b2ba9d3SPiotr Jasiukajtis
979*5b2ba9d3SPiotr Jasiukajtis
980*5b2ba9d3SPiotr Jasiukajtis	.align	16
981*5b2ba9d3SPiotr Jasiukajtis.small2:
982*5b2ba9d3SPiotr Jasiukajtis	fcmpd	%fcc3,%f20,signbit
983*5b2ba9d3SPiotr Jasiukajtis	fbe,pt	%fcc3,.return_ah2
984*5b2ba9d3SPiotr Jasiukajtis! delay slot
985*5b2ba9d3SPiotr Jasiukajtis	nop
986*5b2ba9d3SPiotr Jasiukajtis	ldd	[%fp+two110],%f26
987*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f20,%f26,%f20
988*5b2ba9d3SPiotr Jasiukajtis	fmuld	%f22,%f26,%f22
989*5b2ba9d3SPiotr Jasiukajtis	st	%f20,[%fp+yscl]
990*5b2ba9d3SPiotr Jasiukajtis	ld	[%fp+yscl],%o7
991*5b2ba9d3SPiotr Jasiukajtis	st	%f22,[%fp+xscl]
992*5b2ba9d3SPiotr Jasiukajtis	ld	[%fp+xscl],%l2
993*5b2ba9d3SPiotr Jasiukajtis	sub	%l2,%o7,%l2
994*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont3
995*5b2ba9d3SPiotr Jasiukajtis! delay slot
996*5b2ba9d3SPiotr Jasiukajtis	nop
997*5b2ba9d3SPiotr Jasiukajtis
998*5b2ba9d3SPiotr Jasiukajtis
999*5b2ba9d3SPiotr Jasiukajtis	.align	16
1000*5b2ba9d3SPiotr Jasiukajtis.return_ah2:
1001*5b2ba9d3SPiotr Jasiukajtis	fzero	%f20
1002*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc2,signbit,%f20
1003*5b2ba9d3SPiotr Jasiukajtis	fxor	%f40,%f20,%f40
1004*5b2ba9d3SPiotr Jasiukajtis	fxor	%f40,pio2,%f20
1005*5b2ba9d3SPiotr Jasiukajtis	fxor	%f46,%f40,%f46
1006*5b2ba9d3SPiotr Jasiukajtis	fnegd	pio2,%f26
1007*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc2,signbit,%f26
1008*5b2ba9d3SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
1009*5b2ba9d3SPiotr Jasiukajtis	sub	%g5,%l2,%o7
1010*5b2ba9d3SPiotr Jasiukajtis	cmp	%o7,%o5
1011*5b2ba9d3SPiotr Jasiukajtis	bl,pt	%icc,1f
1012*5b2ba9d3SPiotr Jasiukajtis! delay slot
1013*5b2ba9d3SPiotr Jasiukajtis	nop
1014*5b2ba9d3SPiotr Jasiukajtis	ldd	[%fp+pio4],%f20
1015*5b2ba9d3SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
1016*5b2ba9d3SPiotr Jasiukajtis1:
1017*5b2ba9d3SPiotr Jasiukajtis	fdtoi	%f26,%f24
1018*5b2ba9d3SPiotr Jasiukajtis.special2:
1019*5b2ba9d3SPiotr Jasiukajtis	fxor	%f26,%f46,%f26
1020*5b2ba9d3SPiotr Jasiukajtis	st	%f26,[%l6]
1021*5b2ba9d3SPiotr Jasiukajtis	st	%f27,[%l6+4]
1022*5b2ba9d3SPiotr Jasiukajtis	addcc	%i0,-1,%i0
1023*5b2ba9d3SPiotr Jasiukajtis	bg,pn	%icc,1f
1024*5b2ba9d3SPiotr Jasiukajtis! delay slot
1025*5b2ba9d3SPiotr Jasiukajtis	nop
1026*5b2ba9d3SPiotr Jasiukajtis	fmovd	pio2,%f20		! set up dummy argument
1027*5b2ba9d3SPiotr Jasiukajtis	fmovd	pio2,%f22
1028*5b2ba9d3SPiotr Jasiukajtis	fzero	%f40
1029*5b2ba9d3SPiotr Jasiukajtis	fzero	%f46
1030*5b2ba9d3SPiotr Jasiukajtis	mov	0,%l2
1031*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont3
1032*5b2ba9d3SPiotr Jasiukajtis! delay slot
1033*5b2ba9d3SPiotr Jasiukajtis	add	%fp,junk,%l6
1034*5b2ba9d3SPiotr Jasiukajtis1:
1035*5b2ba9d3SPiotr Jasiukajtis	lda	[%i1]%asi,%f20
1036*5b2ba9d3SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f21
1037*5b2ba9d3SPiotr Jasiukajtis	lda	[%i3]%asi,%f28
1038*5b2ba9d3SPiotr Jasiukajtis	lda	[%i3+4]%asi,%f29
1039*5b2ba9d3SPiotr Jasiukajtis	fabsd	%f20,%f24
1040*5b2ba9d3SPiotr Jasiukajtis	lda	[%i1]%asi,%o0
1041*5b2ba9d3SPiotr Jasiukajtis	fabsd	%f28,%f22
1042*5b2ba9d3SPiotr Jasiukajtis	lda	[%i3]%asi,%l3
1043*5b2ba9d3SPiotr Jasiukajtis	mov	%i5,%l6
1044*5b2ba9d3SPiotr Jasiukajtis	fand	%f20,signbit,%f46
1045*5b2ba9d3SPiotr Jasiukajtis	add	%i1,%i2,%i1
1046*5b2ba9d3SPiotr Jasiukajtis	fand	%f28,signbit,%f40
1047*5b2ba9d3SPiotr Jasiukajtis	fcmpd	%fcc2,%f24,%f22
1048*5b2ba9d3SPiotr Jasiukajtis	add	%i3,%i4,%i3
1049*5b2ba9d3SPiotr Jasiukajtis	add	%i5,%l7,%i5
1050*5b2ba9d3SPiotr Jasiukajtis	fmovd	%f24,%f20
1051*5b2ba9d3SPiotr Jasiukajtis	sethi	%hi(0x80000000),%g5
1052*5b2ba9d3SPiotr Jasiukajtis	andn	%o0,%g5,%o0
1053*5b2ba9d3SPiotr Jasiukajtis	andn	%l3,%g5,%l3
1054*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc2,%f22,%f20
1055*5b2ba9d3SPiotr Jasiukajtis	fmovdg	%fcc2,%f24,%f22
1056*5b2ba9d3SPiotr Jasiukajtis	mov	%o0,%o7
1057*5b2ba9d3SPiotr Jasiukajtis	movg	%fcc2,%l3,%o0
1058*5b2ba9d3SPiotr Jasiukajtis	movg	%fcc2,%o7,%l3
1059*5b2ba9d3SPiotr Jasiukajtis	fbu,pn	%fcc2,.nan2_from_special2
1060*5b2ba9d3SPiotr Jasiukajtis! delay slot
1061*5b2ba9d3SPiotr Jasiukajtis	nop
1062*5b2ba9d3SPiotr Jasiukajtis	sub	%l3,%o0,%l2
1063*5b2ba9d3SPiotr Jasiukajtis	sub	%l3,%o3,%g5
1064*5b2ba9d3SPiotr Jasiukajtis	sub	%l2,%o4,%o7
1065*5b2ba9d3SPiotr Jasiukajtis	andcc	%g5,%o7,%g0
1066*5b2ba9d3SPiotr Jasiukajtis	bge,pn	%icc,.big2_from_special2
1067*5b2ba9d3SPiotr Jasiukajtis! delay slot
1068*5b2ba9d3SPiotr Jasiukajtis	nop
1069*5b2ba9d3SPiotr Jasiukajtis	cmp	%o0,%o5
1070*5b2ba9d3SPiotr Jasiukajtis	bl,pn	%icc,.small2
1071*5b2ba9d3SPiotr Jasiukajtis! delay slot
1072*5b2ba9d3SPiotr Jasiukajtis	nop
1073*5b2ba9d3SPiotr Jasiukajtis	ba,pt	%icc,.cont3
1074*5b2ba9d3SPiotr Jasiukajtis! delay slot
1075*5b2ba9d3SPiotr Jasiukajtis	nop
1076*5b2ba9d3SPiotr Jasiukajtis
1077*5b2ba9d3SPiotr Jasiukajtis	SET_SIZE(__vatan2)
1078*5b2ba9d3SPiotr Jasiukajtis
1079