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