dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / usr / src / lib / libmvec / common / vis / __vcos_ultra3.S
blob48f0266066fd5b01c61861030b331fad774f3c95
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
22  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
23  */
25  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
26  * Use is subject to license terms.
27  */
29         .file   "__vcos_ultra3.S"
31 #include "libm.h"
32         .weak   __vcos
33         .type   __vcos,#function
34         __vcos = __vcos_ultra3
36         RO_DATA
37         .align  64
38 constants:
39         .word   0x42c80000,0x00000000   ! 3 * 2^44
40         .word   0x43380000,0x00000000   ! 3 * 2^51
41         .word   0x3fe45f30,0x6dc9c883   ! invpio2
42         .word   0x3ff921fb,0x54442c00   ! pio2_1
43         .word   0x3d318469,0x898cc400   ! pio2_2
44         .word   0x3a71701b,0x839a2520   ! pio2_3
45         .word   0xbfc55555,0x55555533   ! pp1
46         .word   0x3f811111,0x10e7d53b   ! pp2
47         .word   0xbf2a0167,0xe6b3cf9b   ! pp3
48         .word   0xbfdfffff,0xffffff65   ! qq1
49         .word   0x3fa55555,0x54f88ed0   ! qq2
50         .word   0xbf56c12c,0xdd185f60   ! qq3
52 ! local storage indices
54 #define xsave           STACK_BIAS-0x8
55 #define ysave           STACK_BIAS-0x10
56 #define nsave           STACK_BIAS-0x14
57 #define sxsave          STACK_BIAS-0x18
58 #define sysave          STACK_BIAS-0x1c
59 #define biguns          STACK_BIAS-0x20
60 #define nk3             STACK_BIAS-0x24
61 #define nk2             STACK_BIAS-0x28
62 #define nk1             STACK_BIAS-0x2c
63 #define nk0             STACK_BIAS-0x30
64 #define junk            STACK_BIAS-0x38
65 ! sizeof temp storage - must be a multiple of 16 for V9
66 #define tmps            0x40
68 ! register use
70 ! i0  n
71 ! i1  x
72 ! i2  stridex
73 ! i3  y
74 ! i4  stridey
75 ! i5  0x80000000
77 ! l0  hx0
78 ! l1  hx1
79 ! l2  hx2
80 ! l3  hx3
81 ! l4  k0
82 ! l5  k1
83 ! l6  k2
84 ! l7  k3
86 ! the following are 64-bit registers in both V8+ and V9
88 ! g1  __vlibm_TBL_sincos2
89 ! g5  scratch
91 ! o0  py0
92 ! o1  py1
93 ! o2  py2
94 ! o3  py3
95 ! o4  0x3e400000
96 ! o5  0x3fe921fb,0x4099251e
97 ! o7  scratch
99 ! f0  hx0
100 ! f2  
101 ! f4  
102 ! f6  
103 ! f8  hx1
104 ! f10 
105 ! f12 
106 ! f14 
107 ! f16 hx2
108 ! f18 
109 ! f20 
110 ! f22 
111 ! f24 hx3
112 ! f26 
113 ! f28 
114 ! f30 
115 ! f32 
116 ! f34 
117 ! f36
118 ! f38
120 #define c3two44 %f40
121 #define c3two51 %f42
122 #define invpio2 %f44
123 #define pio2_1  %f46
124 #define pio2_2  %f48
125 #define pio2_3  %f50
126 #define pp1     %f52
127 #define pp2     %f54
128 #define pp3     %f56
129 #define qq1     %f58
130 #define qq2     %f60
131 #define qq3     %f62
133         ENTRY(__vcos_ultra3)
134         save    %sp,-SA(MINFRAME)-tmps,%sp
135         PIC_SETUP(l7)
136         PIC_SET(l7,constants,o0)
137         PIC_SET(l7,__vlibm_TBL_sincos2,o1)
138         mov     %o1,%g1
139         wr      %g0,0x82,%asi           ! set %asi for non-faulting loads
140         st      %i1,[%fp+xsave]         ! save arguments
141         st      %i3,[%fp+ysave]
142         st      %i0,[%fp+nsave]
143         st      %i2,[%fp+sxsave]
144         st      %i4,[%fp+sysave]
145         st      %g0,[%fp+biguns]        ! biguns = 0
146         ldd     [%o0+0x00],c3two44      ! load/set up constants
147         ldd     [%o0+0x08],c3two51
148         ldd     [%o0+0x10],invpio2
149         ldd     [%o0+0x18],pio2_1
150         ldd     [%o0+0x20],pio2_2
151         ldd     [%o0+0x28],pio2_3
152         ldd     [%o0+0x30],pp1
153         ldd     [%o0+0x38],pp2
154         ldd     [%o0+0x40],pp3
155         ldd     [%o0+0x48],qq1
156         ldd     [%o0+0x50],qq2
157         ldd     [%o0+0x58],qq3
158         sethi   %hi(0x80000000),%i5
159         sethi   %hi(0x3e400000),%o4
160         sethi   %hi(0x3fe921fb),%o5
161         or      %o5,%lo(0x3fe921fb),%o5
162         sllx    %o5,32,%o5
163         sethi   %hi(0x4099251e),%o7
164         or      %o7,%lo(0x4099251e),%o7
165         or      %o5,%o7,%o5
166         sll     %i2,3,%i2               ! scale strides
167         sll     %i4,3,%i4
168         add     %fp,junk,%o1            ! loop prologue
169         add     %fp,junk,%o2
170         add     %fp,junk,%o3
171         ld      [%i1],%l0               ! *x
172         ld      [%i1],%f0
173         ld      [%i1+4],%f3
174         andn    %l0,%i5,%l0             ! mask off sign
175         add     %i1,%i2,%i1             ! x += stridex
176         ba      .loop0
177         nop
179 ! 16-byte aligned
180         .align  16
181 .loop0:
182         lda     [%i1]%asi,%l1           ! preload next argument
183         sub     %l0,%o4,%g5
184         sub     %o5,%l0,%o7
185         fabss   %f0,%f2
187         lda     [%i1]%asi,%f8
188         orcc    %o7,%g5,%g0
189         mov     %i3,%o0                 ! py0 = y
190         bl,pn   %icc,.range0            ! hx < 0x3e400000 or hx > 0x4099251e
192 ! delay slot
193         lda     [%i1+4]%asi,%f11
194         addcc   %i0,-1,%i0
195         add     %i3,%i4,%i3             ! y += stridey
196         ble,pn  %icc,.last1
198 ! delay slot
199         andn    %l1,%i5,%l1
200         add     %i1,%i2,%i1             ! x += stridex
201         faddd   %f2,c3two44,%f4
202         st      %f15,[%o1+4]
204 .loop1:
205         lda     [%i1]%asi,%l2           ! preload next argument
206         sub     %l1,%o4,%g5
207         sub     %o5,%l1,%o7
208         fabss   %f8,%f10
210         lda     [%i1]%asi,%f16
211         orcc    %o7,%g5,%g0
212         mov     %i3,%o1                 ! py1 = y
213         bl,pn   %icc,.range1            ! hx < 0x3e400000 or hx > 0x4099251e
215 ! delay slot
216         lda     [%i1+4]%asi,%f19
217         addcc   %i0,-1,%i0
218         add     %i3,%i4,%i3             ! y += stridey
219         ble,pn  %icc,.last2
221 ! delay slot
222         andn    %l2,%i5,%l2
223         add     %i1,%i2,%i1             ! x += stridex
224         faddd   %f10,c3two44,%f12
225         st      %f23,[%o2+4]
227 .loop2:
228         lda     [%i1]%asi,%l3           ! preload next argument
229         sub     %l2,%o4,%g5
230         sub     %o5,%l2,%o7
231         fabss   %f16,%f18
233         lda     [%i1]%asi,%f24
234         orcc    %o7,%g5,%g0
235         mov     %i3,%o2                 ! py2 = y
236         bl,pn   %icc,.range2            ! hx < 0x3e400000 or hx > 0x4099251e
238 ! delay slot
239         lda     [%i1+4]%asi,%f27
240         addcc   %i0,-1,%i0
241         add     %i3,%i4,%i3             ! y += stridey
242         ble,pn  %icc,.last3
244 ! delay slot
245         andn    %l3,%i5,%l3
246         add     %i1,%i2,%i1             ! x += stridex
247         faddd   %f18,c3two44,%f20
248         st      %f31,[%o3+4]
250 .loop3:
251         sub     %l3,%o4,%g5
252         sub     %o5,%l3,%o7
253         fabss   %f24,%f26
254         st      %f5,[%fp+nk0]
256         orcc    %o7,%g5,%g0
257         mov     %i3,%o3                 ! py3 = y
258         bl,pn   %icc,.range3            ! hx < 0x3e400000 or > hx 0x4099251e
259 ! delay slot
260         st      %f13,[%fp+nk1]
262 !!! DONE?
263 .cont:
264         srlx    %o5,32,%o7
265         add     %i3,%i4,%i3             ! y += stridey
266         fmovs   %f3,%f1
267         st      %f21,[%fp+nk2]
269         sub     %o7,%l0,%l0
270         sub     %o7,%l1,%l1
271         faddd   %f26,c3two44,%f28
272         st      %f29,[%fp+nk3]
274         sub     %o7,%l2,%l2
275         sub     %o7,%l3,%l3
276         fmovs   %f11,%f9
278         or      %l0,%l1,%l0
279         or      %l2,%l3,%l2
280         fmovs   %f19,%f17
282         fmovs   %f27,%f25
283         fmuld   %f0,invpio2,%f6         ! x * invpio2, for medium range
285         fmuld   %f8,invpio2,%f14
286         ld      [%fp+nk0],%l4
288         fmuld   %f16,invpio2,%f22
289         ld      [%fp+nk1],%l5
291         orcc    %l0,%l2,%g0
292         bl,pn   %icc,.medium
293 ! delay slot
294         fmuld   %f24,invpio2,%f30
295         ld      [%fp+nk2],%l6
297         ld      [%fp+nk3],%l7
298         sll     %l4,5,%l4               ! k
299         fcmpd   %fcc0,%f0,pio2_3        ! x < pio2_3 iff x < 0
301         sll     %l5,5,%l5
302         ldd     [%l4+%g1],%f4
303         fcmpd   %fcc1,%f8,pio2_3
305         sll     %l6,5,%l6
306         ldd     [%l5+%g1],%f12
307         fcmpd   %fcc2,%f16,pio2_3
309         sll     %l7,5,%l7
310         ldd     [%l6+%g1],%f20
311         fcmpd   %fcc3,%f24,pio2_3
313         ldd     [%l7+%g1],%f28
314         fsubd   %f2,%f4,%f2             ! x -= __vlibm_TBL_sincos2[k]
316         fsubd   %f10,%f12,%f10
318         fsubd   %f18,%f20,%f18
320         fsubd   %f26,%f28,%f26
322         fmuld   %f2,%f2,%f0             ! z = x * x
324         fmuld   %f10,%f10,%f8
326         fmuld   %f18,%f18,%f16
328         fmuld   %f26,%f26,%f24
330         fmuld   %f0,qq3,%f6
332         fmuld   %f8,qq3,%f14
334         fmuld   %f16,qq3,%f22
336         fmuld   %f24,qq3,%f30
338         faddd   %f6,qq2,%f6
339         fmuld   %f0,pp2,%f4
341         faddd   %f14,qq2,%f14
342         fmuld   %f8,pp2,%f12
344         faddd   %f22,qq2,%f22
345         fmuld   %f16,pp2,%f20
347         faddd   %f30,qq2,%f30
348         fmuld   %f24,pp2,%f28
350         fmuld   %f0,%f6,%f6
351         faddd   %f4,pp1,%f4
353         fmuld   %f8,%f14,%f14
354         faddd   %f12,pp1,%f12
356         fmuld   %f16,%f22,%f22
357         faddd   %f20,pp1,%f20
359         fmuld   %f24,%f30,%f30
360         faddd   %f28,pp1,%f28
362         faddd   %f6,qq1,%f6
363         fmuld   %f0,%f4,%f4
364         add     %l4,%g1,%l4
366         faddd   %f14,qq1,%f14
367         fmuld   %f8,%f12,%f12
368         add     %l5,%g1,%l5
370         faddd   %f22,qq1,%f22
371         fmuld   %f16,%f20,%f20
372         add     %l6,%g1,%l6
374         faddd   %f30,qq1,%f30
375         fmuld   %f24,%f28,%f28
376         add     %l7,%g1,%l7
378         fmuld   %f2,%f4,%f4
380         fmuld   %f10,%f12,%f12
382         fmuld   %f18,%f20,%f20
384         fmuld   %f26,%f28,%f28
386         fmuld   %f0,%f6,%f6
387         faddd   %f4,%f2,%f4
388         ldd     [%l4+16],%f32
390         fmuld   %f8,%f14,%f14
391         faddd   %f12,%f10,%f12
392         ldd     [%l5+16],%f34
394         fmuld   %f16,%f22,%f22
395         faddd   %f20,%f18,%f20
396         ldd     [%l6+16],%f36
398         fmuld   %f24,%f30,%f30
399         faddd   %f28,%f26,%f28
400         ldd     [%l7+16],%f38
402         fmuld   %f32,%f6,%f6
403         ldd     [%l4+8],%f2
405         fmuld   %f34,%f14,%f14
406         ldd     [%l5+8],%f10
408         fmuld   %f36,%f22,%f22
409         ldd     [%l6+8],%f18
411         fmuld   %f38,%f30,%f30
412         ldd     [%l7+8],%f26
414         fmuld   %f2,%f4,%f4
416         fmuld   %f10,%f12,%f12
418         fmuld   %f18,%f20,%f20
420         fmuld   %f26,%f28,%f28
422         fsubd   %f6,%f4,%f6
423         lda     [%i1]%asi,%l0           ! preload next argument
425         fsubd   %f14,%f12,%f14
426         lda     [%i1]%asi,%f0
428         fsubd   %f22,%f20,%f22
429         lda     [%i1+4]%asi,%f3
431         fsubd   %f30,%f28,%f30
432         andn    %l0,%i5,%l0
433         add     %i1,%i2,%i1
435         faddd   %f6,%f32,%f6
436         st      %f6,[%o0]
438         faddd   %f14,%f34,%f14
439         st      %f14,[%o1]
441         faddd   %f22,%f36,%f22
442         st      %f22,[%o2]
444         faddd   %f30,%f38,%f30
445         st      %f30,[%o3]
446         addcc   %i0,-1,%i0
448         bg,pt   %icc,.loop0
449 ! delay slot
450         st      %f7,[%o0+4]
452         ba,pt   %icc,.end
453 ! delay slot
454         nop
457         .align  16
458 .medium:
459         faddd   %f6,c3two51,%f4
460         st      %f5,[%fp+nk0]
462         faddd   %f14,c3two51,%f12
463         st      %f13,[%fp+nk1]
465         faddd   %f22,c3two51,%f20
466         st      %f21,[%fp+nk2]
468         faddd   %f30,c3two51,%f28
469         st      %f29,[%fp+nk3]
471         fsubd   %f4,c3two51,%f6
473         fsubd   %f12,c3two51,%f14
475         fsubd   %f20,c3two51,%f22
477         fsubd   %f28,c3two51,%f30
479         fmuld   %f6,pio2_1,%f2
480         ld      [%fp+nk0],%l0           ! n
482         fmuld   %f14,pio2_1,%f10
483         ld      [%fp+nk1],%l1
485         fmuld   %f22,pio2_1,%f18
486         ld      [%fp+nk2],%l2
488         fmuld   %f30,pio2_1,%f26
489         ld      [%fp+nk3],%l3
491         fsubd   %f0,%f2,%f0
492         fmuld   %f6,pio2_2,%f4
493         add     %l0,1,%l0
495         fsubd   %f8,%f10,%f8
496         fmuld   %f14,pio2_2,%f12
497         add     %l1,1,%l1
499         fsubd   %f16,%f18,%f16
500         fmuld   %f22,pio2_2,%f20
501         add     %l2,1,%l2
503         fsubd   %f24,%f26,%f24
504         fmuld   %f30,pio2_2,%f28
505         add     %l3,1,%l3
507         fsubd   %f0,%f4,%f32
509         fsubd   %f8,%f12,%f34
511         fsubd   %f16,%f20,%f36
513         fsubd   %f24,%f28,%f38
515         fsubd   %f0,%f32,%f0
516         fcmple32 %f32,pio2_3,%l4        ! x <= pio2_3 iff x < 0
518         fsubd   %f8,%f34,%f8
519         fcmple32 %f34,pio2_3,%l5
521         fsubd   %f16,%f36,%f16
522         fcmple32 %f36,pio2_3,%l6
524         fsubd   %f24,%f38,%f24
525         fcmple32 %f38,pio2_3,%l7
527         fsubd   %f0,%f4,%f0
528         fmuld   %f6,pio2_3,%f6
529         sll     %l4,30,%l4              ! if (x < 0) n = -n ^ 2
531         fsubd   %f8,%f12,%f8
532         fmuld   %f14,pio2_3,%f14
533         sll     %l5,30,%l5
535         fsubd   %f16,%f20,%f16
536         fmuld   %f22,pio2_3,%f22
537         sll     %l6,30,%l6
539         fsubd   %f24,%f28,%f24
540         fmuld   %f30,pio2_3,%f30
541         sll     %l7,30,%l7
543         fsubd   %f6,%f0,%f6
544         sra     %l4,31,%l4
546         fsubd   %f14,%f8,%f14
547         sra     %l5,31,%l5
549         fsubd   %f22,%f16,%f22
550         sra     %l6,31,%l6
552         fsubd   %f30,%f24,%f30
553         sra     %l7,31,%l7
555         fsubd   %f32,%f6,%f0            ! reduced x
556         xor     %l0,%l4,%l0
558         fsubd   %f34,%f14,%f8
559         xor     %l1,%l5,%l1
561         fsubd   %f36,%f22,%f16
562         xor     %l2,%l6,%l2
564         fsubd   %f38,%f30,%f24
565         xor     %l3,%l7,%l3
567         fabsd   %f0,%f2
568         sub     %l0,%l4,%l0
570         fabsd   %f8,%f10
571         sub     %l1,%l5,%l1
573         fabsd   %f16,%f18
574         sub     %l2,%l6,%l2
576         fabsd   %f24,%f26
577         sub     %l3,%l7,%l3
579         faddd   %f2,c3two44,%f4
580         st      %f5,[%fp+nk0]
581         and     %l4,2,%l4
583         faddd   %f10,c3two44,%f12
584         st      %f13,[%fp+nk1]
585         and     %l5,2,%l5
587         faddd   %f18,c3two44,%f20
588         st      %f21,[%fp+nk2]
589         and     %l6,2,%l6
591         faddd   %f26,c3two44,%f28
592         st      %f29,[%fp+nk3]
593         and     %l7,2,%l7
595         fsubd   %f32,%f0,%f4
596         xor     %l0,%l4,%l0
598         fsubd   %f34,%f8,%f12
599         xor     %l1,%l5,%l1
601         fsubd   %f36,%f16,%f20
602         xor     %l2,%l6,%l2
604         fsubd   %f38,%f24,%f28
605         xor     %l3,%l7,%l3
607         fzero   %f38
608         ld      [%fp+nk0],%l4
610         fsubd   %f4,%f6,%f6             ! w
611         ld      [%fp+nk1],%l5
613         fsubd   %f12,%f14,%f14
614         ld      [%fp+nk2],%l6
616         fnegd   %f38,%f38
617         ld      [%fp+nk3],%l7
618         sll     %l4,5,%l4               ! k
620         fsubd   %f20,%f22,%f22
621         sll     %l5,5,%l5
623         fsubd   %f28,%f30,%f30
624         sll     %l6,5,%l6
626         fand    %f0,%f38,%f32           ! sign bit of x
627         ldd     [%l4+%g1],%f4
628         sll     %l7,5,%l7
630         fand    %f8,%f38,%f34
631         ldd     [%l5+%g1],%f12
633         fand    %f16,%f38,%f36
634         ldd     [%l6+%g1],%f20
636         fand    %f24,%f38,%f38
637         ldd     [%l7+%g1],%f28
639         fsubd   %f2,%f4,%f2             ! x -= __vlibm_TBL_sincos2[k]
641         fsubd   %f10,%f12,%f10
643         fsubd   %f18,%f20,%f18
644         nop
646         fsubd   %f26,%f28,%f26
647         nop
649 ! 16-byte aligned
650         fmuld   %f2,%f2,%f0             ! z = x * x
651         andcc   %l0,1,%g0
652         bz,pn   %icc,.case8
653 ! delay slot
654         fxor    %f6,%f32,%f32
656         fmuld   %f10,%f10,%f8
657         andcc   %l1,1,%g0
658         bz,pn   %icc,.case4
659 ! delay slot
660         fxor    %f14,%f34,%f34
662         fmuld   %f18,%f18,%f16
663         andcc   %l2,1,%g0
664         bz,pn   %icc,.case2
665 ! delay slot
666         fxor    %f22,%f36,%f36
668         fmuld   %f26,%f26,%f24
669         andcc   %l3,1,%g0
670         bz,pn   %icc,.case1
671 ! delay slot
672         fxor    %f30,%f38,%f38
674 !.case0:
675         fmuld   %f0,qq3,%f6             ! cos(x0)
677         fmuld   %f8,qq3,%f14            ! cos(x1)
679         fmuld   %f16,qq3,%f22           ! cos(x2)
681         fmuld   %f24,qq3,%f30           ! cos(x3)
683         faddd   %f6,qq2,%f6
684         fmuld   %f0,pp2,%f4
686         faddd   %f14,qq2,%f14
687         fmuld   %f8,pp2,%f12
689         faddd   %f22,qq2,%f22
690         fmuld   %f16,pp2,%f20
692         faddd   %f30,qq2,%f30
693         fmuld   %f24,pp2,%f28
695         fmuld   %f0,%f6,%f6
696         faddd   %f4,pp1,%f4
698         fmuld   %f8,%f14,%f14
699         faddd   %f12,pp1,%f12
701         fmuld   %f16,%f22,%f22
702         faddd   %f20,pp1,%f20
704         fmuld   %f24,%f30,%f30
705         faddd   %f28,pp1,%f28
707         faddd   %f6,qq1,%f6
708         fmuld   %f0,%f4,%f4
709         add     %l4,%g1,%l4
711         faddd   %f14,qq1,%f14
712         fmuld   %f8,%f12,%f12
713         add     %l5,%g1,%l5
715         faddd   %f22,qq1,%f22
716         fmuld   %f16,%f20,%f20
717         add     %l6,%g1,%l6
719         faddd   %f30,qq1,%f30
720         fmuld   %f24,%f28,%f28
721         add     %l7,%g1,%l7
723         fmuld   %f2,%f4,%f4
725         fmuld   %f10,%f12,%f12
727         fmuld   %f18,%f20,%f20
729         fmuld   %f26,%f28,%f28
731         fmuld   %f0,%f6,%f6
732         faddd   %f4,%f32,%f4
733         ldd     [%l4+16],%f0
735         fmuld   %f8,%f14,%f14
736         faddd   %f12,%f34,%f12
737         ldd     [%l5+16],%f8
739         fmuld   %f16,%f22,%f22
740         faddd   %f20,%f36,%f20
741         ldd     [%l6+16],%f16
743         fmuld   %f24,%f30,%f30
744         faddd   %f28,%f38,%f28
745         ldd     [%l7+16],%f24
747         fmuld   %f0,%f6,%f6
748         faddd   %f4,%f2,%f4
749         ldd     [%l4+8],%f32
751         fmuld   %f8,%f14,%f14
752         faddd   %f12,%f10,%f12
753         ldd     [%l5+8],%f34
755         fmuld   %f16,%f22,%f22
756         faddd   %f20,%f18,%f20
757         ldd     [%l6+8],%f36
759         fmuld   %f24,%f30,%f30
760         faddd   %f28,%f26,%f28
761         ldd     [%l7+8],%f38
763         fmuld   %f32,%f4,%f4
765         fmuld   %f34,%f12,%f12
767         fmuld   %f36,%f20,%f20
769         fmuld   %f38,%f28,%f28
771         fsubd   %f6,%f4,%f6
773         fsubd   %f14,%f12,%f14
775         fsubd   %f22,%f20,%f22
777         fsubd   %f30,%f28,%f30
779         faddd   %f6,%f0,%f6
781         faddd   %f14,%f8,%f14
783         faddd   %f22,%f16,%f22
785         faddd   %f30,%f24,%f30
786         mov     %l0,%l4
788         fnegd   %f6,%f4
789         lda     [%i1]%asi,%l0           ! preload next argument
791         fnegd   %f14,%f12
792         lda     [%i1]%asi,%f0
794         fnegd   %f22,%f20
795         lda     [%i1+4]%asi,%f3
797         fnegd   %f30,%f28
798         andn    %l0,%i5,%l0
799         add     %i1,%i2,%i1
801         andcc   %l4,2,%g0
802         fmovdnz %icc,%f4,%f6
803         st      %f6,[%o0]
805         andcc   %l1,2,%g0
806         fmovdnz %icc,%f12,%f14
807         st      %f14,[%o1]
809         andcc   %l2,2,%g0
810         fmovdnz %icc,%f20,%f22
811         st      %f22,[%o2]
813         andcc   %l3,2,%g0
814         fmovdnz %icc,%f28,%f30
815         st      %f30,[%o3]
817         addcc   %i0,-1,%i0
818         bg,pt   %icc,.loop0
819 ! delay slot
820         st      %f7,[%o0+4]
822         ba,pt   %icc,.end
823 ! delay slot
824         nop
826         .align  16
827 .case1:
828         fmuld   %f24,pp3,%f30           ! sin(x3)
830         fmuld   %f0,qq3,%f6             ! cos(x0)
832         fmuld   %f8,qq3,%f14            ! cos(x1)
834         fmuld   %f16,qq3,%f22           ! cos(x2)
836         faddd   %f30,pp2,%f30
837         fmuld   %f24,qq2,%f28
839         faddd   %f6,qq2,%f6
840         fmuld   %f0,pp2,%f4
842         faddd   %f14,qq2,%f14
843         fmuld   %f8,pp2,%f12
845         faddd   %f22,qq2,%f22
846         fmuld   %f16,pp2,%f20
848         fmuld   %f24,%f30,%f30
849         faddd   %f28,qq1,%f28
851         fmuld   %f0,%f6,%f6
852         faddd   %f4,pp1,%f4
854         fmuld   %f8,%f14,%f14
855         faddd   %f12,pp1,%f12
857         fmuld   %f16,%f22,%f22
858         faddd   %f20,pp1,%f20
860         faddd   %f30,pp1,%f30
861         fmuld   %f24,%f28,%f28
862         add     %l7,%g1,%l7
864         faddd   %f6,qq1,%f6
865         fmuld   %f0,%f4,%f4
866         add     %l4,%g1,%l4
868         faddd   %f14,qq1,%f14
869         fmuld   %f8,%f12,%f12
870         add     %l5,%g1,%l5
872         faddd   %f22,qq1,%f22
873         fmuld   %f16,%f20,%f20
874         add     %l6,%g1,%l6
876         fmuld   %f24,%f30,%f30
878         fmuld   %f2,%f4,%f4
880         fmuld   %f10,%f12,%f12
882         fmuld   %f18,%f20,%f20
884         fmuld   %f26,%f30,%f30
885         ldd     [%l7+8],%f24
887         fmuld   %f0,%f6,%f6
888         faddd   %f4,%f32,%f4
889         ldd     [%l4+16],%f0
891         fmuld   %f8,%f14,%f14
892         faddd   %f12,%f34,%f12
893         ldd     [%l5+16],%f8
895         fmuld   %f16,%f22,%f22
896         faddd   %f20,%f36,%f20
897         ldd     [%l6+16],%f16
899         fmuld   %f24,%f28,%f28
900         faddd   %f38,%f30,%f30
902         fmuld   %f0,%f6,%f6
903         faddd   %f4,%f2,%f4
904         ldd     [%l4+8],%f32
906         fmuld   %f8,%f14,%f14
907         faddd   %f12,%f10,%f12
908         ldd     [%l5+8],%f34
910         fmuld   %f16,%f22,%f22
911         faddd   %f20,%f18,%f20
912         ldd     [%l6+8],%f36
914         faddd   %f26,%f30,%f30
915         ldd     [%l7+16],%f38
917         fmuld   %f32,%f4,%f4
919         fmuld   %f34,%f12,%f12
921         fmuld   %f36,%f20,%f20
923         fmuld   %f38,%f30,%f30
925         fsubd   %f6,%f4,%f6
927         fsubd   %f14,%f12,%f14
929         fsubd   %f22,%f20,%f22
931         faddd   %f30,%f28,%f30
933         faddd   %f6,%f0,%f6
935         faddd   %f14,%f8,%f14
937         faddd   %f22,%f16,%f22
939         faddd   %f30,%f24,%f30
940         mov     %l0,%l4
942         fnegd   %f6,%f4
943         lda     [%i1]%asi,%l0           ! preload next argument
945         fnegd   %f14,%f12
946         lda     [%i1]%asi,%f0
948         fnegd   %f22,%f20
949         lda     [%i1+4]%asi,%f3
951         fnegd   %f30,%f28
952         andn    %l0,%i5,%l0
953         add     %i1,%i2,%i1
955         andcc   %l4,2,%g0
956         fmovdnz %icc,%f4,%f6
957         st      %f6,[%o0]
959         andcc   %l1,2,%g0
960         fmovdnz %icc,%f12,%f14
961         st      %f14,[%o1]
963         andcc   %l2,2,%g0
964         fmovdnz %icc,%f20,%f22
965         st      %f22,[%o2]
967         andcc   %l3,2,%g0
968         fmovdnz %icc,%f28,%f30
969         st      %f30,[%o3]
971         addcc   %i0,-1,%i0
972         bg,pt   %icc,.loop0
973 ! delay slot
974         st      %f7,[%o0+4]
976         ba,pt   %icc,.end
977 ! delay slot
978         nop
980         .align  16
981 .case2:
982         fmuld   %f26,%f26,%f24
983         andcc   %l3,1,%g0
984         bz,pn   %icc,.case3
985 ! delay slot
986         fxor    %f30,%f38,%f38
988         fmuld   %f16,pp3,%f22           ! sin(x2)
990         fmuld   %f0,qq3,%f6             ! cos(x0)
992         fmuld   %f8,qq3,%f14            ! cos(x1)
994         faddd   %f22,pp2,%f22
995         fmuld   %f16,qq2,%f20
997         fmuld   %f24,qq3,%f30           ! cos(x3)
999         faddd   %f6,qq2,%f6
1000         fmuld   %f0,pp2,%f4
1002         faddd   %f14,qq2,%f14
1003         fmuld   %f8,pp2,%f12
1005         fmuld   %f16,%f22,%f22
1006         faddd   %f20,qq1,%f20
1008         faddd   %f30,qq2,%f30
1009         fmuld   %f24,pp2,%f28
1011         fmuld   %f0,%f6,%f6
1012         faddd   %f4,pp1,%f4
1014         fmuld   %f8,%f14,%f14
1015         faddd   %f12,pp1,%f12
1017         faddd   %f22,pp1,%f22
1018         fmuld   %f16,%f20,%f20
1019         add     %l6,%g1,%l6
1021         fmuld   %f24,%f30,%f30
1022         faddd   %f28,pp1,%f28
1024         faddd   %f6,qq1,%f6
1025         fmuld   %f0,%f4,%f4
1026         add     %l4,%g1,%l4
1028         faddd   %f14,qq1,%f14
1029         fmuld   %f8,%f12,%f12
1030         add     %l5,%g1,%l5
1032         fmuld   %f16,%f22,%f22
1034         faddd   %f30,qq1,%f30
1035         fmuld   %f24,%f28,%f28
1036         add     %l7,%g1,%l7
1038         fmuld   %f2,%f4,%f4
1040         fmuld   %f10,%f12,%f12
1042         fmuld   %f18,%f22,%f22
1043         ldd     [%l6+8],%f16
1045         fmuld   %f26,%f28,%f28
1047         fmuld   %f0,%f6,%f6
1048         faddd   %f4,%f32,%f4
1049         ldd     [%l4+16],%f0
1051         fmuld   %f8,%f14,%f14
1052         faddd   %f12,%f34,%f12
1053         ldd     [%l5+16],%f8
1055         fmuld   %f16,%f20,%f20
1056         faddd   %f36,%f22,%f22
1058         fmuld   %f24,%f30,%f30
1059         faddd   %f28,%f38,%f28
1060         ldd     [%l7+16],%f24
1062         fmuld   %f0,%f6,%f6
1063         faddd   %f4,%f2,%f4
1064         ldd     [%l4+8],%f32
1066         fmuld   %f8,%f14,%f14
1067         faddd   %f12,%f10,%f12
1068         ldd     [%l5+8],%f34
1070         faddd   %f18,%f22,%f22
1071         ldd     [%l6+16],%f36
1073         fmuld   %f24,%f30,%f30
1074         faddd   %f28,%f26,%f28
1075         ldd     [%l7+8],%f38
1077         fmuld   %f32,%f4,%f4
1079         fmuld   %f34,%f12,%f12
1081         fmuld   %f36,%f22,%f22
1083         fmuld   %f38,%f28,%f28
1085         fsubd   %f6,%f4,%f6
1087         fsubd   %f14,%f12,%f14
1089         faddd   %f22,%f20,%f22
1091         fsubd   %f30,%f28,%f30
1093         faddd   %f6,%f0,%f6
1095         faddd   %f14,%f8,%f14
1097         faddd   %f22,%f16,%f22
1099         faddd   %f30,%f24,%f30
1100         mov     %l0,%l4
1102         fnegd   %f6,%f4
1103         lda     [%i1]%asi,%l0           ! preload next argument
1105         fnegd   %f14,%f12
1106         lda     [%i1]%asi,%f0
1108         fnegd   %f22,%f20
1109         lda     [%i1+4]%asi,%f3
1111         fnegd   %f30,%f28
1112         andn    %l0,%i5,%l0
1113         add     %i1,%i2,%i1
1115         andcc   %l4,2,%g0
1116         fmovdnz %icc,%f4,%f6
1117         st      %f6,[%o0]
1119         andcc   %l1,2,%g0
1120         fmovdnz %icc,%f12,%f14
1121         st      %f14,[%o1]
1123         andcc   %l2,2,%g0
1124         fmovdnz %icc,%f20,%f22
1125         st      %f22,[%o2]
1127         andcc   %l3,2,%g0
1128         fmovdnz %icc,%f28,%f30
1129         st      %f30,[%o3]
1131         addcc   %i0,-1,%i0
1132         bg,pt   %icc,.loop0
1133 ! delay slot
1134         st      %f7,[%o0+4]
1136         ba,pt   %icc,.end
1137 ! delay slot
1138         nop
1140         .align  16
1141 .case3:
1142         fmuld   %f16,pp3,%f22           ! sin(x2)
1144         fmuld   %f24,pp3,%f30           ! sin(x3)
1146         fmuld   %f0,qq3,%f6             ! cos(x0)
1148         fmuld   %f8,qq3,%f14            ! cos(x1)
1150         faddd   %f22,pp2,%f22
1151         fmuld   %f16,qq2,%f20
1153         faddd   %f30,pp2,%f30
1154         fmuld   %f24,qq2,%f28
1156         faddd   %f6,qq2,%f6
1157         fmuld   %f0,pp2,%f4
1159         faddd   %f14,qq2,%f14
1160         fmuld   %f8,pp2,%f12
1162         fmuld   %f16,%f22,%f22
1163         faddd   %f20,qq1,%f20
1165         fmuld   %f24,%f30,%f30
1166         faddd   %f28,qq1,%f28
1168         fmuld   %f0,%f6,%f6
1169         faddd   %f4,pp1,%f4
1171         fmuld   %f8,%f14,%f14
1172         faddd   %f12,pp1,%f12
1174         faddd   %f22,pp1,%f22
1175         fmuld   %f16,%f20,%f20
1176         add     %l6,%g1,%l6
1178         faddd   %f30,pp1,%f30
1179         fmuld   %f24,%f28,%f28
1180         add     %l7,%g1,%l7
1182         faddd   %f6,qq1,%f6
1183         fmuld   %f0,%f4,%f4
1184         add     %l4,%g1,%l4
1186         faddd   %f14,qq1,%f14
1187         fmuld   %f8,%f12,%f12
1188         add     %l5,%g1,%l5
1190         fmuld   %f16,%f22,%f22
1192         fmuld   %f24,%f30,%f30
1194         fmuld   %f2,%f4,%f4
1196         fmuld   %f10,%f12,%f12
1198         fmuld   %f18,%f22,%f22
1199         ldd     [%l6+8],%f16
1201         fmuld   %f26,%f30,%f30
1202         ldd     [%l7+8],%f24
1204         fmuld   %f0,%f6,%f6
1205         faddd   %f4,%f32,%f4
1206         ldd     [%l4+16],%f0
1208         fmuld   %f8,%f14,%f14
1209         faddd   %f12,%f34,%f12
1210         ldd     [%l5+16],%f8
1212         fmuld   %f16,%f20,%f20
1213         faddd   %f36,%f22,%f22
1215         fmuld   %f24,%f28,%f28
1216         faddd   %f38,%f30,%f30
1218         fmuld   %f0,%f6,%f6
1219         faddd   %f4,%f2,%f4
1220         ldd     [%l4+8],%f32
1222         fmuld   %f8,%f14,%f14
1223         faddd   %f12,%f10,%f12
1224         ldd     [%l5+8],%f34
1226         faddd   %f18,%f22,%f22
1227         ldd     [%l6+16],%f36
1229         faddd   %f26,%f30,%f30
1230         ldd     [%l7+16],%f38
1232         fmuld   %f32,%f4,%f4
1234         fmuld   %f34,%f12,%f12
1236         fmuld   %f36,%f22,%f22
1238         fmuld   %f38,%f30,%f30
1240         fsubd   %f6,%f4,%f6
1242         fsubd   %f14,%f12,%f14
1244         faddd   %f22,%f20,%f22
1246         faddd   %f30,%f28,%f30
1248         faddd   %f6,%f0,%f6
1250         faddd   %f14,%f8,%f14
1252         faddd   %f22,%f16,%f22
1254         faddd   %f30,%f24,%f30
1255         mov     %l0,%l4
1257         fnegd   %f6,%f4
1258         lda     [%i1]%asi,%l0           ! preload next argument
1260         fnegd   %f14,%f12
1261         lda     [%i1]%asi,%f0
1263         fnegd   %f22,%f20
1264         lda     [%i1+4]%asi,%f3
1266         fnegd   %f30,%f28
1267         andn    %l0,%i5,%l0
1268         add     %i1,%i2,%i1
1270         andcc   %l4,2,%g0
1271         fmovdnz %icc,%f4,%f6
1272         st      %f6,[%o0]
1274         andcc   %l1,2,%g0
1275         fmovdnz %icc,%f12,%f14
1276         st      %f14,[%o1]
1278         andcc   %l2,2,%g0
1279         fmovdnz %icc,%f20,%f22
1280         st      %f22,[%o2]
1282         andcc   %l3,2,%g0
1283         fmovdnz %icc,%f28,%f30
1284         st      %f30,[%o3]
1286         addcc   %i0,-1,%i0
1287         bg,pt   %icc,.loop0
1288 ! delay slot
1289         st      %f7,[%o0+4]
1291         ba,pt   %icc,.end
1292 ! delay slot
1293         nop
1295         .align  16
1296 .case4:
1297         fmuld   %f18,%f18,%f16
1298         andcc   %l2,1,%g0
1299         bz,pn   %icc,.case6
1300 ! delay slot
1301         fxor    %f22,%f36,%f36
1303         fmuld   %f26,%f26,%f24
1304         andcc   %l3,1,%g0
1305         bz,pn   %icc,.case5
1306 ! delay slot
1307         fxor    %f30,%f38,%f38
1309         fmuld   %f8,pp3,%f14            ! sin(x1)
1311         fmuld   %f0,qq3,%f6             ! cos(x0)
1313         faddd   %f14,pp2,%f14
1314         fmuld   %f8,qq2,%f12
1316         fmuld   %f16,qq3,%f22           ! cos(x2)
1318         fmuld   %f24,qq3,%f30           ! cos(x3)
1320         faddd   %f6,qq2,%f6
1321         fmuld   %f0,pp2,%f4
1323         fmuld   %f8,%f14,%f14
1324         faddd   %f12,qq1,%f12
1326         faddd   %f22,qq2,%f22
1327         fmuld   %f16,pp2,%f20
1329         faddd   %f30,qq2,%f30
1330         fmuld   %f24,pp2,%f28
1332         fmuld   %f0,%f6,%f6
1333         faddd   %f4,pp1,%f4
1335         faddd   %f14,pp1,%f14
1336         fmuld   %f8,%f12,%f12
1337         add     %l5,%g1,%l5
1339         fmuld   %f16,%f22,%f22
1340         faddd   %f20,pp1,%f20
1342         fmuld   %f24,%f30,%f30
1343         faddd   %f28,pp1,%f28
1345         faddd   %f6,qq1,%f6
1346         fmuld   %f0,%f4,%f4
1347         add     %l4,%g1,%l4
1349         fmuld   %f8,%f14,%f14
1351         faddd   %f22,qq1,%f22
1352         fmuld   %f16,%f20,%f20
1353         add     %l6,%g1,%l6
1355         faddd   %f30,qq1,%f30
1356         fmuld   %f24,%f28,%f28
1357         add     %l7,%g1,%l7
1359         fmuld   %f2,%f4,%f4
1361         fmuld   %f10,%f14,%f14
1362         ldd     [%l5+8],%f8
1364         fmuld   %f18,%f20,%f20
1366         fmuld   %f26,%f28,%f28
1368         fmuld   %f0,%f6,%f6
1369         faddd   %f4,%f32,%f4
1370         ldd     [%l4+16],%f0
1372         fmuld   %f8,%f12,%f12
1373         faddd   %f34,%f14,%f14
1375         fmuld   %f16,%f22,%f22
1376         faddd   %f20,%f36,%f20
1377         ldd     [%l6+16],%f16
1379         fmuld   %f24,%f30,%f30
1380         faddd   %f28,%f38,%f28
1381         ldd     [%l7+16],%f24
1383         fmuld   %f0,%f6,%f6
1384         faddd   %f4,%f2,%f4
1385         ldd     [%l4+8],%f32
1387         faddd   %f10,%f14,%f14
1388         ldd     [%l5+16],%f34
1390         fmuld   %f16,%f22,%f22
1391         faddd   %f20,%f18,%f20
1392         ldd     [%l6+8],%f36
1394         fmuld   %f24,%f30,%f30
1395         faddd   %f28,%f26,%f28
1396         ldd     [%l7+8],%f38
1398         fmuld   %f32,%f4,%f4
1400         fmuld   %f34,%f14,%f14
1402         fmuld   %f36,%f20,%f20
1404         fmuld   %f38,%f28,%f28
1406         fsubd   %f6,%f4,%f6
1408         faddd   %f14,%f12,%f14
1410         fsubd   %f22,%f20,%f22
1412         fsubd   %f30,%f28,%f30
1414         faddd   %f6,%f0,%f6
1416         faddd   %f14,%f8,%f14
1418         faddd   %f22,%f16,%f22
1420         faddd   %f30,%f24,%f30
1421         mov     %l0,%l4
1423         fnegd   %f6,%f4
1424         lda     [%i1]%asi,%l0           ! preload next argument
1426         fnegd   %f14,%f12
1427         lda     [%i1]%asi,%f0
1429         fnegd   %f22,%f20
1430         lda     [%i1+4]%asi,%f3
1432         fnegd   %f30,%f28
1433         andn    %l0,%i5,%l0
1434         add     %i1,%i2,%i1
1436         andcc   %l4,2,%g0
1437         fmovdnz %icc,%f4,%f6
1438         st      %f6,[%o0]
1440         andcc   %l1,2,%g0
1441         fmovdnz %icc,%f12,%f14
1442         st      %f14,[%o1]
1444         andcc   %l2,2,%g0
1445         fmovdnz %icc,%f20,%f22
1446         st      %f22,[%o2]
1448         andcc   %l3,2,%g0
1449         fmovdnz %icc,%f28,%f30
1450         st      %f30,[%o3]
1452         addcc   %i0,-1,%i0
1453         bg,pt   %icc,.loop0
1454 ! delay slot
1455         st      %f7,[%o0+4]
1457         ba,pt   %icc,.end
1458 ! delay slot
1459         nop
1461         .align  16
1462 .case5:
1463         fmuld   %f8,pp3,%f14            ! sin(x1)
1465         fmuld   %f24,pp3,%f30           ! sin(x3)
1467         fmuld   %f0,qq3,%f6             ! cos(x0)
1469         faddd   %f14,pp2,%f14
1470         fmuld   %f8,qq2,%f12
1472         fmuld   %f16,qq3,%f22           ! cos(x2)
1474         faddd   %f30,pp2,%f30
1475         fmuld   %f24,qq2,%f28
1477         faddd   %f6,qq2,%f6
1478         fmuld   %f0,pp2,%f4
1480         fmuld   %f8,%f14,%f14
1481         faddd   %f12,qq1,%f12
1483         faddd   %f22,qq2,%f22
1484         fmuld   %f16,pp2,%f20
1486         fmuld   %f24,%f30,%f30
1487         faddd   %f28,qq1,%f28
1489         fmuld   %f0,%f6,%f6
1490         faddd   %f4,pp1,%f4
1492         faddd   %f14,pp1,%f14
1493         fmuld   %f8,%f12,%f12
1494         add     %l5,%g1,%l5
1496         fmuld   %f16,%f22,%f22
1497         faddd   %f20,pp1,%f20
1499         faddd   %f30,pp1,%f30
1500         fmuld   %f24,%f28,%f28
1501         add     %l7,%g1,%l7
1503         faddd   %f6,qq1,%f6
1504         fmuld   %f0,%f4,%f4
1505         add     %l4,%g1,%l4
1507         fmuld   %f8,%f14,%f14
1509         faddd   %f22,qq1,%f22
1510         fmuld   %f16,%f20,%f20
1511         add     %l6,%g1,%l6
1513         fmuld   %f24,%f30,%f30
1515         fmuld   %f2,%f4,%f4
1517         fmuld   %f10,%f14,%f14
1518         ldd     [%l5+8],%f8
1520         fmuld   %f18,%f20,%f20
1522         fmuld   %f26,%f30,%f30
1523         ldd     [%l7+8],%f24
1525         fmuld   %f0,%f6,%f6
1526         faddd   %f4,%f32,%f4
1527         ldd     [%l4+16],%f0
1529         fmuld   %f8,%f12,%f12
1530         faddd   %f34,%f14,%f14
1532         fmuld   %f16,%f22,%f22
1533         faddd   %f20,%f36,%f20
1534         ldd     [%l6+16],%f16
1536         fmuld   %f24,%f28,%f28
1537         faddd   %f38,%f30,%f30
1539         fmuld   %f0,%f6,%f6
1540         faddd   %f4,%f2,%f4
1541         ldd     [%l4+8],%f32
1543         faddd   %f10,%f14,%f14
1544         ldd     [%l5+16],%f34
1546         fmuld   %f16,%f22,%f22
1547         faddd   %f20,%f18,%f20
1548         ldd     [%l6+8],%f36
1550         faddd   %f26,%f30,%f30
1551         ldd     [%l7+16],%f38
1553         fmuld   %f32,%f4,%f4
1555         fmuld   %f34,%f14,%f14
1557         fmuld   %f36,%f20,%f20
1559         fmuld   %f38,%f30,%f30
1561         fsubd   %f6,%f4,%f6
1563         faddd   %f14,%f12,%f14
1565         fsubd   %f22,%f20,%f22
1567         faddd   %f30,%f28,%f30
1569         faddd   %f6,%f0,%f6
1571         faddd   %f14,%f8,%f14
1573         faddd   %f22,%f16,%f22
1575         faddd   %f30,%f24,%f30
1576         mov     %l0,%l4
1578         fnegd   %f6,%f4
1579         lda     [%i1]%asi,%l0           ! preload next argument
1581         fnegd   %f14,%f12
1582         lda     [%i1]%asi,%f0
1584         fnegd   %f22,%f20
1585         lda     [%i1+4]%asi,%f3
1587         fnegd   %f30,%f28
1588         andn    %l0,%i5,%l0
1589         add     %i1,%i2,%i1
1591         andcc   %l4,2,%g0
1592         fmovdnz %icc,%f4,%f6
1593         st      %f6,[%o0]
1595         andcc   %l1,2,%g0
1596         fmovdnz %icc,%f12,%f14
1597         st      %f14,[%o1]
1599         andcc   %l2,2,%g0
1600         fmovdnz %icc,%f20,%f22
1601         st      %f22,[%o2]
1603         andcc   %l3,2,%g0
1604         fmovdnz %icc,%f28,%f30
1605         st      %f30,[%o3]
1607         addcc   %i0,-1,%i0
1608         bg,pt   %icc,.loop0
1609 ! delay slot
1610         st      %f7,[%o0+4]
1612         ba,pt   %icc,.end
1613 ! delay slot
1614         nop
1616         .align  16
1617 .case6:
1618         fmuld   %f26,%f26,%f24
1619         andcc   %l3,1,%g0
1620         bz,pn   %icc,.case7
1621 ! delay slot
1622         fxor    %f30,%f38,%f38
1624         fmuld   %f8,pp3,%f14            ! sin(x1)
1626         fmuld   %f16,pp3,%f22           ! sin(x2)
1628         fmuld   %f0,qq3,%f6             ! cos(x0)
1630         faddd   %f14,pp2,%f14
1631         fmuld   %f8,qq2,%f12
1633         faddd   %f22,pp2,%f22
1634         fmuld   %f16,qq2,%f20
1636         fmuld   %f24,qq3,%f30           ! cos(x3)
1638         faddd   %f6,qq2,%f6
1639         fmuld   %f0,pp2,%f4
1641         fmuld   %f8,%f14,%f14
1642         faddd   %f12,qq1,%f12
1644         fmuld   %f16,%f22,%f22
1645         faddd   %f20,qq1,%f20
1647         faddd   %f30,qq2,%f30
1648         fmuld   %f24,pp2,%f28
1650         fmuld   %f0,%f6,%f6
1651         faddd   %f4,pp1,%f4
1653         faddd   %f14,pp1,%f14
1654         fmuld   %f8,%f12,%f12
1655         add     %l5,%g1,%l5
1657         faddd   %f22,pp1,%f22
1658         fmuld   %f16,%f20,%f20
1659         add     %l6,%g1,%l6
1661         fmuld   %f24,%f30,%f30
1662         faddd   %f28,pp1,%f28
1664         faddd   %f6,qq1,%f6
1665         fmuld   %f0,%f4,%f4
1666         add     %l4,%g1,%l4
1668         fmuld   %f8,%f14,%f14
1670         fmuld   %f16,%f22,%f22
1672         faddd   %f30,qq1,%f30
1673         fmuld   %f24,%f28,%f28
1674         add     %l7,%g1,%l7
1676         fmuld   %f2,%f4,%f4
1678         fmuld   %f10,%f14,%f14
1679         ldd     [%l5+8],%f8
1681         fmuld   %f18,%f22,%f22
1682         ldd     [%l6+8],%f16
1684         fmuld   %f26,%f28,%f28
1686         fmuld   %f0,%f6,%f6
1687         faddd   %f4,%f32,%f4
1688         ldd     [%l4+16],%f0
1690         fmuld   %f8,%f12,%f12
1691         faddd   %f34,%f14,%f14
1693         fmuld   %f16,%f20,%f20
1694         faddd   %f36,%f22,%f22
1696         fmuld   %f24,%f30,%f30
1697         faddd   %f28,%f38,%f28
1698         ldd     [%l7+16],%f24
1700         fmuld   %f0,%f6,%f6
1701         faddd   %f4,%f2,%f4
1702         ldd     [%l4+8],%f32
1704         faddd   %f10,%f14,%f14
1705         ldd     [%l5+16],%f34
1707         faddd   %f18,%f22,%f22
1708         ldd     [%l6+16],%f36
1710         fmuld   %f24,%f30,%f30
1711         faddd   %f28,%f26,%f28
1712         ldd     [%l7+8],%f38
1714         fmuld   %f32,%f4,%f4
1716         fmuld   %f34,%f14,%f14
1718         fmuld   %f36,%f22,%f22
1720         fmuld   %f38,%f28,%f28
1722         fsubd   %f6,%f4,%f6
1724         faddd   %f14,%f12,%f14
1726         faddd   %f22,%f20,%f22
1728         fsubd   %f30,%f28,%f30
1730         faddd   %f6,%f0,%f6
1732         faddd   %f14,%f8,%f14
1734         faddd   %f22,%f16,%f22
1736         faddd   %f30,%f24,%f30
1737         mov     %l0,%l4
1739         fnegd   %f6,%f4
1740         lda     [%i1]%asi,%l0           ! preload next argument
1742         fnegd   %f14,%f12
1743         lda     [%i1]%asi,%f0
1745         fnegd   %f22,%f20
1746         lda     [%i1+4]%asi,%f3
1748         fnegd   %f30,%f28
1749         andn    %l0,%i5,%l0
1750         add     %i1,%i2,%i1
1752         andcc   %l4,2,%g0
1753         fmovdnz %icc,%f4,%f6
1754         st      %f6,[%o0]
1756         andcc   %l1,2,%g0
1757         fmovdnz %icc,%f12,%f14
1758         st      %f14,[%o1]
1760         andcc   %l2,2,%g0
1761         fmovdnz %icc,%f20,%f22
1762         st      %f22,[%o2]
1764         andcc   %l3,2,%g0
1765         fmovdnz %icc,%f28,%f30
1766         st      %f30,[%o3]
1768         addcc   %i0,-1,%i0
1769         bg,pt   %icc,.loop0
1770 ! delay slot
1771         st      %f7,[%o0+4]
1773         ba,pt   %icc,.end
1774 ! delay slot
1775         nop
1777         .align  16
1778 .case7:
1779         fmuld   %f8,pp3,%f14            ! sin(x1)
1781         fmuld   %f16,pp3,%f22           ! sin(x2)
1783         fmuld   %f24,pp3,%f30           ! sin(x3)
1785         fmuld   %f0,qq3,%f6             ! cos(x0)
1787         faddd   %f14,pp2,%f14
1788         fmuld   %f8,qq2,%f12
1790         faddd   %f22,pp2,%f22
1791         fmuld   %f16,qq2,%f20
1793         faddd   %f30,pp2,%f30
1794         fmuld   %f24,qq2,%f28
1796         faddd   %f6,qq2,%f6
1797         fmuld   %f0,pp2,%f4
1799         fmuld   %f8,%f14,%f14
1800         faddd   %f12,qq1,%f12
1802         fmuld   %f16,%f22,%f22
1803         faddd   %f20,qq1,%f20
1805         fmuld   %f24,%f30,%f30
1806         faddd   %f28,qq1,%f28
1808         fmuld   %f0,%f6,%f6
1809         faddd   %f4,pp1,%f4
1811         faddd   %f14,pp1,%f14
1812         fmuld   %f8,%f12,%f12
1813         add     %l5,%g1,%l5
1815         faddd   %f22,pp1,%f22
1816         fmuld   %f16,%f20,%f20
1817         add     %l6,%g1,%l6
1819         faddd   %f30,pp1,%f30
1820         fmuld   %f24,%f28,%f28
1821         add     %l7,%g1,%l7
1823         faddd   %f6,qq1,%f6
1824         fmuld   %f0,%f4,%f4
1825         add     %l4,%g1,%l4
1827         fmuld   %f8,%f14,%f14
1829         fmuld   %f16,%f22,%f22
1831         fmuld   %f24,%f30,%f30
1833         fmuld   %f2,%f4,%f4
1835         fmuld   %f10,%f14,%f14
1836         ldd     [%l5+8],%f8
1838         fmuld   %f18,%f22,%f22
1839         ldd     [%l6+8],%f16
1841         fmuld   %f26,%f30,%f30
1842         ldd     [%l7+8],%f24
1844         fmuld   %f0,%f6,%f6
1845         faddd   %f4,%f32,%f4
1846         ldd     [%l4+16],%f0
1848         fmuld   %f8,%f12,%f12
1849         faddd   %f34,%f14,%f14
1851         fmuld   %f16,%f20,%f20
1852         faddd   %f36,%f22,%f22
1854         fmuld   %f24,%f28,%f28
1855         faddd   %f38,%f30,%f30
1857         fmuld   %f0,%f6,%f6
1858         faddd   %f4,%f2,%f4
1859         ldd     [%l4+8],%f32
1861         faddd   %f10,%f14,%f14
1862         ldd     [%l5+16],%f34
1864         faddd   %f18,%f22,%f22
1865         ldd     [%l6+16],%f36
1867         faddd   %f26,%f30,%f30
1868         ldd     [%l7+16],%f38
1870         fmuld   %f32,%f4,%f4
1872         fmuld   %f34,%f14,%f14
1874         fmuld   %f36,%f22,%f22
1876         fmuld   %f38,%f30,%f30
1878         fsubd   %f6,%f4,%f6
1880         faddd   %f14,%f12,%f14
1882         faddd   %f22,%f20,%f22
1884         faddd   %f30,%f28,%f30
1886         faddd   %f6,%f0,%f6
1888         faddd   %f14,%f8,%f14
1890         faddd   %f22,%f16,%f22
1892         faddd   %f30,%f24,%f30
1893         mov     %l0,%l4
1895         fnegd   %f6,%f4
1896         lda     [%i1]%asi,%l0           ! preload next argument
1898         fnegd   %f14,%f12
1899         lda     [%i1]%asi,%f0
1901         fnegd   %f22,%f20
1902         lda     [%i1+4]%asi,%f3
1904         fnegd   %f30,%f28
1905         andn    %l0,%i5,%l0
1906         add     %i1,%i2,%i1
1908         andcc   %l4,2,%g0
1909         fmovdnz %icc,%f4,%f6
1910         st      %f6,[%o0]
1912         andcc   %l1,2,%g0
1913         fmovdnz %icc,%f12,%f14
1914         st      %f14,[%o1]
1916         andcc   %l2,2,%g0
1917         fmovdnz %icc,%f20,%f22
1918         st      %f22,[%o2]
1920         andcc   %l3,2,%g0
1921         fmovdnz %icc,%f28,%f30
1922         st      %f30,[%o3]
1924         addcc   %i0,-1,%i0
1925         bg,pt   %icc,.loop0
1926 ! delay slot
1927         st      %f7,[%o0+4]
1929         ba,pt   %icc,.end
1930 ! delay slot
1931         nop
1933         .align  16
1934 .case8:
1935         fmuld   %f10,%f10,%f8
1936         andcc   %l1,1,%g0
1937         bz,pn   %icc,.case12
1938 ! delay slot
1939         fxor    %f14,%f34,%f34
1941         fmuld   %f18,%f18,%f16
1942         andcc   %l2,1,%g0
1943         bz,pn   %icc,.case10
1944 ! delay slot
1945         fxor    %f22,%f36,%f36
1947         fmuld   %f26,%f26,%f24
1948         andcc   %l3,1,%g0
1949         bz,pn   %icc,.case9
1950 ! delay slot
1951         fxor    %f30,%f38,%f38
1953         fmuld   %f0,pp3,%f6             ! sin(x0)
1955         faddd   %f6,pp2,%f6
1956         fmuld   %f0,qq2,%f4
1958         fmuld   %f8,qq3,%f14            ! cos(x1)
1960         fmuld   %f16,qq3,%f22           ! cos(x2)
1962         fmuld   %f24,qq3,%f30           ! cos(x3)
1964         fmuld   %f0,%f6,%f6
1965         faddd   %f4,qq1,%f4
1967         faddd   %f14,qq2,%f14
1968         fmuld   %f8,pp2,%f12
1970         faddd   %f22,qq2,%f22
1971         fmuld   %f16,pp2,%f20
1973         faddd   %f30,qq2,%f30
1974         fmuld   %f24,pp2,%f28
1976         faddd   %f6,pp1,%f6
1977         fmuld   %f0,%f4,%f4
1978         add     %l4,%g1,%l4
1980         fmuld   %f8,%f14,%f14
1981         faddd   %f12,pp1,%f12
1983         fmuld   %f16,%f22,%f22
1984         faddd   %f20,pp1,%f20
1986         fmuld   %f24,%f30,%f30
1987         faddd   %f28,pp1,%f28
1989         fmuld   %f0,%f6,%f6
1991         faddd   %f14,qq1,%f14
1992         fmuld   %f8,%f12,%f12
1993         add     %l5,%g1,%l5
1995         faddd   %f22,qq1,%f22
1996         fmuld   %f16,%f20,%f20
1997         add     %l6,%g1,%l6
1999         faddd   %f30,qq1,%f30
2000         fmuld   %f24,%f28,%f28
2001         add     %l7,%g1,%l7
2003         fmuld   %f2,%f6,%f6
2004         ldd     [%l4+8],%f0
2006         fmuld   %f10,%f12,%f12
2008         fmuld   %f18,%f20,%f20
2010         fmuld   %f26,%f28,%f28
2012         fmuld   %f0,%f4,%f4
2013         faddd   %f32,%f6,%f6
2015         fmuld   %f8,%f14,%f14
2016         faddd   %f12,%f34,%f12
2017         ldd     [%l5+16],%f8
2019         fmuld   %f16,%f22,%f22
2020         faddd   %f20,%f36,%f20
2021         ldd     [%l6+16],%f16
2023         fmuld   %f24,%f30,%f30
2024         faddd   %f28,%f38,%f28
2025         ldd     [%l7+16],%f24
2027         faddd   %f2,%f6,%f6
2028         ldd     [%l4+16],%f32
2030         fmuld   %f8,%f14,%f14
2031         faddd   %f12,%f10,%f12
2032         ldd     [%l5+8],%f34
2034         fmuld   %f16,%f22,%f22
2035         faddd   %f20,%f18,%f20
2036         ldd     [%l6+8],%f36
2038         fmuld   %f24,%f30,%f30
2039         faddd   %f28,%f26,%f28
2040         ldd     [%l7+8],%f38
2042         fmuld   %f32,%f6,%f6
2044         fmuld   %f34,%f12,%f12
2046         fmuld   %f36,%f20,%f20
2048         fmuld   %f38,%f28,%f28
2050         faddd   %f6,%f4,%f6
2052         fsubd   %f14,%f12,%f14
2054         fsubd   %f22,%f20,%f22
2056         fsubd   %f30,%f28,%f30
2058         faddd   %f6,%f0,%f6
2060         faddd   %f14,%f8,%f14
2062         faddd   %f22,%f16,%f22
2064         faddd   %f30,%f24,%f30
2065         mov     %l0,%l4
2067         fnegd   %f6,%f4
2068         lda     [%i1]%asi,%l0           ! preload next argument
2070         fnegd   %f14,%f12
2071         lda     [%i1]%asi,%f0
2073         fnegd   %f22,%f20
2074         lda     [%i1+4]%asi,%f3
2076         fnegd   %f30,%f28
2077         andn    %l0,%i5,%l0
2078         add     %i1,%i2,%i1
2080         andcc   %l4,2,%g0
2081         fmovdnz %icc,%f4,%f6
2082         st      %f6,[%o0]
2084         andcc   %l1,2,%g0
2085         fmovdnz %icc,%f12,%f14
2086         st      %f14,[%o1]
2088         andcc   %l2,2,%g0
2089         fmovdnz %icc,%f20,%f22
2090         st      %f22,[%o2]
2092         andcc   %l3,2,%g0
2093         fmovdnz %icc,%f28,%f30
2094         st      %f30,[%o3]
2096         addcc   %i0,-1,%i0
2097         bg,pt   %icc,.loop0
2098 ! delay slot
2099         st      %f7,[%o0+4]
2101         ba,pt   %icc,.end
2102 ! delay slot
2103         nop
2105         .align  16
2106 .case9:
2107         fmuld   %f0,pp3,%f6             ! sin(x0)
2109         fmuld   %f24,pp3,%f30           ! sin(x3)
2111         faddd   %f6,pp2,%f6
2112         fmuld   %f0,qq2,%f4
2114         fmuld   %f8,qq3,%f14            ! cos(x1)
2116         fmuld   %f16,qq3,%f22           ! cos(x2)
2118         faddd   %f30,pp2,%f30
2119         fmuld   %f24,qq2,%f28
2121         fmuld   %f0,%f6,%f6
2122         faddd   %f4,qq1,%f4
2124         faddd   %f14,qq2,%f14
2125         fmuld   %f8,pp2,%f12
2127         faddd   %f22,qq2,%f22
2128         fmuld   %f16,pp2,%f20
2130         fmuld   %f24,%f30,%f30
2131         faddd   %f28,qq1,%f28
2133         faddd   %f6,pp1,%f6
2134         fmuld   %f0,%f4,%f4
2135         add     %l4,%g1,%l4
2137         fmuld   %f8,%f14,%f14
2138         faddd   %f12,pp1,%f12
2140         fmuld   %f16,%f22,%f22
2141         faddd   %f20,pp1,%f20
2143         faddd   %f30,pp1,%f30
2144         fmuld   %f24,%f28,%f28
2145         add     %l7,%g1,%l7
2147         fmuld   %f0,%f6,%f6
2149         faddd   %f14,qq1,%f14
2150         fmuld   %f8,%f12,%f12
2151         add     %l5,%g1,%l5
2153         faddd   %f22,qq1,%f22
2154         fmuld   %f16,%f20,%f20
2155         add     %l6,%g1,%l6
2157         fmuld   %f24,%f30,%f30
2159         fmuld   %f2,%f6,%f6
2160         ldd     [%l4+8],%f0
2162         fmuld   %f10,%f12,%f12
2164         fmuld   %f18,%f20,%f20
2166         fmuld   %f26,%f30,%f30
2167         ldd     [%l7+8],%f24
2169         fmuld   %f0,%f4,%f4
2170         faddd   %f32,%f6,%f6
2172         fmuld   %f8,%f14,%f14
2173         faddd   %f12,%f34,%f12
2174         ldd     [%l5+16],%f8
2176         fmuld   %f16,%f22,%f22
2177         faddd   %f20,%f36,%f20
2178         ldd     [%l6+16],%f16
2180         fmuld   %f24,%f28,%f28
2181         faddd   %f38,%f30,%f30
2183         faddd   %f2,%f6,%f6
2184         ldd     [%l4+16],%f32
2186         fmuld   %f8,%f14,%f14
2187         faddd   %f12,%f10,%f12
2188         ldd     [%l5+8],%f34
2190         fmuld   %f16,%f22,%f22
2191         faddd   %f20,%f18,%f20
2192         ldd     [%l6+8],%f36
2194         faddd   %f26,%f30,%f30
2195         ldd     [%l7+16],%f38
2197         fmuld   %f32,%f6,%f6
2199         fmuld   %f34,%f12,%f12
2201         fmuld   %f36,%f20,%f20
2203         fmuld   %f38,%f30,%f30
2205         faddd   %f6,%f4,%f6
2207         fsubd   %f14,%f12,%f14
2209         fsubd   %f22,%f20,%f22
2211         faddd   %f30,%f28,%f30
2213         faddd   %f6,%f0,%f6
2215         faddd   %f14,%f8,%f14
2217         faddd   %f22,%f16,%f22
2219         faddd   %f30,%f24,%f30
2220         mov     %l0,%l4
2222         fnegd   %f6,%f4
2223         lda     [%i1]%asi,%l0           ! preload next argument
2225         fnegd   %f14,%f12
2226         lda     [%i1]%asi,%f0
2228         fnegd   %f22,%f20
2229         lda     [%i1+4]%asi,%f3
2231         fnegd   %f30,%f28
2232         andn    %l0,%i5,%l0
2233         add     %i1,%i2,%i1
2235         andcc   %l4,2,%g0
2236         fmovdnz %icc,%f4,%f6
2237         st      %f6,[%o0]
2239         andcc   %l1,2,%g0
2240         fmovdnz %icc,%f12,%f14
2241         st      %f14,[%o1]
2243         andcc   %l2,2,%g0
2244         fmovdnz %icc,%f20,%f22
2245         st      %f22,[%o2]
2247         andcc   %l3,2,%g0
2248         fmovdnz %icc,%f28,%f30
2249         st      %f30,[%o3]
2251         addcc   %i0,-1,%i0
2252         bg,pt   %icc,.loop0
2253 ! delay slot
2254         st      %f7,[%o0+4]
2256         ba,pt   %icc,.end
2257 ! delay slot
2258         nop
2260         .align  16
2261 .case10:
2262         fmuld   %f26,%f26,%f24
2263         andcc   %l3,1,%g0
2264         bz,pn   %icc,.case11
2265 ! delay slot
2266         fxor    %f30,%f38,%f38
2268         fmuld   %f0,pp3,%f6             ! sin(x0)
2270         fmuld   %f16,pp3,%f22           ! sin(x2)
2272         faddd   %f6,pp2,%f6
2273         fmuld   %f0,qq2,%f4
2275         fmuld   %f8,qq3,%f14            ! cos(x1)
2277         faddd   %f22,pp2,%f22
2278         fmuld   %f16,qq2,%f20
2280         fmuld   %f24,qq3,%f30           ! cos(x3)
2282         fmuld   %f0,%f6,%f6
2283         faddd   %f4,qq1,%f4
2285         faddd   %f14,qq2,%f14
2286         fmuld   %f8,pp2,%f12
2288         fmuld   %f16,%f22,%f22
2289         faddd   %f20,qq1,%f20
2291         faddd   %f30,qq2,%f30
2292         fmuld   %f24,pp2,%f28
2294         faddd   %f6,pp1,%f6
2295         fmuld   %f0,%f4,%f4
2296         add     %l4,%g1,%l4
2298         fmuld   %f8,%f14,%f14
2299         faddd   %f12,pp1,%f12
2301         faddd   %f22,pp1,%f22
2302         fmuld   %f16,%f20,%f20
2303         add     %l6,%g1,%l6
2305         fmuld   %f24,%f30,%f30
2306         faddd   %f28,pp1,%f28
2308         fmuld   %f0,%f6,%f6
2310         faddd   %f14,qq1,%f14
2311         fmuld   %f8,%f12,%f12
2312         add     %l5,%g1,%l5
2314         fmuld   %f16,%f22,%f22
2316         faddd   %f30,qq1,%f30
2317         fmuld   %f24,%f28,%f28
2318         add     %l7,%g1,%l7
2320         fmuld   %f2,%f6,%f6
2321         ldd     [%l4+8],%f0
2323         fmuld   %f10,%f12,%f12
2325         fmuld   %f18,%f22,%f22
2326         ldd     [%l6+8],%f16
2328         fmuld   %f26,%f28,%f28
2330         fmuld   %f0,%f4,%f4
2331         faddd   %f32,%f6,%f6
2333         fmuld   %f8,%f14,%f14
2334         faddd   %f12,%f34,%f12
2335         ldd     [%l5+16],%f8
2337         fmuld   %f16,%f20,%f20
2338         faddd   %f36,%f22,%f22
2340         fmuld   %f24,%f30,%f30
2341         faddd   %f28,%f38,%f28
2342         ldd     [%l7+16],%f24
2344         faddd   %f2,%f6,%f6
2345         ldd     [%l4+16],%f32
2347         fmuld   %f8,%f14,%f14
2348         faddd   %f12,%f10,%f12
2349         ldd     [%l5+8],%f34
2351         faddd   %f18,%f22,%f22
2352         ldd     [%l6+16],%f36
2354         fmuld   %f24,%f30,%f30
2355         faddd   %f28,%f26,%f28
2356         ldd     [%l7+8],%f38
2358         fmuld   %f32,%f6,%f6
2360         fmuld   %f34,%f12,%f12
2362         fmuld   %f36,%f22,%f22
2364         fmuld   %f38,%f28,%f28
2366         faddd   %f6,%f4,%f6
2368         fsubd   %f14,%f12,%f14
2370         faddd   %f22,%f20,%f22
2372         fsubd   %f30,%f28,%f30
2374         faddd   %f6,%f0,%f6
2376         faddd   %f14,%f8,%f14
2378         faddd   %f22,%f16,%f22
2380         faddd   %f30,%f24,%f30
2381         mov     %l0,%l4
2383         fnegd   %f6,%f4
2384         lda     [%i1]%asi,%l0           ! preload next argument
2386         fnegd   %f14,%f12
2387         lda     [%i1]%asi,%f0
2389         fnegd   %f22,%f20
2390         lda     [%i1+4]%asi,%f3
2392         fnegd   %f30,%f28
2393         andn    %l0,%i5,%l0
2394         add     %i1,%i2,%i1
2396         andcc   %l4,2,%g0
2397         fmovdnz %icc,%f4,%f6
2398         st      %f6,[%o0]
2400         andcc   %l1,2,%g0
2401         fmovdnz %icc,%f12,%f14
2402         st      %f14,[%o1]
2404         andcc   %l2,2,%g0
2405         fmovdnz %icc,%f20,%f22
2406         st      %f22,[%o2]
2408         andcc   %l3,2,%g0
2409         fmovdnz %icc,%f28,%f30
2410         st      %f30,[%o3]
2412         addcc   %i0,-1,%i0
2413         bg,pt   %icc,.loop0
2414 ! delay slot
2415         st      %f7,[%o0+4]
2417         ba,pt   %icc,.end
2418 ! delay slot
2419         nop
2421         .align  16
2422 .case11:
2423         fmuld   %f0,pp3,%f6             ! sin(x0)
2425         fmuld   %f16,pp3,%f22           ! sin(x2)
2427         fmuld   %f24,pp3,%f30           ! sin(x3)
2429         faddd   %f6,pp2,%f6
2430         fmuld   %f0,qq2,%f4
2432         fmuld   %f8,qq3,%f14            ! cos(x1)
2434         faddd   %f22,pp2,%f22
2435         fmuld   %f16,qq2,%f20
2437         faddd   %f30,pp2,%f30
2438         fmuld   %f24,qq2,%f28
2440         fmuld   %f0,%f6,%f6
2441         faddd   %f4,qq1,%f4
2443         faddd   %f14,qq2,%f14
2444         fmuld   %f8,pp2,%f12
2446         fmuld   %f16,%f22,%f22
2447         faddd   %f20,qq1,%f20
2449         fmuld   %f24,%f30,%f30
2450         faddd   %f28,qq1,%f28
2452         faddd   %f6,pp1,%f6
2453         fmuld   %f0,%f4,%f4
2454         add     %l4,%g1,%l4
2456         fmuld   %f8,%f14,%f14
2457         faddd   %f12,pp1,%f12
2459         faddd   %f22,pp1,%f22
2460         fmuld   %f16,%f20,%f20
2461         add     %l6,%g1,%l6
2463         faddd   %f30,pp1,%f30
2464         fmuld   %f24,%f28,%f28
2465         add     %l7,%g1,%l7
2467         fmuld   %f0,%f6,%f6
2469         faddd   %f14,qq1,%f14
2470         fmuld   %f8,%f12,%f12
2471         add     %l5,%g1,%l5
2473         fmuld   %f16,%f22,%f22
2475         fmuld   %f24,%f30,%f30
2477         fmuld   %f2,%f6,%f6
2478         ldd     [%l4+8],%f0
2480         fmuld   %f10,%f12,%f12
2482         fmuld   %f18,%f22,%f22
2483         ldd     [%l6+8],%f16
2485         fmuld   %f26,%f30,%f30
2486         ldd     [%l7+8],%f24
2488         fmuld   %f0,%f4,%f4
2489         faddd   %f32,%f6,%f6
2491         fmuld   %f8,%f14,%f14
2492         faddd   %f12,%f34,%f12
2493         ldd     [%l5+16],%f8
2495         fmuld   %f16,%f20,%f20
2496         faddd   %f36,%f22,%f22
2498         fmuld   %f24,%f28,%f28
2499         faddd   %f38,%f30,%f30
2501         faddd   %f2,%f6,%f6
2502         ldd     [%l4+16],%f32
2504         fmuld   %f8,%f14,%f14
2505         faddd   %f12,%f10,%f12
2506         ldd     [%l5+8],%f34
2508         faddd   %f18,%f22,%f22
2509         ldd     [%l6+16],%f36
2511         faddd   %f26,%f30,%f30
2512         ldd     [%l7+16],%f38
2514         fmuld   %f32,%f6,%f6
2516         fmuld   %f34,%f12,%f12
2518         fmuld   %f36,%f22,%f22
2520         fmuld   %f38,%f30,%f30
2522         faddd   %f6,%f4,%f6
2524         fsubd   %f14,%f12,%f14
2526         faddd   %f22,%f20,%f22
2528         faddd   %f30,%f28,%f30
2530         faddd   %f6,%f0,%f6
2532         faddd   %f14,%f8,%f14
2534         faddd   %f22,%f16,%f22
2536         faddd   %f30,%f24,%f30
2537         mov     %l0,%l4
2539         fnegd   %f6,%f4
2540         lda     [%i1]%asi,%l0           ! preload next argument
2542         fnegd   %f14,%f12
2543         lda     [%i1]%asi,%f0
2545         fnegd   %f22,%f20
2546         lda     [%i1+4]%asi,%f3
2548         fnegd   %f30,%f28
2549         andn    %l0,%i5,%l0
2550         add     %i1,%i2,%i1
2552         andcc   %l4,2,%g0
2553         fmovdnz %icc,%f4,%f6
2554         st      %f6,[%o0]
2556         andcc   %l1,2,%g0
2557         fmovdnz %icc,%f12,%f14
2558         st      %f14,[%o1]
2560         andcc   %l2,2,%g0
2561         fmovdnz %icc,%f20,%f22
2562         st      %f22,[%o2]
2564         andcc   %l3,2,%g0
2565         fmovdnz %icc,%f28,%f30
2566         st      %f30,[%o3]
2568         addcc   %i0,-1,%i0
2569         bg,pt   %icc,.loop0
2570 ! delay slot
2571         st      %f7,[%o0+4]
2573         ba,pt   %icc,.end
2574 ! delay slot
2575         nop
2577         .align  16
2578 .case12:
2579         fmuld   %f18,%f18,%f16
2580         andcc   %l2,1,%g0
2581         bz,pn   %icc,.case14
2582 ! delay slot
2583         fxor    %f22,%f36,%f36
2585         fmuld   %f26,%f26,%f24
2586         andcc   %l3,1,%g0
2587         bz,pn   %icc,.case13
2588 ! delay slot
2589         fxor    %f30,%f38,%f38
2591         fmuld   %f0,pp3,%f6             ! sin(x0)
2593         fmuld   %f8,pp3,%f14            ! sin(x1)
2595         faddd   %f6,pp2,%f6
2596         fmuld   %f0,qq2,%f4
2598         faddd   %f14,pp2,%f14
2599         fmuld   %f8,qq2,%f12
2601         fmuld   %f16,qq3,%f22           ! cos(x2)
2603         fmuld   %f24,qq3,%f30           ! cos(x3)
2605         fmuld   %f0,%f6,%f6
2606         faddd   %f4,qq1,%f4
2608         fmuld   %f8,%f14,%f14
2609         faddd   %f12,qq1,%f12
2611         faddd   %f22,qq2,%f22
2612         fmuld   %f16,pp2,%f20
2614         faddd   %f30,qq2,%f30
2615         fmuld   %f24,pp2,%f28
2617         faddd   %f6,pp1,%f6
2618         fmuld   %f0,%f4,%f4
2619         add     %l4,%g1,%l4
2621         faddd   %f14,pp1,%f14
2622         fmuld   %f8,%f12,%f12
2623         add     %l5,%g1,%l5
2625         fmuld   %f16,%f22,%f22
2626         faddd   %f20,pp1,%f20
2628         fmuld   %f24,%f30,%f30
2629         faddd   %f28,pp1,%f28
2631         fmuld   %f0,%f6,%f6
2633         fmuld   %f8,%f14,%f14
2635         faddd   %f22,qq1,%f22
2636         fmuld   %f16,%f20,%f20
2637         add     %l6,%g1,%l6
2639         faddd   %f30,qq1,%f30
2640         fmuld   %f24,%f28,%f28
2641         add     %l7,%g1,%l7
2643         fmuld   %f2,%f6,%f6
2644         ldd     [%l4+8],%f0
2646         fmuld   %f10,%f14,%f14
2647         ldd     [%l5+8],%f8
2649         fmuld   %f18,%f20,%f20
2651         fmuld   %f26,%f28,%f28
2653         fmuld   %f0,%f4,%f4
2654         faddd   %f32,%f6,%f6
2656         fmuld   %f8,%f12,%f12
2657         faddd   %f34,%f14,%f14
2659         fmuld   %f16,%f22,%f22
2660         faddd   %f20,%f36,%f20
2661         ldd     [%l6+16],%f16
2663         fmuld   %f24,%f30,%f30
2664         faddd   %f28,%f38,%f28
2665         ldd     [%l7+16],%f24
2667         faddd   %f2,%f6,%f6
2668         ldd     [%l4+16],%f32
2670         faddd   %f10,%f14,%f14
2671         ldd     [%l5+16],%f34
2673         fmuld   %f16,%f22,%f22
2674         faddd   %f20,%f18,%f20
2675         ldd     [%l6+8],%f36
2677         fmuld   %f24,%f30,%f30
2678         faddd   %f28,%f26,%f28
2679         ldd     [%l7+8],%f38
2681         fmuld   %f32,%f6,%f6
2683         fmuld   %f34,%f14,%f14
2685         fmuld   %f36,%f20,%f20
2687         fmuld   %f38,%f28,%f28
2689         faddd   %f6,%f4,%f6
2691         faddd   %f14,%f12,%f14
2693         fsubd   %f22,%f20,%f22
2695         fsubd   %f30,%f28,%f30
2697         faddd   %f6,%f0,%f6
2699         faddd   %f14,%f8,%f14
2701         faddd   %f22,%f16,%f22
2703         faddd   %f30,%f24,%f30
2704         mov     %l0,%l4
2706         fnegd   %f6,%f4
2707         lda     [%i1]%asi,%l0           ! preload next argument
2709         fnegd   %f14,%f12
2710         lda     [%i1]%asi,%f0
2712         fnegd   %f22,%f20
2713         lda     [%i1+4]%asi,%f3
2715         fnegd   %f30,%f28
2716         andn    %l0,%i5,%l0
2717         add     %i1,%i2,%i1
2719         andcc   %l4,2,%g0
2720         fmovdnz %icc,%f4,%f6
2721         st      %f6,[%o0]
2723         andcc   %l1,2,%g0
2724         fmovdnz %icc,%f12,%f14
2725         st      %f14,[%o1]
2727         andcc   %l2,2,%g0
2728         fmovdnz %icc,%f20,%f22
2729         st      %f22,[%o2]
2731         andcc   %l3,2,%g0
2732         fmovdnz %icc,%f28,%f30
2733         st      %f30,[%o3]
2735         addcc   %i0,-1,%i0
2736         bg,pt   %icc,.loop0
2737 ! delay slot
2738         st      %f7,[%o0+4]
2740         ba,pt   %icc,.end
2741 ! delay slot
2742         nop
2744         .align  16
2745 .case13:
2746         fmuld   %f0,pp3,%f6             ! sin(x0)
2748         fmuld   %f8,pp3,%f14            ! sin(x1)
2750         fmuld   %f24,pp3,%f30           ! sin(x3)
2752         faddd   %f6,pp2,%f6
2753         fmuld   %f0,qq2,%f4
2755         faddd   %f14,pp2,%f14
2756         fmuld   %f8,qq2,%f12
2758         fmuld   %f16,qq3,%f22           ! cos(x2)
2760         faddd   %f30,pp2,%f30
2761         fmuld   %f24,qq2,%f28
2763         fmuld   %f0,%f6,%f6
2764         faddd   %f4,qq1,%f4
2766         fmuld   %f8,%f14,%f14
2767         faddd   %f12,qq1,%f12
2769         faddd   %f22,qq2,%f22
2770         fmuld   %f16,pp2,%f20
2772         fmuld   %f24,%f30,%f30
2773         faddd   %f28,qq1,%f28
2775         faddd   %f6,pp1,%f6
2776         fmuld   %f0,%f4,%f4
2777         add     %l4,%g1,%l4
2779         faddd   %f14,pp1,%f14
2780         fmuld   %f8,%f12,%f12
2781         add     %l5,%g1,%l5
2783         fmuld   %f16,%f22,%f22
2784         faddd   %f20,pp1,%f20
2786         faddd   %f30,pp1,%f30
2787         fmuld   %f24,%f28,%f28
2788         add     %l7,%g1,%l7
2790         fmuld   %f0,%f6,%f6
2792         fmuld   %f8,%f14,%f14
2794         faddd   %f22,qq1,%f22
2795         fmuld   %f16,%f20,%f20
2796         add     %l6,%g1,%l6
2798         fmuld   %f24,%f30,%f30
2800         fmuld   %f2,%f6,%f6
2801         ldd     [%l4+8],%f0
2803         fmuld   %f10,%f14,%f14
2804         ldd     [%l5+8],%f8
2806         fmuld   %f18,%f20,%f20
2808         fmuld   %f26,%f30,%f30
2809         ldd     [%l7+8],%f24
2811         fmuld   %f0,%f4,%f4
2812         faddd   %f32,%f6,%f6
2814         fmuld   %f8,%f12,%f12
2815         faddd   %f34,%f14,%f14
2817         fmuld   %f16,%f22,%f22
2818         faddd   %f20,%f36,%f20
2819         ldd     [%l6+16],%f16
2821         fmuld   %f24,%f28,%f28
2822         faddd   %f38,%f30,%f30
2824         faddd   %f2,%f6,%f6
2825         ldd     [%l4+16],%f32
2827         faddd   %f10,%f14,%f14
2828         ldd     [%l5+16],%f34
2830         fmuld   %f16,%f22,%f22
2831         faddd   %f20,%f18,%f20
2832         ldd     [%l6+8],%f36
2834         faddd   %f26,%f30,%f30
2835         ldd     [%l7+16],%f38
2837         fmuld   %f32,%f6,%f6
2839         fmuld   %f34,%f14,%f14
2841         fmuld   %f36,%f20,%f20
2843         fmuld   %f38,%f30,%f30
2845         faddd   %f6,%f4,%f6
2847         faddd   %f14,%f12,%f14
2849         fsubd   %f22,%f20,%f22
2851         faddd   %f30,%f28,%f30
2853         faddd   %f6,%f0,%f6
2855         faddd   %f14,%f8,%f14
2857         faddd   %f22,%f16,%f22
2859         faddd   %f30,%f24,%f30
2860         mov     %l0,%l4
2862         fnegd   %f6,%f4
2863         lda     [%i1]%asi,%l0           ! preload next argument
2865         fnegd   %f14,%f12
2866         lda     [%i1]%asi,%f0
2868         fnegd   %f22,%f20
2869         lda     [%i1+4]%asi,%f3
2871         fnegd   %f30,%f28
2872         andn    %l0,%i5,%l0
2873         add     %i1,%i2,%i1
2875         andcc   %l4,2,%g0
2876         fmovdnz %icc,%f4,%f6
2877         st      %f6,[%o0]
2879         andcc   %l1,2,%g0
2880         fmovdnz %icc,%f12,%f14
2881         st      %f14,[%o1]
2883         andcc   %l2,2,%g0
2884         fmovdnz %icc,%f20,%f22
2885         st      %f22,[%o2]
2887         andcc   %l3,2,%g0
2888         fmovdnz %icc,%f28,%f30
2889         st      %f30,[%o3]
2891         addcc   %i0,-1,%i0
2892         bg,pt   %icc,.loop0
2893 ! delay slot
2894         st      %f7,[%o0+4]
2896         ba,pt   %icc,.end
2897 ! delay slot
2898         nop
2900         .align  16
2901 .case14:
2902         fmuld   %f26,%f26,%f24
2903         andcc   %l3,1,%g0
2904         bz,pn   %icc,.case15
2905 ! delay slot
2906         fxor    %f30,%f38,%f38
2908         fmuld   %f0,pp3,%f6             ! sin(x0)
2910         fmuld   %f8,pp3,%f14            ! sin(x1)
2912         fmuld   %f16,pp3,%f22           ! sin(x2)
2914         faddd   %f6,pp2,%f6
2915         fmuld   %f0,qq2,%f4
2917         faddd   %f14,pp2,%f14
2918         fmuld   %f8,qq2,%f12
2920         faddd   %f22,pp2,%f22
2921         fmuld   %f16,qq2,%f20
2923         fmuld   %f24,qq3,%f30           ! cos(x3)
2925         fmuld   %f0,%f6,%f6
2926         faddd   %f4,qq1,%f4
2928         fmuld   %f8,%f14,%f14
2929         faddd   %f12,qq1,%f12
2931         fmuld   %f16,%f22,%f22
2932         faddd   %f20,qq1,%f20
2934         faddd   %f30,qq2,%f30
2935         fmuld   %f24,pp2,%f28
2937         faddd   %f6,pp1,%f6
2938         fmuld   %f0,%f4,%f4
2939         add     %l4,%g1,%l4
2941         faddd   %f14,pp1,%f14
2942         fmuld   %f8,%f12,%f12
2943         add     %l5,%g1,%l5
2945         faddd   %f22,pp1,%f22
2946         fmuld   %f16,%f20,%f20
2947         add     %l6,%g1,%l6
2949         fmuld   %f24,%f30,%f30
2950         faddd   %f28,pp1,%f28
2952         fmuld   %f0,%f6,%f6
2954         fmuld   %f8,%f14,%f14
2956         fmuld   %f16,%f22,%f22
2958         faddd   %f30,qq1,%f30
2959         fmuld   %f24,%f28,%f28
2960         add     %l7,%g1,%l7
2962         fmuld   %f2,%f6,%f6
2963         ldd     [%l4+8],%f0
2965         fmuld   %f10,%f14,%f14
2966         ldd     [%l5+8],%f8
2968         fmuld   %f18,%f22,%f22
2969         ldd     [%l6+8],%f16
2971         fmuld   %f26,%f28,%f28
2973         fmuld   %f0,%f4,%f4
2974         faddd   %f32,%f6,%f6
2976         fmuld   %f8,%f12,%f12
2977         faddd   %f34,%f14,%f14
2979         fmuld   %f16,%f20,%f20
2980         faddd   %f36,%f22,%f22
2982         fmuld   %f24,%f30,%f30
2983         faddd   %f28,%f38,%f28
2984         ldd     [%l7+16],%f24
2986         faddd   %f2,%f6,%f6
2987         ldd     [%l4+16],%f32
2989         faddd   %f10,%f14,%f14
2990         ldd     [%l5+16],%f34
2992         faddd   %f18,%f22,%f22
2993         ldd     [%l6+16],%f36
2995         fmuld   %f24,%f30,%f30
2996         faddd   %f28,%f26,%f28
2997         ldd     [%l7+8],%f38
2999         fmuld   %f32,%f6,%f6
3001         fmuld   %f34,%f14,%f14
3003         fmuld   %f36,%f22,%f22
3005         fmuld   %f38,%f28,%f28
3007         faddd   %f6,%f4,%f6
3009         faddd   %f14,%f12,%f14
3011         faddd   %f22,%f20,%f22
3013         fsubd   %f30,%f28,%f30
3015         faddd   %f6,%f0,%f6
3017         faddd   %f14,%f8,%f14
3019         faddd   %f22,%f16,%f22
3021         faddd   %f30,%f24,%f30
3022         mov     %l0,%l4
3024         fnegd   %f6,%f4
3025         lda     [%i1]%asi,%l0           ! preload next argument
3027         fnegd   %f14,%f12
3028         lda     [%i1]%asi,%f0
3030         fnegd   %f22,%f20
3031         lda     [%i1+4]%asi,%f3
3033         fnegd   %f30,%f28
3034         andn    %l0,%i5,%l0
3035         add     %i1,%i2,%i1
3037         andcc   %l4,2,%g0
3038         fmovdnz %icc,%f4,%f6
3039         st      %f6,[%o0]
3041         andcc   %l1,2,%g0
3042         fmovdnz %icc,%f12,%f14
3043         st      %f14,[%o1]
3045         andcc   %l2,2,%g0
3046         fmovdnz %icc,%f20,%f22
3047         st      %f22,[%o2]
3049         andcc   %l3,2,%g0
3050         fmovdnz %icc,%f28,%f30
3051         st      %f30,[%o3]
3053         addcc   %i0,-1,%i0
3054         bg,pt   %icc,.loop0
3055 ! delay slot
3056         st      %f7,[%o0+4]
3058         ba,pt   %icc,.end
3059 ! delay slot
3060         nop
3062         .align  16
3063 .case15:
3064         fmuld   %f0,pp3,%f6             ! sin(x0)
3066         fmuld   %f8,pp3,%f14            ! sin(x1)
3068         fmuld   %f16,pp3,%f22           ! sin(x2)
3070         fmuld   %f24,pp3,%f30           ! sin(x3)
3072         faddd   %f6,pp2,%f6
3073         fmuld   %f0,qq2,%f4
3075         faddd   %f14,pp2,%f14
3076         fmuld   %f8,qq2,%f12
3078         faddd   %f22,pp2,%f22
3079         fmuld   %f16,qq2,%f20
3081         faddd   %f30,pp2,%f30
3082         fmuld   %f24,qq2,%f28
3084         fmuld   %f0,%f6,%f6
3085         faddd   %f4,qq1,%f4
3087         fmuld   %f8,%f14,%f14
3088         faddd   %f12,qq1,%f12
3090         fmuld   %f16,%f22,%f22
3091         faddd   %f20,qq1,%f20
3093         fmuld   %f24,%f30,%f30
3094         faddd   %f28,qq1,%f28
3096         faddd   %f6,pp1,%f6
3097         fmuld   %f0,%f4,%f4
3098         add     %l4,%g1,%l4
3100         faddd   %f14,pp1,%f14
3101         fmuld   %f8,%f12,%f12
3102         add     %l5,%g1,%l5
3104         faddd   %f22,pp1,%f22
3105         fmuld   %f16,%f20,%f20
3106         add     %l6,%g1,%l6
3108         faddd   %f30,pp1,%f30
3109         fmuld   %f24,%f28,%f28
3110         add     %l7,%g1,%l7
3112         fmuld   %f0,%f6,%f6
3114         fmuld   %f8,%f14,%f14
3116         fmuld   %f16,%f22,%f22
3118         fmuld   %f24,%f30,%f30
3120         fmuld   %f2,%f6,%f6
3121         ldd     [%l4+8],%f0
3123         fmuld   %f10,%f14,%f14
3124         ldd     [%l5+8],%f8
3126         fmuld   %f18,%f22,%f22
3127         ldd     [%l6+8],%f16
3129         fmuld   %f26,%f30,%f30
3130         ldd     [%l7+8],%f24
3132         fmuld   %f0,%f4,%f4
3133         faddd   %f32,%f6,%f6
3135         fmuld   %f8,%f12,%f12
3136         faddd   %f34,%f14,%f14
3138         fmuld   %f16,%f20,%f20
3139         faddd   %f36,%f22,%f22
3141         fmuld   %f24,%f28,%f28
3142         faddd   %f38,%f30,%f30
3144         faddd   %f2,%f6,%f6
3145         ldd     [%l4+16],%f32
3147         faddd   %f10,%f14,%f14
3148         ldd     [%l5+16],%f34
3150         faddd   %f18,%f22,%f22
3151         ldd     [%l6+16],%f36
3153         faddd   %f26,%f30,%f30
3154         ldd     [%l7+16],%f38
3156         fmuld   %f32,%f6,%f6
3158         fmuld   %f34,%f14,%f14
3160         fmuld   %f36,%f22,%f22
3162         fmuld   %f38,%f30,%f30
3164         faddd   %f6,%f4,%f6
3166         faddd   %f14,%f12,%f14
3168         faddd   %f22,%f20,%f22
3170         faddd   %f30,%f28,%f30
3172         faddd   %f6,%f0,%f6
3174         faddd   %f14,%f8,%f14
3176         faddd   %f22,%f16,%f22
3178         faddd   %f30,%f24,%f30
3179         mov     %l0,%l4
3181         fnegd   %f6,%f4
3182         lda     [%i1]%asi,%l0           ! preload next argument
3184         fnegd   %f14,%f12
3185         lda     [%i1]%asi,%f0
3187         fnegd   %f22,%f20
3188         lda     [%i1+4]%asi,%f3
3190         fnegd   %f30,%f28
3191         andn    %l0,%i5,%l0
3192         add     %i1,%i2,%i1
3194         andcc   %l4,2,%g0
3195         fmovdnz %icc,%f4,%f6
3196         st      %f6,[%o0]
3198         andcc   %l1,2,%g0
3199         fmovdnz %icc,%f12,%f14
3200         st      %f14,[%o1]
3202         andcc   %l2,2,%g0
3203         fmovdnz %icc,%f20,%f22
3204         st      %f22,[%o2]
3206         andcc   %l3,2,%g0
3207         fmovdnz %icc,%f28,%f30
3208         st      %f30,[%o3]
3210         addcc   %i0,-1,%i0
3211         bg,pt   %icc,.loop0
3212 ! delay slot
3213         st      %f7,[%o0+4]
3215         ba,pt   %icc,.end
3216 ! delay slot
3217         nop
3220         .align  16
3221 .end:
3222         st      %f15,[%o1+4]
3223         st      %f23,[%o2+4]
3224         st      %f31,[%o3+4]
3225         ld      [%fp+biguns],%i5
3226         tst     %i5                     ! check for huge arguments remaining
3227         be,pt   %icc,.exit
3228 ! delay slot
3229         nop
3230         ld      [%fp+xsave],%o1
3231         ld      [%fp+ysave],%o3
3232         ld      [%fp+nsave],%o0
3233         ld      [%fp+sxsave],%o2
3234         ld      [%fp+sysave],%o4
3235         sra     %o2,0,%o2               ! sign-extend for V9
3236         sra     %o4,0,%o4
3237         call    __vlibm_vcos_big_ultra3
3238         sra     %o5,0,%o5               ! delay slot
3240 .exit:
3241         ret
3242         restore
3245         .align  16
3246 .last1:
3247         faddd   %f2,c3two44,%f4
3248         st      %f15,[%o1+4]
3249 .last1_from_range1:
3250         mov     0,%l1
3251         fzeros  %f8
3252         fzero   %f10
3253         add     %fp,junk,%o1
3254 .last2:
3255         faddd   %f10,c3two44,%f12
3256         st      %f23,[%o2+4]
3257 .last2_from_range2:
3258         mov     0,%l2
3259         fzeros  %f16
3260         fzero   %f18
3261         add     %fp,junk,%o2
3262 .last3:
3263         faddd   %f18,c3two44,%f20
3264         st      %f31,[%o3+4]
3265         st      %f5,[%fp+nk0]
3266         st      %f13,[%fp+nk1]
3267 .last3_from_range3:
3268         mov     0,%l3
3269         fzeros  %f24
3270         fzero   %f26
3271         ba,pt   %icc,.cont
3272 ! delay slot
3273         add     %fp,junk,%o3
3276         .align  16
3277 .range0:
3278         cmp     %l0,%o4
3279         bl,pt   %icc,1f                 ! hx < 0x3e400000
3280 ! delay slot, harmless if branch taken
3281         sethi   %hi(0x7ff00000),%o7
3282         cmp     %l0,%o7
3283         bl,a,pt %icc,2f                 ! branch if finite
3284 ! delay slot, squashed if branch not taken
3285         st      %o4,[%fp+biguns]        ! set biguns
3286         fzero   %f0
3287         fmuld   %f2,%f0,%f2
3288         st      %f2,[%o0]
3289         ba,pt   %icc,2f
3290 ! delay slot
3291         st      %f3,[%o0+4]
3293         fdtoi   %f2,%f4                 ! raise inexact if not zero
3294         sethi   %hi(0x3ff00000),%o7
3295         st      %o7,[%o0]
3296         st      %g0,[%o0+4]
3298         addcc   %i0,-1,%i0
3299         ble,pn  %icc,.end
3300 ! delay slot, harmless if branch taken
3301         add     %i3,%i4,%i3             ! y += stridey
3302         andn    %l1,%i5,%l0             ! hx &= ~0x80000000
3303         fmovs   %f8,%f0
3304         fmovs   %f11,%f3
3305         ba,pt   %icc,.loop0
3306 ! delay slot
3307         add     %i1,%i2,%i1             ! x += stridex
3310         .align  16
3311 .range1:
3312         cmp     %l1,%o4
3313         bl,pt   %icc,1f                 ! hx < 0x3e400000
3314 ! delay slot, harmless if branch taken
3315         sethi   %hi(0x7ff00000),%o7
3316         cmp     %l1,%o7
3317         bl,a,pt %icc,2f                 ! branch if finite
3318 ! delay slot, squashed if branch not taken
3319         st      %o4,[%fp+biguns]        ! set biguns
3320         fzero   %f8
3321         fmuld   %f10,%f8,%f10
3322         st      %f10,[%o1]
3323         ba,pt   %icc,2f
3324 ! delay slot
3325         st      %f11,[%o1+4]
3327         fdtoi   %f10,%f12               ! raise inexact if not zero
3328         sethi   %hi(0x3ff00000),%o7
3329         st      %o7,[%o1]
3330         st      %g0,[%o1+4]
3332         addcc   %i0,-1,%i0
3333         ble,pn  %icc,.last1_from_range1
3334 ! delay slot, harmless if branch taken
3335         add     %i3,%i4,%i3             ! y += stridey
3336         andn    %l2,%i5,%l1             ! hx &= ~0x80000000
3337         fmovs   %f16,%f8
3338         fmovs   %f19,%f11
3339         ba,pt   %icc,.loop1
3340 ! delay slot
3341         add     %i1,%i2,%i1             ! x += stridex
3344         .align  16
3345 .range2:
3346         cmp     %l2,%o4
3347         bl,pt   %icc,1f                 ! hx < 0x3e400000
3348 ! delay slot, harmless if branch taken
3349         sethi   %hi(0x7ff00000),%o7
3350         cmp     %l2,%o7
3351         bl,a,pt %icc,2f                 ! branch if finite
3352 ! delay slot, squashed if branch not taken
3353         st      %o4,[%fp+biguns]        ! set biguns
3354         fzero   %f16
3355         fmuld   %f18,%f16,%f18
3356         st      %f18,[%o2]
3357         ba,pt   %icc,2f
3358 ! delay slot
3359         st      %f19,[%o2+4]
3361         fdtoi   %f18,%f20               ! raise inexact if not zero
3362         sethi   %hi(0x3ff00000),%o7
3363         st      %o7,[%o2]
3364         st      %g0,[%o2+4]
3366         addcc   %i0,-1,%i0
3367         ble,pn  %icc,.last2_from_range2
3368 ! delay slot, harmless if branch taken
3369         add     %i3,%i4,%i3             ! y += stridey
3370         andn    %l3,%i5,%l2             ! hx &= ~0x80000000
3371         fmovs   %f24,%f16
3372         fmovs   %f27,%f19
3373         ba,pt   %icc,.loop2
3374 ! delay slot
3375         add     %i1,%i2,%i1             ! x += stridex
3378         .align  16
3379 .range3:
3380         cmp     %l3,%o4
3381         bl,pt   %icc,1f                 ! hx < 0x3e400000
3382 ! delay slot, harmless if branch taken
3383         sethi   %hi(0x7ff00000),%o7
3384         cmp     %l3,%o7
3385         bl,a,pt %icc,2f                 ! branch if finite
3386 ! delay slot, squashed if branch not taken
3387         st      %o4,[%fp+biguns]        ! set biguns
3388         fzero   %f24
3389         fmuld   %f26,%f24,%f26
3390         st      %f26,[%o3]
3391         ba,pt   %icc,2f
3392 ! delay slot
3393         st      %f27,[%o3+4]
3395         fdtoi   %f26,%f28               ! raise inexact if not zero
3396         sethi   %hi(0x3ff00000),%o7
3397         st      %o7,[%o3]
3398         st      %g0,[%o3+4]
3400         addcc   %i0,-1,%i0
3401         ble,pn  %icc,.last3_from_range3
3402 ! delay slot, harmless if branch taken
3403         add     %i3,%i4,%i3             ! y += stridey
3404         ld      [%i1],%l3
3405         ld      [%i1],%f24
3406         ld      [%i1+4],%f27
3407         andn    %l3,%i5,%l3             ! hx &= ~0x80000000
3408         ba,pt   %icc,.loop3
3409 ! delay slot
3410         add     %i1,%i2,%i1             ! x += stridex
3412         SET_SIZE(__vcos_ultra3)