125c28e83SPiotr Jasiukajtis/*
225c28e83SPiotr Jasiukajtis * CDDL HEADER START
325c28e83SPiotr Jasiukajtis *
425c28e83SPiotr Jasiukajtis * The contents of this file are subject to the terms of the
525c28e83SPiotr Jasiukajtis * Common Development and Distribution License (the "License").
625c28e83SPiotr Jasiukajtis * You may not use this file except in compliance with the License.
725c28e83SPiotr Jasiukajtis *
825c28e83SPiotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
925c28e83SPiotr Jasiukajtis * or http://www.opensolaris.org/os/licensing.
1025c28e83SPiotr Jasiukajtis * See the License for the specific language governing permissions
1125c28e83SPiotr Jasiukajtis * and limitations under the License.
1225c28e83SPiotr Jasiukajtis *
1325c28e83SPiotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each
1425c28e83SPiotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1525c28e83SPiotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the
1625c28e83SPiotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying
1725c28e83SPiotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner]
1825c28e83SPiotr Jasiukajtis *
1925c28e83SPiotr Jasiukajtis * CDDL HEADER END
2025c28e83SPiotr Jasiukajtis */
2125c28e83SPiotr Jasiukajtis/*
2225c28e83SPiotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
2325c28e83SPiotr Jasiukajtis */
2425c28e83SPiotr Jasiukajtis/*
2525c28e83SPiotr Jasiukajtis * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2625c28e83SPiotr Jasiukajtis * Use is subject to license terms.
2725c28e83SPiotr Jasiukajtis */
2825c28e83SPiotr Jasiukajtis
2925c28e83SPiotr Jasiukajtis	.file	"__vatan2.S"
3025c28e83SPiotr Jasiukajtis
3125c28e83SPiotr Jasiukajtis#include "libm.h"
3225c28e83SPiotr Jasiukajtis
3325c28e83SPiotr Jasiukajtis	RO_DATA
3425c28e83SPiotr Jasiukajtis	.align	64
3525c28e83SPiotr Jasiukajtisconstants:
3625c28e83SPiotr Jasiukajtis	.word	0x3ff921fb,0x54442d18	! pio2
3725c28e83SPiotr Jasiukajtis	.word	0x3c91a626,0x33145c07	! pio2_lo
3825c28e83SPiotr Jasiukajtis	.word	0xbfd55555,0x555554ee	! p1
3925c28e83SPiotr Jasiukajtis	.word	0x3fc99999,0x997a1559	! p2
4025c28e83SPiotr Jasiukajtis	.word	0xbfc24923,0x158dfe02	! p3
4125c28e83SPiotr Jasiukajtis	.word	0x3fbc639d,0x0ed1347b	! p4
4225c28e83SPiotr Jasiukajtis	.word	0xffffffff,0x00000000	! mask
4325c28e83SPiotr Jasiukajtis	.word	0x3fc00000,0x00000000	! twom3
4425c28e83SPiotr Jasiukajtis	.word	0x46d00000,0x00000000	! two110
4525c28e83SPiotr Jasiukajtis	.word	0x3fe921fb,0x54442d18	! pio4
4625c28e83SPiotr Jasiukajtis
4725c28e83SPiotr Jasiukajtis! local storage indices
4825c28e83SPiotr Jasiukajtis
4925c28e83SPiotr Jasiukajtis#define xscl		STACK_BIAS-0x8
5025c28e83SPiotr Jasiukajtis#define yscl		STACK_BIAS-0x10
5125c28e83SPiotr Jasiukajtis#define twom3		STACK_BIAS-0x18
5225c28e83SPiotr Jasiukajtis#define two110		STACK_BIAS-0x20
5325c28e83SPiotr Jasiukajtis#define pio4		STACK_BIAS-0x28
5425c28e83SPiotr Jasiukajtis#define junk		STACK_BIAS-0x30
5525c28e83SPiotr Jasiukajtis! sizeof temp storage - must be a multiple of 16 for V9
5625c28e83SPiotr Jasiukajtis#define tmps		0x30
5725c28e83SPiotr Jasiukajtis
5825c28e83SPiotr Jasiukajtis! register use
5925c28e83SPiotr Jasiukajtis
6025c28e83SPiotr Jasiukajtis! i0  n
6125c28e83SPiotr Jasiukajtis! i1  y
6225c28e83SPiotr Jasiukajtis! i2  stridey
6325c28e83SPiotr Jasiukajtis! i3  x
6425c28e83SPiotr Jasiukajtis! i4  stridex
6525c28e83SPiotr Jasiukajtis! i5  z
6625c28e83SPiotr Jasiukajtis
6725c28e83SPiotr Jasiukajtis! l0  k0
6825c28e83SPiotr Jasiukajtis! l1  k1
6925c28e83SPiotr Jasiukajtis! l2  k2
7025c28e83SPiotr Jasiukajtis! l3  hx
7125c28e83SPiotr Jasiukajtis! l4  pz0
7225c28e83SPiotr Jasiukajtis! l5  pz1
7325c28e83SPiotr Jasiukajtis! l6  pz2
7425c28e83SPiotr Jasiukajtis! l7  stridez
7525c28e83SPiotr Jasiukajtis
7625c28e83SPiotr Jasiukajtis! the following are 64-bit registers in both V8+ and V9
7725c28e83SPiotr Jasiukajtis
7825c28e83SPiotr Jasiukajtis! g1  __vlibm_TBL_atan2
79*55fea89dSDan Cross! g5
8025c28e83SPiotr Jasiukajtis
8125c28e83SPiotr Jasiukajtis! o0  hy
8225c28e83SPiotr Jasiukajtis! o1  0x00004000
8325c28e83SPiotr Jasiukajtis! o2  0x1420
8425c28e83SPiotr Jasiukajtis! o3  0x7fe00000
8525c28e83SPiotr Jasiukajtis! o4  0x03600000
8625c28e83SPiotr Jasiukajtis! o5  0x00100000
87*55fea89dSDan Cross! o7
8825c28e83SPiotr Jasiukajtis
8925c28e83SPiotr Jasiukajtis! f0  y0
9025c28e83SPiotr Jasiukajtis! f2  x0
9125c28e83SPiotr Jasiukajtis! f4  t0
9225c28e83SPiotr Jasiukajtis! f6  ah0
9325c28e83SPiotr Jasiukajtis! f8  al0
9425c28e83SPiotr Jasiukajtis! f10 y1
9525c28e83SPiotr Jasiukajtis! f12 x1
9625c28e83SPiotr Jasiukajtis! f14 t1
9725c28e83SPiotr Jasiukajtis! f16 ah1
9825c28e83SPiotr Jasiukajtis! f18 al1
9925c28e83SPiotr Jasiukajtis! f20 y2
10025c28e83SPiotr Jasiukajtis! f22 x2
10125c28e83SPiotr Jasiukajtis! f24 t2
10225c28e83SPiotr Jasiukajtis! f26 ah2
10325c28e83SPiotr Jasiukajtis! f28 al2
104*55fea89dSDan Cross! f30
105*55fea89dSDan Cross! f32
106*55fea89dSDan Cross! f34
10725c28e83SPiotr Jasiukajtis! f36 sx0
10825c28e83SPiotr Jasiukajtis! f38 sx1
10925c28e83SPiotr Jasiukajtis! f40 sx2
11025c28e83SPiotr Jasiukajtis! f42 sy0
11125c28e83SPiotr Jasiukajtis! f44 sy1
11225c28e83SPiotr Jasiukajtis! f46 sy2
11325c28e83SPiotr Jasiukajtis
11425c28e83SPiotr Jasiukajtis#define mask	%f48
11525c28e83SPiotr Jasiukajtis#define signbit	%f50
11625c28e83SPiotr Jasiukajtis#define pio2	%f52
11725c28e83SPiotr Jasiukajtis#define pio2_lo	%f54
11825c28e83SPiotr Jasiukajtis#define p1	%f56
11925c28e83SPiotr Jasiukajtis#define p2	%f58
12025c28e83SPiotr Jasiukajtis#define p3	%f60
12125c28e83SPiotr Jasiukajtis#define p4	%f62
12225c28e83SPiotr Jasiukajtis
12325c28e83SPiotr Jasiukajtis	ENTRY(__vatan2)
12425c28e83SPiotr Jasiukajtis	save	%sp,-SA(MINFRAME)-tmps,%sp
12525c28e83SPiotr Jasiukajtis	PIC_SETUP(l7)
12625c28e83SPiotr Jasiukajtis	PIC_SET(l7,constants,o0)
12725c28e83SPiotr Jasiukajtis	PIC_SET(l7,__vlibm_TBL_atan2,o1)
12825c28e83SPiotr Jasiukajtis	wr	%g0,0x82,%asi		! set %asi for non-faulting loads
12925c28e83SPiotr Jasiukajtis	mov	%o1, %g1
13025c28e83SPiotr Jasiukajtis#ifdef __sparcv9
13125c28e83SPiotr Jasiukajtis	ldx	[%fp+STACK_BIAS+0xb0],%l7
13225c28e83SPiotr Jasiukajtis#else
13325c28e83SPiotr Jasiukajtis	ld	[%fp+0x5c],%l7
13425c28e83SPiotr Jasiukajtis#endif
13525c28e83SPiotr Jasiukajtis	ldd	[%o0+0x00],pio2		! load/set up constants
13625c28e83SPiotr Jasiukajtis	ldd	[%o0+0x08],pio2_lo
13725c28e83SPiotr Jasiukajtis	ldd	[%o0+0x10],p1
13825c28e83SPiotr Jasiukajtis	ldd	[%o0+0x18],p2
13925c28e83SPiotr Jasiukajtis	ldd	[%o0+0x20],p3
14025c28e83SPiotr Jasiukajtis	ldd	[%o0+0x28],p4
14125c28e83SPiotr Jasiukajtis	ldd	[%o0+0x30],mask
14225c28e83SPiotr Jasiukajtis	fzero	signbit
14325c28e83SPiotr Jasiukajtis	fnegd	signbit,signbit
14425c28e83SPiotr Jasiukajtis	sethi	%hi(0x00004000),%o1
14525c28e83SPiotr Jasiukajtis	sethi	%hi(0x1420),%o2
14625c28e83SPiotr Jasiukajtis	or	%o2,%lo(0x1420),%o2
14725c28e83SPiotr Jasiukajtis	sethi	%hi(0x7fe00000),%o3
14825c28e83SPiotr Jasiukajtis	sethi	%hi(0x03600000),%o4
14925c28e83SPiotr Jasiukajtis	sethi	%hi(0x00100000),%o5
15025c28e83SPiotr Jasiukajtis	ldd	[%o0+0x38],%f0		! copy rarely used constants to stack
15125c28e83SPiotr Jasiukajtis	ldd	[%o0+0x40],%f2
15225c28e83SPiotr Jasiukajtis	ldd	[%o0+0x48],%f4
15325c28e83SPiotr Jasiukajtis	std	%f0,[%fp+twom3]
15425c28e83SPiotr Jasiukajtis	std	%f2,[%fp+two110]
15525c28e83SPiotr Jasiukajtis	std	%f4,[%fp+pio4]
15625c28e83SPiotr Jasiukajtis	sll	%i2,3,%i2		! scale strides
15725c28e83SPiotr Jasiukajtis	sll	%i4,3,%i4
15825c28e83SPiotr Jasiukajtis	sll	%l7,3,%l7
15925c28e83SPiotr Jasiukajtis	fzero	%f20			! loop prologue
16025c28e83SPiotr Jasiukajtis	fzero	%f22
16125c28e83SPiotr Jasiukajtis	fzero	%f24
16225c28e83SPiotr Jasiukajtis	fzero	%f26
16325c28e83SPiotr Jasiukajtis	fzero	%f46
164*55fea89dSDan Cross	add	%fp,junk,%l6
16525c28e83SPiotr Jasiukajtis	ld	[%i1],%f0		! *y
16625c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f1
16725c28e83SPiotr Jasiukajtis	ld	[%i3],%f8		! *x
16825c28e83SPiotr Jasiukajtis	ld	[%i3+4],%f9
16925c28e83SPiotr Jasiukajtis	ld	[%i1],%o0		! hy
17025c28e83SPiotr Jasiukajtis	ba	.loop
17125c28e83SPiotr Jasiukajtis	ld	[%i3],%l3		! hx
17225c28e83SPiotr Jasiukajtis
17325c28e83SPiotr Jasiukajtis! 16-byte aligned
17425c28e83SPiotr Jasiukajtis	.align	16
17525c28e83SPiotr Jasiukajtis.loop:
17625c28e83SPiotr Jasiukajtis	fabsd	%f0,%f4
17725c28e83SPiotr Jasiukajtis	mov	%i5,%l4
17825c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! y += stridey
17925c28e83SPiotr Jasiukajtis
18025c28e83SPiotr Jasiukajtis	fabsd	%f8,%f2
18125c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! x += stridex
18225c28e83SPiotr Jasiukajtis	add	%i5,%l7,%i5		! z += stridez
18325c28e83SPiotr Jasiukajtis
18425c28e83SPiotr Jasiukajtis	fand	%f0,signbit,%f42
18525c28e83SPiotr Jasiukajtis	sethi	%hi(0x80000000),%g5
18625c28e83SPiotr Jasiukajtis
18725c28e83SPiotr Jasiukajtis	fand	%f8,signbit,%f36
18825c28e83SPiotr Jasiukajtis	andn	%o0,%g5,%o0
18925c28e83SPiotr Jasiukajtis	andn	%l3,%g5,%l3
19025c28e83SPiotr Jasiukajtis
19125c28e83SPiotr Jasiukajtis	fcmpd	%fcc0,%f4,%f2
19225c28e83SPiotr Jasiukajtis
19325c28e83SPiotr Jasiukajtis	fmovd	%f4,%f0
19425c28e83SPiotr Jasiukajtis
19525c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,%f2,%f0		! swap if |y| > |x|
19625c28e83SPiotr Jasiukajtis
19725c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,%f4,%f2
19825c28e83SPiotr Jasiukajtis	mov	%o0,%o7
19925c28e83SPiotr Jasiukajtis	 lda	[%i1]%asi,%f10		! preload next argument
20025c28e83SPiotr Jasiukajtis
20125c28e83SPiotr Jasiukajtis	  faddd	%f26,%f20,%f26
20225c28e83SPiotr Jasiukajtis	 lda	[%i1+4]%asi,%f11
20325c28e83SPiotr Jasiukajtis
20425c28e83SPiotr Jasiukajtis	  faddd	%f22,%f24,%f22
20525c28e83SPiotr Jasiukajtis	movg	%fcc0,%l3,%o0
20625c28e83SPiotr Jasiukajtis
20725c28e83SPiotr Jasiukajtis	movg	%fcc0,%o7,%l3
20825c28e83SPiotr Jasiukajtis
20925c28e83SPiotr Jasiukajtis	fbu,pn	%fcc0,.nan0		! if x or y is nan
21025c28e83SPiotr Jasiukajtis! delay slot
21125c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%f18
21225c28e83SPiotr Jasiukajtis
21325c28e83SPiotr Jasiukajtis	sub	%l3,%o0,%l0		! hx - hy
21425c28e83SPiotr Jasiukajtis	sub	%l3,%o3,%g5
21525c28e83SPiotr Jasiukajtis	 fabsd	%f10,%f14
21625c28e83SPiotr Jasiukajtis	 lda	[%i3+4]%asi,%f19
21725c28e83SPiotr Jasiukajtis
21825c28e83SPiotr Jasiukajtis	sub	%l0,%o4,%o7
21925c28e83SPiotr Jasiukajtis	  faddd	%f22,%f26,%f26
22025c28e83SPiotr Jasiukajtis
22125c28e83SPiotr Jasiukajtis	andcc	%g5,%o7,%g0
22225c28e83SPiotr Jasiukajtis	bge,pn	%icc,.big0		! if |x| or |x/y| is big
22325c28e83SPiotr Jasiukajtis! delay slot
22425c28e83SPiotr Jasiukajtis	nop
22525c28e83SPiotr Jasiukajtis
22625c28e83SPiotr Jasiukajtis	 fabsd	%f18,%f12
22725c28e83SPiotr Jasiukajtis	cmp	%o0,%o5
22825c28e83SPiotr Jasiukajtis	bl,pn	%icc,.small0		! if |y| is small
22925c28e83SPiotr Jasiukajtis! delay slot
23025c28e83SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
23125c28e83SPiotr Jasiukajtis
23225c28e83SPiotr Jasiukajtis	add	%l0,%o1,%l0		! k
23325c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
23425c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last1
23525c28e83SPiotr Jasiukajtis! delay slot
23625c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
23725c28e83SPiotr Jasiukajtis
23825c28e83SPiotr Jasiukajtis.cont1:
23925c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
24025c28e83SPiotr Jasiukajtis	 mov	%i5,%l5
24125c28e83SPiotr Jasiukajtis	  fxor	%f26,%f46,%f26
24225c28e83SPiotr Jasiukajtis	  st	%f26,[%l6]
24325c28e83SPiotr Jasiukajtis
24425c28e83SPiotr Jasiukajtis	 fand	%f10,signbit,%f44
24525c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
24625c28e83SPiotr Jasiukajtis	 add	%i1,%i2,%i1
24725c28e83SPiotr Jasiukajtis	  st	%f27,[%l6+4]
24825c28e83SPiotr Jasiukajtis
24925c28e83SPiotr Jasiukajtis	 fand	%f18,signbit,%f38
25025c28e83SPiotr Jasiukajtis	cmp	%l0,%o2
25125c28e83SPiotr Jasiukajtis	movg	%icc,%o2,%l0
25225c28e83SPiotr Jasiukajtis
25325c28e83SPiotr Jasiukajtis	 fcmpd	%fcc1,%f14,%f12
25425c28e83SPiotr Jasiukajtis	 add	%i3,%i4,%i3
25525c28e83SPiotr Jasiukajtis	 add	%i5,%l7,%i5
25625c28e83SPiotr Jasiukajtis
25725c28e83SPiotr Jasiukajtis	 fmovd	%f14,%f10
25825c28e83SPiotr Jasiukajtis	add	%l0,%g1,%l0
25925c28e83SPiotr Jasiukajtis	 sethi	%hi(0x80000000),%g5
26025c28e83SPiotr Jasiukajtis
26125c28e83SPiotr Jasiukajtis	ldd	[%l0+0x10],%f4
26225c28e83SPiotr Jasiukajtis	fand	%f2,mask,%f6
26325c28e83SPiotr Jasiukajtis	 andn	%o0,%g5,%o0
26425c28e83SPiotr Jasiukajtis	 andn	%l3,%g5,%l3
26525c28e83SPiotr Jasiukajtis
26625c28e83SPiotr Jasiukajtis	 fmovdg	%fcc1,%f12,%f10
26725c28e83SPiotr Jasiukajtis
26825c28e83SPiotr Jasiukajtis	 fmovdg	%fcc1,%f14,%f12
26925c28e83SPiotr Jasiukajtis	 mov	%o0,%o7
27025c28e83SPiotr Jasiukajtis	  lda	[%i1]%asi,%f20
27125c28e83SPiotr Jasiukajtis
27225c28e83SPiotr Jasiukajtis	fsubd	%f2,%f6,%f30
27325c28e83SPiotr Jasiukajtis	fmuld	%f6,%f4,%f6
27425c28e83SPiotr Jasiukajtis	 movg	%fcc1,%l3,%o0
27525c28e83SPiotr Jasiukajtis
27625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f8
27725c28e83SPiotr Jasiukajtis	 movg	%fcc1,%o7,%l3
27825c28e83SPiotr Jasiukajtis
27925c28e83SPiotr Jasiukajtis	  lda	[%i1+4]%asi,%f21
28025c28e83SPiotr Jasiukajtis	 fbu,pn	%fcc1,.nan1
28125c28e83SPiotr Jasiukajtis! delay slot
28225c28e83SPiotr Jasiukajtis	 nop
28325c28e83SPiotr Jasiukajtis
28425c28e83SPiotr Jasiukajtis	  lda	[%i3]%asi,%f28
28525c28e83SPiotr Jasiukajtis	 sub	%l3,%o0,%l1
28625c28e83SPiotr Jasiukajtis	 sub	%l3,%o3,%g5
28725c28e83SPiotr Jasiukajtis
28825c28e83SPiotr Jasiukajtis	  lda	[%i3+4]%asi,%f29
28925c28e83SPiotr Jasiukajtis	fmuld	%f30,%f4,%f30
29025c28e83SPiotr Jasiukajtis	fsubd	%f0,%f6,%f4
29125c28e83SPiotr Jasiukajtis	 sub	%l1,%o4,%o7
29225c28e83SPiotr Jasiukajtis
29325c28e83SPiotr Jasiukajtis	  fabsd	%f20,%f24
29425c28e83SPiotr Jasiukajtis	 andcc	%g5,%o7,%g0
29525c28e83SPiotr Jasiukajtis	 bge,pn	%icc,.big1
29625c28e83SPiotr Jasiukajtis! delay slot
29725c28e83SPiotr Jasiukajtis	 nop
29825c28e83SPiotr Jasiukajtis
29925c28e83SPiotr Jasiukajtis	faddd	%f2,%f8,%f8
30025c28e83SPiotr Jasiukajtis	 cmp	%o0,%o5
30125c28e83SPiotr Jasiukajtis	 bl,pn	%icc,.small1
30225c28e83SPiotr Jasiukajtis! delay slot
30325c28e83SPiotr Jasiukajtis	  lda	[%i1]%asi,%o0
30425c28e83SPiotr Jasiukajtis
30525c28e83SPiotr Jasiukajtis	  fabsd	%f28,%f22
30625c28e83SPiotr Jasiukajtis	 add	%l1,%o1,%l1
30725c28e83SPiotr Jasiukajtis	 addcc	%i0,-1,%i0
30825c28e83SPiotr Jasiukajtis	  lda	[%i3]%asi,%l3
30925c28e83SPiotr Jasiukajtis
31025c28e83SPiotr Jasiukajtis	fsubd	%f4,%f30,%f4
31125c28e83SPiotr Jasiukajtis	 srl	%l1,10,%l1
31225c28e83SPiotr Jasiukajtis	 ble,pn	%icc,.last2
31325c28e83SPiotr Jasiukajtis! delay slot
31425c28e83SPiotr Jasiukajtis	  mov	%i5,%l6
31525c28e83SPiotr Jasiukajtis
31625c28e83SPiotr Jasiukajtis.cont2:
31725c28e83SPiotr Jasiukajtis	  fand	%f20,signbit,%f46
31825c28e83SPiotr Jasiukajtis	 andn	%l1,0x1f,%l1
31925c28e83SPiotr Jasiukajtis	  add	%i1,%i2,%i1
32025c28e83SPiotr Jasiukajtis
32125c28e83SPiotr Jasiukajtis	  fand	%f28,signbit,%f40
32225c28e83SPiotr Jasiukajtis	 cmp	%l1,%o2
32325c28e83SPiotr Jasiukajtis	 movg	%icc,%o2,%l1
32425c28e83SPiotr Jasiukajtis
32525c28e83SPiotr Jasiukajtis	  fcmpd	%fcc2,%f24,%f22
32625c28e83SPiotr Jasiukajtis	  add	%i3,%i4,%i3
32725c28e83SPiotr Jasiukajtis	  add	%i5,%l7,%i5
32825c28e83SPiotr Jasiukajtis
32925c28e83SPiotr Jasiukajtis	fdivd	%f4,%f8,%f4
33025c28e83SPiotr Jasiukajtis	  fmovd	%f24,%f20
33125c28e83SPiotr Jasiukajtis	 add	%l1,%g1,%l1
33225c28e83SPiotr Jasiukajtis	  sethi	%hi(0x80000000),%g5
33325c28e83SPiotr Jasiukajtis
33425c28e83SPiotr Jasiukajtis	 ldd	[%l1+0x10],%f14
33525c28e83SPiotr Jasiukajtis	 fand	%f12,mask,%f16
33625c28e83SPiotr Jasiukajtis	  andn	%o0,%g5,%o0
33725c28e83SPiotr Jasiukajtis	  andn	%l3,%g5,%l3
33825c28e83SPiotr Jasiukajtis
33925c28e83SPiotr Jasiukajtis	  fmovdg %fcc2,%f22,%f20
34025c28e83SPiotr Jasiukajtis
34125c28e83SPiotr Jasiukajtis	  fmovdg %fcc2,%f24,%f22
34225c28e83SPiotr Jasiukajtis	  mov	%o0,%o7
34325c28e83SPiotr Jasiukajtis
34425c28e83SPiotr Jasiukajtis	 fsubd	%f12,%f16,%f32
34525c28e83SPiotr Jasiukajtis	 fmuld	%f16,%f14,%f16
34625c28e83SPiotr Jasiukajtis	  movg	%fcc2,%l3,%o0
34725c28e83SPiotr Jasiukajtis
34825c28e83SPiotr Jasiukajtis	fnegd	pio2_lo,%f8		! al
34925c28e83SPiotr Jasiukajtis	 fmuld	%f10,%f14,%f18
35025c28e83SPiotr Jasiukajtis	  movg	%fcc2,%o7,%l3
35125c28e83SPiotr Jasiukajtis
35225c28e83SPiotr Jasiukajtis	fzero	%f0
35325c28e83SPiotr Jasiukajtis	  fbu,pn %fcc2,.nan2
35425c28e83SPiotr Jasiukajtis! delay slot
35525c28e83SPiotr Jasiukajtis	  nop
35625c28e83SPiotr Jasiukajtis
35725c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f0
35825c28e83SPiotr Jasiukajtis	  sub	%l3,%o0,%l2
35925c28e83SPiotr Jasiukajtis	  sub	%l3,%o3,%g5
36025c28e83SPiotr Jasiukajtis
36125c28e83SPiotr Jasiukajtis	 fmuld	%f32,%f14,%f32
36225c28e83SPiotr Jasiukajtis	 fsubd	%f10,%f16,%f14
36325c28e83SPiotr Jasiukajtis	  sub	%l2,%o4,%o7
36425c28e83SPiotr Jasiukajtis
36525c28e83SPiotr Jasiukajtis	 faddd	%f12,%f18,%f18
36625c28e83SPiotr Jasiukajtis	  andcc	%g5,%o7,%g0
36725c28e83SPiotr Jasiukajtis	  bge,pn %icc,.big2
36825c28e83SPiotr Jasiukajtis! delay slot
36925c28e83SPiotr Jasiukajtis	  nop
37025c28e83SPiotr Jasiukajtis
37125c28e83SPiotr Jasiukajtis	fxor	%f36,%f0,%f36
37225c28e83SPiotr Jasiukajtis	  cmp	%o0,%o5
37325c28e83SPiotr Jasiukajtis	  bl,pn	%icc,.small2
37425c28e83SPiotr Jasiukajtis! delay slot
37525c28e83SPiotr Jasiukajtis	  nop
37625c28e83SPiotr Jasiukajtis
37725c28e83SPiotr Jasiukajtis.cont3:
37825c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f8
37925c28e83SPiotr Jasiukajtis	  add	%l2,%o1,%l2
38025c28e83SPiotr Jasiukajtis
38125c28e83SPiotr Jasiukajtis	 fsubd	%f14,%f32,%f14
38225c28e83SPiotr Jasiukajtis	  srl	%l2,10,%l2
38325c28e83SPiotr Jasiukajtis
38425c28e83SPiotr Jasiukajtis	fxor	%f36,pio2_lo,%f30	! al
38525c28e83SPiotr Jasiukajtis	  andn	%l2,0x1f,%l2
38625c28e83SPiotr Jasiukajtis
38725c28e83SPiotr Jasiukajtis	fxor	%f36,pio2,%f0		! ah
38825c28e83SPiotr Jasiukajtis	  cmp	%l2,%o2
38925c28e83SPiotr Jasiukajtis	  movg	%icc,%o2,%l2
39025c28e83SPiotr Jasiukajtis
39125c28e83SPiotr Jasiukajtis	fxor	%f42,%f36,%f42		! sy
39225c28e83SPiotr Jasiukajtis
39325c28e83SPiotr Jasiukajtis	faddd	%f8,%f30,%f8
39425c28e83SPiotr Jasiukajtis	ldd	[%l0+0x8],%f30
39525c28e83SPiotr Jasiukajtis	  add	%l2,%g1,%l2
39625c28e83SPiotr Jasiukajtis
39725c28e83SPiotr Jasiukajtis	 fdivd	%f14,%f18,%f14
39825c28e83SPiotr Jasiukajtis	 fzero	%f10
39925c28e83SPiotr Jasiukajtis
40025c28e83SPiotr Jasiukajtis	  ldd	[%l2+0x10],%f24
40125c28e83SPiotr Jasiukajtis	  fand	%f22,mask,%f26
40225c28e83SPiotr Jasiukajtis
40325c28e83SPiotr Jasiukajtis	 fmovdg	%fcc1,signbit,%f10
40425c28e83SPiotr Jasiukajtis
40525c28e83SPiotr Jasiukajtis	fmuld	%f4,%f4,%f36
40625c28e83SPiotr Jasiukajtis	faddd	%f8,%f30,%f8
40725c28e83SPiotr Jasiukajtis
40825c28e83SPiotr Jasiukajtis	  fsubd	%f22,%f26,%f34
40925c28e83SPiotr Jasiukajtis	  fmuld	%f26,%f24,%f26
41025c28e83SPiotr Jasiukajtis
41125c28e83SPiotr Jasiukajtis	  fmuld	%f20,%f24,%f28
41225c28e83SPiotr Jasiukajtis	 fxor	%f38,%f10,%f38
41325c28e83SPiotr Jasiukajtis
41425c28e83SPiotr Jasiukajtis	fmuld	%f4,p3,%f6
41525c28e83SPiotr Jasiukajtis	 fnegd	pio2_lo,%f18
41625c28e83SPiotr Jasiukajtis
41725c28e83SPiotr Jasiukajtis	fmuld	%f36,p2,%f2
41825c28e83SPiotr Jasiukajtis	 fmovdg	%fcc1,signbit,%f18
41925c28e83SPiotr Jasiukajtis
42025c28e83SPiotr Jasiukajtis	fmuld	%f36,%f4,%f36
42125c28e83SPiotr Jasiukajtis	 fxor	%f38,pio2,%f10
42225c28e83SPiotr Jasiukajtis
42325c28e83SPiotr Jasiukajtis	  fmuld	%f34,%f24,%f34
42425c28e83SPiotr Jasiukajtis	  fsubd	%f20,%f26,%f24
42525c28e83SPiotr Jasiukajtis
42625c28e83SPiotr Jasiukajtis	  faddd	%f22,%f28,%f28
42725c28e83SPiotr Jasiukajtis
42825c28e83SPiotr Jasiukajtis	faddd	%f2,p1,%f2
42925c28e83SPiotr Jasiukajtis
43025c28e83SPiotr Jasiukajtis	fmuld	%f36,p4,%f30
43125c28e83SPiotr Jasiukajtis	 fxor	%f38,pio2_lo,%f32
43225c28e83SPiotr Jasiukajtis
43325c28e83SPiotr Jasiukajtis	  fsubd	%f24,%f34,%f24
43425c28e83SPiotr Jasiukajtis
43525c28e83SPiotr Jasiukajtis	 fxor	%f44,%f38,%f44
43625c28e83SPiotr Jasiukajtis
43725c28e83SPiotr Jasiukajtis	fmuld	%f36,%f2,%f2
43825c28e83SPiotr Jasiukajtis	 faddd	%f18,%f32,%f18
43925c28e83SPiotr Jasiukajtis	 ldd	[%l1+0x8],%f32
44025c28e83SPiotr Jasiukajtis
44125c28e83SPiotr Jasiukajtis	fmuld	%f36,%f36,%f36
44225c28e83SPiotr Jasiukajtis	faddd	%f6,%f30,%f30
44325c28e83SPiotr Jasiukajtis
44425c28e83SPiotr Jasiukajtis	  fdivd	%f24,%f28,%f24
44525c28e83SPiotr Jasiukajtis	  fzero	%f20
44625c28e83SPiotr Jasiukajtis
44725c28e83SPiotr Jasiukajtis	  fmovdg %fcc2,signbit,%f20
44825c28e83SPiotr Jasiukajtis
44925c28e83SPiotr Jasiukajtis	faddd	%f2,%f8,%f2
45025c28e83SPiotr Jasiukajtis
45125c28e83SPiotr Jasiukajtis	 fmuld	%f14,%f14,%f38
45225c28e83SPiotr Jasiukajtis	 faddd	%f18,%f32,%f18
45325c28e83SPiotr Jasiukajtis
45425c28e83SPiotr Jasiukajtis	fmuld	%f36,%f30,%f36
45525c28e83SPiotr Jasiukajtis	  fxor	%f40,%f20,%f40
45625c28e83SPiotr Jasiukajtis
45725c28e83SPiotr Jasiukajtis	fnegd	pio2,%f6		! ah
45825c28e83SPiotr Jasiukajtis	 fmuld	%f14,p3,%f16
45925c28e83SPiotr Jasiukajtis
46025c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f6
46125c28e83SPiotr Jasiukajtis
46225c28e83SPiotr Jasiukajtis	 fmuld	%f38,p2,%f12
46325c28e83SPiotr Jasiukajtis	  fnegd	pio2_lo,%f28
46425c28e83SPiotr Jasiukajtis
46525c28e83SPiotr Jasiukajtis	faddd	%f2,%f36,%f2
46625c28e83SPiotr Jasiukajtis	 fmuld	%f38,%f14,%f38
46725c28e83SPiotr Jasiukajtis
46825c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
46925c28e83SPiotr Jasiukajtis	ldd	[%l0],%f0
47025c28e83SPiotr Jasiukajtis
47125c28e83SPiotr Jasiukajtis	  fmovdg %fcc2,signbit,%f28
47225c28e83SPiotr Jasiukajtis
47325c28e83SPiotr Jasiukajtis	 faddd	%f12,p1,%f12
47425c28e83SPiotr Jasiukajtis
47525c28e83SPiotr Jasiukajtis	 fmuld	%f38,p4,%f32
47625c28e83SPiotr Jasiukajtis	  fxor	%f40,pio2_lo,%f34
47725c28e83SPiotr Jasiukajtis
47825c28e83SPiotr Jasiukajtis	  fxor	%f40,pio2,%f20
47925c28e83SPiotr Jasiukajtis
48025c28e83SPiotr Jasiukajtis	faddd	%f2,%f4,%f2
48125c28e83SPiotr Jasiukajtis
48225c28e83SPiotr Jasiukajtis	 fmuld	%f38,%f12,%f12
48325c28e83SPiotr Jasiukajtis	  fxor	%f46,%f40,%f46
48425c28e83SPiotr Jasiukajtis
48525c28e83SPiotr Jasiukajtis	 fmuld	%f38,%f38,%f38
48625c28e83SPiotr Jasiukajtis	 faddd	%f16,%f32,%f32
48725c28e83SPiotr Jasiukajtis
48825c28e83SPiotr Jasiukajtis	  faddd	%f28,%f34,%f28
48925c28e83SPiotr Jasiukajtis	  ldd	[%l2+0x8],%f34
49025c28e83SPiotr Jasiukajtis
49125c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
49225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0		! preload next argument
49325c28e83SPiotr Jasiukajtis
49425c28e83SPiotr Jasiukajtis	 faddd	%f12,%f18,%f12
49525c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
49625c28e83SPiotr Jasiukajtis
49725c28e83SPiotr Jasiukajtis	  fmuld	%f24,%f24,%f40
49825c28e83SPiotr Jasiukajtis	lda	[%i3]%asi,%f8
49925c28e83SPiotr Jasiukajtis
50025c28e83SPiotr Jasiukajtis	 fmuld	%f38,%f32,%f38
50125c28e83SPiotr Jasiukajtis	  faddd	%f28,%f34,%f28
50225c28e83SPiotr Jasiukajtis	lda	[%i3+4]%asi,%f9
50325c28e83SPiotr Jasiukajtis
50425c28e83SPiotr Jasiukajtis	 fnegd	pio2,%f16
50525c28e83SPiotr Jasiukajtis	  fmuld	%f24,p3,%f26
50625c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%o0
50725c28e83SPiotr Jasiukajtis
50825c28e83SPiotr Jasiukajtis	 fmovdg	%fcc1,signbit,%f16
50925c28e83SPiotr Jasiukajtis	lda	[%i3]%asi,%l3
51025c28e83SPiotr Jasiukajtis
51125c28e83SPiotr Jasiukajtis	  fmuld	%f40,p2,%f22
51225c28e83SPiotr Jasiukajtis
51325c28e83SPiotr Jasiukajtis	 faddd	%f12,%f38,%f12
51425c28e83SPiotr Jasiukajtis	  fmuld	%f40,%f24,%f40
51525c28e83SPiotr Jasiukajtis
51625c28e83SPiotr Jasiukajtis	faddd	%f2,%f6,%f6
51725c28e83SPiotr Jasiukajtis
51825c28e83SPiotr Jasiukajtis	 faddd	%f16,%f10,%f16
51925c28e83SPiotr Jasiukajtis	 ldd	[%l1],%f10
52025c28e83SPiotr Jasiukajtis
52125c28e83SPiotr Jasiukajtis	  faddd	%f22,p1,%f22
52225c28e83SPiotr Jasiukajtis
52325c28e83SPiotr Jasiukajtis	 faddd	%f12,%f14,%f12
52425c28e83SPiotr Jasiukajtis	  fmuld	%f40,p4,%f34
52525c28e83SPiotr Jasiukajtis
52625c28e83SPiotr Jasiukajtis	fxor	%f6,%f42,%f6
52725c28e83SPiotr Jasiukajtis	st	%f6,[%l4]
52825c28e83SPiotr Jasiukajtis
52925c28e83SPiotr Jasiukajtis	 faddd	%f16,%f10,%f16
53025c28e83SPiotr Jasiukajtis	st	%f7,[%l4+4]
53125c28e83SPiotr Jasiukajtis
53225c28e83SPiotr Jasiukajtis	  fmuld	%f40,%f22,%f22
53325c28e83SPiotr Jasiukajtis
53425c28e83SPiotr Jasiukajtis	  fmuld	%f40,%f40,%f40
53525c28e83SPiotr Jasiukajtis	  faddd	%f26,%f34,%f34
53625c28e83SPiotr Jasiukajtis
53725c28e83SPiotr Jasiukajtis	  fnegd	pio2,%f26
53825c28e83SPiotr Jasiukajtis
53925c28e83SPiotr Jasiukajtis	 faddd	%f12,%f16,%f16
54025c28e83SPiotr Jasiukajtis
54125c28e83SPiotr Jasiukajtis	  faddd	%f22,%f28,%f22
54225c28e83SPiotr Jasiukajtis
54325c28e83SPiotr Jasiukajtis	  fmuld	%f40,%f34,%f40
54425c28e83SPiotr Jasiukajtis	  fmovdg %fcc2,signbit,%f26
54525c28e83SPiotr Jasiukajtis
54625c28e83SPiotr Jasiukajtis! -
54725c28e83SPiotr Jasiukajtis
54825c28e83SPiotr Jasiukajtis	 fxor	%f16,%f44,%f16
54925c28e83SPiotr Jasiukajtis	 st	%f16,[%l5]
55025c28e83SPiotr Jasiukajtis
55125c28e83SPiotr Jasiukajtis	  faddd	%f26,%f20,%f26
55225c28e83SPiotr Jasiukajtis	 st	%f17,[%l5+4]
55325c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
55425c28e83SPiotr Jasiukajtis
55525c28e83SPiotr Jasiukajtis	  faddd	%f22,%f40,%f22
55625c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop
55725c28e83SPiotr Jasiukajtis! delay slot
55825c28e83SPiotr Jasiukajtis	  ldd	[%l2],%f20
55925c28e83SPiotr Jasiukajtis
56025c28e83SPiotr Jasiukajtis
56125c28e83SPiotr Jasiukajtis	  faddd	%f26,%f20,%f26
56225c28e83SPiotr Jasiukajtis	  faddd	%f22,%f24,%f22
56325c28e83SPiotr Jasiukajtis	  faddd	%f22,%f26,%f26
56425c28e83SPiotr Jasiukajtis.done_from_special0:
56525c28e83SPiotr Jasiukajtis	  fxor	%f26,%f46,%f26
56625c28e83SPiotr Jasiukajtis	  st	%f26,[%l6]
56725c28e83SPiotr Jasiukajtis	  st	%f27,[%l6+4]
56825c28e83SPiotr Jasiukajtis	  ret
56925c28e83SPiotr Jasiukajtis	  restore
57025c28e83SPiotr Jasiukajtis
57125c28e83SPiotr Jasiukajtis
57225c28e83SPiotr Jasiukajtis
57325c28e83SPiotr Jasiukajtis	.align	16
57425c28e83SPiotr Jasiukajtis.last1:
57525c28e83SPiotr Jasiukajtis	fmovd	pio2,%f10		! set up dummy arguments
57625c28e83SPiotr Jasiukajtis	fmovd	pio2,%f18
57725c28e83SPiotr Jasiukajtis	fabsd	%f10,%f14
57825c28e83SPiotr Jasiukajtis	fabsd	%f18,%f12
57925c28e83SPiotr Jasiukajtis	sethi	%hi(0x3ff921fb),%o0
58025c28e83SPiotr Jasiukajtis	or	%o0,%lo(0x3ff921fb),%o0
58125c28e83SPiotr Jasiukajtis	mov	%o0,%l3
58225c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont1
58325c28e83SPiotr Jasiukajtis! delay slot
58425c28e83SPiotr Jasiukajtis	add	%fp,junk,%i5
58525c28e83SPiotr Jasiukajtis
58625c28e83SPiotr Jasiukajtis
58725c28e83SPiotr Jasiukajtis
58825c28e83SPiotr Jasiukajtis	.align	16
58925c28e83SPiotr Jasiukajtis.last2:
59025c28e83SPiotr Jasiukajtis	fmovd	pio2,%f20
59125c28e83SPiotr Jasiukajtis	fmovd	pio2,%f28
59225c28e83SPiotr Jasiukajtis	fabsd	%f20,%f24
59325c28e83SPiotr Jasiukajtis	fabsd	%f28,%f22
59425c28e83SPiotr Jasiukajtis	sethi	%hi(0x3ff921fb),%o0
59525c28e83SPiotr Jasiukajtis	or	%o0,%lo(0x3ff921fb),%o0
59625c28e83SPiotr Jasiukajtis	mov	%o0,%l3
59725c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont2
59825c28e83SPiotr Jasiukajtis! delay slot
59925c28e83SPiotr Jasiukajtis	add	%fp,junk,%l6
60025c28e83SPiotr Jasiukajtis
60125c28e83SPiotr Jasiukajtis
60225c28e83SPiotr Jasiukajtis
60325c28e83SPiotr Jasiukajtis	.align	16
60425c28e83SPiotr Jasiukajtis.nan0:
60525c28e83SPiotr Jasiukajtis	  faddd	%f22,%f26,%f26
60625c28e83SPiotr Jasiukajtis.nan0_from_special0:
60725c28e83SPiotr Jasiukajtis	 fabsd	%f10,%f14
60825c28e83SPiotr Jasiukajtis	 lda	[%i3+4]%asi,%f19
60925c28e83SPiotr Jasiukajtis	 fabsd	%f18,%f12
61025c28e83SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
61125c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
61225c28e83SPiotr Jasiukajtis	ba,pt	%icc,.special0
61325c28e83SPiotr Jasiukajtis! delay slot
61425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f2,%f6
61525c28e83SPiotr Jasiukajtis
61625c28e83SPiotr Jasiukajtis
61725c28e83SPiotr Jasiukajtis	.align	16
61825c28e83SPiotr Jasiukajtis.big0:
61925c28e83SPiotr Jasiukajtis	 fabsd	%f18,%f12
62025c28e83SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
62125c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
622*55fea89dSDan Cross	cmp	%g5,%o5
62325c28e83SPiotr Jasiukajtis	bge,pn	%icc,.return_ah0	! if hx >= 0x7ff00000
62425c28e83SPiotr Jasiukajtis! delay slot
62525c28e83SPiotr Jasiukajtis	nop
62625c28e83SPiotr Jasiukajtis	cmp	%l0,%o4
62725c28e83SPiotr Jasiukajtis	bge,pn	%icc,1f			! if hx - hy >= 0x03600000
62825c28e83SPiotr Jasiukajtis! delay slot
62925c28e83SPiotr Jasiukajtis	nop
63025c28e83SPiotr Jasiukajtis	ldd	[%fp+twom3],%f6
63125c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f0
63225c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f2
63325c28e83SPiotr Jasiukajtis	add	%l0,%o1,%l0
63425c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
63525c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last1
63625c28e83SPiotr Jasiukajtis! delay slot
63725c28e83SPiotr Jasiukajtis	nop
63825c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont1
63925c28e83SPiotr Jasiukajtis! delay slot
64025c28e83SPiotr Jasiukajtis	nop
64125c28e83SPiotr Jasiukajtis1:
64225c28e83SPiotr Jasiukajtis	fbg,pn	%fcc0,.return_ah0
64325c28e83SPiotr Jasiukajtis! delay slot
64425c28e83SPiotr Jasiukajtis	nop
64525c28e83SPiotr Jasiukajtis	fcmpd	%fcc3,%f8,signbit
64625c28e83SPiotr Jasiukajtis	fbl,pn	%fcc3,.return_ah0
64725c28e83SPiotr Jasiukajtis! delay slot
64825c28e83SPiotr Jasiukajtis	nop
64925c28e83SPiotr Jasiukajtis	ba,pt	%icc,.special0
65025c28e83SPiotr Jasiukajtis! delay slot
65125c28e83SPiotr Jasiukajtis	fdivd	%f0,%f2,%f6
65225c28e83SPiotr Jasiukajtis
65325c28e83SPiotr Jasiukajtis
65425c28e83SPiotr Jasiukajtis	.align	16
65525c28e83SPiotr Jasiukajtis.small0:
65625c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
65725c28e83SPiotr Jasiukajtis	fcmpd	%fcc3,%f0,signbit
65825c28e83SPiotr Jasiukajtis	fbe,pt	%fcc3,.return_ah0
65925c28e83SPiotr Jasiukajtis! delay slot
66025c28e83SPiotr Jasiukajtis	nop
66125c28e83SPiotr Jasiukajtis	ldd	[%fp+two110],%f6
66225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f0
66325c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f2
66425c28e83SPiotr Jasiukajtis	st	%f0,[%fp+yscl]
66525c28e83SPiotr Jasiukajtis	ld	[%fp+yscl],%o7
66625c28e83SPiotr Jasiukajtis	st	%f2,[%fp+xscl]
66725c28e83SPiotr Jasiukajtis	ld	[%fp+xscl],%l0
66825c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
66925c28e83SPiotr Jasiukajtis	add	%l0,%o1,%l0
67025c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
67125c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last1
67225c28e83SPiotr Jasiukajtis! delay slot
67325c28e83SPiotr Jasiukajtis	nop
67425c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont1
67525c28e83SPiotr Jasiukajtis! delay slot
67625c28e83SPiotr Jasiukajtis	nop
67725c28e83SPiotr Jasiukajtis
67825c28e83SPiotr Jasiukajtis
67925c28e83SPiotr Jasiukajtis	.align	16
68025c28e83SPiotr Jasiukajtis.return_ah0:
68125c28e83SPiotr Jasiukajtis	fzero	%f0
68225c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f0
68325c28e83SPiotr Jasiukajtis	fxor	%f36,%f0,%f36
68425c28e83SPiotr Jasiukajtis	fxor	%f36,pio2,%f0
68525c28e83SPiotr Jasiukajtis	fxor	%f42,%f36,%f42
68625c28e83SPiotr Jasiukajtis	fnegd	pio2,%f6
68725c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f6
68825c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
68925c28e83SPiotr Jasiukajtis	sub	%g5,%l0,%o7
69025c28e83SPiotr Jasiukajtis	cmp	%o7,%o5
69125c28e83SPiotr Jasiukajtis	bl,pt	%icc,1f			! if hy < 0x7ff00000
69225c28e83SPiotr Jasiukajtis! delay slot
69325c28e83SPiotr Jasiukajtis	nop
69425c28e83SPiotr Jasiukajtis	ldd	[%fp+pio4],%f0
69525c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
69625c28e83SPiotr Jasiukajtis1:
69725c28e83SPiotr Jasiukajtis	fdtoi	%f6,%f4
69825c28e83SPiotr Jasiukajtis.special0:
69925c28e83SPiotr Jasiukajtis	fxor	%f6,%f42,%f6
70025c28e83SPiotr Jasiukajtis	st	%f6,[%l4]
70125c28e83SPiotr Jasiukajtis	st	%f7,[%l4+4]
70225c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
70325c28e83SPiotr Jasiukajtis	ble,pn	%icc,.done_from_special0
70425c28e83SPiotr Jasiukajtis! delay slot
70525c28e83SPiotr Jasiukajtis	nop
70625c28e83SPiotr Jasiukajtis	fmovd	%f10,%f0
70725c28e83SPiotr Jasiukajtis	fmovd	%f18,%f8
70825c28e83SPiotr Jasiukajtis	fmovd	%f14,%f4
70925c28e83SPiotr Jasiukajtis	fmovd	%f12,%f2
71025c28e83SPiotr Jasiukajtis	mov	%i5,%l4
71125c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
71225c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
71325c28e83SPiotr Jasiukajtis	add	%i5,%l7,%i5
71425c28e83SPiotr Jasiukajtis	fand	%f0,signbit,%f42
71525c28e83SPiotr Jasiukajtis	sethi	%hi(0x80000000),%g5
71625c28e83SPiotr Jasiukajtis	fand	%f8,signbit,%f36
71725c28e83SPiotr Jasiukajtis	andn	%o0,%g5,%o0
71825c28e83SPiotr Jasiukajtis	andn	%l3,%g5,%l3
71925c28e83SPiotr Jasiukajtis	fcmpd	%fcc0,%f4,%f2
72025c28e83SPiotr Jasiukajtis	fmovd	%f4,%f0
72125c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,%f2,%f0
72225c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,%f4,%f2
72325c28e83SPiotr Jasiukajtis	mov	%o0,%o7
72425c28e83SPiotr Jasiukajtis	movg	%fcc0,%l3,%o0
72525c28e83SPiotr Jasiukajtis	movg	%fcc0,%o7,%l3
72625c28e83SPiotr Jasiukajtis	 lda	[%i1]%asi,%f10
72725c28e83SPiotr Jasiukajtis	 lda	[%i1+4]%asi,%f11
72825c28e83SPiotr Jasiukajtis	fbu,pn	%fcc0,.nan0_from_special0
72925c28e83SPiotr Jasiukajtis! delay slot
73025c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%f18
73125c28e83SPiotr Jasiukajtis	 fabsd	%f10,%f14
73225c28e83SPiotr Jasiukajtis	 lda	[%i3+4]%asi,%f19
73325c28e83SPiotr Jasiukajtis	sub	%l3,%o0,%l0
73425c28e83SPiotr Jasiukajtis	sub	%l3,%o3,%g5
73525c28e83SPiotr Jasiukajtis	sub	%l0,%o4,%o7
73625c28e83SPiotr Jasiukajtis	andcc	%g5,%o7,%g0
73725c28e83SPiotr Jasiukajtis	bge,pn	%icc,.big0
73825c28e83SPiotr Jasiukajtis! delay slot
73925c28e83SPiotr Jasiukajtis	nop
74025c28e83SPiotr Jasiukajtis	 fabsd	%f18,%f12
74125c28e83SPiotr Jasiukajtis	cmp	%o0,%o5
74225c28e83SPiotr Jasiukajtis	bl,pn	%icc,.small0
74325c28e83SPiotr Jasiukajtis! delay slot
74425c28e83SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
74525c28e83SPiotr Jasiukajtis	add	%l0,%o1,%l0
74625c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
74725c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last1
74825c28e83SPiotr Jasiukajtis! delay slot
74925c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
75025c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont1
75125c28e83SPiotr Jasiukajtis! delay slot
75225c28e83SPiotr Jasiukajtis	nop
75325c28e83SPiotr Jasiukajtis
75425c28e83SPiotr Jasiukajtis
75525c28e83SPiotr Jasiukajtis
75625c28e83SPiotr Jasiukajtis	.align	16
75725c28e83SPiotr Jasiukajtis.nan1:
75825c28e83SPiotr Jasiukajtis	fmuld	%f30,%f4,%f30
75925c28e83SPiotr Jasiukajtis	fsubd	%f0,%f6,%f4
76025c28e83SPiotr Jasiukajtis	faddd	%f2,%f8,%f8
76125c28e83SPiotr Jasiukajtis	fsubd	%f4,%f30,%f4
76225c28e83SPiotr Jasiukajtis.nan1_from_special1:
76325c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%f28
76425c28e83SPiotr Jasiukajtis	 lda	[%i3+4]%asi,%f29
76525c28e83SPiotr Jasiukajtis	 fabsd	%f20,%f24
76625c28e83SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
76725c28e83SPiotr Jasiukajtis	 fabsd	%f28,%f22
76825c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
76925c28e83SPiotr Jasiukajtis	 mov	%i5,%l6
77025c28e83SPiotr Jasiukajtis	ba,pt	%icc,.special1
77125c28e83SPiotr Jasiukajtis! delay slot
77225c28e83SPiotr Jasiukajtis	fmuld	%f10,%f12,%f16
77325c28e83SPiotr Jasiukajtis
77425c28e83SPiotr Jasiukajtis
77525c28e83SPiotr Jasiukajtis	.align	16
77625c28e83SPiotr Jasiukajtis.big1:
77725c28e83SPiotr Jasiukajtis	faddd	%f2,%f8,%f8
77825c28e83SPiotr Jasiukajtis	fsubd	%f4,%f30,%f4
77925c28e83SPiotr Jasiukajtis.big1_from_special1:
78025c28e83SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
78125c28e83SPiotr Jasiukajtis	 fabsd	%f28,%f22
78225c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
78325c28e83SPiotr Jasiukajtis	 mov	%i5,%l6
784*55fea89dSDan Cross	cmp	%g5,%o5
78525c28e83SPiotr Jasiukajtis	bge,pn	%icc,.return_ah1
78625c28e83SPiotr Jasiukajtis! delay slot
78725c28e83SPiotr Jasiukajtis	nop
78825c28e83SPiotr Jasiukajtis	cmp	%l1,%o4
78925c28e83SPiotr Jasiukajtis	bge,pn	%icc,1f
79025c28e83SPiotr Jasiukajtis! delay slot
79125c28e83SPiotr Jasiukajtis	nop
79225c28e83SPiotr Jasiukajtis	ldd	[%fp+twom3],%f16
79325c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f10
79425c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f12
79525c28e83SPiotr Jasiukajtis	add	%l1,%o1,%l1
79625c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
79725c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
79825c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last2
79925c28e83SPiotr Jasiukajtis! delay slot
80025c28e83SPiotr Jasiukajtis	nop
80125c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont2
80225c28e83SPiotr Jasiukajtis! delay slot
80325c28e83SPiotr Jasiukajtis	nop
80425c28e83SPiotr Jasiukajtis1:
80525c28e83SPiotr Jasiukajtis	fbg,pn	%fcc1,.return_ah1
80625c28e83SPiotr Jasiukajtis! delay slot
80725c28e83SPiotr Jasiukajtis	nop
80825c28e83SPiotr Jasiukajtis	fcmpd	%fcc3,%f18,signbit
80925c28e83SPiotr Jasiukajtis	fbl,pn	%fcc3,.return_ah1
81025c28e83SPiotr Jasiukajtis! delay slot
81125c28e83SPiotr Jasiukajtis	nop
81225c28e83SPiotr Jasiukajtis	ba,pt	%icc,.special1
81325c28e83SPiotr Jasiukajtis! delay slot
81425c28e83SPiotr Jasiukajtis	fdivd	%f10,%f12,%f16
81525c28e83SPiotr Jasiukajtis
81625c28e83SPiotr Jasiukajtis
81725c28e83SPiotr Jasiukajtis	.align	16
81825c28e83SPiotr Jasiukajtis.small1:
81925c28e83SPiotr Jasiukajtis	fsubd	%f4,%f30,%f4
82025c28e83SPiotr Jasiukajtis.small1_from_special1:
82125c28e83SPiotr Jasiukajtis	 fabsd	%f28,%f22
82225c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
82325c28e83SPiotr Jasiukajtis	 mov	%i5,%l6
82425c28e83SPiotr Jasiukajtis	fcmpd	%fcc3,%f10,signbit
82525c28e83SPiotr Jasiukajtis	fbe,pt	%fcc3,.return_ah1
82625c28e83SPiotr Jasiukajtis! delay slot
82725c28e83SPiotr Jasiukajtis	nop
82825c28e83SPiotr Jasiukajtis	ldd	[%fp+two110],%f16
82925c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f10
83025c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f12
83125c28e83SPiotr Jasiukajtis	st	%f10,[%fp+yscl]
83225c28e83SPiotr Jasiukajtis	ld	[%fp+yscl],%o7
83325c28e83SPiotr Jasiukajtis	st	%f12,[%fp+xscl]
83425c28e83SPiotr Jasiukajtis	ld	[%fp+xscl],%l1
83525c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
83625c28e83SPiotr Jasiukajtis	add	%l1,%o1,%l1
83725c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
83825c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
83925c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last2
84025c28e83SPiotr Jasiukajtis! delay slot
84125c28e83SPiotr Jasiukajtis	nop
84225c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont2
84325c28e83SPiotr Jasiukajtis! delay slot
84425c28e83SPiotr Jasiukajtis	nop
84525c28e83SPiotr Jasiukajtis
84625c28e83SPiotr Jasiukajtis
84725c28e83SPiotr Jasiukajtis	.align	16
84825c28e83SPiotr Jasiukajtis.return_ah1:
84925c28e83SPiotr Jasiukajtis	fzero	%f10
85025c28e83SPiotr Jasiukajtis	fmovdg	%fcc1,signbit,%f10
85125c28e83SPiotr Jasiukajtis	fxor	%f38,%f10,%f38
85225c28e83SPiotr Jasiukajtis	fxor	%f38,pio2,%f10
85325c28e83SPiotr Jasiukajtis	fxor	%f44,%f38,%f44
85425c28e83SPiotr Jasiukajtis	fnegd	pio2,%f16
85525c28e83SPiotr Jasiukajtis	fmovdg	%fcc1,signbit,%f16
85625c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
85725c28e83SPiotr Jasiukajtis	sub	%g5,%l1,%o7
85825c28e83SPiotr Jasiukajtis	cmp	%o7,%o5
859*55fea89dSDan Cross	bl,pt	%icc,1f
86025c28e83SPiotr Jasiukajtis! delay slot
86125c28e83SPiotr Jasiukajtis	nop
86225c28e83SPiotr Jasiukajtis	ldd	[%fp+pio4],%f10
86325c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
86425c28e83SPiotr Jasiukajtis1:
86525c28e83SPiotr Jasiukajtis	fdtoi	%f16,%f14
86625c28e83SPiotr Jasiukajtis.special1:
86725c28e83SPiotr Jasiukajtis	fxor	%f16,%f44,%f16
86825c28e83SPiotr Jasiukajtis	st	%f16,[%l5]
86925c28e83SPiotr Jasiukajtis	st	%f17,[%l5+4]
87025c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
87125c28e83SPiotr Jasiukajtis	bg,pn	%icc,1f
87225c28e83SPiotr Jasiukajtis! delay slot
87325c28e83SPiotr Jasiukajtis	nop
87425c28e83SPiotr Jasiukajtis	fmovd	pio2,%f20		! set up dummy argument
87525c28e83SPiotr Jasiukajtis	fmovd	pio2,%f28
87625c28e83SPiotr Jasiukajtis	fabsd	%f20,%f24
87725c28e83SPiotr Jasiukajtis	fabsd	%f28,%f22
87825c28e83SPiotr Jasiukajtis	sethi	%hi(0x3ff921fb),%o0
87925c28e83SPiotr Jasiukajtis	or	%o0,%lo(0x3ff921fb),%o0
88025c28e83SPiotr Jasiukajtis	mov	%o0,%l3
88125c28e83SPiotr Jasiukajtis	add	%fp,junk,%i5
88225c28e83SPiotr Jasiukajtis1:
88325c28e83SPiotr Jasiukajtis	fmovd	%f20,%f10
88425c28e83SPiotr Jasiukajtis	fmovd	%f28,%f18
88525c28e83SPiotr Jasiukajtis	fmovd	%f24,%f14
88625c28e83SPiotr Jasiukajtis	fmovd	%f22,%f12
88725c28e83SPiotr Jasiukajtis	mov	%i5,%l5
88825c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
88925c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
89025c28e83SPiotr Jasiukajtis	add	%i5,%l7,%i5
89125c28e83SPiotr Jasiukajtis	fand	%f10,signbit,%f44
89225c28e83SPiotr Jasiukajtis	sethi	%hi(0x80000000),%g5
89325c28e83SPiotr Jasiukajtis	fand	%f18,signbit,%f38
89425c28e83SPiotr Jasiukajtis	andn	%o0,%g5,%o0
89525c28e83SPiotr Jasiukajtis	andn	%l3,%g5,%l3
89625c28e83SPiotr Jasiukajtis	fcmpd	%fcc1,%f14,%f12
89725c28e83SPiotr Jasiukajtis	fmovd	%f14,%f10
89825c28e83SPiotr Jasiukajtis	fmovdg	%fcc1,%f12,%f10
89925c28e83SPiotr Jasiukajtis	fmovdg	%fcc1,%f14,%f12
90025c28e83SPiotr Jasiukajtis	mov	%o0,%o7
90125c28e83SPiotr Jasiukajtis	movg	%fcc1,%l3,%o0
90225c28e83SPiotr Jasiukajtis	movg	%fcc1,%o7,%l3
90325c28e83SPiotr Jasiukajtis	 lda	[%i1]%asi,%f20
90425c28e83SPiotr Jasiukajtis	 lda	[%i1+4]%asi,%f21
90525c28e83SPiotr Jasiukajtis	fbu,pn	%fcc1,.nan1_from_special1
90625c28e83SPiotr Jasiukajtis! delay slot
90725c28e83SPiotr Jasiukajtis	nop
90825c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%f28
90925c28e83SPiotr Jasiukajtis	 lda	[%i3+4]%asi,%f29
91025c28e83SPiotr Jasiukajtis	 fabsd	%f20,%f24
91125c28e83SPiotr Jasiukajtis	sub	%l3,%o0,%l1
91225c28e83SPiotr Jasiukajtis	sub	%l3,%o3,%g5
91325c28e83SPiotr Jasiukajtis	sub	%l1,%o4,%o7
91425c28e83SPiotr Jasiukajtis	andcc	%g5,%o7,%g0
91525c28e83SPiotr Jasiukajtis	bge,pn	%icc,.big1_from_special1
91625c28e83SPiotr Jasiukajtis! delay slot
91725c28e83SPiotr Jasiukajtis	nop
91825c28e83SPiotr Jasiukajtis	cmp	%o0,%o5
91925c28e83SPiotr Jasiukajtis	bl,pn	%icc,.small1_from_special1
92025c28e83SPiotr Jasiukajtis! delay slot
92125c28e83SPiotr Jasiukajtis	 lda	[%i1]%asi,%o0
92225c28e83SPiotr Jasiukajtis	 fabsd	%f28,%f22
92325c28e83SPiotr Jasiukajtis	 lda	[%i3]%asi,%l3
92425c28e83SPiotr Jasiukajtis	add	%l1,%o1,%l1
92525c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
92625c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
92725c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last2
92825c28e83SPiotr Jasiukajtis! delay slot
92925c28e83SPiotr Jasiukajtis	 mov	%i5,%l6
93025c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont2
93125c28e83SPiotr Jasiukajtis! delay slot
93225c28e83SPiotr Jasiukajtis	nop
93325c28e83SPiotr Jasiukajtis
93425c28e83SPiotr Jasiukajtis
93525c28e83SPiotr Jasiukajtis
93625c28e83SPiotr Jasiukajtis	.align	16
93725c28e83SPiotr Jasiukajtis.nan2:
93825c28e83SPiotr Jasiukajtis	fmovdg	%fcc0,signbit,%f0
93925c28e83SPiotr Jasiukajtis	 fmuld	%f32,%f14,%f32
94025c28e83SPiotr Jasiukajtis	 fsubd	%f10,%f16,%f14
94125c28e83SPiotr Jasiukajtis	 faddd	%f12,%f18,%f18
94225c28e83SPiotr Jasiukajtis	fxor	%f36,%f0,%f36
94325c28e83SPiotr Jasiukajtis.nan2_from_special2:
94425c28e83SPiotr Jasiukajtis	ba,pt	%icc,.special2
94525c28e83SPiotr Jasiukajtis! delay slot
94625c28e83SPiotr Jasiukajtis	fmuld	%f20,%f22,%f26
94725c28e83SPiotr Jasiukajtis
94825c28e83SPiotr Jasiukajtis
94925c28e83SPiotr Jasiukajtis	.align	16
95025c28e83SPiotr Jasiukajtis.big2:
95125c28e83SPiotr Jasiukajtis	fxor	%f36,%f0,%f36
95225c28e83SPiotr Jasiukajtis.big2_from_special2:
953*55fea89dSDan Cross	cmp	%g5,%o5
95425c28e83SPiotr Jasiukajtis	bge,pn	%icc,.return_ah2
95525c28e83SPiotr Jasiukajtis! delay slot
95625c28e83SPiotr Jasiukajtis	nop
95725c28e83SPiotr Jasiukajtis	cmp	%l2,%o4
95825c28e83SPiotr Jasiukajtis	bge,pn	%icc,1f
95925c28e83SPiotr Jasiukajtis! delay slot
96025c28e83SPiotr Jasiukajtis	nop
96125c28e83SPiotr Jasiukajtis	ldd	[%fp+twom3],%f26
96225c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f20
96325c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f22
96425c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont3
96525c28e83SPiotr Jasiukajtis! delay slot
96625c28e83SPiotr Jasiukajtis	nop
96725c28e83SPiotr Jasiukajtis1:
96825c28e83SPiotr Jasiukajtis	fbg,pn	%fcc2,.return_ah2
96925c28e83SPiotr Jasiukajtis! delay slot
97025c28e83SPiotr Jasiukajtis	nop
97125c28e83SPiotr Jasiukajtis	fcmpd	%fcc3,%f28,signbit
97225c28e83SPiotr Jasiukajtis	fbl,pn	%fcc3,.return_ah2
97325c28e83SPiotr Jasiukajtis! delay slot
97425c28e83SPiotr Jasiukajtis	nop
97525c28e83SPiotr Jasiukajtis	ba,pt	%icc,.special2
97625c28e83SPiotr Jasiukajtis! delay slot
97725c28e83SPiotr Jasiukajtis	fdivd	%f20,%f22,%f26
97825c28e83SPiotr Jasiukajtis
97925c28e83SPiotr Jasiukajtis
98025c28e83SPiotr Jasiukajtis	.align	16
98125c28e83SPiotr Jasiukajtis.small2:
98225c28e83SPiotr Jasiukajtis	fcmpd	%fcc3,%f20,signbit
98325c28e83SPiotr Jasiukajtis	fbe,pt	%fcc3,.return_ah2
98425c28e83SPiotr Jasiukajtis! delay slot
98525c28e83SPiotr Jasiukajtis	nop
98625c28e83SPiotr Jasiukajtis	ldd	[%fp+two110],%f26
98725c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f20
98825c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f22
98925c28e83SPiotr Jasiukajtis	st	%f20,[%fp+yscl]
99025c28e83SPiotr Jasiukajtis	ld	[%fp+yscl],%o7
99125c28e83SPiotr Jasiukajtis	st	%f22,[%fp+xscl]
99225c28e83SPiotr Jasiukajtis	ld	[%fp+xscl],%l2
99325c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
99425c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont3
99525c28e83SPiotr Jasiukajtis! delay slot
99625c28e83SPiotr Jasiukajtis	nop
99725c28e83SPiotr Jasiukajtis
99825c28e83SPiotr Jasiukajtis
99925c28e83SPiotr Jasiukajtis	.align	16
100025c28e83SPiotr Jasiukajtis.return_ah2:
100125c28e83SPiotr Jasiukajtis	fzero	%f20
100225c28e83SPiotr Jasiukajtis	fmovdg	%fcc2,signbit,%f20
100325c28e83SPiotr Jasiukajtis	fxor	%f40,%f20,%f40
100425c28e83SPiotr Jasiukajtis	fxor	%f40,pio2,%f20
100525c28e83SPiotr Jasiukajtis	fxor	%f46,%f40,%f46
100625c28e83SPiotr Jasiukajtis	fnegd	pio2,%f26
100725c28e83SPiotr Jasiukajtis	fmovdg	%fcc2,signbit,%f26
100825c28e83SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
100925c28e83SPiotr Jasiukajtis	sub	%g5,%l2,%o7
101025c28e83SPiotr Jasiukajtis	cmp	%o7,%o5
1011*55fea89dSDan Cross	bl,pt	%icc,1f
101225c28e83SPiotr Jasiukajtis! delay slot
101325c28e83SPiotr Jasiukajtis	nop
101425c28e83SPiotr Jasiukajtis	ldd	[%fp+pio4],%f20
101525c28e83SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
101625c28e83SPiotr Jasiukajtis1:
101725c28e83SPiotr Jasiukajtis	fdtoi	%f26,%f24
101825c28e83SPiotr Jasiukajtis.special2:
101925c28e83SPiotr Jasiukajtis	fxor	%f26,%f46,%f26
102025c28e83SPiotr Jasiukajtis	st	%f26,[%l6]
102125c28e83SPiotr Jasiukajtis	st	%f27,[%l6+4]
102225c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
102325c28e83SPiotr Jasiukajtis	bg,pn	%icc,1f
102425c28e83SPiotr Jasiukajtis! delay slot
102525c28e83SPiotr Jasiukajtis	nop
102625c28e83SPiotr Jasiukajtis	fmovd	pio2,%f20		! set up dummy argument
102725c28e83SPiotr Jasiukajtis	fmovd	pio2,%f22
102825c28e83SPiotr Jasiukajtis	fzero	%f40
102925c28e83SPiotr Jasiukajtis	fzero	%f46
103025c28e83SPiotr Jasiukajtis	mov	0,%l2
103125c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont3
103225c28e83SPiotr Jasiukajtis! delay slot
103325c28e83SPiotr Jasiukajtis	add	%fp,junk,%l6
103425c28e83SPiotr Jasiukajtis1:
103525c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f20
103625c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f21
103725c28e83SPiotr Jasiukajtis	lda	[%i3]%asi,%f28
103825c28e83SPiotr Jasiukajtis	lda	[%i3+4]%asi,%f29
103925c28e83SPiotr Jasiukajtis	fabsd	%f20,%f24
104025c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%o0
104125c28e83SPiotr Jasiukajtis	fabsd	%f28,%f22
104225c28e83SPiotr Jasiukajtis	lda	[%i3]%asi,%l3
104325c28e83SPiotr Jasiukajtis	mov	%i5,%l6
104425c28e83SPiotr Jasiukajtis	fand	%f20,signbit,%f46
104525c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
104625c28e83SPiotr Jasiukajtis	fand	%f28,signbit,%f40
104725c28e83SPiotr Jasiukajtis	fcmpd	%fcc2,%f24,%f22
104825c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3
104925c28e83SPiotr Jasiukajtis	add	%i5,%l7,%i5
105025c28e83SPiotr Jasiukajtis	fmovd	%f24,%f20
105125c28e83SPiotr Jasiukajtis	sethi	%hi(0x80000000),%g5
105225c28e83SPiotr Jasiukajtis	andn	%o0,%g5,%o0
105325c28e83SPiotr Jasiukajtis	andn	%l3,%g5,%l3
105425c28e83SPiotr Jasiukajtis	fmovdg	%fcc2,%f22,%f20
105525c28e83SPiotr Jasiukajtis	fmovdg	%fcc2,%f24,%f22
105625c28e83SPiotr Jasiukajtis	mov	%o0,%o7
105725c28e83SPiotr Jasiukajtis	movg	%fcc2,%l3,%o0
105825c28e83SPiotr Jasiukajtis	movg	%fcc2,%o7,%l3
105925c28e83SPiotr Jasiukajtis	fbu,pn	%fcc2,.nan2_from_special2
106025c28e83SPiotr Jasiukajtis! delay slot
106125c28e83SPiotr Jasiukajtis	nop
106225c28e83SPiotr Jasiukajtis	sub	%l3,%o0,%l2
106325c28e83SPiotr Jasiukajtis	sub	%l3,%o3,%g5
106425c28e83SPiotr Jasiukajtis	sub	%l2,%o4,%o7
106525c28e83SPiotr Jasiukajtis	andcc	%g5,%o7,%g0
106625c28e83SPiotr Jasiukajtis	bge,pn	%icc,.big2_from_special2
106725c28e83SPiotr Jasiukajtis! delay slot
106825c28e83SPiotr Jasiukajtis	nop
106925c28e83SPiotr Jasiukajtis	cmp	%o0,%o5
107025c28e83SPiotr Jasiukajtis	bl,pn	%icc,.small2
107125c28e83SPiotr Jasiukajtis! delay slot
107225c28e83SPiotr Jasiukajtis	nop
107325c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont3
107425c28e83SPiotr Jasiukajtis! delay slot
107525c28e83SPiotr Jasiukajtis	nop
107625c28e83SPiotr Jasiukajtis
107725c28e83SPiotr Jasiukajtis	SET_SIZE(__vatan2)
107825c28e83SPiotr Jasiukajtis
1079