xref: /titanic_50/usr/src/lib/libmvec/common/vis/__vsin.S (revision 25c28e83beb90e7c80452a7c818c5e6f73a07dc8)
1*25c28e83SPiotr Jasiukajtis/*
2*25c28e83SPiotr Jasiukajtis * CDDL HEADER START
3*25c28e83SPiotr Jasiukajtis *
4*25c28e83SPiotr Jasiukajtis * The contents of this file are subject to the terms of the
5*25c28e83SPiotr Jasiukajtis * Common Development and Distribution License (the "License").
6*25c28e83SPiotr Jasiukajtis * You may not use this file except in compliance with the License.
7*25c28e83SPiotr Jasiukajtis *
8*25c28e83SPiotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*25c28e83SPiotr Jasiukajtis * or http://www.opensolaris.org/os/licensing.
10*25c28e83SPiotr Jasiukajtis * See the License for the specific language governing permissions
11*25c28e83SPiotr Jasiukajtis * and limitations under the License.
12*25c28e83SPiotr Jasiukajtis *
13*25c28e83SPiotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each
14*25c28e83SPiotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*25c28e83SPiotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the
16*25c28e83SPiotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying
17*25c28e83SPiotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner]
18*25c28e83SPiotr Jasiukajtis *
19*25c28e83SPiotr Jasiukajtis * CDDL HEADER END
20*25c28e83SPiotr Jasiukajtis */
21*25c28e83SPiotr Jasiukajtis/*
22*25c28e83SPiotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
23*25c28e83SPiotr Jasiukajtis */
24*25c28e83SPiotr Jasiukajtis/*
25*25c28e83SPiotr Jasiukajtis * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
26*25c28e83SPiotr Jasiukajtis * Use is subject to license terms.
27*25c28e83SPiotr Jasiukajtis */
28*25c28e83SPiotr Jasiukajtis
29*25c28e83SPiotr Jasiukajtis	.file	"__vsin.S"
30*25c28e83SPiotr Jasiukajtis
31*25c28e83SPiotr Jasiukajtis#include "libm.h"
32*25c28e83SPiotr Jasiukajtis
33*25c28e83SPiotr Jasiukajtis	RO_DATA
34*25c28e83SPiotr Jasiukajtis	.align	64
35*25c28e83SPiotr Jasiukajtisconstants:
36*25c28e83SPiotr Jasiukajtis	.word	0x3ec718e3,0xa6972785
37*25c28e83SPiotr Jasiukajtis	.word	0x3ef9fd39,0x94293940
38*25c28e83SPiotr Jasiukajtis	.word	0xbf2a019f,0x75ee4be1
39*25c28e83SPiotr Jasiukajtis	.word	0xbf56c16b,0xba552569
40*25c28e83SPiotr Jasiukajtis	.word	0x3f811111,0x1108c703
41*25c28e83SPiotr Jasiukajtis	.word	0x3fa55555,0x554f5b35
42*25c28e83SPiotr Jasiukajtis	.word	0xbfc55555,0x555554d0
43*25c28e83SPiotr Jasiukajtis	.word	0xbfdfffff,0xffffff85
44*25c28e83SPiotr Jasiukajtis	.word	0x3ff00000,0x00000000
45*25c28e83SPiotr Jasiukajtis	.word	0xbfc55555,0x5551fc28
46*25c28e83SPiotr Jasiukajtis	.word	0x3f811107,0x62eacc9d
47*25c28e83SPiotr Jasiukajtis	.word	0xbfdfffff,0xffff6328
48*25c28e83SPiotr Jasiukajtis	.word	0x3fa55551,0x5f7acf0c
49*25c28e83SPiotr Jasiukajtis	.word	0x3fe45f30,0x6dc9c883
50*25c28e83SPiotr Jasiukajtis	.word	0x43380000,0x00000000
51*25c28e83SPiotr Jasiukajtis	.word	0x3ff921fb,0x54400000
52*25c28e83SPiotr Jasiukajtis	.word	0x3dd0b461,0x1a600000
53*25c28e83SPiotr Jasiukajtis	.word	0x3ba3198a,0x2e000000
54*25c28e83SPiotr Jasiukajtis	.word	0x397b839a,0x252049c1
55*25c28e83SPiotr Jasiukajtis	.word	0x80000000,0x00004000
56*25c28e83SPiotr Jasiukajtis	.word	0xffff8000,0x00000000	! N.B.: low-order words used
57*25c28e83SPiotr Jasiukajtis	.word	0x3fc90000,0x80000000	! for sign bit hacking; see
58*25c28e83SPiotr Jasiukajtis	.word	0x3fc40000,0x00000000	! references to "thresh" below
59*25c28e83SPiotr Jasiukajtis
60*25c28e83SPiotr Jasiukajtis#define p4		0x0
61*25c28e83SPiotr Jasiukajtis#define q4		0x08
62*25c28e83SPiotr Jasiukajtis#define p3		0x10
63*25c28e83SPiotr Jasiukajtis#define q3		0x18
64*25c28e83SPiotr Jasiukajtis#define p2		0x20
65*25c28e83SPiotr Jasiukajtis#define q2		0x28
66*25c28e83SPiotr Jasiukajtis#define p1		0x30
67*25c28e83SPiotr Jasiukajtis#define q1		0x38
68*25c28e83SPiotr Jasiukajtis#define one		0x40
69*25c28e83SPiotr Jasiukajtis#define pp1		0x48
70*25c28e83SPiotr Jasiukajtis#define pp2		0x50
71*25c28e83SPiotr Jasiukajtis#define qq1		0x58
72*25c28e83SPiotr Jasiukajtis#define qq2		0x60
73*25c28e83SPiotr Jasiukajtis#define invpio2		0x68
74*25c28e83SPiotr Jasiukajtis#define round		0x70
75*25c28e83SPiotr Jasiukajtis#define pio2_1		0x78
76*25c28e83SPiotr Jasiukajtis#define pio2_2		0x80
77*25c28e83SPiotr Jasiukajtis#define pio2_3		0x88
78*25c28e83SPiotr Jasiukajtis#define pio2_3t		0x90
79*25c28e83SPiotr Jasiukajtis#define f30val		0x98
80*25c28e83SPiotr Jasiukajtis#define mask		0xa0
81*25c28e83SPiotr Jasiukajtis#define thresh		0xa8
82*25c28e83SPiotr Jasiukajtis
83*25c28e83SPiotr Jasiukajtis! local storage indices
84*25c28e83SPiotr Jasiukajtis
85*25c28e83SPiotr Jasiukajtis#define xsave		STACK_BIAS-0x8
86*25c28e83SPiotr Jasiukajtis#define ysave		STACK_BIAS-0x10
87*25c28e83SPiotr Jasiukajtis#define nsave		STACK_BIAS-0x14
88*25c28e83SPiotr Jasiukajtis#define sxsave		STACK_BIAS-0x18
89*25c28e83SPiotr Jasiukajtis#define sysave		STACK_BIAS-0x1c
90*25c28e83SPiotr Jasiukajtis#define biguns		STACK_BIAS-0x20
91*25c28e83SPiotr Jasiukajtis#define n2		STACK_BIAS-0x24
92*25c28e83SPiotr Jasiukajtis#define n1		STACK_BIAS-0x28
93*25c28e83SPiotr Jasiukajtis#define n0		STACK_BIAS-0x2c
94*25c28e83SPiotr Jasiukajtis#define x2_1		STACK_BIAS-0x40
95*25c28e83SPiotr Jasiukajtis#define x1_1		STACK_BIAS-0x50
96*25c28e83SPiotr Jasiukajtis#define x0_1		STACK_BIAS-0x60
97*25c28e83SPiotr Jasiukajtis#define y2_0		STACK_BIAS-0x70
98*25c28e83SPiotr Jasiukajtis#define y1_0		STACK_BIAS-0x80
99*25c28e83SPiotr Jasiukajtis#define y0_0		STACK_BIAS-0x90
100*25c28e83SPiotr Jasiukajtis! sizeof temp storage - must be a multiple of 16 for V9
101*25c28e83SPiotr Jasiukajtis#define tmps		0x90
102*25c28e83SPiotr Jasiukajtis
103*25c28e83SPiotr Jasiukajtis!--------------------------------------------------------------
104*25c28e83SPiotr Jasiukajtis!	Some defines to keep code more readable
105*25c28e83SPiotr Jasiukajtis#define LIM_l6		%l6
106*25c28e83SPiotr Jasiukajtis!	in primary range, contains |x| upper limit when cos(x)=1.
107*25c28e83SPiotr Jasiukajtis!	in transferring to medium range, denotes what loop was active.
108*25c28e83SPiotr Jasiukajtis!--------------------------------------------------------------
109*25c28e83SPiotr Jasiukajtis
110*25c28e83SPiotr Jasiukajtis	ENTRY(__vsin)
111*25c28e83SPiotr Jasiukajtis	save	%sp,-SA(MINFRAME)-tmps,%sp
112*25c28e83SPiotr Jasiukajtis	PIC_SETUP(g5)
113*25c28e83SPiotr Jasiukajtis	PIC_SET(g5,__vlibm_TBL_sincos_hi,l3)
114*25c28e83SPiotr Jasiukajtis	PIC_SET(g5,__vlibm_TBL_sincos_lo,l4)
115*25c28e83SPiotr Jasiukajtis	PIC_SET(g5,constants,l5)
116*25c28e83SPiotr Jasiukajtis	mov	%l5,%g1
117*25c28e83SPiotr Jasiukajtis	wr	%g0,0x82,%asi		! set %asi for non-faulting loads
118*25c28e83SPiotr Jasiukajtis
119*25c28e83SPiotr Jasiukajtis! ========== primary range ==========
120*25c28e83SPiotr Jasiukajtis
121*25c28e83SPiotr Jasiukajtis! register use
122*25c28e83SPiotr Jasiukajtis
123*25c28e83SPiotr Jasiukajtis! i0  n
124*25c28e83SPiotr Jasiukajtis! i1  x
125*25c28e83SPiotr Jasiukajtis! i2  stridex
126*25c28e83SPiotr Jasiukajtis! i3  y
127*25c28e83SPiotr Jasiukajtis! i4  stridey
128*25c28e83SPiotr Jasiukajtis! i5  0x80000000
129*25c28e83SPiotr Jasiukajtis
130*25c28e83SPiotr Jasiukajtis! l0  hx0
131*25c28e83SPiotr Jasiukajtis! l1  hx1
132*25c28e83SPiotr Jasiukajtis! l2  hx2
133*25c28e83SPiotr Jasiukajtis! l3  __vlibm_TBL_sincos_hi
134*25c28e83SPiotr Jasiukajtis! l4  __vlibm_TBL_sincos_lo
135*25c28e83SPiotr Jasiukajtis! l5  0x3fc90000
136*25c28e83SPiotr Jasiukajtis! l6  0x3e400000
137*25c28e83SPiotr Jasiukajtis! l7  0x3fe921fb
138*25c28e83SPiotr Jasiukajtis
139*25c28e83SPiotr Jasiukajtis! the following are 64-bit registers in both V8+ and V9
140*25c28e83SPiotr Jasiukajtis
141*25c28e83SPiotr Jasiukajtis! g1  scratch
142*25c28e83SPiotr Jasiukajtis! g5
143*25c28e83SPiotr Jasiukajtis
144*25c28e83SPiotr Jasiukajtis! o0  py0
145*25c28e83SPiotr Jasiukajtis! o1  py1
146*25c28e83SPiotr Jasiukajtis! o2  py2
147*25c28e83SPiotr Jasiukajtis! o3  oy0
148*25c28e83SPiotr Jasiukajtis! o4  oy1
149*25c28e83SPiotr Jasiukajtis! o5  oy2
150*25c28e83SPiotr Jasiukajtis! o7  scratch
151*25c28e83SPiotr Jasiukajtis
152*25c28e83SPiotr Jasiukajtis! f0  x0
153*25c28e83SPiotr Jasiukajtis! f2
154*25c28e83SPiotr Jasiukajtis! f4
155*25c28e83SPiotr Jasiukajtis! f6
156*25c28e83SPiotr Jasiukajtis! f8  scratch for table base
157*25c28e83SPiotr Jasiukajtis! f9  signbit0
158*25c28e83SPiotr Jasiukajtis! f10 x1
159*25c28e83SPiotr Jasiukajtis! f12
160*25c28e83SPiotr Jasiukajtis! f14
161*25c28e83SPiotr Jasiukajtis! f16
162*25c28e83SPiotr Jasiukajtis! f18 scratch for table base
163*25c28e83SPiotr Jasiukajtis! f19 signbit1
164*25c28e83SPiotr Jasiukajtis! f20 x2
165*25c28e83SPiotr Jasiukajtis! f22
166*25c28e83SPiotr Jasiukajtis! f24
167*25c28e83SPiotr Jasiukajtis! f26
168*25c28e83SPiotr Jasiukajtis! f28 scratch for table base
169*25c28e83SPiotr Jasiukajtis! f29 signbit2
170*25c28e83SPiotr Jasiukajtis! f30 0x80000000
171*25c28e83SPiotr Jasiukajtis! f31 0x4000
172*25c28e83SPiotr Jasiukajtis! f32
173*25c28e83SPiotr Jasiukajtis! f34
174*25c28e83SPiotr Jasiukajtis! f36
175*25c28e83SPiotr Jasiukajtis! f38
176*25c28e83SPiotr Jasiukajtis! f40
177*25c28e83SPiotr Jasiukajtis! f42
178*25c28e83SPiotr Jasiukajtis! f44 0xffff800000000000
179*25c28e83SPiotr Jasiukajtis! f46 p1
180*25c28e83SPiotr Jasiukajtis! f48 p2
181*25c28e83SPiotr Jasiukajtis! f50 p3
182*25c28e83SPiotr Jasiukajtis! f52 p4
183*25c28e83SPiotr Jasiukajtis! f54 one
184*25c28e83SPiotr Jasiukajtis! f56 pp1
185*25c28e83SPiotr Jasiukajtis! f58 pp2
186*25c28e83SPiotr Jasiukajtis! f60 qq1
187*25c28e83SPiotr Jasiukajtis! f62 qq2
188*25c28e83SPiotr Jasiukajtis
189*25c28e83SPiotr Jasiukajtis#ifdef __sparcv9
190*25c28e83SPiotr Jasiukajtis	stx	%i1,[%fp+xsave]		! save arguments
191*25c28e83SPiotr Jasiukajtis	stx	%i3,[%fp+ysave]
192*25c28e83SPiotr Jasiukajtis#else
193*25c28e83SPiotr Jasiukajtis	st	%i1,[%fp+xsave]		! save arguments
194*25c28e83SPiotr Jasiukajtis	st	%i3,[%fp+ysave]
195*25c28e83SPiotr Jasiukajtis#endif
196*25c28e83SPiotr Jasiukajtis	st	%i0,[%fp+nsave]
197*25c28e83SPiotr Jasiukajtis	st	%i2,[%fp+sxsave]
198*25c28e83SPiotr Jasiukajtis	st	%i4,[%fp+sysave]
199*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x80000000),%i5	! load/set up constants
200*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc90000),%l5
201*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3e400000),LIM_l6
202*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fe921fb),%l7
203*25c28e83SPiotr Jasiukajtis	or	%l7,%lo(0x3fe921fb),%l7
204*25c28e83SPiotr Jasiukajtis	ldd	[%g1+f30val],%f30
205*25c28e83SPiotr Jasiukajtis	ldd	[%g1+mask],%f44
206*25c28e83SPiotr Jasiukajtis	ldd	[%g1+p1],%f46
207*25c28e83SPiotr Jasiukajtis	ldd	[%g1+p2],%f48
208*25c28e83SPiotr Jasiukajtis	ldd	[%g1+p3],%f50
209*25c28e83SPiotr Jasiukajtis	ldd	[%g1+p4],%f52
210*25c28e83SPiotr Jasiukajtis	ldd	[%g1+one],%f54
211*25c28e83SPiotr Jasiukajtis	ldd	[%g1+pp1],%f56
212*25c28e83SPiotr Jasiukajtis	ldd	[%g1+pp2],%f58
213*25c28e83SPiotr Jasiukajtis	ldd	[%g1+qq1],%f60
214*25c28e83SPiotr Jasiukajtis	ldd	[%g1+qq2],%f62
215*25c28e83SPiotr Jasiukajtis	sll	%i2,3,%i2		! scale strides
216*25c28e83SPiotr Jasiukajtis	sll	%i4,3,%i4
217*25c28e83SPiotr Jasiukajtis	add	%fp,x0_1,%o3		! precondition loop
218*25c28e83SPiotr Jasiukajtis	add	%fp,x0_1,%o4
219*25c28e83SPiotr Jasiukajtis	add	%fp,x0_1,%o5
220*25c28e83SPiotr Jasiukajtis	ld	[%i1],%l0		! hx = *x
221*25c28e83SPiotr Jasiukajtis	ld	[%i1],%f0
222*25c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f1
223*25c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
224*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
225*25c28e83SPiotr Jasiukajtis
226*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop0
227*25c28e83SPiotr Jasiukajtis! delay slot
228*25c28e83SPiotr Jasiukajtis	nop
229*25c28e83SPiotr Jasiukajtis
230*25c28e83SPiotr Jasiukajtis	.align 32
231*25c28e83SPiotr Jasiukajtis.loop0:
232*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l1		! preload next argument
233*25c28e83SPiotr Jasiukajtis	sub	%l0,LIM_l6,%g1
234*25c28e83SPiotr Jasiukajtis	sub	%l7,%l0,%o7
235*25c28e83SPiotr Jasiukajtis	fands	%f0,%f30,%f9		! save signbit
236*25c28e83SPiotr Jasiukajtis
237*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f10
238*25c28e83SPiotr Jasiukajtis	orcc	%o7,%g1,%g0
239*25c28e83SPiotr Jasiukajtis	mov	%i3,%o0			! py0 = y
240*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.range0		! if hx < 0x3e400000 or > 0x3fe921fb
241*25c28e83SPiotr Jasiukajtis
242*25c28e83SPiotr Jasiukajtis! delay slot
243*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f11
244*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
245*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
246*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.endloop1
247*25c28e83SPiotr Jasiukajtis
248*25c28e83SPiotr Jasiukajtis! delay slot
249*25c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l1
250*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
251*25c28e83SPiotr Jasiukajtis	fabsd	%f0,%f0
252*25c28e83SPiotr Jasiukajtis	fmuld	%f54,%f54,%f54		! one*one; a nop for alignment only
253*25c28e83SPiotr Jasiukajtis
254*25c28e83SPiotr Jasiukajtis.loop1:
255*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l2		! preload next argument
256*25c28e83SPiotr Jasiukajtis	sub	%l1,LIM_l6,%g1
257*25c28e83SPiotr Jasiukajtis	sub	%l7,%l1,%o7
258*25c28e83SPiotr Jasiukajtis	fands	%f10,%f30,%f19		! save signbit
259*25c28e83SPiotr Jasiukajtis
260*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f20
261*25c28e83SPiotr Jasiukajtis	orcc	%o7,%g1,%g0
262*25c28e83SPiotr Jasiukajtis	mov	%i3,%o1			! py1 = y
263*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.range1		! if hx < 0x3e400000 or > 0x3fe921fb
264*25c28e83SPiotr Jasiukajtis
265*25c28e83SPiotr Jasiukajtis! delay slot
266*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f21
267*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
268*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
269*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.endloop2
270*25c28e83SPiotr Jasiukajtis
271*25c28e83SPiotr Jasiukajtis! delay slot
272*25c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l2
273*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
274*25c28e83SPiotr Jasiukajtis	fabsd	%f10,%f10
275*25c28e83SPiotr Jasiukajtis	fmuld	%f54,%f54,%f54		! one*one; a nop for alignment only
276*25c28e83SPiotr Jasiukajtis
277*25c28e83SPiotr Jasiukajtis.loop2:
278*25c28e83SPiotr Jasiukajtis	st	%f6,[%o3]
279*25c28e83SPiotr Jasiukajtis	sub	%l2,LIM_l6,%g1
280*25c28e83SPiotr Jasiukajtis	sub	%l7,%l2,%o7
281*25c28e83SPiotr Jasiukajtis	fands	%f20,%f30,%f29		! save signbit
282*25c28e83SPiotr Jasiukajtis
283*25c28e83SPiotr Jasiukajtis	st	%f7,[%o3+4]
284*25c28e83SPiotr Jasiukajtis	orcc	%g1,%o7,%g0
285*25c28e83SPiotr Jasiukajtis	mov	%i3,%o2			! py2 = y
286*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.range2		! if hx < 0x3e400000 or > 0x3fe921fb
287*25c28e83SPiotr Jasiukajtis
288*25c28e83SPiotr Jasiukajtis! delay slot
289*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
290*25c28e83SPiotr Jasiukajtis	cmp	%l0,%l5
291*25c28e83SPiotr Jasiukajtis	fabsd	%f20,%f20
292*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case4
293*25c28e83SPiotr Jasiukajtis
294*25c28e83SPiotr Jasiukajtis! delay slot
295*25c28e83SPiotr Jasiukajtis	st	%f16,[%o4]
296*25c28e83SPiotr Jasiukajtis	cmp	%l1,%l5
297*25c28e83SPiotr Jasiukajtis	fpadd32s %f0,%f31,%f8
298*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case2
299*25c28e83SPiotr Jasiukajtis
300*25c28e83SPiotr Jasiukajtis! delay slot
301*25c28e83SPiotr Jasiukajtis	st	%f17,[%o4+4]
302*25c28e83SPiotr Jasiukajtis	cmp	%l2,%l5
303*25c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
304*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case1
305*25c28e83SPiotr Jasiukajtis
306*25c28e83SPiotr Jasiukajtis! delay slot
307*25c28e83SPiotr Jasiukajtis	st	%f26,[%o5]
308*25c28e83SPiotr Jasiukajtis	mov	%o0,%o3
309*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
310*25c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
311*25c28e83SPiotr Jasiukajtis
312*25c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
313*25c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f2
314*25c28e83SPiotr Jasiukajtis	mov	%o1,%o4
315*25c28e83SPiotr Jasiukajtis
316*25c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f12
317*25c28e83SPiotr Jasiukajtis	mov	%o2,%o5
318*25c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
319*25c28e83SPiotr Jasiukajtis
320*25c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f22
321*25c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
322*25c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
323*25c28e83SPiotr Jasiukajtis
324*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f2,%f0
325*25c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
326*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
327*25c28e83SPiotr Jasiukajtis
328*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
329*25c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
330*25c28e83SPiotr Jasiukajtis
331*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f22,%f20
332*25c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
333*25c28e83SPiotr Jasiukajtis
334*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
335*25c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
336*25c28e83SPiotr Jasiukajtis
337*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
338*25c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
339*25c28e83SPiotr Jasiukajtis
340*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
341*25c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
342*25c28e83SPiotr Jasiukajtis
343*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
344*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
345*25c28e83SPiotr Jasiukajtis
346*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
347*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f36
348*25c28e83SPiotr Jasiukajtis
349*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
350*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f40
351*25c28e83SPiotr Jasiukajtis
352*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
353*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
354*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f34
355*25c28e83SPiotr Jasiukajtis
356*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
357*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
358*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f38
359*25c28e83SPiotr Jasiukajtis
360*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
361*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
362*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f42
363*25c28e83SPiotr Jasiukajtis
364*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
365*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
366*25c28e83SPiotr Jasiukajtis
367*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
368*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
369*25c28e83SPiotr Jasiukajtis
370*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
371*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
372*25c28e83SPiotr Jasiukajtis
373*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
374*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
375*25c28e83SPiotr Jasiukajtis
376*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
377*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
378*25c28e83SPiotr Jasiukajtis
379*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
380*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
381*25c28e83SPiotr Jasiukajtis
382*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
383*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f2
384*25c28e83SPiotr Jasiukajtis
385*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
386*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f12
387*25c28e83SPiotr Jasiukajtis
388*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
389*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f22
390*25c28e83SPiotr Jasiukajtis
391*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
392*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
393*25c28e83SPiotr Jasiukajtis
394*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f36,%f14
395*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
396*25c28e83SPiotr Jasiukajtis
397*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f40,%f24
398*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
399*25c28e83SPiotr Jasiukajtis
400*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f34,%f6
401*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
402*25c28e83SPiotr Jasiukajtis
403*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f38,%f16
404*25c28e83SPiotr Jasiukajtis
405*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f42,%f26
406*25c28e83SPiotr Jasiukajtis
407*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
408*25c28e83SPiotr Jasiukajtis
409*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
410*25c28e83SPiotr Jasiukajtis
411*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
412*25c28e83SPiotr Jasiukajtis
413*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f2,%f6
414*25c28e83SPiotr Jasiukajtis
415*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f12,%f16
416*25c28e83SPiotr Jasiukajtis
417*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f22,%f26
418*25c28e83SPiotr Jasiukajtis
419*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
420*25c28e83SPiotr Jasiukajtis
421*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f36,%f16
422*25c28e83SPiotr Jasiukajtis
423*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f40,%f26
424*25c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
425*25c28e83SPiotr Jasiukajtis
426*25c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
427*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
428*25c28e83SPiotr Jasiukajtis
429*25c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
430*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
431*25c28e83SPiotr Jasiukajtis
432*25c28e83SPiotr Jasiukajtis! delay slot
433*25c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
434*25c28e83SPiotr Jasiukajtis
435*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
436*25c28e83SPiotr Jasiukajtis! delay slot
437*25c28e83SPiotr Jasiukajtis	nop
438*25c28e83SPiotr Jasiukajtis
439*25c28e83SPiotr Jasiukajtis	.align	32
440*25c28e83SPiotr Jasiukajtis.case1:
441*25c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
442*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
443*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
444*25c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f2
445*25c28e83SPiotr Jasiukajtis
446*25c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
447*25c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
448*25c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f12
449*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
450*25c28e83SPiotr Jasiukajtis
451*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f2,%f0
452*25c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
453*25c28e83SPiotr Jasiukajtis	mov	%o0,%o3
454*25c28e83SPiotr Jasiukajtis
455*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
456*25c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
457*25c28e83SPiotr Jasiukajtis	mov	%o1,%o4
458*25c28e83SPiotr Jasiukajtis
459*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f52,%f24
460*25c28e83SPiotr Jasiukajtis	mov	%o2,%o5
461*25c28e83SPiotr Jasiukajtis
462*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
463*25c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
464*25c28e83SPiotr Jasiukajtis
465*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
466*25c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
467*25c28e83SPiotr Jasiukajtis
468*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f50,%f24
469*25c28e83SPiotr Jasiukajtis
470*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
471*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
472*25c28e83SPiotr Jasiukajtis
473*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
474*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f36
475*25c28e83SPiotr Jasiukajtis
476*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
477*25c28e83SPiotr Jasiukajtis
478*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
479*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
480*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f34
481*25c28e83SPiotr Jasiukajtis
482*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
483*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
484*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f38
485*25c28e83SPiotr Jasiukajtis
486*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f24
487*25c28e83SPiotr Jasiukajtis
488*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
489*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
490*25c28e83SPiotr Jasiukajtis
491*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
492*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
493*25c28e83SPiotr Jasiukajtis
494*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
495*25c28e83SPiotr Jasiukajtis
496*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
497*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
498*25c28e83SPiotr Jasiukajtis
499*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
500*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
501*25c28e83SPiotr Jasiukajtis
502*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f46,%f24
503*25c28e83SPiotr Jasiukajtis
504*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
505*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f2
506*25c28e83SPiotr Jasiukajtis
507*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
508*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f12
509*25c28e83SPiotr Jasiukajtis
510*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
511*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
512*25c28e83SPiotr Jasiukajtis
513*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f36,%f14
514*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
515*25c28e83SPiotr Jasiukajtis
516*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f34,%f6
517*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
518*25c28e83SPiotr Jasiukajtis
519*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f38,%f16
520*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
521*25c28e83SPiotr Jasiukajtis
522*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
523*25c28e83SPiotr Jasiukajtis
524*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
525*25c28e83SPiotr Jasiukajtis
526*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
527*25c28e83SPiotr Jasiukajtis
528*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
529*25c28e83SPiotr Jasiukajtis
530*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f2,%f6
531*25c28e83SPiotr Jasiukajtis
532*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f12,%f16
533*25c28e83SPiotr Jasiukajtis
534*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f24,%f26
535*25c28e83SPiotr Jasiukajtis
536*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
537*25c28e83SPiotr Jasiukajtis
538*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f36,%f16
539*25c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
540*25c28e83SPiotr Jasiukajtis
541*25c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
542*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
543*25c28e83SPiotr Jasiukajtis
544*25c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
545*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
546*25c28e83SPiotr Jasiukajtis
547*25c28e83SPiotr Jasiukajtis! delay slot
548*25c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
549*25c28e83SPiotr Jasiukajtis
550*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
551*25c28e83SPiotr Jasiukajtis! delay slot
552*25c28e83SPiotr Jasiukajtis	nop
553*25c28e83SPiotr Jasiukajtis
554*25c28e83SPiotr Jasiukajtis	.align	32
555*25c28e83SPiotr Jasiukajtis.case2:
556*25c28e83SPiotr Jasiukajtis	st	%f26,[%o5]
557*25c28e83SPiotr Jasiukajtis	cmp	%l2,%l5
558*25c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
559*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case3
560*25c28e83SPiotr Jasiukajtis
561*25c28e83SPiotr Jasiukajtis! delay slot
562*25c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
563*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
564*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
565*25c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f2
566*25c28e83SPiotr Jasiukajtis
567*25c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
568*25c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
569*25c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f22
570*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
571*25c28e83SPiotr Jasiukajtis
572*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f2,%f0
573*25c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
574*25c28e83SPiotr Jasiukajtis	mov	%o0,%o3
575*25c28e83SPiotr Jasiukajtis
576*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f22,%f20
577*25c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
578*25c28e83SPiotr Jasiukajtis	mov	%o2,%o5
579*25c28e83SPiotr Jasiukajtis
580*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f14
581*25c28e83SPiotr Jasiukajtis	mov	%o1,%o4
582*25c28e83SPiotr Jasiukajtis
583*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
584*25c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
585*25c28e83SPiotr Jasiukajtis
586*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
587*25c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
588*25c28e83SPiotr Jasiukajtis
589*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f50,%f14
590*25c28e83SPiotr Jasiukajtis
591*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
592*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
593*25c28e83SPiotr Jasiukajtis
594*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
595*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f40
596*25c28e83SPiotr Jasiukajtis
597*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
598*25c28e83SPiotr Jasiukajtis
599*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
600*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
601*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f34
602*25c28e83SPiotr Jasiukajtis
603*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
604*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
605*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f42
606*25c28e83SPiotr Jasiukajtis
607*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f14
608*25c28e83SPiotr Jasiukajtis
609*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
610*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
611*25c28e83SPiotr Jasiukajtis
612*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
613*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
614*25c28e83SPiotr Jasiukajtis
615*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
616*25c28e83SPiotr Jasiukajtis
617*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
618*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
619*25c28e83SPiotr Jasiukajtis
620*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
621*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
622*25c28e83SPiotr Jasiukajtis
623*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f46,%f14
624*25c28e83SPiotr Jasiukajtis
625*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
626*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f2
627*25c28e83SPiotr Jasiukajtis
628*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
629*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f22
630*25c28e83SPiotr Jasiukajtis
631*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
632*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
633*25c28e83SPiotr Jasiukajtis
634*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f40,%f24
635*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
636*25c28e83SPiotr Jasiukajtis
637*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f34,%f6
638*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
639*25c28e83SPiotr Jasiukajtis
640*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f42,%f26
641*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
642*25c28e83SPiotr Jasiukajtis
643*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
644*25c28e83SPiotr Jasiukajtis
645*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
646*25c28e83SPiotr Jasiukajtis
647*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
648*25c28e83SPiotr Jasiukajtis
649*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
650*25c28e83SPiotr Jasiukajtis
651*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f2,%f6
652*25c28e83SPiotr Jasiukajtis
653*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f22,%f26
654*25c28e83SPiotr Jasiukajtis
655*25c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f16
656*25c28e83SPiotr Jasiukajtis
657*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
658*25c28e83SPiotr Jasiukajtis
659*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f40,%f26
660*25c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
661*25c28e83SPiotr Jasiukajtis
662*25c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
663*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
664*25c28e83SPiotr Jasiukajtis
665*25c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
666*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
667*25c28e83SPiotr Jasiukajtis
668*25c28e83SPiotr Jasiukajtis! delay slot
669*25c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
670*25c28e83SPiotr Jasiukajtis
671*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
672*25c28e83SPiotr Jasiukajtis! delay slot
673*25c28e83SPiotr Jasiukajtis	nop
674*25c28e83SPiotr Jasiukajtis
675*25c28e83SPiotr Jasiukajtis	.align	32
676*25c28e83SPiotr Jasiukajtis.case3:
677*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
678*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
679*25c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f2
680*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
681*25c28e83SPiotr Jasiukajtis
682*25c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
683*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
684*25c28e83SPiotr Jasiukajtis
685*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f2,%f0
686*25c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
687*25c28e83SPiotr Jasiukajtis	mov	%o0,%o3
688*25c28e83SPiotr Jasiukajtis
689*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f14
690*25c28e83SPiotr Jasiukajtis	mov	%o1,%o4
691*25c28e83SPiotr Jasiukajtis
692*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f52,%f24
693*25c28e83SPiotr Jasiukajtis	mov	%o2,%o5
694*25c28e83SPiotr Jasiukajtis
695*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
696*25c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
697*25c28e83SPiotr Jasiukajtis
698*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f50,%f14
699*25c28e83SPiotr Jasiukajtis
700*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f50,%f24
701*25c28e83SPiotr Jasiukajtis
702*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
703*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
704*25c28e83SPiotr Jasiukajtis
705*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
706*25c28e83SPiotr Jasiukajtis
707*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
708*25c28e83SPiotr Jasiukajtis
709*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
710*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
711*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f34
712*25c28e83SPiotr Jasiukajtis
713*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f14
714*25c28e83SPiotr Jasiukajtis
715*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f24
716*25c28e83SPiotr Jasiukajtis
717*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
718*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
719*25c28e83SPiotr Jasiukajtis
720*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
721*25c28e83SPiotr Jasiukajtis
722*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
723*25c28e83SPiotr Jasiukajtis
724*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
725*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
726*25c28e83SPiotr Jasiukajtis
727*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f46,%f14
728*25c28e83SPiotr Jasiukajtis
729*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f46,%f24
730*25c28e83SPiotr Jasiukajtis
731*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
732*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f2
733*25c28e83SPiotr Jasiukajtis
734*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
735*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
736*25c28e83SPiotr Jasiukajtis
737*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
738*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
739*25c28e83SPiotr Jasiukajtis
740*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f34,%f6
741*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
742*25c28e83SPiotr Jasiukajtis
743*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
744*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
745*25c28e83SPiotr Jasiukajtis
746*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
747*25c28e83SPiotr Jasiukajtis
748*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
749*25c28e83SPiotr Jasiukajtis
750*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
751*25c28e83SPiotr Jasiukajtis
752*25c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f16
753*25c28e83SPiotr Jasiukajtis
754*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f2,%f6
755*25c28e83SPiotr Jasiukajtis
756*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f24,%f26
757*25c28e83SPiotr Jasiukajtis
758*25c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
759*25c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
760*25c28e83SPiotr Jasiukajtis
761*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
762*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
763*25c28e83SPiotr Jasiukajtis
764*25c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
765*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
766*25c28e83SPiotr Jasiukajtis
767*25c28e83SPiotr Jasiukajtis! delay slot
768*25c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
769*25c28e83SPiotr Jasiukajtis
770*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
771*25c28e83SPiotr Jasiukajtis! delay slot
772*25c28e83SPiotr Jasiukajtis	nop
773*25c28e83SPiotr Jasiukajtis
774*25c28e83SPiotr Jasiukajtis	.align	32
775*25c28e83SPiotr Jasiukajtis.case4:
776*25c28e83SPiotr Jasiukajtis	st	%f17,[%o4+4]
777*25c28e83SPiotr Jasiukajtis	cmp	%l1,%l5
778*25c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
779*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case6
780*25c28e83SPiotr Jasiukajtis
781*25c28e83SPiotr Jasiukajtis! delay slot
782*25c28e83SPiotr Jasiukajtis	st	%f26,[%o5]
783*25c28e83SPiotr Jasiukajtis	cmp	%l2,%l5
784*25c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
785*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case5
786*25c28e83SPiotr Jasiukajtis
787*25c28e83SPiotr Jasiukajtis! delay slot
788*25c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
789*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
790*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
791*25c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f12
792*25c28e83SPiotr Jasiukajtis
793*25c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
794*25c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
795*25c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f22
796*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
797*25c28e83SPiotr Jasiukajtis
798*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
799*25c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
800*25c28e83SPiotr Jasiukajtis	mov	%o1,%o4
801*25c28e83SPiotr Jasiukajtis
802*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f22,%f20
803*25c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
804*25c28e83SPiotr Jasiukajtis	mov	%o2,%o5
805*25c28e83SPiotr Jasiukajtis
806*25c28e83SPiotr Jasiukajtis	fmovd	%f0,%f6
807*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f4
808*25c28e83SPiotr Jasiukajtis	mov	%o0,%o3
809*25c28e83SPiotr Jasiukajtis
810*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
811*25c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
812*25c28e83SPiotr Jasiukajtis
813*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
814*25c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
815*25c28e83SPiotr Jasiukajtis
816*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f50,%f4
817*25c28e83SPiotr Jasiukajtis
818*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
819*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f36
820*25c28e83SPiotr Jasiukajtis
821*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
822*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f40
823*25c28e83SPiotr Jasiukajtis
824*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
825*25c28e83SPiotr Jasiukajtis
826*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
827*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
828*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f38
829*25c28e83SPiotr Jasiukajtis
830*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
831*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
832*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f42
833*25c28e83SPiotr Jasiukajtis
834*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f48,%f4
835*25c28e83SPiotr Jasiukajtis
836*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
837*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
838*25c28e83SPiotr Jasiukajtis
839*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
840*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
841*25c28e83SPiotr Jasiukajtis
842*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
843*25c28e83SPiotr Jasiukajtis
844*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
845*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
846*25c28e83SPiotr Jasiukajtis
847*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
848*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
849*25c28e83SPiotr Jasiukajtis
850*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f46,%f4
851*25c28e83SPiotr Jasiukajtis
852*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
853*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f12
854*25c28e83SPiotr Jasiukajtis
855*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
856*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f22
857*25c28e83SPiotr Jasiukajtis
858*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f36,%f14
859*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
860*25c28e83SPiotr Jasiukajtis
861*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f40,%f24
862*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
863*25c28e83SPiotr Jasiukajtis
864*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f38,%f16
865*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
866*25c28e83SPiotr Jasiukajtis
867*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f42,%f26
868*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
869*25c28e83SPiotr Jasiukajtis
870*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
871*25c28e83SPiotr Jasiukajtis
872*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
873*25c28e83SPiotr Jasiukajtis
874*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
875*25c28e83SPiotr Jasiukajtis
876*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f4,%f4
877*25c28e83SPiotr Jasiukajtis
878*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f12,%f16
879*25c28e83SPiotr Jasiukajtis
880*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f22,%f26
881*25c28e83SPiotr Jasiukajtis
882*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
883*25c28e83SPiotr Jasiukajtis
884*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f36,%f16
885*25c28e83SPiotr Jasiukajtis
886*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f40,%f26
887*25c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
888*25c28e83SPiotr Jasiukajtis
889*25c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
890*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
891*25c28e83SPiotr Jasiukajtis
892*25c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
893*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
894*25c28e83SPiotr Jasiukajtis
895*25c28e83SPiotr Jasiukajtis! delay slot
896*25c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
897*25c28e83SPiotr Jasiukajtis
898*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
899*25c28e83SPiotr Jasiukajtis! delay slot
900*25c28e83SPiotr Jasiukajtis	nop
901*25c28e83SPiotr Jasiukajtis
902*25c28e83SPiotr Jasiukajtis	.align	32
903*25c28e83SPiotr Jasiukajtis.case5:
904*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
905*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
906*25c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f12
907*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
908*25c28e83SPiotr Jasiukajtis
909*25c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
910*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
911*25c28e83SPiotr Jasiukajtis
912*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
913*25c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
914*25c28e83SPiotr Jasiukajtis	mov	%o1,%o4
915*25c28e83SPiotr Jasiukajtis
916*25c28e83SPiotr Jasiukajtis	fmovd	%f0,%f6
917*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f4
918*25c28e83SPiotr Jasiukajtis	mov	%o0,%o3
919*25c28e83SPiotr Jasiukajtis
920*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f52,%f24
921*25c28e83SPiotr Jasiukajtis	mov	%o2,%o5
922*25c28e83SPiotr Jasiukajtis
923*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
924*25c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
925*25c28e83SPiotr Jasiukajtis
926*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f50,%f4
927*25c28e83SPiotr Jasiukajtis
928*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f50,%f24
929*25c28e83SPiotr Jasiukajtis
930*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
931*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f36
932*25c28e83SPiotr Jasiukajtis
933*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
934*25c28e83SPiotr Jasiukajtis
935*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
936*25c28e83SPiotr Jasiukajtis
937*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
938*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
939*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f38
940*25c28e83SPiotr Jasiukajtis
941*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f48,%f4
942*25c28e83SPiotr Jasiukajtis
943*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f24
944*25c28e83SPiotr Jasiukajtis
945*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
946*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
947*25c28e83SPiotr Jasiukajtis
948*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
949*25c28e83SPiotr Jasiukajtis
950*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
951*25c28e83SPiotr Jasiukajtis
952*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
953*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
954*25c28e83SPiotr Jasiukajtis
955*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f46,%f4
956*25c28e83SPiotr Jasiukajtis
957*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f46,%f24
958*25c28e83SPiotr Jasiukajtis
959*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
960*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f12
961*25c28e83SPiotr Jasiukajtis
962*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f36,%f14
963*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
964*25c28e83SPiotr Jasiukajtis
965*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
966*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
967*25c28e83SPiotr Jasiukajtis
968*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f38,%f16
969*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
970*25c28e83SPiotr Jasiukajtis
971*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
972*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
973*25c28e83SPiotr Jasiukajtis
974*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f4,%f4
975*25c28e83SPiotr Jasiukajtis
976*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
977*25c28e83SPiotr Jasiukajtis
978*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
979*25c28e83SPiotr Jasiukajtis
980*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
981*25c28e83SPiotr Jasiukajtis
982*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f12,%f16
983*25c28e83SPiotr Jasiukajtis
984*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f24,%f26
985*25c28e83SPiotr Jasiukajtis
986*25c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
987*25c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
988*25c28e83SPiotr Jasiukajtis
989*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f36,%f16
990*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
991*25c28e83SPiotr Jasiukajtis
992*25c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
993*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
994*25c28e83SPiotr Jasiukajtis
995*25c28e83SPiotr Jasiukajtis! delay slot
996*25c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
997*25c28e83SPiotr Jasiukajtis
998*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
999*25c28e83SPiotr Jasiukajtis! delay slot
1000*25c28e83SPiotr Jasiukajtis	nop
1001*25c28e83SPiotr Jasiukajtis
1002*25c28e83SPiotr Jasiukajtis	.align	32
1003*25c28e83SPiotr Jasiukajtis.case6:
1004*25c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
1005*25c28e83SPiotr Jasiukajtis	cmp	%l2,%l5
1006*25c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
1007*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,.case7
1008*25c28e83SPiotr Jasiukajtis
1009*25c28e83SPiotr Jasiukajtis! delay slot
1010*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
1011*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
1012*25c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f22
1013*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
1014*25c28e83SPiotr Jasiukajtis
1015*25c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
1016*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
1017*25c28e83SPiotr Jasiukajtis
1018*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f22,%f20
1019*25c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
1020*25c28e83SPiotr Jasiukajtis	mov	%o2,%o5
1021*25c28e83SPiotr Jasiukajtis
1022*25c28e83SPiotr Jasiukajtis	fmovd	%f0,%f6
1023*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f4
1024*25c28e83SPiotr Jasiukajtis	mov	%o0,%o3
1025*25c28e83SPiotr Jasiukajtis
1026*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f14
1027*25c28e83SPiotr Jasiukajtis	mov	%o1,%o4
1028*25c28e83SPiotr Jasiukajtis
1029*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
1030*25c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
1031*25c28e83SPiotr Jasiukajtis
1032*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f50,%f4
1033*25c28e83SPiotr Jasiukajtis
1034*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f50,%f14
1035*25c28e83SPiotr Jasiukajtis
1036*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
1037*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f40
1038*25c28e83SPiotr Jasiukajtis
1039*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1040*25c28e83SPiotr Jasiukajtis
1041*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1042*25c28e83SPiotr Jasiukajtis
1043*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
1044*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
1045*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f42
1046*25c28e83SPiotr Jasiukajtis
1047*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f48,%f4
1048*25c28e83SPiotr Jasiukajtis
1049*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f14
1050*25c28e83SPiotr Jasiukajtis
1051*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
1052*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
1053*25c28e83SPiotr Jasiukajtis
1054*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1055*25c28e83SPiotr Jasiukajtis
1056*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1057*25c28e83SPiotr Jasiukajtis
1058*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
1059*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
1060*25c28e83SPiotr Jasiukajtis
1061*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f46,%f4
1062*25c28e83SPiotr Jasiukajtis
1063*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f46,%f14
1064*25c28e83SPiotr Jasiukajtis
1065*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
1066*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f22
1067*25c28e83SPiotr Jasiukajtis
1068*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f40,%f24
1069*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
1070*25c28e83SPiotr Jasiukajtis
1071*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1072*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
1073*25c28e83SPiotr Jasiukajtis
1074*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f42,%f26
1075*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
1076*25c28e83SPiotr Jasiukajtis
1077*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1078*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
1079*25c28e83SPiotr Jasiukajtis
1080*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f4,%f4
1081*25c28e83SPiotr Jasiukajtis
1082*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
1083*25c28e83SPiotr Jasiukajtis
1084*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
1085*25c28e83SPiotr Jasiukajtis
1086*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
1087*25c28e83SPiotr Jasiukajtis
1088*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f22,%f26
1089*25c28e83SPiotr Jasiukajtis
1090*25c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f16
1091*25c28e83SPiotr Jasiukajtis
1092*25c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
1093*25c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
1094*25c28e83SPiotr Jasiukajtis
1095*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f40,%f26
1096*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
1097*25c28e83SPiotr Jasiukajtis
1098*25c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
1099*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
1100*25c28e83SPiotr Jasiukajtis
1101*25c28e83SPiotr Jasiukajtis! delay slot
1102*25c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
1103*25c28e83SPiotr Jasiukajtis
1104*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
1105*25c28e83SPiotr Jasiukajtis! delay slot
1106*25c28e83SPiotr Jasiukajtis	nop
1107*25c28e83SPiotr Jasiukajtis
1108*25c28e83SPiotr Jasiukajtis	.align	32
1109*25c28e83SPiotr Jasiukajtis.case7:
1110*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
1111*25c28e83SPiotr Jasiukajtis	fmovd	%f0,%f6
1112*25c28e83SPiotr Jasiukajtis	mov	%o0,%o3
1113*25c28e83SPiotr Jasiukajtis
1114*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
1115*25c28e83SPiotr Jasiukajtis	mov	%o1,%o4
1116*25c28e83SPiotr Jasiukajtis
1117*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
1118*25c28e83SPiotr Jasiukajtis	mov	%o2,%o5
1119*25c28e83SPiotr Jasiukajtis
1120*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f4
1121*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
1122*25c28e83SPiotr Jasiukajtis
1123*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f14
1124*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
1125*25c28e83SPiotr Jasiukajtis
1126*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f52,%f24
1127*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
1128*25c28e83SPiotr Jasiukajtis
1129*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f50,%f4
1130*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
1131*25c28e83SPiotr Jasiukajtis
1132*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f50,%f14
1133*25c28e83SPiotr Jasiukajtis
1134*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f50,%f24
1135*25c28e83SPiotr Jasiukajtis
1136*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1137*25c28e83SPiotr Jasiukajtis
1138*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1139*25c28e83SPiotr Jasiukajtis
1140*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
1141*25c28e83SPiotr Jasiukajtis
1142*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f48,%f4
1143*25c28e83SPiotr Jasiukajtis
1144*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f14
1145*25c28e83SPiotr Jasiukajtis
1146*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f48,%f24
1147*25c28e83SPiotr Jasiukajtis
1148*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1149*25c28e83SPiotr Jasiukajtis
1150*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1151*25c28e83SPiotr Jasiukajtis
1152*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
1153*25c28e83SPiotr Jasiukajtis
1154*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f46,%f4
1155*25c28e83SPiotr Jasiukajtis
1156*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f46,%f14
1157*25c28e83SPiotr Jasiukajtis
1158*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f46,%f24
1159*25c28e83SPiotr Jasiukajtis
1160*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1161*25c28e83SPiotr Jasiukajtis
1162*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1163*25c28e83SPiotr Jasiukajtis
1164*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
1165*25c28e83SPiotr Jasiukajtis
1166*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f4,%f4
1167*25c28e83SPiotr Jasiukajtis
1168*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
1169*25c28e83SPiotr Jasiukajtis
1170*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
1171*25c28e83SPiotr Jasiukajtis
1172*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
1173*25c28e83SPiotr Jasiukajtis
1174*25c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f16
1175*25c28e83SPiotr Jasiukajtis
1176*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f24,%f26
1177*25c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
1178*25c28e83SPiotr Jasiukajtis
1179*25c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6
1180*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
1181*25c28e83SPiotr Jasiukajtis
1182*25c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16
1183*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
1184*25c28e83SPiotr Jasiukajtis
1185*25c28e83SPiotr Jasiukajtis! delay slot
1186*25c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26
1187*25c28e83SPiotr Jasiukajtis
1188*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.endloop0
1189*25c28e83SPiotr Jasiukajtis! delay slot
1190*25c28e83SPiotr Jasiukajtis	nop
1191*25c28e83SPiotr Jasiukajtis
1192*25c28e83SPiotr Jasiukajtis
1193*25c28e83SPiotr Jasiukajtis	.align	32
1194*25c28e83SPiotr Jasiukajtis.endloop2:
1195*25c28e83SPiotr Jasiukajtis	cmp	%l1,%l5
1196*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,1f
1197*25c28e83SPiotr Jasiukajtis! delay slot
1198*25c28e83SPiotr Jasiukajtis	fabsd	%f10,%f10
1199*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
1200*25c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
1201*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
1202*25c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f12
1203*25c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
1204*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
1205*25c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
1206*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
1207*25c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
1208*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f20
1209*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f36
1210*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f56,%f20
1211*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
1212*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f38
1213*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f20,%f20
1214*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
1215*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f54,%f20
1216*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1217*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f20,%f20
1218*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f12
1219*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f36,%f14
1220*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f38,%f20
1221*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f14,%f20
1222*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f12,%f20
1223*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
1224*25c28e83SPiotr Jasiukajtis! delay slot
1225*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f36,%f20
1226*25c28e83SPiotr Jasiukajtis1:
1227*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
1228*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f14
1229*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f50,%f14
1230*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1231*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f48,%f14
1232*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1233*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f46,%f14
1234*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1235*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
1236*25c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f20
1237*25c28e83SPiotr Jasiukajtis2:
1238*25c28e83SPiotr Jasiukajtis	fors	%f20,%f19,%f20
1239*25c28e83SPiotr Jasiukajtis	st	%f20,[%o1]
1240*25c28e83SPiotr Jasiukajtis	st	%f21,[%o1+4]
1241*25c28e83SPiotr Jasiukajtis
1242*25c28e83SPiotr Jasiukajtis.endloop1:
1243*25c28e83SPiotr Jasiukajtis	cmp	%l0,%l5
1244*25c28e83SPiotr Jasiukajtis	bl,pn	%icc,1f
1245*25c28e83SPiotr Jasiukajtis! delay slot
1246*25c28e83SPiotr Jasiukajtis	fabsd	%f0,%f0
1247*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
1248*25c28e83SPiotr Jasiukajtis	fpadd32s %f0,%f31,%f8
1249*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
1250*25c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f2
1251*25c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
1252*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f2,%f0
1253*25c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
1254*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
1255*25c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
1256*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f20
1257*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
1258*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f56,%f20
1259*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
1260*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f34
1261*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f20,%f20
1262*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
1263*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f54,%f20
1264*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1265*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f20,%f20
1266*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f2
1267*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
1268*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f34,%f20
1269*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f4,%f20
1270*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f2,%f20
1271*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
1272*25c28e83SPiotr Jasiukajtis! delay slot
1273*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f32,%f20
1274*25c28e83SPiotr Jasiukajtis1:
1275*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
1276*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f4
1277*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f50,%f4
1278*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1279*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f48,%f4
1280*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1281*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f46,%f4
1282*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1283*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
1284*25c28e83SPiotr Jasiukajtis	faddd	%f0,%f4,%f20
1285*25c28e83SPiotr Jasiukajtis2:
1286*25c28e83SPiotr Jasiukajtis	fors	%f20,%f9,%f20
1287*25c28e83SPiotr Jasiukajtis	st	%f20,[%o0]
1288*25c28e83SPiotr Jasiukajtis	st	%f21,[%o0+4]
1289*25c28e83SPiotr Jasiukajtis
1290*25c28e83SPiotr Jasiukajtis.endloop0:
1291*25c28e83SPiotr Jasiukajtis	st	%f6,[%o3]
1292*25c28e83SPiotr Jasiukajtis	st	%f7,[%o3+4]
1293*25c28e83SPiotr Jasiukajtis	st	%f16,[%o4]
1294*25c28e83SPiotr Jasiukajtis	st	%f17,[%o4+4]
1295*25c28e83SPiotr Jasiukajtis	st	%f26,[%o5]
1296*25c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
1297*25c28e83SPiotr Jasiukajtis
1298*25c28e83SPiotr Jasiukajtis! return.  finished off with only primary range arguments.
1299*25c28e83SPiotr Jasiukajtis
1300*25c28e83SPiotr Jasiukajtis	ret
1301*25c28e83SPiotr Jasiukajtis	restore
1302*25c28e83SPiotr Jasiukajtis
1303*25c28e83SPiotr Jasiukajtis
1304*25c28e83SPiotr Jasiukajtis	.align	32
1305*25c28e83SPiotr Jasiukajtis.range0:
1306*25c28e83SPiotr Jasiukajtis	cmp	%l0,LIM_l6
1307*25c28e83SPiotr Jasiukajtis	bg,a,pt	%icc,.MEDIUM		! branch if x is not tiny
1308*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
1309*25c28e83SPiotr Jasiukajtis	mov	0x1,LIM_l6		! set "processing loop0"
1310*25c28e83SPiotr Jasiukajtis	st	%f0,[%o0]		! *y = *x with inexact if x nonzero
1311*25c28e83SPiotr Jasiukajtis	st	%f1,[%o0+4]
1312*25c28e83SPiotr Jasiukajtis	fdtoi	%f0,%f2
1313*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
1314*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.endloop0
1315*25c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
1316*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
1317*25c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l0		! hx &= ~0x80000000
1318*25c28e83SPiotr Jasiukajtis	fmovd	%f10,%f0
1319*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop0
1320*25c28e83SPiotr Jasiukajtis! delay slot
1321*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
1322*25c28e83SPiotr Jasiukajtis
1323*25c28e83SPiotr Jasiukajtis
1324*25c28e83SPiotr Jasiukajtis	.align	32
1325*25c28e83SPiotr Jasiukajtis.range1:
1326*25c28e83SPiotr Jasiukajtis	cmp	%l1,LIM_l6
1327*25c28e83SPiotr Jasiukajtis	bg,a,pt	%icc,.MEDIUM		! branch if x is not tiny
1328*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
1329*25c28e83SPiotr Jasiukajtis	mov	0x2,LIM_l6		! set "processing loop1"
1330*25c28e83SPiotr Jasiukajtis	st	%f10,[%o1]		! *y = *x with inexact if x nonzero
1331*25c28e83SPiotr Jasiukajtis	st	%f11,[%o1+4]
1332*25c28e83SPiotr Jasiukajtis	fdtoi	%f10,%f12
1333*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
1334*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.endloop1
1335*25c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
1336*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
1337*25c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l1		! hx &= ~0x80000000
1338*25c28e83SPiotr Jasiukajtis	fmovd	%f20,%f10
1339*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop1
1340*25c28e83SPiotr Jasiukajtis! delay slot
1341*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
1342*25c28e83SPiotr Jasiukajtis
1343*25c28e83SPiotr Jasiukajtis
1344*25c28e83SPiotr Jasiukajtis	.align	32
1345*25c28e83SPiotr Jasiukajtis.range2:
1346*25c28e83SPiotr Jasiukajtis	cmp	%l2,LIM_l6
1347*25c28e83SPiotr Jasiukajtis	bg,a,pt	%icc,.MEDIUM		! branch if x is not tiny
1348*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
1349*25c28e83SPiotr Jasiukajtis	mov	0x3,LIM_l6		! set "processing loop2"
1350*25c28e83SPiotr Jasiukajtis	st	%f20,[%o2]		! *y = *x with inexact if x nonzero
1351*25c28e83SPiotr Jasiukajtis	st	%f21,[%o2+4]
1352*25c28e83SPiotr Jasiukajtis	fdtoi	%f20,%f22
1353*25c28e83SPiotr Jasiukajtis1:
1354*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
1355*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.endloop2
1356*25c28e83SPiotr Jasiukajtis! delay slot
1357*25c28e83SPiotr Jasiukajtis	nop
1358*25c28e83SPiotr Jasiukajtis	ld	[%i1],%l2
1359*25c28e83SPiotr Jasiukajtis	ld	[%i1],%f20
1360*25c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f21
1361*25c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l2		! hx &= ~0x80000000
1362*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop2
1363*25c28e83SPiotr Jasiukajtis! delay slot
1364*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
1365*25c28e83SPiotr Jasiukajtis
1366*25c28e83SPiotr Jasiukajtis
1367*25c28e83SPiotr Jasiukajtis	.align	32
1368*25c28e83SPiotr Jasiukajtis.MEDIUM:
1369*25c28e83SPiotr Jasiukajtis
1370*25c28e83SPiotr Jasiukajtis! ========== medium range ==========
1371*25c28e83SPiotr Jasiukajtis
1372*25c28e83SPiotr Jasiukajtis! register use
1373*25c28e83SPiotr Jasiukajtis
1374*25c28e83SPiotr Jasiukajtis! i0  n
1375*25c28e83SPiotr Jasiukajtis! i1  x
1376*25c28e83SPiotr Jasiukajtis! i2  stridex
1377*25c28e83SPiotr Jasiukajtis! i3  y
1378*25c28e83SPiotr Jasiukajtis! i4  stridey
1379*25c28e83SPiotr Jasiukajtis! i5  0x80000000
1380*25c28e83SPiotr Jasiukajtis
1381*25c28e83SPiotr Jasiukajtis! l0  hx0
1382*25c28e83SPiotr Jasiukajtis! l1  hx1
1383*25c28e83SPiotr Jasiukajtis! l2  hx2
1384*25c28e83SPiotr Jasiukajtis! l3  __vlibm_TBL_sincos_hi
1385*25c28e83SPiotr Jasiukajtis! l4  __vlibm_TBL_sincos_lo
1386*25c28e83SPiotr Jasiukajtis! l5  constants
1387*25c28e83SPiotr Jasiukajtis! l6  in transition from pri-range and here, use for biguns
1388*25c28e83SPiotr Jasiukajtis! l7  0x413921fb
1389*25c28e83SPiotr Jasiukajtis
1390*25c28e83SPiotr Jasiukajtis! the following are 64-bit registers in both V8+ and V9
1391*25c28e83SPiotr Jasiukajtis
1392*25c28e83SPiotr Jasiukajtis! g1  scratch
1393*25c28e83SPiotr Jasiukajtis! g5
1394*25c28e83SPiotr Jasiukajtis
1395*25c28e83SPiotr Jasiukajtis! o0  py0
1396*25c28e83SPiotr Jasiukajtis! o1  py1
1397*25c28e83SPiotr Jasiukajtis! o2  py2
1398*25c28e83SPiotr Jasiukajtis! o3  n0
1399*25c28e83SPiotr Jasiukajtis! o4  n1
1400*25c28e83SPiotr Jasiukajtis! o5  n2
1401*25c28e83SPiotr Jasiukajtis! o7  scratch
1402*25c28e83SPiotr Jasiukajtis
1403*25c28e83SPiotr Jasiukajtis! f0  x0
1404*25c28e83SPiotr Jasiukajtis! f2  n0,y0
1405*25c28e83SPiotr Jasiukajtis! f4
1406*25c28e83SPiotr Jasiukajtis! f6
1407*25c28e83SPiotr Jasiukajtis! f8  scratch for table base
1408*25c28e83SPiotr Jasiukajtis! f9  signbit0
1409*25c28e83SPiotr Jasiukajtis! f10 x1
1410*25c28e83SPiotr Jasiukajtis! f12 n1,y1
1411*25c28e83SPiotr Jasiukajtis! f14
1412*25c28e83SPiotr Jasiukajtis! f16
1413*25c28e83SPiotr Jasiukajtis! f18 scratch for table base
1414*25c28e83SPiotr Jasiukajtis! f19 signbit1
1415*25c28e83SPiotr Jasiukajtis! f20 x2
1416*25c28e83SPiotr Jasiukajtis! f22 n2,y2
1417*25c28e83SPiotr Jasiukajtis! f24
1418*25c28e83SPiotr Jasiukajtis! f26
1419*25c28e83SPiotr Jasiukajtis! f28 scratch for table base
1420*25c28e83SPiotr Jasiukajtis! f29 signbit2
1421*25c28e83SPiotr Jasiukajtis! f30 0x80000000
1422*25c28e83SPiotr Jasiukajtis! f31 0x4000
1423*25c28e83SPiotr Jasiukajtis! f32
1424*25c28e83SPiotr Jasiukajtis! f34
1425*25c28e83SPiotr Jasiukajtis! f36
1426*25c28e83SPiotr Jasiukajtis! f38
1427*25c28e83SPiotr Jasiukajtis! f40 invpio2
1428*25c28e83SPiotr Jasiukajtis! f42 round
1429*25c28e83SPiotr Jasiukajtis! f44 0xffff800000000000
1430*25c28e83SPiotr Jasiukajtis! f46 pio2_1
1431*25c28e83SPiotr Jasiukajtis! f48 pio2_2
1432*25c28e83SPiotr Jasiukajtis! f50 pio2_3
1433*25c28e83SPiotr Jasiukajtis! f52 pio2_3t
1434*25c28e83SPiotr Jasiukajtis! f54 one
1435*25c28e83SPiotr Jasiukajtis! f56 pp1
1436*25c28e83SPiotr Jasiukajtis! f58 pp2
1437*25c28e83SPiotr Jasiukajtis! f60 qq1
1438*25c28e83SPiotr Jasiukajtis! f62 qq2
1439*25c28e83SPiotr Jasiukajtis
1440*25c28e83SPiotr Jasiukajtis	PIC_SET(g5,constants,l5)
1441*25c28e83SPiotr Jasiukajtis
1442*25c28e83SPiotr Jasiukajtis	! %o3,%o4,%o5 need to be stored
1443*25c28e83SPiotr Jasiukajtis	st	%f6,[%o3]
1444*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x413921fb),%l7
1445*25c28e83SPiotr Jasiukajtis	st	%f7,[%o3+4]
1446*25c28e83SPiotr Jasiukajtis	or	%l7,%lo(0x413921fb),%l7
1447*25c28e83SPiotr Jasiukajtis	st	%f16,[%o4]
1448*25c28e83SPiotr Jasiukajtis	st	%f17,[%o4+4]
1449*25c28e83SPiotr Jasiukajtis	st	%f26,[%o5]
1450*25c28e83SPiotr Jasiukajtis	st	%f27,[%o5+4]
1451*25c28e83SPiotr Jasiukajtis	ldd	[%l5+invpio2],%f40
1452*25c28e83SPiotr Jasiukajtis	ldd	[%l5+round],%f42
1453*25c28e83SPiotr Jasiukajtis	ldd	[%l5+pio2_1],%f46
1454*25c28e83SPiotr Jasiukajtis	ldd	[%l5+pio2_2],%f48
1455*25c28e83SPiotr Jasiukajtis	ldd	[%l5+pio2_3],%f50
1456*25c28e83SPiotr Jasiukajtis	ldd	[%l5+pio2_3t],%f52
1457*25c28e83SPiotr Jasiukajtis	std	%f54,[%fp+x0_1+8]	! set up stack data
1458*25c28e83SPiotr Jasiukajtis	std	%f54,[%fp+x1_1+8]
1459*25c28e83SPiotr Jasiukajtis	std	%f54,[%fp+x2_1+8]
1460*25c28e83SPiotr Jasiukajtis	stx	%g0,[%fp+y0_0+8]
1461*25c28e83SPiotr Jasiukajtis	stx	%g0,[%fp+y1_0+8]
1462*25c28e83SPiotr Jasiukajtis	stx	%g0,[%fp+y2_0+8]
1463*25c28e83SPiotr Jasiukajtis
1464*25c28e83SPiotr Jasiukajtis!	branched here in the middle of the array.  Need to adjust
1465*25c28e83SPiotr Jasiukajtis!	for the members of the triple that were selected in the primary
1466*25c28e83SPiotr Jasiukajtis!	loop.
1467*25c28e83SPiotr Jasiukajtis
1468*25c28e83SPiotr Jasiukajtis!	no adjustment since all three selected here
1469*25c28e83SPiotr Jasiukajtis	subcc	LIM_l6,0x1,%g0		! continue in LOOP0?
1470*25c28e83SPiotr Jasiukajtis	bz,a	%icc,.LOOP0
1471*25c28e83SPiotr Jasiukajtis	mov	0x0,LIM_l6		! delay slot set biguns=0
1472*25c28e83SPiotr Jasiukajtis
1473*25c28e83SPiotr Jasiukajtis!	ajust 1st triple since 2d and 3d done here
1474*25c28e83SPiotr Jasiukajtis	subcc	LIM_l6,0x2,%g0		! continue in LOOP1?
1475*25c28e83SPiotr Jasiukajtis	fors	%f0,%f9,%f0		! restore sign bit
1476*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f40,%f2		! adj LOOP0
1477*25c28e83SPiotr Jasiukajtis	bz,a	%icc,.LOOP1
1478*25c28e83SPiotr Jasiukajtis	mov	0x0,LIM_l6		! delay slot set biguns=0
1479*25c28e83SPiotr Jasiukajtis
1480*25c28e83SPiotr Jasiukajtis!	ajust 1st and 2d triple since 3d done here
1481*25c28e83SPiotr Jasiukajtis	subcc	LIM_l6,0x3,%g0		! continue in LOOP2?
1482*25c28e83SPiotr Jasiukajtis	!done fmuld	%f0,%f40,%f2		! adj LOOP0
1483*25c28e83SPiotr Jasiukajtis	sub	%i3,%i4,%i3		! adjust to not double increment
1484*25c28e83SPiotr Jasiukajtis	fors	%f10,%f19,%f10		! restore sign bit
1485*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f40,%f12		! adj LOOP1
1486*25c28e83SPiotr Jasiukajtis	faddd	%f2,%f42,%f2		! adj LOOP1
1487*25c28e83SPiotr Jasiukajtis	bz,a	%icc,.LOOP2
1488*25c28e83SPiotr Jasiukajtis	mov	0x0,LIM_l6		! delay slot set biguns=0
1489*25c28e83SPiotr Jasiukajtis
1490*25c28e83SPiotr Jasiukajtis	.align 32
1491*25c28e83SPiotr Jasiukajtis.LOOP0:
1492*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l1		! preload next argument
1493*25c28e83SPiotr Jasiukajtis	mov	%i3,%o0			! py0 = y
1494*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f10
1495*25c28e83SPiotr Jasiukajtis	cmp	%l0,%l7
1496*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
1497*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.BIG0		! if hx > 0x413921fb
1498*25c28e83SPiotr Jasiukajtis
1499*25c28e83SPiotr Jasiukajtis! delay slot
1500*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f11
1501*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
1502*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
1503*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP1
1504*25c28e83SPiotr Jasiukajtis
1505*25c28e83SPiotr Jasiukajtis! delay slot
1506*25c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l1
1507*25c28e83SPiotr Jasiukajtis	nop
1508*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f40,%f2
1509*25c28e83SPiotr Jasiukajtis	fabsd	%f54,%f54		! a nop for alignment only
1510*25c28e83SPiotr Jasiukajtis
1511*25c28e83SPiotr Jasiukajtis.LOOP1:
1512*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l2		! preload next argument
1513*25c28e83SPiotr Jasiukajtis	mov	%i3,%o1			! py1 = y
1514*25c28e83SPiotr Jasiukajtis
1515*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f20
1516*25c28e83SPiotr Jasiukajtis	cmp	%l1,%l7
1517*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
1518*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.BIG1		! if hx > 0x413921fb
1519*25c28e83SPiotr Jasiukajtis
1520*25c28e83SPiotr Jasiukajtis! delay slot
1521*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f21
1522*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
1523*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
1524*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP2
1525*25c28e83SPiotr Jasiukajtis
1526*25c28e83SPiotr Jasiukajtis! delay slot
1527*25c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l2
1528*25c28e83SPiotr Jasiukajtis	nop
1529*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f40,%f12
1530*25c28e83SPiotr Jasiukajtis	faddd	%f2,%f42,%f2
1531*25c28e83SPiotr Jasiukajtis
1532*25c28e83SPiotr Jasiukajtis.LOOP2:
1533*25c28e83SPiotr Jasiukajtis	st	%f3,[%fp+n0]
1534*25c28e83SPiotr Jasiukajtis	mov	%i3,%o2			! py2 = y
1535*25c28e83SPiotr Jasiukajtis
1536*25c28e83SPiotr Jasiukajtis	cmp	%l2,%l7
1537*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
1538*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f40,%f22
1539*25c28e83SPiotr Jasiukajtis	bg,pn	%icc,.BIG2		! if hx > 0x413921fb
1540*25c28e83SPiotr Jasiukajtis
1541*25c28e83SPiotr Jasiukajtis! delay slot
1542*25c28e83SPiotr Jasiukajtis	add	%l5,thresh+4,%o7
1543*25c28e83SPiotr Jasiukajtis	faddd	%f12,%f42,%f12
1544*25c28e83SPiotr Jasiukajtis	st	%f13,[%fp+n1]
1545*25c28e83SPiotr Jasiukajtis
1546*25c28e83SPiotr Jasiukajtis! -
1547*25c28e83SPiotr Jasiukajtis
1548*25c28e83SPiotr Jasiukajtis	add	%l5,thresh,%g1
1549*25c28e83SPiotr Jasiukajtis	faddd	%f22,%f42,%f22
1550*25c28e83SPiotr Jasiukajtis	st	%f23,[%fp+n2]
1551*25c28e83SPiotr Jasiukajtis
1552*25c28e83SPiotr Jasiukajtis	fsubd	%f2,%f42,%f2		! n
1553*25c28e83SPiotr Jasiukajtis
1554*25c28e83SPiotr Jasiukajtis	fsubd	%f12,%f42,%f12		! n
1555*25c28e83SPiotr Jasiukajtis
1556*25c28e83SPiotr Jasiukajtis	fsubd	%f22,%f42,%f22		! n
1557*25c28e83SPiotr Jasiukajtis
1558*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f46,%f4
1559*25c28e83SPiotr Jasiukajtis
1560*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f46,%f14
1561*25c28e83SPiotr Jasiukajtis
1562*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f46,%f24
1563*25c28e83SPiotr Jasiukajtis
1564*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f4
1565*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f48,%f6
1566*25c28e83SPiotr Jasiukajtis
1567*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f14
1568*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f48,%f16
1569*25c28e83SPiotr Jasiukajtis
1570*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f24
1571*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f48,%f26
1572*25c28e83SPiotr Jasiukajtis
1573*25c28e83SPiotr Jasiukajtis	fsubd	%f4,%f6,%f0
1574*25c28e83SPiotr Jasiukajtis	ld	[%fp+n0],%o3
1575*25c28e83SPiotr Jasiukajtis
1576*25c28e83SPiotr Jasiukajtis	fsubd	%f14,%f16,%f10
1577*25c28e83SPiotr Jasiukajtis	ld	[%fp+n1],%o4
1578*25c28e83SPiotr Jasiukajtis
1579*25c28e83SPiotr Jasiukajtis	fsubd	%f24,%f26,%f20
1580*25c28e83SPiotr Jasiukajtis	ld	[%fp+n2],%o5
1581*25c28e83SPiotr Jasiukajtis
1582*25c28e83SPiotr Jasiukajtis	fsubd	%f4,%f0,%f32
1583*25c28e83SPiotr Jasiukajtis	and	%o3,1,%o3
1584*25c28e83SPiotr Jasiukajtis
1585*25c28e83SPiotr Jasiukajtis	fsubd	%f14,%f10,%f34
1586*25c28e83SPiotr Jasiukajtis	and	%o4,1,%o4
1587*25c28e83SPiotr Jasiukajtis
1588*25c28e83SPiotr Jasiukajtis	fsubd	%f24,%f20,%f36
1589*25c28e83SPiotr Jasiukajtis	and	%o5,1,%o5
1590*25c28e83SPiotr Jasiukajtis
1591*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f6,%f32
1592*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f50,%f8
1593*25c28e83SPiotr Jasiukajtis	sll	%o3,3,%o3
1594*25c28e83SPiotr Jasiukajtis
1595*25c28e83SPiotr Jasiukajtis	fsubd	%f34,%f16,%f34
1596*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f50,%f18
1597*25c28e83SPiotr Jasiukajtis	sll	%o4,3,%o4
1598*25c28e83SPiotr Jasiukajtis
1599*25c28e83SPiotr Jasiukajtis	fsubd	%f36,%f26,%f36
1600*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f50,%f28
1601*25c28e83SPiotr Jasiukajtis	sll	%o5,3,%o5
1602*25c28e83SPiotr Jasiukajtis
1603*25c28e83SPiotr Jasiukajtis	fsubd	%f8,%f32,%f8
1604*25c28e83SPiotr Jasiukajtis	ld	[%g1+%o3],%f6
1605*25c28e83SPiotr Jasiukajtis
1606*25c28e83SPiotr Jasiukajtis	fsubd	%f18,%f34,%f18
1607*25c28e83SPiotr Jasiukajtis	ld	[%g1+%o4],%f16
1608*25c28e83SPiotr Jasiukajtis
1609*25c28e83SPiotr Jasiukajtis	fsubd	%f28,%f36,%f28
1610*25c28e83SPiotr Jasiukajtis	ld	[%g1+%o5],%f26
1611*25c28e83SPiotr Jasiukajtis
1612*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f8,%f4
1613*25c28e83SPiotr Jasiukajtis
1614*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f18,%f14
1615*25c28e83SPiotr Jasiukajtis
1616*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f28,%f24
1617*25c28e83SPiotr Jasiukajtis
1618*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f32
1619*25c28e83SPiotr Jasiukajtis
1620*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f34
1621*25c28e83SPiotr Jasiukajtis
1622*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f36
1623*25c28e83SPiotr Jasiukajtis
1624*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f8,%f32
1625*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f2
1626*25c28e83SPiotr Jasiukajtis
1627*25c28e83SPiotr Jasiukajtis	fsubd	%f34,%f18,%f34
1628*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f12
1629*25c28e83SPiotr Jasiukajtis
1630*25c28e83SPiotr Jasiukajtis	fsubd	%f36,%f28,%f36
1631*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f52,%f22
1632*25c28e83SPiotr Jasiukajtis
1633*25c28e83SPiotr Jasiukajtis	fsubd	%f2,%f32,%f2
1634*25c28e83SPiotr Jasiukajtis	ld	[%o7+%o3],%f8
1635*25c28e83SPiotr Jasiukajtis
1636*25c28e83SPiotr Jasiukajtis	fsubd	%f12,%f34,%f12
1637*25c28e83SPiotr Jasiukajtis	ld	[%o7+%o4],%f18
1638*25c28e83SPiotr Jasiukajtis
1639*25c28e83SPiotr Jasiukajtis	fsubd	%f22,%f36,%f22
1640*25c28e83SPiotr Jasiukajtis	ld	[%o7+%o5],%f28
1641*25c28e83SPiotr Jasiukajtis
1642*25c28e83SPiotr Jasiukajtis	fsubd	%f4,%f2,%f0		! x
1643*25c28e83SPiotr Jasiukajtis
1644*25c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f10		! x
1645*25c28e83SPiotr Jasiukajtis
1646*25c28e83SPiotr Jasiukajtis	fsubd	%f24,%f22,%f20		! x
1647*25c28e83SPiotr Jasiukajtis
1648*25c28e83SPiotr Jasiukajtis	fsubd	%f4,%f0,%f4
1649*25c28e83SPiotr Jasiukajtis
1650*25c28e83SPiotr Jasiukajtis	fsubd	%f14,%f10,%f14
1651*25c28e83SPiotr Jasiukajtis
1652*25c28e83SPiotr Jasiukajtis	fsubd	%f24,%f20,%f24
1653*25c28e83SPiotr Jasiukajtis
1654*25c28e83SPiotr Jasiukajtis	fands	%f0,%f30,%f9		! save signbit
1655*25c28e83SPiotr Jasiukajtis
1656*25c28e83SPiotr Jasiukajtis	fands	%f10,%f30,%f19		! save signbit
1657*25c28e83SPiotr Jasiukajtis
1658*25c28e83SPiotr Jasiukajtis	fands	%f20,%f30,%f29		! save signbit
1659*25c28e83SPiotr Jasiukajtis
1660*25c28e83SPiotr Jasiukajtis	fabsd	%f0,%f0
1661*25c28e83SPiotr Jasiukajtis	std	%f0,[%fp+x0_1]
1662*25c28e83SPiotr Jasiukajtis
1663*25c28e83SPiotr Jasiukajtis	fabsd	%f10,%f10
1664*25c28e83SPiotr Jasiukajtis	std	%f10,[%fp+x1_1]
1665*25c28e83SPiotr Jasiukajtis
1666*25c28e83SPiotr Jasiukajtis	fabsd	%f20,%f20
1667*25c28e83SPiotr Jasiukajtis	std	%f20,[%fp+x2_1]
1668*25c28e83SPiotr Jasiukajtis
1669*25c28e83SPiotr Jasiukajtis	fsubd	%f4,%f2,%f2		! y
1670*25c28e83SPiotr Jasiukajtis
1671*25c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f12		! y
1672*25c28e83SPiotr Jasiukajtis
1673*25c28e83SPiotr Jasiukajtis	fsubd	%f24,%f22,%f22		! y
1674*25c28e83SPiotr Jasiukajtis
1675*25c28e83SPiotr Jasiukajtis	fcmpgt32 %f6,%f0,%l0
1676*25c28e83SPiotr Jasiukajtis
1677*25c28e83SPiotr Jasiukajtis	fcmpgt32 %f16,%f10,%l1
1678*25c28e83SPiotr Jasiukajtis
1679*25c28e83SPiotr Jasiukajtis	fcmpgt32 %f26,%f20,%l2
1680*25c28e83SPiotr Jasiukajtis
1681*25c28e83SPiotr Jasiukajtis! -- 16 byte aligned
1682*25c28e83SPiotr Jasiukajtis	fxors	%f2,%f9,%f2
1683*25c28e83SPiotr Jasiukajtis
1684*25c28e83SPiotr Jasiukajtis	fxors	%f12,%f19,%f12
1685*25c28e83SPiotr Jasiukajtis
1686*25c28e83SPiotr Jasiukajtis	fxors	%f22,%f29,%f22
1687*25c28e83SPiotr Jasiukajtis
1688*25c28e83SPiotr Jasiukajtis	fands	%f9,%f8,%f9		! if (n & 1) clear sign bit
1689*25c28e83SPiotr Jasiukajtis	andcc	%l0,2,%g0
1690*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE4
1691*25c28e83SPiotr Jasiukajtis
1692*25c28e83SPiotr Jasiukajtis! delay slot
1693*25c28e83SPiotr Jasiukajtis	fands	%f19,%f18,%f19		! if (n & 1) clear sign bit
1694*25c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
1695*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE2
1696*25c28e83SPiotr Jasiukajtis
1697*25c28e83SPiotr Jasiukajtis! delay slot
1698*25c28e83SPiotr Jasiukajtis	fands	%f29,%f28,%f29		! if (n & 1) clear sign bit
1699*25c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
1700*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE1
1701*25c28e83SPiotr Jasiukajtis
1702*25c28e83SPiotr Jasiukajtis! delay slot
1703*25c28e83SPiotr Jasiukajtis	fpadd32s %f0,%f31,%f8
1704*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
1705*25c28e83SPiotr Jasiukajtis	ld	[%fp+x0_1],%l0
1706*25c28e83SPiotr Jasiukajtis
1707*25c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
1708*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
1709*25c28e83SPiotr Jasiukajtis	ld	[%fp+x1_1],%l1
1710*25c28e83SPiotr Jasiukajtis
1711*25c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
1712*25c28e83SPiotr Jasiukajtis	ld	[%fp+x2_1],%l2
1713*25c28e83SPiotr Jasiukajtis
1714*25c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f4
1715*25c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
1716*25c28e83SPiotr Jasiukajtis
1717*25c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f14
1718*25c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
1719*25c28e83SPiotr Jasiukajtis
1720*25c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f24
1721*25c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
1722*25c28e83SPiotr Jasiukajtis
1723*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f0
1724*25c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
1725*25c28e83SPiotr Jasiukajtis
1726*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f10
1727*25c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
1728*25c28e83SPiotr Jasiukajtis
1729*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f20
1730*25c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
1731*25c28e83SPiotr Jasiukajtis
1732*25c28e83SPiotr Jasiukajtis	faddd	%f0,%f2,%f0
1733*25c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
1734*25c28e83SPiotr Jasiukajtis
1735*25c28e83SPiotr Jasiukajtis	faddd	%f10,%f12,%f10
1736*25c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
1737*25c28e83SPiotr Jasiukajtis
1738*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f22,%f20
1739*25c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
1740*25c28e83SPiotr Jasiukajtis
1741*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
1742*25c28e83SPiotr Jasiukajtis	add	%l0,%o3,%l0
1743*25c28e83SPiotr Jasiukajtis
1744*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
1745*25c28e83SPiotr Jasiukajtis	add	%l1,%o4,%l1
1746*25c28e83SPiotr Jasiukajtis
1747*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
1748*25c28e83SPiotr Jasiukajtis	add	%l2,%o5,%l2
1749*25c28e83SPiotr Jasiukajtis
1750*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
1751*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
1752*25c28e83SPiotr Jasiukajtis
1753*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
1754*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f34
1755*25c28e83SPiotr Jasiukajtis
1756*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
1757*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f36
1758*25c28e83SPiotr Jasiukajtis
1759*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
1760*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
1761*25c28e83SPiotr Jasiukajtis
1762*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
1763*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
1764*25c28e83SPiotr Jasiukajtis
1765*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
1766*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
1767*25c28e83SPiotr Jasiukajtis
1768*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
1769*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
1770*25c28e83SPiotr Jasiukajtis
1771*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
1772*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
1773*25c28e83SPiotr Jasiukajtis
1774*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
1775*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
1776*25c28e83SPiotr Jasiukajtis
1777*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
1778*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1779*25c28e83SPiotr Jasiukajtis
1780*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
1781*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1782*25c28e83SPiotr Jasiukajtis
1783*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
1784*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
1785*25c28e83SPiotr Jasiukajtis
1786*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
1787*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f2
1788*25c28e83SPiotr Jasiukajtis
1789*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
1790*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f12
1791*25c28e83SPiotr Jasiukajtis
1792*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
1793*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f22
1794*25c28e83SPiotr Jasiukajtis
1795*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
1796*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f0
1797*25c28e83SPiotr Jasiukajtis
1798*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f34,%f14
1799*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f10
1800*25c28e83SPiotr Jasiukajtis
1801*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f36,%f24
1802*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f20
1803*25c28e83SPiotr Jasiukajtis
1804*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f2,%f6
1805*25c28e83SPiotr Jasiukajtis
1806*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f12,%f16
1807*25c28e83SPiotr Jasiukajtis
1808*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f22,%f26
1809*25c28e83SPiotr Jasiukajtis
1810*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
1811*25c28e83SPiotr Jasiukajtis
1812*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
1813*25c28e83SPiotr Jasiukajtis
1814*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
1815*25c28e83SPiotr Jasiukajtis
1816*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
1817*25c28e83SPiotr Jasiukajtis
1818*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
1819*25c28e83SPiotr Jasiukajtis
1820*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
1821*25c28e83SPiotr Jasiukajtis
1822*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
1823*25c28e83SPiotr Jasiukajtis
1824*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16
1825*25c28e83SPiotr Jasiukajtis
1826*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f36,%f26
1827*25c28e83SPiotr Jasiukajtis
1828*25c28e83SPiotr Jasiukajtis.FIXSIGN:
1829*25c28e83SPiotr Jasiukajtis	ld	[%fp+n0],%o3
1830*25c28e83SPiotr Jasiukajtis	add	%l5,thresh-4,%g1
1831*25c28e83SPiotr Jasiukajtis
1832*25c28e83SPiotr Jasiukajtis	ld	[%fp+n1],%o4
1833*25c28e83SPiotr Jasiukajtis
1834*25c28e83SPiotr Jasiukajtis	ld	[%fp+n2],%o5
1835*25c28e83SPiotr Jasiukajtis	and	%o3,2,%o3
1836*25c28e83SPiotr Jasiukajtis
1837*25c28e83SPiotr Jasiukajtis	sll	%o3,2,%o3
1838*25c28e83SPiotr Jasiukajtis	and	%o4,2,%o4
1839*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
1840*25c28e83SPiotr Jasiukajtis
1841*25c28e83SPiotr Jasiukajtis	sll	%o4,2,%o4
1842*25c28e83SPiotr Jasiukajtis	and	%o5,2,%o5
1843*25c28e83SPiotr Jasiukajtis	ld	[%g1+%o3],%f8
1844*25c28e83SPiotr Jasiukajtis
1845*25c28e83SPiotr Jasiukajtis	sll	%o5,2,%o5
1846*25c28e83SPiotr Jasiukajtis	ld	[%g1+%o4],%f18
1847*25c28e83SPiotr Jasiukajtis
1848*25c28e83SPiotr Jasiukajtis	ld	[%g1+%o5],%f28
1849*25c28e83SPiotr Jasiukajtis	fxors	%f9,%f8,%f9
1850*25c28e83SPiotr Jasiukajtis
1851*25c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
1852*25c28e83SPiotr Jasiukajtis	fxors	%f29,%f28,%f29
1853*25c28e83SPiotr Jasiukajtis
1854*25c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f1
1855*25c28e83SPiotr Jasiukajtis	fxors	%f19,%f18,%f19
1856*25c28e83SPiotr Jasiukajtis
1857*25c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6		! tack on sign
1858*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
1859*25c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
1860*25c28e83SPiotr Jasiukajtis
1861*25c28e83SPiotr Jasiukajtis	fors	%f26,%f29,%f26		! tack on sign
1862*25c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
1863*25c28e83SPiotr Jasiukajtis
1864*25c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16		! tack on sign
1865*25c28e83SPiotr Jasiukajtis	st	%f26,[%o2]
1866*25c28e83SPiotr Jasiukajtis
1867*25c28e83SPiotr Jasiukajtis	st	%f27,[%o2+4]
1868*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
1869*25c28e83SPiotr Jasiukajtis
1870*25c28e83SPiotr Jasiukajtis	st	%f16,[%o1]
1871*25c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! hx &= ~0x80000000
1872*25c28e83SPiotr Jasiukajtis	bg,pt	%icc,.LOOP0
1873*25c28e83SPiotr Jasiukajtis
1874*25c28e83SPiotr Jasiukajtis! delay slot
1875*25c28e83SPiotr Jasiukajtis	st	%f17,[%o1+4]
1876*25c28e83SPiotr Jasiukajtis
1877*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.ENDLOOP0
1878*25c28e83SPiotr Jasiukajtis! delay slot
1879*25c28e83SPiotr Jasiukajtis	nop
1880*25c28e83SPiotr Jasiukajtis
1881*25c28e83SPiotr Jasiukajtis	.align	32
1882*25c28e83SPiotr Jasiukajtis.CASE1:
1883*25c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
1884*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
1885*25c28e83SPiotr Jasiukajtis	ld	[%fp+x0_1],%l0
1886*25c28e83SPiotr Jasiukajtis
1887*25c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f4
1888*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
1889*25c28e83SPiotr Jasiukajtis	ld	[%fp+x1_1],%l1
1890*25c28e83SPiotr Jasiukajtis
1891*25c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f14
1892*25c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
1893*25c28e83SPiotr Jasiukajtis
1894*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f0
1895*25c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
1896*25c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
1897*25c28e83SPiotr Jasiukajtis
1898*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f10
1899*25c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
1900*25c28e83SPiotr Jasiukajtis
1901*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f20
1902*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o5],%f36
1903*25c28e83SPiotr Jasiukajtis	add	%l5,%o5,%l2
1904*25c28e83SPiotr Jasiukajtis
1905*25c28e83SPiotr Jasiukajtis	faddd	%f0,%f2,%f0
1906*25c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
1907*25c28e83SPiotr Jasiukajtis
1908*25c28e83SPiotr Jasiukajtis	faddd	%f10,%f12,%f10
1909*25c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
1910*25c28e83SPiotr Jasiukajtis
1911*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f36,%f24
1912*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x10],%f26
1913*25c28e83SPiotr Jasiukajtis	add	%fp,%o5,%o5
1914*25c28e83SPiotr Jasiukajtis
1915*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
1916*25c28e83SPiotr Jasiukajtis	add	%l0,%o3,%l0
1917*25c28e83SPiotr Jasiukajtis
1918*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
1919*25c28e83SPiotr Jasiukajtis	add	%l1,%o4,%l1
1920*25c28e83SPiotr Jasiukajtis
1921*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
1922*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x20],%f36
1923*25c28e83SPiotr Jasiukajtis
1924*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
1925*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
1926*25c28e83SPiotr Jasiukajtis
1927*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
1928*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f34
1929*25c28e83SPiotr Jasiukajtis
1930*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
1931*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x30],%f26
1932*25c28e83SPiotr Jasiukajtis
1933*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
1934*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
1935*25c28e83SPiotr Jasiukajtis
1936*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
1937*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
1938*25c28e83SPiotr Jasiukajtis
1939*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f36,%f24
1940*25c28e83SPiotr Jasiukajtis	ldd	[%o5+x2_1],%f36
1941*25c28e83SPiotr Jasiukajtis
1942*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
1943*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
1944*25c28e83SPiotr Jasiukajtis
1945*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
1946*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
1947*25c28e83SPiotr Jasiukajtis
1948*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
1949*25c28e83SPiotr Jasiukajtis
1950*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
1951*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
1952*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f2
1953*25c28e83SPiotr Jasiukajtis
1954*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
1955*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
1956*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f12
1957*25c28e83SPiotr Jasiukajtis
1958*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
1959*25c28e83SPiotr Jasiukajtis
1960*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
1961*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f0
1962*25c28e83SPiotr Jasiukajtis
1963*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
1964*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f10
1965*25c28e83SPiotr Jasiukajtis
1966*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
1967*25c28e83SPiotr Jasiukajtis	std	%f22,[%fp+y2_0]
1968*25c28e83SPiotr Jasiukajtis
1969*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f34,%f14
1970*25c28e83SPiotr Jasiukajtis
1971*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f2,%f6
1972*25c28e83SPiotr Jasiukajtis
1973*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f12,%f16
1974*25c28e83SPiotr Jasiukajtis
1975*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
1976*25c28e83SPiotr Jasiukajtis
1977*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
1978*25c28e83SPiotr Jasiukajtis
1979*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
1980*25c28e83SPiotr Jasiukajtis
1981*25c28e83SPiotr Jasiukajtis	fmuld	%f36,%f24,%f24
1982*25c28e83SPiotr Jasiukajtis	ldd	[%o5+y2_0],%f22
1983*25c28e83SPiotr Jasiukajtis
1984*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
1985*25c28e83SPiotr Jasiukajtis
1986*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
1987*25c28e83SPiotr Jasiukajtis
1988*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f22,%f24
1989*25c28e83SPiotr Jasiukajtis
1990*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
1991*25c28e83SPiotr Jasiukajtis
1992*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16
1993*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
1994*25c28e83SPiotr Jasiukajtis
1995*25c28e83SPiotr Jasiukajtis! delay slot
1996*25c28e83SPiotr Jasiukajtis	faddd	%f36,%f24,%f26
1997*25c28e83SPiotr Jasiukajtis
1998*25c28e83SPiotr Jasiukajtis	.align	32
1999*25c28e83SPiotr Jasiukajtis.CASE2:
2000*25c28e83SPiotr Jasiukajtis	fpadd32s %f0,%f31,%f8
2001*25c28e83SPiotr Jasiukajtis	ld	[%fp+x0_1],%l0
2002*25c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
2003*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE3
2004*25c28e83SPiotr Jasiukajtis
2005*25c28e83SPiotr Jasiukajtis! delay slot
2006*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
2007*25c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
2008*25c28e83SPiotr Jasiukajtis	ld	[%fp+x2_1],%l2
2009*25c28e83SPiotr Jasiukajtis
2010*25c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f4
2011*25c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
2012*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
2013*25c28e83SPiotr Jasiukajtis
2014*25c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f24
2015*25c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
2016*25c28e83SPiotr Jasiukajtis
2017*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f0
2018*25c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
2019*25c28e83SPiotr Jasiukajtis
2020*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f20
2021*25c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
2022*25c28e83SPiotr Jasiukajtis
2023*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f10
2024*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o4],%f34
2025*25c28e83SPiotr Jasiukajtis	add	%l5,%o4,%l1
2026*25c28e83SPiotr Jasiukajtis
2027*25c28e83SPiotr Jasiukajtis	faddd	%f0,%f2,%f0
2028*25c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
2029*25c28e83SPiotr Jasiukajtis
2030*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f22,%f20
2031*25c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
2032*25c28e83SPiotr Jasiukajtis
2033*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f34,%f14
2034*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x10],%f16
2035*25c28e83SPiotr Jasiukajtis	add	%fp,%o4,%o4
2036*25c28e83SPiotr Jasiukajtis
2037*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
2038*25c28e83SPiotr Jasiukajtis	add	%l0,%o3,%l0
2039*25c28e83SPiotr Jasiukajtis
2040*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
2041*25c28e83SPiotr Jasiukajtis	add	%l2,%o5,%l2
2042*25c28e83SPiotr Jasiukajtis
2043*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
2044*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x20],%f34
2045*25c28e83SPiotr Jasiukajtis
2046*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
2047*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
2048*25c28e83SPiotr Jasiukajtis
2049*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
2050*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f36
2051*25c28e83SPiotr Jasiukajtis
2052*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2053*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x30],%f16
2054*25c28e83SPiotr Jasiukajtis
2055*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
2056*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
2057*25c28e83SPiotr Jasiukajtis
2058*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
2059*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
2060*25c28e83SPiotr Jasiukajtis
2061*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f34,%f14
2062*25c28e83SPiotr Jasiukajtis	ldd	[%o4+x1_1],%f34
2063*25c28e83SPiotr Jasiukajtis
2064*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
2065*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
2066*25c28e83SPiotr Jasiukajtis
2067*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
2068*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
2069*25c28e83SPiotr Jasiukajtis
2070*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2071*25c28e83SPiotr Jasiukajtis
2072*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
2073*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
2074*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f2
2075*25c28e83SPiotr Jasiukajtis
2076*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
2077*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
2078*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f22
2079*25c28e83SPiotr Jasiukajtis
2080*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
2081*25c28e83SPiotr Jasiukajtis
2082*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
2083*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f0
2084*25c28e83SPiotr Jasiukajtis
2085*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
2086*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f20
2087*25c28e83SPiotr Jasiukajtis
2088*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
2089*25c28e83SPiotr Jasiukajtis	std	%f12,[%fp+y1_0]
2090*25c28e83SPiotr Jasiukajtis
2091*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f36,%f24
2092*25c28e83SPiotr Jasiukajtis
2093*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f2,%f6
2094*25c28e83SPiotr Jasiukajtis
2095*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f22,%f26
2096*25c28e83SPiotr Jasiukajtis
2097*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2098*25c28e83SPiotr Jasiukajtis
2099*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
2100*25c28e83SPiotr Jasiukajtis
2101*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
2102*25c28e83SPiotr Jasiukajtis
2103*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
2104*25c28e83SPiotr Jasiukajtis	ldd	[%o4+y1_0],%f12
2105*25c28e83SPiotr Jasiukajtis
2106*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
2107*25c28e83SPiotr Jasiukajtis
2108*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
2109*25c28e83SPiotr Jasiukajtis
2110*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
2111*25c28e83SPiotr Jasiukajtis
2112*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
2113*25c28e83SPiotr Jasiukajtis
2114*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f36,%f26
2115*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
2116*25c28e83SPiotr Jasiukajtis
2117*25c28e83SPiotr Jasiukajtis! delay slot
2118*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f16
2119*25c28e83SPiotr Jasiukajtis
2120*25c28e83SPiotr Jasiukajtis	.align	32
2121*25c28e83SPiotr Jasiukajtis.CASE3:
2122*25c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f4
2123*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
2124*25c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
2125*25c28e83SPiotr Jasiukajtis
2126*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f10
2127*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o4],%f34
2128*25c28e83SPiotr Jasiukajtis	add	%l5,%o4,%l1
2129*25c28e83SPiotr Jasiukajtis
2130*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f0
2131*25c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
2132*25c28e83SPiotr Jasiukajtis
2133*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f20
2134*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o5],%f36
2135*25c28e83SPiotr Jasiukajtis	add	%l5,%o5,%l2
2136*25c28e83SPiotr Jasiukajtis
2137*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f34,%f14
2138*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x10],%f16
2139*25c28e83SPiotr Jasiukajtis	add	%fp,%o4,%o4
2140*25c28e83SPiotr Jasiukajtis
2141*25c28e83SPiotr Jasiukajtis	faddd	%f0,%f2,%f0
2142*25c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
2143*25c28e83SPiotr Jasiukajtis
2144*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f36,%f24
2145*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x10],%f26
2146*25c28e83SPiotr Jasiukajtis	add	%fp,%o5,%o5
2147*25c28e83SPiotr Jasiukajtis
2148*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
2149*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x20],%f34
2150*25c28e83SPiotr Jasiukajtis
2151*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
2152*25c28e83SPiotr Jasiukajtis	add	%l0,%o3,%l0
2153*25c28e83SPiotr Jasiukajtis
2154*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
2155*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x20],%f36
2156*25c28e83SPiotr Jasiukajtis
2157*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2158*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x30],%f16
2159*25c28e83SPiotr Jasiukajtis
2160*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
2161*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
2162*25c28e83SPiotr Jasiukajtis
2163*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
2164*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x30],%f26
2165*25c28e83SPiotr Jasiukajtis
2166*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f34,%f14
2167*25c28e83SPiotr Jasiukajtis	ldd	[%o4+x1_1],%f34
2168*25c28e83SPiotr Jasiukajtis
2169*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
2170*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
2171*25c28e83SPiotr Jasiukajtis
2172*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f36,%f24
2173*25c28e83SPiotr Jasiukajtis	ldd	[%o5+x2_1],%f36
2174*25c28e83SPiotr Jasiukajtis
2175*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2176*25c28e83SPiotr Jasiukajtis	std	%f12,[%fp+y1_0]
2177*25c28e83SPiotr Jasiukajtis
2178*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
2179*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
2180*25c28e83SPiotr Jasiukajtis
2181*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
2182*25c28e83SPiotr Jasiukajtis	std	%f22,[%fp+y2_0]
2183*25c28e83SPiotr Jasiukajtis
2184*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
2185*25c28e83SPiotr Jasiukajtis
2186*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
2187*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
2188*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f2
2189*25c28e83SPiotr Jasiukajtis
2190*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
2191*25c28e83SPiotr Jasiukajtis
2192*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2193*25c28e83SPiotr Jasiukajtis
2194*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
2195*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f0
2196*25c28e83SPiotr Jasiukajtis
2197*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
2198*25c28e83SPiotr Jasiukajtis
2199*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
2200*25c28e83SPiotr Jasiukajtis
2201*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f2,%f6
2202*25c28e83SPiotr Jasiukajtis
2203*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
2204*25c28e83SPiotr Jasiukajtis	ldd	[%o4+y1_0],%f12
2205*25c28e83SPiotr Jasiukajtis
2206*25c28e83SPiotr Jasiukajtis	fmuld	%f36,%f24,%f24
2207*25c28e83SPiotr Jasiukajtis	ldd	[%o5+y2_0],%f22
2208*25c28e83SPiotr Jasiukajtis
2209*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
2210*25c28e83SPiotr Jasiukajtis
2211*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
2212*25c28e83SPiotr Jasiukajtis
2213*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f22,%f24
2214*25c28e83SPiotr Jasiukajtis
2215*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
2216*25c28e83SPiotr Jasiukajtis
2217*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f16
2218*25c28e83SPiotr Jasiukajtis
2219*25c28e83SPiotr Jasiukajtis	faddd	%f36,%f24,%f26
2220*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
2221*25c28e83SPiotr Jasiukajtis
2222*25c28e83SPiotr Jasiukajtis! delay slot
2223*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
2224*25c28e83SPiotr Jasiukajtis
2225*25c28e83SPiotr Jasiukajtis	.align	32
2226*25c28e83SPiotr Jasiukajtis.CASE4:
2227*25c28e83SPiotr Jasiukajtis	fands	%f29,%f28,%f29		! if (n & 1) clear sign bit
2228*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
2229*25c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
2230*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE6
2231*25c28e83SPiotr Jasiukajtis
2232*25c28e83SPiotr Jasiukajtis! delay slot
2233*25c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
2234*25c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
2235*25c28e83SPiotr Jasiukajtis	ld	[%fp+x1_1],%l1
2236*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE5
2237*25c28e83SPiotr Jasiukajtis
2238*25c28e83SPiotr Jasiukajtis! delay slot
2239*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
2240*25c28e83SPiotr Jasiukajtis	ld	[%fp+x2_1],%l2
2241*25c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
2242*25c28e83SPiotr Jasiukajtis
2243*25c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f14
2244*25c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
2245*25c28e83SPiotr Jasiukajtis
2246*25c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f24
2247*25c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
2248*25c28e83SPiotr Jasiukajtis
2249*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f10
2250*25c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
2251*25c28e83SPiotr Jasiukajtis
2252*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f20
2253*25c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
2254*25c28e83SPiotr Jasiukajtis
2255*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f0
2256*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o3],%f32
2257*25c28e83SPiotr Jasiukajtis	add	%l5,%o3,%l0
2258*25c28e83SPiotr Jasiukajtis
2259*25c28e83SPiotr Jasiukajtis	faddd	%f10,%f12,%f10
2260*25c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
2261*25c28e83SPiotr Jasiukajtis
2262*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f22,%f20
2263*25c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
2264*25c28e83SPiotr Jasiukajtis
2265*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f32,%f4
2266*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x10],%f6
2267*25c28e83SPiotr Jasiukajtis	add	%fp,%o3,%o3
2268*25c28e83SPiotr Jasiukajtis
2269*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
2270*25c28e83SPiotr Jasiukajtis	add	%l1,%o4,%l1
2271*25c28e83SPiotr Jasiukajtis
2272*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
2273*25c28e83SPiotr Jasiukajtis	add	%l2,%o5,%l2
2274*25c28e83SPiotr Jasiukajtis
2275*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
2276*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x20],%f32
2277*25c28e83SPiotr Jasiukajtis
2278*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
2279*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f34
2280*25c28e83SPiotr Jasiukajtis
2281*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
2282*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f36
2283*25c28e83SPiotr Jasiukajtis
2284*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2285*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x30],%f6
2286*25c28e83SPiotr Jasiukajtis
2287*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
2288*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
2289*25c28e83SPiotr Jasiukajtis
2290*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
2291*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
2292*25c28e83SPiotr Jasiukajtis
2293*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
2294*25c28e83SPiotr Jasiukajtis	ldd	[%o3+x0_1],%f32
2295*25c28e83SPiotr Jasiukajtis
2296*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
2297*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
2298*25c28e83SPiotr Jasiukajtis
2299*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
2300*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
2301*25c28e83SPiotr Jasiukajtis
2302*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2303*25c28e83SPiotr Jasiukajtis
2304*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
2305*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
2306*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f12
2307*25c28e83SPiotr Jasiukajtis
2308*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
2309*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
2310*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f22
2311*25c28e83SPiotr Jasiukajtis
2312*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
2313*25c28e83SPiotr Jasiukajtis
2314*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
2315*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f10
2316*25c28e83SPiotr Jasiukajtis
2317*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
2318*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f20
2319*25c28e83SPiotr Jasiukajtis
2320*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f34,%f14
2321*25c28e83SPiotr Jasiukajtis	std	%f2,[%fp+y0_0]
2322*25c28e83SPiotr Jasiukajtis
2323*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f36,%f24
2324*25c28e83SPiotr Jasiukajtis
2325*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2326*25c28e83SPiotr Jasiukajtis
2327*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f12,%f16
2328*25c28e83SPiotr Jasiukajtis
2329*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f22,%f26
2330*25c28e83SPiotr Jasiukajtis
2331*25c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
2332*25c28e83SPiotr Jasiukajtis	ldd	[%o3+y0_0],%f2
2333*25c28e83SPiotr Jasiukajtis
2334*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
2335*25c28e83SPiotr Jasiukajtis
2336*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
2337*25c28e83SPiotr Jasiukajtis
2338*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
2339*25c28e83SPiotr Jasiukajtis
2340*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
2341*25c28e83SPiotr Jasiukajtis
2342*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
2343*25c28e83SPiotr Jasiukajtis
2344*25c28e83SPiotr Jasiukajtis	faddd	%f32,%f4,%f6
2345*25c28e83SPiotr Jasiukajtis
2346*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16
2347*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
2348*25c28e83SPiotr Jasiukajtis
2349*25c28e83SPiotr Jasiukajtis! delay slot
2350*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f36,%f26
2351*25c28e83SPiotr Jasiukajtis
2352*25c28e83SPiotr Jasiukajtis	.align	32
2353*25c28e83SPiotr Jasiukajtis.CASE5:
2354*25c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f14
2355*25c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
2356*25c28e83SPiotr Jasiukajtis
2357*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f0
2358*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o3],%f32
2359*25c28e83SPiotr Jasiukajtis	add	%l5,%o3,%l0
2360*25c28e83SPiotr Jasiukajtis
2361*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f10
2362*25c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
2363*25c28e83SPiotr Jasiukajtis
2364*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f20
2365*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o5],%f36
2366*25c28e83SPiotr Jasiukajtis	add	%l5,%o5,%l2
2367*25c28e83SPiotr Jasiukajtis
2368*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f32,%f4
2369*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x10],%f6
2370*25c28e83SPiotr Jasiukajtis	add	%fp,%o3,%o3
2371*25c28e83SPiotr Jasiukajtis
2372*25c28e83SPiotr Jasiukajtis	faddd	%f10,%f12,%f10
2373*25c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
2374*25c28e83SPiotr Jasiukajtis
2375*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f36,%f24
2376*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x10],%f26
2377*25c28e83SPiotr Jasiukajtis	add	%fp,%o5,%o5
2378*25c28e83SPiotr Jasiukajtis
2379*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
2380*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x20],%f32
2381*25c28e83SPiotr Jasiukajtis
2382*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
2383*25c28e83SPiotr Jasiukajtis	add	%l1,%o4,%l1
2384*25c28e83SPiotr Jasiukajtis
2385*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
2386*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x20],%f36
2387*25c28e83SPiotr Jasiukajtis
2388*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2389*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x30],%f6
2390*25c28e83SPiotr Jasiukajtis
2391*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
2392*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f34
2393*25c28e83SPiotr Jasiukajtis
2394*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
2395*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x30],%f26
2396*25c28e83SPiotr Jasiukajtis
2397*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
2398*25c28e83SPiotr Jasiukajtis	ldd	[%o3+x0_1],%f32
2399*25c28e83SPiotr Jasiukajtis
2400*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
2401*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
2402*25c28e83SPiotr Jasiukajtis
2403*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f36,%f24
2404*25c28e83SPiotr Jasiukajtis	ldd	[%o5+x2_1],%f36
2405*25c28e83SPiotr Jasiukajtis
2406*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2407*25c28e83SPiotr Jasiukajtis	std	%f2,[%fp+y0_0]
2408*25c28e83SPiotr Jasiukajtis
2409*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
2410*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
2411*25c28e83SPiotr Jasiukajtis
2412*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
2413*25c28e83SPiotr Jasiukajtis	std	%f22,[%fp+y2_0]
2414*25c28e83SPiotr Jasiukajtis
2415*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
2416*25c28e83SPiotr Jasiukajtis
2417*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
2418*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
2419*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f12
2420*25c28e83SPiotr Jasiukajtis
2421*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
2422*25c28e83SPiotr Jasiukajtis
2423*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2424*25c28e83SPiotr Jasiukajtis
2425*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
2426*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f10
2427*25c28e83SPiotr Jasiukajtis
2428*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f34,%f14
2429*25c28e83SPiotr Jasiukajtis
2430*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
2431*25c28e83SPiotr Jasiukajtis
2432*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f12,%f16
2433*25c28e83SPiotr Jasiukajtis
2434*25c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
2435*25c28e83SPiotr Jasiukajtis	ldd	[%o3+y0_0],%f2
2436*25c28e83SPiotr Jasiukajtis
2437*25c28e83SPiotr Jasiukajtis	fmuld	%f36,%f24,%f24
2438*25c28e83SPiotr Jasiukajtis	ldd	[%o5+y2_0],%f22
2439*25c28e83SPiotr Jasiukajtis
2440*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
2441*25c28e83SPiotr Jasiukajtis
2442*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
2443*25c28e83SPiotr Jasiukajtis
2444*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f22,%f24
2445*25c28e83SPiotr Jasiukajtis
2446*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
2447*25c28e83SPiotr Jasiukajtis
2448*25c28e83SPiotr Jasiukajtis	faddd	%f32,%f4,%f6
2449*25c28e83SPiotr Jasiukajtis
2450*25c28e83SPiotr Jasiukajtis	faddd	%f36,%f24,%f26
2451*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
2452*25c28e83SPiotr Jasiukajtis
2453*25c28e83SPiotr Jasiukajtis! delay slot
2454*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16
2455*25c28e83SPiotr Jasiukajtis
2456*25c28e83SPiotr Jasiukajtis	.align	32
2457*25c28e83SPiotr Jasiukajtis.CASE6:
2458*25c28e83SPiotr Jasiukajtis	ld	[%fp+x2_1],%l2
2459*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
2460*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,.CASE7
2461*25c28e83SPiotr Jasiukajtis! delay slot
2462*25c28e83SPiotr Jasiukajtis	fpadd32s %f20,%f31,%f28
2463*25c28e83SPiotr Jasiukajtis
2464*25c28e83SPiotr Jasiukajtis	fand	%f28,%f44,%f24
2465*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o3],%f32
2466*25c28e83SPiotr Jasiukajtis	add	%l5,%o3,%l0
2467*25c28e83SPiotr Jasiukajtis
2468*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f0
2469*25c28e83SPiotr Jasiukajtis	sub	%l2,%o7,%l2
2470*25c28e83SPiotr Jasiukajtis
2471*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f24,%f20
2472*25c28e83SPiotr Jasiukajtis	srl	%l2,10,%l2
2473*25c28e83SPiotr Jasiukajtis
2474*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f10
2475*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o4],%f34
2476*25c28e83SPiotr Jasiukajtis	add	%l5,%o4,%l1
2477*25c28e83SPiotr Jasiukajtis
2478*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f32,%f4
2479*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x10],%f6
2480*25c28e83SPiotr Jasiukajtis	add	%fp,%o3,%o3
2481*25c28e83SPiotr Jasiukajtis
2482*25c28e83SPiotr Jasiukajtis	faddd	%f20,%f22,%f20
2483*25c28e83SPiotr Jasiukajtis	andn	%l2,0x1f,%l2
2484*25c28e83SPiotr Jasiukajtis
2485*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f34,%f14
2486*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x10],%f16
2487*25c28e83SPiotr Jasiukajtis	add	%fp,%o4,%o4
2488*25c28e83SPiotr Jasiukajtis
2489*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
2490*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x20],%f32
2491*25c28e83SPiotr Jasiukajtis
2492*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f22
2493*25c28e83SPiotr Jasiukajtis	add	%l2,%o5,%l2
2494*25c28e83SPiotr Jasiukajtis
2495*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
2496*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x20],%f34
2497*25c28e83SPiotr Jasiukajtis
2498*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2499*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x30],%f6
2500*25c28e83SPiotr Jasiukajtis
2501*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f58,%f26
2502*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l2],%f36
2503*25c28e83SPiotr Jasiukajtis
2504*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2505*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x30],%f16
2506*25c28e83SPiotr Jasiukajtis
2507*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
2508*25c28e83SPiotr Jasiukajtis	ldd	[%o3+x0_1],%f32
2509*25c28e83SPiotr Jasiukajtis
2510*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f56,%f26
2511*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f62,%f24
2512*25c28e83SPiotr Jasiukajtis
2513*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f34,%f14
2514*25c28e83SPiotr Jasiukajtis	ldd	[%o4+x1_1],%f34
2515*25c28e83SPiotr Jasiukajtis
2516*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2517*25c28e83SPiotr Jasiukajtis	std	%f2,[%fp+y0_0]
2518*25c28e83SPiotr Jasiukajtis
2519*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f26,%f26
2520*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f60,%f24
2521*25c28e83SPiotr Jasiukajtis
2522*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2523*25c28e83SPiotr Jasiukajtis	std	%f12,[%fp+y1_0]
2524*25c28e83SPiotr Jasiukajtis
2525*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
2526*25c28e83SPiotr Jasiukajtis
2527*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f54,%f26
2528*25c28e83SPiotr Jasiukajtis	fmuld	%f22,%f24,%f24
2529*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l2],%f22
2530*25c28e83SPiotr Jasiukajtis
2531*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
2532*25c28e83SPiotr Jasiukajtis
2533*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2534*25c28e83SPiotr Jasiukajtis
2535*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f26,%f26
2536*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l2],%f20
2537*25c28e83SPiotr Jasiukajtis
2538*25c28e83SPiotr Jasiukajtis	fmuld	%f24,%f36,%f24
2539*25c28e83SPiotr Jasiukajtis
2540*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2541*25c28e83SPiotr Jasiukajtis
2542*25c28e83SPiotr Jasiukajtis	fmuld	%f26,%f22,%f26
2543*25c28e83SPiotr Jasiukajtis
2544*25c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
2545*25c28e83SPiotr Jasiukajtis	ldd	[%o3+y0_0],%f2
2546*25c28e83SPiotr Jasiukajtis
2547*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
2548*25c28e83SPiotr Jasiukajtis	ldd	[%o4+y1_0],%f12
2549*25c28e83SPiotr Jasiukajtis
2550*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f24,%f26
2551*25c28e83SPiotr Jasiukajtis
2552*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
2553*25c28e83SPiotr Jasiukajtis
2554*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
2555*25c28e83SPiotr Jasiukajtis
2556*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f20,%f26
2557*25c28e83SPiotr Jasiukajtis
2558*25c28e83SPiotr Jasiukajtis	faddd	%f32,%f4,%f6
2559*25c28e83SPiotr Jasiukajtis
2560*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f16
2561*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
2562*25c28e83SPiotr Jasiukajtis
2563*25c28e83SPiotr Jasiukajtis! delay slot
2564*25c28e83SPiotr Jasiukajtis	faddd	%f26,%f36,%f26
2565*25c28e83SPiotr Jasiukajtis
2566*25c28e83SPiotr Jasiukajtis	.align	32
2567*25c28e83SPiotr Jasiukajtis.CASE7:
2568*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f0
2569*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o3],%f32
2570*25c28e83SPiotr Jasiukajtis	add	%l5,%o3,%l0
2571*25c28e83SPiotr Jasiukajtis
2572*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f10
2573*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o4],%f34
2574*25c28e83SPiotr Jasiukajtis	add	%l5,%o4,%l1
2575*25c28e83SPiotr Jasiukajtis
2576*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f20,%f20
2577*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o5],%f36
2578*25c28e83SPiotr Jasiukajtis	add	%l5,%o5,%l2
2579*25c28e83SPiotr Jasiukajtis
2580*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f32,%f4
2581*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x10],%f6
2582*25c28e83SPiotr Jasiukajtis	add	%fp,%o3,%o3
2583*25c28e83SPiotr Jasiukajtis
2584*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f34,%f14
2585*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x10],%f16
2586*25c28e83SPiotr Jasiukajtis	add	%fp,%o4,%o4
2587*25c28e83SPiotr Jasiukajtis
2588*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f36,%f24
2589*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x10],%f26
2590*25c28e83SPiotr Jasiukajtis	add	%fp,%o5,%o5
2591*25c28e83SPiotr Jasiukajtis
2592*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
2593*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x20],%f32
2594*25c28e83SPiotr Jasiukajtis
2595*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
2596*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x20],%f34
2597*25c28e83SPiotr Jasiukajtis
2598*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
2599*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x20],%f36
2600*25c28e83SPiotr Jasiukajtis
2601*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2602*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x30],%f6
2603*25c28e83SPiotr Jasiukajtis
2604*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2605*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x30],%f16
2606*25c28e83SPiotr Jasiukajtis
2607*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
2608*25c28e83SPiotr Jasiukajtis	ldd	[%l2+0x30],%f26
2609*25c28e83SPiotr Jasiukajtis
2610*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
2611*25c28e83SPiotr Jasiukajtis	ldd	[%o3+x0_1],%f32
2612*25c28e83SPiotr Jasiukajtis
2613*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f34,%f14
2614*25c28e83SPiotr Jasiukajtis	ldd	[%o4+x1_1],%f34
2615*25c28e83SPiotr Jasiukajtis
2616*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f36,%f24
2617*25c28e83SPiotr Jasiukajtis	ldd	[%o5+x2_1],%f36
2618*25c28e83SPiotr Jasiukajtis
2619*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2620*25c28e83SPiotr Jasiukajtis	std	%f2,[%fp+y0_0]
2621*25c28e83SPiotr Jasiukajtis
2622*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2623*25c28e83SPiotr Jasiukajtis	std	%f12,[%fp+y1_0]
2624*25c28e83SPiotr Jasiukajtis
2625*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
2626*25c28e83SPiotr Jasiukajtis	std	%f22,[%fp+y2_0]
2627*25c28e83SPiotr Jasiukajtis
2628*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
2629*25c28e83SPiotr Jasiukajtis
2630*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
2631*25c28e83SPiotr Jasiukajtis
2632*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f26,%f24
2633*25c28e83SPiotr Jasiukajtis
2634*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2635*25c28e83SPiotr Jasiukajtis
2636*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2637*25c28e83SPiotr Jasiukajtis
2638*25c28e83SPiotr Jasiukajtis	fmuld	%f20,%f24,%f24
2639*25c28e83SPiotr Jasiukajtis
2640*25c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
2641*25c28e83SPiotr Jasiukajtis	ldd	[%o3+y0_0],%f2
2642*25c28e83SPiotr Jasiukajtis
2643*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
2644*25c28e83SPiotr Jasiukajtis	ldd	[%o4+y1_0],%f12
2645*25c28e83SPiotr Jasiukajtis
2646*25c28e83SPiotr Jasiukajtis	fmuld	%f36,%f24,%f24
2647*25c28e83SPiotr Jasiukajtis	ldd	[%o5+y2_0],%f22
2648*25c28e83SPiotr Jasiukajtis
2649*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
2650*25c28e83SPiotr Jasiukajtis
2651*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
2652*25c28e83SPiotr Jasiukajtis
2653*25c28e83SPiotr Jasiukajtis	faddd	%f24,%f22,%f24
2654*25c28e83SPiotr Jasiukajtis
2655*25c28e83SPiotr Jasiukajtis	faddd	%f32,%f4,%f6
2656*25c28e83SPiotr Jasiukajtis
2657*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f16
2658*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.FIXSIGN
2659*25c28e83SPiotr Jasiukajtis
2660*25c28e83SPiotr Jasiukajtis! delay slot
2661*25c28e83SPiotr Jasiukajtis	faddd	%f36,%f24,%f26
2662*25c28e83SPiotr Jasiukajtis
2663*25c28e83SPiotr Jasiukajtis
2664*25c28e83SPiotr Jasiukajtis	.align	32
2665*25c28e83SPiotr Jasiukajtis.ENDLOOP2:
2666*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f40,%f12
2667*25c28e83SPiotr Jasiukajtis	add	%l5,thresh,%g1
2668*25c28e83SPiotr Jasiukajtis	faddd	%f12,%f42,%f12
2669*25c28e83SPiotr Jasiukajtis	st	%f13,[%fp+n1]
2670*25c28e83SPiotr Jasiukajtis	fsubd	%f12,%f42,%f12		! n
2671*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f46,%f14
2672*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f14
2673*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f48,%f16
2674*25c28e83SPiotr Jasiukajtis	fsubd	%f14,%f16,%f10
2675*25c28e83SPiotr Jasiukajtis	ld	[%fp+n1],%o4
2676*25c28e83SPiotr Jasiukajtis	fsubd	%f14,%f10,%f34
2677*25c28e83SPiotr Jasiukajtis	and	%o4,1,%o4
2678*25c28e83SPiotr Jasiukajtis	fsubd	%f34,%f16,%f34
2679*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f50,%f18
2680*25c28e83SPiotr Jasiukajtis	sll	%o4,3,%o4
2681*25c28e83SPiotr Jasiukajtis	fsubd	%f18,%f34,%f18
2682*25c28e83SPiotr Jasiukajtis	ld	[%g1+%o4],%f16
2683*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f18,%f14
2684*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f34
2685*25c28e83SPiotr Jasiukajtis	add	%l5,thresh+4,%o7
2686*25c28e83SPiotr Jasiukajtis	fsubd	%f34,%f18,%f34
2687*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f52,%f12
2688*25c28e83SPiotr Jasiukajtis	fsubd	%f12,%f34,%f12
2689*25c28e83SPiotr Jasiukajtis	ld	[%o7+%o4],%f18
2690*25c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f10		! x
2691*25c28e83SPiotr Jasiukajtis	fsubd	%f14,%f10,%f14
2692*25c28e83SPiotr Jasiukajtis	fands	%f10,%f30,%f19		! save signbit
2693*25c28e83SPiotr Jasiukajtis	fabsd	%f10,%f10
2694*25c28e83SPiotr Jasiukajtis	std	%f10,[%fp+x1_1]
2695*25c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f12		! y
2696*25c28e83SPiotr Jasiukajtis	fcmpgt32 %f16,%f10,%l1
2697*25c28e83SPiotr Jasiukajtis	fxors	%f12,%f19,%f12
2698*25c28e83SPiotr Jasiukajtis	fands	%f19,%f18,%f19		! if (n & 1) clear sign bit
2699*25c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
2700*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,1f
2701*25c28e83SPiotr Jasiukajtis! delay slot
2702*25c28e83SPiotr Jasiukajtis	nop
2703*25c28e83SPiotr Jasiukajtis	fpadd32s %f10,%f31,%f18
2704*25c28e83SPiotr Jasiukajtis	ld	[%fp+x1_1],%l1
2705*25c28e83SPiotr Jasiukajtis	fand	%f18,%f44,%f14
2706*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
2707*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
2708*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f14,%f10
2709*25c28e83SPiotr Jasiukajtis	sub	%l1,%o7,%l1
2710*25c28e83SPiotr Jasiukajtis	srl	%l1,10,%l1
2711*25c28e83SPiotr Jasiukajtis	faddd	%f10,%f12,%f10
2712*25c28e83SPiotr Jasiukajtis	andn	%l1,0x1f,%l1
2713*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f12
2714*25c28e83SPiotr Jasiukajtis	add	%l1,%o4,%l1
2715*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f58,%f16
2716*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l1],%f34
2717*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f56,%f16
2718*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f62,%f14
2719*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f16,%f16
2720*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f60,%f14
2721*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f54,%f16
2722*25c28e83SPiotr Jasiukajtis	fmuld	%f12,%f14,%f14
2723*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l1],%f12
2724*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f16,%f16
2725*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l1],%f10
2726*25c28e83SPiotr Jasiukajtis	fmuld	%f14,%f34,%f14
2727*25c28e83SPiotr Jasiukajtis	fmuld	%f16,%f12,%f16
2728*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f14,%f16
2729*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f10,%f16
2730*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
2731*25c28e83SPiotr Jasiukajtis	faddd	%f16,%f34,%f16
2732*25c28e83SPiotr Jasiukajtis1:
2733*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f10
2734*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o4],%f34
2735*25c28e83SPiotr Jasiukajtis	add	%l5,%o4,%l1
2736*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f34,%f14
2737*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x10],%f16
2738*25c28e83SPiotr Jasiukajtis	add	%fp,%o4,%o4
2739*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
2740*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x20],%f34
2741*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2742*25c28e83SPiotr Jasiukajtis	ldd	[%l1+0x30],%f16
2743*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f34,%f14
2744*25c28e83SPiotr Jasiukajtis	ldd	[%o4+x1_1],%f34
2745*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2746*25c28e83SPiotr Jasiukajtis	std	%f12,[%fp+y1_0]
2747*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f16,%f14
2748*25c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
2749*25c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
2750*25c28e83SPiotr Jasiukajtis	ldd	[%o4+y1_0],%f12
2751*25c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
2752*25c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f16
2753*25c28e83SPiotr Jasiukajtis2:
2754*25c28e83SPiotr Jasiukajtis	add	%l5,thresh-4,%g1
2755*25c28e83SPiotr Jasiukajtis	ld	[%fp+n1],%o4
2756*25c28e83SPiotr Jasiukajtis	and	%o4,2,%o4
2757*25c28e83SPiotr Jasiukajtis	sll	%o4,2,%o4
2758*25c28e83SPiotr Jasiukajtis	ld	[%g1+%o4],%f18
2759*25c28e83SPiotr Jasiukajtis	fxors	%f19,%f18,%f19
2760*25c28e83SPiotr Jasiukajtis	fors	%f16,%f19,%f16		! tack on sign
2761*25c28e83SPiotr Jasiukajtis	st	%f16,[%o1]
2762*25c28e83SPiotr Jasiukajtis	st	%f17,[%o1+4]
2763*25c28e83SPiotr Jasiukajtis
2764*25c28e83SPiotr Jasiukajtis.ENDLOOP1:
2765*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f40,%f2
2766*25c28e83SPiotr Jasiukajtis	add	%l5,thresh,%g1
2767*25c28e83SPiotr Jasiukajtis	faddd	%f2,%f42,%f2
2768*25c28e83SPiotr Jasiukajtis	st	%f3,[%fp+n0]
2769*25c28e83SPiotr Jasiukajtis	fsubd	%f2,%f42,%f2		! n
2770*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f46,%f4
2771*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f4
2772*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f48,%f6
2773*25c28e83SPiotr Jasiukajtis	fsubd	%f4,%f6,%f0
2774*25c28e83SPiotr Jasiukajtis	ld	[%fp+n0],%o3
2775*25c28e83SPiotr Jasiukajtis	fsubd	%f4,%f0,%f32
2776*25c28e83SPiotr Jasiukajtis	and	%o3,1,%o3
2777*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f6,%f32
2778*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f50,%f8
2779*25c28e83SPiotr Jasiukajtis	sll	%o3,3,%o3
2780*25c28e83SPiotr Jasiukajtis	fsubd	%f8,%f32,%f8
2781*25c28e83SPiotr Jasiukajtis	ld	[%g1+%o3],%f6
2782*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f8,%f4
2783*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f32
2784*25c28e83SPiotr Jasiukajtis	add	%l5,thresh+4,%o7
2785*25c28e83SPiotr Jasiukajtis	fsubd	%f32,%f8,%f32
2786*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f52,%f2
2787*25c28e83SPiotr Jasiukajtis	fsubd	%f2,%f32,%f2
2788*25c28e83SPiotr Jasiukajtis	ld	[%o7+%o3],%f8
2789*25c28e83SPiotr Jasiukajtis	fsubd	%f4,%f2,%f0		! x
2790*25c28e83SPiotr Jasiukajtis	fsubd	%f4,%f0,%f4
2791*25c28e83SPiotr Jasiukajtis	fands	%f0,%f30,%f9		! save signbit
2792*25c28e83SPiotr Jasiukajtis	fabsd	%f0,%f0
2793*25c28e83SPiotr Jasiukajtis	std	%f0,[%fp+x0_1]
2794*25c28e83SPiotr Jasiukajtis	fsubd	%f4,%f2,%f2		! y
2795*25c28e83SPiotr Jasiukajtis	fcmpgt32 %f6,%f0,%l0
2796*25c28e83SPiotr Jasiukajtis	fxors	%f2,%f9,%f2
2797*25c28e83SPiotr Jasiukajtis	fands	%f9,%f8,%f9		! if (n & 1) clear sign bit
2798*25c28e83SPiotr Jasiukajtis	andcc	%l0,2,%g0
2799*25c28e83SPiotr Jasiukajtis	bne,pn	%icc,1f
2800*25c28e83SPiotr Jasiukajtis! delay slot
2801*25c28e83SPiotr Jasiukajtis	nop
2802*25c28e83SPiotr Jasiukajtis	fpadd32s %f0,%f31,%f8
2803*25c28e83SPiotr Jasiukajtis	ld	[%fp+x0_1],%l0
2804*25c28e83SPiotr Jasiukajtis	fand	%f8,%f44,%f4
2805*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fc3c000),%o7
2806*25c28e83SPiotr Jasiukajtis	add	%l3,8,%g1
2807*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f0
2808*25c28e83SPiotr Jasiukajtis	sub	%l0,%o7,%l0
2809*25c28e83SPiotr Jasiukajtis	srl	%l0,10,%l0
2810*25c28e83SPiotr Jasiukajtis	faddd	%f0,%f2,%f0
2811*25c28e83SPiotr Jasiukajtis	andn	%l0,0x1f,%l0
2812*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f2
2813*25c28e83SPiotr Jasiukajtis	add	%l0,%o3,%l0
2814*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f58,%f6
2815*25c28e83SPiotr Jasiukajtis	ldd	[%l3+%l0],%f32
2816*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f56,%f6
2817*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f62,%f4
2818*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
2819*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f60,%f4
2820*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f54,%f6
2821*25c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
2822*25c28e83SPiotr Jasiukajtis	ldd	[%g1+%l0],%f2
2823*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
2824*25c28e83SPiotr Jasiukajtis	ldd	[%l4+%l0],%f0
2825*25c28e83SPiotr Jasiukajtis	fmuld	%f4,%f32,%f4
2826*25c28e83SPiotr Jasiukajtis	fmuld	%f6,%f2,%f6
2827*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
2828*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
2829*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
2830*25c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
2831*25c28e83SPiotr Jasiukajtis1:
2832*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f0,%f0
2833*25c28e83SPiotr Jasiukajtis	ldd	[%l5+%o3],%f32
2834*25c28e83SPiotr Jasiukajtis	add	%l5,%o3,%l0
2835*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f32,%f4
2836*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x10],%f6
2837*25c28e83SPiotr Jasiukajtis	add	%fp,%o3,%o3
2838*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
2839*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x20],%f32
2840*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2841*25c28e83SPiotr Jasiukajtis	ldd	[%l0+0x30],%f6
2842*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
2843*25c28e83SPiotr Jasiukajtis	ldd	[%o3+x0_1],%f32
2844*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2845*25c28e83SPiotr Jasiukajtis	std	%f2,[%fp+y0_0]
2846*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f6,%f4
2847*25c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
2848*25c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
2849*25c28e83SPiotr Jasiukajtis	ldd	[%o3+y0_0],%f2
2850*25c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
2851*25c28e83SPiotr Jasiukajtis	faddd	%f32,%f4,%f6
2852*25c28e83SPiotr Jasiukajtis2:
2853*25c28e83SPiotr Jasiukajtis	add	%l5,thresh-4,%g1
2854*25c28e83SPiotr Jasiukajtis	ld	[%fp+n0],%o3
2855*25c28e83SPiotr Jasiukajtis	and	%o3,2,%o3
2856*25c28e83SPiotr Jasiukajtis	sll	%o3,2,%o3
2857*25c28e83SPiotr Jasiukajtis	ld	[%g1+%o3],%f8
2858*25c28e83SPiotr Jasiukajtis	fxors	%f9,%f8,%f9
2859*25c28e83SPiotr Jasiukajtis	fors	%f6,%f9,%f6		! tack on sign
2860*25c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
2861*25c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
2862*25c28e83SPiotr Jasiukajtis
2863*25c28e83SPiotr Jasiukajtis.ENDLOOP0:
2864*25c28e83SPiotr Jasiukajtis
2865*25c28e83SPiotr Jasiukajtis! check for huge arguments remaining
2866*25c28e83SPiotr Jasiukajtis
2867*25c28e83SPiotr Jasiukajtis	tst	LIM_l6
2868*25c28e83SPiotr Jasiukajtis	be,pt	%icc,.exit
2869*25c28e83SPiotr Jasiukajtis! delay slot
2870*25c28e83SPiotr Jasiukajtis	nop
2871*25c28e83SPiotr Jasiukajtis
2872*25c28e83SPiotr Jasiukajtis! ========== huge range (use C code) ==========
2873*25c28e83SPiotr Jasiukajtis
2874*25c28e83SPiotr Jasiukajtis#ifdef __sparcv9
2875*25c28e83SPiotr Jasiukajtis	ldx	[%fp+xsave],%o1
2876*25c28e83SPiotr Jasiukajtis	ldx	[%fp+ysave],%o3
2877*25c28e83SPiotr Jasiukajtis#else
2878*25c28e83SPiotr Jasiukajtis	ld	[%fp+xsave],%o1
2879*25c28e83SPiotr Jasiukajtis	ld	[%fp+ysave],%o3
2880*25c28e83SPiotr Jasiukajtis#endif
2881*25c28e83SPiotr Jasiukajtis	ld	[%fp+nsave],%o0
2882*25c28e83SPiotr Jasiukajtis	ld	[%fp+sxsave],%o2
2883*25c28e83SPiotr Jasiukajtis	ld	[%fp+sysave],%o4
2884*25c28e83SPiotr Jasiukajtis	sra	%o2,0,%o2		! sign-extend for V9
2885*25c28e83SPiotr Jasiukajtis	sra	%o4,0,%o4
2886*25c28e83SPiotr Jasiukajtis	call	__vlibm_vsin_big
2887*25c28e83SPiotr Jasiukajtis	mov	%l7,%o5			! delay slot
2888*25c28e83SPiotr Jasiukajtis
2889*25c28e83SPiotr Jasiukajtis.exit:
2890*25c28e83SPiotr Jasiukajtis	ret
2891*25c28e83SPiotr Jasiukajtis	restore
2892*25c28e83SPiotr Jasiukajtis
2893*25c28e83SPiotr Jasiukajtis
2894*25c28e83SPiotr Jasiukajtis	.align	32
2895*25c28e83SPiotr Jasiukajtis.SKIP0:
2896*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
2897*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP0
2898*25c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
2899*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
2900*25c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l0		! hx &= ~0x80000000
2901*25c28e83SPiotr Jasiukajtis	fmovs	%f10,%f0
2902*25c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f1
2903*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP0
2904*25c28e83SPiotr Jasiukajtis! delay slot
2905*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
2906*25c28e83SPiotr Jasiukajtis
2907*25c28e83SPiotr Jasiukajtis
2908*25c28e83SPiotr Jasiukajtis	.align	32
2909*25c28e83SPiotr Jasiukajtis.SKIP1:
2910*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
2911*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP1
2912*25c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
2913*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
2914*25c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l1		! hx &= ~0x80000000
2915*25c28e83SPiotr Jasiukajtis	fmovs	%f20,%f10
2916*25c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f11
2917*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP1
2918*25c28e83SPiotr Jasiukajtis! delay slot
2919*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
2920*25c28e83SPiotr Jasiukajtis
2921*25c28e83SPiotr Jasiukajtis
2922*25c28e83SPiotr Jasiukajtis	.align	32
2923*25c28e83SPiotr Jasiukajtis.SKIP2:
2924*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
2925*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP2
2926*25c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
2927*25c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
2928*25c28e83SPiotr Jasiukajtis	ld	[%i1],%l2
2929*25c28e83SPiotr Jasiukajtis	ld	[%i1],%f20
2930*25c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f21
2931*25c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l2		! hx &= ~0x80000000
2932*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP2
2933*25c28e83SPiotr Jasiukajtis! delay slot
2934*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
2935*25c28e83SPiotr Jasiukajtis
2936*25c28e83SPiotr Jasiukajtis
2937*25c28e83SPiotr Jasiukajtis	.align	32
2938*25c28e83SPiotr Jasiukajtis.BIG0:
2939*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o7
2940*25c28e83SPiotr Jasiukajtis	cmp	%l0,%o7
2941*25c28e83SPiotr Jasiukajtis	bl,a,pt	%icc,1f			! if hx < 0x7ff00000
2942*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
2943*25c28e83SPiotr Jasiukajtis	mov	%l7,LIM_l6		! set biguns flag or
2944*25c28e83SPiotr Jasiukajtis	fsubd	%f0,%f0,%f0		! y = x - x
2945*25c28e83SPiotr Jasiukajtis	st	%f0,[%o0]
2946*25c28e83SPiotr Jasiukajtis	st	%f1,[%o0+4]
2947*25c28e83SPiotr Jasiukajtis1:
2948*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
2949*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP0
2950*25c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
2951*25c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l0		! hx &= ~0x80000000
2952*25c28e83SPiotr Jasiukajtis	fmovd	%f10,%f0
2953*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP0
2954*25c28e83SPiotr Jasiukajtis! delay slot
2955*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
2956*25c28e83SPiotr Jasiukajtis
2957*25c28e83SPiotr Jasiukajtis
2958*25c28e83SPiotr Jasiukajtis	.align	32
2959*25c28e83SPiotr Jasiukajtis.BIG1:
2960*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o7
2961*25c28e83SPiotr Jasiukajtis	cmp	%l1,%o7
2962*25c28e83SPiotr Jasiukajtis	bl,a,pt	%icc,1f			! if hx < 0x7ff00000
2963*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
2964*25c28e83SPiotr Jasiukajtis	mov	%l7,LIM_l6		! set biguns flag or
2965*25c28e83SPiotr Jasiukajtis	fsubd	%f10,%f10,%f10		! y = x - x
2966*25c28e83SPiotr Jasiukajtis	st	%f10,[%o1]
2967*25c28e83SPiotr Jasiukajtis	st	%f11,[%o1+4]
2968*25c28e83SPiotr Jasiukajtis1:
2969*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
2970*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP1
2971*25c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
2972*25c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l1		! hx &= ~0x80000000
2973*25c28e83SPiotr Jasiukajtis	fmovd	%f20,%f10
2974*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP1
2975*25c28e83SPiotr Jasiukajtis! delay slot
2976*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
2977*25c28e83SPiotr Jasiukajtis
2978*25c28e83SPiotr Jasiukajtis
2979*25c28e83SPiotr Jasiukajtis	.align	32
2980*25c28e83SPiotr Jasiukajtis.BIG2:
2981*25c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o7
2982*25c28e83SPiotr Jasiukajtis	cmp	%l2,%o7
2983*25c28e83SPiotr Jasiukajtis	bl,a,pt	%icc,1f			! if hx < 0x7ff00000
2984*25c28e83SPiotr Jasiukajtis! delay slot, annulled if branch not taken
2985*25c28e83SPiotr Jasiukajtis	mov	%l7,LIM_l6		! set biguns flag or
2986*25c28e83SPiotr Jasiukajtis	fsubd	%f20,%f20,%f20		! y = x - x
2987*25c28e83SPiotr Jasiukajtis	st	%f20,[%o2]
2988*25c28e83SPiotr Jasiukajtis	st	%f21,[%o2+4]
2989*25c28e83SPiotr Jasiukajtis1:
2990*25c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
2991*25c28e83SPiotr Jasiukajtis	ble,pn	%icc,.ENDLOOP2
2992*25c28e83SPiotr Jasiukajtis! delay slot
2993*25c28e83SPiotr Jasiukajtis	nop
2994*25c28e83SPiotr Jasiukajtis	ld	[%i1],%l2
2995*25c28e83SPiotr Jasiukajtis	ld	[%i1],%f20
2996*25c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f21
2997*25c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l2		! hx &= ~0x80000000
2998*25c28e83SPiotr Jasiukajtis	ba,pt	%icc,.LOOP2
2999*25c28e83SPiotr Jasiukajtis! delay slot
3000*25c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
3001*25c28e83SPiotr Jasiukajtis
3002*25c28e83SPiotr Jasiukajtis	SET_SIZE(__vsin)
3003*25c28e83SPiotr Jasiukajtis
3004