1*5b2ba9d3SPiotr Jasiukajtis/* 2*5b2ba9d3SPiotr Jasiukajtis * CDDL HEADER START 3*5b2ba9d3SPiotr Jasiukajtis * 4*5b2ba9d3SPiotr Jasiukajtis * The contents of this file are subject to the terms of the 5*5b2ba9d3SPiotr Jasiukajtis * Common Development and Distribution License (the "License"). 6*5b2ba9d3SPiotr Jasiukajtis * You may not use this file except in compliance with the License. 7*5b2ba9d3SPiotr Jasiukajtis * 8*5b2ba9d3SPiotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*5b2ba9d3SPiotr Jasiukajtis * or http://www.opensolaris.org/os/licensing. 10*5b2ba9d3SPiotr Jasiukajtis * See the License for the specific language governing permissions 11*5b2ba9d3SPiotr Jasiukajtis * and limitations under the License. 12*5b2ba9d3SPiotr Jasiukajtis * 13*5b2ba9d3SPiotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each 14*5b2ba9d3SPiotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*5b2ba9d3SPiotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the 16*5b2ba9d3SPiotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying 17*5b2ba9d3SPiotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner] 18*5b2ba9d3SPiotr Jasiukajtis * 19*5b2ba9d3SPiotr Jasiukajtis * CDDL HEADER END 20*5b2ba9d3SPiotr Jasiukajtis */ 21*5b2ba9d3SPiotr Jasiukajtis/* 22*5b2ba9d3SPiotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc. All rights reserved. 23*5b2ba9d3SPiotr Jasiukajtis */ 24*5b2ba9d3SPiotr Jasiukajtis/* 25*5b2ba9d3SPiotr Jasiukajtis * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 26*5b2ba9d3SPiotr Jasiukajtis * Use is subject to license terms. 27*5b2ba9d3SPiotr Jasiukajtis */ 28*5b2ba9d3SPiotr Jasiukajtis 29*5b2ba9d3SPiotr Jasiukajtis .file "__vatan2.S" 30*5b2ba9d3SPiotr Jasiukajtis 31*5b2ba9d3SPiotr Jasiukajtis#include "libm.h" 32*5b2ba9d3SPiotr Jasiukajtis 33*5b2ba9d3SPiotr Jasiukajtis RO_DATA 34*5b2ba9d3SPiotr Jasiukajtis .align 64 35*5b2ba9d3SPiotr Jasiukajtisconstants: 36*5b2ba9d3SPiotr Jasiukajtis .word 0x3ff921fb,0x54442d18 ! pio2 37*5b2ba9d3SPiotr Jasiukajtis .word 0x3c91a626,0x33145c07 ! pio2_lo 38*5b2ba9d3SPiotr Jasiukajtis .word 0xbfd55555,0x555554ee ! p1 39*5b2ba9d3SPiotr Jasiukajtis .word 0x3fc99999,0x997a1559 ! p2 40*5b2ba9d3SPiotr Jasiukajtis .word 0xbfc24923,0x158dfe02 ! p3 41*5b2ba9d3SPiotr Jasiukajtis .word 0x3fbc639d,0x0ed1347b ! p4 42*5b2ba9d3SPiotr Jasiukajtis .word 0xffffffff,0x00000000 ! mask 43*5b2ba9d3SPiotr Jasiukajtis .word 0x3fc00000,0x00000000 ! twom3 44*5b2ba9d3SPiotr Jasiukajtis .word 0x46d00000,0x00000000 ! two110 45*5b2ba9d3SPiotr Jasiukajtis .word 0x3fe921fb,0x54442d18 ! pio4 46*5b2ba9d3SPiotr Jasiukajtis 47*5b2ba9d3SPiotr Jasiukajtis! local storage indices 48*5b2ba9d3SPiotr Jasiukajtis 49*5b2ba9d3SPiotr Jasiukajtis#define xscl STACK_BIAS-0x8 50*5b2ba9d3SPiotr Jasiukajtis#define yscl STACK_BIAS-0x10 51*5b2ba9d3SPiotr Jasiukajtis#define twom3 STACK_BIAS-0x18 52*5b2ba9d3SPiotr Jasiukajtis#define two110 STACK_BIAS-0x20 53*5b2ba9d3SPiotr Jasiukajtis#define pio4 STACK_BIAS-0x28 54*5b2ba9d3SPiotr Jasiukajtis#define junk STACK_BIAS-0x30 55*5b2ba9d3SPiotr Jasiukajtis! sizeof temp storage - must be a multiple of 16 for V9 56*5b2ba9d3SPiotr Jasiukajtis#define tmps 0x30 57*5b2ba9d3SPiotr Jasiukajtis 58*5b2ba9d3SPiotr Jasiukajtis! register use 59*5b2ba9d3SPiotr Jasiukajtis 60*5b2ba9d3SPiotr Jasiukajtis! i0 n 61*5b2ba9d3SPiotr Jasiukajtis! i1 y 62*5b2ba9d3SPiotr Jasiukajtis! i2 stridey 63*5b2ba9d3SPiotr Jasiukajtis! i3 x 64*5b2ba9d3SPiotr Jasiukajtis! i4 stridex 65*5b2ba9d3SPiotr Jasiukajtis! i5 z 66*5b2ba9d3SPiotr Jasiukajtis 67*5b2ba9d3SPiotr Jasiukajtis! l0 k0 68*5b2ba9d3SPiotr Jasiukajtis! l1 k1 69*5b2ba9d3SPiotr Jasiukajtis! l2 k2 70*5b2ba9d3SPiotr Jasiukajtis! l3 hx 71*5b2ba9d3SPiotr Jasiukajtis! l4 pz0 72*5b2ba9d3SPiotr Jasiukajtis! l5 pz1 73*5b2ba9d3SPiotr Jasiukajtis! l6 pz2 74*5b2ba9d3SPiotr Jasiukajtis! l7 stridez 75*5b2ba9d3SPiotr Jasiukajtis 76*5b2ba9d3SPiotr Jasiukajtis! the following are 64-bit registers in both V8+ and V9 77*5b2ba9d3SPiotr Jasiukajtis 78*5b2ba9d3SPiotr Jasiukajtis! g1 __vlibm_TBL_atan2 79*5b2ba9d3SPiotr Jasiukajtis! g5 80*5b2ba9d3SPiotr Jasiukajtis 81*5b2ba9d3SPiotr Jasiukajtis! o0 hy 82*5b2ba9d3SPiotr Jasiukajtis! o1 0x00004000 83*5b2ba9d3SPiotr Jasiukajtis! o2 0x1420 84*5b2ba9d3SPiotr Jasiukajtis! o3 0x7fe00000 85*5b2ba9d3SPiotr Jasiukajtis! o4 0x03600000 86*5b2ba9d3SPiotr Jasiukajtis! o5 0x00100000 87*5b2ba9d3SPiotr Jasiukajtis! o7 88*5b2ba9d3SPiotr Jasiukajtis 89*5b2ba9d3SPiotr Jasiukajtis! f0 y0 90*5b2ba9d3SPiotr Jasiukajtis! f2 x0 91*5b2ba9d3SPiotr Jasiukajtis! f4 t0 92*5b2ba9d3SPiotr Jasiukajtis! f6 ah0 93*5b2ba9d3SPiotr Jasiukajtis! f8 al0 94*5b2ba9d3SPiotr Jasiukajtis! f10 y1 95*5b2ba9d3SPiotr Jasiukajtis! f12 x1 96*5b2ba9d3SPiotr Jasiukajtis! f14 t1 97*5b2ba9d3SPiotr Jasiukajtis! f16 ah1 98*5b2ba9d3SPiotr Jasiukajtis! f18 al1 99*5b2ba9d3SPiotr Jasiukajtis! f20 y2 100*5b2ba9d3SPiotr Jasiukajtis! f22 x2 101*5b2ba9d3SPiotr Jasiukajtis! f24 t2 102*5b2ba9d3SPiotr Jasiukajtis! f26 ah2 103*5b2ba9d3SPiotr Jasiukajtis! f28 al2 104*5b2ba9d3SPiotr Jasiukajtis! f30 105*5b2ba9d3SPiotr Jasiukajtis! f32 106*5b2ba9d3SPiotr Jasiukajtis! f34 107*5b2ba9d3SPiotr Jasiukajtis! f36 sx0 108*5b2ba9d3SPiotr Jasiukajtis! f38 sx1 109*5b2ba9d3SPiotr Jasiukajtis! f40 sx2 110*5b2ba9d3SPiotr Jasiukajtis! f42 sy0 111*5b2ba9d3SPiotr Jasiukajtis! f44 sy1 112*5b2ba9d3SPiotr Jasiukajtis! f46 sy2 113*5b2ba9d3SPiotr Jasiukajtis 114*5b2ba9d3SPiotr Jasiukajtis#define mask %f48 115*5b2ba9d3SPiotr Jasiukajtis#define signbit %f50 116*5b2ba9d3SPiotr Jasiukajtis#define pio2 %f52 117*5b2ba9d3SPiotr Jasiukajtis#define pio2_lo %f54 118*5b2ba9d3SPiotr Jasiukajtis#define p1 %f56 119*5b2ba9d3SPiotr Jasiukajtis#define p2 %f58 120*5b2ba9d3SPiotr Jasiukajtis#define p3 %f60 121*5b2ba9d3SPiotr Jasiukajtis#define p4 %f62 122*5b2ba9d3SPiotr Jasiukajtis 123*5b2ba9d3SPiotr Jasiukajtis ENTRY(__vatan2) 124*5b2ba9d3SPiotr Jasiukajtis save %sp,-SA(MINFRAME)-tmps,%sp 125*5b2ba9d3SPiotr Jasiukajtis PIC_SETUP(l7) 126*5b2ba9d3SPiotr Jasiukajtis PIC_SET(l7,constants,o0) 127*5b2ba9d3SPiotr Jasiukajtis PIC_SET(l7,__vlibm_TBL_atan2,o1) 128*5b2ba9d3SPiotr Jasiukajtis wr %g0,0x82,%asi ! set %asi for non-faulting loads 129*5b2ba9d3SPiotr Jasiukajtis mov %o1, %g1 130*5b2ba9d3SPiotr Jasiukajtis#ifdef __sparcv9 131*5b2ba9d3SPiotr Jasiukajtis ldx [%fp+STACK_BIAS+0xb0],%l7 132*5b2ba9d3SPiotr Jasiukajtis#else 133*5b2ba9d3SPiotr Jasiukajtis ld [%fp+0x5c],%l7 134*5b2ba9d3SPiotr Jasiukajtis#endif 135*5b2ba9d3SPiotr Jasiukajtis ldd [%o0+0x00],pio2 ! load/set up constants 136*5b2ba9d3SPiotr Jasiukajtis ldd [%o0+0x08],pio2_lo 137*5b2ba9d3SPiotr Jasiukajtis ldd [%o0+0x10],p1 138*5b2ba9d3SPiotr Jasiukajtis ldd [%o0+0x18],p2 139*5b2ba9d3SPiotr Jasiukajtis ldd [%o0+0x20],p3 140*5b2ba9d3SPiotr Jasiukajtis ldd [%o0+0x28],p4 141*5b2ba9d3SPiotr Jasiukajtis ldd [%o0+0x30],mask 142*5b2ba9d3SPiotr Jasiukajtis fzero signbit 143*5b2ba9d3SPiotr Jasiukajtis fnegd signbit,signbit 144*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x00004000),%o1 145*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x1420),%o2 146*5b2ba9d3SPiotr Jasiukajtis or %o2,%lo(0x1420),%o2 147*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x7fe00000),%o3 148*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x03600000),%o4 149*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x00100000),%o5 150*5b2ba9d3SPiotr Jasiukajtis ldd [%o0+0x38],%f0 ! copy rarely used constants to stack 151*5b2ba9d3SPiotr Jasiukajtis ldd [%o0+0x40],%f2 152*5b2ba9d3SPiotr Jasiukajtis ldd [%o0+0x48],%f4 153*5b2ba9d3SPiotr Jasiukajtis std %f0,[%fp+twom3] 154*5b2ba9d3SPiotr Jasiukajtis std %f2,[%fp+two110] 155*5b2ba9d3SPiotr Jasiukajtis std %f4,[%fp+pio4] 156*5b2ba9d3SPiotr Jasiukajtis sll %i2,3,%i2 ! scale strides 157*5b2ba9d3SPiotr Jasiukajtis sll %i4,3,%i4 158*5b2ba9d3SPiotr Jasiukajtis sll %l7,3,%l7 159*5b2ba9d3SPiotr Jasiukajtis fzero %f20 ! loop prologue 160*5b2ba9d3SPiotr Jasiukajtis fzero %f22 161*5b2ba9d3SPiotr Jasiukajtis fzero %f24 162*5b2ba9d3SPiotr Jasiukajtis fzero %f26 163*5b2ba9d3SPiotr Jasiukajtis fzero %f46 164*5b2ba9d3SPiotr Jasiukajtis add %fp,junk,%l6 165*5b2ba9d3SPiotr Jasiukajtis ld [%i1],%f0 ! *y 166*5b2ba9d3SPiotr Jasiukajtis ld [%i1+4],%f1 167*5b2ba9d3SPiotr Jasiukajtis ld [%i3],%f8 ! *x 168*5b2ba9d3SPiotr Jasiukajtis ld [%i3+4],%f9 169*5b2ba9d3SPiotr Jasiukajtis ld [%i1],%o0 ! hy 170*5b2ba9d3SPiotr Jasiukajtis ba .loop 171*5b2ba9d3SPiotr Jasiukajtis ld [%i3],%l3 ! hx 172*5b2ba9d3SPiotr Jasiukajtis 173*5b2ba9d3SPiotr Jasiukajtis! 16-byte aligned 174*5b2ba9d3SPiotr Jasiukajtis .align 16 175*5b2ba9d3SPiotr Jasiukajtis.loop: 176*5b2ba9d3SPiotr Jasiukajtis fabsd %f0,%f4 177*5b2ba9d3SPiotr Jasiukajtis mov %i5,%l4 178*5b2ba9d3SPiotr Jasiukajtis add %i1,%i2,%i1 ! y += stridey 179*5b2ba9d3SPiotr Jasiukajtis 180*5b2ba9d3SPiotr Jasiukajtis fabsd %f8,%f2 181*5b2ba9d3SPiotr Jasiukajtis add %i3,%i4,%i3 ! x += stridex 182*5b2ba9d3SPiotr Jasiukajtis add %i5,%l7,%i5 ! z += stridez 183*5b2ba9d3SPiotr Jasiukajtis 184*5b2ba9d3SPiotr Jasiukajtis fand %f0,signbit,%f42 185*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 186*5b2ba9d3SPiotr Jasiukajtis 187*5b2ba9d3SPiotr Jasiukajtis fand %f8,signbit,%f36 188*5b2ba9d3SPiotr Jasiukajtis andn %o0,%g5,%o0 189*5b2ba9d3SPiotr Jasiukajtis andn %l3,%g5,%l3 190*5b2ba9d3SPiotr Jasiukajtis 191*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc0,%f4,%f2 192*5b2ba9d3SPiotr Jasiukajtis 193*5b2ba9d3SPiotr Jasiukajtis fmovd %f4,%f0 194*5b2ba9d3SPiotr Jasiukajtis 195*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc0,%f2,%f0 ! swap if |y| > |x| 196*5b2ba9d3SPiotr Jasiukajtis 197*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc0,%f4,%f2 198*5b2ba9d3SPiotr Jasiukajtis mov %o0,%o7 199*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%f10 ! preload next argument 200*5b2ba9d3SPiotr Jasiukajtis 201*5b2ba9d3SPiotr Jasiukajtis faddd %f26,%f20,%f26 202*5b2ba9d3SPiotr Jasiukajtis lda [%i1+4]%asi,%f11 203*5b2ba9d3SPiotr Jasiukajtis 204*5b2ba9d3SPiotr Jasiukajtis faddd %f22,%f24,%f22 205*5b2ba9d3SPiotr Jasiukajtis movg %fcc0,%l3,%o0 206*5b2ba9d3SPiotr Jasiukajtis 207*5b2ba9d3SPiotr Jasiukajtis movg %fcc0,%o7,%l3 208*5b2ba9d3SPiotr Jasiukajtis 209*5b2ba9d3SPiotr Jasiukajtis fbu,pn %fcc0,.nan0 ! if x or y is nan 210*5b2ba9d3SPiotr Jasiukajtis! delay slot 211*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%f18 212*5b2ba9d3SPiotr Jasiukajtis 213*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o0,%l0 ! hx - hy 214*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o3,%g5 215*5b2ba9d3SPiotr Jasiukajtis fabsd %f10,%f14 216*5b2ba9d3SPiotr Jasiukajtis lda [%i3+4]%asi,%f19 217*5b2ba9d3SPiotr Jasiukajtis 218*5b2ba9d3SPiotr Jasiukajtis sub %l0,%o4,%o7 219*5b2ba9d3SPiotr Jasiukajtis faddd %f22,%f26,%f26 220*5b2ba9d3SPiotr Jasiukajtis 221*5b2ba9d3SPiotr Jasiukajtis andcc %g5,%o7,%g0 222*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,.big0 ! if |x| or |x/y| is big 223*5b2ba9d3SPiotr Jasiukajtis! delay slot 224*5b2ba9d3SPiotr Jasiukajtis nop 225*5b2ba9d3SPiotr Jasiukajtis 226*5b2ba9d3SPiotr Jasiukajtis fabsd %f18,%f12 227*5b2ba9d3SPiotr Jasiukajtis cmp %o0,%o5 228*5b2ba9d3SPiotr Jasiukajtis bl,pn %icc,.small0 ! if |y| is small 229*5b2ba9d3SPiotr Jasiukajtis! delay slot 230*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%o0 231*5b2ba9d3SPiotr Jasiukajtis 232*5b2ba9d3SPiotr Jasiukajtis add %l0,%o1,%l0 ! k 233*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 234*5b2ba9d3SPiotr Jasiukajtis ble,pn %icc,.last1 235*5b2ba9d3SPiotr Jasiukajtis! delay slot 236*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 237*5b2ba9d3SPiotr Jasiukajtis 238*5b2ba9d3SPiotr Jasiukajtis.cont1: 239*5b2ba9d3SPiotr Jasiukajtis srl %l0,10,%l0 240*5b2ba9d3SPiotr Jasiukajtis mov %i5,%l5 241*5b2ba9d3SPiotr Jasiukajtis fxor %f26,%f46,%f26 242*5b2ba9d3SPiotr Jasiukajtis st %f26,[%l6] 243*5b2ba9d3SPiotr Jasiukajtis 244*5b2ba9d3SPiotr Jasiukajtis fand %f10,signbit,%f44 245*5b2ba9d3SPiotr Jasiukajtis andn %l0,0x1f,%l0 246*5b2ba9d3SPiotr Jasiukajtis add %i1,%i2,%i1 247*5b2ba9d3SPiotr Jasiukajtis st %f27,[%l6+4] 248*5b2ba9d3SPiotr Jasiukajtis 249*5b2ba9d3SPiotr Jasiukajtis fand %f18,signbit,%f38 250*5b2ba9d3SPiotr Jasiukajtis cmp %l0,%o2 251*5b2ba9d3SPiotr Jasiukajtis movg %icc,%o2,%l0 252*5b2ba9d3SPiotr Jasiukajtis 253*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc1,%f14,%f12 254*5b2ba9d3SPiotr Jasiukajtis add %i3,%i4,%i3 255*5b2ba9d3SPiotr Jasiukajtis add %i5,%l7,%i5 256*5b2ba9d3SPiotr Jasiukajtis 257*5b2ba9d3SPiotr Jasiukajtis fmovd %f14,%f10 258*5b2ba9d3SPiotr Jasiukajtis add %l0,%g1,%l0 259*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 260*5b2ba9d3SPiotr Jasiukajtis 261*5b2ba9d3SPiotr Jasiukajtis ldd [%l0+0x10],%f4 262*5b2ba9d3SPiotr Jasiukajtis fand %f2,mask,%f6 263*5b2ba9d3SPiotr Jasiukajtis andn %o0,%g5,%o0 264*5b2ba9d3SPiotr Jasiukajtis andn %l3,%g5,%l3 265*5b2ba9d3SPiotr Jasiukajtis 266*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc1,%f12,%f10 267*5b2ba9d3SPiotr Jasiukajtis 268*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc1,%f14,%f12 269*5b2ba9d3SPiotr Jasiukajtis mov %o0,%o7 270*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%f20 271*5b2ba9d3SPiotr Jasiukajtis 272*5b2ba9d3SPiotr Jasiukajtis fsubd %f2,%f6,%f30 273*5b2ba9d3SPiotr Jasiukajtis fmuld %f6,%f4,%f6 274*5b2ba9d3SPiotr Jasiukajtis movg %fcc1,%l3,%o0 275*5b2ba9d3SPiotr Jasiukajtis 276*5b2ba9d3SPiotr Jasiukajtis fmuld %f0,%f4,%f8 277*5b2ba9d3SPiotr Jasiukajtis movg %fcc1,%o7,%l3 278*5b2ba9d3SPiotr Jasiukajtis 279*5b2ba9d3SPiotr Jasiukajtis lda [%i1+4]%asi,%f21 280*5b2ba9d3SPiotr Jasiukajtis fbu,pn %fcc1,.nan1 281*5b2ba9d3SPiotr Jasiukajtis! delay slot 282*5b2ba9d3SPiotr Jasiukajtis nop 283*5b2ba9d3SPiotr Jasiukajtis 284*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%f28 285*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o0,%l1 286*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o3,%g5 287*5b2ba9d3SPiotr Jasiukajtis 288*5b2ba9d3SPiotr Jasiukajtis lda [%i3+4]%asi,%f29 289*5b2ba9d3SPiotr Jasiukajtis fmuld %f30,%f4,%f30 290*5b2ba9d3SPiotr Jasiukajtis fsubd %f0,%f6,%f4 291*5b2ba9d3SPiotr Jasiukajtis sub %l1,%o4,%o7 292*5b2ba9d3SPiotr Jasiukajtis 293*5b2ba9d3SPiotr Jasiukajtis fabsd %f20,%f24 294*5b2ba9d3SPiotr Jasiukajtis andcc %g5,%o7,%g0 295*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,.big1 296*5b2ba9d3SPiotr Jasiukajtis! delay slot 297*5b2ba9d3SPiotr Jasiukajtis nop 298*5b2ba9d3SPiotr Jasiukajtis 299*5b2ba9d3SPiotr Jasiukajtis faddd %f2,%f8,%f8 300*5b2ba9d3SPiotr Jasiukajtis cmp %o0,%o5 301*5b2ba9d3SPiotr Jasiukajtis bl,pn %icc,.small1 302*5b2ba9d3SPiotr Jasiukajtis! delay slot 303*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%o0 304*5b2ba9d3SPiotr Jasiukajtis 305*5b2ba9d3SPiotr Jasiukajtis fabsd %f28,%f22 306*5b2ba9d3SPiotr Jasiukajtis add %l1,%o1,%l1 307*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 308*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 309*5b2ba9d3SPiotr Jasiukajtis 310*5b2ba9d3SPiotr Jasiukajtis fsubd %f4,%f30,%f4 311*5b2ba9d3SPiotr Jasiukajtis srl %l1,10,%l1 312*5b2ba9d3SPiotr Jasiukajtis ble,pn %icc,.last2 313*5b2ba9d3SPiotr Jasiukajtis! delay slot 314*5b2ba9d3SPiotr Jasiukajtis mov %i5,%l6 315*5b2ba9d3SPiotr Jasiukajtis 316*5b2ba9d3SPiotr Jasiukajtis.cont2: 317*5b2ba9d3SPiotr Jasiukajtis fand %f20,signbit,%f46 318*5b2ba9d3SPiotr Jasiukajtis andn %l1,0x1f,%l1 319*5b2ba9d3SPiotr Jasiukajtis add %i1,%i2,%i1 320*5b2ba9d3SPiotr Jasiukajtis 321*5b2ba9d3SPiotr Jasiukajtis fand %f28,signbit,%f40 322*5b2ba9d3SPiotr Jasiukajtis cmp %l1,%o2 323*5b2ba9d3SPiotr Jasiukajtis movg %icc,%o2,%l1 324*5b2ba9d3SPiotr Jasiukajtis 325*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc2,%f24,%f22 326*5b2ba9d3SPiotr Jasiukajtis add %i3,%i4,%i3 327*5b2ba9d3SPiotr Jasiukajtis add %i5,%l7,%i5 328*5b2ba9d3SPiotr Jasiukajtis 329*5b2ba9d3SPiotr Jasiukajtis fdivd %f4,%f8,%f4 330*5b2ba9d3SPiotr Jasiukajtis fmovd %f24,%f20 331*5b2ba9d3SPiotr Jasiukajtis add %l1,%g1,%l1 332*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 333*5b2ba9d3SPiotr Jasiukajtis 334*5b2ba9d3SPiotr Jasiukajtis ldd [%l1+0x10],%f14 335*5b2ba9d3SPiotr Jasiukajtis fand %f12,mask,%f16 336*5b2ba9d3SPiotr Jasiukajtis andn %o0,%g5,%o0 337*5b2ba9d3SPiotr Jasiukajtis andn %l3,%g5,%l3 338*5b2ba9d3SPiotr Jasiukajtis 339*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc2,%f22,%f20 340*5b2ba9d3SPiotr Jasiukajtis 341*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc2,%f24,%f22 342*5b2ba9d3SPiotr Jasiukajtis mov %o0,%o7 343*5b2ba9d3SPiotr Jasiukajtis 344*5b2ba9d3SPiotr Jasiukajtis fsubd %f12,%f16,%f32 345*5b2ba9d3SPiotr Jasiukajtis fmuld %f16,%f14,%f16 346*5b2ba9d3SPiotr Jasiukajtis movg %fcc2,%l3,%o0 347*5b2ba9d3SPiotr Jasiukajtis 348*5b2ba9d3SPiotr Jasiukajtis fnegd pio2_lo,%f8 ! al 349*5b2ba9d3SPiotr Jasiukajtis fmuld %f10,%f14,%f18 350*5b2ba9d3SPiotr Jasiukajtis movg %fcc2,%o7,%l3 351*5b2ba9d3SPiotr Jasiukajtis 352*5b2ba9d3SPiotr Jasiukajtis fzero %f0 353*5b2ba9d3SPiotr Jasiukajtis fbu,pn %fcc2,.nan2 354*5b2ba9d3SPiotr Jasiukajtis! delay slot 355*5b2ba9d3SPiotr Jasiukajtis nop 356*5b2ba9d3SPiotr Jasiukajtis 357*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f0 358*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o0,%l2 359*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o3,%g5 360*5b2ba9d3SPiotr Jasiukajtis 361*5b2ba9d3SPiotr Jasiukajtis fmuld %f32,%f14,%f32 362*5b2ba9d3SPiotr Jasiukajtis fsubd %f10,%f16,%f14 363*5b2ba9d3SPiotr Jasiukajtis sub %l2,%o4,%o7 364*5b2ba9d3SPiotr Jasiukajtis 365*5b2ba9d3SPiotr Jasiukajtis faddd %f12,%f18,%f18 366*5b2ba9d3SPiotr Jasiukajtis andcc %g5,%o7,%g0 367*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,.big2 368*5b2ba9d3SPiotr Jasiukajtis! delay slot 369*5b2ba9d3SPiotr Jasiukajtis nop 370*5b2ba9d3SPiotr Jasiukajtis 371*5b2ba9d3SPiotr Jasiukajtis fxor %f36,%f0,%f36 372*5b2ba9d3SPiotr Jasiukajtis cmp %o0,%o5 373*5b2ba9d3SPiotr Jasiukajtis bl,pn %icc,.small2 374*5b2ba9d3SPiotr Jasiukajtis! delay slot 375*5b2ba9d3SPiotr Jasiukajtis nop 376*5b2ba9d3SPiotr Jasiukajtis 377*5b2ba9d3SPiotr Jasiukajtis.cont3: 378*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f8 379*5b2ba9d3SPiotr Jasiukajtis add %l2,%o1,%l2 380*5b2ba9d3SPiotr Jasiukajtis 381*5b2ba9d3SPiotr Jasiukajtis fsubd %f14,%f32,%f14 382*5b2ba9d3SPiotr Jasiukajtis srl %l2,10,%l2 383*5b2ba9d3SPiotr Jasiukajtis 384*5b2ba9d3SPiotr Jasiukajtis fxor %f36,pio2_lo,%f30 ! al 385*5b2ba9d3SPiotr Jasiukajtis andn %l2,0x1f,%l2 386*5b2ba9d3SPiotr Jasiukajtis 387*5b2ba9d3SPiotr Jasiukajtis fxor %f36,pio2,%f0 ! ah 388*5b2ba9d3SPiotr Jasiukajtis cmp %l2,%o2 389*5b2ba9d3SPiotr Jasiukajtis movg %icc,%o2,%l2 390*5b2ba9d3SPiotr Jasiukajtis 391*5b2ba9d3SPiotr Jasiukajtis fxor %f42,%f36,%f42 ! sy 392*5b2ba9d3SPiotr Jasiukajtis 393*5b2ba9d3SPiotr Jasiukajtis faddd %f8,%f30,%f8 394*5b2ba9d3SPiotr Jasiukajtis ldd [%l0+0x8],%f30 395*5b2ba9d3SPiotr Jasiukajtis add %l2,%g1,%l2 396*5b2ba9d3SPiotr Jasiukajtis 397*5b2ba9d3SPiotr Jasiukajtis fdivd %f14,%f18,%f14 398*5b2ba9d3SPiotr Jasiukajtis fzero %f10 399*5b2ba9d3SPiotr Jasiukajtis 400*5b2ba9d3SPiotr Jasiukajtis ldd [%l2+0x10],%f24 401*5b2ba9d3SPiotr Jasiukajtis fand %f22,mask,%f26 402*5b2ba9d3SPiotr Jasiukajtis 403*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc1,signbit,%f10 404*5b2ba9d3SPiotr Jasiukajtis 405*5b2ba9d3SPiotr Jasiukajtis fmuld %f4,%f4,%f36 406*5b2ba9d3SPiotr Jasiukajtis faddd %f8,%f30,%f8 407*5b2ba9d3SPiotr Jasiukajtis 408*5b2ba9d3SPiotr Jasiukajtis fsubd %f22,%f26,%f34 409*5b2ba9d3SPiotr Jasiukajtis fmuld %f26,%f24,%f26 410*5b2ba9d3SPiotr Jasiukajtis 411*5b2ba9d3SPiotr Jasiukajtis fmuld %f20,%f24,%f28 412*5b2ba9d3SPiotr Jasiukajtis fxor %f38,%f10,%f38 413*5b2ba9d3SPiotr Jasiukajtis 414*5b2ba9d3SPiotr Jasiukajtis fmuld %f4,p3,%f6 415*5b2ba9d3SPiotr Jasiukajtis fnegd pio2_lo,%f18 416*5b2ba9d3SPiotr Jasiukajtis 417*5b2ba9d3SPiotr Jasiukajtis fmuld %f36,p2,%f2 418*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc1,signbit,%f18 419*5b2ba9d3SPiotr Jasiukajtis 420*5b2ba9d3SPiotr Jasiukajtis fmuld %f36,%f4,%f36 421*5b2ba9d3SPiotr Jasiukajtis fxor %f38,pio2,%f10 422*5b2ba9d3SPiotr Jasiukajtis 423*5b2ba9d3SPiotr Jasiukajtis fmuld %f34,%f24,%f34 424*5b2ba9d3SPiotr Jasiukajtis fsubd %f20,%f26,%f24 425*5b2ba9d3SPiotr Jasiukajtis 426*5b2ba9d3SPiotr Jasiukajtis faddd %f22,%f28,%f28 427*5b2ba9d3SPiotr Jasiukajtis 428*5b2ba9d3SPiotr Jasiukajtis faddd %f2,p1,%f2 429*5b2ba9d3SPiotr Jasiukajtis 430*5b2ba9d3SPiotr Jasiukajtis fmuld %f36,p4,%f30 431*5b2ba9d3SPiotr Jasiukajtis fxor %f38,pio2_lo,%f32 432*5b2ba9d3SPiotr Jasiukajtis 433*5b2ba9d3SPiotr Jasiukajtis fsubd %f24,%f34,%f24 434*5b2ba9d3SPiotr Jasiukajtis 435*5b2ba9d3SPiotr Jasiukajtis fxor %f44,%f38,%f44 436*5b2ba9d3SPiotr Jasiukajtis 437*5b2ba9d3SPiotr Jasiukajtis fmuld %f36,%f2,%f2 438*5b2ba9d3SPiotr Jasiukajtis faddd %f18,%f32,%f18 439*5b2ba9d3SPiotr Jasiukajtis ldd [%l1+0x8],%f32 440*5b2ba9d3SPiotr Jasiukajtis 441*5b2ba9d3SPiotr Jasiukajtis fmuld %f36,%f36,%f36 442*5b2ba9d3SPiotr Jasiukajtis faddd %f6,%f30,%f30 443*5b2ba9d3SPiotr Jasiukajtis 444*5b2ba9d3SPiotr Jasiukajtis fdivd %f24,%f28,%f24 445*5b2ba9d3SPiotr Jasiukajtis fzero %f20 446*5b2ba9d3SPiotr Jasiukajtis 447*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc2,signbit,%f20 448*5b2ba9d3SPiotr Jasiukajtis 449*5b2ba9d3SPiotr Jasiukajtis faddd %f2,%f8,%f2 450*5b2ba9d3SPiotr Jasiukajtis 451*5b2ba9d3SPiotr Jasiukajtis fmuld %f14,%f14,%f38 452*5b2ba9d3SPiotr Jasiukajtis faddd %f18,%f32,%f18 453*5b2ba9d3SPiotr Jasiukajtis 454*5b2ba9d3SPiotr Jasiukajtis fmuld %f36,%f30,%f36 455*5b2ba9d3SPiotr Jasiukajtis fxor %f40,%f20,%f40 456*5b2ba9d3SPiotr Jasiukajtis 457*5b2ba9d3SPiotr Jasiukajtis fnegd pio2,%f6 ! ah 458*5b2ba9d3SPiotr Jasiukajtis fmuld %f14,p3,%f16 459*5b2ba9d3SPiotr Jasiukajtis 460*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f6 461*5b2ba9d3SPiotr Jasiukajtis 462*5b2ba9d3SPiotr Jasiukajtis fmuld %f38,p2,%f12 463*5b2ba9d3SPiotr Jasiukajtis fnegd pio2_lo,%f28 464*5b2ba9d3SPiotr Jasiukajtis 465*5b2ba9d3SPiotr Jasiukajtis faddd %f2,%f36,%f2 466*5b2ba9d3SPiotr Jasiukajtis fmuld %f38,%f14,%f38 467*5b2ba9d3SPiotr Jasiukajtis 468*5b2ba9d3SPiotr Jasiukajtis faddd %f6,%f0,%f6 469*5b2ba9d3SPiotr Jasiukajtis ldd [%l0],%f0 470*5b2ba9d3SPiotr Jasiukajtis 471*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc2,signbit,%f28 472*5b2ba9d3SPiotr Jasiukajtis 473*5b2ba9d3SPiotr Jasiukajtis faddd %f12,p1,%f12 474*5b2ba9d3SPiotr Jasiukajtis 475*5b2ba9d3SPiotr Jasiukajtis fmuld %f38,p4,%f32 476*5b2ba9d3SPiotr Jasiukajtis fxor %f40,pio2_lo,%f34 477*5b2ba9d3SPiotr Jasiukajtis 478*5b2ba9d3SPiotr Jasiukajtis fxor %f40,pio2,%f20 479*5b2ba9d3SPiotr Jasiukajtis 480*5b2ba9d3SPiotr Jasiukajtis faddd %f2,%f4,%f2 481*5b2ba9d3SPiotr Jasiukajtis 482*5b2ba9d3SPiotr Jasiukajtis fmuld %f38,%f12,%f12 483*5b2ba9d3SPiotr Jasiukajtis fxor %f46,%f40,%f46 484*5b2ba9d3SPiotr Jasiukajtis 485*5b2ba9d3SPiotr Jasiukajtis fmuld %f38,%f38,%f38 486*5b2ba9d3SPiotr Jasiukajtis faddd %f16,%f32,%f32 487*5b2ba9d3SPiotr Jasiukajtis 488*5b2ba9d3SPiotr Jasiukajtis faddd %f28,%f34,%f28 489*5b2ba9d3SPiotr Jasiukajtis ldd [%l2+0x8],%f34 490*5b2ba9d3SPiotr Jasiukajtis 491*5b2ba9d3SPiotr Jasiukajtis faddd %f6,%f0,%f6 492*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%f0 ! preload next argument 493*5b2ba9d3SPiotr Jasiukajtis 494*5b2ba9d3SPiotr Jasiukajtis faddd %f12,%f18,%f12 495*5b2ba9d3SPiotr Jasiukajtis lda [%i1+4]%asi,%f1 496*5b2ba9d3SPiotr Jasiukajtis 497*5b2ba9d3SPiotr Jasiukajtis fmuld %f24,%f24,%f40 498*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%f8 499*5b2ba9d3SPiotr Jasiukajtis 500*5b2ba9d3SPiotr Jasiukajtis fmuld %f38,%f32,%f38 501*5b2ba9d3SPiotr Jasiukajtis faddd %f28,%f34,%f28 502*5b2ba9d3SPiotr Jasiukajtis lda [%i3+4]%asi,%f9 503*5b2ba9d3SPiotr Jasiukajtis 504*5b2ba9d3SPiotr Jasiukajtis fnegd pio2,%f16 505*5b2ba9d3SPiotr Jasiukajtis fmuld %f24,p3,%f26 506*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%o0 507*5b2ba9d3SPiotr Jasiukajtis 508*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc1,signbit,%f16 509*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 510*5b2ba9d3SPiotr Jasiukajtis 511*5b2ba9d3SPiotr Jasiukajtis fmuld %f40,p2,%f22 512*5b2ba9d3SPiotr Jasiukajtis 513*5b2ba9d3SPiotr Jasiukajtis faddd %f12,%f38,%f12 514*5b2ba9d3SPiotr Jasiukajtis fmuld %f40,%f24,%f40 515*5b2ba9d3SPiotr Jasiukajtis 516*5b2ba9d3SPiotr Jasiukajtis faddd %f2,%f6,%f6 517*5b2ba9d3SPiotr Jasiukajtis 518*5b2ba9d3SPiotr Jasiukajtis faddd %f16,%f10,%f16 519*5b2ba9d3SPiotr Jasiukajtis ldd [%l1],%f10 520*5b2ba9d3SPiotr Jasiukajtis 521*5b2ba9d3SPiotr Jasiukajtis faddd %f22,p1,%f22 522*5b2ba9d3SPiotr Jasiukajtis 523*5b2ba9d3SPiotr Jasiukajtis faddd %f12,%f14,%f12 524*5b2ba9d3SPiotr Jasiukajtis fmuld %f40,p4,%f34 525*5b2ba9d3SPiotr Jasiukajtis 526*5b2ba9d3SPiotr Jasiukajtis fxor %f6,%f42,%f6 527*5b2ba9d3SPiotr Jasiukajtis st %f6,[%l4] 528*5b2ba9d3SPiotr Jasiukajtis 529*5b2ba9d3SPiotr Jasiukajtis faddd %f16,%f10,%f16 530*5b2ba9d3SPiotr Jasiukajtis st %f7,[%l4+4] 531*5b2ba9d3SPiotr Jasiukajtis 532*5b2ba9d3SPiotr Jasiukajtis fmuld %f40,%f22,%f22 533*5b2ba9d3SPiotr Jasiukajtis 534*5b2ba9d3SPiotr Jasiukajtis fmuld %f40,%f40,%f40 535*5b2ba9d3SPiotr Jasiukajtis faddd %f26,%f34,%f34 536*5b2ba9d3SPiotr Jasiukajtis 537*5b2ba9d3SPiotr Jasiukajtis fnegd pio2,%f26 538*5b2ba9d3SPiotr Jasiukajtis 539*5b2ba9d3SPiotr Jasiukajtis faddd %f12,%f16,%f16 540*5b2ba9d3SPiotr Jasiukajtis 541*5b2ba9d3SPiotr Jasiukajtis faddd %f22,%f28,%f22 542*5b2ba9d3SPiotr Jasiukajtis 543*5b2ba9d3SPiotr Jasiukajtis fmuld %f40,%f34,%f40 544*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc2,signbit,%f26 545*5b2ba9d3SPiotr Jasiukajtis 546*5b2ba9d3SPiotr Jasiukajtis! - 547*5b2ba9d3SPiotr Jasiukajtis 548*5b2ba9d3SPiotr Jasiukajtis fxor %f16,%f44,%f16 549*5b2ba9d3SPiotr Jasiukajtis st %f16,[%l5] 550*5b2ba9d3SPiotr Jasiukajtis 551*5b2ba9d3SPiotr Jasiukajtis faddd %f26,%f20,%f26 552*5b2ba9d3SPiotr Jasiukajtis st %f17,[%l5+4] 553*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 554*5b2ba9d3SPiotr Jasiukajtis 555*5b2ba9d3SPiotr Jasiukajtis faddd %f22,%f40,%f22 556*5b2ba9d3SPiotr Jasiukajtis bg,pt %icc,.loop 557*5b2ba9d3SPiotr Jasiukajtis! delay slot 558*5b2ba9d3SPiotr Jasiukajtis ldd [%l2],%f20 559*5b2ba9d3SPiotr Jasiukajtis 560*5b2ba9d3SPiotr Jasiukajtis 561*5b2ba9d3SPiotr Jasiukajtis faddd %f26,%f20,%f26 562*5b2ba9d3SPiotr Jasiukajtis faddd %f22,%f24,%f22 563*5b2ba9d3SPiotr Jasiukajtis faddd %f22,%f26,%f26 564*5b2ba9d3SPiotr Jasiukajtis.done_from_special0: 565*5b2ba9d3SPiotr Jasiukajtis fxor %f26,%f46,%f26 566*5b2ba9d3SPiotr Jasiukajtis st %f26,[%l6] 567*5b2ba9d3SPiotr Jasiukajtis st %f27,[%l6+4] 568*5b2ba9d3SPiotr Jasiukajtis ret 569*5b2ba9d3SPiotr Jasiukajtis restore 570*5b2ba9d3SPiotr Jasiukajtis 571*5b2ba9d3SPiotr Jasiukajtis 572*5b2ba9d3SPiotr Jasiukajtis 573*5b2ba9d3SPiotr Jasiukajtis .align 16 574*5b2ba9d3SPiotr Jasiukajtis.last1: 575*5b2ba9d3SPiotr Jasiukajtis fmovd pio2,%f10 ! set up dummy arguments 576*5b2ba9d3SPiotr Jasiukajtis fmovd pio2,%f18 577*5b2ba9d3SPiotr Jasiukajtis fabsd %f10,%f14 578*5b2ba9d3SPiotr Jasiukajtis fabsd %f18,%f12 579*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x3ff921fb),%o0 580*5b2ba9d3SPiotr Jasiukajtis or %o0,%lo(0x3ff921fb),%o0 581*5b2ba9d3SPiotr Jasiukajtis mov %o0,%l3 582*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont1 583*5b2ba9d3SPiotr Jasiukajtis! delay slot 584*5b2ba9d3SPiotr Jasiukajtis add %fp,junk,%i5 585*5b2ba9d3SPiotr Jasiukajtis 586*5b2ba9d3SPiotr Jasiukajtis 587*5b2ba9d3SPiotr Jasiukajtis 588*5b2ba9d3SPiotr Jasiukajtis .align 16 589*5b2ba9d3SPiotr Jasiukajtis.last2: 590*5b2ba9d3SPiotr Jasiukajtis fmovd pio2,%f20 591*5b2ba9d3SPiotr Jasiukajtis fmovd pio2,%f28 592*5b2ba9d3SPiotr Jasiukajtis fabsd %f20,%f24 593*5b2ba9d3SPiotr Jasiukajtis fabsd %f28,%f22 594*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x3ff921fb),%o0 595*5b2ba9d3SPiotr Jasiukajtis or %o0,%lo(0x3ff921fb),%o0 596*5b2ba9d3SPiotr Jasiukajtis mov %o0,%l3 597*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont2 598*5b2ba9d3SPiotr Jasiukajtis! delay slot 599*5b2ba9d3SPiotr Jasiukajtis add %fp,junk,%l6 600*5b2ba9d3SPiotr Jasiukajtis 601*5b2ba9d3SPiotr Jasiukajtis 602*5b2ba9d3SPiotr Jasiukajtis 603*5b2ba9d3SPiotr Jasiukajtis .align 16 604*5b2ba9d3SPiotr Jasiukajtis.nan0: 605*5b2ba9d3SPiotr Jasiukajtis faddd %f22,%f26,%f26 606*5b2ba9d3SPiotr Jasiukajtis.nan0_from_special0: 607*5b2ba9d3SPiotr Jasiukajtis fabsd %f10,%f14 608*5b2ba9d3SPiotr Jasiukajtis lda [%i3+4]%asi,%f19 609*5b2ba9d3SPiotr Jasiukajtis fabsd %f18,%f12 610*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%o0 611*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 612*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.special0 613*5b2ba9d3SPiotr Jasiukajtis! delay slot 614*5b2ba9d3SPiotr Jasiukajtis fmuld %f0,%f2,%f6 615*5b2ba9d3SPiotr Jasiukajtis 616*5b2ba9d3SPiotr Jasiukajtis 617*5b2ba9d3SPiotr Jasiukajtis .align 16 618*5b2ba9d3SPiotr Jasiukajtis.big0: 619*5b2ba9d3SPiotr Jasiukajtis fabsd %f18,%f12 620*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%o0 621*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 622*5b2ba9d3SPiotr Jasiukajtis cmp %g5,%o5 623*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,.return_ah0 ! if hx >= 0x7ff00000 624*5b2ba9d3SPiotr Jasiukajtis! delay slot 625*5b2ba9d3SPiotr Jasiukajtis nop 626*5b2ba9d3SPiotr Jasiukajtis cmp %l0,%o4 627*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,1f ! if hx - hy >= 0x03600000 628*5b2ba9d3SPiotr Jasiukajtis! delay slot 629*5b2ba9d3SPiotr Jasiukajtis nop 630*5b2ba9d3SPiotr Jasiukajtis ldd [%fp+twom3],%f6 631*5b2ba9d3SPiotr Jasiukajtis fmuld %f0,%f6,%f0 632*5b2ba9d3SPiotr Jasiukajtis fmuld %f2,%f6,%f2 633*5b2ba9d3SPiotr Jasiukajtis add %l0,%o1,%l0 634*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 635*5b2ba9d3SPiotr Jasiukajtis ble,pn %icc,.last1 636*5b2ba9d3SPiotr Jasiukajtis! delay slot 637*5b2ba9d3SPiotr Jasiukajtis nop 638*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont1 639*5b2ba9d3SPiotr Jasiukajtis! delay slot 640*5b2ba9d3SPiotr Jasiukajtis nop 641*5b2ba9d3SPiotr Jasiukajtis1: 642*5b2ba9d3SPiotr Jasiukajtis fbg,pn %fcc0,.return_ah0 643*5b2ba9d3SPiotr Jasiukajtis! delay slot 644*5b2ba9d3SPiotr Jasiukajtis nop 645*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc3,%f8,signbit 646*5b2ba9d3SPiotr Jasiukajtis fbl,pn %fcc3,.return_ah0 647*5b2ba9d3SPiotr Jasiukajtis! delay slot 648*5b2ba9d3SPiotr Jasiukajtis nop 649*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.special0 650*5b2ba9d3SPiotr Jasiukajtis! delay slot 651*5b2ba9d3SPiotr Jasiukajtis fdivd %f0,%f2,%f6 652*5b2ba9d3SPiotr Jasiukajtis 653*5b2ba9d3SPiotr Jasiukajtis 654*5b2ba9d3SPiotr Jasiukajtis .align 16 655*5b2ba9d3SPiotr Jasiukajtis.small0: 656*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 657*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc3,%f0,signbit 658*5b2ba9d3SPiotr Jasiukajtis fbe,pt %fcc3,.return_ah0 659*5b2ba9d3SPiotr Jasiukajtis! delay slot 660*5b2ba9d3SPiotr Jasiukajtis nop 661*5b2ba9d3SPiotr Jasiukajtis ldd [%fp+two110],%f6 662*5b2ba9d3SPiotr Jasiukajtis fmuld %f0,%f6,%f0 663*5b2ba9d3SPiotr Jasiukajtis fmuld %f2,%f6,%f2 664*5b2ba9d3SPiotr Jasiukajtis st %f0,[%fp+yscl] 665*5b2ba9d3SPiotr Jasiukajtis ld [%fp+yscl],%o7 666*5b2ba9d3SPiotr Jasiukajtis st %f2,[%fp+xscl] 667*5b2ba9d3SPiotr Jasiukajtis ld [%fp+xscl],%l0 668*5b2ba9d3SPiotr Jasiukajtis sub %l0,%o7,%l0 669*5b2ba9d3SPiotr Jasiukajtis add %l0,%o1,%l0 670*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 671*5b2ba9d3SPiotr Jasiukajtis ble,pn %icc,.last1 672*5b2ba9d3SPiotr Jasiukajtis! delay slot 673*5b2ba9d3SPiotr Jasiukajtis nop 674*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont1 675*5b2ba9d3SPiotr Jasiukajtis! delay slot 676*5b2ba9d3SPiotr Jasiukajtis nop 677*5b2ba9d3SPiotr Jasiukajtis 678*5b2ba9d3SPiotr Jasiukajtis 679*5b2ba9d3SPiotr Jasiukajtis .align 16 680*5b2ba9d3SPiotr Jasiukajtis.return_ah0: 681*5b2ba9d3SPiotr Jasiukajtis fzero %f0 682*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f0 683*5b2ba9d3SPiotr Jasiukajtis fxor %f36,%f0,%f36 684*5b2ba9d3SPiotr Jasiukajtis fxor %f36,pio2,%f0 685*5b2ba9d3SPiotr Jasiukajtis fxor %f42,%f36,%f42 686*5b2ba9d3SPiotr Jasiukajtis fnegd pio2,%f6 687*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f6 688*5b2ba9d3SPiotr Jasiukajtis faddd %f6,%f0,%f6 689*5b2ba9d3SPiotr Jasiukajtis sub %g5,%l0,%o7 690*5b2ba9d3SPiotr Jasiukajtis cmp %o7,%o5 691*5b2ba9d3SPiotr Jasiukajtis bl,pt %icc,1f ! if hy < 0x7ff00000 692*5b2ba9d3SPiotr Jasiukajtis! delay slot 693*5b2ba9d3SPiotr Jasiukajtis nop 694*5b2ba9d3SPiotr Jasiukajtis ldd [%fp+pio4],%f0 695*5b2ba9d3SPiotr Jasiukajtis faddd %f6,%f0,%f6 696*5b2ba9d3SPiotr Jasiukajtis1: 697*5b2ba9d3SPiotr Jasiukajtis fdtoi %f6,%f4 698*5b2ba9d3SPiotr Jasiukajtis.special0: 699*5b2ba9d3SPiotr Jasiukajtis fxor %f6,%f42,%f6 700*5b2ba9d3SPiotr Jasiukajtis st %f6,[%l4] 701*5b2ba9d3SPiotr Jasiukajtis st %f7,[%l4+4] 702*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 703*5b2ba9d3SPiotr Jasiukajtis ble,pn %icc,.done_from_special0 704*5b2ba9d3SPiotr Jasiukajtis! delay slot 705*5b2ba9d3SPiotr Jasiukajtis nop 706*5b2ba9d3SPiotr Jasiukajtis fmovd %f10,%f0 707*5b2ba9d3SPiotr Jasiukajtis fmovd %f18,%f8 708*5b2ba9d3SPiotr Jasiukajtis fmovd %f14,%f4 709*5b2ba9d3SPiotr Jasiukajtis fmovd %f12,%f2 710*5b2ba9d3SPiotr Jasiukajtis mov %i5,%l4 711*5b2ba9d3SPiotr Jasiukajtis add %i1,%i2,%i1 712*5b2ba9d3SPiotr Jasiukajtis add %i3,%i4,%i3 713*5b2ba9d3SPiotr Jasiukajtis add %i5,%l7,%i5 714*5b2ba9d3SPiotr Jasiukajtis fand %f0,signbit,%f42 715*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 716*5b2ba9d3SPiotr Jasiukajtis fand %f8,signbit,%f36 717*5b2ba9d3SPiotr Jasiukajtis andn %o0,%g5,%o0 718*5b2ba9d3SPiotr Jasiukajtis andn %l3,%g5,%l3 719*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc0,%f4,%f2 720*5b2ba9d3SPiotr Jasiukajtis fmovd %f4,%f0 721*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc0,%f2,%f0 722*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc0,%f4,%f2 723*5b2ba9d3SPiotr Jasiukajtis mov %o0,%o7 724*5b2ba9d3SPiotr Jasiukajtis movg %fcc0,%l3,%o0 725*5b2ba9d3SPiotr Jasiukajtis movg %fcc0,%o7,%l3 726*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%f10 727*5b2ba9d3SPiotr Jasiukajtis lda [%i1+4]%asi,%f11 728*5b2ba9d3SPiotr Jasiukajtis fbu,pn %fcc0,.nan0_from_special0 729*5b2ba9d3SPiotr Jasiukajtis! delay slot 730*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%f18 731*5b2ba9d3SPiotr Jasiukajtis fabsd %f10,%f14 732*5b2ba9d3SPiotr Jasiukajtis lda [%i3+4]%asi,%f19 733*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o0,%l0 734*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o3,%g5 735*5b2ba9d3SPiotr Jasiukajtis sub %l0,%o4,%o7 736*5b2ba9d3SPiotr Jasiukajtis andcc %g5,%o7,%g0 737*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,.big0 738*5b2ba9d3SPiotr Jasiukajtis! delay slot 739*5b2ba9d3SPiotr Jasiukajtis nop 740*5b2ba9d3SPiotr Jasiukajtis fabsd %f18,%f12 741*5b2ba9d3SPiotr Jasiukajtis cmp %o0,%o5 742*5b2ba9d3SPiotr Jasiukajtis bl,pn %icc,.small0 743*5b2ba9d3SPiotr Jasiukajtis! delay slot 744*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%o0 745*5b2ba9d3SPiotr Jasiukajtis add %l0,%o1,%l0 746*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 747*5b2ba9d3SPiotr Jasiukajtis ble,pn %icc,.last1 748*5b2ba9d3SPiotr Jasiukajtis! delay slot 749*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 750*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont1 751*5b2ba9d3SPiotr Jasiukajtis! delay slot 752*5b2ba9d3SPiotr Jasiukajtis nop 753*5b2ba9d3SPiotr Jasiukajtis 754*5b2ba9d3SPiotr Jasiukajtis 755*5b2ba9d3SPiotr Jasiukajtis 756*5b2ba9d3SPiotr Jasiukajtis .align 16 757*5b2ba9d3SPiotr Jasiukajtis.nan1: 758*5b2ba9d3SPiotr Jasiukajtis fmuld %f30,%f4,%f30 759*5b2ba9d3SPiotr Jasiukajtis fsubd %f0,%f6,%f4 760*5b2ba9d3SPiotr Jasiukajtis faddd %f2,%f8,%f8 761*5b2ba9d3SPiotr Jasiukajtis fsubd %f4,%f30,%f4 762*5b2ba9d3SPiotr Jasiukajtis.nan1_from_special1: 763*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%f28 764*5b2ba9d3SPiotr Jasiukajtis lda [%i3+4]%asi,%f29 765*5b2ba9d3SPiotr Jasiukajtis fabsd %f20,%f24 766*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%o0 767*5b2ba9d3SPiotr Jasiukajtis fabsd %f28,%f22 768*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 769*5b2ba9d3SPiotr Jasiukajtis mov %i5,%l6 770*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.special1 771*5b2ba9d3SPiotr Jasiukajtis! delay slot 772*5b2ba9d3SPiotr Jasiukajtis fmuld %f10,%f12,%f16 773*5b2ba9d3SPiotr Jasiukajtis 774*5b2ba9d3SPiotr Jasiukajtis 775*5b2ba9d3SPiotr Jasiukajtis .align 16 776*5b2ba9d3SPiotr Jasiukajtis.big1: 777*5b2ba9d3SPiotr Jasiukajtis faddd %f2,%f8,%f8 778*5b2ba9d3SPiotr Jasiukajtis fsubd %f4,%f30,%f4 779*5b2ba9d3SPiotr Jasiukajtis.big1_from_special1: 780*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%o0 781*5b2ba9d3SPiotr Jasiukajtis fabsd %f28,%f22 782*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 783*5b2ba9d3SPiotr Jasiukajtis mov %i5,%l6 784*5b2ba9d3SPiotr Jasiukajtis cmp %g5,%o5 785*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,.return_ah1 786*5b2ba9d3SPiotr Jasiukajtis! delay slot 787*5b2ba9d3SPiotr Jasiukajtis nop 788*5b2ba9d3SPiotr Jasiukajtis cmp %l1,%o4 789*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,1f 790*5b2ba9d3SPiotr Jasiukajtis! delay slot 791*5b2ba9d3SPiotr Jasiukajtis nop 792*5b2ba9d3SPiotr Jasiukajtis ldd [%fp+twom3],%f16 793*5b2ba9d3SPiotr Jasiukajtis fmuld %f10,%f16,%f10 794*5b2ba9d3SPiotr Jasiukajtis fmuld %f12,%f16,%f12 795*5b2ba9d3SPiotr Jasiukajtis add %l1,%o1,%l1 796*5b2ba9d3SPiotr Jasiukajtis srl %l1,10,%l1 797*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 798*5b2ba9d3SPiotr Jasiukajtis ble,pn %icc,.last2 799*5b2ba9d3SPiotr Jasiukajtis! delay slot 800*5b2ba9d3SPiotr Jasiukajtis nop 801*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont2 802*5b2ba9d3SPiotr Jasiukajtis! delay slot 803*5b2ba9d3SPiotr Jasiukajtis nop 804*5b2ba9d3SPiotr Jasiukajtis1: 805*5b2ba9d3SPiotr Jasiukajtis fbg,pn %fcc1,.return_ah1 806*5b2ba9d3SPiotr Jasiukajtis! delay slot 807*5b2ba9d3SPiotr Jasiukajtis nop 808*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc3,%f18,signbit 809*5b2ba9d3SPiotr Jasiukajtis fbl,pn %fcc3,.return_ah1 810*5b2ba9d3SPiotr Jasiukajtis! delay slot 811*5b2ba9d3SPiotr Jasiukajtis nop 812*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.special1 813*5b2ba9d3SPiotr Jasiukajtis! delay slot 814*5b2ba9d3SPiotr Jasiukajtis fdivd %f10,%f12,%f16 815*5b2ba9d3SPiotr Jasiukajtis 816*5b2ba9d3SPiotr Jasiukajtis 817*5b2ba9d3SPiotr Jasiukajtis .align 16 818*5b2ba9d3SPiotr Jasiukajtis.small1: 819*5b2ba9d3SPiotr Jasiukajtis fsubd %f4,%f30,%f4 820*5b2ba9d3SPiotr Jasiukajtis.small1_from_special1: 821*5b2ba9d3SPiotr Jasiukajtis fabsd %f28,%f22 822*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 823*5b2ba9d3SPiotr Jasiukajtis mov %i5,%l6 824*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc3,%f10,signbit 825*5b2ba9d3SPiotr Jasiukajtis fbe,pt %fcc3,.return_ah1 826*5b2ba9d3SPiotr Jasiukajtis! delay slot 827*5b2ba9d3SPiotr Jasiukajtis nop 828*5b2ba9d3SPiotr Jasiukajtis ldd [%fp+two110],%f16 829*5b2ba9d3SPiotr Jasiukajtis fmuld %f10,%f16,%f10 830*5b2ba9d3SPiotr Jasiukajtis fmuld %f12,%f16,%f12 831*5b2ba9d3SPiotr Jasiukajtis st %f10,[%fp+yscl] 832*5b2ba9d3SPiotr Jasiukajtis ld [%fp+yscl],%o7 833*5b2ba9d3SPiotr Jasiukajtis st %f12,[%fp+xscl] 834*5b2ba9d3SPiotr Jasiukajtis ld [%fp+xscl],%l1 835*5b2ba9d3SPiotr Jasiukajtis sub %l1,%o7,%l1 836*5b2ba9d3SPiotr Jasiukajtis add %l1,%o1,%l1 837*5b2ba9d3SPiotr Jasiukajtis srl %l1,10,%l1 838*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 839*5b2ba9d3SPiotr Jasiukajtis ble,pn %icc,.last2 840*5b2ba9d3SPiotr Jasiukajtis! delay slot 841*5b2ba9d3SPiotr Jasiukajtis nop 842*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont2 843*5b2ba9d3SPiotr Jasiukajtis! delay slot 844*5b2ba9d3SPiotr Jasiukajtis nop 845*5b2ba9d3SPiotr Jasiukajtis 846*5b2ba9d3SPiotr Jasiukajtis 847*5b2ba9d3SPiotr Jasiukajtis .align 16 848*5b2ba9d3SPiotr Jasiukajtis.return_ah1: 849*5b2ba9d3SPiotr Jasiukajtis fzero %f10 850*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc1,signbit,%f10 851*5b2ba9d3SPiotr Jasiukajtis fxor %f38,%f10,%f38 852*5b2ba9d3SPiotr Jasiukajtis fxor %f38,pio2,%f10 853*5b2ba9d3SPiotr Jasiukajtis fxor %f44,%f38,%f44 854*5b2ba9d3SPiotr Jasiukajtis fnegd pio2,%f16 855*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc1,signbit,%f16 856*5b2ba9d3SPiotr Jasiukajtis faddd %f16,%f10,%f16 857*5b2ba9d3SPiotr Jasiukajtis sub %g5,%l1,%o7 858*5b2ba9d3SPiotr Jasiukajtis cmp %o7,%o5 859*5b2ba9d3SPiotr Jasiukajtis bl,pt %icc,1f 860*5b2ba9d3SPiotr Jasiukajtis! delay slot 861*5b2ba9d3SPiotr Jasiukajtis nop 862*5b2ba9d3SPiotr Jasiukajtis ldd [%fp+pio4],%f10 863*5b2ba9d3SPiotr Jasiukajtis faddd %f16,%f10,%f16 864*5b2ba9d3SPiotr Jasiukajtis1: 865*5b2ba9d3SPiotr Jasiukajtis fdtoi %f16,%f14 866*5b2ba9d3SPiotr Jasiukajtis.special1: 867*5b2ba9d3SPiotr Jasiukajtis fxor %f16,%f44,%f16 868*5b2ba9d3SPiotr Jasiukajtis st %f16,[%l5] 869*5b2ba9d3SPiotr Jasiukajtis st %f17,[%l5+4] 870*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 871*5b2ba9d3SPiotr Jasiukajtis bg,pn %icc,1f 872*5b2ba9d3SPiotr Jasiukajtis! delay slot 873*5b2ba9d3SPiotr Jasiukajtis nop 874*5b2ba9d3SPiotr Jasiukajtis fmovd pio2,%f20 ! set up dummy argument 875*5b2ba9d3SPiotr Jasiukajtis fmovd pio2,%f28 876*5b2ba9d3SPiotr Jasiukajtis fabsd %f20,%f24 877*5b2ba9d3SPiotr Jasiukajtis fabsd %f28,%f22 878*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x3ff921fb),%o0 879*5b2ba9d3SPiotr Jasiukajtis or %o0,%lo(0x3ff921fb),%o0 880*5b2ba9d3SPiotr Jasiukajtis mov %o0,%l3 881*5b2ba9d3SPiotr Jasiukajtis add %fp,junk,%i5 882*5b2ba9d3SPiotr Jasiukajtis1: 883*5b2ba9d3SPiotr Jasiukajtis fmovd %f20,%f10 884*5b2ba9d3SPiotr Jasiukajtis fmovd %f28,%f18 885*5b2ba9d3SPiotr Jasiukajtis fmovd %f24,%f14 886*5b2ba9d3SPiotr Jasiukajtis fmovd %f22,%f12 887*5b2ba9d3SPiotr Jasiukajtis mov %i5,%l5 888*5b2ba9d3SPiotr Jasiukajtis add %i1,%i2,%i1 889*5b2ba9d3SPiotr Jasiukajtis add %i3,%i4,%i3 890*5b2ba9d3SPiotr Jasiukajtis add %i5,%l7,%i5 891*5b2ba9d3SPiotr Jasiukajtis fand %f10,signbit,%f44 892*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 893*5b2ba9d3SPiotr Jasiukajtis fand %f18,signbit,%f38 894*5b2ba9d3SPiotr Jasiukajtis andn %o0,%g5,%o0 895*5b2ba9d3SPiotr Jasiukajtis andn %l3,%g5,%l3 896*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc1,%f14,%f12 897*5b2ba9d3SPiotr Jasiukajtis fmovd %f14,%f10 898*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc1,%f12,%f10 899*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc1,%f14,%f12 900*5b2ba9d3SPiotr Jasiukajtis mov %o0,%o7 901*5b2ba9d3SPiotr Jasiukajtis movg %fcc1,%l3,%o0 902*5b2ba9d3SPiotr Jasiukajtis movg %fcc1,%o7,%l3 903*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%f20 904*5b2ba9d3SPiotr Jasiukajtis lda [%i1+4]%asi,%f21 905*5b2ba9d3SPiotr Jasiukajtis fbu,pn %fcc1,.nan1_from_special1 906*5b2ba9d3SPiotr Jasiukajtis! delay slot 907*5b2ba9d3SPiotr Jasiukajtis nop 908*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%f28 909*5b2ba9d3SPiotr Jasiukajtis lda [%i3+4]%asi,%f29 910*5b2ba9d3SPiotr Jasiukajtis fabsd %f20,%f24 911*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o0,%l1 912*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o3,%g5 913*5b2ba9d3SPiotr Jasiukajtis sub %l1,%o4,%o7 914*5b2ba9d3SPiotr Jasiukajtis andcc %g5,%o7,%g0 915*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,.big1_from_special1 916*5b2ba9d3SPiotr Jasiukajtis! delay slot 917*5b2ba9d3SPiotr Jasiukajtis nop 918*5b2ba9d3SPiotr Jasiukajtis cmp %o0,%o5 919*5b2ba9d3SPiotr Jasiukajtis bl,pn %icc,.small1_from_special1 920*5b2ba9d3SPiotr Jasiukajtis! delay slot 921*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%o0 922*5b2ba9d3SPiotr Jasiukajtis fabsd %f28,%f22 923*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 924*5b2ba9d3SPiotr Jasiukajtis add %l1,%o1,%l1 925*5b2ba9d3SPiotr Jasiukajtis srl %l1,10,%l1 926*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 927*5b2ba9d3SPiotr Jasiukajtis ble,pn %icc,.last2 928*5b2ba9d3SPiotr Jasiukajtis! delay slot 929*5b2ba9d3SPiotr Jasiukajtis mov %i5,%l6 930*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont2 931*5b2ba9d3SPiotr Jasiukajtis! delay slot 932*5b2ba9d3SPiotr Jasiukajtis nop 933*5b2ba9d3SPiotr Jasiukajtis 934*5b2ba9d3SPiotr Jasiukajtis 935*5b2ba9d3SPiotr Jasiukajtis 936*5b2ba9d3SPiotr Jasiukajtis .align 16 937*5b2ba9d3SPiotr Jasiukajtis.nan2: 938*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f0 939*5b2ba9d3SPiotr Jasiukajtis fmuld %f32,%f14,%f32 940*5b2ba9d3SPiotr Jasiukajtis fsubd %f10,%f16,%f14 941*5b2ba9d3SPiotr Jasiukajtis faddd %f12,%f18,%f18 942*5b2ba9d3SPiotr Jasiukajtis fxor %f36,%f0,%f36 943*5b2ba9d3SPiotr Jasiukajtis.nan2_from_special2: 944*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.special2 945*5b2ba9d3SPiotr Jasiukajtis! delay slot 946*5b2ba9d3SPiotr Jasiukajtis fmuld %f20,%f22,%f26 947*5b2ba9d3SPiotr Jasiukajtis 948*5b2ba9d3SPiotr Jasiukajtis 949*5b2ba9d3SPiotr Jasiukajtis .align 16 950*5b2ba9d3SPiotr Jasiukajtis.big2: 951*5b2ba9d3SPiotr Jasiukajtis fxor %f36,%f0,%f36 952*5b2ba9d3SPiotr Jasiukajtis.big2_from_special2: 953*5b2ba9d3SPiotr Jasiukajtis cmp %g5,%o5 954*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,.return_ah2 955*5b2ba9d3SPiotr Jasiukajtis! delay slot 956*5b2ba9d3SPiotr Jasiukajtis nop 957*5b2ba9d3SPiotr Jasiukajtis cmp %l2,%o4 958*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,1f 959*5b2ba9d3SPiotr Jasiukajtis! delay slot 960*5b2ba9d3SPiotr Jasiukajtis nop 961*5b2ba9d3SPiotr Jasiukajtis ldd [%fp+twom3],%f26 962*5b2ba9d3SPiotr Jasiukajtis fmuld %f20,%f26,%f20 963*5b2ba9d3SPiotr Jasiukajtis fmuld %f22,%f26,%f22 964*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont3 965*5b2ba9d3SPiotr Jasiukajtis! delay slot 966*5b2ba9d3SPiotr Jasiukajtis nop 967*5b2ba9d3SPiotr Jasiukajtis1: 968*5b2ba9d3SPiotr Jasiukajtis fbg,pn %fcc2,.return_ah2 969*5b2ba9d3SPiotr Jasiukajtis! delay slot 970*5b2ba9d3SPiotr Jasiukajtis nop 971*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc3,%f28,signbit 972*5b2ba9d3SPiotr Jasiukajtis fbl,pn %fcc3,.return_ah2 973*5b2ba9d3SPiotr Jasiukajtis! delay slot 974*5b2ba9d3SPiotr Jasiukajtis nop 975*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.special2 976*5b2ba9d3SPiotr Jasiukajtis! delay slot 977*5b2ba9d3SPiotr Jasiukajtis fdivd %f20,%f22,%f26 978*5b2ba9d3SPiotr Jasiukajtis 979*5b2ba9d3SPiotr Jasiukajtis 980*5b2ba9d3SPiotr Jasiukajtis .align 16 981*5b2ba9d3SPiotr Jasiukajtis.small2: 982*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc3,%f20,signbit 983*5b2ba9d3SPiotr Jasiukajtis fbe,pt %fcc3,.return_ah2 984*5b2ba9d3SPiotr Jasiukajtis! delay slot 985*5b2ba9d3SPiotr Jasiukajtis nop 986*5b2ba9d3SPiotr Jasiukajtis ldd [%fp+two110],%f26 987*5b2ba9d3SPiotr Jasiukajtis fmuld %f20,%f26,%f20 988*5b2ba9d3SPiotr Jasiukajtis fmuld %f22,%f26,%f22 989*5b2ba9d3SPiotr Jasiukajtis st %f20,[%fp+yscl] 990*5b2ba9d3SPiotr Jasiukajtis ld [%fp+yscl],%o7 991*5b2ba9d3SPiotr Jasiukajtis st %f22,[%fp+xscl] 992*5b2ba9d3SPiotr Jasiukajtis ld [%fp+xscl],%l2 993*5b2ba9d3SPiotr Jasiukajtis sub %l2,%o7,%l2 994*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont3 995*5b2ba9d3SPiotr Jasiukajtis! delay slot 996*5b2ba9d3SPiotr Jasiukajtis nop 997*5b2ba9d3SPiotr Jasiukajtis 998*5b2ba9d3SPiotr Jasiukajtis 999*5b2ba9d3SPiotr Jasiukajtis .align 16 1000*5b2ba9d3SPiotr Jasiukajtis.return_ah2: 1001*5b2ba9d3SPiotr Jasiukajtis fzero %f20 1002*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc2,signbit,%f20 1003*5b2ba9d3SPiotr Jasiukajtis fxor %f40,%f20,%f40 1004*5b2ba9d3SPiotr Jasiukajtis fxor %f40,pio2,%f20 1005*5b2ba9d3SPiotr Jasiukajtis fxor %f46,%f40,%f46 1006*5b2ba9d3SPiotr Jasiukajtis fnegd pio2,%f26 1007*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc2,signbit,%f26 1008*5b2ba9d3SPiotr Jasiukajtis faddd %f26,%f20,%f26 1009*5b2ba9d3SPiotr Jasiukajtis sub %g5,%l2,%o7 1010*5b2ba9d3SPiotr Jasiukajtis cmp %o7,%o5 1011*5b2ba9d3SPiotr Jasiukajtis bl,pt %icc,1f 1012*5b2ba9d3SPiotr Jasiukajtis! delay slot 1013*5b2ba9d3SPiotr Jasiukajtis nop 1014*5b2ba9d3SPiotr Jasiukajtis ldd [%fp+pio4],%f20 1015*5b2ba9d3SPiotr Jasiukajtis faddd %f26,%f20,%f26 1016*5b2ba9d3SPiotr Jasiukajtis1: 1017*5b2ba9d3SPiotr Jasiukajtis fdtoi %f26,%f24 1018*5b2ba9d3SPiotr Jasiukajtis.special2: 1019*5b2ba9d3SPiotr Jasiukajtis fxor %f26,%f46,%f26 1020*5b2ba9d3SPiotr Jasiukajtis st %f26,[%l6] 1021*5b2ba9d3SPiotr Jasiukajtis st %f27,[%l6+4] 1022*5b2ba9d3SPiotr Jasiukajtis addcc %i0,-1,%i0 1023*5b2ba9d3SPiotr Jasiukajtis bg,pn %icc,1f 1024*5b2ba9d3SPiotr Jasiukajtis! delay slot 1025*5b2ba9d3SPiotr Jasiukajtis nop 1026*5b2ba9d3SPiotr Jasiukajtis fmovd pio2,%f20 ! set up dummy argument 1027*5b2ba9d3SPiotr Jasiukajtis fmovd pio2,%f22 1028*5b2ba9d3SPiotr Jasiukajtis fzero %f40 1029*5b2ba9d3SPiotr Jasiukajtis fzero %f46 1030*5b2ba9d3SPiotr Jasiukajtis mov 0,%l2 1031*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont3 1032*5b2ba9d3SPiotr Jasiukajtis! delay slot 1033*5b2ba9d3SPiotr Jasiukajtis add %fp,junk,%l6 1034*5b2ba9d3SPiotr Jasiukajtis1: 1035*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%f20 1036*5b2ba9d3SPiotr Jasiukajtis lda [%i1+4]%asi,%f21 1037*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%f28 1038*5b2ba9d3SPiotr Jasiukajtis lda [%i3+4]%asi,%f29 1039*5b2ba9d3SPiotr Jasiukajtis fabsd %f20,%f24 1040*5b2ba9d3SPiotr Jasiukajtis lda [%i1]%asi,%o0 1041*5b2ba9d3SPiotr Jasiukajtis fabsd %f28,%f22 1042*5b2ba9d3SPiotr Jasiukajtis lda [%i3]%asi,%l3 1043*5b2ba9d3SPiotr Jasiukajtis mov %i5,%l6 1044*5b2ba9d3SPiotr Jasiukajtis fand %f20,signbit,%f46 1045*5b2ba9d3SPiotr Jasiukajtis add %i1,%i2,%i1 1046*5b2ba9d3SPiotr Jasiukajtis fand %f28,signbit,%f40 1047*5b2ba9d3SPiotr Jasiukajtis fcmpd %fcc2,%f24,%f22 1048*5b2ba9d3SPiotr Jasiukajtis add %i3,%i4,%i3 1049*5b2ba9d3SPiotr Jasiukajtis add %i5,%l7,%i5 1050*5b2ba9d3SPiotr Jasiukajtis fmovd %f24,%f20 1051*5b2ba9d3SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 1052*5b2ba9d3SPiotr Jasiukajtis andn %o0,%g5,%o0 1053*5b2ba9d3SPiotr Jasiukajtis andn %l3,%g5,%l3 1054*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc2,%f22,%f20 1055*5b2ba9d3SPiotr Jasiukajtis fmovdg %fcc2,%f24,%f22 1056*5b2ba9d3SPiotr Jasiukajtis mov %o0,%o7 1057*5b2ba9d3SPiotr Jasiukajtis movg %fcc2,%l3,%o0 1058*5b2ba9d3SPiotr Jasiukajtis movg %fcc2,%o7,%l3 1059*5b2ba9d3SPiotr Jasiukajtis fbu,pn %fcc2,.nan2_from_special2 1060*5b2ba9d3SPiotr Jasiukajtis! delay slot 1061*5b2ba9d3SPiotr Jasiukajtis nop 1062*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o0,%l2 1063*5b2ba9d3SPiotr Jasiukajtis sub %l3,%o3,%g5 1064*5b2ba9d3SPiotr Jasiukajtis sub %l2,%o4,%o7 1065*5b2ba9d3SPiotr Jasiukajtis andcc %g5,%o7,%g0 1066*5b2ba9d3SPiotr Jasiukajtis bge,pn %icc,.big2_from_special2 1067*5b2ba9d3SPiotr Jasiukajtis! delay slot 1068*5b2ba9d3SPiotr Jasiukajtis nop 1069*5b2ba9d3SPiotr Jasiukajtis cmp %o0,%o5 1070*5b2ba9d3SPiotr Jasiukajtis bl,pn %icc,.small2 1071*5b2ba9d3SPiotr Jasiukajtis! delay slot 1072*5b2ba9d3SPiotr Jasiukajtis nop 1073*5b2ba9d3SPiotr Jasiukajtis ba,pt %icc,.cont3 1074*5b2ba9d3SPiotr Jasiukajtis! delay slot 1075*5b2ba9d3SPiotr Jasiukajtis nop 1076*5b2ba9d3SPiotr Jasiukajtis 1077*5b2ba9d3SPiotr Jasiukajtis SET_SIZE(__vatan2) 1078*5b2ba9d3SPiotr Jasiukajtis 1079