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