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