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	"__vsin.S"
3025c28e83SPiotr Jasiukajtis
3125c28e83SPiotr Jasiukajtis#include "libm.h"
3225c28e83SPiotr Jasiukajtis
3325c28e83SPiotr Jasiukajtis	RO_DATA
3425c28e83SPiotr Jasiukajtis	.align	64
3525c28e83SPiotr Jasiukajtisconstants:
3625c28e83SPiotr Jasiukajtis	.word	0x3ec718e3,0xa6972785
3725c28e83SPiotr Jasiukajtis	.word	0x3ef9fd39,0x94293940
3825c28e83SPiotr Jasiukajtis	.word	0xbf2a019f,0x75ee4be1
3925c28e83SPiotr Jasiukajtis	.word	0xbf56c16b,0xba552569
4025c28e83SPiotr Jasiukajtis	.word	0x3f811111,0x1108c703
4125c28e83SPiotr Jasiukajtis	.word	0x3fa55555,0x554f5b35
4225c28e83SPiotr Jasiukajtis	.word	0xbfc55555,0x555554d0
4325c28e83SPiotr Jasiukajtis	.word	0xbfdfffff,0xffffff85
4425c28e83SPiotr Jasiukajtis	.word	0x3ff00000,0x00000000
4525c28e83SPiotr Jasiukajtis	.word	0xbfc55555,0x5551fc28
4625c28e83SPiotr Jasiukajtis	.word	0x3f811107,0x62eacc9d
4725c28e83SPiotr Jasiukajtis	.word	0xbfdfffff,0xffff6328
4825c28e83SPiotr Jasiukajtis	.word	0x3fa55551,0x5f7acf0c
4925c28e83SPiotr Jasiukajtis	.word	0x3fe45f30,0x6dc9c883
5025c28e83SPiotr Jasiukajtis	.word	0x43380000,0x00000000
5125c28e83SPiotr Jasiukajtis	.word	0x3ff921fb,0x54400000
5225c28e83SPiotr Jasiukajtis	.word	0x3dd0b461,0x1a600000
5325c28e83SPiotr Jasiukajtis	.word	0x3ba3198a,0x2e000000
5425c28e83SPiotr Jasiukajtis	.word	0x397b839a,0x252049c1
5525c28e83SPiotr Jasiukajtis	.word	0x80000000,0x00004000
5625c28e83SPiotr Jasiukajtis	.word	0xffff8000,0x00000000	! N.B.: low-order words used
5725c28e83SPiotr Jasiukajtis	.word	0x3fc90000,0x80000000	! for sign bit hacking; see
5825c28e83SPiotr Jasiukajtis	.word	0x3fc40000,0x00000000	! references to "thresh" below
5925c28e83SPiotr Jasiukajtis
6025c28e83SPiotr Jasiukajtis#define p4		0x0
6125c28e83SPiotr Jasiukajtis#define q4		0x08
6225c28e83SPiotr Jasiukajtis#define p3		0x10
6325c28e83SPiotr Jasiukajtis#define q3		0x18
6425c28e83SPiotr Jasiukajtis#define p2		0x20
6525c28e83SPiotr Jasiukajtis#define q2		0x28
6625c28e83SPiotr Jasiukajtis#define p1		0x30
6725c28e83SPiotr Jasiukajtis#define q1		0x38
6825c28e83SPiotr Jasiukajtis#define one		0x40
6925c28e83SPiotr Jasiukajtis#define pp1		0x48
7025c28e83SPiotr Jasiukajtis#define pp2		0x50
7125c28e83SPiotr Jasiukajtis#define qq1		0x58
7225c28e83SPiotr Jasiukajtis#define qq2		0x60
7325c28e83SPiotr Jasiukajtis#define invpio2		0x68
7425c28e83SPiotr Jasiukajtis#define round		0x70
7525c28e83SPiotr Jasiukajtis#define pio2_1		0x78
7625c28e83SPiotr Jasiukajtis#define pio2_2		0x80
7725c28e83SPiotr Jasiukajtis#define pio2_3		0x88
7825c28e83SPiotr Jasiukajtis#define pio2_3t		0x90
7925c28e83SPiotr Jasiukajtis#define f30val		0x98
8025c28e83SPiotr Jasiukajtis#define mask		0xa0
8125c28e83SPiotr Jasiukajtis#define thresh		0xa8
8225c28e83SPiotr Jasiukajtis
8325c28e83SPiotr Jasiukajtis! local storage indices
8425c28e83SPiotr Jasiukajtis
8525c28e83SPiotr Jasiukajtis#define xsave		STACK_BIAS-0x8
8625c28e83SPiotr Jasiukajtis#define ysave		STACK_BIAS-0x10
8725c28e83SPiotr Jasiukajtis#define nsave		STACK_BIAS-0x14
8825c28e83SPiotr Jasiukajtis#define sxsave		STACK_BIAS-0x18
8925c28e83SPiotr Jasiukajtis#define sysave		STACK_BIAS-0x1c
9025c28e83SPiotr Jasiukajtis#define biguns		STACK_BIAS-0x20
9125c28e83SPiotr Jasiukajtis#define n2		STACK_BIAS-0x24
9225c28e83SPiotr Jasiukajtis#define n1		STACK_BIAS-0x28
9325c28e83SPiotr Jasiukajtis#define n0		STACK_BIAS-0x2c
9425c28e83SPiotr Jasiukajtis#define x2_1		STACK_BIAS-0x40
9525c28e83SPiotr Jasiukajtis#define x1_1		STACK_BIAS-0x50
9625c28e83SPiotr Jasiukajtis#define x0_1		STACK_BIAS-0x60
9725c28e83SPiotr Jasiukajtis#define y2_0		STACK_BIAS-0x70
9825c28e83SPiotr Jasiukajtis#define y1_0		STACK_BIAS-0x80
9925c28e83SPiotr Jasiukajtis#define y0_0		STACK_BIAS-0x90
10025c28e83SPiotr Jasiukajtis! sizeof temp storage - must be a multiple of 16 for V9
10125c28e83SPiotr Jasiukajtis#define tmps		0x90
10225c28e83SPiotr Jasiukajtis
10325c28e83SPiotr Jasiukajtis!--------------------------------------------------------------
10425c28e83SPiotr Jasiukajtis!	Some defines to keep code more readable
10525c28e83SPiotr Jasiukajtis#define LIM_l6		%l6
10625c28e83SPiotr Jasiukajtis!	in primary range, contains |x| upper limit when cos(x)=1.
10725c28e83SPiotr Jasiukajtis!	in transferring to medium range, denotes what loop was active.
10825c28e83SPiotr Jasiukajtis!--------------------------------------------------------------
10925c28e83SPiotr Jasiukajtis
11025c28e83SPiotr Jasiukajtis	ENTRY(__vsin)
11125c28e83SPiotr Jasiukajtis	save	%sp,-SA(MINFRAME)-tmps,%sp
11225c28e83SPiotr Jasiukajtis	PIC_SETUP(g5)
11325c28e83SPiotr Jasiukajtis	PIC_SET(g5,__vlibm_TBL_sincos_hi,l3)
11425c28e83SPiotr Jasiukajtis	PIC_SET(g5,__vlibm_TBL_sincos_lo,l4)
11525c28e83SPiotr Jasiukajtis	PIC_SET(g5,constants,l5)
11625c28e83SPiotr Jasiukajtis	mov	%l5,%g1
11725c28e83SPiotr Jasiukajtis	wr	%g0,0x82,%asi		! set %asi for non-faulting loads
11825c28e83SPiotr Jasiukajtis
11925c28e83SPiotr Jasiukajtis! ========== primary range ==========
12025c28e83SPiotr Jasiukajtis
12125c28e83SPiotr Jasiukajtis! register use
12225c28e83SPiotr Jasiukajtis
12325c28e83SPiotr Jasiukajtis! i0  n
12425c28e83SPiotr Jasiukajtis! i1  x
12525c28e83SPiotr Jasiukajtis! i2  stridex
12625c28e83SPiotr Jasiukajtis! i3  y
12725c28e83SPiotr Jasiukajtis! i4  stridey
12825c28e83SPiotr Jasiukajtis! i5  0x80000000
12925c28e83SPiotr Jasiukajtis
13025c28e83SPiotr Jasiukajtis! l0  hx0
13125c28e83SPiotr Jasiukajtis! l1  hx1
13225c28e83SPiotr Jasiukajtis! l2  hx2
13325c28e83SPiotr Jasiukajtis! l3  __vlibm_TBL_sincos_hi
13425c28e83SPiotr Jasiukajtis! l4  __vlibm_TBL_sincos_lo
13525c28e83SPiotr Jasiukajtis! l5  0x3fc90000
13625c28e83SPiotr Jasiukajtis! l6  0x3e400000
13725c28e83SPiotr Jasiukajtis! l7  0x3fe921fb
13825c28e83SPiotr Jasiukajtis
13925c28e83SPiotr Jasiukajtis! the following are 64-bit registers in both V8+ and V9
14025c28e83SPiotr Jasiukajtis
14125c28e83SPiotr Jasiukajtis! g1  scratch
142*55fea89dSDan Cross! g5
14325c28e83SPiotr Jasiukajtis
14425c28e83SPiotr Jasiukajtis! o0  py0
14525c28e83SPiotr Jasiukajtis! o1  py1
14625c28e83SPiotr Jasiukajtis! o2  py2
14725c28e83SPiotr Jasiukajtis! o3  oy0
14825c28e83SPiotr Jasiukajtis! o4  oy1
14925c28e83SPiotr Jasiukajtis! o5  oy2
15025c28e83SPiotr Jasiukajtis! o7  scratch
15125c28e83SPiotr Jasiukajtis
15225c28e83SPiotr Jasiukajtis! f0  x0
153*55fea89dSDan Cross! f2
154*55fea89dSDan Cross! f4
155*55fea89dSDan Cross! f6
15625c28e83SPiotr Jasiukajtis! f8  scratch for table base
15725c28e83SPiotr Jasiukajtis! f9  signbit0
15825c28e83SPiotr Jasiukajtis! f10 x1
159*55fea89dSDan Cross! f12
160*55fea89dSDan Cross! f14
161*55fea89dSDan Cross! f16
16225c28e83SPiotr Jasiukajtis! f18 scratch for table base
16325c28e83SPiotr Jasiukajtis! f19 signbit1
16425c28e83SPiotr Jasiukajtis! f20 x2
165*55fea89dSDan Cross! f22
166*55fea89dSDan Cross! f24
167*55fea89dSDan Cross! f26
16825c28e83SPiotr Jasiukajtis! f28 scratch for table base
16925c28e83SPiotr Jasiukajtis! f29 signbit2
17025c28e83SPiotr Jasiukajtis! f30 0x80000000
17125c28e83SPiotr Jasiukajtis! f31 0x4000
172*55fea89dSDan Cross! f32
173*55fea89dSDan Cross! f34
174*55fea89dSDan Cross! f36
175*55fea89dSDan Cross! f38
176*55fea89dSDan Cross! f40
177*55fea89dSDan Cross! f42
17825c28e83SPiotr Jasiukajtis! f44 0xffff800000000000
17925c28e83SPiotr Jasiukajtis! f46 p1
18025c28e83SPiotr Jasiukajtis! f48 p2
18125c28e83SPiotr Jasiukajtis! f50 p3
18225c28e83SPiotr Jasiukajtis! f52 p4
18325c28e83SPiotr Jasiukajtis! f54 one
18425c28e83SPiotr Jasiukajtis! f56 pp1
18525c28e83SPiotr Jasiukajtis! f58 pp2
18625c28e83SPiotr Jasiukajtis! f60 qq1
18725c28e83SPiotr Jasiukajtis! f62 qq2
18825c28e83SPiotr Jasiukajtis
18925c28e83SPiotr Jasiukajtis#ifdef __sparcv9
19025c28e83SPiotr Jasiukajtis	stx	%i1,[%fp+xsave]		! save arguments
19125c28e83SPiotr Jasiukajtis	stx	%i3,[%fp+ysave]
19225c28e83SPiotr Jasiukajtis#else
19325c28e83SPiotr Jasiukajtis	st	%i1,[%fp+xsave]		! save arguments
19425c28e83SPiotr Jasiukajtis	st	%i3,[%fp+ysave]
19525c28e83SPiotr Jasiukajtis#endif
19625c28e83SPiotr Jasiukajtis	st	%i0,[%fp+nsave]
19725c28e83SPiotr Jasiukajtis	st	%i2,[%fp+sxsave]
19825c28e83SPiotr Jasiukajtis	st	%i4,[%fp+sysave]
19925c28e83SPiotr Jasiukajtis	sethi	%hi(0x80000000),%i5	! load/set up constants
20025c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc90000),%l5
20125c28e83SPiotr Jasiukajtis	sethi	%hi(0x3e400000),LIM_l6
20225c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fe921fb),%l7
20325c28e83SPiotr Jasiukajtis	or	%l7,%lo(0x3fe921fb),%l7
20425c28e83SPiotr Jasiukajtis	ldd	[%g1+f30val],%f30
20525c28e83SPiotr Jasiukajtis	ldd	[%g1+mask],%f44
20625c28e83SPiotr Jasiukajtis	ldd	[%g1+p1],%f46
20725c28e83SPiotr Jasiukajtis	ldd	[%g1+p2],%f48
20825c28e83SPiotr Jasiukajtis	ldd	[%g1+p3],%f50
20925c28e83SPiotr Jasiukajtis	ldd	[%g1+p4],%f52
21025c28e83SPiotr Jasiukajtis	ldd	[%g1+one],%f54
21125c28e83SPiotr Jasiukajtis	ldd	[%g1+pp1],%f56
21225c28e83SPiotr Jasiukajtis	ldd	[%g1+pp2],%f58
21325c28e83SPiotr Jasiukajtis	ldd	[%g1+qq1],%f60
21425c28e83SPiotr Jasiukajtis	ldd	[%g1+qq2],%f62
21525c28e83SPiotr Jasiukajtis	sll	%i2,3,%i2		! scale strides
21625c28e83SPiotr Jasiukajtis	sll	%i4,3,%i4
21725c28e83SPiotr Jasiukajtis	add	%fp,x0_1,%o3		! precondition loop
21825c28e83SPiotr Jasiukajtis	add	%fp,x0_1,%o4
21925c28e83SPiotr Jasiukajtis	add	%fp,x0_1,%o5
22025c28e83SPiotr Jasiukajtis	ld	[%i1],%l0		! hx = *x
22125c28e83SPiotr Jasiukajtis	ld	[%i1],%f0
22225c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f1
22325c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
22425c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
22525c28e83SPiotr Jasiukajtis
22625c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop0
22725c28e83SPiotr Jasiukajtis! delay slot
22825c28e83SPiotr Jasiukajtis	nop
22925c28e83SPiotr Jasiukajtis
23025c28e83SPiotr Jasiukajtis	.align 32
23125c28e83SPiotr Jasiukajtis.loop0:
23225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l1		! preload next argument
23325c28e83SPiotr Jasiukajtis	sub	%l0,LIM_l6,%g1
23425c28e83SPiotr Jasiukajtis	sub	%l7,%l0,%o7
23525c28e83SPiotr Jasiukajtis	fands	%f0,%f30,%f9		! save signbit
23625c28e83SPiotr Jasiukajtis
23725c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f10
23825c28e83SPiotr Jasiukajtis	orcc	%o7,%g1,%g0
23925c28e83SPiotr Jasiukajtis	mov	%i3,%o0			! py0 = y
24025c28e83SPiotr Jasiukajtis	bl,pn	%icc,.range0		! if hx < 0x3e400000 or > 0x3fe921fb
24125c28e83SPiotr Jasiukajtis
24225c28e83SPiotr Jasiukajtis! delay slot
24325c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f11
24425c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
24525c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
24625c28e83SPiotr Jasiukajtis	ble,pn	%icc,.endloop1
24725c28e83SPiotr Jasiukajtis
24825c28e83SPiotr Jasiukajtis! delay slot
24925c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l1
25025c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
25125c28e83SPiotr Jasiukajtis	fabsd	%f0,%f0
25225c28e83SPiotr Jasiukajtis	fmuld	%f54,%f54,%f54		! one*one; a nop for alignment only
25325c28e83SPiotr Jasiukajtis
25425c28e83SPiotr Jasiukajtis.loop1:
25525c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l2		! preload next argument
25625c28e83SPiotr Jasiukajtis	sub	%l1,LIM_l6,%g1
25725c28e83SPiotr Jasiukajtis	sub	%l7,%l1,%o7
25825c28e83SPiotr Jasiukajtis	fands	%f10,%f30,%f19		! save signbit
25925c28e83SPiotr Jasiukajtis
26025c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f20
26125c28e83SPiotr Jasiukajtis	orcc	%o7,%g1,%g0
26225c28e83SPiotr Jasiukajtis	mov	%i3,%o1			! py1 = y
26325c28e83SPiotr Jasiukajtis	bl,pn	%icc,.range1		! if hx < 0x3e400000 or > 0x3fe921fb
26425c28e83SPiotr Jasiukajtis
26525c28e83SPiotr Jasiukajtis! delay slot
26625c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f21
26725c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
26825c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
26925c28e83SPiotr Jasiukajtis	ble,pn	%icc,.endloop2
27025c28e83SPiotr Jasiukajtis
27125c28e83SPiotr Jasiukajtis! delay slot
27225c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l2
27325c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
27425c28e83SPiotr Jasiukajtis	fabsd	%f10,%f10
27525c28e83SPiotr Jasiukajtis	fmuld	%f54,%f54,%f54		! one*one; a nop for alignment only
27625c28e83SPiotr Jasiukajtis
27725c28e83SPiotr Jasiukajtis.loop2:
27825c28e83SPiotr Jasiukajtis	st	%f6,[%o3]
27925c28e83SPiotr Jasiukajtis	sub	%l2,LIM_l6,%g1
28025c28e83SPiotr Jasiukajtis	sub	%l7,%l2,%o7
28125c28e83SPiotr Jasiukajtis	fands	%f20,%f30,%f29		! save signbit
28225c28e83SPiotr Jasiukajtis
28325c28e83SPiotr Jasiukajtis	st	%f7,[%o3+4]
28425c28e83SPiotr Jasiukajtis	orcc	%g1,%o7,%g0
28525c28e83SPiotr Jasiukajtis	mov	%i3,%o2			! py2 = y
28625c28e83SPiotr Jasiukajtis	bl,pn	%icc,.range2		! if hx < 0x3e400000 or > 0x3fe921fb
28725c28e83SPiotr Jasiukajtis
28825c28e83SPiotr Jasiukajtis! delay slot
28925c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
29025c28e83SPiotr Jasiukajtis	cmp	%l0,%l5
29125c28e83SPiotr Jasiukajtis	fabsd	%f20,%f20
29225c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case4
29325c28e83SPiotr Jasiukajtis
29425c28e83SPiotr Jasiukajtis! delay slot
29525c28e83SPiotr Jasiukajtis	st	%f16,[%o4]
29625c28e83SPiotr Jasiukajtis	cmp	%l1,%l5
29725c28e83SPiotr Jasiukajtis	fpadd32s %f0,%f31,%f8
29825c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case2
29925c28e83SPiotr Jasiukajtis
30025c28e83SPiotr Jasiukajtis! delay slot
30125c28e83SPiotr Jasiukajtis	st	%f17,[%o4+4]
30225c28e83SPiotr Jasiukajtis	cmp	%l2,%l5
30325c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
30425c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case1
30525c28e83SPiotr Jasiukajtis
30625c28e83SPiotr Jasiukajtis! delay slot
30725c28e83SPiotr Jasiukajtis	st	%f26,[%o5]
30825c28e83SPiotr Jasiukajtis	mov	%o0,%o3
30925c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
31025c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
31125c28e83SPiotr Jasiukajtis
31225c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
31325c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f2
31425c28e83SPiotr Jasiukajtis	mov	%o1,%o4
31525c28e83SPiotr Jasiukajtis
31625c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f12
31725c28e83SPiotr Jasiukajtis	mov	%o2,%o5
31825c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
31925c28e83SPiotr Jasiukajtis
32025c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f22
32125c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
32225c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
32325c28e83SPiotr Jasiukajtis
32425c28e83SPiotr Jasiukajtis	fsubd	%f0,%f2,%f0
32525c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
32625c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
32725c28e83SPiotr Jasiukajtis
32825c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
32925c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
33025c28e83SPiotr Jasiukajtis
33125c28e83SPiotr Jasiukajtis	fsubd	%f20,%f22,%f20
33225c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
33325c28e83SPiotr Jasiukajtis
33425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
33525c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
33625c28e83SPiotr Jasiukajtis
33725c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
33825c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
33925c28e83SPiotr Jasiukajtis
34025c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
34125c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
34225c28e83SPiotr Jasiukajtis
34325c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
34425c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
34525c28e83SPiotr Jasiukajtis
34625c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
34725c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f36
34825c28e83SPiotr Jasiukajtis
34925c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
35025c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f40
35125c28e83SPiotr Jasiukajtis
35225c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
35325c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
35425c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f34
35525c28e83SPiotr Jasiukajtis
35625c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
35725c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
35825c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f38
35925c28e83SPiotr Jasiukajtis
36025c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
36125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
36225c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f42
36325c28e83SPiotr Jasiukajtis
36425c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
36525c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
36625c28e83SPiotr Jasiukajtis
36725c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
36825c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
36925c28e83SPiotr Jasiukajtis
37025c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
37125c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
37225c28e83SPiotr Jasiukajtis
37325c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
37425c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
37525c28e83SPiotr Jasiukajtis
37625c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
37725c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
37825c28e83SPiotr Jasiukajtis
37925c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
38025c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
38125c28e83SPiotr Jasiukajtis
38225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
38325c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f2
38425c28e83SPiotr Jasiukajtis
38525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
38625c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f12
38725c28e83SPiotr Jasiukajtis
38825c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
38925c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f22
39025c28e83SPiotr Jasiukajtis
39125c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
39225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
39325c28e83SPiotr Jasiukajtis
39425c28e83SPiotr Jasiukajtis	fmuld	%f14,%f36,%f14
39525c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
39625c28e83SPiotr Jasiukajtis
39725c28e83SPiotr Jasiukajtis	fmuld	%f24,%f40,%f24
39825c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
39925c28e83SPiotr Jasiukajtis
40025c28e83SPiotr Jasiukajtis	fmuld	%f6,%f34,%f6
40125c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
40225c28e83SPiotr Jasiukajtis
40325c28e83SPiotr Jasiukajtis	fmuld	%f16,%f38,%f16
40425c28e83SPiotr Jasiukajtis
40525c28e83SPiotr Jasiukajtis	fmuld	%f26,%f42,%f26
40625c28e83SPiotr Jasiukajtis
40725c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
40825c28e83SPiotr Jasiukajtis
40925c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
41025c28e83SPiotr Jasiukajtis
41125c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
41225c28e83SPiotr Jasiukajtis
41325c28e83SPiotr Jasiukajtis	faddd	%f6,%f2,%f6
41425c28e83SPiotr Jasiukajtis
41525c28e83SPiotr Jasiukajtis	faddd	%f16,%f12,%f16
41625c28e83SPiotr Jasiukajtis
41725c28e83SPiotr Jasiukajtis	faddd	%f26,%f22,%f26
41825c28e83SPiotr Jasiukajtis
41925c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
42025c28e83SPiotr Jasiukajtis
42125c28e83SPiotr Jasiukajtis	faddd	%f16,%f36,%f16
42225c28e83SPiotr Jasiukajtis
42325c28e83SPiotr Jasiukajtis	faddd	%f26,%f40,%f26
42425c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
42525c28e83SPiotr Jasiukajtis
42625c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
42725c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
42825c28e83SPiotr Jasiukajtis
42925c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
43025c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
43125c28e83SPiotr Jasiukajtis
43225c28e83SPiotr Jasiukajtis! delay slot
43325c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
43425c28e83SPiotr Jasiukajtis
43525c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
43625c28e83SPiotr Jasiukajtis! delay slot
43725c28e83SPiotr Jasiukajtis	nop
43825c28e83SPiotr Jasiukajtis
43925c28e83SPiotr Jasiukajtis	.align	32
44025c28e83SPiotr Jasiukajtis.case1:
44125c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
44225c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
44325c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
44425c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f2
44525c28e83SPiotr Jasiukajtis
44625c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
44725c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
44825c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f12
44925c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
45025c28e83SPiotr Jasiukajtis
45125c28e83SPiotr Jasiukajtis	fsubd	%f0,%f2,%f0
45225c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
45325c28e83SPiotr Jasiukajtis	mov	%o0,%o3
45425c28e83SPiotr Jasiukajtis
45525c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
45625c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
45725c28e83SPiotr Jasiukajtis	mov	%o1,%o4
45825c28e83SPiotr Jasiukajtis
45925c28e83SPiotr Jasiukajtis	fmuld	%f22,%f52,%f24
46025c28e83SPiotr Jasiukajtis	mov	%o2,%o5
46125c28e83SPiotr Jasiukajtis
46225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
46325c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
46425c28e83SPiotr Jasiukajtis
46525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
46625c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
46725c28e83SPiotr Jasiukajtis
46825c28e83SPiotr Jasiukajtis	faddd	%f24,%f50,%f24
46925c28e83SPiotr Jasiukajtis
47025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
47125c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
47225c28e83SPiotr Jasiukajtis
47325c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
47425c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f36
47525c28e83SPiotr Jasiukajtis
47625c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
47725c28e83SPiotr Jasiukajtis
47825c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
47925c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
48025c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f34
48125c28e83SPiotr Jasiukajtis
48225c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
48325c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
48425c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f38
48525c28e83SPiotr Jasiukajtis
48625c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f24
48725c28e83SPiotr Jasiukajtis
48825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
48925c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
49025c28e83SPiotr Jasiukajtis
49125c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
49225c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
49325c28e83SPiotr Jasiukajtis
49425c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
49525c28e83SPiotr Jasiukajtis
49625c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
49725c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
49825c28e83SPiotr Jasiukajtis
49925c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
50025c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
50125c28e83SPiotr Jasiukajtis
50225c28e83SPiotr Jasiukajtis	faddd	%f24,%f46,%f24
50325c28e83SPiotr Jasiukajtis
50425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
50525c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f2
50625c28e83SPiotr Jasiukajtis
50725c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
50825c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f12
50925c28e83SPiotr Jasiukajtis
51025c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
51125c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
51225c28e83SPiotr Jasiukajtis
51325c28e83SPiotr Jasiukajtis	fmuld	%f14,%f36,%f14
51425c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
51525c28e83SPiotr Jasiukajtis
51625c28e83SPiotr Jasiukajtis	fmuld	%f6,%f34,%f6
51725c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
51825c28e83SPiotr Jasiukajtis
51925c28e83SPiotr Jasiukajtis	fmuld	%f16,%f38,%f16
52025c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
52125c28e83SPiotr Jasiukajtis
52225c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
52325c28e83SPiotr Jasiukajtis
52425c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
52525c28e83SPiotr Jasiukajtis
52625c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
52725c28e83SPiotr Jasiukajtis
52825c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
52925c28e83SPiotr Jasiukajtis
53025c28e83SPiotr Jasiukajtis	faddd	%f6,%f2,%f6
53125c28e83SPiotr Jasiukajtis
53225c28e83SPiotr Jasiukajtis	faddd	%f16,%f12,%f16
53325c28e83SPiotr Jasiukajtis
53425c28e83SPiotr Jasiukajtis	faddd	%f20,%f24,%f26
53525c28e83SPiotr Jasiukajtis
53625c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
53725c28e83SPiotr Jasiukajtis
53825c28e83SPiotr Jasiukajtis	faddd	%f16,%f36,%f16
53925c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
54025c28e83SPiotr Jasiukajtis
54125c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
54225c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
54325c28e83SPiotr Jasiukajtis
54425c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
54525c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
54625c28e83SPiotr Jasiukajtis
54725c28e83SPiotr Jasiukajtis! delay slot
54825c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
54925c28e83SPiotr Jasiukajtis
55025c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
55125c28e83SPiotr Jasiukajtis! delay slot
55225c28e83SPiotr Jasiukajtis	nop
55325c28e83SPiotr Jasiukajtis
55425c28e83SPiotr Jasiukajtis	.align	32
55525c28e83SPiotr Jasiukajtis.case2:
55625c28e83SPiotr Jasiukajtis	st	%f26,[%o5]
55725c28e83SPiotr Jasiukajtis	cmp	%l2,%l5
55825c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
55925c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case3
56025c28e83SPiotr Jasiukajtis
56125c28e83SPiotr Jasiukajtis! delay slot
56225c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
56325c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
56425c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
56525c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f2
56625c28e83SPiotr Jasiukajtis
56725c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
56825c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
56925c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f22
57025c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
57125c28e83SPiotr Jasiukajtis
57225c28e83SPiotr Jasiukajtis	fsubd	%f0,%f2,%f0
57325c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
57425c28e83SPiotr Jasiukajtis	mov	%o0,%o3
57525c28e83SPiotr Jasiukajtis
57625c28e83SPiotr Jasiukajtis	fsubd	%f20,%f22,%f20
57725c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
57825c28e83SPiotr Jasiukajtis	mov	%o2,%o5
57925c28e83SPiotr Jasiukajtis
58025c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f14
58125c28e83SPiotr Jasiukajtis	mov	%o1,%o4
58225c28e83SPiotr Jasiukajtis
58325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
58425c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
58525c28e83SPiotr Jasiukajtis
58625c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
58725c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
58825c28e83SPiotr Jasiukajtis
58925c28e83SPiotr Jasiukajtis	faddd	%f14,%f50,%f14
59025c28e83SPiotr Jasiukajtis
59125c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
59225c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
59325c28e83SPiotr Jasiukajtis
59425c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
59525c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f40
59625c28e83SPiotr Jasiukajtis
59725c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
59825c28e83SPiotr Jasiukajtis
59925c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
60025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
60125c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f34
60225c28e83SPiotr Jasiukajtis
60325c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
60425c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
60525c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f42
60625c28e83SPiotr Jasiukajtis
60725c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f14
60825c28e83SPiotr Jasiukajtis
60925c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
61025c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
61125c28e83SPiotr Jasiukajtis
61225c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
61325c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
61425c28e83SPiotr Jasiukajtis
61525c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
61625c28e83SPiotr Jasiukajtis
61725c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
61825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
61925c28e83SPiotr Jasiukajtis
62025c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
62125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
62225c28e83SPiotr Jasiukajtis
62325c28e83SPiotr Jasiukajtis	faddd	%f14,%f46,%f14
62425c28e83SPiotr Jasiukajtis
62525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
62625c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f2
62725c28e83SPiotr Jasiukajtis
62825c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
62925c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f22
63025c28e83SPiotr Jasiukajtis
63125c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
63225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
63325c28e83SPiotr Jasiukajtis
63425c28e83SPiotr Jasiukajtis	fmuld	%f24,%f40,%f24
63525c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
63625c28e83SPiotr Jasiukajtis
63725c28e83SPiotr Jasiukajtis	fmuld	%f6,%f34,%f6
63825c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
63925c28e83SPiotr Jasiukajtis
64025c28e83SPiotr Jasiukajtis	fmuld	%f26,%f42,%f26
64125c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
64225c28e83SPiotr Jasiukajtis
64325c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
64425c28e83SPiotr Jasiukajtis
64525c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
64625c28e83SPiotr Jasiukajtis
64725c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
64825c28e83SPiotr Jasiukajtis
64925c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
65025c28e83SPiotr Jasiukajtis
65125c28e83SPiotr Jasiukajtis	faddd	%f6,%f2,%f6
65225c28e83SPiotr Jasiukajtis
65325c28e83SPiotr Jasiukajtis	faddd	%f26,%f22,%f26
65425c28e83SPiotr Jasiukajtis
65525c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f16
65625c28e83SPiotr Jasiukajtis
65725c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
65825c28e83SPiotr Jasiukajtis
65925c28e83SPiotr Jasiukajtis	faddd	%f26,%f40,%f26
66025c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
66125c28e83SPiotr Jasiukajtis
66225c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
66325c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
66425c28e83SPiotr Jasiukajtis
66525c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
66625c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
66725c28e83SPiotr Jasiukajtis
66825c28e83SPiotr Jasiukajtis! delay slot
66925c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
67025c28e83SPiotr Jasiukajtis
67125c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
67225c28e83SPiotr Jasiukajtis! delay slot
67325c28e83SPiotr Jasiukajtis	nop
67425c28e83SPiotr Jasiukajtis
67525c28e83SPiotr Jasiukajtis	.align	32
67625c28e83SPiotr Jasiukajtis.case3:
67725c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
67825c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
67925c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f2
68025c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
68125c28e83SPiotr Jasiukajtis
68225c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
68325c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
68425c28e83SPiotr Jasiukajtis
68525c28e83SPiotr Jasiukajtis	fsubd	%f0,%f2,%f0
68625c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
68725c28e83SPiotr Jasiukajtis	mov	%o0,%o3
68825c28e83SPiotr Jasiukajtis
68925c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f14
69025c28e83SPiotr Jasiukajtis	mov	%o1,%o4
69125c28e83SPiotr Jasiukajtis
69225c28e83SPiotr Jasiukajtis	fmuld	%f22,%f52,%f24
69325c28e83SPiotr Jasiukajtis	mov	%o2,%o5
69425c28e83SPiotr Jasiukajtis
69525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
69625c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
69725c28e83SPiotr Jasiukajtis
69825c28e83SPiotr Jasiukajtis	faddd	%f14,%f50,%f14
69925c28e83SPiotr Jasiukajtis
70025c28e83SPiotr Jasiukajtis	faddd	%f24,%f50,%f24
70125c28e83SPiotr Jasiukajtis
70225c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
70325c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
70425c28e83SPiotr Jasiukajtis
70525c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
70625c28e83SPiotr Jasiukajtis
70725c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
70825c28e83SPiotr Jasiukajtis
70925c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
71025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
71125c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f34
71225c28e83SPiotr Jasiukajtis
71325c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f14
71425c28e83SPiotr Jasiukajtis
71525c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f24
71625c28e83SPiotr Jasiukajtis
71725c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
71825c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
71925c28e83SPiotr Jasiukajtis
72025c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
72125c28e83SPiotr Jasiukajtis
72225c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
72325c28e83SPiotr Jasiukajtis
72425c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
72525c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
72625c28e83SPiotr Jasiukajtis
72725c28e83SPiotr Jasiukajtis	faddd	%f14,%f46,%f14
72825c28e83SPiotr Jasiukajtis
72925c28e83SPiotr Jasiukajtis	faddd	%f24,%f46,%f24
73025c28e83SPiotr Jasiukajtis
73125c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
73225c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f2
73325c28e83SPiotr Jasiukajtis
73425c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
73525c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
73625c28e83SPiotr Jasiukajtis
73725c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
73825c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
73925c28e83SPiotr Jasiukajtis
74025c28e83SPiotr Jasiukajtis	fmuld	%f6,%f34,%f6
74125c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
74225c28e83SPiotr Jasiukajtis
74325c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
74425c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
74525c28e83SPiotr Jasiukajtis
74625c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
74725c28e83SPiotr Jasiukajtis
74825c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
74925c28e83SPiotr Jasiukajtis
75025c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
75125c28e83SPiotr Jasiukajtis
75225c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f16
75325c28e83SPiotr Jasiukajtis
75425c28e83SPiotr Jasiukajtis	faddd	%f6,%f2,%f6
75525c28e83SPiotr Jasiukajtis
75625c28e83SPiotr Jasiukajtis	faddd	%f20,%f24,%f26
75725c28e83SPiotr Jasiukajtis
75825c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
75925c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
76025c28e83SPiotr Jasiukajtis
76125c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
76225c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
76325c28e83SPiotr Jasiukajtis
76425c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
76525c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
76625c28e83SPiotr Jasiukajtis
76725c28e83SPiotr Jasiukajtis! delay slot
76825c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
76925c28e83SPiotr Jasiukajtis
77025c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
77125c28e83SPiotr Jasiukajtis! delay slot
77225c28e83SPiotr Jasiukajtis	nop
77325c28e83SPiotr Jasiukajtis
77425c28e83SPiotr Jasiukajtis	.align	32
77525c28e83SPiotr Jasiukajtis.case4:
77625c28e83SPiotr Jasiukajtis	st	%f17,[%o4+4]
77725c28e83SPiotr Jasiukajtis	cmp	%l1,%l5
77825c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
77925c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case6
78025c28e83SPiotr Jasiukajtis
78125c28e83SPiotr Jasiukajtis! delay slot
78225c28e83SPiotr Jasiukajtis	st	%f26,[%o5]
78325c28e83SPiotr Jasiukajtis	cmp	%l2,%l5
78425c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
78525c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case5
78625c28e83SPiotr Jasiukajtis
78725c28e83SPiotr Jasiukajtis! delay slot
78825c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
78925c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
79025c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
79125c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f12
79225c28e83SPiotr Jasiukajtis
79325c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
79425c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
79525c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f22
79625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
79725c28e83SPiotr Jasiukajtis
79825c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
79925c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
80025c28e83SPiotr Jasiukajtis	mov	%o1,%o4
80125c28e83SPiotr Jasiukajtis
80225c28e83SPiotr Jasiukajtis	fsubd	%f20,%f22,%f20
80325c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
80425c28e83SPiotr Jasiukajtis	mov	%o2,%o5
80525c28e83SPiotr Jasiukajtis
80625c28e83SPiotr Jasiukajtis	fmovd	%f0,%f6
80725c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f4
80825c28e83SPiotr Jasiukajtis	mov	%o0,%o3
80925c28e83SPiotr Jasiukajtis
81025c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
81125c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
81225c28e83SPiotr Jasiukajtis
81325c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
81425c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
81525c28e83SPiotr Jasiukajtis
81625c28e83SPiotr Jasiukajtis	faddd	%f4,%f50,%f4
81725c28e83SPiotr Jasiukajtis
81825c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
81925c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f36
82025c28e83SPiotr Jasiukajtis
82125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
82225c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f40
82325c28e83SPiotr Jasiukajtis
82425c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
82525c28e83SPiotr Jasiukajtis
82625c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
82725c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
82825c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f38
82925c28e83SPiotr Jasiukajtis
83025c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
83125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
83225c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f42
83325c28e83SPiotr Jasiukajtis
83425c28e83SPiotr Jasiukajtis	faddd	%f4,%f48,%f4
83525c28e83SPiotr Jasiukajtis
83625c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
83725c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
83825c28e83SPiotr Jasiukajtis
83925c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
84025c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
84125c28e83SPiotr Jasiukajtis
84225c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
84325c28e83SPiotr Jasiukajtis
84425c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
84525c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
84625c28e83SPiotr Jasiukajtis
84725c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
84825c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
84925c28e83SPiotr Jasiukajtis
85025c28e83SPiotr Jasiukajtis	faddd	%f4,%f46,%f4
85125c28e83SPiotr Jasiukajtis
85225c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
85325c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f12
85425c28e83SPiotr Jasiukajtis
85525c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
85625c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f22
85725c28e83SPiotr Jasiukajtis
85825c28e83SPiotr Jasiukajtis	fmuld	%f14,%f36,%f14
85925c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
86025c28e83SPiotr Jasiukajtis
86125c28e83SPiotr Jasiukajtis	fmuld	%f24,%f40,%f24
86225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
86325c28e83SPiotr Jasiukajtis
86425c28e83SPiotr Jasiukajtis	fmuld	%f16,%f38,%f16
86525c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
86625c28e83SPiotr Jasiukajtis
86725c28e83SPiotr Jasiukajtis	fmuld	%f26,%f42,%f26
86825c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
86925c28e83SPiotr Jasiukajtis
87025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
87125c28e83SPiotr Jasiukajtis
87225c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
87325c28e83SPiotr Jasiukajtis
87425c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
87525c28e83SPiotr Jasiukajtis
87625c28e83SPiotr Jasiukajtis	fmuld	%f6,%f4,%f4
87725c28e83SPiotr Jasiukajtis
87825c28e83SPiotr Jasiukajtis	faddd	%f16,%f12,%f16
87925c28e83SPiotr Jasiukajtis
88025c28e83SPiotr Jasiukajtis	faddd	%f26,%f22,%f26
88125c28e83SPiotr Jasiukajtis
88225c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
88325c28e83SPiotr Jasiukajtis
88425c28e83SPiotr Jasiukajtis	faddd	%f16,%f36,%f16
88525c28e83SPiotr Jasiukajtis
88625c28e83SPiotr Jasiukajtis	faddd	%f26,%f40,%f26
88725c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
88825c28e83SPiotr Jasiukajtis
88925c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
89025c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
89125c28e83SPiotr Jasiukajtis
89225c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
89325c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
89425c28e83SPiotr Jasiukajtis
89525c28e83SPiotr Jasiukajtis! delay slot
89625c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
89725c28e83SPiotr Jasiukajtis
89825c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
89925c28e83SPiotr Jasiukajtis! delay slot
90025c28e83SPiotr Jasiukajtis	nop
90125c28e83SPiotr Jasiukajtis
90225c28e83SPiotr Jasiukajtis	.align	32
90325c28e83SPiotr Jasiukajtis.case5:
90425c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
90525c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
90625c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f12
90725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
90825c28e83SPiotr Jasiukajtis
90925c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
91025c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
91125c28e83SPiotr Jasiukajtis
91225c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
91325c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
91425c28e83SPiotr Jasiukajtis	mov	%o1,%o4
91525c28e83SPiotr Jasiukajtis
91625c28e83SPiotr Jasiukajtis	fmovd	%f0,%f6
91725c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f4
91825c28e83SPiotr Jasiukajtis	mov	%o0,%o3
91925c28e83SPiotr Jasiukajtis
92025c28e83SPiotr Jasiukajtis	fmuld	%f22,%f52,%f24
92125c28e83SPiotr Jasiukajtis	mov	%o2,%o5
92225c28e83SPiotr Jasiukajtis
92325c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
92425c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
92525c28e83SPiotr Jasiukajtis
92625c28e83SPiotr Jasiukajtis	faddd	%f4,%f50,%f4
92725c28e83SPiotr Jasiukajtis
92825c28e83SPiotr Jasiukajtis	faddd	%f24,%f50,%f24
92925c28e83SPiotr Jasiukajtis
93025c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
93125c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f36
93225c28e83SPiotr Jasiukajtis
93325c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
93425c28e83SPiotr Jasiukajtis
93525c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
93625c28e83SPiotr Jasiukajtis
93725c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
93825c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
93925c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f38
94025c28e83SPiotr Jasiukajtis
94125c28e83SPiotr Jasiukajtis	faddd	%f4,%f48,%f4
94225c28e83SPiotr Jasiukajtis
94325c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f24
94425c28e83SPiotr Jasiukajtis
94525c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
94625c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
94725c28e83SPiotr Jasiukajtis
94825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
94925c28e83SPiotr Jasiukajtis
95025c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
95125c28e83SPiotr Jasiukajtis
95225c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
95325c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
95425c28e83SPiotr Jasiukajtis
95525c28e83SPiotr Jasiukajtis	faddd	%f4,%f46,%f4
95625c28e83SPiotr Jasiukajtis
95725c28e83SPiotr Jasiukajtis	faddd	%f24,%f46,%f24
95825c28e83SPiotr Jasiukajtis
95925c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
96025c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f12
96125c28e83SPiotr Jasiukajtis
96225c28e83SPiotr Jasiukajtis	fmuld	%f14,%f36,%f14
96325c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
96425c28e83SPiotr Jasiukajtis
96525c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
96625c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
96725c28e83SPiotr Jasiukajtis
96825c28e83SPiotr Jasiukajtis	fmuld	%f16,%f38,%f16
96925c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
97025c28e83SPiotr Jasiukajtis
97125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
97225c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
97325c28e83SPiotr Jasiukajtis
97425c28e83SPiotr Jasiukajtis	fmuld	%f6,%f4,%f4
97525c28e83SPiotr Jasiukajtis
97625c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
97725c28e83SPiotr Jasiukajtis
97825c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
97925c28e83SPiotr Jasiukajtis
98025c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
98125c28e83SPiotr Jasiukajtis
98225c28e83SPiotr Jasiukajtis	faddd	%f16,%f12,%f16
98325c28e83SPiotr Jasiukajtis
98425c28e83SPiotr Jasiukajtis	faddd	%f20,%f24,%f26
98525c28e83SPiotr Jasiukajtis
98625c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
98725c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
98825c28e83SPiotr Jasiukajtis
98925c28e83SPiotr Jasiukajtis	faddd	%f16,%f36,%f16
99025c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
99125c28e83SPiotr Jasiukajtis
99225c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
99325c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
99425c28e83SPiotr Jasiukajtis
99525c28e83SPiotr Jasiukajtis! delay slot
99625c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
99725c28e83SPiotr Jasiukajtis
99825c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
99925c28e83SPiotr Jasiukajtis! delay slot
100025c28e83SPiotr Jasiukajtis	nop
100125c28e83SPiotr Jasiukajtis
100225c28e83SPiotr Jasiukajtis	.align	32
100325c28e83SPiotr Jasiukajtis.case6:
100425c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
100525c28e83SPiotr Jasiukajtis	cmp	%l2,%l5
100625c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
100725c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case7
100825c28e83SPiotr Jasiukajtis
100925c28e83SPiotr Jasiukajtis! delay slot
101025c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
101125c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
101225c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f22
101325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
101425c28e83SPiotr Jasiukajtis
101525c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
101625c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
101725c28e83SPiotr Jasiukajtis
101825c28e83SPiotr Jasiukajtis	fsubd	%f20,%f22,%f20
101925c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
102025c28e83SPiotr Jasiukajtis	mov	%o2,%o5
102125c28e83SPiotr Jasiukajtis
102225c28e83SPiotr Jasiukajtis	fmovd	%f0,%f6
102325c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f4
102425c28e83SPiotr Jasiukajtis	mov	%o0,%o3
102525c28e83SPiotr Jasiukajtis
102625c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f14
102725c28e83SPiotr Jasiukajtis	mov	%o1,%o4
102825c28e83SPiotr Jasiukajtis
102925c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
103025c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
103125c28e83SPiotr Jasiukajtis
103225c28e83SPiotr Jasiukajtis	faddd	%f4,%f50,%f4
103325c28e83SPiotr Jasiukajtis
103425c28e83SPiotr Jasiukajtis	faddd	%f14,%f50,%f14
103525c28e83SPiotr Jasiukajtis
103625c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
103725c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f40
103825c28e83SPiotr Jasiukajtis
103925c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
104025c28e83SPiotr Jasiukajtis
104125c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
104225c28e83SPiotr Jasiukajtis
104325c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
104425c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
104525c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f42
104625c28e83SPiotr Jasiukajtis
104725c28e83SPiotr Jasiukajtis	faddd	%f4,%f48,%f4
104825c28e83SPiotr Jasiukajtis
104925c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f14
105025c28e83SPiotr Jasiukajtis
105125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
105225c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
105325c28e83SPiotr Jasiukajtis
105425c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
105525c28e83SPiotr Jasiukajtis
105625c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
105725c28e83SPiotr Jasiukajtis
105825c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
105925c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
106025c28e83SPiotr Jasiukajtis
106125c28e83SPiotr Jasiukajtis	faddd	%f4,%f46,%f4
106225c28e83SPiotr Jasiukajtis
106325c28e83SPiotr Jasiukajtis	faddd	%f14,%f46,%f14
106425c28e83SPiotr Jasiukajtis
106525c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
106625c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f22
106725c28e83SPiotr Jasiukajtis
106825c28e83SPiotr Jasiukajtis	fmuld	%f24,%f40,%f24
106925c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
107025c28e83SPiotr Jasiukajtis
107125c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
107225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
107325c28e83SPiotr Jasiukajtis
107425c28e83SPiotr Jasiukajtis	fmuld	%f26,%f42,%f26
107525c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
107625c28e83SPiotr Jasiukajtis
107725c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
107825c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
107925c28e83SPiotr Jasiukajtis
108025c28e83SPiotr Jasiukajtis	fmuld	%f6,%f4,%f4
108125c28e83SPiotr Jasiukajtis
108225c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
108325c28e83SPiotr Jasiukajtis
108425c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
108525c28e83SPiotr Jasiukajtis
108625c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
108725c28e83SPiotr Jasiukajtis
108825c28e83SPiotr Jasiukajtis	faddd	%f26,%f22,%f26
108925c28e83SPiotr Jasiukajtis
109025c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f16
109125c28e83SPiotr Jasiukajtis
109225c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
109325c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
109425c28e83SPiotr Jasiukajtis
109525c28e83SPiotr Jasiukajtis	faddd	%f26,%f40,%f26
109625c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
109725c28e83SPiotr Jasiukajtis
109825c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
109925c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
110025c28e83SPiotr Jasiukajtis
110125c28e83SPiotr Jasiukajtis! delay slot
110225c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
110325c28e83SPiotr Jasiukajtis
110425c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
110525c28e83SPiotr Jasiukajtis! delay slot
110625c28e83SPiotr Jasiukajtis	nop
110725c28e83SPiotr Jasiukajtis
110825c28e83SPiotr Jasiukajtis	.align	32
110925c28e83SPiotr Jasiukajtis.case7:
111025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
111125c28e83SPiotr Jasiukajtis	fmovd	%f0,%f6
111225c28e83SPiotr Jasiukajtis	mov	%o0,%o3
111325c28e83SPiotr Jasiukajtis
111425c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
111525c28e83SPiotr Jasiukajtis	mov	%o1,%o4
111625c28e83SPiotr Jasiukajtis
111725c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
111825c28e83SPiotr Jasiukajtis	mov	%o2,%o5
111925c28e83SPiotr Jasiukajtis
112025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f4
112125c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
112225c28e83SPiotr Jasiukajtis
112325c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f14
112425c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
112525c28e83SPiotr Jasiukajtis
112625c28e83SPiotr Jasiukajtis	fmuld	%f22,%f52,%f24
112725c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
112825c28e83SPiotr Jasiukajtis
112925c28e83SPiotr Jasiukajtis	faddd	%f4,%f50,%f4
113025c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
113125c28e83SPiotr Jasiukajtis
113225c28e83SPiotr Jasiukajtis	faddd	%f14,%f50,%f14
113325c28e83SPiotr Jasiukajtis
113425c28e83SPiotr Jasiukajtis	faddd	%f24,%f50,%f24
113525c28e83SPiotr Jasiukajtis
113625c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
113725c28e83SPiotr Jasiukajtis
113825c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
113925c28e83SPiotr Jasiukajtis
114025c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
114125c28e83SPiotr Jasiukajtis
114225c28e83SPiotr Jasiukajtis	faddd	%f4,%f48,%f4
114325c28e83SPiotr Jasiukajtis
114425c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f14
114525c28e83SPiotr Jasiukajtis
114625c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f24
114725c28e83SPiotr Jasiukajtis
114825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
114925c28e83SPiotr Jasiukajtis
115025c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
115125c28e83SPiotr Jasiukajtis
115225c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
115325c28e83SPiotr Jasiukajtis
115425c28e83SPiotr Jasiukajtis	faddd	%f4,%f46,%f4
115525c28e83SPiotr Jasiukajtis
115625c28e83SPiotr Jasiukajtis	faddd	%f14,%f46,%f14
115725c28e83SPiotr Jasiukajtis
115825c28e83SPiotr Jasiukajtis	faddd	%f24,%f46,%f24
115925c28e83SPiotr Jasiukajtis
116025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
116125c28e83SPiotr Jasiukajtis
116225c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
116325c28e83SPiotr Jasiukajtis
116425c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
116525c28e83SPiotr Jasiukajtis
116625c28e83SPiotr Jasiukajtis	fmuld	%f6,%f4,%f4
116725c28e83SPiotr Jasiukajtis
116825c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
116925c28e83SPiotr Jasiukajtis
117025c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
117125c28e83SPiotr Jasiukajtis
117225c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
117325c28e83SPiotr Jasiukajtis
117425c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f16
117525c28e83SPiotr Jasiukajtis
117625c28e83SPiotr Jasiukajtis	faddd	%f20,%f24,%f26
117725c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
117825c28e83SPiotr Jasiukajtis
117925c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
118025c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
118125c28e83SPiotr Jasiukajtis
118225c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
118325c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
118425c28e83SPiotr Jasiukajtis
118525c28e83SPiotr Jasiukajtis! delay slot
118625c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
118725c28e83SPiotr Jasiukajtis
118825c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
118925c28e83SPiotr Jasiukajtis! delay slot
119025c28e83SPiotr Jasiukajtis	nop
119125c28e83SPiotr Jasiukajtis
119225c28e83SPiotr Jasiukajtis
119325c28e83SPiotr Jasiukajtis	.align	32
119425c28e83SPiotr Jasiukajtis.endloop2:
119525c28e83SPiotr Jasiukajtis	cmp	%l1,%l5
119625c28e83SPiotr Jasiukajtis	bl,pn	%icc,1f
119725c28e83SPiotr Jasiukajtis! delay slot
119825c28e83SPiotr Jasiukajtis	fabsd	%f10,%f10
119925c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
120025c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
120125c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
120225c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f12
120325c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
120425c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
120525c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
120625c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
120725c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
120825c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f20
120925c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f36
121025c28e83SPiotr Jasiukajtis	faddd	%f20,%f56,%f20
121125c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
121225c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f38
121325c28e83SPiotr Jasiukajtis	fmuld	%f12,%f20,%f20
121425c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
121525c28e83SPiotr Jasiukajtis	faddd	%f20,%f54,%f20
121625c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
121725c28e83SPiotr Jasiukajtis	fmuld	%f10,%f20,%f20
121825c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f12
121925c28e83SPiotr Jasiukajtis	fmuld	%f14,%f36,%f14
122025c28e83SPiotr Jasiukajtis	fmuld	%f20,%f38,%f20
122125c28e83SPiotr Jasiukajtis	faddd	%f20,%f14,%f20
122225c28e83SPiotr Jasiukajtis	faddd	%f20,%f12,%f20
122325c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
122425c28e83SPiotr Jasiukajtis! delay slot
122525c28e83SPiotr Jasiukajtis	faddd	%f20,%f36,%f20
122625c28e83SPiotr Jasiukajtis1:
122725c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
122825c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f14
122925c28e83SPiotr Jasiukajtis	faddd	%f14,%f50,%f14
123025c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
123125c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f14
123225c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
123325c28e83SPiotr Jasiukajtis	faddd	%f14,%f46,%f14
123425c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
123525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
123625c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f20
123725c28e83SPiotr Jasiukajtis2:
123825c28e83SPiotr Jasiukajtis	fors	%f20,%f19,%f20
123925c28e83SPiotr Jasiukajtis	st	%f20,[%o1]
124025c28e83SPiotr Jasiukajtis	st	%f21,[%o1+4]
124125c28e83SPiotr Jasiukajtis
124225c28e83SPiotr Jasiukajtis.endloop1:
124325c28e83SPiotr Jasiukajtis	cmp	%l0,%l5
124425c28e83SPiotr Jasiukajtis	bl,pn	%icc,1f
124525c28e83SPiotr Jasiukajtis! delay slot
124625c28e83SPiotr Jasiukajtis	fabsd	%f0,%f0
124725c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
124825c28e83SPiotr Jasiukajtis	fpadd32s %f0,%f31,%f8
124925c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
125025c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f2
125125c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
125225c28e83SPiotr Jasiukajtis	fsubd	%f0,%f2,%f0
125325c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
125425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
125525c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
125625c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f20
125725c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
125825c28e83SPiotr Jasiukajtis	faddd	%f20,%f56,%f20
125925c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
126025c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f34
126125c28e83SPiotr Jasiukajtis	fmuld	%f2,%f20,%f20
126225c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
126325c28e83SPiotr Jasiukajtis	faddd	%f20,%f54,%f20
126425c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
126525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f20,%f20
126625c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f2
126725c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
126825c28e83SPiotr Jasiukajtis	fmuld	%f20,%f34,%f20
126925c28e83SPiotr Jasiukajtis	faddd	%f20,%f4,%f20
127025c28e83SPiotr Jasiukajtis	faddd	%f20,%f2,%f20
127125c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
127225c28e83SPiotr Jasiukajtis! delay slot
127325c28e83SPiotr Jasiukajtis	faddd	%f20,%f32,%f20
127425c28e83SPiotr Jasiukajtis1:
127525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
127625c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f4
127725c28e83SPiotr Jasiukajtis	faddd	%f4,%f50,%f4
127825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
127925c28e83SPiotr Jasiukajtis	faddd	%f4,%f48,%f4
128025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
128125c28e83SPiotr Jasiukajtis	faddd	%f4,%f46,%f4
128225c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
128325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
128425c28e83SPiotr Jasiukajtis	faddd	%f0,%f4,%f20
128525c28e83SPiotr Jasiukajtis2:
128625c28e83SPiotr Jasiukajtis	fors	%f20,%f9,%f20
128725c28e83SPiotr Jasiukajtis	st	%f20,[%o0]
128825c28e83SPiotr Jasiukajtis	st	%f21,[%o0+4]
128925c28e83SPiotr Jasiukajtis
129025c28e83SPiotr Jasiukajtis.endloop0:
129125c28e83SPiotr Jasiukajtis	st	%f6,[%o3]
129225c28e83SPiotr Jasiukajtis	st	%f7,[%o3+4]
129325c28e83SPiotr Jasiukajtis	st	%f16,[%o4]
129425c28e83SPiotr Jasiukajtis	st	%f17,[%o4+4]
129525c28e83SPiotr Jasiukajtis	st	%f26,[%o5]
129625c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
129725c28e83SPiotr Jasiukajtis
129825c28e83SPiotr Jasiukajtis! return.  finished off with only primary range arguments.
129925c28e83SPiotr Jasiukajtis
130025c28e83SPiotr Jasiukajtis	ret
130125c28e83SPiotr Jasiukajtis	restore
130225c28e83SPiotr Jasiukajtis
130325c28e83SPiotr Jasiukajtis
130425c28e83SPiotr Jasiukajtis	.align	32
130525c28e83SPiotr Jasiukajtis.range0:
130625c28e83SPiotr Jasiukajtis	cmp	%l0,LIM_l6
130725c28e83SPiotr Jasiukajtis	bg,a,pt	%icc,.MEDIUM		! branch if x is not tiny
130825c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
130925c28e83SPiotr Jasiukajtis	mov	0x1,LIM_l6		! set "processing loop0"
131025c28e83SPiotr Jasiukajtis	st	%f0,[%o0]		! *y = *x with inexact if x nonzero
131125c28e83SPiotr Jasiukajtis	st	%f1,[%o0+4]
131225c28e83SPiotr Jasiukajtis	fdtoi	%f0,%f2
131325c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
131425c28e83SPiotr Jasiukajtis	ble,pn	%icc,.endloop0
131525c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
131625c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
131725c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l0		! hx &= ~0x80000000
131825c28e83SPiotr Jasiukajtis	fmovd	%f10,%f0
131925c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop0
132025c28e83SPiotr Jasiukajtis! delay slot
132125c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
132225c28e83SPiotr Jasiukajtis
132325c28e83SPiotr Jasiukajtis
132425c28e83SPiotr Jasiukajtis	.align	32
132525c28e83SPiotr Jasiukajtis.range1:
132625c28e83SPiotr Jasiukajtis	cmp	%l1,LIM_l6
132725c28e83SPiotr Jasiukajtis	bg,a,pt	%icc,.MEDIUM		! branch if x is not tiny
132825c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
132925c28e83SPiotr Jasiukajtis	mov	0x2,LIM_l6		! set "processing loop1"
133025c28e83SPiotr Jasiukajtis	st	%f10,[%o1]		! *y = *x with inexact if x nonzero
133125c28e83SPiotr Jasiukajtis	st	%f11,[%o1+4]
133225c28e83SPiotr Jasiukajtis	fdtoi	%f10,%f12
133325c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
133425c28e83SPiotr Jasiukajtis	ble,pn	%icc,.endloop1
133525c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
133625c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
133725c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l1		! hx &= ~0x80000000
133825c28e83SPiotr Jasiukajtis	fmovd	%f20,%f10
133925c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop1
134025c28e83SPiotr Jasiukajtis! delay slot
134125c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
134225c28e83SPiotr Jasiukajtis
134325c28e83SPiotr Jasiukajtis
134425c28e83SPiotr Jasiukajtis	.align	32
134525c28e83SPiotr Jasiukajtis.range2:
134625c28e83SPiotr Jasiukajtis	cmp	%l2,LIM_l6
134725c28e83SPiotr Jasiukajtis	bg,a,pt	%icc,.MEDIUM		! branch if x is not tiny
134825c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
134925c28e83SPiotr Jasiukajtis	mov	0x3,LIM_l6		! set "processing loop2"
135025c28e83SPiotr Jasiukajtis	st	%f20,[%o2]		! *y = *x with inexact if x nonzero
135125c28e83SPiotr Jasiukajtis	st	%f21,[%o2+4]
135225c28e83SPiotr Jasiukajtis	fdtoi	%f20,%f22
135325c28e83SPiotr Jasiukajtis1:
135425c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
135525c28e83SPiotr Jasiukajtis	ble,pn	%icc,.endloop2
135625c28e83SPiotr Jasiukajtis! delay slot
135725c28e83SPiotr Jasiukajtis	nop
135825c28e83SPiotr Jasiukajtis	ld	[%i1],%l2
135925c28e83SPiotr Jasiukajtis	ld	[%i1],%f20
136025c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f21
136125c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l2		! hx &= ~0x80000000
136225c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop2
136325c28e83SPiotr Jasiukajtis! delay slot
136425c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
136525c28e83SPiotr Jasiukajtis
136625c28e83SPiotr Jasiukajtis
136725c28e83SPiotr Jasiukajtis	.align	32
136825c28e83SPiotr Jasiukajtis.MEDIUM:
136925c28e83SPiotr Jasiukajtis
137025c28e83SPiotr Jasiukajtis! ========== medium range ==========
137125c28e83SPiotr Jasiukajtis
137225c28e83SPiotr Jasiukajtis! register use
137325c28e83SPiotr Jasiukajtis
137425c28e83SPiotr Jasiukajtis! i0  n
137525c28e83SPiotr Jasiukajtis! i1  x
137625c28e83SPiotr Jasiukajtis! i2  stridex
137725c28e83SPiotr Jasiukajtis! i3  y
137825c28e83SPiotr Jasiukajtis! i4  stridey
137925c28e83SPiotr Jasiukajtis! i5  0x80000000
138025c28e83SPiotr Jasiukajtis
138125c28e83SPiotr Jasiukajtis! l0  hx0
138225c28e83SPiotr Jasiukajtis! l1  hx1
138325c28e83SPiotr Jasiukajtis! l2  hx2
138425c28e83SPiotr Jasiukajtis! l3  __vlibm_TBL_sincos_hi
138525c28e83SPiotr Jasiukajtis! l4  __vlibm_TBL_sincos_lo
138625c28e83SPiotr Jasiukajtis! l5  constants
138725c28e83SPiotr Jasiukajtis! l6  in transition from pri-range and here, use for biguns
138825c28e83SPiotr Jasiukajtis! l7  0x413921fb
138925c28e83SPiotr Jasiukajtis
139025c28e83SPiotr Jasiukajtis! the following are 64-bit registers in both V8+ and V9
139125c28e83SPiotr Jasiukajtis
139225c28e83SPiotr Jasiukajtis! g1  scratch
1393*55fea89dSDan Cross! g5
139425c28e83SPiotr Jasiukajtis
139525c28e83SPiotr Jasiukajtis! o0  py0
139625c28e83SPiotr Jasiukajtis! o1  py1
139725c28e83SPiotr Jasiukajtis! o2  py2
139825c28e83SPiotr Jasiukajtis! o3  n0
139925c28e83SPiotr Jasiukajtis! o4  n1
140025c28e83SPiotr Jasiukajtis! o5  n2
140125c28e83SPiotr Jasiukajtis! o7  scratch
140225c28e83SPiotr Jasiukajtis
140325c28e83SPiotr Jasiukajtis! f0  x0
140425c28e83SPiotr Jasiukajtis! f2  n0,y0
1405*55fea89dSDan Cross! f4
1406*55fea89dSDan Cross! f6
140725c28e83SPiotr Jasiukajtis! f8  scratch for table base
140825c28e83SPiotr Jasiukajtis! f9  signbit0
140925c28e83SPiotr Jasiukajtis! f10 x1
141025c28e83SPiotr Jasiukajtis! f12 n1,y1
1411*55fea89dSDan Cross! f14
1412*55fea89dSDan Cross! f16
141325c28e83SPiotr Jasiukajtis! f18 scratch for table base
141425c28e83SPiotr Jasiukajtis! f19 signbit1
141525c28e83SPiotr Jasiukajtis! f20 x2
141625c28e83SPiotr Jasiukajtis! f22 n2,y2
1417*55fea89dSDan Cross! f24
1418*55fea89dSDan Cross! f26
141925c28e83SPiotr Jasiukajtis! f28 scratch for table base
142025c28e83SPiotr Jasiukajtis! f29 signbit2
142125c28e83SPiotr Jasiukajtis! f30 0x80000000
142225c28e83SPiotr Jasiukajtis! f31 0x4000
1423*55fea89dSDan Cross! f32
1424*55fea89dSDan Cross! f34
1425*55fea89dSDan Cross! f36
1426*55fea89dSDan Cross! f38
142725c28e83SPiotr Jasiukajtis! f40 invpio2
142825c28e83SPiotr Jasiukajtis! f42 round
142925c28e83SPiotr Jasiukajtis! f44 0xffff800000000000
143025c28e83SPiotr Jasiukajtis! f46 pio2_1
143125c28e83SPiotr Jasiukajtis! f48 pio2_2
143225c28e83SPiotr Jasiukajtis! f50 pio2_3
143325c28e83SPiotr Jasiukajtis! f52 pio2_3t
143425c28e83SPiotr Jasiukajtis! f54 one
143525c28e83SPiotr Jasiukajtis! f56 pp1
143625c28e83SPiotr Jasiukajtis! f58 pp2
143725c28e83SPiotr Jasiukajtis! f60 qq1
143825c28e83SPiotr Jasiukajtis! f62 qq2
143925c28e83SPiotr Jasiukajtis
144025c28e83SPiotr Jasiukajtis	PIC_SET(g5,constants,l5)
144125c28e83SPiotr Jasiukajtis
144225c28e83SPiotr Jasiukajtis	! %o3,%o4,%o5 need to be stored
144325c28e83SPiotr Jasiukajtis	st	%f6,[%o3]
144425c28e83SPiotr Jasiukajtis	sethi	%hi(0x413921fb),%l7
144525c28e83SPiotr Jasiukajtis	st	%f7,[%o3+4]
144625c28e83SPiotr Jasiukajtis	or	%l7,%lo(0x413921fb),%l7
144725c28e83SPiotr Jasiukajtis	st	%f16,[%o4]
144825c28e83SPiotr Jasiukajtis	st	%f17,[%o4+4]
144925c28e83SPiotr Jasiukajtis	st	%f26,[%o5]
145025c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
145125c28e83SPiotr Jasiukajtis	ldd	[%l5+invpio2],%f40
145225c28e83SPiotr Jasiukajtis	ldd	[%l5+round],%f42
145325c28e83SPiotr Jasiukajtis	ldd	[%l5+pio2_1],%f46
145425c28e83SPiotr Jasiukajtis	ldd	[%l5+pio2_2],%f48
145525c28e83SPiotr Jasiukajtis	ldd	[%l5+pio2_3],%f50
145625c28e83SPiotr Jasiukajtis	ldd	[%l5+pio2_3t],%f52
145725c28e83SPiotr Jasiukajtis	std	%f54,[%fp+x0_1+8]	! set up stack data
145825c28e83SPiotr Jasiukajtis	std	%f54,[%fp+x1_1+8]
145925c28e83SPiotr Jasiukajtis	std	%f54,[%fp+x2_1+8]
146025c28e83SPiotr Jasiukajtis	stx	%g0,[%fp+y0_0+8]
146125c28e83SPiotr Jasiukajtis	stx	%g0,[%fp+y1_0+8]
146225c28e83SPiotr Jasiukajtis	stx	%g0,[%fp+y2_0+8]
146325c28e83SPiotr Jasiukajtis
1464*55fea89dSDan Cross!	branched here in the middle of the array.  Need to adjust
146525c28e83SPiotr Jasiukajtis!	for the members of the triple that were selected in the primary
146625c28e83SPiotr Jasiukajtis!	loop.
146725c28e83SPiotr Jasiukajtis
146825c28e83SPiotr Jasiukajtis!	no adjustment since all three selected here
146925c28e83SPiotr Jasiukajtis	subcc	LIM_l6,0x1,%g0		! continue in LOOP0?
147025c28e83SPiotr Jasiukajtis	bz,a	%icc,.LOOP0
147125c28e83SPiotr Jasiukajtis	mov	0x0,LIM_l6		! delay slot set biguns=0
147225c28e83SPiotr Jasiukajtis
147325c28e83SPiotr Jasiukajtis!	ajust 1st triple since 2d and 3d done here
147425c28e83SPiotr Jasiukajtis	subcc	LIM_l6,0x2,%g0		! continue in LOOP1?
147525c28e83SPiotr Jasiukajtis	fors	%f0,%f9,%f0		! restore sign bit
147625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f40,%f2		! adj LOOP0
147725c28e83SPiotr Jasiukajtis	bz,a	%icc,.LOOP1
147825c28e83SPiotr Jasiukajtis	mov	0x0,LIM_l6		! delay slot set biguns=0
147925c28e83SPiotr Jasiukajtis
148025c28e83SPiotr Jasiukajtis!	ajust 1st and 2d triple since 3d done here
148125c28e83SPiotr Jasiukajtis	subcc	LIM_l6,0x3,%g0		! continue in LOOP2?
148225c28e83SPiotr Jasiukajtis	!done fmuld	%f0,%f40,%f2		! adj LOOP0
148325c28e83SPiotr Jasiukajtis	sub	%i3,%i4,%i3		! adjust to not double increment
148425c28e83SPiotr Jasiukajtis	fors	%f10,%f19,%f10		! restore sign bit
148525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f40,%f12		! adj LOOP1
148625c28e83SPiotr Jasiukajtis	faddd	%f2,%f42,%f2		! adj LOOP1
148725c28e83SPiotr Jasiukajtis	bz,a	%icc,.LOOP2
148825c28e83SPiotr Jasiukajtis	mov	0x0,LIM_l6		! delay slot set biguns=0
148925c28e83SPiotr Jasiukajtis
149025c28e83SPiotr Jasiukajtis	.align 32
149125c28e83SPiotr Jasiukajtis.LOOP0:
149225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l1		! preload next argument
149325c28e83SPiotr Jasiukajtis	mov	%i3,%o0			! py0 = y
149425c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f10
149525c28e83SPiotr Jasiukajtis	cmp	%l0,%l7
149625c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
149725c28e83SPiotr Jasiukajtis	bg,pn	%icc,.BIG0		! if hx > 0x413921fb
149825c28e83SPiotr Jasiukajtis
149925c28e83SPiotr Jasiukajtis! delay slot
150025c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f11
150125c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
150225c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
150325c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP1
150425c28e83SPiotr Jasiukajtis
150525c28e83SPiotr Jasiukajtis! delay slot
150625c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l1
150725c28e83SPiotr Jasiukajtis	nop
150825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f40,%f2
150925c28e83SPiotr Jasiukajtis	fabsd	%f54,%f54		! a nop for alignment only
151025c28e83SPiotr Jasiukajtis
151125c28e83SPiotr Jasiukajtis.LOOP1:
151225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l2		! preload next argument
151325c28e83SPiotr Jasiukajtis	mov	%i3,%o1			! py1 = y
151425c28e83SPiotr Jasiukajtis
151525c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f20
151625c28e83SPiotr Jasiukajtis	cmp	%l1,%l7
151725c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
151825c28e83SPiotr Jasiukajtis	bg,pn	%icc,.BIG1		! if hx > 0x413921fb
151925c28e83SPiotr Jasiukajtis
152025c28e83SPiotr Jasiukajtis! delay slot
152125c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f21
152225c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
152325c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
152425c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP2
152525c28e83SPiotr Jasiukajtis
152625c28e83SPiotr Jasiukajtis! delay slot
152725c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l2
152825c28e83SPiotr Jasiukajtis	nop
152925c28e83SPiotr Jasiukajtis	fmuld	%f10,%f40,%f12
153025c28e83SPiotr Jasiukajtis	faddd	%f2,%f42,%f2
153125c28e83SPiotr Jasiukajtis
153225c28e83SPiotr Jasiukajtis.LOOP2:
153325c28e83SPiotr Jasiukajtis	st	%f3,[%fp+n0]
153425c28e83SPiotr Jasiukajtis	mov	%i3,%o2			! py2 = y
153525c28e83SPiotr Jasiukajtis
153625c28e83SPiotr Jasiukajtis	cmp	%l2,%l7
153725c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
153825c28e83SPiotr Jasiukajtis	fmuld	%f20,%f40,%f22
153925c28e83SPiotr Jasiukajtis	bg,pn	%icc,.BIG2		! if hx > 0x413921fb
154025c28e83SPiotr Jasiukajtis
154125c28e83SPiotr Jasiukajtis! delay slot
154225c28e83SPiotr Jasiukajtis	add	%l5,thresh+4,%o7
154325c28e83SPiotr Jasiukajtis	faddd	%f12,%f42,%f12
154425c28e83SPiotr Jasiukajtis	st	%f13,[%fp+n1]
154525c28e83SPiotr Jasiukajtis
154625c28e83SPiotr Jasiukajtis! -
154725c28e83SPiotr Jasiukajtis
154825c28e83SPiotr Jasiukajtis	add	%l5,thresh,%g1
154925c28e83SPiotr Jasiukajtis	faddd	%f22,%f42,%f22
155025c28e83SPiotr Jasiukajtis	st	%f23,[%fp+n2]
155125c28e83SPiotr Jasiukajtis
155225c28e83SPiotr Jasiukajtis	fsubd	%f2,%f42,%f2		! n
155325c28e83SPiotr Jasiukajtis
155425c28e83SPiotr Jasiukajtis	fsubd	%f12,%f42,%f12		! n
155525c28e83SPiotr Jasiukajtis
155625c28e83SPiotr Jasiukajtis	fsubd	%f22,%f42,%f22		! n
155725c28e83SPiotr Jasiukajtis
155825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f46,%f4
155925c28e83SPiotr Jasiukajtis
156025c28e83SPiotr Jasiukajtis	fmuld	%f12,%f46,%f14
156125c28e83SPiotr Jasiukajtis
156225c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f24
156325c28e83SPiotr Jasiukajtis
156425c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f4
156525c28e83SPiotr Jasiukajtis	fmuld	%f2,%f48,%f6
156625c28e83SPiotr Jasiukajtis
156725c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f14
156825c28e83SPiotr Jasiukajtis	fmuld	%f12,%f48,%f16
156925c28e83SPiotr Jasiukajtis
157025c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f24
157125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f48,%f26
157225c28e83SPiotr Jasiukajtis
157325c28e83SPiotr Jasiukajtis	fsubd	%f4,%f6,%f0
157425c28e83SPiotr Jasiukajtis	ld	[%fp+n0],%o3
157525c28e83SPiotr Jasiukajtis
157625c28e83SPiotr Jasiukajtis	fsubd	%f14,%f16,%f10
157725c28e83SPiotr Jasiukajtis	ld	[%fp+n1],%o4
157825c28e83SPiotr Jasiukajtis
157925c28e83SPiotr Jasiukajtis	fsubd	%f24,%f26,%f20
158025c28e83SPiotr Jasiukajtis	ld	[%fp+n2],%o5
158125c28e83SPiotr Jasiukajtis
158225c28e83SPiotr Jasiukajtis	fsubd	%f4,%f0,%f32
158325c28e83SPiotr Jasiukajtis	and	%o3,1,%o3
158425c28e83SPiotr Jasiukajtis
158525c28e83SPiotr Jasiukajtis	fsubd	%f14,%f10,%f34
158625c28e83SPiotr Jasiukajtis	and	%o4,1,%o4
158725c28e83SPiotr Jasiukajtis
158825c28e83SPiotr Jasiukajtis	fsubd	%f24,%f20,%f36
158925c28e83SPiotr Jasiukajtis	and	%o5,1,%o5
159025c28e83SPiotr Jasiukajtis
159125c28e83SPiotr Jasiukajtis	fsubd	%f32,%f6,%f32
159225c28e83SPiotr Jasiukajtis	fmuld	%f2,%f50,%f8
159325c28e83SPiotr Jasiukajtis	sll	%o3,3,%o3
159425c28e83SPiotr Jasiukajtis
159525c28e83SPiotr Jasiukajtis	fsubd	%f34,%f16,%f34
159625c28e83SPiotr Jasiukajtis	fmuld	%f12,%f50,%f18
159725c28e83SPiotr Jasiukajtis	sll	%o4,3,%o4
159825c28e83SPiotr Jasiukajtis
159925c28e83SPiotr Jasiukajtis	fsubd	%f36,%f26,%f36
160025c28e83SPiotr Jasiukajtis	fmuld	%f22,%f50,%f28
160125c28e83SPiotr Jasiukajtis	sll	%o5,3,%o5
160225c28e83SPiotr Jasiukajtis
160325c28e83SPiotr Jasiukajtis	fsubd	%f8,%f32,%f8
160425c28e83SPiotr Jasiukajtis	ld	[%g1+%o3],%f6
160525c28e83SPiotr Jasiukajtis
160625c28e83SPiotr Jasiukajtis	fsubd	%f18,%f34,%f18
160725c28e83SPiotr Jasiukajtis	ld	[%g1+%o4],%f16
160825c28e83SPiotr Jasiukajtis
160925c28e83SPiotr Jasiukajtis	fsubd	%f28,%f36,%f28
161025c28e83SPiotr Jasiukajtis	ld	[%g1+%o5],%f26
161125c28e83SPiotr Jasiukajtis
161225c28e83SPiotr Jasiukajtis	fsubd	%f0,%f8,%f4
161325c28e83SPiotr Jasiukajtis
161425c28e83SPiotr Jasiukajtis	fsubd	%f10,%f18,%f14
161525c28e83SPiotr Jasiukajtis
161625c28e83SPiotr Jasiukajtis	fsubd	%f20,%f28,%f24
161725c28e83SPiotr Jasiukajtis
161825c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f32
161925c28e83SPiotr Jasiukajtis
162025c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f34
162125c28e83SPiotr Jasiukajtis
162225c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f36
162325c28e83SPiotr Jasiukajtis
162425c28e83SPiotr Jasiukajtis	fsubd	%f32,%f8,%f32
162525c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f2
162625c28e83SPiotr Jasiukajtis
162725c28e83SPiotr Jasiukajtis	fsubd	%f34,%f18,%f34
162825c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f12
162925c28e83SPiotr Jasiukajtis
163025c28e83SPiotr Jasiukajtis	fsubd	%f36,%f28,%f36
163125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f52,%f22
163225c28e83SPiotr Jasiukajtis
163325c28e83SPiotr Jasiukajtis	fsubd	%f2,%f32,%f2
163425c28e83SPiotr Jasiukajtis	ld	[%o7+%o3],%f8
163525c28e83SPiotr Jasiukajtis
163625c28e83SPiotr Jasiukajtis	fsubd	%f12,%f34,%f12
163725c28e83SPiotr Jasiukajtis	ld	[%o7+%o4],%f18
163825c28e83SPiotr Jasiukajtis
163925c28e83SPiotr Jasiukajtis	fsubd	%f22,%f36,%f22
164025c28e83SPiotr Jasiukajtis	ld	[%o7+%o5],%f28
164125c28e83SPiotr Jasiukajtis
164225c28e83SPiotr Jasiukajtis	fsubd	%f4,%f2,%f0		! x
164325c28e83SPiotr Jasiukajtis
164425c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f10		! x
164525c28e83SPiotr Jasiukajtis
164625c28e83SPiotr Jasiukajtis	fsubd	%f24,%f22,%f20		! x
164725c28e83SPiotr Jasiukajtis
164825c28e83SPiotr Jasiukajtis	fsubd	%f4,%f0,%f4
164925c28e83SPiotr Jasiukajtis
165025c28e83SPiotr Jasiukajtis	fsubd	%f14,%f10,%f14
165125c28e83SPiotr Jasiukajtis
165225c28e83SPiotr Jasiukajtis	fsubd	%f24,%f20,%f24
165325c28e83SPiotr Jasiukajtis
165425c28e83SPiotr Jasiukajtis	fands	%f0,%f30,%f9		! save signbit
165525c28e83SPiotr Jasiukajtis
165625c28e83SPiotr Jasiukajtis	fands	%f10,%f30,%f19		! save signbit
165725c28e83SPiotr Jasiukajtis
165825c28e83SPiotr Jasiukajtis	fands	%f20,%f30,%f29		! save signbit
165925c28e83SPiotr Jasiukajtis
166025c28e83SPiotr Jasiukajtis	fabsd	%f0,%f0
166125c28e83SPiotr Jasiukajtis	std	%f0,[%fp+x0_1]
166225c28e83SPiotr Jasiukajtis
166325c28e83SPiotr Jasiukajtis	fabsd	%f10,%f10
166425c28e83SPiotr Jasiukajtis	std	%f10,[%fp+x1_1]
166525c28e83SPiotr Jasiukajtis
166625c28e83SPiotr Jasiukajtis	fabsd	%f20,%f20
166725c28e83SPiotr Jasiukajtis	std	%f20,[%fp+x2_1]
166825c28e83SPiotr Jasiukajtis
166925c28e83SPiotr Jasiukajtis	fsubd	%f4,%f2,%f2		! y
167025c28e83SPiotr Jasiukajtis
167125c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f12		! y
167225c28e83SPiotr Jasiukajtis
167325c28e83SPiotr Jasiukajtis	fsubd	%f24,%f22,%f22		! y
167425c28e83SPiotr Jasiukajtis
167525c28e83SPiotr Jasiukajtis	fcmpgt32 %f6,%f0,%l0
167625c28e83SPiotr Jasiukajtis
167725c28e83SPiotr Jasiukajtis	fcmpgt32 %f16,%f10,%l1
167825c28e83SPiotr Jasiukajtis
167925c28e83SPiotr Jasiukajtis	fcmpgt32 %f26,%f20,%l2
168025c28e83SPiotr Jasiukajtis
168125c28e83SPiotr Jasiukajtis! -- 16 byte aligned
168225c28e83SPiotr Jasiukajtis	fxors	%f2,%f9,%f2
168325c28e83SPiotr Jasiukajtis
168425c28e83SPiotr Jasiukajtis	fxors	%f12,%f19,%f12
168525c28e83SPiotr Jasiukajtis
168625c28e83SPiotr Jasiukajtis	fxors	%f22,%f29,%f22
168725c28e83SPiotr Jasiukajtis
168825c28e83SPiotr Jasiukajtis	fands	%f9,%f8,%f9		! if (n & 1) clear sign bit
168925c28e83SPiotr Jasiukajtis	andcc	%l0,2,%g0
169025c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE4
169125c28e83SPiotr Jasiukajtis
169225c28e83SPiotr Jasiukajtis! delay slot
169325c28e83SPiotr Jasiukajtis	fands	%f19,%f18,%f19		! if (n & 1) clear sign bit
169425c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
169525c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE2
169625c28e83SPiotr Jasiukajtis
169725c28e83SPiotr Jasiukajtis! delay slot
169825c28e83SPiotr Jasiukajtis	fands	%f29,%f28,%f29		! if (n & 1) clear sign bit
169925c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
170025c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE1
170125c28e83SPiotr Jasiukajtis
170225c28e83SPiotr Jasiukajtis! delay slot
170325c28e83SPiotr Jasiukajtis	fpadd32s %f0,%f31,%f8
170425c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
170525c28e83SPiotr Jasiukajtis	ld	[%fp+x0_1],%l0
170625c28e83SPiotr Jasiukajtis
170725c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
170825c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
170925c28e83SPiotr Jasiukajtis	ld	[%fp+x1_1],%l1
171025c28e83SPiotr Jasiukajtis
171125c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
171225c28e83SPiotr Jasiukajtis	ld	[%fp+x2_1],%l2
171325c28e83SPiotr Jasiukajtis
171425c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f4
171525c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
171625c28e83SPiotr Jasiukajtis
171725c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f14
171825c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
171925c28e83SPiotr Jasiukajtis
172025c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f24
172125c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
172225c28e83SPiotr Jasiukajtis
172325c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f0
172425c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
172525c28e83SPiotr Jasiukajtis
172625c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f10
172725c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
172825c28e83SPiotr Jasiukajtis
172925c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f20
173025c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
173125c28e83SPiotr Jasiukajtis
173225c28e83SPiotr Jasiukajtis	faddd	%f0,%f2,%f0
173325c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
173425c28e83SPiotr Jasiukajtis
173525c28e83SPiotr Jasiukajtis	faddd	%f10,%f12,%f10
173625c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
173725c28e83SPiotr Jasiukajtis
173825c28e83SPiotr Jasiukajtis	faddd	%f20,%f22,%f20
173925c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
174025c28e83SPiotr Jasiukajtis
174125c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
174225c28e83SPiotr Jasiukajtis	add	%l0,%o3,%l0
174325c28e83SPiotr Jasiukajtis
174425c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
174525c28e83SPiotr Jasiukajtis	add	%l1,%o4,%l1
174625c28e83SPiotr Jasiukajtis
174725c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
174825c28e83SPiotr Jasiukajtis	add	%l2,%o5,%l2
174925c28e83SPiotr Jasiukajtis
175025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
175125c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
175225c28e83SPiotr Jasiukajtis
175325c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
175425c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f34
175525c28e83SPiotr Jasiukajtis
175625c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
175725c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f36
175825c28e83SPiotr Jasiukajtis
175925c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
176025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
176125c28e83SPiotr Jasiukajtis
176225c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
176325c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
176425c28e83SPiotr Jasiukajtis
176525c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
176625c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
176725c28e83SPiotr Jasiukajtis
176825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
176925c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
177025c28e83SPiotr Jasiukajtis
177125c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
177225c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
177325c28e83SPiotr Jasiukajtis
177425c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
177525c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
177625c28e83SPiotr Jasiukajtis
177725c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
177825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
177925c28e83SPiotr Jasiukajtis
178025c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
178125c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
178225c28e83SPiotr Jasiukajtis
178325c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
178425c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
178525c28e83SPiotr Jasiukajtis
178625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
178725c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f2
178825c28e83SPiotr Jasiukajtis
178925c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
179025c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f12
179125c28e83SPiotr Jasiukajtis
179225c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
179325c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f22
179425c28e83SPiotr Jasiukajtis
179525c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
179625c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f0
179725c28e83SPiotr Jasiukajtis
179825c28e83SPiotr Jasiukajtis	fmuld	%f14,%f34,%f14
179925c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f10
180025c28e83SPiotr Jasiukajtis
180125c28e83SPiotr Jasiukajtis	fmuld	%f24,%f36,%f24
180225c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f20
180325c28e83SPiotr Jasiukajtis
180425c28e83SPiotr Jasiukajtis	fmuld	%f6,%f2,%f6
180525c28e83SPiotr Jasiukajtis
180625c28e83SPiotr Jasiukajtis	fmuld	%f16,%f12,%f16
180725c28e83SPiotr Jasiukajtis
180825c28e83SPiotr Jasiukajtis	fmuld	%f26,%f22,%f26
180925c28e83SPiotr Jasiukajtis
181025c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
181125c28e83SPiotr Jasiukajtis
181225c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
181325c28e83SPiotr Jasiukajtis
181425c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
181525c28e83SPiotr Jasiukajtis
181625c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
181725c28e83SPiotr Jasiukajtis
181825c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
181925c28e83SPiotr Jasiukajtis
182025c28e83SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
182125c28e83SPiotr Jasiukajtis
182225c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
182325c28e83SPiotr Jasiukajtis
182425c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16
182525c28e83SPiotr Jasiukajtis
182625c28e83SPiotr Jasiukajtis	faddd	%f26,%f36,%f26
182725c28e83SPiotr Jasiukajtis
182825c28e83SPiotr Jasiukajtis.FIXSIGN:
182925c28e83SPiotr Jasiukajtis	ld	[%fp+n0],%o3
183025c28e83SPiotr Jasiukajtis	add	%l5,thresh-4,%g1
183125c28e83SPiotr Jasiukajtis
183225c28e83SPiotr Jasiukajtis	ld	[%fp+n1],%o4
183325c28e83SPiotr Jasiukajtis
183425c28e83SPiotr Jasiukajtis	ld	[%fp+n2],%o5
183525c28e83SPiotr Jasiukajtis	and	%o3,2,%o3
183625c28e83SPiotr Jasiukajtis
183725c28e83SPiotr Jasiukajtis	sll	%o3,2,%o3
183825c28e83SPiotr Jasiukajtis	and	%o4,2,%o4
183925c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
184025c28e83SPiotr Jasiukajtis
184125c28e83SPiotr Jasiukajtis	sll	%o4,2,%o4
184225c28e83SPiotr Jasiukajtis	and	%o5,2,%o5
184325c28e83SPiotr Jasiukajtis	ld	[%g1+%o3],%f8
184425c28e83SPiotr Jasiukajtis
184525c28e83SPiotr Jasiukajtis	sll	%o5,2,%o5
184625c28e83SPiotr Jasiukajtis	ld	[%g1+%o4],%f18
184725c28e83SPiotr Jasiukajtis
184825c28e83SPiotr Jasiukajtis	ld	[%g1+%o5],%f28
184925c28e83SPiotr Jasiukajtis	fxors	%f9,%f8,%f9
185025c28e83SPiotr Jasiukajtis
185125c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
185225c28e83SPiotr Jasiukajtis	fxors	%f29,%f28,%f29
185325c28e83SPiotr Jasiukajtis
185425c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
185525c28e83SPiotr Jasiukajtis	fxors	%f19,%f18,%f19
185625c28e83SPiotr Jasiukajtis
185725c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6		! tack on sign
185825c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
185925c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
186025c28e83SPiotr Jasiukajtis
186125c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26		! tack on sign
186225c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
186325c28e83SPiotr Jasiukajtis
186425c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16		! tack on sign
186525c28e83SPiotr Jasiukajtis	st	%f26,[%o2]
186625c28e83SPiotr Jasiukajtis
186725c28e83SPiotr Jasiukajtis	st	%f27,[%o2+4]
186825c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
186925c28e83SPiotr Jasiukajtis
187025c28e83SPiotr Jasiukajtis	st	%f16,[%o1]
187125c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
187225c28e83SPiotr Jasiukajtis	bg,pt	%icc,.LOOP0
187325c28e83SPiotr Jasiukajtis
187425c28e83SPiotr Jasiukajtis! delay slot
187525c28e83SPiotr Jasiukajtis	st	%f17,[%o1+4]
187625c28e83SPiotr Jasiukajtis
187725c28e83SPiotr Jasiukajtis	ba,pt	%icc,.ENDLOOP0
187825c28e83SPiotr Jasiukajtis! delay slot
187925c28e83SPiotr Jasiukajtis	nop
188025c28e83SPiotr Jasiukajtis
188125c28e83SPiotr Jasiukajtis	.align	32
188225c28e83SPiotr Jasiukajtis.CASE1:
188325c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
188425c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
188525c28e83SPiotr Jasiukajtis	ld	[%fp+x0_1],%l0
188625c28e83SPiotr Jasiukajtis
188725c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f4
188825c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
188925c28e83SPiotr Jasiukajtis	ld	[%fp+x1_1],%l1
189025c28e83SPiotr Jasiukajtis
189125c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f14
189225c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
189325c28e83SPiotr Jasiukajtis
189425c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f0
189525c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
189625c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
189725c28e83SPiotr Jasiukajtis
189825c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f10
189925c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
190025c28e83SPiotr Jasiukajtis
190125c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f20
190225c28e83SPiotr Jasiukajtis	ldd	[%l5+%o5],%f36
190325c28e83SPiotr Jasiukajtis	add	%l5,%o5,%l2
190425c28e83SPiotr Jasiukajtis
190525c28e83SPiotr Jasiukajtis	faddd	%f0,%f2,%f0
190625c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
190725c28e83SPiotr Jasiukajtis
190825c28e83SPiotr Jasiukajtis	faddd	%f10,%f12,%f10
190925c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
191025c28e83SPiotr Jasiukajtis
191125c28e83SPiotr Jasiukajtis	fmuld	%f20,%f36,%f24
191225c28e83SPiotr Jasiukajtis	ldd	[%l2+0x10],%f26
191325c28e83SPiotr Jasiukajtis	add	%fp,%o5,%o5
191425c28e83SPiotr Jasiukajtis
191525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
191625c28e83SPiotr Jasiukajtis	add	%l0,%o3,%l0
191725c28e83SPiotr Jasiukajtis
191825c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
191925c28e83SPiotr Jasiukajtis	add	%l1,%o4,%l1
192025c28e83SPiotr Jasiukajtis
192125c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
192225c28e83SPiotr Jasiukajtis	ldd	[%l2+0x20],%f36
192325c28e83SPiotr Jasiukajtis
192425c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
192525c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
192625c28e83SPiotr Jasiukajtis
192725c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
192825c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f34
192925c28e83SPiotr Jasiukajtis
193025c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
193125c28e83SPiotr Jasiukajtis	ldd	[%l2+0x30],%f26
193225c28e83SPiotr Jasiukajtis
193325c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
193425c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
193525c28e83SPiotr Jasiukajtis
193625c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
193725c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
193825c28e83SPiotr Jasiukajtis
193925c28e83SPiotr Jasiukajtis	faddd	%f24,%f36,%f24
194025c28e83SPiotr Jasiukajtis	ldd	[%o5+x2_1],%f36
194125c28e83SPiotr Jasiukajtis
194225c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
194325c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
194425c28e83SPiotr Jasiukajtis
194525c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
194625c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
194725c28e83SPiotr Jasiukajtis
194825c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
194925c28e83SPiotr Jasiukajtis
195025c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
195125c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
195225c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f2
195325c28e83SPiotr Jasiukajtis
195425c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
195525c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
195625c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f12
195725c28e83SPiotr Jasiukajtis
195825c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
195925c28e83SPiotr Jasiukajtis
196025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
196125c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f0
196225c28e83SPiotr Jasiukajtis
196325c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
196425c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f10
196525c28e83SPiotr Jasiukajtis
196625c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
196725c28e83SPiotr Jasiukajtis	std	%f22,[%fp+y2_0]
196825c28e83SPiotr Jasiukajtis
196925c28e83SPiotr Jasiukajtis	fmuld	%f14,%f34,%f14
197025c28e83SPiotr Jasiukajtis
197125c28e83SPiotr Jasiukajtis	fmuld	%f6,%f2,%f6
197225c28e83SPiotr Jasiukajtis
197325c28e83SPiotr Jasiukajtis	fmuld	%f16,%f12,%f16
197425c28e83SPiotr Jasiukajtis
197525c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
197625c28e83SPiotr Jasiukajtis
197725c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
197825c28e83SPiotr Jasiukajtis
197925c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
198025c28e83SPiotr Jasiukajtis
198125c28e83SPiotr Jasiukajtis	fmuld	%f36,%f24,%f24
198225c28e83SPiotr Jasiukajtis	ldd	[%o5+y2_0],%f22
198325c28e83SPiotr Jasiukajtis
198425c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
198525c28e83SPiotr Jasiukajtis
198625c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
198725c28e83SPiotr Jasiukajtis
198825c28e83SPiotr Jasiukajtis	faddd	%f24,%f22,%f24
198925c28e83SPiotr Jasiukajtis
199025c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
199125c28e83SPiotr Jasiukajtis
199225c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16
199325c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
199425c28e83SPiotr Jasiukajtis
199525c28e83SPiotr Jasiukajtis! delay slot
199625c28e83SPiotr Jasiukajtis	faddd	%f36,%f24,%f26
199725c28e83SPiotr Jasiukajtis
199825c28e83SPiotr Jasiukajtis	.align	32
199925c28e83SPiotr Jasiukajtis.CASE2:
200025c28e83SPiotr Jasiukajtis	fpadd32s %f0,%f31,%f8
200125c28e83SPiotr Jasiukajtis	ld	[%fp+x0_1],%l0
200225c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
200325c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE3
200425c28e83SPiotr Jasiukajtis
200525c28e83SPiotr Jasiukajtis! delay slot
200625c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
200725c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
200825c28e83SPiotr Jasiukajtis	ld	[%fp+x2_1],%l2
200925c28e83SPiotr Jasiukajtis
201025c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f4
201125c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
201225c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
201325c28e83SPiotr Jasiukajtis
201425c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f24
201525c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
201625c28e83SPiotr Jasiukajtis
201725c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f0
201825c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
201925c28e83SPiotr Jasiukajtis
202025c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f20
202125c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
202225c28e83SPiotr Jasiukajtis
202325c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f10
202425c28e83SPiotr Jasiukajtis	ldd	[%l5+%o4],%f34
202525c28e83SPiotr Jasiukajtis	add	%l5,%o4,%l1
202625c28e83SPiotr Jasiukajtis
202725c28e83SPiotr Jasiukajtis	faddd	%f0,%f2,%f0
202825c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
202925c28e83SPiotr Jasiukajtis
203025c28e83SPiotr Jasiukajtis	faddd	%f20,%f22,%f20
203125c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
203225c28e83SPiotr Jasiukajtis
203325c28e83SPiotr Jasiukajtis	fmuld	%f10,%f34,%f14
203425c28e83SPiotr Jasiukajtis	ldd	[%l1+0x10],%f16
203525c28e83SPiotr Jasiukajtis	add	%fp,%o4,%o4
203625c28e83SPiotr Jasiukajtis
203725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
203825c28e83SPiotr Jasiukajtis	add	%l0,%o3,%l0
203925c28e83SPiotr Jasiukajtis
204025c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
204125c28e83SPiotr Jasiukajtis	add	%l2,%o5,%l2
204225c28e83SPiotr Jasiukajtis
204325c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
204425c28e83SPiotr Jasiukajtis	ldd	[%l1+0x20],%f34
204525c28e83SPiotr Jasiukajtis
204625c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
204725c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
204825c28e83SPiotr Jasiukajtis
204925c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
205025c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f36
205125c28e83SPiotr Jasiukajtis
205225c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
205325c28e83SPiotr Jasiukajtis	ldd	[%l1+0x30],%f16
205425c28e83SPiotr Jasiukajtis
205525c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
205625c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
205725c28e83SPiotr Jasiukajtis
205825c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
205925c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
206025c28e83SPiotr Jasiukajtis
206125c28e83SPiotr Jasiukajtis	faddd	%f14,%f34,%f14
206225c28e83SPiotr Jasiukajtis	ldd	[%o4+x1_1],%f34
206325c28e83SPiotr Jasiukajtis
206425c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
206525c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
206625c28e83SPiotr Jasiukajtis
206725c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
206825c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
206925c28e83SPiotr Jasiukajtis
207025c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
207125c28e83SPiotr Jasiukajtis
207225c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
207325c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
207425c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f2
207525c28e83SPiotr Jasiukajtis
207625c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
207725c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
207825c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f22
207925c28e83SPiotr Jasiukajtis
208025c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
208125c28e83SPiotr Jasiukajtis
208225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
208325c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f0
208425c28e83SPiotr Jasiukajtis
208525c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
208625c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f20
208725c28e83SPiotr Jasiukajtis
208825c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
208925c28e83SPiotr Jasiukajtis	std	%f12,[%fp+y1_0]
209025c28e83SPiotr Jasiukajtis
209125c28e83SPiotr Jasiukajtis	fmuld	%f24,%f36,%f24
209225c28e83SPiotr Jasiukajtis
209325c28e83SPiotr Jasiukajtis	fmuld	%f6,%f2,%f6
209425c28e83SPiotr Jasiukajtis
209525c28e83SPiotr Jasiukajtis	fmuld	%f26,%f22,%f26
209625c28e83SPiotr Jasiukajtis
209725c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
209825c28e83SPiotr Jasiukajtis
209925c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
210025c28e83SPiotr Jasiukajtis
210125c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
210225c28e83SPiotr Jasiukajtis
210325c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
210425c28e83SPiotr Jasiukajtis	ldd	[%o4+y1_0],%f12
210525c28e83SPiotr Jasiukajtis
210625c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
210725c28e83SPiotr Jasiukajtis
210825c28e83SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
210925c28e83SPiotr Jasiukajtis
211025c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
211125c28e83SPiotr Jasiukajtis
211225c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
211325c28e83SPiotr Jasiukajtis
211425c28e83SPiotr Jasiukajtis	faddd	%f26,%f36,%f26
211525c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
211625c28e83SPiotr Jasiukajtis
211725c28e83SPiotr Jasiukajtis! delay slot
211825c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f16
211925c28e83SPiotr Jasiukajtis
212025c28e83SPiotr Jasiukajtis	.align	32
212125c28e83SPiotr Jasiukajtis.CASE3:
212225c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f4
212325c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
212425c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
212525c28e83SPiotr Jasiukajtis
212625c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f10
212725c28e83SPiotr Jasiukajtis	ldd	[%l5+%o4],%f34
212825c28e83SPiotr Jasiukajtis	add	%l5,%o4,%l1
212925c28e83SPiotr Jasiukajtis
213025c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f0
213125c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
213225c28e83SPiotr Jasiukajtis
213325c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f20
213425c28e83SPiotr Jasiukajtis	ldd	[%l5+%o5],%f36
213525c28e83SPiotr Jasiukajtis	add	%l5,%o5,%l2
213625c28e83SPiotr Jasiukajtis
213725c28e83SPiotr Jasiukajtis	fmuld	%f10,%f34,%f14
213825c28e83SPiotr Jasiukajtis	ldd	[%l1+0x10],%f16
213925c28e83SPiotr Jasiukajtis	add	%fp,%o4,%o4
214025c28e83SPiotr Jasiukajtis
214125c28e83SPiotr Jasiukajtis	faddd	%f0,%f2,%f0
214225c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
214325c28e83SPiotr Jasiukajtis
214425c28e83SPiotr Jasiukajtis	fmuld	%f20,%f36,%f24
214525c28e83SPiotr Jasiukajtis	ldd	[%l2+0x10],%f26
214625c28e83SPiotr Jasiukajtis	add	%fp,%o5,%o5
214725c28e83SPiotr Jasiukajtis
214825c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
214925c28e83SPiotr Jasiukajtis	ldd	[%l1+0x20],%f34
215025c28e83SPiotr Jasiukajtis
215125c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
215225c28e83SPiotr Jasiukajtis	add	%l0,%o3,%l0
215325c28e83SPiotr Jasiukajtis
215425c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
215525c28e83SPiotr Jasiukajtis	ldd	[%l2+0x20],%f36
215625c28e83SPiotr Jasiukajtis
215725c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
215825c28e83SPiotr Jasiukajtis	ldd	[%l1+0x30],%f16
215925c28e83SPiotr Jasiukajtis
216025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
216125c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
216225c28e83SPiotr Jasiukajtis
216325c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
216425c28e83SPiotr Jasiukajtis	ldd	[%l2+0x30],%f26
216525c28e83SPiotr Jasiukajtis
216625c28e83SPiotr Jasiukajtis	faddd	%f14,%f34,%f14
216725c28e83SPiotr Jasiukajtis	ldd	[%o4+x1_1],%f34
216825c28e83SPiotr Jasiukajtis
216925c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
217025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
217125c28e83SPiotr Jasiukajtis
217225c28e83SPiotr Jasiukajtis	faddd	%f24,%f36,%f24
217325c28e83SPiotr Jasiukajtis	ldd	[%o5+x2_1],%f36
217425c28e83SPiotr Jasiukajtis
217525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
217625c28e83SPiotr Jasiukajtis	std	%f12,[%fp+y1_0]
217725c28e83SPiotr Jasiukajtis
217825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
217925c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
218025c28e83SPiotr Jasiukajtis
218125c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
218225c28e83SPiotr Jasiukajtis	std	%f22,[%fp+y2_0]
218325c28e83SPiotr Jasiukajtis
218425c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
218525c28e83SPiotr Jasiukajtis
218625c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
218725c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
218825c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f2
218925c28e83SPiotr Jasiukajtis
219025c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
219125c28e83SPiotr Jasiukajtis
219225c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
219325c28e83SPiotr Jasiukajtis
219425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
219525c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f0
219625c28e83SPiotr Jasiukajtis
219725c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
219825c28e83SPiotr Jasiukajtis
219925c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
220025c28e83SPiotr Jasiukajtis
220125c28e83SPiotr Jasiukajtis	fmuld	%f6,%f2,%f6
220225c28e83SPiotr Jasiukajtis
220325c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
220425c28e83SPiotr Jasiukajtis	ldd	[%o4+y1_0],%f12
220525c28e83SPiotr Jasiukajtis
220625c28e83SPiotr Jasiukajtis	fmuld	%f36,%f24,%f24
220725c28e83SPiotr Jasiukajtis	ldd	[%o5+y2_0],%f22
220825c28e83SPiotr Jasiukajtis
220925c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
221025c28e83SPiotr Jasiukajtis
221125c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
221225c28e83SPiotr Jasiukajtis
221325c28e83SPiotr Jasiukajtis	faddd	%f24,%f22,%f24
221425c28e83SPiotr Jasiukajtis
221525c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
221625c28e83SPiotr Jasiukajtis
221725c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f16
221825c28e83SPiotr Jasiukajtis
221925c28e83SPiotr Jasiukajtis	faddd	%f36,%f24,%f26
222025c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
222125c28e83SPiotr Jasiukajtis
222225c28e83SPiotr Jasiukajtis! delay slot
222325c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
222425c28e83SPiotr Jasiukajtis
222525c28e83SPiotr Jasiukajtis	.align	32
222625c28e83SPiotr Jasiukajtis.CASE4:
222725c28e83SPiotr Jasiukajtis	fands	%f29,%f28,%f29		! if (n & 1) clear sign bit
222825c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
222925c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
223025c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE6
223125c28e83SPiotr Jasiukajtis
223225c28e83SPiotr Jasiukajtis! delay slot
223325c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
223425c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
223525c28e83SPiotr Jasiukajtis	ld	[%fp+x1_1],%l1
223625c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE5
223725c28e83SPiotr Jasiukajtis
223825c28e83SPiotr Jasiukajtis! delay slot
223925c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
224025c28e83SPiotr Jasiukajtis	ld	[%fp+x2_1],%l2
224125c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
224225c28e83SPiotr Jasiukajtis
224325c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f14
224425c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
224525c28e83SPiotr Jasiukajtis
224625c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f24
224725c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
224825c28e83SPiotr Jasiukajtis
224925c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f10
225025c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
225125c28e83SPiotr Jasiukajtis
225225c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f20
225325c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
225425c28e83SPiotr Jasiukajtis
225525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f0
225625c28e83SPiotr Jasiukajtis	ldd	[%l5+%o3],%f32
225725c28e83SPiotr Jasiukajtis	add	%l5,%o3,%l0
225825c28e83SPiotr Jasiukajtis
225925c28e83SPiotr Jasiukajtis	faddd	%f10,%f12,%f10
226025c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
226125c28e83SPiotr Jasiukajtis
226225c28e83SPiotr Jasiukajtis	faddd	%f20,%f22,%f20
226325c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
226425c28e83SPiotr Jasiukajtis
226525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f32,%f4
226625c28e83SPiotr Jasiukajtis	ldd	[%l0+0x10],%f6
226725c28e83SPiotr Jasiukajtis	add	%fp,%o3,%o3
226825c28e83SPiotr Jasiukajtis
226925c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
227025c28e83SPiotr Jasiukajtis	add	%l1,%o4,%l1
227125c28e83SPiotr Jasiukajtis
227225c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
227325c28e83SPiotr Jasiukajtis	add	%l2,%o5,%l2
227425c28e83SPiotr Jasiukajtis
227525c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
227625c28e83SPiotr Jasiukajtis	ldd	[%l0+0x20],%f32
227725c28e83SPiotr Jasiukajtis
227825c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
227925c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f34
228025c28e83SPiotr Jasiukajtis
228125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
228225c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f36
228325c28e83SPiotr Jasiukajtis
228425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
228525c28e83SPiotr Jasiukajtis	ldd	[%l0+0x30],%f6
228625c28e83SPiotr Jasiukajtis
228725c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
228825c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
228925c28e83SPiotr Jasiukajtis
229025c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
229125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
229225c28e83SPiotr Jasiukajtis
229325c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
229425c28e83SPiotr Jasiukajtis	ldd	[%o3+x0_1],%f32
229525c28e83SPiotr Jasiukajtis
229625c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
229725c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
229825c28e83SPiotr Jasiukajtis
229925c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
230025c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
230125c28e83SPiotr Jasiukajtis
230225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
230325c28e83SPiotr Jasiukajtis
230425c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
230525c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
230625c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f12
230725c28e83SPiotr Jasiukajtis
230825c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
230925c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
231025c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f22
231125c28e83SPiotr Jasiukajtis
231225c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
231325c28e83SPiotr Jasiukajtis
231425c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
231525c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f10
231625c28e83SPiotr Jasiukajtis
231725c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
231825c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f20
231925c28e83SPiotr Jasiukajtis
232025c28e83SPiotr Jasiukajtis	fmuld	%f14,%f34,%f14
232125c28e83SPiotr Jasiukajtis	std	%f2,[%fp+y0_0]
232225c28e83SPiotr Jasiukajtis
232325c28e83SPiotr Jasiukajtis	fmuld	%f24,%f36,%f24
232425c28e83SPiotr Jasiukajtis
232525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
232625c28e83SPiotr Jasiukajtis
232725c28e83SPiotr Jasiukajtis	fmuld	%f16,%f12,%f16
232825c28e83SPiotr Jasiukajtis
232925c28e83SPiotr Jasiukajtis	fmuld	%f26,%f22,%f26
233025c28e83SPiotr Jasiukajtis
233125c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
233225c28e83SPiotr Jasiukajtis	ldd	[%o3+y0_0],%f2
233325c28e83SPiotr Jasiukajtis
233425c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
233525c28e83SPiotr Jasiukajtis
233625c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
233725c28e83SPiotr Jasiukajtis
233825c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
233925c28e83SPiotr Jasiukajtis
234025c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
234125c28e83SPiotr Jasiukajtis
234225c28e83SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
234325c28e83SPiotr Jasiukajtis
234425c28e83SPiotr Jasiukajtis	faddd	%f32,%f4,%f6
234525c28e83SPiotr Jasiukajtis
234625c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16
234725c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
234825c28e83SPiotr Jasiukajtis
234925c28e83SPiotr Jasiukajtis! delay slot
235025c28e83SPiotr Jasiukajtis	faddd	%f26,%f36,%f26
235125c28e83SPiotr Jasiukajtis
235225c28e83SPiotr Jasiukajtis	.align	32
235325c28e83SPiotr Jasiukajtis.CASE5:
235425c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f14
235525c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
235625c28e83SPiotr Jasiukajtis
235725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f0
235825c28e83SPiotr Jasiukajtis	ldd	[%l5+%o3],%f32
235925c28e83SPiotr Jasiukajtis	add	%l5,%o3,%l0
236025c28e83SPiotr Jasiukajtis
236125c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f10
236225c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
236325c28e83SPiotr Jasiukajtis
236425c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f20
236525c28e83SPiotr Jasiukajtis	ldd	[%l5+%o5],%f36
236625c28e83SPiotr Jasiukajtis	add	%l5,%o5,%l2
236725c28e83SPiotr Jasiukajtis
236825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f32,%f4
236925c28e83SPiotr Jasiukajtis	ldd	[%l0+0x10],%f6
237025c28e83SPiotr Jasiukajtis	add	%fp,%o3,%o3
237125c28e83SPiotr Jasiukajtis
237225c28e83SPiotr Jasiukajtis	faddd	%f10,%f12,%f10
237325c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
237425c28e83SPiotr Jasiukajtis
237525c28e83SPiotr Jasiukajtis	fmuld	%f20,%f36,%f24
237625c28e83SPiotr Jasiukajtis	ldd	[%l2+0x10],%f26
237725c28e83SPiotr Jasiukajtis	add	%fp,%o5,%o5
237825c28e83SPiotr Jasiukajtis
237925c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
238025c28e83SPiotr Jasiukajtis	ldd	[%l0+0x20],%f32
238125c28e83SPiotr Jasiukajtis
238225c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
238325c28e83SPiotr Jasiukajtis	add	%l1,%o4,%l1
238425c28e83SPiotr Jasiukajtis
238525c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
238625c28e83SPiotr Jasiukajtis	ldd	[%l2+0x20],%f36
238725c28e83SPiotr Jasiukajtis
238825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
238925c28e83SPiotr Jasiukajtis	ldd	[%l0+0x30],%f6
239025c28e83SPiotr Jasiukajtis
239125c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
239225c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f34
239325c28e83SPiotr Jasiukajtis
239425c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
239525c28e83SPiotr Jasiukajtis	ldd	[%l2+0x30],%f26
239625c28e83SPiotr Jasiukajtis
239725c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
239825c28e83SPiotr Jasiukajtis	ldd	[%o3+x0_1],%f32
239925c28e83SPiotr Jasiukajtis
240025c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
240125c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
240225c28e83SPiotr Jasiukajtis
240325c28e83SPiotr Jasiukajtis	faddd	%f24,%f36,%f24
240425c28e83SPiotr Jasiukajtis	ldd	[%o5+x2_1],%f36
240525c28e83SPiotr Jasiukajtis
240625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
240725c28e83SPiotr Jasiukajtis	std	%f2,[%fp+y0_0]
240825c28e83SPiotr Jasiukajtis
240925c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
241025c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
241125c28e83SPiotr Jasiukajtis
241225c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
241325c28e83SPiotr Jasiukajtis	std	%f22,[%fp+y2_0]
241425c28e83SPiotr Jasiukajtis
241525c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
241625c28e83SPiotr Jasiukajtis
241725c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
241825c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
241925c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f12
242025c28e83SPiotr Jasiukajtis
242125c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
242225c28e83SPiotr Jasiukajtis
242325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
242425c28e83SPiotr Jasiukajtis
242525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
242625c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f10
242725c28e83SPiotr Jasiukajtis
242825c28e83SPiotr Jasiukajtis	fmuld	%f14,%f34,%f14
242925c28e83SPiotr Jasiukajtis
243025c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
243125c28e83SPiotr Jasiukajtis
243225c28e83SPiotr Jasiukajtis	fmuld	%f16,%f12,%f16
243325c28e83SPiotr Jasiukajtis
243425c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
243525c28e83SPiotr Jasiukajtis	ldd	[%o3+y0_0],%f2
243625c28e83SPiotr Jasiukajtis
243725c28e83SPiotr Jasiukajtis	fmuld	%f36,%f24,%f24
243825c28e83SPiotr Jasiukajtis	ldd	[%o5+y2_0],%f22
243925c28e83SPiotr Jasiukajtis
244025c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
244125c28e83SPiotr Jasiukajtis
244225c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
244325c28e83SPiotr Jasiukajtis
244425c28e83SPiotr Jasiukajtis	faddd	%f24,%f22,%f24
244525c28e83SPiotr Jasiukajtis
244625c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
244725c28e83SPiotr Jasiukajtis
244825c28e83SPiotr Jasiukajtis	faddd	%f32,%f4,%f6
244925c28e83SPiotr Jasiukajtis
245025c28e83SPiotr Jasiukajtis	faddd	%f36,%f24,%f26
245125c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
245225c28e83SPiotr Jasiukajtis
245325c28e83SPiotr Jasiukajtis! delay slot
245425c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16
245525c28e83SPiotr Jasiukajtis
245625c28e83SPiotr Jasiukajtis	.align	32
245725c28e83SPiotr Jasiukajtis.CASE6:
245825c28e83SPiotr Jasiukajtis	ld	[%fp+x2_1],%l2
245925c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
246025c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE7
246125c28e83SPiotr Jasiukajtis! delay slot
246225c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
246325c28e83SPiotr Jasiukajtis
246425c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f24
246525c28e83SPiotr Jasiukajtis	ldd	[%l5+%o3],%f32
246625c28e83SPiotr Jasiukajtis	add	%l5,%o3,%l0
246725c28e83SPiotr Jasiukajtis
246825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f0
246925c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
247025c28e83SPiotr Jasiukajtis
247125c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f20
247225c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
247325c28e83SPiotr Jasiukajtis
247425c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f10
247525c28e83SPiotr Jasiukajtis	ldd	[%l5+%o4],%f34
247625c28e83SPiotr Jasiukajtis	add	%l5,%o4,%l1
247725c28e83SPiotr Jasiukajtis
247825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f32,%f4
247925c28e83SPiotr Jasiukajtis	ldd	[%l0+0x10],%f6
248025c28e83SPiotr Jasiukajtis	add	%fp,%o3,%o3
248125c28e83SPiotr Jasiukajtis
248225c28e83SPiotr Jasiukajtis	faddd	%f20,%f22,%f20
248325c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
248425c28e83SPiotr Jasiukajtis
248525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f34,%f14
248625c28e83SPiotr Jasiukajtis	ldd	[%l1+0x10],%f16
248725c28e83SPiotr Jasiukajtis	add	%fp,%o4,%o4
248825c28e83SPiotr Jasiukajtis
248925c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
249025c28e83SPiotr Jasiukajtis	ldd	[%l0+0x20],%f32
249125c28e83SPiotr Jasiukajtis
249225c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
249325c28e83SPiotr Jasiukajtis	add	%l2,%o5,%l2
249425c28e83SPiotr Jasiukajtis
249525c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
249625c28e83SPiotr Jasiukajtis	ldd	[%l1+0x20],%f34
249725c28e83SPiotr Jasiukajtis
249825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
249925c28e83SPiotr Jasiukajtis	ldd	[%l0+0x30],%f6
250025c28e83SPiotr Jasiukajtis
250125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
250225c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f36
250325c28e83SPiotr Jasiukajtis
250425c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
250525c28e83SPiotr Jasiukajtis	ldd	[%l1+0x30],%f16
250625c28e83SPiotr Jasiukajtis
250725c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
250825c28e83SPiotr Jasiukajtis	ldd	[%o3+x0_1],%f32
250925c28e83SPiotr Jasiukajtis
251025c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
251125c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
251225c28e83SPiotr Jasiukajtis
251325c28e83SPiotr Jasiukajtis	faddd	%f14,%f34,%f14
251425c28e83SPiotr Jasiukajtis	ldd	[%o4+x1_1],%f34
251525c28e83SPiotr Jasiukajtis
251625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
251725c28e83SPiotr Jasiukajtis	std	%f2,[%fp+y0_0]
251825c28e83SPiotr Jasiukajtis
251925c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
252025c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
252125c28e83SPiotr Jasiukajtis
252225c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
252325c28e83SPiotr Jasiukajtis	std	%f12,[%fp+y1_0]
252425c28e83SPiotr Jasiukajtis
252525c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
252625c28e83SPiotr Jasiukajtis
252725c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
252825c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
252925c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f22
253025c28e83SPiotr Jasiukajtis
253125c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
253225c28e83SPiotr Jasiukajtis
253325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
253425c28e83SPiotr Jasiukajtis
253525c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
253625c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f20
253725c28e83SPiotr Jasiukajtis
253825c28e83SPiotr Jasiukajtis	fmuld	%f24,%f36,%f24
253925c28e83SPiotr Jasiukajtis
254025c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
254125c28e83SPiotr Jasiukajtis
254225c28e83SPiotr Jasiukajtis	fmuld	%f26,%f22,%f26
254325c28e83SPiotr Jasiukajtis
254425c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
254525c28e83SPiotr Jasiukajtis	ldd	[%o3+y0_0],%f2
254625c28e83SPiotr Jasiukajtis
254725c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
254825c28e83SPiotr Jasiukajtis	ldd	[%o4+y1_0],%f12
254925c28e83SPiotr Jasiukajtis
255025c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
255125c28e83SPiotr Jasiukajtis
255225c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
255325c28e83SPiotr Jasiukajtis
255425c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
255525c28e83SPiotr Jasiukajtis
255625c28e83SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
255725c28e83SPiotr Jasiukajtis
255825c28e83SPiotr Jasiukajtis	faddd	%f32,%f4,%f6
255925c28e83SPiotr Jasiukajtis
256025c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f16
256125c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
256225c28e83SPiotr Jasiukajtis
256325c28e83SPiotr Jasiukajtis! delay slot
256425c28e83SPiotr Jasiukajtis	faddd	%f26,%f36,%f26
256525c28e83SPiotr Jasiukajtis
256625c28e83SPiotr Jasiukajtis	.align	32
256725c28e83SPiotr Jasiukajtis.CASE7:
256825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f0
256925c28e83SPiotr Jasiukajtis	ldd	[%l5+%o3],%f32
257025c28e83SPiotr Jasiukajtis	add	%l5,%o3,%l0
257125c28e83SPiotr Jasiukajtis
257225c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f10
257325c28e83SPiotr Jasiukajtis	ldd	[%l5+%o4],%f34
257425c28e83SPiotr Jasiukajtis	add	%l5,%o4,%l1
257525c28e83SPiotr Jasiukajtis
257625c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f20
257725c28e83SPiotr Jasiukajtis	ldd	[%l5+%o5],%f36
257825c28e83SPiotr Jasiukajtis	add	%l5,%o5,%l2
257925c28e83SPiotr Jasiukajtis
258025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f32,%f4
258125c28e83SPiotr Jasiukajtis	ldd	[%l0+0x10],%f6
258225c28e83SPiotr Jasiukajtis	add	%fp,%o3,%o3
258325c28e83SPiotr Jasiukajtis
258425c28e83SPiotr Jasiukajtis	fmuld	%f10,%f34,%f14
258525c28e83SPiotr Jasiukajtis	ldd	[%l1+0x10],%f16
258625c28e83SPiotr Jasiukajtis	add	%fp,%o4,%o4
258725c28e83SPiotr Jasiukajtis
258825c28e83SPiotr Jasiukajtis	fmuld	%f20,%f36,%f24
258925c28e83SPiotr Jasiukajtis	ldd	[%l2+0x10],%f26
259025c28e83SPiotr Jasiukajtis	add	%fp,%o5,%o5
259125c28e83SPiotr Jasiukajtis
259225c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
259325c28e83SPiotr Jasiukajtis	ldd	[%l0+0x20],%f32
259425c28e83SPiotr Jasiukajtis
259525c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
259625c28e83SPiotr Jasiukajtis	ldd	[%l1+0x20],%f34
259725c28e83SPiotr Jasiukajtis
259825c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
259925c28e83SPiotr Jasiukajtis	ldd	[%l2+0x20],%f36
260025c28e83SPiotr Jasiukajtis
260125c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
260225c28e83SPiotr Jasiukajtis	ldd	[%l0+0x30],%f6
260325c28e83SPiotr Jasiukajtis
260425c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
260525c28e83SPiotr Jasiukajtis	ldd	[%l1+0x30],%f16
260625c28e83SPiotr Jasiukajtis
260725c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
260825c28e83SPiotr Jasiukajtis	ldd	[%l2+0x30],%f26
260925c28e83SPiotr Jasiukajtis
261025c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
261125c28e83SPiotr Jasiukajtis	ldd	[%o3+x0_1],%f32
261225c28e83SPiotr Jasiukajtis
261325c28e83SPiotr Jasiukajtis	faddd	%f14,%f34,%f14
261425c28e83SPiotr Jasiukajtis	ldd	[%o4+x1_1],%f34
261525c28e83SPiotr Jasiukajtis
261625c28e83SPiotr Jasiukajtis	faddd	%f24,%f36,%f24
261725c28e83SPiotr Jasiukajtis	ldd	[%o5+x2_1],%f36
261825c28e83SPiotr Jasiukajtis
261925c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
262025c28e83SPiotr Jasiukajtis	std	%f2,[%fp+y0_0]
262125c28e83SPiotr Jasiukajtis
262225c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
262325c28e83SPiotr Jasiukajtis	std	%f12,[%fp+y1_0]
262425c28e83SPiotr Jasiukajtis
262525c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
262625c28e83SPiotr Jasiukajtis	std	%f22,[%fp+y2_0]
262725c28e83SPiotr Jasiukajtis
262825c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
262925c28e83SPiotr Jasiukajtis
263025c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
263125c28e83SPiotr Jasiukajtis
263225c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
263325c28e83SPiotr Jasiukajtis
263425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
263525c28e83SPiotr Jasiukajtis
263625c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
263725c28e83SPiotr Jasiukajtis
263825c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
263925c28e83SPiotr Jasiukajtis
264025c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
264125c28e83SPiotr Jasiukajtis	ldd	[%o3+y0_0],%f2
264225c28e83SPiotr Jasiukajtis
264325c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
264425c28e83SPiotr Jasiukajtis	ldd	[%o4+y1_0],%f12
264525c28e83SPiotr Jasiukajtis
264625c28e83SPiotr Jasiukajtis	fmuld	%f36,%f24,%f24
264725c28e83SPiotr Jasiukajtis	ldd	[%o5+y2_0],%f22
264825c28e83SPiotr Jasiukajtis
264925c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
265025c28e83SPiotr Jasiukajtis
265125c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
265225c28e83SPiotr Jasiukajtis
265325c28e83SPiotr Jasiukajtis	faddd	%f24,%f22,%f24
265425c28e83SPiotr Jasiukajtis
265525c28e83SPiotr Jasiukajtis	faddd	%f32,%f4,%f6
265625c28e83SPiotr Jasiukajtis
265725c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f16
265825c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
265925c28e83SPiotr Jasiukajtis
266025c28e83SPiotr Jasiukajtis! delay slot
266125c28e83SPiotr Jasiukajtis	faddd	%f36,%f24,%f26
266225c28e83SPiotr Jasiukajtis
266325c28e83SPiotr Jasiukajtis
266425c28e83SPiotr Jasiukajtis	.align	32
266525c28e83SPiotr Jasiukajtis.ENDLOOP2:
266625c28e83SPiotr Jasiukajtis	fmuld	%f10,%f40,%f12
266725c28e83SPiotr Jasiukajtis	add	%l5,thresh,%g1
266825c28e83SPiotr Jasiukajtis	faddd	%f12,%f42,%f12
266925c28e83SPiotr Jasiukajtis	st	%f13,[%fp+n1]
267025c28e83SPiotr Jasiukajtis	fsubd	%f12,%f42,%f12		! n
267125c28e83SPiotr Jasiukajtis	fmuld	%f12,%f46,%f14
267225c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f14
267325c28e83SPiotr Jasiukajtis	fmuld	%f12,%f48,%f16
267425c28e83SPiotr Jasiukajtis	fsubd	%f14,%f16,%f10
267525c28e83SPiotr Jasiukajtis	ld	[%fp+n1],%o4
267625c28e83SPiotr Jasiukajtis	fsubd	%f14,%f10,%f34
267725c28e83SPiotr Jasiukajtis	and	%o4,1,%o4
267825c28e83SPiotr Jasiukajtis	fsubd	%f34,%f16,%f34
267925c28e83SPiotr Jasiukajtis	fmuld	%f12,%f50,%f18
268025c28e83SPiotr Jasiukajtis	sll	%o4,3,%o4
268125c28e83SPiotr Jasiukajtis	fsubd	%f18,%f34,%f18
268225c28e83SPiotr Jasiukajtis	ld	[%g1+%o4],%f16
268325c28e83SPiotr Jasiukajtis	fsubd	%f10,%f18,%f14
268425c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f34
268525c28e83SPiotr Jasiukajtis	add	%l5,thresh+4,%o7
268625c28e83SPiotr Jasiukajtis	fsubd	%f34,%f18,%f34
268725c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f12
268825c28e83SPiotr Jasiukajtis	fsubd	%f12,%f34,%f12
268925c28e83SPiotr Jasiukajtis	ld	[%o7+%o4],%f18
269025c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f10		! x
269125c28e83SPiotr Jasiukajtis	fsubd	%f14,%f10,%f14
269225c28e83SPiotr Jasiukajtis	fands	%f10,%f30,%f19		! save signbit
269325c28e83SPiotr Jasiukajtis	fabsd	%f10,%f10
269425c28e83SPiotr Jasiukajtis	std	%f10,[%fp+x1_1]
269525c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f12		! y
269625c28e83SPiotr Jasiukajtis	fcmpgt32 %f16,%f10,%l1
269725c28e83SPiotr Jasiukajtis	fxors	%f12,%f19,%f12
269825c28e83SPiotr Jasiukajtis	fands	%f19,%f18,%f19		! if (n & 1) clear sign bit
269925c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
270025c28e83SPiotr Jasiukajtis	bne,pn	%icc,1f
270125c28e83SPiotr Jasiukajtis! delay slot
270225c28e83SPiotr Jasiukajtis	nop
270325c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
270425c28e83SPiotr Jasiukajtis	ld	[%fp+x1_1],%l1
270525c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f14
270625c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
270725c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
270825c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f10
270925c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
271025c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
271125c28e83SPiotr Jasiukajtis	faddd	%f10,%f12,%f10
271225c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
271325c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
271425c28e83SPiotr Jasiukajtis	add	%l1,%o4,%l1
271525c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
271625c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f34
271725c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
271825c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
271925c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
272025c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
272125c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
272225c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
272325c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f12
272425c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
272525c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f10
272625c28e83SPiotr Jasiukajtis	fmuld	%f14,%f34,%f14
272725c28e83SPiotr Jasiukajtis	fmuld	%f16,%f12,%f16
272825c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
272925c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
273025c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
273125c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16
273225c28e83SPiotr Jasiukajtis1:
273325c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f10
273425c28e83SPiotr Jasiukajtis	ldd	[%l5+%o4],%f34
273525c28e83SPiotr Jasiukajtis	add	%l5,%o4,%l1
273625c28e83SPiotr Jasiukajtis	fmuld	%f10,%f34,%f14
273725c28e83SPiotr Jasiukajtis	ldd	[%l1+0x10],%f16
273825c28e83SPiotr Jasiukajtis	add	%fp,%o4,%o4
273925c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
274025c28e83SPiotr Jasiukajtis	ldd	[%l1+0x20],%f34
274125c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
274225c28e83SPiotr Jasiukajtis	ldd	[%l1+0x30],%f16
274325c28e83SPiotr Jasiukajtis	faddd	%f14,%f34,%f14
274425c28e83SPiotr Jasiukajtis	ldd	[%o4+x1_1],%f34
274525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
274625c28e83SPiotr Jasiukajtis	std	%f12,[%fp+y1_0]
274725c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
274825c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
274925c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
275025c28e83SPiotr Jasiukajtis	ldd	[%o4+y1_0],%f12
275125c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
275225c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f16
275325c28e83SPiotr Jasiukajtis2:
275425c28e83SPiotr Jasiukajtis	add	%l5,thresh-4,%g1
275525c28e83SPiotr Jasiukajtis	ld	[%fp+n1],%o4
275625c28e83SPiotr Jasiukajtis	and	%o4,2,%o4
275725c28e83SPiotr Jasiukajtis	sll	%o4,2,%o4
275825c28e83SPiotr Jasiukajtis	ld	[%g1+%o4],%f18
275925c28e83SPiotr Jasiukajtis	fxors	%f19,%f18,%f19
276025c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16		! tack on sign
276125c28e83SPiotr Jasiukajtis	st	%f16,[%o1]
276225c28e83SPiotr Jasiukajtis	st	%f17,[%o1+4]
276325c28e83SPiotr Jasiukajtis
276425c28e83SPiotr Jasiukajtis.ENDLOOP1:
276525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f40,%f2
276625c28e83SPiotr Jasiukajtis	add	%l5,thresh,%g1
276725c28e83SPiotr Jasiukajtis	faddd	%f2,%f42,%f2
276825c28e83SPiotr Jasiukajtis	st	%f3,[%fp+n0]
276925c28e83SPiotr Jasiukajtis	fsubd	%f2,%f42,%f2		! n
277025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f46,%f4
277125c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f4
277225c28e83SPiotr Jasiukajtis	fmuld	%f2,%f48,%f6
277325c28e83SPiotr Jasiukajtis	fsubd	%f4,%f6,%f0
277425c28e83SPiotr Jasiukajtis	ld	[%fp+n0],%o3
277525c28e83SPiotr Jasiukajtis	fsubd	%f4,%f0,%f32
277625c28e83SPiotr Jasiukajtis	and	%o3,1,%o3
277725c28e83SPiotr Jasiukajtis	fsubd	%f32,%f6,%f32
277825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f50,%f8
277925c28e83SPiotr Jasiukajtis	sll	%o3,3,%o3
278025c28e83SPiotr Jasiukajtis	fsubd	%f8,%f32,%f8
278125c28e83SPiotr Jasiukajtis	ld	[%g1+%o3],%f6
278225c28e83SPiotr Jasiukajtis	fsubd	%f0,%f8,%f4
278325c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f32
278425c28e83SPiotr Jasiukajtis	add	%l5,thresh+4,%o7
278525c28e83SPiotr Jasiukajtis	fsubd	%f32,%f8,%f32
278625c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f2
278725c28e83SPiotr Jasiukajtis	fsubd	%f2,%f32,%f2
278825c28e83SPiotr Jasiukajtis	ld	[%o7+%o3],%f8
278925c28e83SPiotr Jasiukajtis	fsubd	%f4,%f2,%f0		! x
279025c28e83SPiotr Jasiukajtis	fsubd	%f4,%f0,%f4
279125c28e83SPiotr Jasiukajtis	fands	%f0,%f30,%f9		! save signbit
279225c28e83SPiotr Jasiukajtis	fabsd	%f0,%f0
279325c28e83SPiotr Jasiukajtis	std	%f0,[%fp+x0_1]
279425c28e83SPiotr Jasiukajtis	fsubd	%f4,%f2,%f2		! y
279525c28e83SPiotr Jasiukajtis	fcmpgt32 %f6,%f0,%l0
279625c28e83SPiotr Jasiukajtis	fxors	%f2,%f9,%f2
279725c28e83SPiotr Jasiukajtis	fands	%f9,%f8,%f9		! if (n & 1) clear sign bit
279825c28e83SPiotr Jasiukajtis	andcc	%l0,2,%g0
279925c28e83SPiotr Jasiukajtis	bne,pn	%icc,1f
280025c28e83SPiotr Jasiukajtis! delay slot
280125c28e83SPiotr Jasiukajtis	nop
280225c28e83SPiotr Jasiukajtis	fpadd32s %f0,%f31,%f8
280325c28e83SPiotr Jasiukajtis	ld	[%fp+x0_1],%l0
280425c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f4
280525c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
280625c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
280725c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f0
280825c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
280925c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
281025c28e83SPiotr Jasiukajtis	faddd	%f0,%f2,%f0
281125c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
281225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
281325c28e83SPiotr Jasiukajtis	add	%l0,%o3,%l0
281425c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
281525c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
281625c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
281725c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
281825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
281925c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
282025c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
282125c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
282225c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f2
282325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
282425c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f0
282525c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
282625c28e83SPiotr Jasiukajtis	fmuld	%f6,%f2,%f6
282725c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
282825c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
282925c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
283025c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
283125c28e83SPiotr Jasiukajtis1:
283225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f0
283325c28e83SPiotr Jasiukajtis	ldd	[%l5+%o3],%f32
283425c28e83SPiotr Jasiukajtis	add	%l5,%o3,%l0
283525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f32,%f4
283625c28e83SPiotr Jasiukajtis	ldd	[%l0+0x10],%f6
283725c28e83SPiotr Jasiukajtis	add	%fp,%o3,%o3
283825c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
283925c28e83SPiotr Jasiukajtis	ldd	[%l0+0x20],%f32
284025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
284125c28e83SPiotr Jasiukajtis	ldd	[%l0+0x30],%f6
284225c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
284325c28e83SPiotr Jasiukajtis	ldd	[%o3+x0_1],%f32
284425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
284525c28e83SPiotr Jasiukajtis	std	%f2,[%fp+y0_0]
284625c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
284725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
284825c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
284925c28e83SPiotr Jasiukajtis	ldd	[%o3+y0_0],%f2
285025c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
285125c28e83SPiotr Jasiukajtis	faddd	%f32,%f4,%f6
285225c28e83SPiotr Jasiukajtis2:
285325c28e83SPiotr Jasiukajtis	add	%l5,thresh-4,%g1
285425c28e83SPiotr Jasiukajtis	ld	[%fp+n0],%o3
285525c28e83SPiotr Jasiukajtis	and	%o3,2,%o3
285625c28e83SPiotr Jasiukajtis	sll	%o3,2,%o3
285725c28e83SPiotr Jasiukajtis	ld	[%g1+%o3],%f8
285825c28e83SPiotr Jasiukajtis	fxors	%f9,%f8,%f9
285925c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6		! tack on sign
286025c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
286125c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
286225c28e83SPiotr Jasiukajtis
286325c28e83SPiotr Jasiukajtis.ENDLOOP0:
286425c28e83SPiotr Jasiukajtis
286525c28e83SPiotr Jasiukajtis! check for huge arguments remaining
286625c28e83SPiotr Jasiukajtis
286725c28e83SPiotr Jasiukajtis	tst	LIM_l6
286825c28e83SPiotr Jasiukajtis	be,pt	%icc,.exit
286925c28e83SPiotr Jasiukajtis! delay slot
287025c28e83SPiotr Jasiukajtis	nop
287125c28e83SPiotr Jasiukajtis
287225c28e83SPiotr Jasiukajtis! ========== huge range (use C code) ==========
287325c28e83SPiotr Jasiukajtis
287425c28e83SPiotr Jasiukajtis#ifdef __sparcv9
287525c28e83SPiotr Jasiukajtis	ldx	[%fp+xsave],%o1
287625c28e83SPiotr Jasiukajtis	ldx	[%fp+ysave],%o3
287725c28e83SPiotr Jasiukajtis#else
287825c28e83SPiotr Jasiukajtis	ld	[%fp+xsave],%o1
287925c28e83SPiotr Jasiukajtis	ld	[%fp+ysave],%o3
288025c28e83SPiotr Jasiukajtis#endif
288125c28e83SPiotr Jasiukajtis	ld	[%fp+nsave],%o0
288225c28e83SPiotr Jasiukajtis	ld	[%fp+sxsave],%o2
288325c28e83SPiotr Jasiukajtis	ld	[%fp+sysave],%o4
288425c28e83SPiotr Jasiukajtis	sra	%o2,0,%o2		! sign-extend for V9
288525c28e83SPiotr Jasiukajtis	sra	%o4,0,%o4
288625c28e83SPiotr Jasiukajtis	call	__vlibm_vsin_big
288725c28e83SPiotr Jasiukajtis	mov	%l7,%o5			! delay slot
288825c28e83SPiotr Jasiukajtis
288925c28e83SPiotr Jasiukajtis.exit:
289025c28e83SPiotr Jasiukajtis	ret
289125c28e83SPiotr Jasiukajtis	restore
289225c28e83SPiotr Jasiukajtis
289325c28e83SPiotr Jasiukajtis
289425c28e83SPiotr Jasiukajtis	.align	32
289525c28e83SPiotr Jasiukajtis.SKIP0:
289625c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
289725c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP0
289825c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
289925c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
290025c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l0		! hx &= ~0x80000000
290125c28e83SPiotr Jasiukajtis	fmovs	%f10,%f0
290225c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f1
290325c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP0
290425c28e83SPiotr Jasiukajtis! delay slot
290525c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
290625c28e83SPiotr Jasiukajtis
290725c28e83SPiotr Jasiukajtis
290825c28e83SPiotr Jasiukajtis	.align	32
290925c28e83SPiotr Jasiukajtis.SKIP1:
291025c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
291125c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP1
291225c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
291325c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
291425c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l1		! hx &= ~0x80000000
291525c28e83SPiotr Jasiukajtis	fmovs	%f20,%f10
291625c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f11
291725c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP1
291825c28e83SPiotr Jasiukajtis! delay slot
291925c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
292025c28e83SPiotr Jasiukajtis
292125c28e83SPiotr Jasiukajtis
292225c28e83SPiotr Jasiukajtis	.align	32
292325c28e83SPiotr Jasiukajtis.SKIP2:
292425c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
292525c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP2
292625c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
292725c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
292825c28e83SPiotr Jasiukajtis	ld	[%i1],%l2
292925c28e83SPiotr Jasiukajtis	ld	[%i1],%f20
293025c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f21
293125c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l2		! hx &= ~0x80000000
293225c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP2
293325c28e83SPiotr Jasiukajtis! delay slot
293425c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
293525c28e83SPiotr Jasiukajtis
293625c28e83SPiotr Jasiukajtis
293725c28e83SPiotr Jasiukajtis	.align	32
293825c28e83SPiotr Jasiukajtis.BIG0:
293925c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o7
294025c28e83SPiotr Jasiukajtis	cmp	%l0,%o7
294125c28e83SPiotr Jasiukajtis	bl,a,pt	%icc,1f			! if hx < 0x7ff00000
294225c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
294325c28e83SPiotr Jasiukajtis	mov	%l7,LIM_l6		! set biguns flag or
294425c28e83SPiotr Jasiukajtis	fsubd	%f0,%f0,%f0		! y = x - x
294525c28e83SPiotr Jasiukajtis	st	%f0,[%o0]
294625c28e83SPiotr Jasiukajtis	st	%f1,[%o0+4]
294725c28e83SPiotr Jasiukajtis1:
294825c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
294925c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP0
295025c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
295125c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l0		! hx &= ~0x80000000
295225c28e83SPiotr Jasiukajtis	fmovd	%f10,%f0
295325c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP0
295425c28e83SPiotr Jasiukajtis! delay slot
295525c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
295625c28e83SPiotr Jasiukajtis
295725c28e83SPiotr Jasiukajtis
295825c28e83SPiotr Jasiukajtis	.align	32
295925c28e83SPiotr Jasiukajtis.BIG1:
296025c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o7
296125c28e83SPiotr Jasiukajtis	cmp	%l1,%o7
296225c28e83SPiotr Jasiukajtis	bl,a,pt	%icc,1f			! if hx < 0x7ff00000
296325c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
296425c28e83SPiotr Jasiukajtis	mov	%l7,LIM_l6		! set biguns flag or
296525c28e83SPiotr Jasiukajtis	fsubd	%f10,%f10,%f10		! y = x - x
296625c28e83SPiotr Jasiukajtis	st	%f10,[%o1]
296725c28e83SPiotr Jasiukajtis	st	%f11,[%o1+4]
296825c28e83SPiotr Jasiukajtis1:
296925c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
297025c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP1
297125c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
297225c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l1		! hx &= ~0x80000000
297325c28e83SPiotr Jasiukajtis	fmovd	%f20,%f10
297425c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP1
297525c28e83SPiotr Jasiukajtis! delay slot
297625c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
297725c28e83SPiotr Jasiukajtis
297825c28e83SPiotr Jasiukajtis
297925c28e83SPiotr Jasiukajtis	.align	32
298025c28e83SPiotr Jasiukajtis.BIG2:
298125c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o7
298225c28e83SPiotr Jasiukajtis	cmp	%l2,%o7
298325c28e83SPiotr Jasiukajtis	bl,a,pt	%icc,1f			! if hx < 0x7ff00000
298425c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
298525c28e83SPiotr Jasiukajtis	mov	%l7,LIM_l6		! set biguns flag or
298625c28e83SPiotr Jasiukajtis	fsubd	%f20,%f20,%f20		! y = x - x
298725c28e83SPiotr Jasiukajtis	st	%f20,[%o2]
298825c28e83SPiotr Jasiukajtis	st	%f21,[%o2+4]
298925c28e83SPiotr Jasiukajtis1:
299025c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
299125c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP2
299225c28e83SPiotr Jasiukajtis! delay slot
299325c28e83SPiotr Jasiukajtis	nop
299425c28e83SPiotr Jasiukajtis	ld	[%i1],%l2
299525c28e83SPiotr Jasiukajtis	ld	[%i1],%f20
299625c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f21
299725c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l2		! hx &= ~0x80000000
299825c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP2
299925c28e83SPiotr Jasiukajtis! delay slot
300025c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
300125c28e83SPiotr Jasiukajtis
300225c28e83SPiotr Jasiukajtis	SET_SIZE(__vsin)
300325c28e83SPiotr Jasiukajtis
3004