/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2011 Nexenta Systems, Inc. All rights reserved. */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ .file "__vsin_ultra3.S" #include "libm.h" .weak __vsin .type __vsin,#function __vsin = __vsin_ultra3 RO_DATA .align 64 constants: .word 0x42c80000,0x00000000 ! 3 * 2^44 .word 0x43380000,0x00000000 ! 3 * 2^51 .word 0x3fe45f30,0x6dc9c883 ! invpio2 .word 0x3ff921fb,0x54442c00 ! pio2_1 .word 0x3d318469,0x898cc400 ! pio2_2 .word 0x3a71701b,0x839a2520 ! pio2_3 .word 0xbfc55555,0x55555533 ! pp1 .word 0x3f811111,0x10e7d53b ! pp2 .word 0xbf2a0167,0xe6b3cf9b ! pp3 .word 0xbfdfffff,0xffffff65 ! qq1 .word 0x3fa55555,0x54f88ed0 ! qq2 .word 0xbf56c12c,0xdd185f60 ! qq3 ! local storage indices #define xsave STACK_BIAS-0x8 #define ysave STACK_BIAS-0x10 #define nsave STACK_BIAS-0x14 #define sxsave STACK_BIAS-0x18 #define sysave STACK_BIAS-0x1c #define biguns STACK_BIAS-0x20 #define nk3 STACK_BIAS-0x24 #define nk2 STACK_BIAS-0x28 #define nk1 STACK_BIAS-0x2c #define nk0 STACK_BIAS-0x30 #define junk STACK_BIAS-0x38 ! sizeof temp storage - must be a multiple of 16 for V9 #define tmps 0x40 ! register use ! i0 n ! i1 x ! i2 stridex ! i3 y ! i4 stridey ! i5 0x80000000 ! l0 hx0 ! l1 hx1 ! l2 hx2 ! l3 hx3 ! l4 k0 ! l5 k1 ! l6 k2 ! l7 k3 ! the following are 64-bit registers in both V8+ and V9 ! g1 __vlibm_TBL_sincos2 ! g5 scratch ! o0 py0 ! o1 py1 ! o2 py2 ! o3 py3 ! o4 0x3e400000 ! o5 0x3fe921fb,0x4099251e ! o7 scratch ! f0 hx0 ! f2 ! f4 ! f6 ! f8 hx1 ! f10 ! f12 ! f14 ! f16 hx2 ! f18 ! f20 ! f22 ! f24 hx3 ! f26 ! f28 ! f30 ! f32 ! f34 ! f36 ! f38 #define c3two44 %f40 #define c3two51 %f42 #define invpio2 %f44 #define pio2_1 %f46 #define pio2_2 %f48 #define pio2_3 %f50 #define pp1 %f52 #define pp2 %f54 #define pp3 %f56 #define qq1 %f58 #define qq2 %f60 #define qq3 %f62 ENTRY(__vsin_ultra3) save %sp,-SA(MINFRAME)-tmps,%sp PIC_SETUP(l7) PIC_SET(l7,constants,o0) PIC_SET(l7,__vlibm_TBL_sincos2,o1) mov %o1,%g1 wr %g0,0x82,%asi ! set %asi for non-faulting loads #ifdef __sparcv9 stx %i1,[%fp+xsave] ! save arguments stx %i3,[%fp+ysave] #else st %i1,[%fp+xsave] ! save arguments st %i3,[%fp+ysave] #endif st %i0,[%fp+nsave] st %i2,[%fp+sxsave] st %i4,[%fp+sysave] st %g0,[%fp+biguns] ! biguns = 0 ldd [%o0+0x00],c3two44 ! load/set up constants ldd [%o0+0x08],c3two51 ldd [%o0+0x10],invpio2 ldd [%o0+0x18],pio2_1 ldd [%o0+0x20],pio2_2 ldd [%o0+0x28],pio2_3 ldd [%o0+0x30],pp1 ldd [%o0+0x38],pp2 ldd [%o0+0x40],pp3 ldd [%o0+0x48],qq1 ldd [%o0+0x50],qq2 ldd [%o0+0x58],qq3 sethi %hi(0x80000000),%i5 sethi %hi(0x3e400000),%o4 sethi %hi(0x3fe921fb),%o5 or %o5,%lo(0x3fe921fb),%o5 sllx %o5,32,%o5 sethi %hi(0x4099251e),%o7 or %o7,%lo(0x4099251e),%o7 or %o5,%o7,%o5 sll %i2,3,%i2 ! scale strides sll %i4,3,%i4 add %fp,junk,%o1 ! loop prologue add %fp,junk,%o2 add %fp,junk,%o3 ld [%i1],%l0 ! *x ld [%i1],%f0 ld [%i1+4],%f3 andn %l0,%i5,%l0 ! mask off sign ba .loop0 add %i1,%i2,%i1 ! x += stridex ! 16-byte aligned .align 16 .loop0: lda [%i1]%asi,%l1 ! preload next argument sub %l0,%o4,%g5 sub %o5,%l0,%o7 fabss %f0,%f2 lda [%i1]%asi,%f8 orcc %o7,%g5,%g0 mov %i3,%o0 ! py0 = y bl,pn %icc,.range0 ! hx < 0x3e400000 or hx > 0x4099251e ! delay slot lda [%i1+4]%asi,%f11 addcc %i0,-1,%i0 add %i3,%i4,%i3 ! y += stridey ble,pn %icc,.last1 ! delay slot andn %l1,%i5,%l1 add %i1,%i2,%i1 ! x += stridex faddd %f2,c3two44,%f4 st %f15,[%o1+4] .loop1: lda [%i1]%asi,%l2 ! preload next argument sub %l1,%o4,%g5 sub %o5,%l1,%o7 fabss %f8,%f10 lda [%i1]%asi,%f16 orcc %o7,%g5,%g0 mov %i3,%o1 ! py1 = y bl,pn %icc,.range1 ! hx < 0x3e400000 or hx > 0x4099251e ! delay slot lda [%i1+4]%asi,%f19 addcc %i0,-1,%i0 add %i3,%i4,%i3 ! y += stridey ble,pn %icc,.last2 ! delay slot andn %l2,%i5,%l2 add %i1,%i2,%i1 ! x += stridex faddd %f10,c3two44,%f12 st %f23,[%o2+4] .loop2: lda [%i1]%asi,%l3 ! preload next argument sub %l2,%o4,%g5 sub %o5,%l2,%o7 fabss %f16,%f18 lda [%i1]%asi,%f24 orcc %o7,%g5,%g0 mov %i3,%o2 ! py2 = y bl,pn %icc,.range2 ! hx < 0x3e400000 or hx > 0x4099251e ! delay slot lda [%i1+4]%asi,%f27 addcc %i0,-1,%i0 add %i3,%i4,%i3 ! y += stridey ble,pn %icc,.last3 ! delay slot andn %l3,%i5,%l3 add %i1,%i2,%i1 ! x += stridex faddd %f18,c3two44,%f20 st %f31,[%o3+4] .loop3: sub %l3,%o4,%g5 sub %o5,%l3,%o7 fabss %f24,%f26 st %f5,[%fp+nk0] orcc %o7,%g5,%g0 mov %i3,%o3 ! py3 = y bl,pn %icc,.range3 ! hx < 0x3e400000 or > hx 0x4099251e ! delay slot st %f13,[%fp+nk1] !!! DONE? .cont: srlx %o5,32,%o7 add %i3,%i4,%i3 ! y += stridey fmovs %f3,%f1 st %f21,[%fp+nk2] sub %o7,%l0,%l0 sub %o7,%l1,%l1 faddd %f26,c3two44,%f28 st %f29,[%fp+nk3] sub %o7,%l2,%l2 sub %o7,%l3,%l3 fmovs %f11,%f9 or %l0,%l1,%l0 or %l2,%l3,%l2 fmovs %f19,%f17 fmovs %f27,%f25 fmuld %f0,invpio2,%f6 ! x * invpio2, for medium range fmuld %f8,invpio2,%f14 ld [%fp+nk0],%l4 fmuld %f16,invpio2,%f22 ld [%fp+nk1],%l5 orcc %l0,%l2,%g0 bl,pn %icc,.medium ! delay slot fmuld %f24,invpio2,%f30 ld [%fp+nk2],%l6 ld [%fp+nk3],%l7 sll %l4,5,%l4 ! k fcmpd %fcc0,%f0,pio2_3 ! x < pio2_3 iff x < 0 sll %l5,5,%l5 ldd [%l4+%g1],%f4 fcmpd %fcc1,%f8,pio2_3 sll %l6,5,%l6 ldd [%l5+%g1],%f12 fcmpd %fcc2,%f16,pio2_3 sll %l7,5,%l7 ldd [%l6+%g1],%f20 fcmpd %fcc3,%f24,pio2_3 ldd [%l7+%g1],%f28 fsubd %f2,%f4,%f2 ! x -= __vlibm_TBL_sincos2[k] fsubd %f10,%f12,%f10 fsubd %f18,%f20,%f18 fsubd %f26,%f28,%f26 fmuld %f2,%f2,%f0 ! z = x * x fmuld %f10,%f10,%f8 fmuld %f18,%f18,%f16 fmuld %f26,%f26,%f24 fmuld %f0,pp3,%f6 fmuld %f8,pp3,%f14 fmuld %f16,pp3,%f22 fmuld %f24,pp3,%f30 faddd %f6,pp2,%f6 fmuld %f0,qq2,%f4 faddd %f14,pp2,%f14 fmuld %f8,qq2,%f12 faddd %f22,pp2,%f22 fmuld %f16,qq2,%f20 faddd %f30,pp2,%f30 fmuld %f24,qq2,%f28 fmuld %f0,%f6,%f6 faddd %f4,qq1,%f4 fmuld %f8,%f14,%f14 faddd %f12,qq1,%f12 fmuld %f16,%f22,%f22 faddd %f20,qq1,%f20 fmuld %f24,%f30,%f30 faddd %f28,qq1,%f28 faddd %f6,pp1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 faddd %f14,pp1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 faddd %f22,pp1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 faddd %f30,pp1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f0,%f6,%f6 ldd [%l4+8],%f0 fmuld %f8,%f14,%f14 ldd [%l5+8],%f8 fmuld %f16,%f22,%f22 ldd [%l6+8],%f16 fmuld %f24,%f30,%f30 ldd [%l7+8],%f24 fmuld %f2,%f6,%f6 fmuld %f10,%f14,%f14 fmuld %f18,%f22,%f22 fmuld %f26,%f30,%f30 faddd %f6,%f2,%f6 fmuld %f0,%f4,%f4 ldd [%l4+16],%f2 faddd %f14,%f10,%f14 fmuld %f8,%f12,%f12 ldd [%l5+16],%f10 faddd %f22,%f18,%f22 fmuld %f16,%f20,%f20 ldd [%l6+16],%f18 faddd %f30,%f26,%f30 fmuld %f24,%f28,%f28 ldd [%l7+16],%f26 fmuld %f2,%f6,%f6 fmuld %f10,%f14,%f14 fmuld %f18,%f22,%f22 fmuld %f26,%f30,%f30 faddd %f6,%f4,%f6 faddd %f14,%f12,%f14 faddd %f22,%f20,%f22 faddd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 fmovdl %fcc0,%f4,%f6 ! (hx < -0)? -s : s st %f6,[%o0] fmovdl %fcc1,%f12,%f14 st %f14,[%o1] fmovdl %fcc2,%f20,%f22 st %f22,[%o2] fmovdl %fcc3,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .medium: faddd %f6,c3two51,%f4 st %f5,[%fp+nk0] faddd %f14,c3two51,%f12 st %f13,[%fp+nk1] faddd %f22,c3two51,%f20 st %f21,[%fp+nk2] faddd %f30,c3two51,%f28 st %f29,[%fp+nk3] fsubd %f4,c3two51,%f6 fsubd %f12,c3two51,%f14 fsubd %f20,c3two51,%f22 fsubd %f28,c3two51,%f30 fmuld %f6,pio2_1,%f2 ld [%fp+nk0],%l0 ! n fmuld %f14,pio2_1,%f10 ld [%fp+nk1],%l1 fmuld %f22,pio2_1,%f18 ld [%fp+nk2],%l2 fmuld %f30,pio2_1,%f26 ld [%fp+nk3],%l3 fsubd %f0,%f2,%f0 fmuld %f6,pio2_2,%f4 fsubd %f8,%f10,%f8 fmuld %f14,pio2_2,%f12 fsubd %f16,%f18,%f16 fmuld %f22,pio2_2,%f20 fsubd %f24,%f26,%f24 fmuld %f30,pio2_2,%f28 fsubd %f0,%f4,%f32 fsubd %f8,%f12,%f34 fsubd %f16,%f20,%f36 fsubd %f24,%f28,%f38 fsubd %f0,%f32,%f0 fcmple32 %f32,pio2_3,%l4 ! x <= pio2_3 iff x < 0 fsubd %f8,%f34,%f8 fcmple32 %f34,pio2_3,%l5 fsubd %f16,%f36,%f16 fcmple32 %f36,pio2_3,%l6 fsubd %f24,%f38,%f24 fcmple32 %f38,pio2_3,%l7 fsubd %f0,%f4,%f0 fmuld %f6,pio2_3,%f6 sll %l4,30,%l4 ! if (x < 0) n = -n ^ 2 fsubd %f8,%f12,%f8 fmuld %f14,pio2_3,%f14 sll %l5,30,%l5 fsubd %f16,%f20,%f16 fmuld %f22,pio2_3,%f22 sll %l6,30,%l6 fsubd %f24,%f28,%f24 fmuld %f30,pio2_3,%f30 sll %l7,30,%l7 fsubd %f6,%f0,%f6 sra %l4,31,%l4 fsubd %f14,%f8,%f14 sra %l5,31,%l5 fsubd %f22,%f16,%f22 sra %l6,31,%l6 fsubd %f30,%f24,%f30 sra %l7,31,%l7 fsubd %f32,%f6,%f0 ! reduced x xor %l0,%l4,%l0 fsubd %f34,%f14,%f8 xor %l1,%l5,%l1 fsubd %f36,%f22,%f16 xor %l2,%l6,%l2 fsubd %f38,%f30,%f24 xor %l3,%l7,%l3 fabsd %f0,%f2 sub %l0,%l4,%l0 fabsd %f8,%f10 sub %l1,%l5,%l1 fabsd %f16,%f18 sub %l2,%l6,%l2 fabsd %f24,%f26 sub %l3,%l7,%l3 faddd %f2,c3two44,%f4 st %f5,[%fp+nk0] and %l4,2,%l4 faddd %f10,c3two44,%f12 st %f13,[%fp+nk1] and %l5,2,%l5 faddd %f18,c3two44,%f20 st %f21,[%fp+nk2] and %l6,2,%l6 faddd %f26,c3two44,%f28 st %f29,[%fp+nk3] and %l7,2,%l7 fsubd %f32,%f0,%f4 xor %l0,%l4,%l0 fsubd %f34,%f8,%f12 xor %l1,%l5,%l1 fsubd %f36,%f16,%f20 xor %l2,%l6,%l2 fsubd %f38,%f24,%f28 xor %l3,%l7,%l3 fzero %f38 ld [%fp+nk0],%l4 fsubd %f4,%f6,%f6 ! w ld [%fp+nk1],%l5 fsubd %f12,%f14,%f14 ld [%fp+nk2],%l6 fnegd %f38,%f38 ld [%fp+nk3],%l7 sll %l4,5,%l4 ! k fsubd %f20,%f22,%f22 sll %l5,5,%l5 fsubd %f28,%f30,%f30 sll %l6,5,%l6 fand %f0,%f38,%f32 ! sign bit of x ldd [%l4+%g1],%f4 sll %l7,5,%l7 fand %f8,%f38,%f34 ldd [%l5+%g1],%f12 fand %f16,%f38,%f36 ldd [%l6+%g1],%f20 fand %f24,%f38,%f38 ldd [%l7+%g1],%f28 fsubd %f2,%f4,%f2 ! x -= __vlibm_TBL_sincos2[k] fsubd %f10,%f12,%f10 fsubd %f18,%f20,%f18 nop fsubd %f26,%f28,%f26 nop ! 16-byte aligned fmuld %f2,%f2,%f0 ! z = x * x andcc %l0,1,%g0 bz,pn %icc,.case8 ! delay slot fxor %f6,%f32,%f32 fmuld %f10,%f10,%f8 andcc %l1,1,%g0 bz,pn %icc,.case4 ! delay slot fxor %f14,%f34,%f34 fmuld %f18,%f18,%f16 andcc %l2,1,%g0 bz,pn %icc,.case2 ! delay slot fxor %f22,%f36,%f36 fmuld %f26,%f26,%f24 andcc %l3,1,%g0 bz,pn %icc,.case1 ! delay slot fxor %f30,%f38,%f38 !.case0: fmuld %f0,qq3,%f6 ! cos(x0) fmuld %f8,qq3,%f14 ! cos(x1) fmuld %f16,qq3,%f22 ! cos(x2) fmuld %f24,qq3,%f30 ! cos(x3) faddd %f6,qq2,%f6 fmuld %f0,pp2,%f4 faddd %f14,qq2,%f14 fmuld %f8,pp2,%f12 faddd %f22,qq2,%f22 fmuld %f16,pp2,%f20 faddd %f30,qq2,%f30 fmuld %f24,pp2,%f28 fmuld %f0,%f6,%f6 faddd %f4,pp1,%f4 fmuld %f8,%f14,%f14 faddd %f12,pp1,%f12 fmuld %f16,%f22,%f22 faddd %f20,pp1,%f20 fmuld %f24,%f30,%f30 faddd %f28,pp1,%f28 faddd %f6,qq1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 faddd %f14,qq1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 faddd %f22,qq1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 faddd %f30,qq1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f2,%f4,%f4 fmuld %f10,%f12,%f12 fmuld %f18,%f20,%f20 fmuld %f26,%f28,%f28 fmuld %f0,%f6,%f6 faddd %f4,%f32,%f4 ldd [%l4+16],%f0 fmuld %f8,%f14,%f14 faddd %f12,%f34,%f12 ldd [%l5+16],%f8 fmuld %f16,%f22,%f22 faddd %f20,%f36,%f20 ldd [%l6+16],%f16 fmuld %f24,%f30,%f30 faddd %f28,%f38,%f28 ldd [%l7+16],%f24 fmuld %f0,%f6,%f6 faddd %f4,%f2,%f4 ldd [%l4+8],%f32 fmuld %f8,%f14,%f14 faddd %f12,%f10,%f12 ldd [%l5+8],%f34 fmuld %f16,%f22,%f22 faddd %f20,%f18,%f20 ldd [%l6+8],%f36 fmuld %f24,%f30,%f30 faddd %f28,%f26,%f28 ldd [%l7+8],%f38 fmuld %f32,%f4,%f4 fmuld %f34,%f12,%f12 fmuld %f36,%f20,%f20 fmuld %f38,%f28,%f28 fsubd %f6,%f4,%f6 fsubd %f14,%f12,%f14 fsubd %f22,%f20,%f22 fsubd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case1: fmuld %f24,pp3,%f30 ! sin(x3) fmuld %f0,qq3,%f6 ! cos(x0) fmuld %f8,qq3,%f14 ! cos(x1) fmuld %f16,qq3,%f22 ! cos(x2) faddd %f30,pp2,%f30 fmuld %f24,qq2,%f28 faddd %f6,qq2,%f6 fmuld %f0,pp2,%f4 faddd %f14,qq2,%f14 fmuld %f8,pp2,%f12 faddd %f22,qq2,%f22 fmuld %f16,pp2,%f20 fmuld %f24,%f30,%f30 faddd %f28,qq1,%f28 fmuld %f0,%f6,%f6 faddd %f4,pp1,%f4 fmuld %f8,%f14,%f14 faddd %f12,pp1,%f12 fmuld %f16,%f22,%f22 faddd %f20,pp1,%f20 faddd %f30,pp1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 faddd %f6,qq1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 faddd %f14,qq1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 faddd %f22,qq1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 fmuld %f24,%f30,%f30 fmuld %f2,%f4,%f4 fmuld %f10,%f12,%f12 fmuld %f18,%f20,%f20 fmuld %f26,%f30,%f30 ldd [%l7+8],%f24 fmuld %f0,%f6,%f6 faddd %f4,%f32,%f4 ldd [%l4+16],%f0 fmuld %f8,%f14,%f14 faddd %f12,%f34,%f12 ldd [%l5+16],%f8 fmuld %f16,%f22,%f22 faddd %f20,%f36,%f20 ldd [%l6+16],%f16 fmuld %f24,%f28,%f28 faddd %f38,%f30,%f30 fmuld %f0,%f6,%f6 faddd %f4,%f2,%f4 ldd [%l4+8],%f32 fmuld %f8,%f14,%f14 faddd %f12,%f10,%f12 ldd [%l5+8],%f34 fmuld %f16,%f22,%f22 faddd %f20,%f18,%f20 ldd [%l6+8],%f36 faddd %f26,%f30,%f30 ldd [%l7+16],%f38 fmuld %f32,%f4,%f4 fmuld %f34,%f12,%f12 fmuld %f36,%f20,%f20 fmuld %f38,%f30,%f30 fsubd %f6,%f4,%f6 fsubd %f14,%f12,%f14 fsubd %f22,%f20,%f22 faddd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case2: fmuld %f26,%f26,%f24 andcc %l3,1,%g0 bz,pn %icc,.case3 ! delay slot fxor %f30,%f38,%f38 fmuld %f16,pp3,%f22 ! sin(x2) fmuld %f0,qq3,%f6 ! cos(x0) fmuld %f8,qq3,%f14 ! cos(x1) faddd %f22,pp2,%f22 fmuld %f16,qq2,%f20 fmuld %f24,qq3,%f30 ! cos(x3) faddd %f6,qq2,%f6 fmuld %f0,pp2,%f4 faddd %f14,qq2,%f14 fmuld %f8,pp2,%f12 fmuld %f16,%f22,%f22 faddd %f20,qq1,%f20 faddd %f30,qq2,%f30 fmuld %f24,pp2,%f28 fmuld %f0,%f6,%f6 faddd %f4,pp1,%f4 fmuld %f8,%f14,%f14 faddd %f12,pp1,%f12 faddd %f22,pp1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 fmuld %f24,%f30,%f30 faddd %f28,pp1,%f28 faddd %f6,qq1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 faddd %f14,qq1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 fmuld %f16,%f22,%f22 faddd %f30,qq1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f2,%f4,%f4 fmuld %f10,%f12,%f12 fmuld %f18,%f22,%f22 ldd [%l6+8],%f16 fmuld %f26,%f28,%f28 fmuld %f0,%f6,%f6 faddd %f4,%f32,%f4 ldd [%l4+16],%f0 fmuld %f8,%f14,%f14 faddd %f12,%f34,%f12 ldd [%l5+16],%f8 fmuld %f16,%f20,%f20 faddd %f36,%f22,%f22 fmuld %f24,%f30,%f30 faddd %f28,%f38,%f28 ldd [%l7+16],%f24 fmuld %f0,%f6,%f6 faddd %f4,%f2,%f4 ldd [%l4+8],%f32 fmuld %f8,%f14,%f14 faddd %f12,%f10,%f12 ldd [%l5+8],%f34 faddd %f18,%f22,%f22 ldd [%l6+16],%f36 fmuld %f24,%f30,%f30 faddd %f28,%f26,%f28 ldd [%l7+8],%f38 fmuld %f32,%f4,%f4 fmuld %f34,%f12,%f12 fmuld %f36,%f22,%f22 fmuld %f38,%f28,%f28 fsubd %f6,%f4,%f6 fsubd %f14,%f12,%f14 faddd %f22,%f20,%f22 fsubd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case3: fmuld %f16,pp3,%f22 ! sin(x2) fmuld %f24,pp3,%f30 ! sin(x3) fmuld %f0,qq3,%f6 ! cos(x0) fmuld %f8,qq3,%f14 ! cos(x1) faddd %f22,pp2,%f22 fmuld %f16,qq2,%f20 faddd %f30,pp2,%f30 fmuld %f24,qq2,%f28 faddd %f6,qq2,%f6 fmuld %f0,pp2,%f4 faddd %f14,qq2,%f14 fmuld %f8,pp2,%f12 fmuld %f16,%f22,%f22 faddd %f20,qq1,%f20 fmuld %f24,%f30,%f30 faddd %f28,qq1,%f28 fmuld %f0,%f6,%f6 faddd %f4,pp1,%f4 fmuld %f8,%f14,%f14 faddd %f12,pp1,%f12 faddd %f22,pp1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 faddd %f30,pp1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 faddd %f6,qq1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 faddd %f14,qq1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 fmuld %f16,%f22,%f22 fmuld %f24,%f30,%f30 fmuld %f2,%f4,%f4 fmuld %f10,%f12,%f12 fmuld %f18,%f22,%f22 ldd [%l6+8],%f16 fmuld %f26,%f30,%f30 ldd [%l7+8],%f24 fmuld %f0,%f6,%f6 faddd %f4,%f32,%f4 ldd [%l4+16],%f0 fmuld %f8,%f14,%f14 faddd %f12,%f34,%f12 ldd [%l5+16],%f8 fmuld %f16,%f20,%f20 faddd %f36,%f22,%f22 fmuld %f24,%f28,%f28 faddd %f38,%f30,%f30 fmuld %f0,%f6,%f6 faddd %f4,%f2,%f4 ldd [%l4+8],%f32 fmuld %f8,%f14,%f14 faddd %f12,%f10,%f12 ldd [%l5+8],%f34 faddd %f18,%f22,%f22 ldd [%l6+16],%f36 faddd %f26,%f30,%f30 ldd [%l7+16],%f38 fmuld %f32,%f4,%f4 fmuld %f34,%f12,%f12 fmuld %f36,%f22,%f22 fmuld %f38,%f30,%f30 fsubd %f6,%f4,%f6 fsubd %f14,%f12,%f14 faddd %f22,%f20,%f22 faddd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case4: fmuld %f18,%f18,%f16 andcc %l2,1,%g0 bz,pn %icc,.case6 ! delay slot fxor %f22,%f36,%f36 fmuld %f26,%f26,%f24 andcc %l3,1,%g0 bz,pn %icc,.case5 ! delay slot fxor %f30,%f38,%f38 fmuld %f8,pp3,%f14 ! sin(x1) fmuld %f0,qq3,%f6 ! cos(x0) faddd %f14,pp2,%f14 fmuld %f8,qq2,%f12 fmuld %f16,qq3,%f22 ! cos(x2) fmuld %f24,qq3,%f30 ! cos(x3) faddd %f6,qq2,%f6 fmuld %f0,pp2,%f4 fmuld %f8,%f14,%f14 faddd %f12,qq1,%f12 faddd %f22,qq2,%f22 fmuld %f16,pp2,%f20 faddd %f30,qq2,%f30 fmuld %f24,pp2,%f28 fmuld %f0,%f6,%f6 faddd %f4,pp1,%f4 faddd %f14,pp1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 fmuld %f16,%f22,%f22 faddd %f20,pp1,%f20 fmuld %f24,%f30,%f30 faddd %f28,pp1,%f28 faddd %f6,qq1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 fmuld %f8,%f14,%f14 faddd %f22,qq1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 faddd %f30,qq1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f2,%f4,%f4 fmuld %f10,%f14,%f14 ldd [%l5+8],%f8 fmuld %f18,%f20,%f20 fmuld %f26,%f28,%f28 fmuld %f0,%f6,%f6 faddd %f4,%f32,%f4 ldd [%l4+16],%f0 fmuld %f8,%f12,%f12 faddd %f34,%f14,%f14 fmuld %f16,%f22,%f22 faddd %f20,%f36,%f20 ldd [%l6+16],%f16 fmuld %f24,%f30,%f30 faddd %f28,%f38,%f28 ldd [%l7+16],%f24 fmuld %f0,%f6,%f6 faddd %f4,%f2,%f4 ldd [%l4+8],%f32 faddd %f10,%f14,%f14 ldd [%l5+16],%f34 fmuld %f16,%f22,%f22 faddd %f20,%f18,%f20 ldd [%l6+8],%f36 fmuld %f24,%f30,%f30 faddd %f28,%f26,%f28 ldd [%l7+8],%f38 fmuld %f32,%f4,%f4 fmuld %f34,%f14,%f14 fmuld %f36,%f20,%f20 fmuld %f38,%f28,%f28 fsubd %f6,%f4,%f6 faddd %f14,%f12,%f14 fsubd %f22,%f20,%f22 fsubd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case5: fmuld %f8,pp3,%f14 ! sin(x1) fmuld %f24,pp3,%f30 ! sin(x3) fmuld %f0,qq3,%f6 ! cos(x0) faddd %f14,pp2,%f14 fmuld %f8,qq2,%f12 fmuld %f16,qq3,%f22 ! cos(x2) faddd %f30,pp2,%f30 fmuld %f24,qq2,%f28 faddd %f6,qq2,%f6 fmuld %f0,pp2,%f4 fmuld %f8,%f14,%f14 faddd %f12,qq1,%f12 faddd %f22,qq2,%f22 fmuld %f16,pp2,%f20 fmuld %f24,%f30,%f30 faddd %f28,qq1,%f28 fmuld %f0,%f6,%f6 faddd %f4,pp1,%f4 faddd %f14,pp1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 fmuld %f16,%f22,%f22 faddd %f20,pp1,%f20 faddd %f30,pp1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 faddd %f6,qq1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 fmuld %f8,%f14,%f14 faddd %f22,qq1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 fmuld %f24,%f30,%f30 fmuld %f2,%f4,%f4 fmuld %f10,%f14,%f14 ldd [%l5+8],%f8 fmuld %f18,%f20,%f20 fmuld %f26,%f30,%f30 ldd [%l7+8],%f24 fmuld %f0,%f6,%f6 faddd %f4,%f32,%f4 ldd [%l4+16],%f0 fmuld %f8,%f12,%f12 faddd %f34,%f14,%f14 fmuld %f16,%f22,%f22 faddd %f20,%f36,%f20 ldd [%l6+16],%f16 fmuld %f24,%f28,%f28 faddd %f38,%f30,%f30 fmuld %f0,%f6,%f6 faddd %f4,%f2,%f4 ldd [%l4+8],%f32 faddd %f10,%f14,%f14 ldd [%l5+16],%f34 fmuld %f16,%f22,%f22 faddd %f20,%f18,%f20 ldd [%l6+8],%f36 faddd %f26,%f30,%f30 ldd [%l7+16],%f38 fmuld %f32,%f4,%f4 fmuld %f34,%f14,%f14 fmuld %f36,%f20,%f20 fmuld %f38,%f30,%f30 fsubd %f6,%f4,%f6 faddd %f14,%f12,%f14 fsubd %f22,%f20,%f22 faddd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case6: fmuld %f26,%f26,%f24 andcc %l3,1,%g0 bz,pn %icc,.case7 ! delay slot fxor %f30,%f38,%f38 fmuld %f8,pp3,%f14 ! sin(x1) fmuld %f16,pp3,%f22 ! sin(x2) fmuld %f0,qq3,%f6 ! cos(x0) faddd %f14,pp2,%f14 fmuld %f8,qq2,%f12 faddd %f22,pp2,%f22 fmuld %f16,qq2,%f20 fmuld %f24,qq3,%f30 ! cos(x3) faddd %f6,qq2,%f6 fmuld %f0,pp2,%f4 fmuld %f8,%f14,%f14 faddd %f12,qq1,%f12 fmuld %f16,%f22,%f22 faddd %f20,qq1,%f20 faddd %f30,qq2,%f30 fmuld %f24,pp2,%f28 fmuld %f0,%f6,%f6 faddd %f4,pp1,%f4 faddd %f14,pp1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 faddd %f22,pp1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 fmuld %f24,%f30,%f30 faddd %f28,pp1,%f28 faddd %f6,qq1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 fmuld %f8,%f14,%f14 fmuld %f16,%f22,%f22 faddd %f30,qq1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f2,%f4,%f4 fmuld %f10,%f14,%f14 ldd [%l5+8],%f8 fmuld %f18,%f22,%f22 ldd [%l6+8],%f16 fmuld %f26,%f28,%f28 fmuld %f0,%f6,%f6 faddd %f4,%f32,%f4 ldd [%l4+16],%f0 fmuld %f8,%f12,%f12 faddd %f34,%f14,%f14 fmuld %f16,%f20,%f20 faddd %f36,%f22,%f22 fmuld %f24,%f30,%f30 faddd %f28,%f38,%f28 ldd [%l7+16],%f24 fmuld %f0,%f6,%f6 faddd %f4,%f2,%f4 ldd [%l4+8],%f32 faddd %f10,%f14,%f14 ldd [%l5+16],%f34 faddd %f18,%f22,%f22 ldd [%l6+16],%f36 fmuld %f24,%f30,%f30 faddd %f28,%f26,%f28 ldd [%l7+8],%f38 fmuld %f32,%f4,%f4 fmuld %f34,%f14,%f14 fmuld %f36,%f22,%f22 fmuld %f38,%f28,%f28 fsubd %f6,%f4,%f6 faddd %f14,%f12,%f14 faddd %f22,%f20,%f22 fsubd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case7: fmuld %f8,pp3,%f14 ! sin(x1) fmuld %f16,pp3,%f22 ! sin(x2) fmuld %f24,pp3,%f30 ! sin(x3) fmuld %f0,qq3,%f6 ! cos(x0) faddd %f14,pp2,%f14 fmuld %f8,qq2,%f12 faddd %f22,pp2,%f22 fmuld %f16,qq2,%f20 faddd %f30,pp2,%f30 fmuld %f24,qq2,%f28 faddd %f6,qq2,%f6 fmuld %f0,pp2,%f4 fmuld %f8,%f14,%f14 faddd %f12,qq1,%f12 fmuld %f16,%f22,%f22 faddd %f20,qq1,%f20 fmuld %f24,%f30,%f30 faddd %f28,qq1,%f28 fmuld %f0,%f6,%f6 faddd %f4,pp1,%f4 faddd %f14,pp1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 faddd %f22,pp1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 faddd %f30,pp1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 faddd %f6,qq1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 fmuld %f8,%f14,%f14 fmuld %f16,%f22,%f22 fmuld %f24,%f30,%f30 fmuld %f2,%f4,%f4 fmuld %f10,%f14,%f14 ldd [%l5+8],%f8 fmuld %f18,%f22,%f22 ldd [%l6+8],%f16 fmuld %f26,%f30,%f30 ldd [%l7+8],%f24 fmuld %f0,%f6,%f6 faddd %f4,%f32,%f4 ldd [%l4+16],%f0 fmuld %f8,%f12,%f12 faddd %f34,%f14,%f14 fmuld %f16,%f20,%f20 faddd %f36,%f22,%f22 fmuld %f24,%f28,%f28 faddd %f38,%f30,%f30 fmuld %f0,%f6,%f6 faddd %f4,%f2,%f4 ldd [%l4+8],%f32 faddd %f10,%f14,%f14 ldd [%l5+16],%f34 faddd %f18,%f22,%f22 ldd [%l6+16],%f36 faddd %f26,%f30,%f30 ldd [%l7+16],%f38 fmuld %f32,%f4,%f4 fmuld %f34,%f14,%f14 fmuld %f36,%f22,%f22 fmuld %f38,%f30,%f30 fsubd %f6,%f4,%f6 faddd %f14,%f12,%f14 faddd %f22,%f20,%f22 faddd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case8: fmuld %f10,%f10,%f8 andcc %l1,1,%g0 bz,pn %icc,.case12 ! delay slot fxor %f14,%f34,%f34 fmuld %f18,%f18,%f16 andcc %l2,1,%g0 bz,pn %icc,.case10 ! delay slot fxor %f22,%f36,%f36 fmuld %f26,%f26,%f24 andcc %l3,1,%g0 bz,pn %icc,.case9 ! delay slot fxor %f30,%f38,%f38 fmuld %f0,pp3,%f6 ! sin(x0) faddd %f6,pp2,%f6 fmuld %f0,qq2,%f4 fmuld %f8,qq3,%f14 ! cos(x1) fmuld %f16,qq3,%f22 ! cos(x2) fmuld %f24,qq3,%f30 ! cos(x3) fmuld %f0,%f6,%f6 faddd %f4,qq1,%f4 faddd %f14,qq2,%f14 fmuld %f8,pp2,%f12 faddd %f22,qq2,%f22 fmuld %f16,pp2,%f20 faddd %f30,qq2,%f30 fmuld %f24,pp2,%f28 faddd %f6,pp1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 fmuld %f8,%f14,%f14 faddd %f12,pp1,%f12 fmuld %f16,%f22,%f22 faddd %f20,pp1,%f20 fmuld %f24,%f30,%f30 faddd %f28,pp1,%f28 fmuld %f0,%f6,%f6 faddd %f14,qq1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 faddd %f22,qq1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 faddd %f30,qq1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f2,%f6,%f6 ldd [%l4+8],%f0 fmuld %f10,%f12,%f12 fmuld %f18,%f20,%f20 fmuld %f26,%f28,%f28 fmuld %f0,%f4,%f4 faddd %f32,%f6,%f6 fmuld %f8,%f14,%f14 faddd %f12,%f34,%f12 ldd [%l5+16],%f8 fmuld %f16,%f22,%f22 faddd %f20,%f36,%f20 ldd [%l6+16],%f16 fmuld %f24,%f30,%f30 faddd %f28,%f38,%f28 ldd [%l7+16],%f24 faddd %f2,%f6,%f6 ldd [%l4+16],%f32 fmuld %f8,%f14,%f14 faddd %f12,%f10,%f12 ldd [%l5+8],%f34 fmuld %f16,%f22,%f22 faddd %f20,%f18,%f20 ldd [%l6+8],%f36 fmuld %f24,%f30,%f30 faddd %f28,%f26,%f28 ldd [%l7+8],%f38 fmuld %f32,%f6,%f6 fmuld %f34,%f12,%f12 fmuld %f36,%f20,%f20 fmuld %f38,%f28,%f28 faddd %f6,%f4,%f6 fsubd %f14,%f12,%f14 fsubd %f22,%f20,%f22 fsubd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case9: fmuld %f0,pp3,%f6 ! sin(x0) fmuld %f24,pp3,%f30 ! sin(x3) faddd %f6,pp2,%f6 fmuld %f0,qq2,%f4 fmuld %f8,qq3,%f14 ! cos(x1) fmuld %f16,qq3,%f22 ! cos(x2) faddd %f30,pp2,%f30 fmuld %f24,qq2,%f28 fmuld %f0,%f6,%f6 faddd %f4,qq1,%f4 faddd %f14,qq2,%f14 fmuld %f8,pp2,%f12 faddd %f22,qq2,%f22 fmuld %f16,pp2,%f20 fmuld %f24,%f30,%f30 faddd %f28,qq1,%f28 faddd %f6,pp1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 fmuld %f8,%f14,%f14 faddd %f12,pp1,%f12 fmuld %f16,%f22,%f22 faddd %f20,pp1,%f20 faddd %f30,pp1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f0,%f6,%f6 faddd %f14,qq1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 faddd %f22,qq1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 fmuld %f24,%f30,%f30 fmuld %f2,%f6,%f6 ldd [%l4+8],%f0 fmuld %f10,%f12,%f12 fmuld %f18,%f20,%f20 fmuld %f26,%f30,%f30 ldd [%l7+8],%f24 fmuld %f0,%f4,%f4 faddd %f32,%f6,%f6 fmuld %f8,%f14,%f14 faddd %f12,%f34,%f12 ldd [%l5+16],%f8 fmuld %f16,%f22,%f22 faddd %f20,%f36,%f20 ldd [%l6+16],%f16 fmuld %f24,%f28,%f28 faddd %f38,%f30,%f30 faddd %f2,%f6,%f6 ldd [%l4+16],%f32 fmuld %f8,%f14,%f14 faddd %f12,%f10,%f12 ldd [%l5+8],%f34 fmuld %f16,%f22,%f22 faddd %f20,%f18,%f20 ldd [%l6+8],%f36 faddd %f26,%f30,%f30 ldd [%l7+16],%f38 fmuld %f32,%f6,%f6 fmuld %f34,%f12,%f12 fmuld %f36,%f20,%f20 fmuld %f38,%f30,%f30 faddd %f6,%f4,%f6 fsubd %f14,%f12,%f14 fsubd %f22,%f20,%f22 faddd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case10: fmuld %f26,%f26,%f24 andcc %l3,1,%g0 bz,pn %icc,.case11 ! delay slot fxor %f30,%f38,%f38 fmuld %f0,pp3,%f6 ! sin(x0) fmuld %f16,pp3,%f22 ! sin(x2) faddd %f6,pp2,%f6 fmuld %f0,qq2,%f4 fmuld %f8,qq3,%f14 ! cos(x1) faddd %f22,pp2,%f22 fmuld %f16,qq2,%f20 fmuld %f24,qq3,%f30 ! cos(x3) fmuld %f0,%f6,%f6 faddd %f4,qq1,%f4 faddd %f14,qq2,%f14 fmuld %f8,pp2,%f12 fmuld %f16,%f22,%f22 faddd %f20,qq1,%f20 faddd %f30,qq2,%f30 fmuld %f24,pp2,%f28 faddd %f6,pp1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 fmuld %f8,%f14,%f14 faddd %f12,pp1,%f12 faddd %f22,pp1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 fmuld %f24,%f30,%f30 faddd %f28,pp1,%f28 fmuld %f0,%f6,%f6 faddd %f14,qq1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 fmuld %f16,%f22,%f22 faddd %f30,qq1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f2,%f6,%f6 ldd [%l4+8],%f0 fmuld %f10,%f12,%f12 fmuld %f18,%f22,%f22 ldd [%l6+8],%f16 fmuld %f26,%f28,%f28 fmuld %f0,%f4,%f4 faddd %f32,%f6,%f6 fmuld %f8,%f14,%f14 faddd %f12,%f34,%f12 ldd [%l5+16],%f8 fmuld %f16,%f20,%f20 faddd %f36,%f22,%f22 fmuld %f24,%f30,%f30 faddd %f28,%f38,%f28 ldd [%l7+16],%f24 faddd %f2,%f6,%f6 ldd [%l4+16],%f32 fmuld %f8,%f14,%f14 faddd %f12,%f10,%f12 ldd [%l5+8],%f34 faddd %f18,%f22,%f22 ldd [%l6+16],%f36 fmuld %f24,%f30,%f30 faddd %f28,%f26,%f28 ldd [%l7+8],%f38 fmuld %f32,%f6,%f6 fmuld %f34,%f12,%f12 fmuld %f36,%f22,%f22 fmuld %f38,%f28,%f28 faddd %f6,%f4,%f6 fsubd %f14,%f12,%f14 faddd %f22,%f20,%f22 fsubd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case11: fmuld %f0,pp3,%f6 ! sin(x0) fmuld %f16,pp3,%f22 ! sin(x2) fmuld %f24,pp3,%f30 ! sin(x3) faddd %f6,pp2,%f6 fmuld %f0,qq2,%f4 fmuld %f8,qq3,%f14 ! cos(x1) faddd %f22,pp2,%f22 fmuld %f16,qq2,%f20 faddd %f30,pp2,%f30 fmuld %f24,qq2,%f28 fmuld %f0,%f6,%f6 faddd %f4,qq1,%f4 faddd %f14,qq2,%f14 fmuld %f8,pp2,%f12 fmuld %f16,%f22,%f22 faddd %f20,qq1,%f20 fmuld %f24,%f30,%f30 faddd %f28,qq1,%f28 faddd %f6,pp1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 fmuld %f8,%f14,%f14 faddd %f12,pp1,%f12 faddd %f22,pp1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 faddd %f30,pp1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f0,%f6,%f6 faddd %f14,qq1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 fmuld %f16,%f22,%f22 fmuld %f24,%f30,%f30 fmuld %f2,%f6,%f6 ldd [%l4+8],%f0 fmuld %f10,%f12,%f12 fmuld %f18,%f22,%f22 ldd [%l6+8],%f16 fmuld %f26,%f30,%f30 ldd [%l7+8],%f24 fmuld %f0,%f4,%f4 faddd %f32,%f6,%f6 fmuld %f8,%f14,%f14 faddd %f12,%f34,%f12 ldd [%l5+16],%f8 fmuld %f16,%f20,%f20 faddd %f36,%f22,%f22 fmuld %f24,%f28,%f28 faddd %f38,%f30,%f30 faddd %f2,%f6,%f6 ldd [%l4+16],%f32 fmuld %f8,%f14,%f14 faddd %f12,%f10,%f12 ldd [%l5+8],%f34 faddd %f18,%f22,%f22 ldd [%l6+16],%f36 faddd %f26,%f30,%f30 ldd [%l7+16],%f38 fmuld %f32,%f6,%f6 fmuld %f34,%f12,%f12 fmuld %f36,%f22,%f22 fmuld %f38,%f30,%f30 faddd %f6,%f4,%f6 fsubd %f14,%f12,%f14 faddd %f22,%f20,%f22 faddd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case12: fmuld %f18,%f18,%f16 andcc %l2,1,%g0 bz,pn %icc,.case14 ! delay slot fxor %f22,%f36,%f36 fmuld %f26,%f26,%f24 andcc %l3,1,%g0 bz,pn %icc,.case13 ! delay slot fxor %f30,%f38,%f38 fmuld %f0,pp3,%f6 ! sin(x0) fmuld %f8,pp3,%f14 ! sin(x1) faddd %f6,pp2,%f6 fmuld %f0,qq2,%f4 faddd %f14,pp2,%f14 fmuld %f8,qq2,%f12 fmuld %f16,qq3,%f22 ! cos(x2) fmuld %f24,qq3,%f30 ! cos(x3) fmuld %f0,%f6,%f6 faddd %f4,qq1,%f4 fmuld %f8,%f14,%f14 faddd %f12,qq1,%f12 faddd %f22,qq2,%f22 fmuld %f16,pp2,%f20 faddd %f30,qq2,%f30 fmuld %f24,pp2,%f28 faddd %f6,pp1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 faddd %f14,pp1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 fmuld %f16,%f22,%f22 faddd %f20,pp1,%f20 fmuld %f24,%f30,%f30 faddd %f28,pp1,%f28 fmuld %f0,%f6,%f6 fmuld %f8,%f14,%f14 faddd %f22,qq1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 faddd %f30,qq1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f2,%f6,%f6 ldd [%l4+8],%f0 fmuld %f10,%f14,%f14 ldd [%l5+8],%f8 fmuld %f18,%f20,%f20 fmuld %f26,%f28,%f28 fmuld %f0,%f4,%f4 faddd %f32,%f6,%f6 fmuld %f8,%f12,%f12 faddd %f34,%f14,%f14 fmuld %f16,%f22,%f22 faddd %f20,%f36,%f20 ldd [%l6+16],%f16 fmuld %f24,%f30,%f30 faddd %f28,%f38,%f28 ldd [%l7+16],%f24 faddd %f2,%f6,%f6 ldd [%l4+16],%f32 faddd %f10,%f14,%f14 ldd [%l5+16],%f34 fmuld %f16,%f22,%f22 faddd %f20,%f18,%f20 ldd [%l6+8],%f36 fmuld %f24,%f30,%f30 faddd %f28,%f26,%f28 ldd [%l7+8],%f38 fmuld %f32,%f6,%f6 fmuld %f34,%f14,%f14 fmuld %f36,%f20,%f20 fmuld %f38,%f28,%f28 faddd %f6,%f4,%f6 faddd %f14,%f12,%f14 fsubd %f22,%f20,%f22 fsubd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case13: fmuld %f0,pp3,%f6 ! sin(x0) fmuld %f8,pp3,%f14 ! sin(x1) fmuld %f24,pp3,%f30 ! sin(x3) faddd %f6,pp2,%f6 fmuld %f0,qq2,%f4 faddd %f14,pp2,%f14 fmuld %f8,qq2,%f12 fmuld %f16,qq3,%f22 ! cos(x2) faddd %f30,pp2,%f30 fmuld %f24,qq2,%f28 fmuld %f0,%f6,%f6 faddd %f4,qq1,%f4 fmuld %f8,%f14,%f14 faddd %f12,qq1,%f12 faddd %f22,qq2,%f22 fmuld %f16,pp2,%f20 fmuld %f24,%f30,%f30 faddd %f28,qq1,%f28 faddd %f6,pp1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 faddd %f14,pp1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 fmuld %f16,%f22,%f22 faddd %f20,pp1,%f20 faddd %f30,pp1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f0,%f6,%f6 fmuld %f8,%f14,%f14 faddd %f22,qq1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 fmuld %f24,%f30,%f30 fmuld %f2,%f6,%f6 ldd [%l4+8],%f0 fmuld %f10,%f14,%f14 ldd [%l5+8],%f8 fmuld %f18,%f20,%f20 fmuld %f26,%f30,%f30 ldd [%l7+8],%f24 fmuld %f0,%f4,%f4 faddd %f32,%f6,%f6 fmuld %f8,%f12,%f12 faddd %f34,%f14,%f14 fmuld %f16,%f22,%f22 faddd %f20,%f36,%f20 ldd [%l6+16],%f16 fmuld %f24,%f28,%f28 faddd %f38,%f30,%f30 faddd %f2,%f6,%f6 ldd [%l4+16],%f32 faddd %f10,%f14,%f14 ldd [%l5+16],%f34 fmuld %f16,%f22,%f22 faddd %f20,%f18,%f20 ldd [%l6+8],%f36 faddd %f26,%f30,%f30 ldd [%l7+16],%f38 fmuld %f32,%f6,%f6 fmuld %f34,%f14,%f14 fmuld %f36,%f20,%f20 fmuld %f38,%f30,%f30 faddd %f6,%f4,%f6 faddd %f14,%f12,%f14 fsubd %f22,%f20,%f22 faddd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case14: fmuld %f26,%f26,%f24 andcc %l3,1,%g0 bz,pn %icc,.case15 ! delay slot fxor %f30,%f38,%f38 fmuld %f0,pp3,%f6 ! sin(x0) fmuld %f8,pp3,%f14 ! sin(x1) fmuld %f16,pp3,%f22 ! sin(x2) faddd %f6,pp2,%f6 fmuld %f0,qq2,%f4 faddd %f14,pp2,%f14 fmuld %f8,qq2,%f12 faddd %f22,pp2,%f22 fmuld %f16,qq2,%f20 fmuld %f24,qq3,%f30 ! cos(x3) fmuld %f0,%f6,%f6 faddd %f4,qq1,%f4 fmuld %f8,%f14,%f14 faddd %f12,qq1,%f12 fmuld %f16,%f22,%f22 faddd %f20,qq1,%f20 faddd %f30,qq2,%f30 fmuld %f24,pp2,%f28 faddd %f6,pp1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 faddd %f14,pp1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 faddd %f22,pp1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 fmuld %f24,%f30,%f30 faddd %f28,pp1,%f28 fmuld %f0,%f6,%f6 fmuld %f8,%f14,%f14 fmuld %f16,%f22,%f22 faddd %f30,qq1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f2,%f6,%f6 ldd [%l4+8],%f0 fmuld %f10,%f14,%f14 ldd [%l5+8],%f8 fmuld %f18,%f22,%f22 ldd [%l6+8],%f16 fmuld %f26,%f28,%f28 fmuld %f0,%f4,%f4 faddd %f32,%f6,%f6 fmuld %f8,%f12,%f12 faddd %f34,%f14,%f14 fmuld %f16,%f20,%f20 faddd %f36,%f22,%f22 fmuld %f24,%f30,%f30 faddd %f28,%f38,%f28 ldd [%l7+16],%f24 faddd %f2,%f6,%f6 ldd [%l4+16],%f32 faddd %f10,%f14,%f14 ldd [%l5+16],%f34 faddd %f18,%f22,%f22 ldd [%l6+16],%f36 fmuld %f24,%f30,%f30 faddd %f28,%f26,%f28 ldd [%l7+8],%f38 fmuld %f32,%f6,%f6 fmuld %f34,%f14,%f14 fmuld %f36,%f22,%f22 fmuld %f38,%f28,%f28 faddd %f6,%f4,%f6 faddd %f14,%f12,%f14 faddd %f22,%f20,%f22 fsubd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .case15: fmuld %f0,pp3,%f6 ! sin(x0) fmuld %f8,pp3,%f14 ! sin(x1) fmuld %f16,pp3,%f22 ! sin(x2) fmuld %f24,pp3,%f30 ! sin(x3) faddd %f6,pp2,%f6 fmuld %f0,qq2,%f4 faddd %f14,pp2,%f14 fmuld %f8,qq2,%f12 faddd %f22,pp2,%f22 fmuld %f16,qq2,%f20 faddd %f30,pp2,%f30 fmuld %f24,qq2,%f28 fmuld %f0,%f6,%f6 faddd %f4,qq1,%f4 fmuld %f8,%f14,%f14 faddd %f12,qq1,%f12 fmuld %f16,%f22,%f22 faddd %f20,qq1,%f20 fmuld %f24,%f30,%f30 faddd %f28,qq1,%f28 faddd %f6,pp1,%f6 fmuld %f0,%f4,%f4 add %l4,%g1,%l4 faddd %f14,pp1,%f14 fmuld %f8,%f12,%f12 add %l5,%g1,%l5 faddd %f22,pp1,%f22 fmuld %f16,%f20,%f20 add %l6,%g1,%l6 faddd %f30,pp1,%f30 fmuld %f24,%f28,%f28 add %l7,%g1,%l7 fmuld %f0,%f6,%f6 fmuld %f8,%f14,%f14 fmuld %f16,%f22,%f22 fmuld %f24,%f30,%f30 fmuld %f2,%f6,%f6 ldd [%l4+8],%f0 fmuld %f10,%f14,%f14 ldd [%l5+8],%f8 fmuld %f18,%f22,%f22 ldd [%l6+8],%f16 fmuld %f26,%f30,%f30 ldd [%l7+8],%f24 fmuld %f0,%f4,%f4 faddd %f32,%f6,%f6 fmuld %f8,%f12,%f12 faddd %f34,%f14,%f14 fmuld %f16,%f20,%f20 faddd %f36,%f22,%f22 fmuld %f24,%f28,%f28 faddd %f38,%f30,%f30 faddd %f2,%f6,%f6 ldd [%l4+16],%f32 faddd %f10,%f14,%f14 ldd [%l5+16],%f34 faddd %f18,%f22,%f22 ldd [%l6+16],%f36 faddd %f26,%f30,%f30 ldd [%l7+16],%f38 fmuld %f32,%f6,%f6 fmuld %f34,%f14,%f14 fmuld %f36,%f22,%f22 fmuld %f38,%f30,%f30 faddd %f6,%f4,%f6 faddd %f14,%f12,%f14 faddd %f22,%f20,%f22 faddd %f30,%f28,%f30 faddd %f6,%f0,%f6 faddd %f14,%f8,%f14 faddd %f22,%f16,%f22 faddd %f30,%f24,%f30 mov %l0,%l4 fnegd %f6,%f4 lda [%i1]%asi,%l0 ! preload next argument fnegd %f14,%f12 lda [%i1]%asi,%f0 fnegd %f22,%f20 lda [%i1+4]%asi,%f3 fnegd %f30,%f28 andn %l0,%i5,%l0 add %i1,%i2,%i1 andcc %l4,2,%g0 fmovdnz %icc,%f4,%f6 st %f6,[%o0] andcc %l1,2,%g0 fmovdnz %icc,%f12,%f14 st %f14,[%o1] andcc %l2,2,%g0 fmovdnz %icc,%f20,%f22 st %f22,[%o2] andcc %l3,2,%g0 fmovdnz %icc,%f28,%f30 st %f30,[%o3] addcc %i0,-1,%i0 bg,pt %icc,.loop0 ! delay slot st %f7,[%o0+4] ba,pt %icc,.end ! delay slot nop .align 16 .end: st %f15,[%o1+4] st %f23,[%o2+4] st %f31,[%o3+4] ld [%fp+biguns],%i5 tst %i5 ! check for huge arguments remaining be,pt %icc,.exit ! delay slot nop #ifdef __sparcv9 ldx [%fp+xsave],%o1 ldx [%fp+ysave],%o3 #else ld [%fp+xsave],%o1 ld [%fp+ysave],%o3 #endif ld [%fp+nsave],%o0 ld [%fp+sxsave],%o2 ld [%fp+sysave],%o4 sra %o2,0,%o2 ! sign-extend for V9 sra %o4,0,%o4 call __vlibm_vsin_big_ultra3 sra %o5,0,%o5 ! delay slot .exit: ret restore .align 16 .last1: faddd %f2,c3two44,%f4 st %f15,[%o1+4] .last1_from_range1: mov 0,%l1 fzeros %f8 fzero %f10 add %fp,junk,%o1 .last2: faddd %f10,c3two44,%f12 st %f23,[%o2+4] .last2_from_range2: mov 0,%l2 fzeros %f16 fzero %f18 add %fp,junk,%o2 .last3: faddd %f18,c3two44,%f20 st %f31,[%o3+4] st %f5,[%fp+nk0] st %f13,[%fp+nk1] .last3_from_range3: mov 0,%l3 fzeros %f24 fzero %f26 ba,pt %icc,.cont ! delay slot add %fp,junk,%o3 .align 16 .range0: cmp %l0,%o4 bl,pt %icc,1f ! hx < 0x3e400000 ! delay slot, harmless if branch taken sethi %hi(0x7ff00000),%o7 cmp %l0,%o7 bl,a,pt %icc,2f ! branch if finite ! delay slot, squashed if branch not taken st %o4,[%fp+biguns] ! set biguns fzero %f0 fmuld %f2,%f0,%f2 st %f2,[%o0] ba,pt %icc,2f ! delay slot st %f3,[%o0+4] 1: fdtoi %f2,%f4 ! raise inexact if not zero st %f0,[%o0] st %f3,[%o0+4] 2: addcc %i0,-1,%i0 ble,pn %icc,.end ! delay slot, harmless if branch taken add %i3,%i4,%i3 ! y += stridey andn %l1,%i5,%l0 ! hx &= ~0x80000000 fmovs %f8,%f0 fmovs %f11,%f3 ba,pt %icc,.loop0 ! delay slot add %i1,%i2,%i1 ! x += stridex .align 16 .range1: cmp %l1,%o4 bl,pt %icc,1f ! hx < 0x3e400000 ! delay slot, harmless if branch taken sethi %hi(0x7ff00000),%o7 cmp %l1,%o7 bl,a,pt %icc,2f ! branch if finite ! delay slot, squashed if branch not taken st %o4,[%fp+biguns] ! set biguns fzero %f8 fmuld %f10,%f8,%f10 st %f10,[%o1] ba,pt %icc,2f ! delay slot st %f11,[%o1+4] 1: fdtoi %f10,%f12 ! raise inexact if not zero st %f8,[%o1] st %f11,[%o1+4] 2: addcc %i0,-1,%i0 ble,pn %icc,.last1_from_range1 ! delay slot, harmless if branch taken add %i3,%i4,%i3 ! y += stridey andn %l2,%i5,%l1 ! hx &= ~0x80000000 fmovs %f16,%f8 fmovs %f19,%f11 ba,pt %icc,.loop1 ! delay slot add %i1,%i2,%i1 ! x += stridex .align 16 .range2: cmp %l2,%o4 bl,pt %icc,1f ! hx < 0x3e400000 ! delay slot, harmless if branch taken sethi %hi(0x7ff00000),%o7 cmp %l2,%o7 bl,a,pt %icc,2f ! branch if finite ! delay slot, squashed if branch not taken st %o4,[%fp+biguns] ! set biguns fzero %f16 fmuld %f18,%f16,%f18 st %f18,[%o2] ba,pt %icc,2f ! delay slot st %f19,[%o2+4] 1: fdtoi %f18,%f20 ! raise inexact if not zero st %f16,[%o2] st %f19,[%o2+4] 2: addcc %i0,-1,%i0 ble,pn %icc,.last2_from_range2 ! delay slot, harmless if branch taken add %i3,%i4,%i3 ! y += stridey andn %l3,%i5,%l2 ! hx &= ~0x80000000 fmovs %f24,%f16 fmovs %f27,%f19 ba,pt %icc,.loop2 ! delay slot add %i1,%i2,%i1 ! x += stridex .align 16 .range3: cmp %l3,%o4 bl,pt %icc,1f ! hx < 0x3e400000 ! delay slot, harmless if branch taken sethi %hi(0x7ff00000),%o7 cmp %l3,%o7 bl,a,pt %icc,2f ! branch if finite ! delay slot, squashed if branch not taken st %o4,[%fp+biguns] ! set biguns fzero %f24 fmuld %f26,%f24,%f26 st %f26,[%o3] ba,pt %icc,2f ! delay slot st %f27,[%o3+4] 1: fdtoi %f26,%f28 ! raise inexact if not zero st %f24,[%o3] st %f27,[%o3+4] 2: addcc %i0,-1,%i0 ble,pn %icc,.last3_from_range3 ! delay slot, harmless if branch taken add %i3,%i4,%i3 ! y += stridey ld [%i1],%l3 ld [%i1],%f24 ld [%i1+4],%f27 andn %l3,%i5,%l3 ! hx &= ~0x80000000 ba,pt %icc,.loop3 ! delay slot add %i1,%i2,%i1 ! x += stridex SET_SIZE(__vsin_ultra3)