125c28e83SPiotr Jasiukajtis/*
225c28e83SPiotr Jasiukajtis * CDDL HEADER START
325c28e83SPiotr Jasiukajtis *
425c28e83SPiotr Jasiukajtis * The contents of this file are subject to the terms of the
525c28e83SPiotr Jasiukajtis * Common Development and Distribution License (the "License").
625c28e83SPiotr Jasiukajtis * You may not use this file except in compliance with the License.
725c28e83SPiotr Jasiukajtis *
825c28e83SPiotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
925c28e83SPiotr Jasiukajtis * or http://www.opensolaris.org/os/licensing.
1025c28e83SPiotr Jasiukajtis * See the License for the specific language governing permissions
1125c28e83SPiotr Jasiukajtis * and limitations under the License.
1225c28e83SPiotr Jasiukajtis *
1325c28e83SPiotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each
1425c28e83SPiotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1525c28e83SPiotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the
1625c28e83SPiotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying
1725c28e83SPiotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner]
1825c28e83SPiotr Jasiukajtis *
1925c28e83SPiotr Jasiukajtis * CDDL HEADER END
2025c28e83SPiotr Jasiukajtis */
2125c28e83SPiotr Jasiukajtis/*
2225c28e83SPiotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
2325c28e83SPiotr Jasiukajtis */
2425c28e83SPiotr Jasiukajtis/*
2525c28e83SPiotr Jasiukajtis * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2625c28e83SPiotr Jasiukajtis * Use is subject to license terms.
2725c28e83SPiotr Jasiukajtis */
2825c28e83SPiotr Jasiukajtis
2925c28e83SPiotr Jasiukajtis	.file	"__vcos_ultra3.S"
3025c28e83SPiotr Jasiukajtis
3125c28e83SPiotr Jasiukajtis#include "libm.h"
3225c28e83SPiotr Jasiukajtis	.weak	__vcos
3325c28e83SPiotr Jasiukajtis	.type	__vcos,#function
3425c28e83SPiotr Jasiukajtis	__vcos = __vcos_ultra3
3525c28e83SPiotr Jasiukajtis
3625c28e83SPiotr Jasiukajtis	RO_DATA
3725c28e83SPiotr Jasiukajtis	.align	64
3825c28e83SPiotr Jasiukajtisconstants:
3925c28e83SPiotr Jasiukajtis	.word	0x42c80000,0x00000000	! 3 * 2^44
4025c28e83SPiotr Jasiukajtis	.word	0x43380000,0x00000000	! 3 * 2^51
4125c28e83SPiotr Jasiukajtis	.word	0x3fe45f30,0x6dc9c883	! invpio2
4225c28e83SPiotr Jasiukajtis	.word	0x3ff921fb,0x54442c00	! pio2_1
4325c28e83SPiotr Jasiukajtis	.word	0x3d318469,0x898cc400	! pio2_2
4425c28e83SPiotr Jasiukajtis	.word	0x3a71701b,0x839a2520	! pio2_3
4525c28e83SPiotr Jasiukajtis	.word	0xbfc55555,0x55555533	! pp1
4625c28e83SPiotr Jasiukajtis	.word	0x3f811111,0x10e7d53b	! pp2
4725c28e83SPiotr Jasiukajtis	.word	0xbf2a0167,0xe6b3cf9b	! pp3
4825c28e83SPiotr Jasiukajtis	.word	0xbfdfffff,0xffffff65	! qq1
4925c28e83SPiotr Jasiukajtis	.word	0x3fa55555,0x54f88ed0	! qq2
5025c28e83SPiotr Jasiukajtis	.word	0xbf56c12c,0xdd185f60	! qq3
5125c28e83SPiotr Jasiukajtis
5225c28e83SPiotr Jasiukajtis! local storage indices
5325c28e83SPiotr Jasiukajtis
5425c28e83SPiotr Jasiukajtis#define xsave		STACK_BIAS-0x8
5525c28e83SPiotr Jasiukajtis#define ysave		STACK_BIAS-0x10
5625c28e83SPiotr Jasiukajtis#define nsave		STACK_BIAS-0x14
5725c28e83SPiotr Jasiukajtis#define sxsave		STACK_BIAS-0x18
5825c28e83SPiotr Jasiukajtis#define sysave		STACK_BIAS-0x1c
5925c28e83SPiotr Jasiukajtis#define biguns		STACK_BIAS-0x20
6025c28e83SPiotr Jasiukajtis#define nk3		STACK_BIAS-0x24
6125c28e83SPiotr Jasiukajtis#define nk2		STACK_BIAS-0x28
6225c28e83SPiotr Jasiukajtis#define nk1		STACK_BIAS-0x2c
6325c28e83SPiotr Jasiukajtis#define nk0		STACK_BIAS-0x30
6425c28e83SPiotr Jasiukajtis#define junk		STACK_BIAS-0x38
6525c28e83SPiotr Jasiukajtis! sizeof temp storage - must be a multiple of 16 for V9
6625c28e83SPiotr Jasiukajtis#define tmps		0x40
6725c28e83SPiotr Jasiukajtis
6825c28e83SPiotr Jasiukajtis! register use
6925c28e83SPiotr Jasiukajtis
7025c28e83SPiotr Jasiukajtis! i0  n
7125c28e83SPiotr Jasiukajtis! i1  x
7225c28e83SPiotr Jasiukajtis! i2  stridex
7325c28e83SPiotr Jasiukajtis! i3  y
7425c28e83SPiotr Jasiukajtis! i4  stridey
7525c28e83SPiotr Jasiukajtis! i5  0x80000000
7625c28e83SPiotr Jasiukajtis
7725c28e83SPiotr Jasiukajtis! l0  hx0
7825c28e83SPiotr Jasiukajtis! l1  hx1
7925c28e83SPiotr Jasiukajtis! l2  hx2
8025c28e83SPiotr Jasiukajtis! l3  hx3
8125c28e83SPiotr Jasiukajtis! l4  k0
8225c28e83SPiotr Jasiukajtis! l5  k1
8325c28e83SPiotr Jasiukajtis! l6  k2
8425c28e83SPiotr Jasiukajtis! l7  k3
8525c28e83SPiotr Jasiukajtis
8625c28e83SPiotr Jasiukajtis! the following are 64-bit registers in both V8+ and V9
8725c28e83SPiotr Jasiukajtis
8825c28e83SPiotr Jasiukajtis! g1  __vlibm_TBL_sincos2
8925c28e83SPiotr Jasiukajtis! g5  scratch
9025c28e83SPiotr Jasiukajtis
9125c28e83SPiotr Jasiukajtis! o0  py0
9225c28e83SPiotr Jasiukajtis! o1  py1
9325c28e83SPiotr Jasiukajtis! o2  py2
9425c28e83SPiotr Jasiukajtis! o3  py3
9525c28e83SPiotr Jasiukajtis! o4  0x3e400000
9625c28e83SPiotr Jasiukajtis! o5  0x3fe921fb,0x4099251e
9725c28e83SPiotr Jasiukajtis! o7  scratch
9825c28e83SPiotr Jasiukajtis
9925c28e83SPiotr Jasiukajtis! f0  hx0
100*55fea89dSDan Cross! f2
101*55fea89dSDan Cross! f4
102*55fea89dSDan Cross! f6
10325c28e83SPiotr Jasiukajtis! f8  hx1
104*55fea89dSDan Cross! f10
105*55fea89dSDan Cross! f12
106*55fea89dSDan Cross! f14
10725c28e83SPiotr Jasiukajtis! f16 hx2
108*55fea89dSDan Cross! f18
109*55fea89dSDan Cross! f20
110*55fea89dSDan Cross! f22
11125c28e83SPiotr Jasiukajtis! f24 hx3
112*55fea89dSDan Cross! f26
113*55fea89dSDan Cross! f28
114*55fea89dSDan Cross! f30
115*55fea89dSDan Cross! f32
116*55fea89dSDan Cross! f34
11725c28e83SPiotr Jasiukajtis! f36
11825c28e83SPiotr Jasiukajtis! f38
11925c28e83SPiotr Jasiukajtis
12025c28e83SPiotr Jasiukajtis#define c3two44	%f40
12125c28e83SPiotr Jasiukajtis#define c3two51	%f42
12225c28e83SPiotr Jasiukajtis#define invpio2	%f44
12325c28e83SPiotr Jasiukajtis#define pio2_1	%f46
12425c28e83SPiotr Jasiukajtis#define pio2_2	%f48
12525c28e83SPiotr Jasiukajtis#define pio2_3	%f50
12625c28e83SPiotr Jasiukajtis#define pp1	%f52
12725c28e83SPiotr Jasiukajtis#define pp2	%f54
12825c28e83SPiotr Jasiukajtis#define pp3	%f56
12925c28e83SPiotr Jasiukajtis#define qq1	%f58
13025c28e83SPiotr Jasiukajtis#define qq2	%f60
13125c28e83SPiotr Jasiukajtis#define qq3	%f62
13225c28e83SPiotr Jasiukajtis
13325c28e83SPiotr Jasiukajtis	ENTRY(__vcos_ultra3)
13425c28e83SPiotr Jasiukajtis	save	%sp,-SA(MINFRAME)-tmps,%sp
13525c28e83SPiotr Jasiukajtis	PIC_SETUP(l7)
13625c28e83SPiotr Jasiukajtis	PIC_SET(l7,constants,o0)
13725c28e83SPiotr Jasiukajtis	PIC_SET(l7,__vlibm_TBL_sincos2,o1)
13825c28e83SPiotr Jasiukajtis	mov	%o1,%g1
13925c28e83SPiotr Jasiukajtis	wr	%g0,0x82,%asi		! set %asi for non-faulting loads
14025c28e83SPiotr Jasiukajtis#ifdef __sparcv9
14125c28e83SPiotr Jasiukajtis	stx	%i1,[%fp+xsave]		! save arguments
14225c28e83SPiotr Jasiukajtis	stx	%i3,[%fp+ysave]
14325c28e83SPiotr Jasiukajtis#else
14425c28e83SPiotr Jasiukajtis	st	%i1,[%fp+xsave]		! save arguments
14525c28e83SPiotr Jasiukajtis	st	%i3,[%fp+ysave]
14625c28e83SPiotr Jasiukajtis#endif
14725c28e83SPiotr Jasiukajtis	st	%i0,[%fp+nsave]
14825c28e83SPiotr Jasiukajtis	st	%i2,[%fp+sxsave]
14925c28e83SPiotr Jasiukajtis	st	%i4,[%fp+sysave]
15025c28e83SPiotr Jasiukajtis	st	%g0,[%fp+biguns]	! biguns = 0
15125c28e83SPiotr Jasiukajtis	ldd	[%o0+0x00],c3two44	! load/set up constants
15225c28e83SPiotr Jasiukajtis	ldd	[%o0+0x08],c3two51
15325c28e83SPiotr Jasiukajtis	ldd	[%o0+0x10],invpio2
15425c28e83SPiotr Jasiukajtis	ldd	[%o0+0x18],pio2_1
15525c28e83SPiotr Jasiukajtis	ldd	[%o0+0x20],pio2_2
15625c28e83SPiotr Jasiukajtis	ldd	[%o0+0x28],pio2_3
15725c28e83SPiotr Jasiukajtis	ldd	[%o0+0x30],pp1
15825c28e83SPiotr Jasiukajtis	ldd	[%o0+0x38],pp2
15925c28e83SPiotr Jasiukajtis	ldd	[%o0+0x40],pp3
16025c28e83SPiotr Jasiukajtis	ldd	[%o0+0x48],qq1
16125c28e83SPiotr Jasiukajtis	ldd	[%o0+0x50],qq2
16225c28e83SPiotr Jasiukajtis	ldd	[%o0+0x58],qq3
16325c28e83SPiotr Jasiukajtis	sethi	%hi(0x80000000),%i5
16425c28e83SPiotr Jasiukajtis	sethi	%hi(0x3e400000),%o4
16525c28e83SPiotr Jasiukajtis	sethi	%hi(0x3fe921fb),%o5
16625c28e83SPiotr Jasiukajtis	or	%o5,%lo(0x3fe921fb),%o5
16725c28e83SPiotr Jasiukajtis	sllx	%o5,32,%o5
16825c28e83SPiotr Jasiukajtis	sethi	%hi(0x4099251e),%o7
16925c28e83SPiotr Jasiukajtis	or	%o7,%lo(0x4099251e),%o7
17025c28e83SPiotr Jasiukajtis	or	%o5,%o7,%o5
17125c28e83SPiotr Jasiukajtis	sll	%i2,3,%i2		! scale strides
17225c28e83SPiotr Jasiukajtis	sll	%i4,3,%i4
17325c28e83SPiotr Jasiukajtis	add	%fp,junk,%o1		! loop prologue
17425c28e83SPiotr Jasiukajtis	add	%fp,junk,%o2
17525c28e83SPiotr Jasiukajtis	add	%fp,junk,%o3
17625c28e83SPiotr Jasiukajtis	ld	[%i1],%l0		! *x
17725c28e83SPiotr Jasiukajtis	ld	[%i1],%f0
17825c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f3
17925c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0		! mask off sign
18025c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
18125c28e83SPiotr Jasiukajtis	ba	.loop0
18225c28e83SPiotr Jasiukajtis	nop
18325c28e83SPiotr Jasiukajtis
18425c28e83SPiotr Jasiukajtis! 16-byte aligned
18525c28e83SPiotr Jasiukajtis	.align	16
18625c28e83SPiotr Jasiukajtis.loop0:
18725c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l1		! preload next argument
18825c28e83SPiotr Jasiukajtis	sub	%l0,%o4,%g5
18925c28e83SPiotr Jasiukajtis	sub	%o5,%l0,%o7
19025c28e83SPiotr Jasiukajtis	fabss	%f0,%f2
19125c28e83SPiotr Jasiukajtis
19225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f8
19325c28e83SPiotr Jasiukajtis	orcc	%o7,%g5,%g0
19425c28e83SPiotr Jasiukajtis	mov	%i3,%o0			! py0 = y
19525c28e83SPiotr Jasiukajtis	bl,pn	%icc,.range0		! hx < 0x3e400000 or hx > 0x4099251e
19625c28e83SPiotr Jasiukajtis
19725c28e83SPiotr Jasiukajtis! delay slot
19825c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f11
19925c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
20025c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
20125c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last1
20225c28e83SPiotr Jasiukajtis
20325c28e83SPiotr Jasiukajtis! delay slot
20425c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l1
20525c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
20625c28e83SPiotr Jasiukajtis	faddd	%f2,c3two44,%f4
20725c28e83SPiotr Jasiukajtis	st	%f15,[%o1+4]
20825c28e83SPiotr Jasiukajtis
20925c28e83SPiotr Jasiukajtis.loop1:
21025c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l2		! preload next argument
21125c28e83SPiotr Jasiukajtis	sub	%l1,%o4,%g5
21225c28e83SPiotr Jasiukajtis	sub	%o5,%l1,%o7
21325c28e83SPiotr Jasiukajtis	fabss	%f8,%f10
21425c28e83SPiotr Jasiukajtis
21525c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f16
21625c28e83SPiotr Jasiukajtis	orcc	%o7,%g5,%g0
21725c28e83SPiotr Jasiukajtis	mov	%i3,%o1			! py1 = y
21825c28e83SPiotr Jasiukajtis	bl,pn	%icc,.range1		! hx < 0x3e400000 or hx > 0x4099251e
21925c28e83SPiotr Jasiukajtis
22025c28e83SPiotr Jasiukajtis! delay slot
22125c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f19
22225c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
22325c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
22425c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last2
22525c28e83SPiotr Jasiukajtis
22625c28e83SPiotr Jasiukajtis! delay slot
22725c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l2
22825c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
22925c28e83SPiotr Jasiukajtis	faddd	%f10,c3two44,%f12
23025c28e83SPiotr Jasiukajtis	st	%f23,[%o2+4]
23125c28e83SPiotr Jasiukajtis
23225c28e83SPiotr Jasiukajtis.loop2:
23325c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l3		! preload next argument
23425c28e83SPiotr Jasiukajtis	sub	%l2,%o4,%g5
23525c28e83SPiotr Jasiukajtis	sub	%o5,%l2,%o7
23625c28e83SPiotr Jasiukajtis	fabss	%f16,%f18
23725c28e83SPiotr Jasiukajtis
23825c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f24
23925c28e83SPiotr Jasiukajtis	orcc	%o7,%g5,%g0
24025c28e83SPiotr Jasiukajtis	mov	%i3,%o2			! py2 = y
24125c28e83SPiotr Jasiukajtis	bl,pn	%icc,.range2		! hx < 0x3e400000 or hx > 0x4099251e
24225c28e83SPiotr Jasiukajtis
24325c28e83SPiotr Jasiukajtis! delay slot
24425c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f27
24525c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
24625c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
24725c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last3
24825c28e83SPiotr Jasiukajtis
24925c28e83SPiotr Jasiukajtis! delay slot
25025c28e83SPiotr Jasiukajtis	andn	%l3,%i5,%l3
25125c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
25225c28e83SPiotr Jasiukajtis	faddd	%f18,c3two44,%f20
25325c28e83SPiotr Jasiukajtis	st	%f31,[%o3+4]
25425c28e83SPiotr Jasiukajtis
25525c28e83SPiotr Jasiukajtis.loop3:
25625c28e83SPiotr Jasiukajtis	sub	%l3,%o4,%g5
25725c28e83SPiotr Jasiukajtis	sub	%o5,%l3,%o7
25825c28e83SPiotr Jasiukajtis	fabss	%f24,%f26
25925c28e83SPiotr Jasiukajtis	st	%f5,[%fp+nk0]
26025c28e83SPiotr Jasiukajtis
26125c28e83SPiotr Jasiukajtis	orcc	%o7,%g5,%g0
26225c28e83SPiotr Jasiukajtis	mov	%i3,%o3			! py3 = y
26325c28e83SPiotr Jasiukajtis	bl,pn	%icc,.range3		! hx < 0x3e400000 or > hx 0x4099251e
26425c28e83SPiotr Jasiukajtis! delay slot
26525c28e83SPiotr Jasiukajtis	st	%f13,[%fp+nk1]
26625c28e83SPiotr Jasiukajtis
26725c28e83SPiotr Jasiukajtis!!! DONE?
26825c28e83SPiotr Jasiukajtis.cont:
26925c28e83SPiotr Jasiukajtis	srlx	%o5,32,%o7
27025c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
27125c28e83SPiotr Jasiukajtis	fmovs	%f3,%f1
27225c28e83SPiotr Jasiukajtis	st	%f21,[%fp+nk2]
27325c28e83SPiotr Jasiukajtis
27425c28e83SPiotr Jasiukajtis	sub	%o7,%l0,%l0
27525c28e83SPiotr Jasiukajtis	sub	%o7,%l1,%l1
27625c28e83SPiotr Jasiukajtis	faddd	%f26,c3two44,%f28
27725c28e83SPiotr Jasiukajtis	st	%f29,[%fp+nk3]
27825c28e83SPiotr Jasiukajtis
27925c28e83SPiotr Jasiukajtis	sub	%o7,%l2,%l2
28025c28e83SPiotr Jasiukajtis	sub	%o7,%l3,%l3
28125c28e83SPiotr Jasiukajtis	fmovs	%f11,%f9
28225c28e83SPiotr Jasiukajtis
28325c28e83SPiotr Jasiukajtis	or	%l0,%l1,%l0
28425c28e83SPiotr Jasiukajtis	or	%l2,%l3,%l2
28525c28e83SPiotr Jasiukajtis	fmovs	%f19,%f17
28625c28e83SPiotr Jasiukajtis
28725c28e83SPiotr Jasiukajtis	fmovs	%f27,%f25
28825c28e83SPiotr Jasiukajtis	fmuld	%f0,invpio2,%f6		! x * invpio2, for medium range
28925c28e83SPiotr Jasiukajtis
29025c28e83SPiotr Jasiukajtis	fmuld	%f8,invpio2,%f14
29125c28e83SPiotr Jasiukajtis	ld	[%fp+nk0],%l4
29225c28e83SPiotr Jasiukajtis
29325c28e83SPiotr Jasiukajtis	fmuld	%f16,invpio2,%f22
29425c28e83SPiotr Jasiukajtis	ld	[%fp+nk1],%l5
29525c28e83SPiotr Jasiukajtis
29625c28e83SPiotr Jasiukajtis	orcc	%l0,%l2,%g0
29725c28e83SPiotr Jasiukajtis	bl,pn	%icc,.medium
29825c28e83SPiotr Jasiukajtis! delay slot
29925c28e83SPiotr Jasiukajtis	fmuld	%f24,invpio2,%f30
30025c28e83SPiotr Jasiukajtis	ld	[%fp+nk2],%l6
30125c28e83SPiotr Jasiukajtis
30225c28e83SPiotr Jasiukajtis	ld	[%fp+nk3],%l7
30325c28e83SPiotr Jasiukajtis	sll	%l4,5,%l4		! k
30425c28e83SPiotr Jasiukajtis	fcmpd	%fcc0,%f0,pio2_3	! x < pio2_3 iff x < 0
30525c28e83SPiotr Jasiukajtis
30625c28e83SPiotr Jasiukajtis	sll	%l5,5,%l5
30725c28e83SPiotr Jasiukajtis	ldd	[%l4+%g1],%f4
30825c28e83SPiotr Jasiukajtis	fcmpd	%fcc1,%f8,pio2_3
30925c28e83SPiotr Jasiukajtis
31025c28e83SPiotr Jasiukajtis	sll	%l6,5,%l6
31125c28e83SPiotr Jasiukajtis	ldd	[%l5+%g1],%f12
31225c28e83SPiotr Jasiukajtis	fcmpd	%fcc2,%f16,pio2_3
31325c28e83SPiotr Jasiukajtis
31425c28e83SPiotr Jasiukajtis	sll	%l7,5,%l7
31525c28e83SPiotr Jasiukajtis	ldd	[%l6+%g1],%f20
31625c28e83SPiotr Jasiukajtis	fcmpd	%fcc3,%f24,pio2_3
31725c28e83SPiotr Jasiukajtis
31825c28e83SPiotr Jasiukajtis	ldd	[%l7+%g1],%f28
31925c28e83SPiotr Jasiukajtis	fsubd	%f2,%f4,%f2		! x -= __vlibm_TBL_sincos2[k]
32025c28e83SPiotr Jasiukajtis
32125c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
32225c28e83SPiotr Jasiukajtis
32325c28e83SPiotr Jasiukajtis	fsubd	%f18,%f20,%f18
32425c28e83SPiotr Jasiukajtis
32525c28e83SPiotr Jasiukajtis	fsubd	%f26,%f28,%f26
32625c28e83SPiotr Jasiukajtis
32725c28e83SPiotr Jasiukajtis	fmuld	%f2,%f2,%f0		! z = x * x
32825c28e83SPiotr Jasiukajtis
32925c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f8
33025c28e83SPiotr Jasiukajtis
33125c28e83SPiotr Jasiukajtis	fmuld	%f18,%f18,%f16
33225c28e83SPiotr Jasiukajtis
33325c28e83SPiotr Jasiukajtis	fmuld	%f26,%f26,%f24
33425c28e83SPiotr Jasiukajtis
33525c28e83SPiotr Jasiukajtis	fmuld	%f0,qq3,%f6
33625c28e83SPiotr Jasiukajtis
33725c28e83SPiotr Jasiukajtis	fmuld	%f8,qq3,%f14
33825c28e83SPiotr Jasiukajtis
33925c28e83SPiotr Jasiukajtis	fmuld	%f16,qq3,%f22
34025c28e83SPiotr Jasiukajtis
34125c28e83SPiotr Jasiukajtis	fmuld	%f24,qq3,%f30
34225c28e83SPiotr Jasiukajtis
34325c28e83SPiotr Jasiukajtis	faddd	%f6,qq2,%f6
34425c28e83SPiotr Jasiukajtis	fmuld	%f0,pp2,%f4
34525c28e83SPiotr Jasiukajtis
34625c28e83SPiotr Jasiukajtis	faddd	%f14,qq2,%f14
34725c28e83SPiotr Jasiukajtis	fmuld	%f8,pp2,%f12
34825c28e83SPiotr Jasiukajtis
34925c28e83SPiotr Jasiukajtis	faddd	%f22,qq2,%f22
35025c28e83SPiotr Jasiukajtis	fmuld	%f16,pp2,%f20
35125c28e83SPiotr Jasiukajtis
35225c28e83SPiotr Jasiukajtis	faddd	%f30,qq2,%f30
35325c28e83SPiotr Jasiukajtis	fmuld	%f24,pp2,%f28
35425c28e83SPiotr Jasiukajtis
35525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
35625c28e83SPiotr Jasiukajtis	faddd	%f4,pp1,%f4
35725c28e83SPiotr Jasiukajtis
35825c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
35925c28e83SPiotr Jasiukajtis	faddd	%f12,pp1,%f12
36025c28e83SPiotr Jasiukajtis
36125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
36225c28e83SPiotr Jasiukajtis	faddd	%f20,pp1,%f20
36325c28e83SPiotr Jasiukajtis
36425c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
36525c28e83SPiotr Jasiukajtis	faddd	%f28,pp1,%f28
36625c28e83SPiotr Jasiukajtis
36725c28e83SPiotr Jasiukajtis	faddd	%f6,qq1,%f6
36825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
36925c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
37025c28e83SPiotr Jasiukajtis
37125c28e83SPiotr Jasiukajtis	faddd	%f14,qq1,%f14
37225c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
37325c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
37425c28e83SPiotr Jasiukajtis
37525c28e83SPiotr Jasiukajtis	faddd	%f22,qq1,%f22
37625c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
37725c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
37825c28e83SPiotr Jasiukajtis
37925c28e83SPiotr Jasiukajtis	faddd	%f30,qq1,%f30
38025c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
38125c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
38225c28e83SPiotr Jasiukajtis
38325c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
38425c28e83SPiotr Jasiukajtis
38525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f12,%f12
38625c28e83SPiotr Jasiukajtis
38725c28e83SPiotr Jasiukajtis	fmuld	%f18,%f20,%f20
38825c28e83SPiotr Jasiukajtis
38925c28e83SPiotr Jasiukajtis	fmuld	%f26,%f28,%f28
39025c28e83SPiotr Jasiukajtis
39125c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
39225c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
39325c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f32
39425c28e83SPiotr Jasiukajtis
39525c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
39625c28e83SPiotr Jasiukajtis	faddd	%f12,%f10,%f12
39725c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f34
39825c28e83SPiotr Jasiukajtis
39925c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
40025c28e83SPiotr Jasiukajtis	faddd	%f20,%f18,%f20
40125c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f36
40225c28e83SPiotr Jasiukajtis
40325c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
40425c28e83SPiotr Jasiukajtis	faddd	%f28,%f26,%f28
40525c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f38
40625c28e83SPiotr Jasiukajtis
40725c28e83SPiotr Jasiukajtis	fmuld	%f32,%f6,%f6
40825c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f2
40925c28e83SPiotr Jasiukajtis
41025c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
41125c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f10
41225c28e83SPiotr Jasiukajtis
41325c28e83SPiotr Jasiukajtis	fmuld	%f36,%f22,%f22
41425c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f18
41525c28e83SPiotr Jasiukajtis
41625c28e83SPiotr Jasiukajtis	fmuld	%f38,%f30,%f30
41725c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f26
41825c28e83SPiotr Jasiukajtis
41925c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
42025c28e83SPiotr Jasiukajtis
42125c28e83SPiotr Jasiukajtis	fmuld	%f10,%f12,%f12
42225c28e83SPiotr Jasiukajtis
42325c28e83SPiotr Jasiukajtis	fmuld	%f18,%f20,%f20
42425c28e83SPiotr Jasiukajtis
42525c28e83SPiotr Jasiukajtis	fmuld	%f26,%f28,%f28
42625c28e83SPiotr Jasiukajtis
42725c28e83SPiotr Jasiukajtis	fsubd	%f6,%f4,%f6
42825c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
42925c28e83SPiotr Jasiukajtis
43025c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f14
43125c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
43225c28e83SPiotr Jasiukajtis
43325c28e83SPiotr Jasiukajtis	fsubd	%f22,%f20,%f22
43425c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
43525c28e83SPiotr Jasiukajtis
43625c28e83SPiotr Jasiukajtis	fsubd	%f30,%f28,%f30
43725c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
43825c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
43925c28e83SPiotr Jasiukajtis
44025c28e83SPiotr Jasiukajtis	faddd	%f6,%f32,%f6
44125c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
44225c28e83SPiotr Jasiukajtis
44325c28e83SPiotr Jasiukajtis	faddd	%f14,%f34,%f14
44425c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
44525c28e83SPiotr Jasiukajtis
44625c28e83SPiotr Jasiukajtis	faddd	%f22,%f36,%f22
44725c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
44825c28e83SPiotr Jasiukajtis
44925c28e83SPiotr Jasiukajtis	faddd	%f30,%f38,%f30
45025c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
45125c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
45225c28e83SPiotr Jasiukajtis
45325c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
45425c28e83SPiotr Jasiukajtis! delay slot
45525c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
45625c28e83SPiotr Jasiukajtis
45725c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
45825c28e83SPiotr Jasiukajtis! delay slot
45925c28e83SPiotr Jasiukajtis	nop
46025c28e83SPiotr Jasiukajtis
46125c28e83SPiotr Jasiukajtis
46225c28e83SPiotr Jasiukajtis	.align	16
46325c28e83SPiotr Jasiukajtis.medium:
46425c28e83SPiotr Jasiukajtis	faddd	%f6,c3two51,%f4
46525c28e83SPiotr Jasiukajtis	st	%f5,[%fp+nk0]
46625c28e83SPiotr Jasiukajtis
46725c28e83SPiotr Jasiukajtis	faddd	%f14,c3two51,%f12
46825c28e83SPiotr Jasiukajtis	st	%f13,[%fp+nk1]
46925c28e83SPiotr Jasiukajtis
47025c28e83SPiotr Jasiukajtis	faddd	%f22,c3two51,%f20
47125c28e83SPiotr Jasiukajtis	st	%f21,[%fp+nk2]
47225c28e83SPiotr Jasiukajtis
47325c28e83SPiotr Jasiukajtis	faddd	%f30,c3two51,%f28
47425c28e83SPiotr Jasiukajtis	st	%f29,[%fp+nk3]
47525c28e83SPiotr Jasiukajtis
47625c28e83SPiotr Jasiukajtis	fsubd	%f4,c3two51,%f6
47725c28e83SPiotr Jasiukajtis
47825c28e83SPiotr Jasiukajtis	fsubd	%f12,c3two51,%f14
47925c28e83SPiotr Jasiukajtis
48025c28e83SPiotr Jasiukajtis	fsubd	%f20,c3two51,%f22
48125c28e83SPiotr Jasiukajtis
48225c28e83SPiotr Jasiukajtis	fsubd	%f28,c3two51,%f30
48325c28e83SPiotr Jasiukajtis
48425c28e83SPiotr Jasiukajtis	fmuld	%f6,pio2_1,%f2
48525c28e83SPiotr Jasiukajtis	ld	[%fp+nk0],%l0		! n
48625c28e83SPiotr Jasiukajtis
48725c28e83SPiotr Jasiukajtis	fmuld	%f14,pio2_1,%f10
48825c28e83SPiotr Jasiukajtis	ld	[%fp+nk1],%l1
48925c28e83SPiotr Jasiukajtis
49025c28e83SPiotr Jasiukajtis	fmuld	%f22,pio2_1,%f18
49125c28e83SPiotr Jasiukajtis	ld	[%fp+nk2],%l2
49225c28e83SPiotr Jasiukajtis
49325c28e83SPiotr Jasiukajtis	fmuld	%f30,pio2_1,%f26
49425c28e83SPiotr Jasiukajtis	ld	[%fp+nk3],%l3
49525c28e83SPiotr Jasiukajtis
49625c28e83SPiotr Jasiukajtis	fsubd	%f0,%f2,%f0
49725c28e83SPiotr Jasiukajtis	fmuld	%f6,pio2_2,%f4
49825c28e83SPiotr Jasiukajtis	add	%l0,1,%l0
49925c28e83SPiotr Jasiukajtis
50025c28e83SPiotr Jasiukajtis	fsubd	%f8,%f10,%f8
50125c28e83SPiotr Jasiukajtis	fmuld	%f14,pio2_2,%f12
50225c28e83SPiotr Jasiukajtis	add	%l1,1,%l1
50325c28e83SPiotr Jasiukajtis
50425c28e83SPiotr Jasiukajtis	fsubd	%f16,%f18,%f16
50525c28e83SPiotr Jasiukajtis	fmuld	%f22,pio2_2,%f20
50625c28e83SPiotr Jasiukajtis	add	%l2,1,%l2
50725c28e83SPiotr Jasiukajtis
50825c28e83SPiotr Jasiukajtis	fsubd	%f24,%f26,%f24
50925c28e83SPiotr Jasiukajtis	fmuld	%f30,pio2_2,%f28
51025c28e83SPiotr Jasiukajtis	add	%l3,1,%l3
51125c28e83SPiotr Jasiukajtis
51225c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f32
51325c28e83SPiotr Jasiukajtis
51425c28e83SPiotr Jasiukajtis	fsubd	%f8,%f12,%f34
51525c28e83SPiotr Jasiukajtis
51625c28e83SPiotr Jasiukajtis	fsubd	%f16,%f20,%f36
51725c28e83SPiotr Jasiukajtis
51825c28e83SPiotr Jasiukajtis	fsubd	%f24,%f28,%f38
51925c28e83SPiotr Jasiukajtis
52025c28e83SPiotr Jasiukajtis	fsubd	%f0,%f32,%f0
52125c28e83SPiotr Jasiukajtis	fcmple32 %f32,pio2_3,%l4	! x <= pio2_3 iff x < 0
52225c28e83SPiotr Jasiukajtis
52325c28e83SPiotr Jasiukajtis	fsubd	%f8,%f34,%f8
52425c28e83SPiotr Jasiukajtis	fcmple32 %f34,pio2_3,%l5
52525c28e83SPiotr Jasiukajtis
52625c28e83SPiotr Jasiukajtis	fsubd	%f16,%f36,%f16
52725c28e83SPiotr Jasiukajtis	fcmple32 %f36,pio2_3,%l6
52825c28e83SPiotr Jasiukajtis
52925c28e83SPiotr Jasiukajtis	fsubd	%f24,%f38,%f24
53025c28e83SPiotr Jasiukajtis	fcmple32 %f38,pio2_3,%l7
53125c28e83SPiotr Jasiukajtis
53225c28e83SPiotr Jasiukajtis	fsubd	%f0,%f4,%f0
53325c28e83SPiotr Jasiukajtis	fmuld	%f6,pio2_3,%f6
53425c28e83SPiotr Jasiukajtis	sll	%l4,30,%l4		! if (x < 0) n = -n ^ 2
53525c28e83SPiotr Jasiukajtis
53625c28e83SPiotr Jasiukajtis	fsubd	%f8,%f12,%f8
53725c28e83SPiotr Jasiukajtis	fmuld	%f14,pio2_3,%f14
53825c28e83SPiotr Jasiukajtis	sll	%l5,30,%l5
53925c28e83SPiotr Jasiukajtis
54025c28e83SPiotr Jasiukajtis	fsubd	%f16,%f20,%f16
54125c28e83SPiotr Jasiukajtis	fmuld	%f22,pio2_3,%f22
54225c28e83SPiotr Jasiukajtis	sll	%l6,30,%l6
54325c28e83SPiotr Jasiukajtis
54425c28e83SPiotr Jasiukajtis	fsubd	%f24,%f28,%f24
54525c28e83SPiotr Jasiukajtis	fmuld	%f30,pio2_3,%f30
54625c28e83SPiotr Jasiukajtis	sll	%l7,30,%l7
54725c28e83SPiotr Jasiukajtis
54825c28e83SPiotr Jasiukajtis	fsubd	%f6,%f0,%f6
54925c28e83SPiotr Jasiukajtis	sra	%l4,31,%l4
55025c28e83SPiotr Jasiukajtis
55125c28e83SPiotr Jasiukajtis	fsubd	%f14,%f8,%f14
55225c28e83SPiotr Jasiukajtis	sra	%l5,31,%l5
55325c28e83SPiotr Jasiukajtis
55425c28e83SPiotr Jasiukajtis	fsubd	%f22,%f16,%f22
55525c28e83SPiotr Jasiukajtis	sra	%l6,31,%l6
55625c28e83SPiotr Jasiukajtis
55725c28e83SPiotr Jasiukajtis	fsubd	%f30,%f24,%f30
55825c28e83SPiotr Jasiukajtis	sra	%l7,31,%l7
55925c28e83SPiotr Jasiukajtis
56025c28e83SPiotr Jasiukajtis	fsubd	%f32,%f6,%f0		! reduced x
56125c28e83SPiotr Jasiukajtis	xor	%l0,%l4,%l0
56225c28e83SPiotr Jasiukajtis
56325c28e83SPiotr Jasiukajtis	fsubd	%f34,%f14,%f8
56425c28e83SPiotr Jasiukajtis	xor	%l1,%l5,%l1
56525c28e83SPiotr Jasiukajtis
56625c28e83SPiotr Jasiukajtis	fsubd	%f36,%f22,%f16
56725c28e83SPiotr Jasiukajtis	xor	%l2,%l6,%l2
56825c28e83SPiotr Jasiukajtis
56925c28e83SPiotr Jasiukajtis	fsubd	%f38,%f30,%f24
57025c28e83SPiotr Jasiukajtis	xor	%l3,%l7,%l3
57125c28e83SPiotr Jasiukajtis
57225c28e83SPiotr Jasiukajtis	fabsd	%f0,%f2
57325c28e83SPiotr Jasiukajtis	sub	%l0,%l4,%l0
57425c28e83SPiotr Jasiukajtis
57525c28e83SPiotr Jasiukajtis	fabsd	%f8,%f10
57625c28e83SPiotr Jasiukajtis	sub	%l1,%l5,%l1
57725c28e83SPiotr Jasiukajtis
57825c28e83SPiotr Jasiukajtis	fabsd	%f16,%f18
57925c28e83SPiotr Jasiukajtis	sub	%l2,%l6,%l2
58025c28e83SPiotr Jasiukajtis
58125c28e83SPiotr Jasiukajtis	fabsd	%f24,%f26
58225c28e83SPiotr Jasiukajtis	sub	%l3,%l7,%l3
58325c28e83SPiotr Jasiukajtis
58425c28e83SPiotr Jasiukajtis	faddd	%f2,c3two44,%f4
58525c28e83SPiotr Jasiukajtis	st	%f5,[%fp+nk0]
58625c28e83SPiotr Jasiukajtis	and	%l4,2,%l4
58725c28e83SPiotr Jasiukajtis
58825c28e83SPiotr Jasiukajtis	faddd	%f10,c3two44,%f12
58925c28e83SPiotr Jasiukajtis	st	%f13,[%fp+nk1]
59025c28e83SPiotr Jasiukajtis	and	%l5,2,%l5
59125c28e83SPiotr Jasiukajtis
59225c28e83SPiotr Jasiukajtis	faddd	%f18,c3two44,%f20
59325c28e83SPiotr Jasiukajtis	st	%f21,[%fp+nk2]
59425c28e83SPiotr Jasiukajtis	and	%l6,2,%l6
59525c28e83SPiotr Jasiukajtis
59625c28e83SPiotr Jasiukajtis	faddd	%f26,c3two44,%f28
59725c28e83SPiotr Jasiukajtis	st	%f29,[%fp+nk3]
59825c28e83SPiotr Jasiukajtis	and	%l7,2,%l7
59925c28e83SPiotr Jasiukajtis
60025c28e83SPiotr Jasiukajtis	fsubd	%f32,%f0,%f4
60125c28e83SPiotr Jasiukajtis	xor	%l0,%l4,%l0
60225c28e83SPiotr Jasiukajtis
60325c28e83SPiotr Jasiukajtis	fsubd	%f34,%f8,%f12
60425c28e83SPiotr Jasiukajtis	xor	%l1,%l5,%l1
60525c28e83SPiotr Jasiukajtis
60625c28e83SPiotr Jasiukajtis	fsubd	%f36,%f16,%f20
60725c28e83SPiotr Jasiukajtis	xor	%l2,%l6,%l2
60825c28e83SPiotr Jasiukajtis
60925c28e83SPiotr Jasiukajtis	fsubd	%f38,%f24,%f28
61025c28e83SPiotr Jasiukajtis	xor	%l3,%l7,%l3
61125c28e83SPiotr Jasiukajtis
61225c28e83SPiotr Jasiukajtis	fzero	%f38
61325c28e83SPiotr Jasiukajtis	ld	[%fp+nk0],%l4
61425c28e83SPiotr Jasiukajtis
61525c28e83SPiotr Jasiukajtis	fsubd	%f4,%f6,%f6		! w
61625c28e83SPiotr Jasiukajtis	ld	[%fp+nk1],%l5
61725c28e83SPiotr Jasiukajtis
61825c28e83SPiotr Jasiukajtis	fsubd	%f12,%f14,%f14
61925c28e83SPiotr Jasiukajtis	ld	[%fp+nk2],%l6
62025c28e83SPiotr Jasiukajtis
62125c28e83SPiotr Jasiukajtis	fnegd	%f38,%f38
62225c28e83SPiotr Jasiukajtis	ld	[%fp+nk3],%l7
62325c28e83SPiotr Jasiukajtis	sll	%l4,5,%l4		! k
62425c28e83SPiotr Jasiukajtis
62525c28e83SPiotr Jasiukajtis	fsubd	%f20,%f22,%f22
62625c28e83SPiotr Jasiukajtis	sll	%l5,5,%l5
62725c28e83SPiotr Jasiukajtis
62825c28e83SPiotr Jasiukajtis	fsubd	%f28,%f30,%f30
62925c28e83SPiotr Jasiukajtis	sll	%l6,5,%l6
63025c28e83SPiotr Jasiukajtis
63125c28e83SPiotr Jasiukajtis	fand	%f0,%f38,%f32		! sign bit of x
63225c28e83SPiotr Jasiukajtis	ldd	[%l4+%g1],%f4
63325c28e83SPiotr Jasiukajtis	sll	%l7,5,%l7
63425c28e83SPiotr Jasiukajtis
63525c28e83SPiotr Jasiukajtis	fand	%f8,%f38,%f34
63625c28e83SPiotr Jasiukajtis	ldd	[%l5+%g1],%f12
63725c28e83SPiotr Jasiukajtis
63825c28e83SPiotr Jasiukajtis	fand	%f16,%f38,%f36
63925c28e83SPiotr Jasiukajtis	ldd	[%l6+%g1],%f20
64025c28e83SPiotr Jasiukajtis
64125c28e83SPiotr Jasiukajtis	fand	%f24,%f38,%f38
64225c28e83SPiotr Jasiukajtis	ldd	[%l7+%g1],%f28
64325c28e83SPiotr Jasiukajtis
64425c28e83SPiotr Jasiukajtis	fsubd	%f2,%f4,%f2		! x -= __vlibm_TBL_sincos2[k]
64525c28e83SPiotr Jasiukajtis
64625c28e83SPiotr Jasiukajtis	fsubd	%f10,%f12,%f10
64725c28e83SPiotr Jasiukajtis
64825c28e83SPiotr Jasiukajtis	fsubd	%f18,%f20,%f18
64925c28e83SPiotr Jasiukajtis	nop
65025c28e83SPiotr Jasiukajtis
65125c28e83SPiotr Jasiukajtis	fsubd	%f26,%f28,%f26
65225c28e83SPiotr Jasiukajtis	nop
65325c28e83SPiotr Jasiukajtis
65425c28e83SPiotr Jasiukajtis! 16-byte aligned
65525c28e83SPiotr Jasiukajtis	fmuld	%f2,%f2,%f0		! z = x * x
65625c28e83SPiotr Jasiukajtis	andcc	%l0,1,%g0
65725c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case8
65825c28e83SPiotr Jasiukajtis! delay slot
65925c28e83SPiotr Jasiukajtis	fxor	%f6,%f32,%f32
66025c28e83SPiotr Jasiukajtis
66125c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f8
66225c28e83SPiotr Jasiukajtis	andcc	%l1,1,%g0
66325c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case4
66425c28e83SPiotr Jasiukajtis! delay slot
66525c28e83SPiotr Jasiukajtis	fxor	%f14,%f34,%f34
66625c28e83SPiotr Jasiukajtis
66725c28e83SPiotr Jasiukajtis	fmuld	%f18,%f18,%f16
66825c28e83SPiotr Jasiukajtis	andcc	%l2,1,%g0
66925c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case2
67025c28e83SPiotr Jasiukajtis! delay slot
67125c28e83SPiotr Jasiukajtis	fxor	%f22,%f36,%f36
67225c28e83SPiotr Jasiukajtis
67325c28e83SPiotr Jasiukajtis	fmuld	%f26,%f26,%f24
67425c28e83SPiotr Jasiukajtis	andcc	%l3,1,%g0
67525c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case1
67625c28e83SPiotr Jasiukajtis! delay slot
67725c28e83SPiotr Jasiukajtis	fxor	%f30,%f38,%f38
67825c28e83SPiotr Jasiukajtis
67925c28e83SPiotr Jasiukajtis!.case0:
68025c28e83SPiotr Jasiukajtis	fmuld	%f0,qq3,%f6		! cos(x0)
68125c28e83SPiotr Jasiukajtis
68225c28e83SPiotr Jasiukajtis	fmuld	%f8,qq3,%f14		! cos(x1)
68325c28e83SPiotr Jasiukajtis
68425c28e83SPiotr Jasiukajtis	fmuld	%f16,qq3,%f22		! cos(x2)
68525c28e83SPiotr Jasiukajtis
68625c28e83SPiotr Jasiukajtis	fmuld	%f24,qq3,%f30		! cos(x3)
68725c28e83SPiotr Jasiukajtis
68825c28e83SPiotr Jasiukajtis	faddd	%f6,qq2,%f6
68925c28e83SPiotr Jasiukajtis	fmuld	%f0,pp2,%f4
69025c28e83SPiotr Jasiukajtis
69125c28e83SPiotr Jasiukajtis	faddd	%f14,qq2,%f14
69225c28e83SPiotr Jasiukajtis	fmuld	%f8,pp2,%f12
69325c28e83SPiotr Jasiukajtis
69425c28e83SPiotr Jasiukajtis	faddd	%f22,qq2,%f22
69525c28e83SPiotr Jasiukajtis	fmuld	%f16,pp2,%f20
69625c28e83SPiotr Jasiukajtis
69725c28e83SPiotr Jasiukajtis	faddd	%f30,qq2,%f30
69825c28e83SPiotr Jasiukajtis	fmuld	%f24,pp2,%f28
69925c28e83SPiotr Jasiukajtis
70025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
70125c28e83SPiotr Jasiukajtis	faddd	%f4,pp1,%f4
70225c28e83SPiotr Jasiukajtis
70325c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
70425c28e83SPiotr Jasiukajtis	faddd	%f12,pp1,%f12
70525c28e83SPiotr Jasiukajtis
70625c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
70725c28e83SPiotr Jasiukajtis	faddd	%f20,pp1,%f20
70825c28e83SPiotr Jasiukajtis
70925c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
71025c28e83SPiotr Jasiukajtis	faddd	%f28,pp1,%f28
71125c28e83SPiotr Jasiukajtis
71225c28e83SPiotr Jasiukajtis	faddd	%f6,qq1,%f6
71325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
71425c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
71525c28e83SPiotr Jasiukajtis
71625c28e83SPiotr Jasiukajtis	faddd	%f14,qq1,%f14
71725c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
71825c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
71925c28e83SPiotr Jasiukajtis
72025c28e83SPiotr Jasiukajtis	faddd	%f22,qq1,%f22
72125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
72225c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
72325c28e83SPiotr Jasiukajtis
72425c28e83SPiotr Jasiukajtis	faddd	%f30,qq1,%f30
72525c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
72625c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
72725c28e83SPiotr Jasiukajtis
72825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
72925c28e83SPiotr Jasiukajtis
73025c28e83SPiotr Jasiukajtis	fmuld	%f10,%f12,%f12
73125c28e83SPiotr Jasiukajtis
73225c28e83SPiotr Jasiukajtis	fmuld	%f18,%f20,%f20
73325c28e83SPiotr Jasiukajtis
73425c28e83SPiotr Jasiukajtis	fmuld	%f26,%f28,%f28
73525c28e83SPiotr Jasiukajtis
73625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
73725c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
73825c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f0
73925c28e83SPiotr Jasiukajtis
74025c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
74125c28e83SPiotr Jasiukajtis	faddd	%f12,%f34,%f12
74225c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f8
74325c28e83SPiotr Jasiukajtis
74425c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
74525c28e83SPiotr Jasiukajtis	faddd	%f20,%f36,%f20
74625c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f16
74725c28e83SPiotr Jasiukajtis
74825c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
74925c28e83SPiotr Jasiukajtis	faddd	%f28,%f38,%f28
75025c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f24
75125c28e83SPiotr Jasiukajtis
75225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
75325c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
75425c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f32
75525c28e83SPiotr Jasiukajtis
75625c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
75725c28e83SPiotr Jasiukajtis	faddd	%f12,%f10,%f12
75825c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f34
75925c28e83SPiotr Jasiukajtis
76025c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
76125c28e83SPiotr Jasiukajtis	faddd	%f20,%f18,%f20
76225c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f36
76325c28e83SPiotr Jasiukajtis
76425c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
76525c28e83SPiotr Jasiukajtis	faddd	%f28,%f26,%f28
76625c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f38
76725c28e83SPiotr Jasiukajtis
76825c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
76925c28e83SPiotr Jasiukajtis
77025c28e83SPiotr Jasiukajtis	fmuld	%f34,%f12,%f12
77125c28e83SPiotr Jasiukajtis
77225c28e83SPiotr Jasiukajtis	fmuld	%f36,%f20,%f20
77325c28e83SPiotr Jasiukajtis
77425c28e83SPiotr Jasiukajtis	fmuld	%f38,%f28,%f28
77525c28e83SPiotr Jasiukajtis
77625c28e83SPiotr Jasiukajtis	fsubd	%f6,%f4,%f6
77725c28e83SPiotr Jasiukajtis
77825c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f14
77925c28e83SPiotr Jasiukajtis
78025c28e83SPiotr Jasiukajtis	fsubd	%f22,%f20,%f22
78125c28e83SPiotr Jasiukajtis
78225c28e83SPiotr Jasiukajtis	fsubd	%f30,%f28,%f30
78325c28e83SPiotr Jasiukajtis
78425c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
78525c28e83SPiotr Jasiukajtis
78625c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
78725c28e83SPiotr Jasiukajtis
78825c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
78925c28e83SPiotr Jasiukajtis
79025c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
79125c28e83SPiotr Jasiukajtis	mov	%l0,%l4
79225c28e83SPiotr Jasiukajtis
79325c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
79425c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
79525c28e83SPiotr Jasiukajtis
79625c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
79725c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
79825c28e83SPiotr Jasiukajtis
79925c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
80025c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
80125c28e83SPiotr Jasiukajtis
80225c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
80325c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
80425c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
80525c28e83SPiotr Jasiukajtis
80625c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
80725c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
80825c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
80925c28e83SPiotr Jasiukajtis
81025c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
81125c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
81225c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
81325c28e83SPiotr Jasiukajtis
81425c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
81525c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
81625c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
81725c28e83SPiotr Jasiukajtis
81825c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
81925c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
82025c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
82125c28e83SPiotr Jasiukajtis
82225c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
82325c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
82425c28e83SPiotr Jasiukajtis! delay slot
82525c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
82625c28e83SPiotr Jasiukajtis
82725c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
82825c28e83SPiotr Jasiukajtis! delay slot
82925c28e83SPiotr Jasiukajtis	nop
83025c28e83SPiotr Jasiukajtis
83125c28e83SPiotr Jasiukajtis	.align	16
83225c28e83SPiotr Jasiukajtis.case1:
83325c28e83SPiotr Jasiukajtis	fmuld	%f24,pp3,%f30		! sin(x3)
83425c28e83SPiotr Jasiukajtis
83525c28e83SPiotr Jasiukajtis	fmuld	%f0,qq3,%f6		! cos(x0)
83625c28e83SPiotr Jasiukajtis
83725c28e83SPiotr Jasiukajtis	fmuld	%f8,qq3,%f14		! cos(x1)
83825c28e83SPiotr Jasiukajtis
83925c28e83SPiotr Jasiukajtis	fmuld	%f16,qq3,%f22		! cos(x2)
84025c28e83SPiotr Jasiukajtis
84125c28e83SPiotr Jasiukajtis	faddd	%f30,pp2,%f30
84225c28e83SPiotr Jasiukajtis	fmuld	%f24,qq2,%f28
84325c28e83SPiotr Jasiukajtis
84425c28e83SPiotr Jasiukajtis	faddd	%f6,qq2,%f6
84525c28e83SPiotr Jasiukajtis	fmuld	%f0,pp2,%f4
84625c28e83SPiotr Jasiukajtis
84725c28e83SPiotr Jasiukajtis	faddd	%f14,qq2,%f14
84825c28e83SPiotr Jasiukajtis	fmuld	%f8,pp2,%f12
84925c28e83SPiotr Jasiukajtis
85025c28e83SPiotr Jasiukajtis	faddd	%f22,qq2,%f22
85125c28e83SPiotr Jasiukajtis	fmuld	%f16,pp2,%f20
85225c28e83SPiotr Jasiukajtis
85325c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
85425c28e83SPiotr Jasiukajtis	faddd	%f28,qq1,%f28
85525c28e83SPiotr Jasiukajtis
85625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
85725c28e83SPiotr Jasiukajtis	faddd	%f4,pp1,%f4
85825c28e83SPiotr Jasiukajtis
85925c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
86025c28e83SPiotr Jasiukajtis	faddd	%f12,pp1,%f12
86125c28e83SPiotr Jasiukajtis
86225c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
86325c28e83SPiotr Jasiukajtis	faddd	%f20,pp1,%f20
86425c28e83SPiotr Jasiukajtis
86525c28e83SPiotr Jasiukajtis	faddd	%f30,pp1,%f30
86625c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
86725c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
86825c28e83SPiotr Jasiukajtis
86925c28e83SPiotr Jasiukajtis	faddd	%f6,qq1,%f6
87025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
87125c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
87225c28e83SPiotr Jasiukajtis
87325c28e83SPiotr Jasiukajtis	faddd	%f14,qq1,%f14
87425c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
87525c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
87625c28e83SPiotr Jasiukajtis
87725c28e83SPiotr Jasiukajtis	faddd	%f22,qq1,%f22
87825c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
87925c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
88025c28e83SPiotr Jasiukajtis
88125c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
88225c28e83SPiotr Jasiukajtis
88325c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
88425c28e83SPiotr Jasiukajtis
88525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f12,%f12
88625c28e83SPiotr Jasiukajtis
88725c28e83SPiotr Jasiukajtis	fmuld	%f18,%f20,%f20
88825c28e83SPiotr Jasiukajtis
88925c28e83SPiotr Jasiukajtis	fmuld	%f26,%f30,%f30
89025c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f24
89125c28e83SPiotr Jasiukajtis
89225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
89325c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
89425c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f0
89525c28e83SPiotr Jasiukajtis
89625c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
89725c28e83SPiotr Jasiukajtis	faddd	%f12,%f34,%f12
89825c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f8
89925c28e83SPiotr Jasiukajtis
90025c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
90125c28e83SPiotr Jasiukajtis	faddd	%f20,%f36,%f20
90225c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f16
90325c28e83SPiotr Jasiukajtis
90425c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
90525c28e83SPiotr Jasiukajtis	faddd	%f38,%f30,%f30
90625c28e83SPiotr Jasiukajtis
90725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
90825c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
90925c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f32
91025c28e83SPiotr Jasiukajtis
91125c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
91225c28e83SPiotr Jasiukajtis	faddd	%f12,%f10,%f12
91325c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f34
91425c28e83SPiotr Jasiukajtis
91525c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
91625c28e83SPiotr Jasiukajtis	faddd	%f20,%f18,%f20
91725c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f36
91825c28e83SPiotr Jasiukajtis
91925c28e83SPiotr Jasiukajtis	faddd	%f26,%f30,%f30
92025c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f38
92125c28e83SPiotr Jasiukajtis
92225c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
92325c28e83SPiotr Jasiukajtis
92425c28e83SPiotr Jasiukajtis	fmuld	%f34,%f12,%f12
92525c28e83SPiotr Jasiukajtis
92625c28e83SPiotr Jasiukajtis	fmuld	%f36,%f20,%f20
92725c28e83SPiotr Jasiukajtis
92825c28e83SPiotr Jasiukajtis	fmuld	%f38,%f30,%f30
92925c28e83SPiotr Jasiukajtis
93025c28e83SPiotr Jasiukajtis	fsubd	%f6,%f4,%f6
93125c28e83SPiotr Jasiukajtis
93225c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f14
93325c28e83SPiotr Jasiukajtis
93425c28e83SPiotr Jasiukajtis	fsubd	%f22,%f20,%f22
93525c28e83SPiotr Jasiukajtis
93625c28e83SPiotr Jasiukajtis	faddd	%f30,%f28,%f30
93725c28e83SPiotr Jasiukajtis
93825c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
93925c28e83SPiotr Jasiukajtis
94025c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
94125c28e83SPiotr Jasiukajtis
94225c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
94325c28e83SPiotr Jasiukajtis
94425c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
94525c28e83SPiotr Jasiukajtis	mov	%l0,%l4
94625c28e83SPiotr Jasiukajtis
94725c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
94825c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
94925c28e83SPiotr Jasiukajtis
95025c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
95125c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
95225c28e83SPiotr Jasiukajtis
95325c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
95425c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
95525c28e83SPiotr Jasiukajtis
95625c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
95725c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
95825c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
95925c28e83SPiotr Jasiukajtis
96025c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
96125c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
96225c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
96325c28e83SPiotr Jasiukajtis
96425c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
96525c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
96625c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
96725c28e83SPiotr Jasiukajtis
96825c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
96925c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
97025c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
97125c28e83SPiotr Jasiukajtis
97225c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
97325c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
97425c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
97525c28e83SPiotr Jasiukajtis
97625c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
97725c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
97825c28e83SPiotr Jasiukajtis! delay slot
97925c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
98025c28e83SPiotr Jasiukajtis
98125c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
98225c28e83SPiotr Jasiukajtis! delay slot
98325c28e83SPiotr Jasiukajtis	nop
98425c28e83SPiotr Jasiukajtis
98525c28e83SPiotr Jasiukajtis	.align	16
98625c28e83SPiotr Jasiukajtis.case2:
98725c28e83SPiotr Jasiukajtis	fmuld	%f26,%f26,%f24
98825c28e83SPiotr Jasiukajtis	andcc	%l3,1,%g0
98925c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case3
99025c28e83SPiotr Jasiukajtis! delay slot
99125c28e83SPiotr Jasiukajtis	fxor	%f30,%f38,%f38
99225c28e83SPiotr Jasiukajtis
99325c28e83SPiotr Jasiukajtis	fmuld	%f16,pp3,%f22		! sin(x2)
99425c28e83SPiotr Jasiukajtis
99525c28e83SPiotr Jasiukajtis	fmuld	%f0,qq3,%f6		! cos(x0)
99625c28e83SPiotr Jasiukajtis
99725c28e83SPiotr Jasiukajtis	fmuld	%f8,qq3,%f14		! cos(x1)
99825c28e83SPiotr Jasiukajtis
99925c28e83SPiotr Jasiukajtis	faddd	%f22,pp2,%f22
100025c28e83SPiotr Jasiukajtis	fmuld	%f16,qq2,%f20
100125c28e83SPiotr Jasiukajtis
100225c28e83SPiotr Jasiukajtis	fmuld	%f24,qq3,%f30		! cos(x3)
100325c28e83SPiotr Jasiukajtis
100425c28e83SPiotr Jasiukajtis	faddd	%f6,qq2,%f6
100525c28e83SPiotr Jasiukajtis	fmuld	%f0,pp2,%f4
100625c28e83SPiotr Jasiukajtis
100725c28e83SPiotr Jasiukajtis	faddd	%f14,qq2,%f14
100825c28e83SPiotr Jasiukajtis	fmuld	%f8,pp2,%f12
100925c28e83SPiotr Jasiukajtis
101025c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
101125c28e83SPiotr Jasiukajtis	faddd	%f20,qq1,%f20
101225c28e83SPiotr Jasiukajtis
101325c28e83SPiotr Jasiukajtis	faddd	%f30,qq2,%f30
101425c28e83SPiotr Jasiukajtis	fmuld	%f24,pp2,%f28
101525c28e83SPiotr Jasiukajtis
101625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
101725c28e83SPiotr Jasiukajtis	faddd	%f4,pp1,%f4
101825c28e83SPiotr Jasiukajtis
101925c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
102025c28e83SPiotr Jasiukajtis	faddd	%f12,pp1,%f12
102125c28e83SPiotr Jasiukajtis
102225c28e83SPiotr Jasiukajtis	faddd	%f22,pp1,%f22
102325c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
102425c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
102525c28e83SPiotr Jasiukajtis
102625c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
102725c28e83SPiotr Jasiukajtis	faddd	%f28,pp1,%f28
102825c28e83SPiotr Jasiukajtis
102925c28e83SPiotr Jasiukajtis	faddd	%f6,qq1,%f6
103025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
103125c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
103225c28e83SPiotr Jasiukajtis
103325c28e83SPiotr Jasiukajtis	faddd	%f14,qq1,%f14
103425c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
103525c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
103625c28e83SPiotr Jasiukajtis
103725c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
103825c28e83SPiotr Jasiukajtis
103925c28e83SPiotr Jasiukajtis	faddd	%f30,qq1,%f30
104025c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
104125c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
104225c28e83SPiotr Jasiukajtis
104325c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
104425c28e83SPiotr Jasiukajtis
104525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f12,%f12
104625c28e83SPiotr Jasiukajtis
104725c28e83SPiotr Jasiukajtis	fmuld	%f18,%f22,%f22
104825c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f16
104925c28e83SPiotr Jasiukajtis
105025c28e83SPiotr Jasiukajtis	fmuld	%f26,%f28,%f28
105125c28e83SPiotr Jasiukajtis
105225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
105325c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
105425c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f0
105525c28e83SPiotr Jasiukajtis
105625c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
105725c28e83SPiotr Jasiukajtis	faddd	%f12,%f34,%f12
105825c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f8
105925c28e83SPiotr Jasiukajtis
106025c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
106125c28e83SPiotr Jasiukajtis	faddd	%f36,%f22,%f22
106225c28e83SPiotr Jasiukajtis
106325c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
106425c28e83SPiotr Jasiukajtis	faddd	%f28,%f38,%f28
106525c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f24
106625c28e83SPiotr Jasiukajtis
106725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
106825c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
106925c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f32
107025c28e83SPiotr Jasiukajtis
107125c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
107225c28e83SPiotr Jasiukajtis	faddd	%f12,%f10,%f12
107325c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f34
107425c28e83SPiotr Jasiukajtis
107525c28e83SPiotr Jasiukajtis	faddd	%f18,%f22,%f22
107625c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f36
107725c28e83SPiotr Jasiukajtis
107825c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
107925c28e83SPiotr Jasiukajtis	faddd	%f28,%f26,%f28
108025c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f38
108125c28e83SPiotr Jasiukajtis
108225c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
108325c28e83SPiotr Jasiukajtis
108425c28e83SPiotr Jasiukajtis	fmuld	%f34,%f12,%f12
108525c28e83SPiotr Jasiukajtis
108625c28e83SPiotr Jasiukajtis	fmuld	%f36,%f22,%f22
108725c28e83SPiotr Jasiukajtis
108825c28e83SPiotr Jasiukajtis	fmuld	%f38,%f28,%f28
108925c28e83SPiotr Jasiukajtis
109025c28e83SPiotr Jasiukajtis	fsubd	%f6,%f4,%f6
109125c28e83SPiotr Jasiukajtis
109225c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f14
109325c28e83SPiotr Jasiukajtis
109425c28e83SPiotr Jasiukajtis	faddd	%f22,%f20,%f22
109525c28e83SPiotr Jasiukajtis
109625c28e83SPiotr Jasiukajtis	fsubd	%f30,%f28,%f30
109725c28e83SPiotr Jasiukajtis
109825c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
109925c28e83SPiotr Jasiukajtis
110025c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
110125c28e83SPiotr Jasiukajtis
110225c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
110325c28e83SPiotr Jasiukajtis
110425c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
110525c28e83SPiotr Jasiukajtis	mov	%l0,%l4
110625c28e83SPiotr Jasiukajtis
110725c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
110825c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
110925c28e83SPiotr Jasiukajtis
111025c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
111125c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
111225c28e83SPiotr Jasiukajtis
111325c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
111425c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
111525c28e83SPiotr Jasiukajtis
111625c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
111725c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
111825c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
111925c28e83SPiotr Jasiukajtis
112025c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
112125c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
112225c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
112325c28e83SPiotr Jasiukajtis
112425c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
112525c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
112625c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
112725c28e83SPiotr Jasiukajtis
112825c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
112925c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
113025c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
113125c28e83SPiotr Jasiukajtis
113225c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
113325c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
113425c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
113525c28e83SPiotr Jasiukajtis
113625c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
113725c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
113825c28e83SPiotr Jasiukajtis! delay slot
113925c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
114025c28e83SPiotr Jasiukajtis
114125c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
114225c28e83SPiotr Jasiukajtis! delay slot
114325c28e83SPiotr Jasiukajtis	nop
114425c28e83SPiotr Jasiukajtis
114525c28e83SPiotr Jasiukajtis	.align	16
114625c28e83SPiotr Jasiukajtis.case3:
114725c28e83SPiotr Jasiukajtis	fmuld	%f16,pp3,%f22		! sin(x2)
114825c28e83SPiotr Jasiukajtis
114925c28e83SPiotr Jasiukajtis	fmuld	%f24,pp3,%f30		! sin(x3)
115025c28e83SPiotr Jasiukajtis
115125c28e83SPiotr Jasiukajtis	fmuld	%f0,qq3,%f6		! cos(x0)
115225c28e83SPiotr Jasiukajtis
115325c28e83SPiotr Jasiukajtis	fmuld	%f8,qq3,%f14		! cos(x1)
115425c28e83SPiotr Jasiukajtis
115525c28e83SPiotr Jasiukajtis	faddd	%f22,pp2,%f22
115625c28e83SPiotr Jasiukajtis	fmuld	%f16,qq2,%f20
115725c28e83SPiotr Jasiukajtis
115825c28e83SPiotr Jasiukajtis	faddd	%f30,pp2,%f30
115925c28e83SPiotr Jasiukajtis	fmuld	%f24,qq2,%f28
116025c28e83SPiotr Jasiukajtis
116125c28e83SPiotr Jasiukajtis	faddd	%f6,qq2,%f6
116225c28e83SPiotr Jasiukajtis	fmuld	%f0,pp2,%f4
116325c28e83SPiotr Jasiukajtis
116425c28e83SPiotr Jasiukajtis	faddd	%f14,qq2,%f14
116525c28e83SPiotr Jasiukajtis	fmuld	%f8,pp2,%f12
116625c28e83SPiotr Jasiukajtis
116725c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
116825c28e83SPiotr Jasiukajtis	faddd	%f20,qq1,%f20
116925c28e83SPiotr Jasiukajtis
117025c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
117125c28e83SPiotr Jasiukajtis	faddd	%f28,qq1,%f28
117225c28e83SPiotr Jasiukajtis
117325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
117425c28e83SPiotr Jasiukajtis	faddd	%f4,pp1,%f4
117525c28e83SPiotr Jasiukajtis
117625c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
117725c28e83SPiotr Jasiukajtis	faddd	%f12,pp1,%f12
117825c28e83SPiotr Jasiukajtis
117925c28e83SPiotr Jasiukajtis	faddd	%f22,pp1,%f22
118025c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
118125c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
118225c28e83SPiotr Jasiukajtis
118325c28e83SPiotr Jasiukajtis	faddd	%f30,pp1,%f30
118425c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
118525c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
118625c28e83SPiotr Jasiukajtis
118725c28e83SPiotr Jasiukajtis	faddd	%f6,qq1,%f6
118825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
118925c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
119025c28e83SPiotr Jasiukajtis
119125c28e83SPiotr Jasiukajtis	faddd	%f14,qq1,%f14
119225c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
119325c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
119425c28e83SPiotr Jasiukajtis
119525c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
119625c28e83SPiotr Jasiukajtis
119725c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
119825c28e83SPiotr Jasiukajtis
119925c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
120025c28e83SPiotr Jasiukajtis
120125c28e83SPiotr Jasiukajtis	fmuld	%f10,%f12,%f12
120225c28e83SPiotr Jasiukajtis
120325c28e83SPiotr Jasiukajtis	fmuld	%f18,%f22,%f22
120425c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f16
120525c28e83SPiotr Jasiukajtis
120625c28e83SPiotr Jasiukajtis	fmuld	%f26,%f30,%f30
120725c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f24
120825c28e83SPiotr Jasiukajtis
120925c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
121025c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
121125c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f0
121225c28e83SPiotr Jasiukajtis
121325c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
121425c28e83SPiotr Jasiukajtis	faddd	%f12,%f34,%f12
121525c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f8
121625c28e83SPiotr Jasiukajtis
121725c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
121825c28e83SPiotr Jasiukajtis	faddd	%f36,%f22,%f22
121925c28e83SPiotr Jasiukajtis
122025c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
122125c28e83SPiotr Jasiukajtis	faddd	%f38,%f30,%f30
122225c28e83SPiotr Jasiukajtis
122325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
122425c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
122525c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f32
122625c28e83SPiotr Jasiukajtis
122725c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
122825c28e83SPiotr Jasiukajtis	faddd	%f12,%f10,%f12
122925c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f34
123025c28e83SPiotr Jasiukajtis
123125c28e83SPiotr Jasiukajtis	faddd	%f18,%f22,%f22
123225c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f36
123325c28e83SPiotr Jasiukajtis
123425c28e83SPiotr Jasiukajtis	faddd	%f26,%f30,%f30
123525c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f38
123625c28e83SPiotr Jasiukajtis
123725c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
123825c28e83SPiotr Jasiukajtis
123925c28e83SPiotr Jasiukajtis	fmuld	%f34,%f12,%f12
124025c28e83SPiotr Jasiukajtis
124125c28e83SPiotr Jasiukajtis	fmuld	%f36,%f22,%f22
124225c28e83SPiotr Jasiukajtis
124325c28e83SPiotr Jasiukajtis	fmuld	%f38,%f30,%f30
124425c28e83SPiotr Jasiukajtis
124525c28e83SPiotr Jasiukajtis	fsubd	%f6,%f4,%f6
124625c28e83SPiotr Jasiukajtis
124725c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f14
124825c28e83SPiotr Jasiukajtis
124925c28e83SPiotr Jasiukajtis	faddd	%f22,%f20,%f22
125025c28e83SPiotr Jasiukajtis
125125c28e83SPiotr Jasiukajtis	faddd	%f30,%f28,%f30
125225c28e83SPiotr Jasiukajtis
125325c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
125425c28e83SPiotr Jasiukajtis
125525c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
125625c28e83SPiotr Jasiukajtis
125725c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
125825c28e83SPiotr Jasiukajtis
125925c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
126025c28e83SPiotr Jasiukajtis	mov	%l0,%l4
126125c28e83SPiotr Jasiukajtis
126225c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
126325c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
126425c28e83SPiotr Jasiukajtis
126525c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
126625c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
126725c28e83SPiotr Jasiukajtis
126825c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
126925c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
127025c28e83SPiotr Jasiukajtis
127125c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
127225c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
127325c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
127425c28e83SPiotr Jasiukajtis
127525c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
127625c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
127725c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
127825c28e83SPiotr Jasiukajtis
127925c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
128025c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
128125c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
128225c28e83SPiotr Jasiukajtis
128325c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
128425c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
128525c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
128625c28e83SPiotr Jasiukajtis
128725c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
128825c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
128925c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
129025c28e83SPiotr Jasiukajtis
129125c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
129225c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
129325c28e83SPiotr Jasiukajtis! delay slot
129425c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
129525c28e83SPiotr Jasiukajtis
129625c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
129725c28e83SPiotr Jasiukajtis! delay slot
129825c28e83SPiotr Jasiukajtis	nop
129925c28e83SPiotr Jasiukajtis
130025c28e83SPiotr Jasiukajtis	.align	16
130125c28e83SPiotr Jasiukajtis.case4:
130225c28e83SPiotr Jasiukajtis	fmuld	%f18,%f18,%f16
130325c28e83SPiotr Jasiukajtis	andcc	%l2,1,%g0
130425c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case6
130525c28e83SPiotr Jasiukajtis! delay slot
130625c28e83SPiotr Jasiukajtis	fxor	%f22,%f36,%f36
130725c28e83SPiotr Jasiukajtis
130825c28e83SPiotr Jasiukajtis	fmuld	%f26,%f26,%f24
130925c28e83SPiotr Jasiukajtis	andcc	%l3,1,%g0
131025c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case5
131125c28e83SPiotr Jasiukajtis! delay slot
131225c28e83SPiotr Jasiukajtis	fxor	%f30,%f38,%f38
131325c28e83SPiotr Jasiukajtis
131425c28e83SPiotr Jasiukajtis	fmuld	%f8,pp3,%f14		! sin(x1)
131525c28e83SPiotr Jasiukajtis
131625c28e83SPiotr Jasiukajtis	fmuld	%f0,qq3,%f6		! cos(x0)
131725c28e83SPiotr Jasiukajtis
131825c28e83SPiotr Jasiukajtis	faddd	%f14,pp2,%f14
131925c28e83SPiotr Jasiukajtis	fmuld	%f8,qq2,%f12
132025c28e83SPiotr Jasiukajtis
132125c28e83SPiotr Jasiukajtis	fmuld	%f16,qq3,%f22		! cos(x2)
132225c28e83SPiotr Jasiukajtis
132325c28e83SPiotr Jasiukajtis	fmuld	%f24,qq3,%f30		! cos(x3)
132425c28e83SPiotr Jasiukajtis
132525c28e83SPiotr Jasiukajtis	faddd	%f6,qq2,%f6
132625c28e83SPiotr Jasiukajtis	fmuld	%f0,pp2,%f4
132725c28e83SPiotr Jasiukajtis
132825c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
132925c28e83SPiotr Jasiukajtis	faddd	%f12,qq1,%f12
133025c28e83SPiotr Jasiukajtis
133125c28e83SPiotr Jasiukajtis	faddd	%f22,qq2,%f22
133225c28e83SPiotr Jasiukajtis	fmuld	%f16,pp2,%f20
133325c28e83SPiotr Jasiukajtis
133425c28e83SPiotr Jasiukajtis	faddd	%f30,qq2,%f30
133525c28e83SPiotr Jasiukajtis	fmuld	%f24,pp2,%f28
133625c28e83SPiotr Jasiukajtis
133725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
133825c28e83SPiotr Jasiukajtis	faddd	%f4,pp1,%f4
133925c28e83SPiotr Jasiukajtis
134025c28e83SPiotr Jasiukajtis	faddd	%f14,pp1,%f14
134125c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
134225c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
134325c28e83SPiotr Jasiukajtis
134425c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
134525c28e83SPiotr Jasiukajtis	faddd	%f20,pp1,%f20
134625c28e83SPiotr Jasiukajtis
134725c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
134825c28e83SPiotr Jasiukajtis	faddd	%f28,pp1,%f28
134925c28e83SPiotr Jasiukajtis
135025c28e83SPiotr Jasiukajtis	faddd	%f6,qq1,%f6
135125c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
135225c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
135325c28e83SPiotr Jasiukajtis
135425c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
135525c28e83SPiotr Jasiukajtis
135625c28e83SPiotr Jasiukajtis	faddd	%f22,qq1,%f22
135725c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
135825c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
135925c28e83SPiotr Jasiukajtis
136025c28e83SPiotr Jasiukajtis	faddd	%f30,qq1,%f30
136125c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
136225c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
136325c28e83SPiotr Jasiukajtis
136425c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
136525c28e83SPiotr Jasiukajtis
136625c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
136725c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f8
136825c28e83SPiotr Jasiukajtis
136925c28e83SPiotr Jasiukajtis	fmuld	%f18,%f20,%f20
137025c28e83SPiotr Jasiukajtis
137125c28e83SPiotr Jasiukajtis	fmuld	%f26,%f28,%f28
137225c28e83SPiotr Jasiukajtis
137325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
137425c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
137525c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f0
137625c28e83SPiotr Jasiukajtis
137725c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
137825c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f14
137925c28e83SPiotr Jasiukajtis
138025c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
138125c28e83SPiotr Jasiukajtis	faddd	%f20,%f36,%f20
138225c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f16
138325c28e83SPiotr Jasiukajtis
138425c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
138525c28e83SPiotr Jasiukajtis	faddd	%f28,%f38,%f28
138625c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f24
138725c28e83SPiotr Jasiukajtis
138825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
138925c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
139025c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f32
139125c28e83SPiotr Jasiukajtis
139225c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f14
139325c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f34
139425c28e83SPiotr Jasiukajtis
139525c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
139625c28e83SPiotr Jasiukajtis	faddd	%f20,%f18,%f20
139725c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f36
139825c28e83SPiotr Jasiukajtis
139925c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
140025c28e83SPiotr Jasiukajtis	faddd	%f28,%f26,%f28
140125c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f38
140225c28e83SPiotr Jasiukajtis
140325c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
140425c28e83SPiotr Jasiukajtis
140525c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
140625c28e83SPiotr Jasiukajtis
140725c28e83SPiotr Jasiukajtis	fmuld	%f36,%f20,%f20
140825c28e83SPiotr Jasiukajtis
140925c28e83SPiotr Jasiukajtis	fmuld	%f38,%f28,%f28
141025c28e83SPiotr Jasiukajtis
141125c28e83SPiotr Jasiukajtis	fsubd	%f6,%f4,%f6
141225c28e83SPiotr Jasiukajtis
141325c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
141425c28e83SPiotr Jasiukajtis
141525c28e83SPiotr Jasiukajtis	fsubd	%f22,%f20,%f22
141625c28e83SPiotr Jasiukajtis
141725c28e83SPiotr Jasiukajtis	fsubd	%f30,%f28,%f30
141825c28e83SPiotr Jasiukajtis
141925c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
142025c28e83SPiotr Jasiukajtis
142125c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
142225c28e83SPiotr Jasiukajtis
142325c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
142425c28e83SPiotr Jasiukajtis
142525c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
142625c28e83SPiotr Jasiukajtis	mov	%l0,%l4
142725c28e83SPiotr Jasiukajtis
142825c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
142925c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
143025c28e83SPiotr Jasiukajtis
143125c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
143225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
143325c28e83SPiotr Jasiukajtis
143425c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
143525c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
143625c28e83SPiotr Jasiukajtis
143725c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
143825c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
143925c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
144025c28e83SPiotr Jasiukajtis
144125c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
144225c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
144325c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
144425c28e83SPiotr Jasiukajtis
144525c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
144625c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
144725c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
144825c28e83SPiotr Jasiukajtis
144925c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
145025c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
145125c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
145225c28e83SPiotr Jasiukajtis
145325c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
145425c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
145525c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
145625c28e83SPiotr Jasiukajtis
145725c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
145825c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
145925c28e83SPiotr Jasiukajtis! delay slot
146025c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
146125c28e83SPiotr Jasiukajtis
146225c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
146325c28e83SPiotr Jasiukajtis! delay slot
146425c28e83SPiotr Jasiukajtis	nop
146525c28e83SPiotr Jasiukajtis
146625c28e83SPiotr Jasiukajtis	.align	16
146725c28e83SPiotr Jasiukajtis.case5:
146825c28e83SPiotr Jasiukajtis	fmuld	%f8,pp3,%f14		! sin(x1)
146925c28e83SPiotr Jasiukajtis
147025c28e83SPiotr Jasiukajtis	fmuld	%f24,pp3,%f30		! sin(x3)
147125c28e83SPiotr Jasiukajtis
147225c28e83SPiotr Jasiukajtis	fmuld	%f0,qq3,%f6		! cos(x0)
147325c28e83SPiotr Jasiukajtis
147425c28e83SPiotr Jasiukajtis	faddd	%f14,pp2,%f14
147525c28e83SPiotr Jasiukajtis	fmuld	%f8,qq2,%f12
147625c28e83SPiotr Jasiukajtis
147725c28e83SPiotr Jasiukajtis	fmuld	%f16,qq3,%f22		! cos(x2)
147825c28e83SPiotr Jasiukajtis
147925c28e83SPiotr Jasiukajtis	faddd	%f30,pp2,%f30
148025c28e83SPiotr Jasiukajtis	fmuld	%f24,qq2,%f28
148125c28e83SPiotr Jasiukajtis
148225c28e83SPiotr Jasiukajtis	faddd	%f6,qq2,%f6
148325c28e83SPiotr Jasiukajtis	fmuld	%f0,pp2,%f4
148425c28e83SPiotr Jasiukajtis
148525c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
148625c28e83SPiotr Jasiukajtis	faddd	%f12,qq1,%f12
148725c28e83SPiotr Jasiukajtis
148825c28e83SPiotr Jasiukajtis	faddd	%f22,qq2,%f22
148925c28e83SPiotr Jasiukajtis	fmuld	%f16,pp2,%f20
149025c28e83SPiotr Jasiukajtis
149125c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
149225c28e83SPiotr Jasiukajtis	faddd	%f28,qq1,%f28
149325c28e83SPiotr Jasiukajtis
149425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
149525c28e83SPiotr Jasiukajtis	faddd	%f4,pp1,%f4
149625c28e83SPiotr Jasiukajtis
149725c28e83SPiotr Jasiukajtis	faddd	%f14,pp1,%f14
149825c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
149925c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
150025c28e83SPiotr Jasiukajtis
150125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
150225c28e83SPiotr Jasiukajtis	faddd	%f20,pp1,%f20
150325c28e83SPiotr Jasiukajtis
150425c28e83SPiotr Jasiukajtis	faddd	%f30,pp1,%f30
150525c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
150625c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
150725c28e83SPiotr Jasiukajtis
150825c28e83SPiotr Jasiukajtis	faddd	%f6,qq1,%f6
150925c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
151025c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
151125c28e83SPiotr Jasiukajtis
151225c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
151325c28e83SPiotr Jasiukajtis
151425c28e83SPiotr Jasiukajtis	faddd	%f22,qq1,%f22
151525c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
151625c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
151725c28e83SPiotr Jasiukajtis
151825c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
151925c28e83SPiotr Jasiukajtis
152025c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
152125c28e83SPiotr Jasiukajtis
152225c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
152325c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f8
152425c28e83SPiotr Jasiukajtis
152525c28e83SPiotr Jasiukajtis	fmuld	%f18,%f20,%f20
152625c28e83SPiotr Jasiukajtis
152725c28e83SPiotr Jasiukajtis	fmuld	%f26,%f30,%f30
152825c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f24
152925c28e83SPiotr Jasiukajtis
153025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
153125c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
153225c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f0
153325c28e83SPiotr Jasiukajtis
153425c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
153525c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f14
153625c28e83SPiotr Jasiukajtis
153725c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
153825c28e83SPiotr Jasiukajtis	faddd	%f20,%f36,%f20
153925c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f16
154025c28e83SPiotr Jasiukajtis
154125c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
154225c28e83SPiotr Jasiukajtis	faddd	%f38,%f30,%f30
154325c28e83SPiotr Jasiukajtis
154425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
154525c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
154625c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f32
154725c28e83SPiotr Jasiukajtis
154825c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f14
154925c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f34
155025c28e83SPiotr Jasiukajtis
155125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
155225c28e83SPiotr Jasiukajtis	faddd	%f20,%f18,%f20
155325c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f36
155425c28e83SPiotr Jasiukajtis
155525c28e83SPiotr Jasiukajtis	faddd	%f26,%f30,%f30
155625c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f38
155725c28e83SPiotr Jasiukajtis
155825c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
155925c28e83SPiotr Jasiukajtis
156025c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
156125c28e83SPiotr Jasiukajtis
156225c28e83SPiotr Jasiukajtis	fmuld	%f36,%f20,%f20
156325c28e83SPiotr Jasiukajtis
156425c28e83SPiotr Jasiukajtis	fmuld	%f38,%f30,%f30
156525c28e83SPiotr Jasiukajtis
156625c28e83SPiotr Jasiukajtis	fsubd	%f6,%f4,%f6
156725c28e83SPiotr Jasiukajtis
156825c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
156925c28e83SPiotr Jasiukajtis
157025c28e83SPiotr Jasiukajtis	fsubd	%f22,%f20,%f22
157125c28e83SPiotr Jasiukajtis
157225c28e83SPiotr Jasiukajtis	faddd	%f30,%f28,%f30
157325c28e83SPiotr Jasiukajtis
157425c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
157525c28e83SPiotr Jasiukajtis
157625c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
157725c28e83SPiotr Jasiukajtis
157825c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
157925c28e83SPiotr Jasiukajtis
158025c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
158125c28e83SPiotr Jasiukajtis	mov	%l0,%l4
158225c28e83SPiotr Jasiukajtis
158325c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
158425c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
158525c28e83SPiotr Jasiukajtis
158625c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
158725c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
158825c28e83SPiotr Jasiukajtis
158925c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
159025c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
159125c28e83SPiotr Jasiukajtis
159225c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
159325c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
159425c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
159525c28e83SPiotr Jasiukajtis
159625c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
159725c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
159825c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
159925c28e83SPiotr Jasiukajtis
160025c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
160125c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
160225c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
160325c28e83SPiotr Jasiukajtis
160425c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
160525c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
160625c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
160725c28e83SPiotr Jasiukajtis
160825c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
160925c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
161025c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
161125c28e83SPiotr Jasiukajtis
161225c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
161325c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
161425c28e83SPiotr Jasiukajtis! delay slot
161525c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
161625c28e83SPiotr Jasiukajtis
161725c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
161825c28e83SPiotr Jasiukajtis! delay slot
161925c28e83SPiotr Jasiukajtis	nop
162025c28e83SPiotr Jasiukajtis
162125c28e83SPiotr Jasiukajtis	.align	16
162225c28e83SPiotr Jasiukajtis.case6:
162325c28e83SPiotr Jasiukajtis	fmuld	%f26,%f26,%f24
162425c28e83SPiotr Jasiukajtis	andcc	%l3,1,%g0
162525c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case7
162625c28e83SPiotr Jasiukajtis! delay slot
162725c28e83SPiotr Jasiukajtis	fxor	%f30,%f38,%f38
162825c28e83SPiotr Jasiukajtis
162925c28e83SPiotr Jasiukajtis	fmuld	%f8,pp3,%f14		! sin(x1)
163025c28e83SPiotr Jasiukajtis
163125c28e83SPiotr Jasiukajtis	fmuld	%f16,pp3,%f22		! sin(x2)
163225c28e83SPiotr Jasiukajtis
163325c28e83SPiotr Jasiukajtis	fmuld	%f0,qq3,%f6		! cos(x0)
163425c28e83SPiotr Jasiukajtis
163525c28e83SPiotr Jasiukajtis	faddd	%f14,pp2,%f14
163625c28e83SPiotr Jasiukajtis	fmuld	%f8,qq2,%f12
163725c28e83SPiotr Jasiukajtis
163825c28e83SPiotr Jasiukajtis	faddd	%f22,pp2,%f22
163925c28e83SPiotr Jasiukajtis	fmuld	%f16,qq2,%f20
164025c28e83SPiotr Jasiukajtis
164125c28e83SPiotr Jasiukajtis	fmuld	%f24,qq3,%f30		! cos(x3)
164225c28e83SPiotr Jasiukajtis
164325c28e83SPiotr Jasiukajtis	faddd	%f6,qq2,%f6
164425c28e83SPiotr Jasiukajtis	fmuld	%f0,pp2,%f4
164525c28e83SPiotr Jasiukajtis
164625c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
164725c28e83SPiotr Jasiukajtis	faddd	%f12,qq1,%f12
164825c28e83SPiotr Jasiukajtis
164925c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
165025c28e83SPiotr Jasiukajtis	faddd	%f20,qq1,%f20
165125c28e83SPiotr Jasiukajtis
165225c28e83SPiotr Jasiukajtis	faddd	%f30,qq2,%f30
165325c28e83SPiotr Jasiukajtis	fmuld	%f24,pp2,%f28
165425c28e83SPiotr Jasiukajtis
165525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
165625c28e83SPiotr Jasiukajtis	faddd	%f4,pp1,%f4
165725c28e83SPiotr Jasiukajtis
165825c28e83SPiotr Jasiukajtis	faddd	%f14,pp1,%f14
165925c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
166025c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
166125c28e83SPiotr Jasiukajtis
166225c28e83SPiotr Jasiukajtis	faddd	%f22,pp1,%f22
166325c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
166425c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
166525c28e83SPiotr Jasiukajtis
166625c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
166725c28e83SPiotr Jasiukajtis	faddd	%f28,pp1,%f28
166825c28e83SPiotr Jasiukajtis
166925c28e83SPiotr Jasiukajtis	faddd	%f6,qq1,%f6
167025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
167125c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
167225c28e83SPiotr Jasiukajtis
167325c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
167425c28e83SPiotr Jasiukajtis
167525c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
167625c28e83SPiotr Jasiukajtis
167725c28e83SPiotr Jasiukajtis	faddd	%f30,qq1,%f30
167825c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
167925c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
168025c28e83SPiotr Jasiukajtis
168125c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
168225c28e83SPiotr Jasiukajtis
168325c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
168425c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f8
168525c28e83SPiotr Jasiukajtis
168625c28e83SPiotr Jasiukajtis	fmuld	%f18,%f22,%f22
168725c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f16
168825c28e83SPiotr Jasiukajtis
168925c28e83SPiotr Jasiukajtis	fmuld	%f26,%f28,%f28
169025c28e83SPiotr Jasiukajtis
169125c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
169225c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
169325c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f0
169425c28e83SPiotr Jasiukajtis
169525c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
169625c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f14
169725c28e83SPiotr Jasiukajtis
169825c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
169925c28e83SPiotr Jasiukajtis	faddd	%f36,%f22,%f22
170025c28e83SPiotr Jasiukajtis
170125c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
170225c28e83SPiotr Jasiukajtis	faddd	%f28,%f38,%f28
170325c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f24
170425c28e83SPiotr Jasiukajtis
170525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
170625c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
170725c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f32
170825c28e83SPiotr Jasiukajtis
170925c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f14
171025c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f34
171125c28e83SPiotr Jasiukajtis
171225c28e83SPiotr Jasiukajtis	faddd	%f18,%f22,%f22
171325c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f36
171425c28e83SPiotr Jasiukajtis
171525c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
171625c28e83SPiotr Jasiukajtis	faddd	%f28,%f26,%f28
171725c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f38
171825c28e83SPiotr Jasiukajtis
171925c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
172025c28e83SPiotr Jasiukajtis
172125c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
172225c28e83SPiotr Jasiukajtis
172325c28e83SPiotr Jasiukajtis	fmuld	%f36,%f22,%f22
172425c28e83SPiotr Jasiukajtis
172525c28e83SPiotr Jasiukajtis	fmuld	%f38,%f28,%f28
172625c28e83SPiotr Jasiukajtis
172725c28e83SPiotr Jasiukajtis	fsubd	%f6,%f4,%f6
172825c28e83SPiotr Jasiukajtis
172925c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
173025c28e83SPiotr Jasiukajtis
173125c28e83SPiotr Jasiukajtis	faddd	%f22,%f20,%f22
173225c28e83SPiotr Jasiukajtis
173325c28e83SPiotr Jasiukajtis	fsubd	%f30,%f28,%f30
173425c28e83SPiotr Jasiukajtis
173525c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
173625c28e83SPiotr Jasiukajtis
173725c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
173825c28e83SPiotr Jasiukajtis
173925c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
174025c28e83SPiotr Jasiukajtis
174125c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
174225c28e83SPiotr Jasiukajtis	mov	%l0,%l4
174325c28e83SPiotr Jasiukajtis
174425c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
174525c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
174625c28e83SPiotr Jasiukajtis
174725c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
174825c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
174925c28e83SPiotr Jasiukajtis
175025c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
175125c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
175225c28e83SPiotr Jasiukajtis
175325c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
175425c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
175525c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
175625c28e83SPiotr Jasiukajtis
175725c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
175825c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
175925c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
176025c28e83SPiotr Jasiukajtis
176125c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
176225c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
176325c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
176425c28e83SPiotr Jasiukajtis
176525c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
176625c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
176725c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
176825c28e83SPiotr Jasiukajtis
176925c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
177025c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
177125c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
177225c28e83SPiotr Jasiukajtis
177325c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
177425c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
177525c28e83SPiotr Jasiukajtis! delay slot
177625c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
177725c28e83SPiotr Jasiukajtis
177825c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
177925c28e83SPiotr Jasiukajtis! delay slot
178025c28e83SPiotr Jasiukajtis	nop
178125c28e83SPiotr Jasiukajtis
178225c28e83SPiotr Jasiukajtis	.align	16
178325c28e83SPiotr Jasiukajtis.case7:
178425c28e83SPiotr Jasiukajtis	fmuld	%f8,pp3,%f14		! sin(x1)
178525c28e83SPiotr Jasiukajtis
178625c28e83SPiotr Jasiukajtis	fmuld	%f16,pp3,%f22		! sin(x2)
178725c28e83SPiotr Jasiukajtis
178825c28e83SPiotr Jasiukajtis	fmuld	%f24,pp3,%f30		! sin(x3)
178925c28e83SPiotr Jasiukajtis
179025c28e83SPiotr Jasiukajtis	fmuld	%f0,qq3,%f6		! cos(x0)
179125c28e83SPiotr Jasiukajtis
179225c28e83SPiotr Jasiukajtis	faddd	%f14,pp2,%f14
179325c28e83SPiotr Jasiukajtis	fmuld	%f8,qq2,%f12
179425c28e83SPiotr Jasiukajtis
179525c28e83SPiotr Jasiukajtis	faddd	%f22,pp2,%f22
179625c28e83SPiotr Jasiukajtis	fmuld	%f16,qq2,%f20
179725c28e83SPiotr Jasiukajtis
179825c28e83SPiotr Jasiukajtis	faddd	%f30,pp2,%f30
179925c28e83SPiotr Jasiukajtis	fmuld	%f24,qq2,%f28
180025c28e83SPiotr Jasiukajtis
180125c28e83SPiotr Jasiukajtis	faddd	%f6,qq2,%f6
180225c28e83SPiotr Jasiukajtis	fmuld	%f0,pp2,%f4
180325c28e83SPiotr Jasiukajtis
180425c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
180525c28e83SPiotr Jasiukajtis	faddd	%f12,qq1,%f12
180625c28e83SPiotr Jasiukajtis
180725c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
180825c28e83SPiotr Jasiukajtis	faddd	%f20,qq1,%f20
180925c28e83SPiotr Jasiukajtis
181025c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
181125c28e83SPiotr Jasiukajtis	faddd	%f28,qq1,%f28
181225c28e83SPiotr Jasiukajtis
181325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
181425c28e83SPiotr Jasiukajtis	faddd	%f4,pp1,%f4
181525c28e83SPiotr Jasiukajtis
181625c28e83SPiotr Jasiukajtis	faddd	%f14,pp1,%f14
181725c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
181825c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
181925c28e83SPiotr Jasiukajtis
182025c28e83SPiotr Jasiukajtis	faddd	%f22,pp1,%f22
182125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
182225c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
182325c28e83SPiotr Jasiukajtis
182425c28e83SPiotr Jasiukajtis	faddd	%f30,pp1,%f30
182525c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
182625c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
182725c28e83SPiotr Jasiukajtis
182825c28e83SPiotr Jasiukajtis	faddd	%f6,qq1,%f6
182925c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
183025c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
183125c28e83SPiotr Jasiukajtis
183225c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
183325c28e83SPiotr Jasiukajtis
183425c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
183525c28e83SPiotr Jasiukajtis
183625c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
183725c28e83SPiotr Jasiukajtis
183825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f4,%f4
183925c28e83SPiotr Jasiukajtis
184025c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
184125c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f8
184225c28e83SPiotr Jasiukajtis
184325c28e83SPiotr Jasiukajtis	fmuld	%f18,%f22,%f22
184425c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f16
184525c28e83SPiotr Jasiukajtis
184625c28e83SPiotr Jasiukajtis	fmuld	%f26,%f30,%f30
184725c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f24
184825c28e83SPiotr Jasiukajtis
184925c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
185025c28e83SPiotr Jasiukajtis	faddd	%f4,%f32,%f4
185125c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f0
185225c28e83SPiotr Jasiukajtis
185325c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
185425c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f14
185525c28e83SPiotr Jasiukajtis
185625c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
185725c28e83SPiotr Jasiukajtis	faddd	%f36,%f22,%f22
185825c28e83SPiotr Jasiukajtis
185925c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
186025c28e83SPiotr Jasiukajtis	faddd	%f38,%f30,%f30
186125c28e83SPiotr Jasiukajtis
186225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
186325c28e83SPiotr Jasiukajtis	faddd	%f4,%f2,%f4
186425c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f32
186525c28e83SPiotr Jasiukajtis
186625c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f14
186725c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f34
186825c28e83SPiotr Jasiukajtis
186925c28e83SPiotr Jasiukajtis	faddd	%f18,%f22,%f22
187025c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f36
187125c28e83SPiotr Jasiukajtis
187225c28e83SPiotr Jasiukajtis	faddd	%f26,%f30,%f30
187325c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f38
187425c28e83SPiotr Jasiukajtis
187525c28e83SPiotr Jasiukajtis	fmuld	%f32,%f4,%f4
187625c28e83SPiotr Jasiukajtis
187725c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
187825c28e83SPiotr Jasiukajtis
187925c28e83SPiotr Jasiukajtis	fmuld	%f36,%f22,%f22
188025c28e83SPiotr Jasiukajtis
188125c28e83SPiotr Jasiukajtis	fmuld	%f38,%f30,%f30
188225c28e83SPiotr Jasiukajtis
188325c28e83SPiotr Jasiukajtis	fsubd	%f6,%f4,%f6
188425c28e83SPiotr Jasiukajtis
188525c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
188625c28e83SPiotr Jasiukajtis
188725c28e83SPiotr Jasiukajtis	faddd	%f22,%f20,%f22
188825c28e83SPiotr Jasiukajtis
188925c28e83SPiotr Jasiukajtis	faddd	%f30,%f28,%f30
189025c28e83SPiotr Jasiukajtis
189125c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
189225c28e83SPiotr Jasiukajtis
189325c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
189425c28e83SPiotr Jasiukajtis
189525c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
189625c28e83SPiotr Jasiukajtis
189725c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
189825c28e83SPiotr Jasiukajtis	mov	%l0,%l4
189925c28e83SPiotr Jasiukajtis
190025c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
190125c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
190225c28e83SPiotr Jasiukajtis
190325c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
190425c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
190525c28e83SPiotr Jasiukajtis
190625c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
190725c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
190825c28e83SPiotr Jasiukajtis
190925c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
191025c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
191125c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
191225c28e83SPiotr Jasiukajtis
191325c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
191425c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
191525c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
191625c28e83SPiotr Jasiukajtis
191725c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
191825c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
191925c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
192025c28e83SPiotr Jasiukajtis
192125c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
192225c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
192325c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
192425c28e83SPiotr Jasiukajtis
192525c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
192625c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
192725c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
192825c28e83SPiotr Jasiukajtis
192925c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
193025c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
193125c28e83SPiotr Jasiukajtis! delay slot
193225c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
193325c28e83SPiotr Jasiukajtis
193425c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
193525c28e83SPiotr Jasiukajtis! delay slot
193625c28e83SPiotr Jasiukajtis	nop
193725c28e83SPiotr Jasiukajtis
193825c28e83SPiotr Jasiukajtis	.align	16
193925c28e83SPiotr Jasiukajtis.case8:
194025c28e83SPiotr Jasiukajtis	fmuld	%f10,%f10,%f8
194125c28e83SPiotr Jasiukajtis	andcc	%l1,1,%g0
194225c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case12
194325c28e83SPiotr Jasiukajtis! delay slot
194425c28e83SPiotr Jasiukajtis	fxor	%f14,%f34,%f34
194525c28e83SPiotr Jasiukajtis
194625c28e83SPiotr Jasiukajtis	fmuld	%f18,%f18,%f16
194725c28e83SPiotr Jasiukajtis	andcc	%l2,1,%g0
194825c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case10
194925c28e83SPiotr Jasiukajtis! delay slot
195025c28e83SPiotr Jasiukajtis	fxor	%f22,%f36,%f36
195125c28e83SPiotr Jasiukajtis
195225c28e83SPiotr Jasiukajtis	fmuld	%f26,%f26,%f24
195325c28e83SPiotr Jasiukajtis	andcc	%l3,1,%g0
195425c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case9
195525c28e83SPiotr Jasiukajtis! delay slot
195625c28e83SPiotr Jasiukajtis	fxor	%f30,%f38,%f38
195725c28e83SPiotr Jasiukajtis
195825c28e83SPiotr Jasiukajtis	fmuld	%f0,pp3,%f6		! sin(x0)
195925c28e83SPiotr Jasiukajtis
196025c28e83SPiotr Jasiukajtis	faddd	%f6,pp2,%f6
196125c28e83SPiotr Jasiukajtis	fmuld	%f0,qq2,%f4
196225c28e83SPiotr Jasiukajtis
196325c28e83SPiotr Jasiukajtis	fmuld	%f8,qq3,%f14		! cos(x1)
196425c28e83SPiotr Jasiukajtis
196525c28e83SPiotr Jasiukajtis	fmuld	%f16,qq3,%f22		! cos(x2)
196625c28e83SPiotr Jasiukajtis
196725c28e83SPiotr Jasiukajtis	fmuld	%f24,qq3,%f30		! cos(x3)
196825c28e83SPiotr Jasiukajtis
196925c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
197025c28e83SPiotr Jasiukajtis	faddd	%f4,qq1,%f4
197125c28e83SPiotr Jasiukajtis
197225c28e83SPiotr Jasiukajtis	faddd	%f14,qq2,%f14
197325c28e83SPiotr Jasiukajtis	fmuld	%f8,pp2,%f12
197425c28e83SPiotr Jasiukajtis
197525c28e83SPiotr Jasiukajtis	faddd	%f22,qq2,%f22
197625c28e83SPiotr Jasiukajtis	fmuld	%f16,pp2,%f20
197725c28e83SPiotr Jasiukajtis
197825c28e83SPiotr Jasiukajtis	faddd	%f30,qq2,%f30
197925c28e83SPiotr Jasiukajtis	fmuld	%f24,pp2,%f28
198025c28e83SPiotr Jasiukajtis
198125c28e83SPiotr Jasiukajtis	faddd	%f6,pp1,%f6
198225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
198325c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
198425c28e83SPiotr Jasiukajtis
198525c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
198625c28e83SPiotr Jasiukajtis	faddd	%f12,pp1,%f12
198725c28e83SPiotr Jasiukajtis
198825c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
198925c28e83SPiotr Jasiukajtis	faddd	%f20,pp1,%f20
199025c28e83SPiotr Jasiukajtis
199125c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
199225c28e83SPiotr Jasiukajtis	faddd	%f28,pp1,%f28
199325c28e83SPiotr Jasiukajtis
199425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
199525c28e83SPiotr Jasiukajtis
199625c28e83SPiotr Jasiukajtis	faddd	%f14,qq1,%f14
199725c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
199825c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
199925c28e83SPiotr Jasiukajtis
200025c28e83SPiotr Jasiukajtis	faddd	%f22,qq1,%f22
200125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
200225c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
200325c28e83SPiotr Jasiukajtis
200425c28e83SPiotr Jasiukajtis	faddd	%f30,qq1,%f30
200525c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
200625c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
200725c28e83SPiotr Jasiukajtis
200825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
200925c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f0
201025c28e83SPiotr Jasiukajtis
201125c28e83SPiotr Jasiukajtis	fmuld	%f10,%f12,%f12
201225c28e83SPiotr Jasiukajtis
201325c28e83SPiotr Jasiukajtis	fmuld	%f18,%f20,%f20
201425c28e83SPiotr Jasiukajtis
201525c28e83SPiotr Jasiukajtis	fmuld	%f26,%f28,%f28
201625c28e83SPiotr Jasiukajtis
201725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
201825c28e83SPiotr Jasiukajtis	faddd	%f32,%f6,%f6
201925c28e83SPiotr Jasiukajtis
202025c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
202125c28e83SPiotr Jasiukajtis	faddd	%f12,%f34,%f12
202225c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f8
202325c28e83SPiotr Jasiukajtis
202425c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
202525c28e83SPiotr Jasiukajtis	faddd	%f20,%f36,%f20
202625c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f16
202725c28e83SPiotr Jasiukajtis
202825c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
202925c28e83SPiotr Jasiukajtis	faddd	%f28,%f38,%f28
203025c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f24
203125c28e83SPiotr Jasiukajtis
203225c28e83SPiotr Jasiukajtis	faddd	%f2,%f6,%f6
203325c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f32
203425c28e83SPiotr Jasiukajtis
203525c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
203625c28e83SPiotr Jasiukajtis	faddd	%f12,%f10,%f12
203725c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f34
203825c28e83SPiotr Jasiukajtis
203925c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
204025c28e83SPiotr Jasiukajtis	faddd	%f20,%f18,%f20
204125c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f36
204225c28e83SPiotr Jasiukajtis
204325c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
204425c28e83SPiotr Jasiukajtis	faddd	%f28,%f26,%f28
204525c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f38
204625c28e83SPiotr Jasiukajtis
204725c28e83SPiotr Jasiukajtis	fmuld	%f32,%f6,%f6
204825c28e83SPiotr Jasiukajtis
204925c28e83SPiotr Jasiukajtis	fmuld	%f34,%f12,%f12
205025c28e83SPiotr Jasiukajtis
205125c28e83SPiotr Jasiukajtis	fmuld	%f36,%f20,%f20
205225c28e83SPiotr Jasiukajtis
205325c28e83SPiotr Jasiukajtis	fmuld	%f38,%f28,%f28
205425c28e83SPiotr Jasiukajtis
205525c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
205625c28e83SPiotr Jasiukajtis
205725c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f14
205825c28e83SPiotr Jasiukajtis
205925c28e83SPiotr Jasiukajtis	fsubd	%f22,%f20,%f22
206025c28e83SPiotr Jasiukajtis
206125c28e83SPiotr Jasiukajtis	fsubd	%f30,%f28,%f30
206225c28e83SPiotr Jasiukajtis
206325c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
206425c28e83SPiotr Jasiukajtis
206525c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
206625c28e83SPiotr Jasiukajtis
206725c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
206825c28e83SPiotr Jasiukajtis
206925c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
207025c28e83SPiotr Jasiukajtis	mov	%l0,%l4
207125c28e83SPiotr Jasiukajtis
207225c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
207325c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
207425c28e83SPiotr Jasiukajtis
207525c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
207625c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
207725c28e83SPiotr Jasiukajtis
207825c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
207925c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
208025c28e83SPiotr Jasiukajtis
208125c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
208225c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
208325c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
208425c28e83SPiotr Jasiukajtis
208525c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
208625c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
208725c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
208825c28e83SPiotr Jasiukajtis
208925c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
209025c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
209125c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
209225c28e83SPiotr Jasiukajtis
209325c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
209425c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
209525c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
209625c28e83SPiotr Jasiukajtis
209725c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
209825c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
209925c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
210025c28e83SPiotr Jasiukajtis
210125c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
210225c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
210325c28e83SPiotr Jasiukajtis! delay slot
210425c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
210525c28e83SPiotr Jasiukajtis
210625c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
210725c28e83SPiotr Jasiukajtis! delay slot
210825c28e83SPiotr Jasiukajtis	nop
210925c28e83SPiotr Jasiukajtis
211025c28e83SPiotr Jasiukajtis	.align	16
211125c28e83SPiotr Jasiukajtis.case9:
211225c28e83SPiotr Jasiukajtis	fmuld	%f0,pp3,%f6		! sin(x0)
211325c28e83SPiotr Jasiukajtis
211425c28e83SPiotr Jasiukajtis	fmuld	%f24,pp3,%f30		! sin(x3)
211525c28e83SPiotr Jasiukajtis
211625c28e83SPiotr Jasiukajtis	faddd	%f6,pp2,%f6
211725c28e83SPiotr Jasiukajtis	fmuld	%f0,qq2,%f4
211825c28e83SPiotr Jasiukajtis
211925c28e83SPiotr Jasiukajtis	fmuld	%f8,qq3,%f14		! cos(x1)
212025c28e83SPiotr Jasiukajtis
212125c28e83SPiotr Jasiukajtis	fmuld	%f16,qq3,%f22		! cos(x2)
212225c28e83SPiotr Jasiukajtis
212325c28e83SPiotr Jasiukajtis	faddd	%f30,pp2,%f30
212425c28e83SPiotr Jasiukajtis	fmuld	%f24,qq2,%f28
212525c28e83SPiotr Jasiukajtis
212625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
212725c28e83SPiotr Jasiukajtis	faddd	%f4,qq1,%f4
212825c28e83SPiotr Jasiukajtis
212925c28e83SPiotr Jasiukajtis	faddd	%f14,qq2,%f14
213025c28e83SPiotr Jasiukajtis	fmuld	%f8,pp2,%f12
213125c28e83SPiotr Jasiukajtis
213225c28e83SPiotr Jasiukajtis	faddd	%f22,qq2,%f22
213325c28e83SPiotr Jasiukajtis	fmuld	%f16,pp2,%f20
213425c28e83SPiotr Jasiukajtis
213525c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
213625c28e83SPiotr Jasiukajtis	faddd	%f28,qq1,%f28
213725c28e83SPiotr Jasiukajtis
213825c28e83SPiotr Jasiukajtis	faddd	%f6,pp1,%f6
213925c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
214025c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
214125c28e83SPiotr Jasiukajtis
214225c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
214325c28e83SPiotr Jasiukajtis	faddd	%f12,pp1,%f12
214425c28e83SPiotr Jasiukajtis
214525c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
214625c28e83SPiotr Jasiukajtis	faddd	%f20,pp1,%f20
214725c28e83SPiotr Jasiukajtis
214825c28e83SPiotr Jasiukajtis	faddd	%f30,pp1,%f30
214925c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
215025c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
215125c28e83SPiotr Jasiukajtis
215225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
215325c28e83SPiotr Jasiukajtis
215425c28e83SPiotr Jasiukajtis	faddd	%f14,qq1,%f14
215525c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
215625c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
215725c28e83SPiotr Jasiukajtis
215825c28e83SPiotr Jasiukajtis	faddd	%f22,qq1,%f22
215925c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
216025c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
216125c28e83SPiotr Jasiukajtis
216225c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
216325c28e83SPiotr Jasiukajtis
216425c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
216525c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f0
216625c28e83SPiotr Jasiukajtis
216725c28e83SPiotr Jasiukajtis	fmuld	%f10,%f12,%f12
216825c28e83SPiotr Jasiukajtis
216925c28e83SPiotr Jasiukajtis	fmuld	%f18,%f20,%f20
217025c28e83SPiotr Jasiukajtis
217125c28e83SPiotr Jasiukajtis	fmuld	%f26,%f30,%f30
217225c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f24
217325c28e83SPiotr Jasiukajtis
217425c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
217525c28e83SPiotr Jasiukajtis	faddd	%f32,%f6,%f6
217625c28e83SPiotr Jasiukajtis
217725c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
217825c28e83SPiotr Jasiukajtis	faddd	%f12,%f34,%f12
217925c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f8
218025c28e83SPiotr Jasiukajtis
218125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
218225c28e83SPiotr Jasiukajtis	faddd	%f20,%f36,%f20
218325c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f16
218425c28e83SPiotr Jasiukajtis
218525c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
218625c28e83SPiotr Jasiukajtis	faddd	%f38,%f30,%f30
218725c28e83SPiotr Jasiukajtis
218825c28e83SPiotr Jasiukajtis	faddd	%f2,%f6,%f6
218925c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f32
219025c28e83SPiotr Jasiukajtis
219125c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
219225c28e83SPiotr Jasiukajtis	faddd	%f12,%f10,%f12
219325c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f34
219425c28e83SPiotr Jasiukajtis
219525c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
219625c28e83SPiotr Jasiukajtis	faddd	%f20,%f18,%f20
219725c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f36
219825c28e83SPiotr Jasiukajtis
219925c28e83SPiotr Jasiukajtis	faddd	%f26,%f30,%f30
220025c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f38
220125c28e83SPiotr Jasiukajtis
220225c28e83SPiotr Jasiukajtis	fmuld	%f32,%f6,%f6
220325c28e83SPiotr Jasiukajtis
220425c28e83SPiotr Jasiukajtis	fmuld	%f34,%f12,%f12
220525c28e83SPiotr Jasiukajtis
220625c28e83SPiotr Jasiukajtis	fmuld	%f36,%f20,%f20
220725c28e83SPiotr Jasiukajtis
220825c28e83SPiotr Jasiukajtis	fmuld	%f38,%f30,%f30
220925c28e83SPiotr Jasiukajtis
221025c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
221125c28e83SPiotr Jasiukajtis
221225c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f14
221325c28e83SPiotr Jasiukajtis
221425c28e83SPiotr Jasiukajtis	fsubd	%f22,%f20,%f22
221525c28e83SPiotr Jasiukajtis
221625c28e83SPiotr Jasiukajtis	faddd	%f30,%f28,%f30
221725c28e83SPiotr Jasiukajtis
221825c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
221925c28e83SPiotr Jasiukajtis
222025c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
222125c28e83SPiotr Jasiukajtis
222225c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
222325c28e83SPiotr Jasiukajtis
222425c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
222525c28e83SPiotr Jasiukajtis	mov	%l0,%l4
222625c28e83SPiotr Jasiukajtis
222725c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
222825c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
222925c28e83SPiotr Jasiukajtis
223025c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
223125c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
223225c28e83SPiotr Jasiukajtis
223325c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
223425c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
223525c28e83SPiotr Jasiukajtis
223625c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
223725c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
223825c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
223925c28e83SPiotr Jasiukajtis
224025c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
224125c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
224225c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
224325c28e83SPiotr Jasiukajtis
224425c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
224525c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
224625c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
224725c28e83SPiotr Jasiukajtis
224825c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
224925c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
225025c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
225125c28e83SPiotr Jasiukajtis
225225c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
225325c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
225425c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
225525c28e83SPiotr Jasiukajtis
225625c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
225725c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
225825c28e83SPiotr Jasiukajtis! delay slot
225925c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
226025c28e83SPiotr Jasiukajtis
226125c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
226225c28e83SPiotr Jasiukajtis! delay slot
226325c28e83SPiotr Jasiukajtis	nop
226425c28e83SPiotr Jasiukajtis
226525c28e83SPiotr Jasiukajtis	.align	16
226625c28e83SPiotr Jasiukajtis.case10:
226725c28e83SPiotr Jasiukajtis	fmuld	%f26,%f26,%f24
226825c28e83SPiotr Jasiukajtis	andcc	%l3,1,%g0
226925c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case11
227025c28e83SPiotr Jasiukajtis! delay slot
227125c28e83SPiotr Jasiukajtis	fxor	%f30,%f38,%f38
227225c28e83SPiotr Jasiukajtis
227325c28e83SPiotr Jasiukajtis	fmuld	%f0,pp3,%f6		! sin(x0)
227425c28e83SPiotr Jasiukajtis
227525c28e83SPiotr Jasiukajtis	fmuld	%f16,pp3,%f22		! sin(x2)
227625c28e83SPiotr Jasiukajtis
227725c28e83SPiotr Jasiukajtis	faddd	%f6,pp2,%f6
227825c28e83SPiotr Jasiukajtis	fmuld	%f0,qq2,%f4
227925c28e83SPiotr Jasiukajtis
228025c28e83SPiotr Jasiukajtis	fmuld	%f8,qq3,%f14		! cos(x1)
228125c28e83SPiotr Jasiukajtis
228225c28e83SPiotr Jasiukajtis	faddd	%f22,pp2,%f22
228325c28e83SPiotr Jasiukajtis	fmuld	%f16,qq2,%f20
228425c28e83SPiotr Jasiukajtis
228525c28e83SPiotr Jasiukajtis	fmuld	%f24,qq3,%f30		! cos(x3)
228625c28e83SPiotr Jasiukajtis
228725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
228825c28e83SPiotr Jasiukajtis	faddd	%f4,qq1,%f4
228925c28e83SPiotr Jasiukajtis
229025c28e83SPiotr Jasiukajtis	faddd	%f14,qq2,%f14
229125c28e83SPiotr Jasiukajtis	fmuld	%f8,pp2,%f12
229225c28e83SPiotr Jasiukajtis
229325c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
229425c28e83SPiotr Jasiukajtis	faddd	%f20,qq1,%f20
229525c28e83SPiotr Jasiukajtis
229625c28e83SPiotr Jasiukajtis	faddd	%f30,qq2,%f30
229725c28e83SPiotr Jasiukajtis	fmuld	%f24,pp2,%f28
229825c28e83SPiotr Jasiukajtis
229925c28e83SPiotr Jasiukajtis	faddd	%f6,pp1,%f6
230025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
230125c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
230225c28e83SPiotr Jasiukajtis
230325c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
230425c28e83SPiotr Jasiukajtis	faddd	%f12,pp1,%f12
230525c28e83SPiotr Jasiukajtis
230625c28e83SPiotr Jasiukajtis	faddd	%f22,pp1,%f22
230725c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
230825c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
230925c28e83SPiotr Jasiukajtis
231025c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
231125c28e83SPiotr Jasiukajtis	faddd	%f28,pp1,%f28
231225c28e83SPiotr Jasiukajtis
231325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
231425c28e83SPiotr Jasiukajtis
231525c28e83SPiotr Jasiukajtis	faddd	%f14,qq1,%f14
231625c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
231725c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
231825c28e83SPiotr Jasiukajtis
231925c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
232025c28e83SPiotr Jasiukajtis
232125c28e83SPiotr Jasiukajtis	faddd	%f30,qq1,%f30
232225c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
232325c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
232425c28e83SPiotr Jasiukajtis
232525c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
232625c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f0
232725c28e83SPiotr Jasiukajtis
232825c28e83SPiotr Jasiukajtis	fmuld	%f10,%f12,%f12
232925c28e83SPiotr Jasiukajtis
233025c28e83SPiotr Jasiukajtis	fmuld	%f18,%f22,%f22
233125c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f16
233225c28e83SPiotr Jasiukajtis
233325c28e83SPiotr Jasiukajtis	fmuld	%f26,%f28,%f28
233425c28e83SPiotr Jasiukajtis
233525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
233625c28e83SPiotr Jasiukajtis	faddd	%f32,%f6,%f6
233725c28e83SPiotr Jasiukajtis
233825c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
233925c28e83SPiotr Jasiukajtis	faddd	%f12,%f34,%f12
234025c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f8
234125c28e83SPiotr Jasiukajtis
234225c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
234325c28e83SPiotr Jasiukajtis	faddd	%f36,%f22,%f22
234425c28e83SPiotr Jasiukajtis
234525c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
234625c28e83SPiotr Jasiukajtis	faddd	%f28,%f38,%f28
234725c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f24
234825c28e83SPiotr Jasiukajtis
234925c28e83SPiotr Jasiukajtis	faddd	%f2,%f6,%f6
235025c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f32
235125c28e83SPiotr Jasiukajtis
235225c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
235325c28e83SPiotr Jasiukajtis	faddd	%f12,%f10,%f12
235425c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f34
235525c28e83SPiotr Jasiukajtis
235625c28e83SPiotr Jasiukajtis	faddd	%f18,%f22,%f22
235725c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f36
235825c28e83SPiotr Jasiukajtis
235925c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
236025c28e83SPiotr Jasiukajtis	faddd	%f28,%f26,%f28
236125c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f38
236225c28e83SPiotr Jasiukajtis
236325c28e83SPiotr Jasiukajtis	fmuld	%f32,%f6,%f6
236425c28e83SPiotr Jasiukajtis
236525c28e83SPiotr Jasiukajtis	fmuld	%f34,%f12,%f12
236625c28e83SPiotr Jasiukajtis
236725c28e83SPiotr Jasiukajtis	fmuld	%f36,%f22,%f22
236825c28e83SPiotr Jasiukajtis
236925c28e83SPiotr Jasiukajtis	fmuld	%f38,%f28,%f28
237025c28e83SPiotr Jasiukajtis
237125c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
237225c28e83SPiotr Jasiukajtis
237325c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f14
237425c28e83SPiotr Jasiukajtis
237525c28e83SPiotr Jasiukajtis	faddd	%f22,%f20,%f22
237625c28e83SPiotr Jasiukajtis
237725c28e83SPiotr Jasiukajtis	fsubd	%f30,%f28,%f30
237825c28e83SPiotr Jasiukajtis
237925c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
238025c28e83SPiotr Jasiukajtis
238125c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
238225c28e83SPiotr Jasiukajtis
238325c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
238425c28e83SPiotr Jasiukajtis
238525c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
238625c28e83SPiotr Jasiukajtis	mov	%l0,%l4
238725c28e83SPiotr Jasiukajtis
238825c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
238925c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
239025c28e83SPiotr Jasiukajtis
239125c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
239225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
239325c28e83SPiotr Jasiukajtis
239425c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
239525c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
239625c28e83SPiotr Jasiukajtis
239725c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
239825c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
239925c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
240025c28e83SPiotr Jasiukajtis
240125c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
240225c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
240325c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
240425c28e83SPiotr Jasiukajtis
240525c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
240625c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
240725c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
240825c28e83SPiotr Jasiukajtis
240925c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
241025c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
241125c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
241225c28e83SPiotr Jasiukajtis
241325c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
241425c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
241525c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
241625c28e83SPiotr Jasiukajtis
241725c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
241825c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
241925c28e83SPiotr Jasiukajtis! delay slot
242025c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
242125c28e83SPiotr Jasiukajtis
242225c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
242325c28e83SPiotr Jasiukajtis! delay slot
242425c28e83SPiotr Jasiukajtis	nop
242525c28e83SPiotr Jasiukajtis
242625c28e83SPiotr Jasiukajtis	.align	16
242725c28e83SPiotr Jasiukajtis.case11:
242825c28e83SPiotr Jasiukajtis	fmuld	%f0,pp3,%f6		! sin(x0)
242925c28e83SPiotr Jasiukajtis
243025c28e83SPiotr Jasiukajtis	fmuld	%f16,pp3,%f22		! sin(x2)
243125c28e83SPiotr Jasiukajtis
243225c28e83SPiotr Jasiukajtis	fmuld	%f24,pp3,%f30		! sin(x3)
243325c28e83SPiotr Jasiukajtis
243425c28e83SPiotr Jasiukajtis	faddd	%f6,pp2,%f6
243525c28e83SPiotr Jasiukajtis	fmuld	%f0,qq2,%f4
243625c28e83SPiotr Jasiukajtis
243725c28e83SPiotr Jasiukajtis	fmuld	%f8,qq3,%f14		! cos(x1)
243825c28e83SPiotr Jasiukajtis
243925c28e83SPiotr Jasiukajtis	faddd	%f22,pp2,%f22
244025c28e83SPiotr Jasiukajtis	fmuld	%f16,qq2,%f20
244125c28e83SPiotr Jasiukajtis
244225c28e83SPiotr Jasiukajtis	faddd	%f30,pp2,%f30
244325c28e83SPiotr Jasiukajtis	fmuld	%f24,qq2,%f28
244425c28e83SPiotr Jasiukajtis
244525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
244625c28e83SPiotr Jasiukajtis	faddd	%f4,qq1,%f4
244725c28e83SPiotr Jasiukajtis
244825c28e83SPiotr Jasiukajtis	faddd	%f14,qq2,%f14
244925c28e83SPiotr Jasiukajtis	fmuld	%f8,pp2,%f12
245025c28e83SPiotr Jasiukajtis
245125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
245225c28e83SPiotr Jasiukajtis	faddd	%f20,qq1,%f20
245325c28e83SPiotr Jasiukajtis
245425c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
245525c28e83SPiotr Jasiukajtis	faddd	%f28,qq1,%f28
245625c28e83SPiotr Jasiukajtis
245725c28e83SPiotr Jasiukajtis	faddd	%f6,pp1,%f6
245825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
245925c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
246025c28e83SPiotr Jasiukajtis
246125c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
246225c28e83SPiotr Jasiukajtis	faddd	%f12,pp1,%f12
246325c28e83SPiotr Jasiukajtis
246425c28e83SPiotr Jasiukajtis	faddd	%f22,pp1,%f22
246525c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
246625c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
246725c28e83SPiotr Jasiukajtis
246825c28e83SPiotr Jasiukajtis	faddd	%f30,pp1,%f30
246925c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
247025c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
247125c28e83SPiotr Jasiukajtis
247225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
247325c28e83SPiotr Jasiukajtis
247425c28e83SPiotr Jasiukajtis	faddd	%f14,qq1,%f14
247525c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
247625c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
247725c28e83SPiotr Jasiukajtis
247825c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
247925c28e83SPiotr Jasiukajtis
248025c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
248125c28e83SPiotr Jasiukajtis
248225c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
248325c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f0
248425c28e83SPiotr Jasiukajtis
248525c28e83SPiotr Jasiukajtis	fmuld	%f10,%f12,%f12
248625c28e83SPiotr Jasiukajtis
248725c28e83SPiotr Jasiukajtis	fmuld	%f18,%f22,%f22
248825c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f16
248925c28e83SPiotr Jasiukajtis
249025c28e83SPiotr Jasiukajtis	fmuld	%f26,%f30,%f30
249125c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f24
249225c28e83SPiotr Jasiukajtis
249325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
249425c28e83SPiotr Jasiukajtis	faddd	%f32,%f6,%f6
249525c28e83SPiotr Jasiukajtis
249625c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
249725c28e83SPiotr Jasiukajtis	faddd	%f12,%f34,%f12
249825c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f8
249925c28e83SPiotr Jasiukajtis
250025c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
250125c28e83SPiotr Jasiukajtis	faddd	%f36,%f22,%f22
250225c28e83SPiotr Jasiukajtis
250325c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
250425c28e83SPiotr Jasiukajtis	faddd	%f38,%f30,%f30
250525c28e83SPiotr Jasiukajtis
250625c28e83SPiotr Jasiukajtis	faddd	%f2,%f6,%f6
250725c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f32
250825c28e83SPiotr Jasiukajtis
250925c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
251025c28e83SPiotr Jasiukajtis	faddd	%f12,%f10,%f12
251125c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f34
251225c28e83SPiotr Jasiukajtis
251325c28e83SPiotr Jasiukajtis	faddd	%f18,%f22,%f22
251425c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f36
251525c28e83SPiotr Jasiukajtis
251625c28e83SPiotr Jasiukajtis	faddd	%f26,%f30,%f30
251725c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f38
251825c28e83SPiotr Jasiukajtis
251925c28e83SPiotr Jasiukajtis	fmuld	%f32,%f6,%f6
252025c28e83SPiotr Jasiukajtis
252125c28e83SPiotr Jasiukajtis	fmuld	%f34,%f12,%f12
252225c28e83SPiotr Jasiukajtis
252325c28e83SPiotr Jasiukajtis	fmuld	%f36,%f22,%f22
252425c28e83SPiotr Jasiukajtis
252525c28e83SPiotr Jasiukajtis	fmuld	%f38,%f30,%f30
252625c28e83SPiotr Jasiukajtis
252725c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
252825c28e83SPiotr Jasiukajtis
252925c28e83SPiotr Jasiukajtis	fsubd	%f14,%f12,%f14
253025c28e83SPiotr Jasiukajtis
253125c28e83SPiotr Jasiukajtis	faddd	%f22,%f20,%f22
253225c28e83SPiotr Jasiukajtis
253325c28e83SPiotr Jasiukajtis	faddd	%f30,%f28,%f30
253425c28e83SPiotr Jasiukajtis
253525c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
253625c28e83SPiotr Jasiukajtis
253725c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
253825c28e83SPiotr Jasiukajtis
253925c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
254025c28e83SPiotr Jasiukajtis
254125c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
254225c28e83SPiotr Jasiukajtis	mov	%l0,%l4
254325c28e83SPiotr Jasiukajtis
254425c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
254525c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
254625c28e83SPiotr Jasiukajtis
254725c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
254825c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
254925c28e83SPiotr Jasiukajtis
255025c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
255125c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
255225c28e83SPiotr Jasiukajtis
255325c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
255425c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
255525c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
255625c28e83SPiotr Jasiukajtis
255725c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
255825c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
255925c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
256025c28e83SPiotr Jasiukajtis
256125c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
256225c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
256325c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
256425c28e83SPiotr Jasiukajtis
256525c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
256625c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
256725c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
256825c28e83SPiotr Jasiukajtis
256925c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
257025c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
257125c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
257225c28e83SPiotr Jasiukajtis
257325c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
257425c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
257525c28e83SPiotr Jasiukajtis! delay slot
257625c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
257725c28e83SPiotr Jasiukajtis
257825c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
257925c28e83SPiotr Jasiukajtis! delay slot
258025c28e83SPiotr Jasiukajtis	nop
258125c28e83SPiotr Jasiukajtis
258225c28e83SPiotr Jasiukajtis	.align	16
258325c28e83SPiotr Jasiukajtis.case12:
258425c28e83SPiotr Jasiukajtis	fmuld	%f18,%f18,%f16
258525c28e83SPiotr Jasiukajtis	andcc	%l2,1,%g0
258625c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case14
258725c28e83SPiotr Jasiukajtis! delay slot
258825c28e83SPiotr Jasiukajtis	fxor	%f22,%f36,%f36
258925c28e83SPiotr Jasiukajtis
259025c28e83SPiotr Jasiukajtis	fmuld	%f26,%f26,%f24
259125c28e83SPiotr Jasiukajtis	andcc	%l3,1,%g0
259225c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case13
259325c28e83SPiotr Jasiukajtis! delay slot
259425c28e83SPiotr Jasiukajtis	fxor	%f30,%f38,%f38
259525c28e83SPiotr Jasiukajtis
259625c28e83SPiotr Jasiukajtis	fmuld	%f0,pp3,%f6		! sin(x0)
259725c28e83SPiotr Jasiukajtis
259825c28e83SPiotr Jasiukajtis	fmuld	%f8,pp3,%f14		! sin(x1)
259925c28e83SPiotr Jasiukajtis
260025c28e83SPiotr Jasiukajtis	faddd	%f6,pp2,%f6
260125c28e83SPiotr Jasiukajtis	fmuld	%f0,qq2,%f4
260225c28e83SPiotr Jasiukajtis
260325c28e83SPiotr Jasiukajtis	faddd	%f14,pp2,%f14
260425c28e83SPiotr Jasiukajtis	fmuld	%f8,qq2,%f12
260525c28e83SPiotr Jasiukajtis
260625c28e83SPiotr Jasiukajtis	fmuld	%f16,qq3,%f22		! cos(x2)
260725c28e83SPiotr Jasiukajtis
260825c28e83SPiotr Jasiukajtis	fmuld	%f24,qq3,%f30		! cos(x3)
260925c28e83SPiotr Jasiukajtis
261025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
261125c28e83SPiotr Jasiukajtis	faddd	%f4,qq1,%f4
261225c28e83SPiotr Jasiukajtis
261325c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
261425c28e83SPiotr Jasiukajtis	faddd	%f12,qq1,%f12
261525c28e83SPiotr Jasiukajtis
261625c28e83SPiotr Jasiukajtis	faddd	%f22,qq2,%f22
261725c28e83SPiotr Jasiukajtis	fmuld	%f16,pp2,%f20
261825c28e83SPiotr Jasiukajtis
261925c28e83SPiotr Jasiukajtis	faddd	%f30,qq2,%f30
262025c28e83SPiotr Jasiukajtis	fmuld	%f24,pp2,%f28
262125c28e83SPiotr Jasiukajtis
262225c28e83SPiotr Jasiukajtis	faddd	%f6,pp1,%f6
262325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
262425c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
262525c28e83SPiotr Jasiukajtis
262625c28e83SPiotr Jasiukajtis	faddd	%f14,pp1,%f14
262725c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
262825c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
262925c28e83SPiotr Jasiukajtis
263025c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
263125c28e83SPiotr Jasiukajtis	faddd	%f20,pp1,%f20
263225c28e83SPiotr Jasiukajtis
263325c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
263425c28e83SPiotr Jasiukajtis	faddd	%f28,pp1,%f28
263525c28e83SPiotr Jasiukajtis
263625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
263725c28e83SPiotr Jasiukajtis
263825c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
263925c28e83SPiotr Jasiukajtis
264025c28e83SPiotr Jasiukajtis	faddd	%f22,qq1,%f22
264125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
264225c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
264325c28e83SPiotr Jasiukajtis
264425c28e83SPiotr Jasiukajtis	faddd	%f30,qq1,%f30
264525c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
264625c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
264725c28e83SPiotr Jasiukajtis
264825c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
264925c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f0
265025c28e83SPiotr Jasiukajtis
265125c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
265225c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f8
265325c28e83SPiotr Jasiukajtis
265425c28e83SPiotr Jasiukajtis	fmuld	%f18,%f20,%f20
265525c28e83SPiotr Jasiukajtis
265625c28e83SPiotr Jasiukajtis	fmuld	%f26,%f28,%f28
265725c28e83SPiotr Jasiukajtis
265825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
265925c28e83SPiotr Jasiukajtis	faddd	%f32,%f6,%f6
266025c28e83SPiotr Jasiukajtis
266125c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
266225c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f14
266325c28e83SPiotr Jasiukajtis
266425c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
266525c28e83SPiotr Jasiukajtis	faddd	%f20,%f36,%f20
266625c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f16
266725c28e83SPiotr Jasiukajtis
266825c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
266925c28e83SPiotr Jasiukajtis	faddd	%f28,%f38,%f28
267025c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f24
267125c28e83SPiotr Jasiukajtis
267225c28e83SPiotr Jasiukajtis	faddd	%f2,%f6,%f6
267325c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f32
267425c28e83SPiotr Jasiukajtis
267525c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f14
267625c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f34
267725c28e83SPiotr Jasiukajtis
267825c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
267925c28e83SPiotr Jasiukajtis	faddd	%f20,%f18,%f20
268025c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f36
268125c28e83SPiotr Jasiukajtis
268225c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
268325c28e83SPiotr Jasiukajtis	faddd	%f28,%f26,%f28
268425c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f38
268525c28e83SPiotr Jasiukajtis
268625c28e83SPiotr Jasiukajtis	fmuld	%f32,%f6,%f6
268725c28e83SPiotr Jasiukajtis
268825c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
268925c28e83SPiotr Jasiukajtis
269025c28e83SPiotr Jasiukajtis	fmuld	%f36,%f20,%f20
269125c28e83SPiotr Jasiukajtis
269225c28e83SPiotr Jasiukajtis	fmuld	%f38,%f28,%f28
269325c28e83SPiotr Jasiukajtis
269425c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
269525c28e83SPiotr Jasiukajtis
269625c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
269725c28e83SPiotr Jasiukajtis
269825c28e83SPiotr Jasiukajtis	fsubd	%f22,%f20,%f22
269925c28e83SPiotr Jasiukajtis
270025c28e83SPiotr Jasiukajtis	fsubd	%f30,%f28,%f30
270125c28e83SPiotr Jasiukajtis
270225c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
270325c28e83SPiotr Jasiukajtis
270425c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
270525c28e83SPiotr Jasiukajtis
270625c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
270725c28e83SPiotr Jasiukajtis
270825c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
270925c28e83SPiotr Jasiukajtis	mov	%l0,%l4
271025c28e83SPiotr Jasiukajtis
271125c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
271225c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
271325c28e83SPiotr Jasiukajtis
271425c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
271525c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
271625c28e83SPiotr Jasiukajtis
271725c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
271825c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
271925c28e83SPiotr Jasiukajtis
272025c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
272125c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
272225c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
272325c28e83SPiotr Jasiukajtis
272425c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
272525c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
272625c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
272725c28e83SPiotr Jasiukajtis
272825c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
272925c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
273025c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
273125c28e83SPiotr Jasiukajtis
273225c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
273325c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
273425c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
273525c28e83SPiotr Jasiukajtis
273625c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
273725c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
273825c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
273925c28e83SPiotr Jasiukajtis
274025c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
274125c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
274225c28e83SPiotr Jasiukajtis! delay slot
274325c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
274425c28e83SPiotr Jasiukajtis
274525c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
274625c28e83SPiotr Jasiukajtis! delay slot
274725c28e83SPiotr Jasiukajtis	nop
274825c28e83SPiotr Jasiukajtis
274925c28e83SPiotr Jasiukajtis	.align	16
275025c28e83SPiotr Jasiukajtis.case13:
275125c28e83SPiotr Jasiukajtis	fmuld	%f0,pp3,%f6		! sin(x0)
275225c28e83SPiotr Jasiukajtis
275325c28e83SPiotr Jasiukajtis	fmuld	%f8,pp3,%f14		! sin(x1)
275425c28e83SPiotr Jasiukajtis
275525c28e83SPiotr Jasiukajtis	fmuld	%f24,pp3,%f30		! sin(x3)
275625c28e83SPiotr Jasiukajtis
275725c28e83SPiotr Jasiukajtis	faddd	%f6,pp2,%f6
275825c28e83SPiotr Jasiukajtis	fmuld	%f0,qq2,%f4
275925c28e83SPiotr Jasiukajtis
276025c28e83SPiotr Jasiukajtis	faddd	%f14,pp2,%f14
276125c28e83SPiotr Jasiukajtis	fmuld	%f8,qq2,%f12
276225c28e83SPiotr Jasiukajtis
276325c28e83SPiotr Jasiukajtis	fmuld	%f16,qq3,%f22		! cos(x2)
276425c28e83SPiotr Jasiukajtis
276525c28e83SPiotr Jasiukajtis	faddd	%f30,pp2,%f30
276625c28e83SPiotr Jasiukajtis	fmuld	%f24,qq2,%f28
276725c28e83SPiotr Jasiukajtis
276825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
276925c28e83SPiotr Jasiukajtis	faddd	%f4,qq1,%f4
277025c28e83SPiotr Jasiukajtis
277125c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
277225c28e83SPiotr Jasiukajtis	faddd	%f12,qq1,%f12
277325c28e83SPiotr Jasiukajtis
277425c28e83SPiotr Jasiukajtis	faddd	%f22,qq2,%f22
277525c28e83SPiotr Jasiukajtis	fmuld	%f16,pp2,%f20
277625c28e83SPiotr Jasiukajtis
277725c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
277825c28e83SPiotr Jasiukajtis	faddd	%f28,qq1,%f28
277925c28e83SPiotr Jasiukajtis
278025c28e83SPiotr Jasiukajtis	faddd	%f6,pp1,%f6
278125c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
278225c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
278325c28e83SPiotr Jasiukajtis
278425c28e83SPiotr Jasiukajtis	faddd	%f14,pp1,%f14
278525c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
278625c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
278725c28e83SPiotr Jasiukajtis
278825c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
278925c28e83SPiotr Jasiukajtis	faddd	%f20,pp1,%f20
279025c28e83SPiotr Jasiukajtis
279125c28e83SPiotr Jasiukajtis	faddd	%f30,pp1,%f30
279225c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
279325c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
279425c28e83SPiotr Jasiukajtis
279525c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
279625c28e83SPiotr Jasiukajtis
279725c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
279825c28e83SPiotr Jasiukajtis
279925c28e83SPiotr Jasiukajtis	faddd	%f22,qq1,%f22
280025c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
280125c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
280225c28e83SPiotr Jasiukajtis
280325c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
280425c28e83SPiotr Jasiukajtis
280525c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
280625c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f0
280725c28e83SPiotr Jasiukajtis
280825c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
280925c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f8
281025c28e83SPiotr Jasiukajtis
281125c28e83SPiotr Jasiukajtis	fmuld	%f18,%f20,%f20
281225c28e83SPiotr Jasiukajtis
281325c28e83SPiotr Jasiukajtis	fmuld	%f26,%f30,%f30
281425c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f24
281525c28e83SPiotr Jasiukajtis
281625c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
281725c28e83SPiotr Jasiukajtis	faddd	%f32,%f6,%f6
281825c28e83SPiotr Jasiukajtis
281925c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
282025c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f14
282125c28e83SPiotr Jasiukajtis
282225c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
282325c28e83SPiotr Jasiukajtis	faddd	%f20,%f36,%f20
282425c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f16
282525c28e83SPiotr Jasiukajtis
282625c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
282725c28e83SPiotr Jasiukajtis	faddd	%f38,%f30,%f30
282825c28e83SPiotr Jasiukajtis
282925c28e83SPiotr Jasiukajtis	faddd	%f2,%f6,%f6
283025c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f32
283125c28e83SPiotr Jasiukajtis
283225c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f14
283325c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f34
283425c28e83SPiotr Jasiukajtis
283525c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
283625c28e83SPiotr Jasiukajtis	faddd	%f20,%f18,%f20
283725c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f36
283825c28e83SPiotr Jasiukajtis
283925c28e83SPiotr Jasiukajtis	faddd	%f26,%f30,%f30
284025c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f38
284125c28e83SPiotr Jasiukajtis
284225c28e83SPiotr Jasiukajtis	fmuld	%f32,%f6,%f6
284325c28e83SPiotr Jasiukajtis
284425c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
284525c28e83SPiotr Jasiukajtis
284625c28e83SPiotr Jasiukajtis	fmuld	%f36,%f20,%f20
284725c28e83SPiotr Jasiukajtis
284825c28e83SPiotr Jasiukajtis	fmuld	%f38,%f30,%f30
284925c28e83SPiotr Jasiukajtis
285025c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
285125c28e83SPiotr Jasiukajtis
285225c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
285325c28e83SPiotr Jasiukajtis
285425c28e83SPiotr Jasiukajtis	fsubd	%f22,%f20,%f22
285525c28e83SPiotr Jasiukajtis
285625c28e83SPiotr Jasiukajtis	faddd	%f30,%f28,%f30
285725c28e83SPiotr Jasiukajtis
285825c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
285925c28e83SPiotr Jasiukajtis
286025c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
286125c28e83SPiotr Jasiukajtis
286225c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
286325c28e83SPiotr Jasiukajtis
286425c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
286525c28e83SPiotr Jasiukajtis	mov	%l0,%l4
286625c28e83SPiotr Jasiukajtis
286725c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
286825c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
286925c28e83SPiotr Jasiukajtis
287025c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
287125c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
287225c28e83SPiotr Jasiukajtis
287325c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
287425c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
287525c28e83SPiotr Jasiukajtis
287625c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
287725c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
287825c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
287925c28e83SPiotr Jasiukajtis
288025c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
288125c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
288225c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
288325c28e83SPiotr Jasiukajtis
288425c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
288525c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
288625c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
288725c28e83SPiotr Jasiukajtis
288825c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
288925c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
289025c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
289125c28e83SPiotr Jasiukajtis
289225c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
289325c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
289425c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
289525c28e83SPiotr Jasiukajtis
289625c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
289725c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
289825c28e83SPiotr Jasiukajtis! delay slot
289925c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
290025c28e83SPiotr Jasiukajtis
290125c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
290225c28e83SPiotr Jasiukajtis! delay slot
290325c28e83SPiotr Jasiukajtis	nop
290425c28e83SPiotr Jasiukajtis
290525c28e83SPiotr Jasiukajtis	.align	16
290625c28e83SPiotr Jasiukajtis.case14:
290725c28e83SPiotr Jasiukajtis	fmuld	%f26,%f26,%f24
290825c28e83SPiotr Jasiukajtis	andcc	%l3,1,%g0
290925c28e83SPiotr Jasiukajtis	bz,pn	%icc,.case15
291025c28e83SPiotr Jasiukajtis! delay slot
291125c28e83SPiotr Jasiukajtis	fxor	%f30,%f38,%f38
291225c28e83SPiotr Jasiukajtis
291325c28e83SPiotr Jasiukajtis	fmuld	%f0,pp3,%f6		! sin(x0)
291425c28e83SPiotr Jasiukajtis
291525c28e83SPiotr Jasiukajtis	fmuld	%f8,pp3,%f14		! sin(x1)
291625c28e83SPiotr Jasiukajtis
291725c28e83SPiotr Jasiukajtis	fmuld	%f16,pp3,%f22		! sin(x2)
291825c28e83SPiotr Jasiukajtis
291925c28e83SPiotr Jasiukajtis	faddd	%f6,pp2,%f6
292025c28e83SPiotr Jasiukajtis	fmuld	%f0,qq2,%f4
292125c28e83SPiotr Jasiukajtis
292225c28e83SPiotr Jasiukajtis	faddd	%f14,pp2,%f14
292325c28e83SPiotr Jasiukajtis	fmuld	%f8,qq2,%f12
292425c28e83SPiotr Jasiukajtis
292525c28e83SPiotr Jasiukajtis	faddd	%f22,pp2,%f22
292625c28e83SPiotr Jasiukajtis	fmuld	%f16,qq2,%f20
292725c28e83SPiotr Jasiukajtis
292825c28e83SPiotr Jasiukajtis	fmuld	%f24,qq3,%f30		! cos(x3)
292925c28e83SPiotr Jasiukajtis
293025c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
293125c28e83SPiotr Jasiukajtis	faddd	%f4,qq1,%f4
293225c28e83SPiotr Jasiukajtis
293325c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
293425c28e83SPiotr Jasiukajtis	faddd	%f12,qq1,%f12
293525c28e83SPiotr Jasiukajtis
293625c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
293725c28e83SPiotr Jasiukajtis	faddd	%f20,qq1,%f20
293825c28e83SPiotr Jasiukajtis
293925c28e83SPiotr Jasiukajtis	faddd	%f30,qq2,%f30
294025c28e83SPiotr Jasiukajtis	fmuld	%f24,pp2,%f28
294125c28e83SPiotr Jasiukajtis
294225c28e83SPiotr Jasiukajtis	faddd	%f6,pp1,%f6
294325c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
294425c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
294525c28e83SPiotr Jasiukajtis
294625c28e83SPiotr Jasiukajtis	faddd	%f14,pp1,%f14
294725c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
294825c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
294925c28e83SPiotr Jasiukajtis
295025c28e83SPiotr Jasiukajtis	faddd	%f22,pp1,%f22
295125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
295225c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
295325c28e83SPiotr Jasiukajtis
295425c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
295525c28e83SPiotr Jasiukajtis	faddd	%f28,pp1,%f28
295625c28e83SPiotr Jasiukajtis
295725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
295825c28e83SPiotr Jasiukajtis
295925c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
296025c28e83SPiotr Jasiukajtis
296125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
296225c28e83SPiotr Jasiukajtis
296325c28e83SPiotr Jasiukajtis	faddd	%f30,qq1,%f30
296425c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
296525c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
296625c28e83SPiotr Jasiukajtis
296725c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
296825c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f0
296925c28e83SPiotr Jasiukajtis
297025c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
297125c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f8
297225c28e83SPiotr Jasiukajtis
297325c28e83SPiotr Jasiukajtis	fmuld	%f18,%f22,%f22
297425c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f16
297525c28e83SPiotr Jasiukajtis
297625c28e83SPiotr Jasiukajtis	fmuld	%f26,%f28,%f28
297725c28e83SPiotr Jasiukajtis
297825c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
297925c28e83SPiotr Jasiukajtis	faddd	%f32,%f6,%f6
298025c28e83SPiotr Jasiukajtis
298125c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
298225c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f14
298325c28e83SPiotr Jasiukajtis
298425c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
298525c28e83SPiotr Jasiukajtis	faddd	%f36,%f22,%f22
298625c28e83SPiotr Jasiukajtis
298725c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
298825c28e83SPiotr Jasiukajtis	faddd	%f28,%f38,%f28
298925c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f24
299025c28e83SPiotr Jasiukajtis
299125c28e83SPiotr Jasiukajtis	faddd	%f2,%f6,%f6
299225c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f32
299325c28e83SPiotr Jasiukajtis
299425c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f14
299525c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f34
299625c28e83SPiotr Jasiukajtis
299725c28e83SPiotr Jasiukajtis	faddd	%f18,%f22,%f22
299825c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f36
299925c28e83SPiotr Jasiukajtis
300025c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
300125c28e83SPiotr Jasiukajtis	faddd	%f28,%f26,%f28
300225c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f38
300325c28e83SPiotr Jasiukajtis
300425c28e83SPiotr Jasiukajtis	fmuld	%f32,%f6,%f6
300525c28e83SPiotr Jasiukajtis
300625c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
300725c28e83SPiotr Jasiukajtis
300825c28e83SPiotr Jasiukajtis	fmuld	%f36,%f22,%f22
300925c28e83SPiotr Jasiukajtis
301025c28e83SPiotr Jasiukajtis	fmuld	%f38,%f28,%f28
301125c28e83SPiotr Jasiukajtis
301225c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
301325c28e83SPiotr Jasiukajtis
301425c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
301525c28e83SPiotr Jasiukajtis
301625c28e83SPiotr Jasiukajtis	faddd	%f22,%f20,%f22
301725c28e83SPiotr Jasiukajtis
301825c28e83SPiotr Jasiukajtis	fsubd	%f30,%f28,%f30
301925c28e83SPiotr Jasiukajtis
302025c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
302125c28e83SPiotr Jasiukajtis
302225c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
302325c28e83SPiotr Jasiukajtis
302425c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
302525c28e83SPiotr Jasiukajtis
302625c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
302725c28e83SPiotr Jasiukajtis	mov	%l0,%l4
302825c28e83SPiotr Jasiukajtis
302925c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
303025c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
303125c28e83SPiotr Jasiukajtis
303225c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
303325c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
303425c28e83SPiotr Jasiukajtis
303525c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
303625c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
303725c28e83SPiotr Jasiukajtis
303825c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
303925c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
304025c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
304125c28e83SPiotr Jasiukajtis
304225c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
304325c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
304425c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
304525c28e83SPiotr Jasiukajtis
304625c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
304725c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
304825c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
304925c28e83SPiotr Jasiukajtis
305025c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
305125c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
305225c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
305325c28e83SPiotr Jasiukajtis
305425c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
305525c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
305625c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
305725c28e83SPiotr Jasiukajtis
305825c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
305925c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
306025c28e83SPiotr Jasiukajtis! delay slot
306125c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
306225c28e83SPiotr Jasiukajtis
306325c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
306425c28e83SPiotr Jasiukajtis! delay slot
306525c28e83SPiotr Jasiukajtis	nop
306625c28e83SPiotr Jasiukajtis
306725c28e83SPiotr Jasiukajtis	.align	16
306825c28e83SPiotr Jasiukajtis.case15:
306925c28e83SPiotr Jasiukajtis	fmuld	%f0,pp3,%f6		! sin(x0)
307025c28e83SPiotr Jasiukajtis
307125c28e83SPiotr Jasiukajtis	fmuld	%f8,pp3,%f14		! sin(x1)
307225c28e83SPiotr Jasiukajtis
307325c28e83SPiotr Jasiukajtis	fmuld	%f16,pp3,%f22		! sin(x2)
307425c28e83SPiotr Jasiukajtis
307525c28e83SPiotr Jasiukajtis	fmuld	%f24,pp3,%f30		! sin(x3)
307625c28e83SPiotr Jasiukajtis
307725c28e83SPiotr Jasiukajtis	faddd	%f6,pp2,%f6
307825c28e83SPiotr Jasiukajtis	fmuld	%f0,qq2,%f4
307925c28e83SPiotr Jasiukajtis
308025c28e83SPiotr Jasiukajtis	faddd	%f14,pp2,%f14
308125c28e83SPiotr Jasiukajtis	fmuld	%f8,qq2,%f12
308225c28e83SPiotr Jasiukajtis
308325c28e83SPiotr Jasiukajtis	faddd	%f22,pp2,%f22
308425c28e83SPiotr Jasiukajtis	fmuld	%f16,qq2,%f20
308525c28e83SPiotr Jasiukajtis
308625c28e83SPiotr Jasiukajtis	faddd	%f30,pp2,%f30
308725c28e83SPiotr Jasiukajtis	fmuld	%f24,qq2,%f28
308825c28e83SPiotr Jasiukajtis
308925c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
309025c28e83SPiotr Jasiukajtis	faddd	%f4,qq1,%f4
309125c28e83SPiotr Jasiukajtis
309225c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
309325c28e83SPiotr Jasiukajtis	faddd	%f12,qq1,%f12
309425c28e83SPiotr Jasiukajtis
309525c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
309625c28e83SPiotr Jasiukajtis	faddd	%f20,qq1,%f20
309725c28e83SPiotr Jasiukajtis
309825c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
309925c28e83SPiotr Jasiukajtis	faddd	%f28,qq1,%f28
310025c28e83SPiotr Jasiukajtis
310125c28e83SPiotr Jasiukajtis	faddd	%f6,pp1,%f6
310225c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
310325c28e83SPiotr Jasiukajtis	add	%l4,%g1,%l4
310425c28e83SPiotr Jasiukajtis
310525c28e83SPiotr Jasiukajtis	faddd	%f14,pp1,%f14
310625c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
310725c28e83SPiotr Jasiukajtis	add	%l5,%g1,%l5
310825c28e83SPiotr Jasiukajtis
310925c28e83SPiotr Jasiukajtis	faddd	%f22,pp1,%f22
311025c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
311125c28e83SPiotr Jasiukajtis	add	%l6,%g1,%l6
311225c28e83SPiotr Jasiukajtis
311325c28e83SPiotr Jasiukajtis	faddd	%f30,pp1,%f30
311425c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
311525c28e83SPiotr Jasiukajtis	add	%l7,%g1,%l7
311625c28e83SPiotr Jasiukajtis
311725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f6,%f6
311825c28e83SPiotr Jasiukajtis
311925c28e83SPiotr Jasiukajtis	fmuld	%f8,%f14,%f14
312025c28e83SPiotr Jasiukajtis
312125c28e83SPiotr Jasiukajtis	fmuld	%f16,%f22,%f22
312225c28e83SPiotr Jasiukajtis
312325c28e83SPiotr Jasiukajtis	fmuld	%f24,%f30,%f30
312425c28e83SPiotr Jasiukajtis
312525c28e83SPiotr Jasiukajtis	fmuld	%f2,%f6,%f6
312625c28e83SPiotr Jasiukajtis	ldd	[%l4+8],%f0
312725c28e83SPiotr Jasiukajtis
312825c28e83SPiotr Jasiukajtis	fmuld	%f10,%f14,%f14
312925c28e83SPiotr Jasiukajtis	ldd	[%l5+8],%f8
313025c28e83SPiotr Jasiukajtis
313125c28e83SPiotr Jasiukajtis	fmuld	%f18,%f22,%f22
313225c28e83SPiotr Jasiukajtis	ldd	[%l6+8],%f16
313325c28e83SPiotr Jasiukajtis
313425c28e83SPiotr Jasiukajtis	fmuld	%f26,%f30,%f30
313525c28e83SPiotr Jasiukajtis	ldd	[%l7+8],%f24
313625c28e83SPiotr Jasiukajtis
313725c28e83SPiotr Jasiukajtis	fmuld	%f0,%f4,%f4
313825c28e83SPiotr Jasiukajtis	faddd	%f32,%f6,%f6
313925c28e83SPiotr Jasiukajtis
314025c28e83SPiotr Jasiukajtis	fmuld	%f8,%f12,%f12
314125c28e83SPiotr Jasiukajtis	faddd	%f34,%f14,%f14
314225c28e83SPiotr Jasiukajtis
314325c28e83SPiotr Jasiukajtis	fmuld	%f16,%f20,%f20
314425c28e83SPiotr Jasiukajtis	faddd	%f36,%f22,%f22
314525c28e83SPiotr Jasiukajtis
314625c28e83SPiotr Jasiukajtis	fmuld	%f24,%f28,%f28
314725c28e83SPiotr Jasiukajtis	faddd	%f38,%f30,%f30
314825c28e83SPiotr Jasiukajtis
314925c28e83SPiotr Jasiukajtis	faddd	%f2,%f6,%f6
315025c28e83SPiotr Jasiukajtis	ldd	[%l4+16],%f32
315125c28e83SPiotr Jasiukajtis
315225c28e83SPiotr Jasiukajtis	faddd	%f10,%f14,%f14
315325c28e83SPiotr Jasiukajtis	ldd	[%l5+16],%f34
315425c28e83SPiotr Jasiukajtis
315525c28e83SPiotr Jasiukajtis	faddd	%f18,%f22,%f22
315625c28e83SPiotr Jasiukajtis	ldd	[%l6+16],%f36
315725c28e83SPiotr Jasiukajtis
315825c28e83SPiotr Jasiukajtis	faddd	%f26,%f30,%f30
315925c28e83SPiotr Jasiukajtis	ldd	[%l7+16],%f38
316025c28e83SPiotr Jasiukajtis
316125c28e83SPiotr Jasiukajtis	fmuld	%f32,%f6,%f6
316225c28e83SPiotr Jasiukajtis
316325c28e83SPiotr Jasiukajtis	fmuld	%f34,%f14,%f14
316425c28e83SPiotr Jasiukajtis
316525c28e83SPiotr Jasiukajtis	fmuld	%f36,%f22,%f22
316625c28e83SPiotr Jasiukajtis
316725c28e83SPiotr Jasiukajtis	fmuld	%f38,%f30,%f30
316825c28e83SPiotr Jasiukajtis
316925c28e83SPiotr Jasiukajtis	faddd	%f6,%f4,%f6
317025c28e83SPiotr Jasiukajtis
317125c28e83SPiotr Jasiukajtis	faddd	%f14,%f12,%f14
317225c28e83SPiotr Jasiukajtis
317325c28e83SPiotr Jasiukajtis	faddd	%f22,%f20,%f22
317425c28e83SPiotr Jasiukajtis
317525c28e83SPiotr Jasiukajtis	faddd	%f30,%f28,%f30
317625c28e83SPiotr Jasiukajtis
317725c28e83SPiotr Jasiukajtis	faddd	%f6,%f0,%f6
317825c28e83SPiotr Jasiukajtis
317925c28e83SPiotr Jasiukajtis	faddd	%f14,%f8,%f14
318025c28e83SPiotr Jasiukajtis
318125c28e83SPiotr Jasiukajtis	faddd	%f22,%f16,%f22
318225c28e83SPiotr Jasiukajtis
318325c28e83SPiotr Jasiukajtis	faddd	%f30,%f24,%f30
318425c28e83SPiotr Jasiukajtis	mov	%l0,%l4
318525c28e83SPiotr Jasiukajtis
318625c28e83SPiotr Jasiukajtis	fnegd	%f6,%f4
318725c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%l0		! preload next argument
318825c28e83SPiotr Jasiukajtis
318925c28e83SPiotr Jasiukajtis	fnegd	%f14,%f12
319025c28e83SPiotr Jasiukajtis	lda	[%i1]%asi,%f0
319125c28e83SPiotr Jasiukajtis
319225c28e83SPiotr Jasiukajtis	fnegd	%f22,%f20
319325c28e83SPiotr Jasiukajtis	lda	[%i1+4]%asi,%f3
319425c28e83SPiotr Jasiukajtis
319525c28e83SPiotr Jasiukajtis	fnegd	%f30,%f28
319625c28e83SPiotr Jasiukajtis	andn	%l0,%i5,%l0
319725c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1
319825c28e83SPiotr Jasiukajtis
319925c28e83SPiotr Jasiukajtis	andcc	%l4,2,%g0
320025c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f4,%f6
320125c28e83SPiotr Jasiukajtis	st	%f6,[%o0]
320225c28e83SPiotr Jasiukajtis
320325c28e83SPiotr Jasiukajtis	andcc	%l1,2,%g0
320425c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f12,%f14
320525c28e83SPiotr Jasiukajtis	st	%f14,[%o1]
320625c28e83SPiotr Jasiukajtis
320725c28e83SPiotr Jasiukajtis	andcc	%l2,2,%g0
320825c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f20,%f22
320925c28e83SPiotr Jasiukajtis	st	%f22,[%o2]
321025c28e83SPiotr Jasiukajtis
321125c28e83SPiotr Jasiukajtis	andcc	%l3,2,%g0
321225c28e83SPiotr Jasiukajtis	fmovdnz	%icc,%f28,%f30
321325c28e83SPiotr Jasiukajtis	st	%f30,[%o3]
321425c28e83SPiotr Jasiukajtis
321525c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
321625c28e83SPiotr Jasiukajtis	bg,pt	%icc,.loop0
321725c28e83SPiotr Jasiukajtis! delay slot
321825c28e83SPiotr Jasiukajtis	st	%f7,[%o0+4]
321925c28e83SPiotr Jasiukajtis
322025c28e83SPiotr Jasiukajtis	ba,pt	%icc,.end
322125c28e83SPiotr Jasiukajtis! delay slot
322225c28e83SPiotr Jasiukajtis	nop
322325c28e83SPiotr Jasiukajtis
322425c28e83SPiotr Jasiukajtis
322525c28e83SPiotr Jasiukajtis	.align	16
322625c28e83SPiotr Jasiukajtis.end:
322725c28e83SPiotr Jasiukajtis	st	%f15,[%o1+4]
322825c28e83SPiotr Jasiukajtis	st	%f23,[%o2+4]
322925c28e83SPiotr Jasiukajtis	st	%f31,[%o3+4]
323025c28e83SPiotr Jasiukajtis	ld	[%fp+biguns],%i5
323125c28e83SPiotr Jasiukajtis	tst	%i5			! check for huge arguments remaining
323225c28e83SPiotr Jasiukajtis	be,pt	%icc,.exit
323325c28e83SPiotr Jasiukajtis! delay slot
323425c28e83SPiotr Jasiukajtis	nop
323525c28e83SPiotr Jasiukajtis#ifdef __sparcv9
323625c28e83SPiotr Jasiukajtis	ldx	[%fp+xsave],%o1
323725c28e83SPiotr Jasiukajtis	ldx	[%fp+ysave],%o3
323825c28e83SPiotr Jasiukajtis#else
323925c28e83SPiotr Jasiukajtis	ld	[%fp+xsave],%o1
324025c28e83SPiotr Jasiukajtis	ld	[%fp+ysave],%o3
324125c28e83SPiotr Jasiukajtis#endif
324225c28e83SPiotr Jasiukajtis	ld	[%fp+nsave],%o0
324325c28e83SPiotr Jasiukajtis	ld	[%fp+sxsave],%o2
324425c28e83SPiotr Jasiukajtis	ld	[%fp+sysave],%o4
324525c28e83SPiotr Jasiukajtis	sra	%o2,0,%o2		! sign-extend for V9
324625c28e83SPiotr Jasiukajtis	sra	%o4,0,%o4
324725c28e83SPiotr Jasiukajtis	call	__vlibm_vcos_big_ultra3
324825c28e83SPiotr Jasiukajtis	sra	%o5,0,%o5		! delay slot
324925c28e83SPiotr Jasiukajtis
325025c28e83SPiotr Jasiukajtis.exit:
325125c28e83SPiotr Jasiukajtis	ret
325225c28e83SPiotr Jasiukajtis	restore
325325c28e83SPiotr Jasiukajtis
325425c28e83SPiotr Jasiukajtis
325525c28e83SPiotr Jasiukajtis	.align	16
325625c28e83SPiotr Jasiukajtis.last1:
325725c28e83SPiotr Jasiukajtis	faddd	%f2,c3two44,%f4
325825c28e83SPiotr Jasiukajtis	st	%f15,[%o1+4]
325925c28e83SPiotr Jasiukajtis.last1_from_range1:
326025c28e83SPiotr Jasiukajtis	mov	0,%l1
326125c28e83SPiotr Jasiukajtis	fzeros	%f8
326225c28e83SPiotr Jasiukajtis	fzero	%f10
326325c28e83SPiotr Jasiukajtis	add	%fp,junk,%o1
326425c28e83SPiotr Jasiukajtis.last2:
326525c28e83SPiotr Jasiukajtis	faddd	%f10,c3two44,%f12
326625c28e83SPiotr Jasiukajtis	st	%f23,[%o2+4]
326725c28e83SPiotr Jasiukajtis.last2_from_range2:
326825c28e83SPiotr Jasiukajtis	mov	0,%l2
326925c28e83SPiotr Jasiukajtis	fzeros	%f16
327025c28e83SPiotr Jasiukajtis	fzero	%f18
327125c28e83SPiotr Jasiukajtis	add	%fp,junk,%o2
327225c28e83SPiotr Jasiukajtis.last3:
327325c28e83SPiotr Jasiukajtis	faddd	%f18,c3two44,%f20
327425c28e83SPiotr Jasiukajtis	st	%f31,[%o3+4]
327525c28e83SPiotr Jasiukajtis	st	%f5,[%fp+nk0]
327625c28e83SPiotr Jasiukajtis	st	%f13,[%fp+nk1]
327725c28e83SPiotr Jasiukajtis.last3_from_range3:
327825c28e83SPiotr Jasiukajtis	mov	0,%l3
327925c28e83SPiotr Jasiukajtis	fzeros	%f24
328025c28e83SPiotr Jasiukajtis	fzero	%f26
328125c28e83SPiotr Jasiukajtis	ba,pt	%icc,.cont
328225c28e83SPiotr Jasiukajtis! delay slot
328325c28e83SPiotr Jasiukajtis	add	%fp,junk,%o3
328425c28e83SPiotr Jasiukajtis
328525c28e83SPiotr Jasiukajtis
328625c28e83SPiotr Jasiukajtis	.align	16
328725c28e83SPiotr Jasiukajtis.range0:
328825c28e83SPiotr Jasiukajtis	cmp	%l0,%o4
328925c28e83SPiotr Jasiukajtis	bl,pt	%icc,1f			! hx < 0x3e400000
329025c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
329125c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o7
329225c28e83SPiotr Jasiukajtis	cmp	%l0,%o7
329325c28e83SPiotr Jasiukajtis	bl,a,pt	%icc,2f			! branch if finite
329425c28e83SPiotr Jasiukajtis! delay slot, squashed if branch not taken
329525c28e83SPiotr Jasiukajtis	st	%o4,[%fp+biguns]	! set biguns
329625c28e83SPiotr Jasiukajtis	fzero	%f0
329725c28e83SPiotr Jasiukajtis	fmuld	%f2,%f0,%f2
329825c28e83SPiotr Jasiukajtis	st	%f2,[%o0]
329925c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
330025c28e83SPiotr Jasiukajtis! delay slot
330125c28e83SPiotr Jasiukajtis	st	%f3,[%o0+4]
330225c28e83SPiotr Jasiukajtis1:
330325c28e83SPiotr Jasiukajtis	fdtoi	%f2,%f4			! raise inexact if not zero
330425c28e83SPiotr Jasiukajtis	sethi	%hi(0x3ff00000),%o7
330525c28e83SPiotr Jasiukajtis	st	%o7,[%o0]
330625c28e83SPiotr Jasiukajtis	st	%g0,[%o0+4]
330725c28e83SPiotr Jasiukajtis2:
330825c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
330925c28e83SPiotr Jasiukajtis	ble,pn	%icc,.end
331025c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
331125c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
331225c28e83SPiotr Jasiukajtis	andn	%l1,%i5,%l0		! hx &= ~0x80000000
331325c28e83SPiotr Jasiukajtis	fmovs	%f8,%f0
331425c28e83SPiotr Jasiukajtis	fmovs	%f11,%f3
331525c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop0
331625c28e83SPiotr Jasiukajtis! delay slot
331725c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
331825c28e83SPiotr Jasiukajtis
331925c28e83SPiotr Jasiukajtis
332025c28e83SPiotr Jasiukajtis	.align	16
332125c28e83SPiotr Jasiukajtis.range1:
332225c28e83SPiotr Jasiukajtis	cmp	%l1,%o4
332325c28e83SPiotr Jasiukajtis	bl,pt	%icc,1f			! hx < 0x3e400000
332425c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
332525c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o7
332625c28e83SPiotr Jasiukajtis	cmp	%l1,%o7
332725c28e83SPiotr Jasiukajtis	bl,a,pt	%icc,2f			! branch if finite
332825c28e83SPiotr Jasiukajtis! delay slot, squashed if branch not taken
332925c28e83SPiotr Jasiukajtis	st	%o4,[%fp+biguns]	! set biguns
333025c28e83SPiotr Jasiukajtis	fzero	%f8
333125c28e83SPiotr Jasiukajtis	fmuld	%f10,%f8,%f10
333225c28e83SPiotr Jasiukajtis	st	%f10,[%o1]
333325c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
333425c28e83SPiotr Jasiukajtis! delay slot
333525c28e83SPiotr Jasiukajtis	st	%f11,[%o1+4]
333625c28e83SPiotr Jasiukajtis1:
333725c28e83SPiotr Jasiukajtis	fdtoi	%f10,%f12		! raise inexact if not zero
333825c28e83SPiotr Jasiukajtis	sethi	%hi(0x3ff00000),%o7
333925c28e83SPiotr Jasiukajtis	st	%o7,[%o1]
334025c28e83SPiotr Jasiukajtis	st	%g0,[%o1+4]
334125c28e83SPiotr Jasiukajtis2:
334225c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
334325c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last1_from_range1
334425c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
334525c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
334625c28e83SPiotr Jasiukajtis	andn	%l2,%i5,%l1		! hx &= ~0x80000000
334725c28e83SPiotr Jasiukajtis	fmovs	%f16,%f8
334825c28e83SPiotr Jasiukajtis	fmovs	%f19,%f11
334925c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop1
335025c28e83SPiotr Jasiukajtis! delay slot
335125c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
335225c28e83SPiotr Jasiukajtis
335325c28e83SPiotr Jasiukajtis
335425c28e83SPiotr Jasiukajtis	.align	16
335525c28e83SPiotr Jasiukajtis.range2:
335625c28e83SPiotr Jasiukajtis	cmp	%l2,%o4
335725c28e83SPiotr Jasiukajtis	bl,pt	%icc,1f			! hx < 0x3e400000
335825c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
335925c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o7
336025c28e83SPiotr Jasiukajtis	cmp	%l2,%o7
336125c28e83SPiotr Jasiukajtis	bl,a,pt	%icc,2f			! branch if finite
336225c28e83SPiotr Jasiukajtis! delay slot, squashed if branch not taken
336325c28e83SPiotr Jasiukajtis	st	%o4,[%fp+biguns]	! set biguns
336425c28e83SPiotr Jasiukajtis	fzero	%f16
336525c28e83SPiotr Jasiukajtis	fmuld	%f18,%f16,%f18
336625c28e83SPiotr Jasiukajtis	st	%f18,[%o2]
336725c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
336825c28e83SPiotr Jasiukajtis! delay slot
336925c28e83SPiotr Jasiukajtis	st	%f19,[%o2+4]
337025c28e83SPiotr Jasiukajtis1:
337125c28e83SPiotr Jasiukajtis	fdtoi	%f18,%f20		! raise inexact if not zero
337225c28e83SPiotr Jasiukajtis	sethi	%hi(0x3ff00000),%o7
337325c28e83SPiotr Jasiukajtis	st	%o7,[%o2]
337425c28e83SPiotr Jasiukajtis	st	%g0,[%o2+4]
337525c28e83SPiotr Jasiukajtis2:
337625c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
337725c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last2_from_range2
337825c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
337925c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
338025c28e83SPiotr Jasiukajtis	andn	%l3,%i5,%l2		! hx &= ~0x80000000
338125c28e83SPiotr Jasiukajtis	fmovs	%f24,%f16
338225c28e83SPiotr Jasiukajtis	fmovs	%f27,%f19
338325c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop2
338425c28e83SPiotr Jasiukajtis! delay slot
338525c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
338625c28e83SPiotr Jasiukajtis
338725c28e83SPiotr Jasiukajtis
338825c28e83SPiotr Jasiukajtis	.align	16
338925c28e83SPiotr Jasiukajtis.range3:
339025c28e83SPiotr Jasiukajtis	cmp	%l3,%o4
339125c28e83SPiotr Jasiukajtis	bl,pt	%icc,1f			! hx < 0x3e400000
339225c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
339325c28e83SPiotr Jasiukajtis	sethi	%hi(0x7ff00000),%o7
339425c28e83SPiotr Jasiukajtis	cmp	%l3,%o7
339525c28e83SPiotr Jasiukajtis	bl,a,pt	%icc,2f			! branch if finite
339625c28e83SPiotr Jasiukajtis! delay slot, squashed if branch not taken
339725c28e83SPiotr Jasiukajtis	st	%o4,[%fp+biguns]	! set biguns
339825c28e83SPiotr Jasiukajtis	fzero	%f24
339925c28e83SPiotr Jasiukajtis	fmuld	%f26,%f24,%f26
340025c28e83SPiotr Jasiukajtis	st	%f26,[%o3]
340125c28e83SPiotr Jasiukajtis	ba,pt	%icc,2f
340225c28e83SPiotr Jasiukajtis! delay slot
340325c28e83SPiotr Jasiukajtis	st	%f27,[%o3+4]
340425c28e83SPiotr Jasiukajtis1:
340525c28e83SPiotr Jasiukajtis	fdtoi	%f26,%f28		! raise inexact if not zero
340625c28e83SPiotr Jasiukajtis	sethi	%hi(0x3ff00000),%o7
340725c28e83SPiotr Jasiukajtis	st	%o7,[%o3]
340825c28e83SPiotr Jasiukajtis	st	%g0,[%o3+4]
340925c28e83SPiotr Jasiukajtis2:
341025c28e83SPiotr Jasiukajtis	addcc	%i0,-1,%i0
341125c28e83SPiotr Jasiukajtis	ble,pn	%icc,.last3_from_range3
341225c28e83SPiotr Jasiukajtis! delay slot, harmless if branch taken
341325c28e83SPiotr Jasiukajtis	add	%i3,%i4,%i3		! y += stridey
341425c28e83SPiotr Jasiukajtis	ld	[%i1],%l3
341525c28e83SPiotr Jasiukajtis	ld	[%i1],%f24
341625c28e83SPiotr Jasiukajtis	ld	[%i1+4],%f27
341725c28e83SPiotr Jasiukajtis	andn	%l3,%i5,%l3		! hx &= ~0x80000000
341825c28e83SPiotr Jasiukajtis	ba,pt	%icc,.loop3
341925c28e83SPiotr Jasiukajtis! delay slot
342025c28e83SPiotr Jasiukajtis	add	%i1,%i2,%i1		! x += stridex
342125c28e83SPiotr Jasiukajtis
342225c28e83SPiotr Jasiukajtis	SET_SIZE(__vcos_ultra3)
342325c28e83SPiotr Jasiukajtis
3424