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