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 "__vatan2.S" 3025c28e83SPiotr Jasiukajtis 3125c28e83SPiotr Jasiukajtis#include "libm.h" 3225c28e83SPiotr Jasiukajtis 3325c28e83SPiotr Jasiukajtis RO_DATA 3425c28e83SPiotr Jasiukajtis .align 64 3525c28e83SPiotr Jasiukajtisconstants: 3625c28e83SPiotr Jasiukajtis .word 0x3ff921fb,0x54442d18 ! pio2 3725c28e83SPiotr Jasiukajtis .word 0x3c91a626,0x33145c07 ! pio2_lo 3825c28e83SPiotr Jasiukajtis .word 0xbfd55555,0x555554ee ! p1 3925c28e83SPiotr Jasiukajtis .word 0x3fc99999,0x997a1559 ! p2 4025c28e83SPiotr Jasiukajtis .word 0xbfc24923,0x158dfe02 ! p3 4125c28e83SPiotr Jasiukajtis .word 0x3fbc639d,0x0ed1347b ! p4 4225c28e83SPiotr Jasiukajtis .word 0xffffffff,0x00000000 ! mask 4325c28e83SPiotr Jasiukajtis .word 0x3fc00000,0x00000000 ! twom3 4425c28e83SPiotr Jasiukajtis .word 0x46d00000,0x00000000 ! two110 4525c28e83SPiotr Jasiukajtis .word 0x3fe921fb,0x54442d18 ! pio4 4625c28e83SPiotr Jasiukajtis 4725c28e83SPiotr Jasiukajtis! local storage indices 4825c28e83SPiotr Jasiukajtis 4925c28e83SPiotr Jasiukajtis#define xscl STACK_BIAS-0x8 5025c28e83SPiotr Jasiukajtis#define yscl STACK_BIAS-0x10 5125c28e83SPiotr Jasiukajtis#define twom3 STACK_BIAS-0x18 5225c28e83SPiotr Jasiukajtis#define two110 STACK_BIAS-0x20 5325c28e83SPiotr Jasiukajtis#define pio4 STACK_BIAS-0x28 5425c28e83SPiotr Jasiukajtis#define junk STACK_BIAS-0x30 5525c28e83SPiotr Jasiukajtis! sizeof temp storage - must be a multiple of 16 for V9 5625c28e83SPiotr Jasiukajtis#define tmps 0x30 5725c28e83SPiotr Jasiukajtis 5825c28e83SPiotr Jasiukajtis! register use 5925c28e83SPiotr Jasiukajtis 6025c28e83SPiotr Jasiukajtis! i0 n 6125c28e83SPiotr Jasiukajtis! i1 y 6225c28e83SPiotr Jasiukajtis! i2 stridey 6325c28e83SPiotr Jasiukajtis! i3 x 6425c28e83SPiotr Jasiukajtis! i4 stridex 6525c28e83SPiotr Jasiukajtis! i5 z 6625c28e83SPiotr Jasiukajtis 6725c28e83SPiotr Jasiukajtis! l0 k0 6825c28e83SPiotr Jasiukajtis! l1 k1 6925c28e83SPiotr Jasiukajtis! l2 k2 7025c28e83SPiotr Jasiukajtis! l3 hx 7125c28e83SPiotr Jasiukajtis! l4 pz0 7225c28e83SPiotr Jasiukajtis! l5 pz1 7325c28e83SPiotr Jasiukajtis! l6 pz2 7425c28e83SPiotr Jasiukajtis! l7 stridez 7525c28e83SPiotr Jasiukajtis 7625c28e83SPiotr Jasiukajtis! the following are 64-bit registers in both V8+ and V9 7725c28e83SPiotr Jasiukajtis 7825c28e83SPiotr Jasiukajtis! g1 __vlibm_TBL_atan2 79*55fea89dSDan Cross! g5 8025c28e83SPiotr Jasiukajtis 8125c28e83SPiotr Jasiukajtis! o0 hy 8225c28e83SPiotr Jasiukajtis! o1 0x00004000 8325c28e83SPiotr Jasiukajtis! o2 0x1420 8425c28e83SPiotr Jasiukajtis! o3 0x7fe00000 8525c28e83SPiotr Jasiukajtis! o4 0x03600000 8625c28e83SPiotr Jasiukajtis! o5 0x00100000 87*55fea89dSDan Cross! o7 8825c28e83SPiotr Jasiukajtis 8925c28e83SPiotr Jasiukajtis! f0 y0 9025c28e83SPiotr Jasiukajtis! f2 x0 9125c28e83SPiotr Jasiukajtis! f4 t0 9225c28e83SPiotr Jasiukajtis! f6 ah0 9325c28e83SPiotr Jasiukajtis! f8 al0 9425c28e83SPiotr Jasiukajtis! f10 y1 9525c28e83SPiotr Jasiukajtis! f12 x1 9625c28e83SPiotr Jasiukajtis! f14 t1 9725c28e83SPiotr Jasiukajtis! f16 ah1 9825c28e83SPiotr Jasiukajtis! f18 al1 9925c28e83SPiotr Jasiukajtis! f20 y2 10025c28e83SPiotr Jasiukajtis! f22 x2 10125c28e83SPiotr Jasiukajtis! f24 t2 10225c28e83SPiotr Jasiukajtis! f26 ah2 10325c28e83SPiotr Jasiukajtis! f28 al2 104*55fea89dSDan Cross! f30 105*55fea89dSDan Cross! f32 106*55fea89dSDan Cross! f34 10725c28e83SPiotr Jasiukajtis! f36 sx0 10825c28e83SPiotr Jasiukajtis! f38 sx1 10925c28e83SPiotr Jasiukajtis! f40 sx2 11025c28e83SPiotr Jasiukajtis! f42 sy0 11125c28e83SPiotr Jasiukajtis! f44 sy1 11225c28e83SPiotr Jasiukajtis! f46 sy2 11325c28e83SPiotr Jasiukajtis 11425c28e83SPiotr Jasiukajtis#define mask %f48 11525c28e83SPiotr Jasiukajtis#define signbit %f50 11625c28e83SPiotr Jasiukajtis#define pio2 %f52 11725c28e83SPiotr Jasiukajtis#define pio2_lo %f54 11825c28e83SPiotr Jasiukajtis#define p1 %f56 11925c28e83SPiotr Jasiukajtis#define p2 %f58 12025c28e83SPiotr Jasiukajtis#define p3 %f60 12125c28e83SPiotr Jasiukajtis#define p4 %f62 12225c28e83SPiotr Jasiukajtis 12325c28e83SPiotr Jasiukajtis ENTRY(__vatan2) 12425c28e83SPiotr Jasiukajtis save %sp,-SA(MINFRAME)-tmps,%sp 12525c28e83SPiotr Jasiukajtis PIC_SETUP(l7) 12625c28e83SPiotr Jasiukajtis PIC_SET(l7,constants,o0) 12725c28e83SPiotr Jasiukajtis PIC_SET(l7,__vlibm_TBL_atan2,o1) 12825c28e83SPiotr Jasiukajtis wr %g0,0x82,%asi ! set %asi for non-faulting loads 12925c28e83SPiotr Jasiukajtis mov %o1, %g1 13025c28e83SPiotr Jasiukajtis#ifdef __sparcv9 13125c28e83SPiotr Jasiukajtis ldx [%fp+STACK_BIAS+0xb0],%l7 13225c28e83SPiotr Jasiukajtis#else 13325c28e83SPiotr Jasiukajtis ld [%fp+0x5c],%l7 13425c28e83SPiotr Jasiukajtis#endif 13525c28e83SPiotr Jasiukajtis ldd [%o0+0x00],pio2 ! load/set up constants 13625c28e83SPiotr Jasiukajtis ldd [%o0+0x08],pio2_lo 13725c28e83SPiotr Jasiukajtis ldd [%o0+0x10],p1 13825c28e83SPiotr Jasiukajtis ldd [%o0+0x18],p2 13925c28e83SPiotr Jasiukajtis ldd [%o0+0x20],p3 14025c28e83SPiotr Jasiukajtis ldd [%o0+0x28],p4 14125c28e83SPiotr Jasiukajtis ldd [%o0+0x30],mask 14225c28e83SPiotr Jasiukajtis fzero signbit 14325c28e83SPiotr Jasiukajtis fnegd signbit,signbit 14425c28e83SPiotr Jasiukajtis sethi %hi(0x00004000),%o1 14525c28e83SPiotr Jasiukajtis sethi %hi(0x1420),%o2 14625c28e83SPiotr Jasiukajtis or %o2,%lo(0x1420),%o2 14725c28e83SPiotr Jasiukajtis sethi %hi(0x7fe00000),%o3 14825c28e83SPiotr Jasiukajtis sethi %hi(0x03600000),%o4 14925c28e83SPiotr Jasiukajtis sethi %hi(0x00100000),%o5 15025c28e83SPiotr Jasiukajtis ldd [%o0+0x38],%f0 ! copy rarely used constants to stack 15125c28e83SPiotr Jasiukajtis ldd [%o0+0x40],%f2 15225c28e83SPiotr Jasiukajtis ldd [%o0+0x48],%f4 15325c28e83SPiotr Jasiukajtis std %f0,[%fp+twom3] 15425c28e83SPiotr Jasiukajtis std %f2,[%fp+two110] 15525c28e83SPiotr Jasiukajtis std %f4,[%fp+pio4] 15625c28e83SPiotr Jasiukajtis sll %i2,3,%i2 ! scale strides 15725c28e83SPiotr Jasiukajtis sll %i4,3,%i4 15825c28e83SPiotr Jasiukajtis sll %l7,3,%l7 15925c28e83SPiotr Jasiukajtis fzero %f20 ! loop prologue 16025c28e83SPiotr Jasiukajtis fzero %f22 16125c28e83SPiotr Jasiukajtis fzero %f24 16225c28e83SPiotr Jasiukajtis fzero %f26 16325c28e83SPiotr Jasiukajtis fzero %f46 164*55fea89dSDan Cross add %fp,junk,%l6 16525c28e83SPiotr Jasiukajtis ld [%i1],%f0 ! *y 16625c28e83SPiotr Jasiukajtis ld [%i1+4],%f1 16725c28e83SPiotr Jasiukajtis ld [%i3],%f8 ! *x 16825c28e83SPiotr Jasiukajtis ld [%i3+4],%f9 16925c28e83SPiotr Jasiukajtis ld [%i1],%o0 ! hy 17025c28e83SPiotr Jasiukajtis ba .loop 17125c28e83SPiotr Jasiukajtis ld [%i3],%l3 ! hx 17225c28e83SPiotr Jasiukajtis 17325c28e83SPiotr Jasiukajtis! 16-byte aligned 17425c28e83SPiotr Jasiukajtis .align 16 17525c28e83SPiotr Jasiukajtis.loop: 17625c28e83SPiotr Jasiukajtis fabsd %f0,%f4 17725c28e83SPiotr Jasiukajtis mov %i5,%l4 17825c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 ! y += stridey 17925c28e83SPiotr Jasiukajtis 18025c28e83SPiotr Jasiukajtis fabsd %f8,%f2 18125c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 ! x += stridex 18225c28e83SPiotr Jasiukajtis add %i5,%l7,%i5 ! z += stridez 18325c28e83SPiotr Jasiukajtis 18425c28e83SPiotr Jasiukajtis fand %f0,signbit,%f42 18525c28e83SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 18625c28e83SPiotr Jasiukajtis 18725c28e83SPiotr Jasiukajtis fand %f8,signbit,%f36 18825c28e83SPiotr Jasiukajtis andn %o0,%g5,%o0 18925c28e83SPiotr Jasiukajtis andn %l3,%g5,%l3 19025c28e83SPiotr Jasiukajtis 19125c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f4,%f2 19225c28e83SPiotr Jasiukajtis 19325c28e83SPiotr Jasiukajtis fmovd %f4,%f0 19425c28e83SPiotr Jasiukajtis 19525c28e83SPiotr Jasiukajtis fmovdg %fcc0,%f2,%f0 ! swap if |y| > |x| 19625c28e83SPiotr Jasiukajtis 19725c28e83SPiotr Jasiukajtis fmovdg %fcc0,%f4,%f2 19825c28e83SPiotr Jasiukajtis mov %o0,%o7 19925c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f10 ! preload next argument 20025c28e83SPiotr Jasiukajtis 20125c28e83SPiotr Jasiukajtis faddd %f26,%f20,%f26 20225c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f11 20325c28e83SPiotr Jasiukajtis 20425c28e83SPiotr Jasiukajtis faddd %f22,%f24,%f22 20525c28e83SPiotr Jasiukajtis movg %fcc0,%l3,%o0 20625c28e83SPiotr Jasiukajtis 20725c28e83SPiotr Jasiukajtis movg %fcc0,%o7,%l3 20825c28e83SPiotr Jasiukajtis 20925c28e83SPiotr Jasiukajtis fbu,pn %fcc0,.nan0 ! if x or y is nan 21025c28e83SPiotr Jasiukajtis! delay slot 21125c28e83SPiotr Jasiukajtis lda [%i3]%asi,%f18 21225c28e83SPiotr Jasiukajtis 21325c28e83SPiotr Jasiukajtis sub %l3,%o0,%l0 ! hx - hy 21425c28e83SPiotr Jasiukajtis sub %l3,%o3,%g5 21525c28e83SPiotr Jasiukajtis fabsd %f10,%f14 21625c28e83SPiotr Jasiukajtis lda [%i3+4]%asi,%f19 21725c28e83SPiotr Jasiukajtis 21825c28e83SPiotr Jasiukajtis sub %l0,%o4,%o7 21925c28e83SPiotr Jasiukajtis faddd %f22,%f26,%f26 22025c28e83SPiotr Jasiukajtis 22125c28e83SPiotr Jasiukajtis andcc %g5,%o7,%g0 22225c28e83SPiotr Jasiukajtis bge,pn %icc,.big0 ! if |x| or |x/y| is big 22325c28e83SPiotr Jasiukajtis! delay slot 22425c28e83SPiotr Jasiukajtis nop 22525c28e83SPiotr Jasiukajtis 22625c28e83SPiotr Jasiukajtis fabsd %f18,%f12 22725c28e83SPiotr Jasiukajtis cmp %o0,%o5 22825c28e83SPiotr Jasiukajtis bl,pn %icc,.small0 ! if |y| is small 22925c28e83SPiotr Jasiukajtis! delay slot 23025c28e83SPiotr Jasiukajtis lda [%i1]%asi,%o0 23125c28e83SPiotr Jasiukajtis 23225c28e83SPiotr Jasiukajtis add %l0,%o1,%l0 ! k 23325c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 23425c28e83SPiotr Jasiukajtis ble,pn %icc,.last1 23525c28e83SPiotr Jasiukajtis! delay slot 23625c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 23725c28e83SPiotr Jasiukajtis 23825c28e83SPiotr Jasiukajtis.cont1: 23925c28e83SPiotr Jasiukajtis srl %l0,10,%l0 24025c28e83SPiotr Jasiukajtis mov %i5,%l5 24125c28e83SPiotr Jasiukajtis fxor %f26,%f46,%f26 24225c28e83SPiotr Jasiukajtis st %f26,[%l6] 24325c28e83SPiotr Jasiukajtis 24425c28e83SPiotr Jasiukajtis fand %f10,signbit,%f44 24525c28e83SPiotr Jasiukajtis andn %l0,0x1f,%l0 24625c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 24725c28e83SPiotr Jasiukajtis st %f27,[%l6+4] 24825c28e83SPiotr Jasiukajtis 24925c28e83SPiotr Jasiukajtis fand %f18,signbit,%f38 25025c28e83SPiotr Jasiukajtis cmp %l0,%o2 25125c28e83SPiotr Jasiukajtis movg %icc,%o2,%l0 25225c28e83SPiotr Jasiukajtis 25325c28e83SPiotr Jasiukajtis fcmpd %fcc1,%f14,%f12 25425c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 25525c28e83SPiotr Jasiukajtis add %i5,%l7,%i5 25625c28e83SPiotr Jasiukajtis 25725c28e83SPiotr Jasiukajtis fmovd %f14,%f10 25825c28e83SPiotr Jasiukajtis add %l0,%g1,%l0 25925c28e83SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 26025c28e83SPiotr Jasiukajtis 26125c28e83SPiotr Jasiukajtis ldd [%l0+0x10],%f4 26225c28e83SPiotr Jasiukajtis fand %f2,mask,%f6 26325c28e83SPiotr Jasiukajtis andn %o0,%g5,%o0 26425c28e83SPiotr Jasiukajtis andn %l3,%g5,%l3 26525c28e83SPiotr Jasiukajtis 26625c28e83SPiotr Jasiukajtis fmovdg %fcc1,%f12,%f10 26725c28e83SPiotr Jasiukajtis 26825c28e83SPiotr Jasiukajtis fmovdg %fcc1,%f14,%f12 26925c28e83SPiotr Jasiukajtis mov %o0,%o7 27025c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f20 27125c28e83SPiotr Jasiukajtis 27225c28e83SPiotr Jasiukajtis fsubd %f2,%f6,%f30 27325c28e83SPiotr Jasiukajtis fmuld %f6,%f4,%f6 27425c28e83SPiotr Jasiukajtis movg %fcc1,%l3,%o0 27525c28e83SPiotr Jasiukajtis 27625c28e83SPiotr Jasiukajtis fmuld %f0,%f4,%f8 27725c28e83SPiotr Jasiukajtis movg %fcc1,%o7,%l3 27825c28e83SPiotr Jasiukajtis 27925c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f21 28025c28e83SPiotr Jasiukajtis fbu,pn %fcc1,.nan1 28125c28e83SPiotr Jasiukajtis! delay slot 28225c28e83SPiotr Jasiukajtis nop 28325c28e83SPiotr Jasiukajtis 28425c28e83SPiotr Jasiukajtis lda [%i3]%asi,%f28 28525c28e83SPiotr Jasiukajtis sub %l3,%o0,%l1 28625c28e83SPiotr Jasiukajtis sub %l3,%o3,%g5 28725c28e83SPiotr Jasiukajtis 28825c28e83SPiotr Jasiukajtis lda [%i3+4]%asi,%f29 28925c28e83SPiotr Jasiukajtis fmuld %f30,%f4,%f30 29025c28e83SPiotr Jasiukajtis fsubd %f0,%f6,%f4 29125c28e83SPiotr Jasiukajtis sub %l1,%o4,%o7 29225c28e83SPiotr Jasiukajtis 29325c28e83SPiotr Jasiukajtis fabsd %f20,%f24 29425c28e83SPiotr Jasiukajtis andcc %g5,%o7,%g0 29525c28e83SPiotr Jasiukajtis bge,pn %icc,.big1 29625c28e83SPiotr Jasiukajtis! delay slot 29725c28e83SPiotr Jasiukajtis nop 29825c28e83SPiotr Jasiukajtis 29925c28e83SPiotr Jasiukajtis faddd %f2,%f8,%f8 30025c28e83SPiotr Jasiukajtis cmp %o0,%o5 30125c28e83SPiotr Jasiukajtis bl,pn %icc,.small1 30225c28e83SPiotr Jasiukajtis! delay slot 30325c28e83SPiotr Jasiukajtis lda [%i1]%asi,%o0 30425c28e83SPiotr Jasiukajtis 30525c28e83SPiotr Jasiukajtis fabsd %f28,%f22 30625c28e83SPiotr Jasiukajtis add %l1,%o1,%l1 30725c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 30825c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 30925c28e83SPiotr Jasiukajtis 31025c28e83SPiotr Jasiukajtis fsubd %f4,%f30,%f4 31125c28e83SPiotr Jasiukajtis srl %l1,10,%l1 31225c28e83SPiotr Jasiukajtis ble,pn %icc,.last2 31325c28e83SPiotr Jasiukajtis! delay slot 31425c28e83SPiotr Jasiukajtis mov %i5,%l6 31525c28e83SPiotr Jasiukajtis 31625c28e83SPiotr Jasiukajtis.cont2: 31725c28e83SPiotr Jasiukajtis fand %f20,signbit,%f46 31825c28e83SPiotr Jasiukajtis andn %l1,0x1f,%l1 31925c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 32025c28e83SPiotr Jasiukajtis 32125c28e83SPiotr Jasiukajtis fand %f28,signbit,%f40 32225c28e83SPiotr Jasiukajtis cmp %l1,%o2 32325c28e83SPiotr Jasiukajtis movg %icc,%o2,%l1 32425c28e83SPiotr Jasiukajtis 32525c28e83SPiotr Jasiukajtis fcmpd %fcc2,%f24,%f22 32625c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 32725c28e83SPiotr Jasiukajtis add %i5,%l7,%i5 32825c28e83SPiotr Jasiukajtis 32925c28e83SPiotr Jasiukajtis fdivd %f4,%f8,%f4 33025c28e83SPiotr Jasiukajtis fmovd %f24,%f20 33125c28e83SPiotr Jasiukajtis add %l1,%g1,%l1 33225c28e83SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 33325c28e83SPiotr Jasiukajtis 33425c28e83SPiotr Jasiukajtis ldd [%l1+0x10],%f14 33525c28e83SPiotr Jasiukajtis fand %f12,mask,%f16 33625c28e83SPiotr Jasiukajtis andn %o0,%g5,%o0 33725c28e83SPiotr Jasiukajtis andn %l3,%g5,%l3 33825c28e83SPiotr Jasiukajtis 33925c28e83SPiotr Jasiukajtis fmovdg %fcc2,%f22,%f20 34025c28e83SPiotr Jasiukajtis 34125c28e83SPiotr Jasiukajtis fmovdg %fcc2,%f24,%f22 34225c28e83SPiotr Jasiukajtis mov %o0,%o7 34325c28e83SPiotr Jasiukajtis 34425c28e83SPiotr Jasiukajtis fsubd %f12,%f16,%f32 34525c28e83SPiotr Jasiukajtis fmuld %f16,%f14,%f16 34625c28e83SPiotr Jasiukajtis movg %fcc2,%l3,%o0 34725c28e83SPiotr Jasiukajtis 34825c28e83SPiotr Jasiukajtis fnegd pio2_lo,%f8 ! al 34925c28e83SPiotr Jasiukajtis fmuld %f10,%f14,%f18 35025c28e83SPiotr Jasiukajtis movg %fcc2,%o7,%l3 35125c28e83SPiotr Jasiukajtis 35225c28e83SPiotr Jasiukajtis fzero %f0 35325c28e83SPiotr Jasiukajtis fbu,pn %fcc2,.nan2 35425c28e83SPiotr Jasiukajtis! delay slot 35525c28e83SPiotr Jasiukajtis nop 35625c28e83SPiotr Jasiukajtis 35725c28e83SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f0 35825c28e83SPiotr Jasiukajtis sub %l3,%o0,%l2 35925c28e83SPiotr Jasiukajtis sub %l3,%o3,%g5 36025c28e83SPiotr Jasiukajtis 36125c28e83SPiotr Jasiukajtis fmuld %f32,%f14,%f32 36225c28e83SPiotr Jasiukajtis fsubd %f10,%f16,%f14 36325c28e83SPiotr Jasiukajtis sub %l2,%o4,%o7 36425c28e83SPiotr Jasiukajtis 36525c28e83SPiotr Jasiukajtis faddd %f12,%f18,%f18 36625c28e83SPiotr Jasiukajtis andcc %g5,%o7,%g0 36725c28e83SPiotr Jasiukajtis bge,pn %icc,.big2 36825c28e83SPiotr Jasiukajtis! delay slot 36925c28e83SPiotr Jasiukajtis nop 37025c28e83SPiotr Jasiukajtis 37125c28e83SPiotr Jasiukajtis fxor %f36,%f0,%f36 37225c28e83SPiotr Jasiukajtis cmp %o0,%o5 37325c28e83SPiotr Jasiukajtis bl,pn %icc,.small2 37425c28e83SPiotr Jasiukajtis! delay slot 37525c28e83SPiotr Jasiukajtis nop 37625c28e83SPiotr Jasiukajtis 37725c28e83SPiotr Jasiukajtis.cont3: 37825c28e83SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f8 37925c28e83SPiotr Jasiukajtis add %l2,%o1,%l2 38025c28e83SPiotr Jasiukajtis 38125c28e83SPiotr Jasiukajtis fsubd %f14,%f32,%f14 38225c28e83SPiotr Jasiukajtis srl %l2,10,%l2 38325c28e83SPiotr Jasiukajtis 38425c28e83SPiotr Jasiukajtis fxor %f36,pio2_lo,%f30 ! al 38525c28e83SPiotr Jasiukajtis andn %l2,0x1f,%l2 38625c28e83SPiotr Jasiukajtis 38725c28e83SPiotr Jasiukajtis fxor %f36,pio2,%f0 ! ah 38825c28e83SPiotr Jasiukajtis cmp %l2,%o2 38925c28e83SPiotr Jasiukajtis movg %icc,%o2,%l2 39025c28e83SPiotr Jasiukajtis 39125c28e83SPiotr Jasiukajtis fxor %f42,%f36,%f42 ! sy 39225c28e83SPiotr Jasiukajtis 39325c28e83SPiotr Jasiukajtis faddd %f8,%f30,%f8 39425c28e83SPiotr Jasiukajtis ldd [%l0+0x8],%f30 39525c28e83SPiotr Jasiukajtis add %l2,%g1,%l2 39625c28e83SPiotr Jasiukajtis 39725c28e83SPiotr Jasiukajtis fdivd %f14,%f18,%f14 39825c28e83SPiotr Jasiukajtis fzero %f10 39925c28e83SPiotr Jasiukajtis 40025c28e83SPiotr Jasiukajtis ldd [%l2+0x10],%f24 40125c28e83SPiotr Jasiukajtis fand %f22,mask,%f26 40225c28e83SPiotr Jasiukajtis 40325c28e83SPiotr Jasiukajtis fmovdg %fcc1,signbit,%f10 40425c28e83SPiotr Jasiukajtis 40525c28e83SPiotr Jasiukajtis fmuld %f4,%f4,%f36 40625c28e83SPiotr Jasiukajtis faddd %f8,%f30,%f8 40725c28e83SPiotr Jasiukajtis 40825c28e83SPiotr Jasiukajtis fsubd %f22,%f26,%f34 40925c28e83SPiotr Jasiukajtis fmuld %f26,%f24,%f26 41025c28e83SPiotr Jasiukajtis 41125c28e83SPiotr Jasiukajtis fmuld %f20,%f24,%f28 41225c28e83SPiotr Jasiukajtis fxor %f38,%f10,%f38 41325c28e83SPiotr Jasiukajtis 41425c28e83SPiotr Jasiukajtis fmuld %f4,p3,%f6 41525c28e83SPiotr Jasiukajtis fnegd pio2_lo,%f18 41625c28e83SPiotr Jasiukajtis 41725c28e83SPiotr Jasiukajtis fmuld %f36,p2,%f2 41825c28e83SPiotr Jasiukajtis fmovdg %fcc1,signbit,%f18 41925c28e83SPiotr Jasiukajtis 42025c28e83SPiotr Jasiukajtis fmuld %f36,%f4,%f36 42125c28e83SPiotr Jasiukajtis fxor %f38,pio2,%f10 42225c28e83SPiotr Jasiukajtis 42325c28e83SPiotr Jasiukajtis fmuld %f34,%f24,%f34 42425c28e83SPiotr Jasiukajtis fsubd %f20,%f26,%f24 42525c28e83SPiotr Jasiukajtis 42625c28e83SPiotr Jasiukajtis faddd %f22,%f28,%f28 42725c28e83SPiotr Jasiukajtis 42825c28e83SPiotr Jasiukajtis faddd %f2,p1,%f2 42925c28e83SPiotr Jasiukajtis 43025c28e83SPiotr Jasiukajtis fmuld %f36,p4,%f30 43125c28e83SPiotr Jasiukajtis fxor %f38,pio2_lo,%f32 43225c28e83SPiotr Jasiukajtis 43325c28e83SPiotr Jasiukajtis fsubd %f24,%f34,%f24 43425c28e83SPiotr Jasiukajtis 43525c28e83SPiotr Jasiukajtis fxor %f44,%f38,%f44 43625c28e83SPiotr Jasiukajtis 43725c28e83SPiotr Jasiukajtis fmuld %f36,%f2,%f2 43825c28e83SPiotr Jasiukajtis faddd %f18,%f32,%f18 43925c28e83SPiotr Jasiukajtis ldd [%l1+0x8],%f32 44025c28e83SPiotr Jasiukajtis 44125c28e83SPiotr Jasiukajtis fmuld %f36,%f36,%f36 44225c28e83SPiotr Jasiukajtis faddd %f6,%f30,%f30 44325c28e83SPiotr Jasiukajtis 44425c28e83SPiotr Jasiukajtis fdivd %f24,%f28,%f24 44525c28e83SPiotr Jasiukajtis fzero %f20 44625c28e83SPiotr Jasiukajtis 44725c28e83SPiotr Jasiukajtis fmovdg %fcc2,signbit,%f20 44825c28e83SPiotr Jasiukajtis 44925c28e83SPiotr Jasiukajtis faddd %f2,%f8,%f2 45025c28e83SPiotr Jasiukajtis 45125c28e83SPiotr Jasiukajtis fmuld %f14,%f14,%f38 45225c28e83SPiotr Jasiukajtis faddd %f18,%f32,%f18 45325c28e83SPiotr Jasiukajtis 45425c28e83SPiotr Jasiukajtis fmuld %f36,%f30,%f36 45525c28e83SPiotr Jasiukajtis fxor %f40,%f20,%f40 45625c28e83SPiotr Jasiukajtis 45725c28e83SPiotr Jasiukajtis fnegd pio2,%f6 ! ah 45825c28e83SPiotr Jasiukajtis fmuld %f14,p3,%f16 45925c28e83SPiotr Jasiukajtis 46025c28e83SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f6 46125c28e83SPiotr Jasiukajtis 46225c28e83SPiotr Jasiukajtis fmuld %f38,p2,%f12 46325c28e83SPiotr Jasiukajtis fnegd pio2_lo,%f28 46425c28e83SPiotr Jasiukajtis 46525c28e83SPiotr Jasiukajtis faddd %f2,%f36,%f2 46625c28e83SPiotr Jasiukajtis fmuld %f38,%f14,%f38 46725c28e83SPiotr Jasiukajtis 46825c28e83SPiotr Jasiukajtis faddd %f6,%f0,%f6 46925c28e83SPiotr Jasiukajtis ldd [%l0],%f0 47025c28e83SPiotr Jasiukajtis 47125c28e83SPiotr Jasiukajtis fmovdg %fcc2,signbit,%f28 47225c28e83SPiotr Jasiukajtis 47325c28e83SPiotr Jasiukajtis faddd %f12,p1,%f12 47425c28e83SPiotr Jasiukajtis 47525c28e83SPiotr Jasiukajtis fmuld %f38,p4,%f32 47625c28e83SPiotr Jasiukajtis fxor %f40,pio2_lo,%f34 47725c28e83SPiotr Jasiukajtis 47825c28e83SPiotr Jasiukajtis fxor %f40,pio2,%f20 47925c28e83SPiotr Jasiukajtis 48025c28e83SPiotr Jasiukajtis faddd %f2,%f4,%f2 48125c28e83SPiotr Jasiukajtis 48225c28e83SPiotr Jasiukajtis fmuld %f38,%f12,%f12 48325c28e83SPiotr Jasiukajtis fxor %f46,%f40,%f46 48425c28e83SPiotr Jasiukajtis 48525c28e83SPiotr Jasiukajtis fmuld %f38,%f38,%f38 48625c28e83SPiotr Jasiukajtis faddd %f16,%f32,%f32 48725c28e83SPiotr Jasiukajtis 48825c28e83SPiotr Jasiukajtis faddd %f28,%f34,%f28 48925c28e83SPiotr Jasiukajtis ldd [%l2+0x8],%f34 49025c28e83SPiotr Jasiukajtis 49125c28e83SPiotr Jasiukajtis faddd %f6,%f0,%f6 49225c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f0 ! preload next argument 49325c28e83SPiotr Jasiukajtis 49425c28e83SPiotr Jasiukajtis faddd %f12,%f18,%f12 49525c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f1 49625c28e83SPiotr Jasiukajtis 49725c28e83SPiotr Jasiukajtis fmuld %f24,%f24,%f40 49825c28e83SPiotr Jasiukajtis lda [%i3]%asi,%f8 49925c28e83SPiotr Jasiukajtis 50025c28e83SPiotr Jasiukajtis fmuld %f38,%f32,%f38 50125c28e83SPiotr Jasiukajtis faddd %f28,%f34,%f28 50225c28e83SPiotr Jasiukajtis lda [%i3+4]%asi,%f9 50325c28e83SPiotr Jasiukajtis 50425c28e83SPiotr Jasiukajtis fnegd pio2,%f16 50525c28e83SPiotr Jasiukajtis fmuld %f24,p3,%f26 50625c28e83SPiotr Jasiukajtis lda [%i1]%asi,%o0 50725c28e83SPiotr Jasiukajtis 50825c28e83SPiotr Jasiukajtis fmovdg %fcc1,signbit,%f16 50925c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 51025c28e83SPiotr Jasiukajtis 51125c28e83SPiotr Jasiukajtis fmuld %f40,p2,%f22 51225c28e83SPiotr Jasiukajtis 51325c28e83SPiotr Jasiukajtis faddd %f12,%f38,%f12 51425c28e83SPiotr Jasiukajtis fmuld %f40,%f24,%f40 51525c28e83SPiotr Jasiukajtis 51625c28e83SPiotr Jasiukajtis faddd %f2,%f6,%f6 51725c28e83SPiotr Jasiukajtis 51825c28e83SPiotr Jasiukajtis faddd %f16,%f10,%f16 51925c28e83SPiotr Jasiukajtis ldd [%l1],%f10 52025c28e83SPiotr Jasiukajtis 52125c28e83SPiotr Jasiukajtis faddd %f22,p1,%f22 52225c28e83SPiotr Jasiukajtis 52325c28e83SPiotr Jasiukajtis faddd %f12,%f14,%f12 52425c28e83SPiotr Jasiukajtis fmuld %f40,p4,%f34 52525c28e83SPiotr Jasiukajtis 52625c28e83SPiotr Jasiukajtis fxor %f6,%f42,%f6 52725c28e83SPiotr Jasiukajtis st %f6,[%l4] 52825c28e83SPiotr Jasiukajtis 52925c28e83SPiotr Jasiukajtis faddd %f16,%f10,%f16 53025c28e83SPiotr Jasiukajtis st %f7,[%l4+4] 53125c28e83SPiotr Jasiukajtis 53225c28e83SPiotr Jasiukajtis fmuld %f40,%f22,%f22 53325c28e83SPiotr Jasiukajtis 53425c28e83SPiotr Jasiukajtis fmuld %f40,%f40,%f40 53525c28e83SPiotr Jasiukajtis faddd %f26,%f34,%f34 53625c28e83SPiotr Jasiukajtis 53725c28e83SPiotr Jasiukajtis fnegd pio2,%f26 53825c28e83SPiotr Jasiukajtis 53925c28e83SPiotr Jasiukajtis faddd %f12,%f16,%f16 54025c28e83SPiotr Jasiukajtis 54125c28e83SPiotr Jasiukajtis faddd %f22,%f28,%f22 54225c28e83SPiotr Jasiukajtis 54325c28e83SPiotr Jasiukajtis fmuld %f40,%f34,%f40 54425c28e83SPiotr Jasiukajtis fmovdg %fcc2,signbit,%f26 54525c28e83SPiotr Jasiukajtis 54625c28e83SPiotr Jasiukajtis! - 54725c28e83SPiotr Jasiukajtis 54825c28e83SPiotr Jasiukajtis fxor %f16,%f44,%f16 54925c28e83SPiotr Jasiukajtis st %f16,[%l5] 55025c28e83SPiotr Jasiukajtis 55125c28e83SPiotr Jasiukajtis faddd %f26,%f20,%f26 55225c28e83SPiotr Jasiukajtis st %f17,[%l5+4] 55325c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 55425c28e83SPiotr Jasiukajtis 55525c28e83SPiotr Jasiukajtis faddd %f22,%f40,%f22 55625c28e83SPiotr Jasiukajtis bg,pt %icc,.loop 55725c28e83SPiotr Jasiukajtis! delay slot 55825c28e83SPiotr Jasiukajtis ldd [%l2],%f20 55925c28e83SPiotr Jasiukajtis 56025c28e83SPiotr Jasiukajtis 56125c28e83SPiotr Jasiukajtis faddd %f26,%f20,%f26 56225c28e83SPiotr Jasiukajtis faddd %f22,%f24,%f22 56325c28e83SPiotr Jasiukajtis faddd %f22,%f26,%f26 56425c28e83SPiotr Jasiukajtis.done_from_special0: 56525c28e83SPiotr Jasiukajtis fxor %f26,%f46,%f26 56625c28e83SPiotr Jasiukajtis st %f26,[%l6] 56725c28e83SPiotr Jasiukajtis st %f27,[%l6+4] 56825c28e83SPiotr Jasiukajtis ret 56925c28e83SPiotr Jasiukajtis restore 57025c28e83SPiotr Jasiukajtis 57125c28e83SPiotr Jasiukajtis 57225c28e83SPiotr Jasiukajtis 57325c28e83SPiotr Jasiukajtis .align 16 57425c28e83SPiotr Jasiukajtis.last1: 57525c28e83SPiotr Jasiukajtis fmovd pio2,%f10 ! set up dummy arguments 57625c28e83SPiotr Jasiukajtis fmovd pio2,%f18 57725c28e83SPiotr Jasiukajtis fabsd %f10,%f14 57825c28e83SPiotr Jasiukajtis fabsd %f18,%f12 57925c28e83SPiotr Jasiukajtis sethi %hi(0x3ff921fb),%o0 58025c28e83SPiotr Jasiukajtis or %o0,%lo(0x3ff921fb),%o0 58125c28e83SPiotr Jasiukajtis mov %o0,%l3 58225c28e83SPiotr Jasiukajtis ba,pt %icc,.cont1 58325c28e83SPiotr Jasiukajtis! delay slot 58425c28e83SPiotr Jasiukajtis add %fp,junk,%i5 58525c28e83SPiotr Jasiukajtis 58625c28e83SPiotr Jasiukajtis 58725c28e83SPiotr Jasiukajtis 58825c28e83SPiotr Jasiukajtis .align 16 58925c28e83SPiotr Jasiukajtis.last2: 59025c28e83SPiotr Jasiukajtis fmovd pio2,%f20 59125c28e83SPiotr Jasiukajtis fmovd pio2,%f28 59225c28e83SPiotr Jasiukajtis fabsd %f20,%f24 59325c28e83SPiotr Jasiukajtis fabsd %f28,%f22 59425c28e83SPiotr Jasiukajtis sethi %hi(0x3ff921fb),%o0 59525c28e83SPiotr Jasiukajtis or %o0,%lo(0x3ff921fb),%o0 59625c28e83SPiotr Jasiukajtis mov %o0,%l3 59725c28e83SPiotr Jasiukajtis ba,pt %icc,.cont2 59825c28e83SPiotr Jasiukajtis! delay slot 59925c28e83SPiotr Jasiukajtis add %fp,junk,%l6 60025c28e83SPiotr Jasiukajtis 60125c28e83SPiotr Jasiukajtis 60225c28e83SPiotr Jasiukajtis 60325c28e83SPiotr Jasiukajtis .align 16 60425c28e83SPiotr Jasiukajtis.nan0: 60525c28e83SPiotr Jasiukajtis faddd %f22,%f26,%f26 60625c28e83SPiotr Jasiukajtis.nan0_from_special0: 60725c28e83SPiotr Jasiukajtis fabsd %f10,%f14 60825c28e83SPiotr Jasiukajtis lda [%i3+4]%asi,%f19 60925c28e83SPiotr Jasiukajtis fabsd %f18,%f12 61025c28e83SPiotr Jasiukajtis lda [%i1]%asi,%o0 61125c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 61225c28e83SPiotr Jasiukajtis ba,pt %icc,.special0 61325c28e83SPiotr Jasiukajtis! delay slot 61425c28e83SPiotr Jasiukajtis fmuld %f0,%f2,%f6 61525c28e83SPiotr Jasiukajtis 61625c28e83SPiotr Jasiukajtis 61725c28e83SPiotr Jasiukajtis .align 16 61825c28e83SPiotr Jasiukajtis.big0: 61925c28e83SPiotr Jasiukajtis fabsd %f18,%f12 62025c28e83SPiotr Jasiukajtis lda [%i1]%asi,%o0 62125c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 622*55fea89dSDan Cross cmp %g5,%o5 62325c28e83SPiotr Jasiukajtis bge,pn %icc,.return_ah0 ! if hx >= 0x7ff00000 62425c28e83SPiotr Jasiukajtis! delay slot 62525c28e83SPiotr Jasiukajtis nop 62625c28e83SPiotr Jasiukajtis cmp %l0,%o4 62725c28e83SPiotr Jasiukajtis bge,pn %icc,1f ! if hx - hy >= 0x03600000 62825c28e83SPiotr Jasiukajtis! delay slot 62925c28e83SPiotr Jasiukajtis nop 63025c28e83SPiotr Jasiukajtis ldd [%fp+twom3],%f6 63125c28e83SPiotr Jasiukajtis fmuld %f0,%f6,%f0 63225c28e83SPiotr Jasiukajtis fmuld %f2,%f6,%f2 63325c28e83SPiotr Jasiukajtis add %l0,%o1,%l0 63425c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 63525c28e83SPiotr Jasiukajtis ble,pn %icc,.last1 63625c28e83SPiotr Jasiukajtis! delay slot 63725c28e83SPiotr Jasiukajtis nop 63825c28e83SPiotr Jasiukajtis ba,pt %icc,.cont1 63925c28e83SPiotr Jasiukajtis! delay slot 64025c28e83SPiotr Jasiukajtis nop 64125c28e83SPiotr Jasiukajtis1: 64225c28e83SPiotr Jasiukajtis fbg,pn %fcc0,.return_ah0 64325c28e83SPiotr Jasiukajtis! delay slot 64425c28e83SPiotr Jasiukajtis nop 64525c28e83SPiotr Jasiukajtis fcmpd %fcc3,%f8,signbit 64625c28e83SPiotr Jasiukajtis fbl,pn %fcc3,.return_ah0 64725c28e83SPiotr Jasiukajtis! delay slot 64825c28e83SPiotr Jasiukajtis nop 64925c28e83SPiotr Jasiukajtis ba,pt %icc,.special0 65025c28e83SPiotr Jasiukajtis! delay slot 65125c28e83SPiotr Jasiukajtis fdivd %f0,%f2,%f6 65225c28e83SPiotr Jasiukajtis 65325c28e83SPiotr Jasiukajtis 65425c28e83SPiotr Jasiukajtis .align 16 65525c28e83SPiotr Jasiukajtis.small0: 65625c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 65725c28e83SPiotr Jasiukajtis fcmpd %fcc3,%f0,signbit 65825c28e83SPiotr Jasiukajtis fbe,pt %fcc3,.return_ah0 65925c28e83SPiotr Jasiukajtis! delay slot 66025c28e83SPiotr Jasiukajtis nop 66125c28e83SPiotr Jasiukajtis ldd [%fp+two110],%f6 66225c28e83SPiotr Jasiukajtis fmuld %f0,%f6,%f0 66325c28e83SPiotr Jasiukajtis fmuld %f2,%f6,%f2 66425c28e83SPiotr Jasiukajtis st %f0,[%fp+yscl] 66525c28e83SPiotr Jasiukajtis ld [%fp+yscl],%o7 66625c28e83SPiotr Jasiukajtis st %f2,[%fp+xscl] 66725c28e83SPiotr Jasiukajtis ld [%fp+xscl],%l0 66825c28e83SPiotr Jasiukajtis sub %l0,%o7,%l0 66925c28e83SPiotr Jasiukajtis add %l0,%o1,%l0 67025c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 67125c28e83SPiotr Jasiukajtis ble,pn %icc,.last1 67225c28e83SPiotr Jasiukajtis! delay slot 67325c28e83SPiotr Jasiukajtis nop 67425c28e83SPiotr Jasiukajtis ba,pt %icc,.cont1 67525c28e83SPiotr Jasiukajtis! delay slot 67625c28e83SPiotr Jasiukajtis nop 67725c28e83SPiotr Jasiukajtis 67825c28e83SPiotr Jasiukajtis 67925c28e83SPiotr Jasiukajtis .align 16 68025c28e83SPiotr Jasiukajtis.return_ah0: 68125c28e83SPiotr Jasiukajtis fzero %f0 68225c28e83SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f0 68325c28e83SPiotr Jasiukajtis fxor %f36,%f0,%f36 68425c28e83SPiotr Jasiukajtis fxor %f36,pio2,%f0 68525c28e83SPiotr Jasiukajtis fxor %f42,%f36,%f42 68625c28e83SPiotr Jasiukajtis fnegd pio2,%f6 68725c28e83SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f6 68825c28e83SPiotr Jasiukajtis faddd %f6,%f0,%f6 68925c28e83SPiotr Jasiukajtis sub %g5,%l0,%o7 69025c28e83SPiotr Jasiukajtis cmp %o7,%o5 69125c28e83SPiotr Jasiukajtis bl,pt %icc,1f ! if hy < 0x7ff00000 69225c28e83SPiotr Jasiukajtis! delay slot 69325c28e83SPiotr Jasiukajtis nop 69425c28e83SPiotr Jasiukajtis ldd [%fp+pio4],%f0 69525c28e83SPiotr Jasiukajtis faddd %f6,%f0,%f6 69625c28e83SPiotr Jasiukajtis1: 69725c28e83SPiotr Jasiukajtis fdtoi %f6,%f4 69825c28e83SPiotr Jasiukajtis.special0: 69925c28e83SPiotr Jasiukajtis fxor %f6,%f42,%f6 70025c28e83SPiotr Jasiukajtis st %f6,[%l4] 70125c28e83SPiotr Jasiukajtis st %f7,[%l4+4] 70225c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 70325c28e83SPiotr Jasiukajtis ble,pn %icc,.done_from_special0 70425c28e83SPiotr Jasiukajtis! delay slot 70525c28e83SPiotr Jasiukajtis nop 70625c28e83SPiotr Jasiukajtis fmovd %f10,%f0 70725c28e83SPiotr Jasiukajtis fmovd %f18,%f8 70825c28e83SPiotr Jasiukajtis fmovd %f14,%f4 70925c28e83SPiotr Jasiukajtis fmovd %f12,%f2 71025c28e83SPiotr Jasiukajtis mov %i5,%l4 71125c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 71225c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 71325c28e83SPiotr Jasiukajtis add %i5,%l7,%i5 71425c28e83SPiotr Jasiukajtis fand %f0,signbit,%f42 71525c28e83SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 71625c28e83SPiotr Jasiukajtis fand %f8,signbit,%f36 71725c28e83SPiotr Jasiukajtis andn %o0,%g5,%o0 71825c28e83SPiotr Jasiukajtis andn %l3,%g5,%l3 71925c28e83SPiotr Jasiukajtis fcmpd %fcc0,%f4,%f2 72025c28e83SPiotr Jasiukajtis fmovd %f4,%f0 72125c28e83SPiotr Jasiukajtis fmovdg %fcc0,%f2,%f0 72225c28e83SPiotr Jasiukajtis fmovdg %fcc0,%f4,%f2 72325c28e83SPiotr Jasiukajtis mov %o0,%o7 72425c28e83SPiotr Jasiukajtis movg %fcc0,%l3,%o0 72525c28e83SPiotr Jasiukajtis movg %fcc0,%o7,%l3 72625c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f10 72725c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f11 72825c28e83SPiotr Jasiukajtis fbu,pn %fcc0,.nan0_from_special0 72925c28e83SPiotr Jasiukajtis! delay slot 73025c28e83SPiotr Jasiukajtis lda [%i3]%asi,%f18 73125c28e83SPiotr Jasiukajtis fabsd %f10,%f14 73225c28e83SPiotr Jasiukajtis lda [%i3+4]%asi,%f19 73325c28e83SPiotr Jasiukajtis sub %l3,%o0,%l0 73425c28e83SPiotr Jasiukajtis sub %l3,%o3,%g5 73525c28e83SPiotr Jasiukajtis sub %l0,%o4,%o7 73625c28e83SPiotr Jasiukajtis andcc %g5,%o7,%g0 73725c28e83SPiotr Jasiukajtis bge,pn %icc,.big0 73825c28e83SPiotr Jasiukajtis! delay slot 73925c28e83SPiotr Jasiukajtis nop 74025c28e83SPiotr Jasiukajtis fabsd %f18,%f12 74125c28e83SPiotr Jasiukajtis cmp %o0,%o5 74225c28e83SPiotr Jasiukajtis bl,pn %icc,.small0 74325c28e83SPiotr Jasiukajtis! delay slot 74425c28e83SPiotr Jasiukajtis lda [%i1]%asi,%o0 74525c28e83SPiotr Jasiukajtis add %l0,%o1,%l0 74625c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 74725c28e83SPiotr Jasiukajtis ble,pn %icc,.last1 74825c28e83SPiotr Jasiukajtis! delay slot 74925c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 75025c28e83SPiotr Jasiukajtis ba,pt %icc,.cont1 75125c28e83SPiotr Jasiukajtis! delay slot 75225c28e83SPiotr Jasiukajtis nop 75325c28e83SPiotr Jasiukajtis 75425c28e83SPiotr Jasiukajtis 75525c28e83SPiotr Jasiukajtis 75625c28e83SPiotr Jasiukajtis .align 16 75725c28e83SPiotr Jasiukajtis.nan1: 75825c28e83SPiotr Jasiukajtis fmuld %f30,%f4,%f30 75925c28e83SPiotr Jasiukajtis fsubd %f0,%f6,%f4 76025c28e83SPiotr Jasiukajtis faddd %f2,%f8,%f8 76125c28e83SPiotr Jasiukajtis fsubd %f4,%f30,%f4 76225c28e83SPiotr Jasiukajtis.nan1_from_special1: 76325c28e83SPiotr Jasiukajtis lda [%i3]%asi,%f28 76425c28e83SPiotr Jasiukajtis lda [%i3+4]%asi,%f29 76525c28e83SPiotr Jasiukajtis fabsd %f20,%f24 76625c28e83SPiotr Jasiukajtis lda [%i1]%asi,%o0 76725c28e83SPiotr Jasiukajtis fabsd %f28,%f22 76825c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 76925c28e83SPiotr Jasiukajtis mov %i5,%l6 77025c28e83SPiotr Jasiukajtis ba,pt %icc,.special1 77125c28e83SPiotr Jasiukajtis! delay slot 77225c28e83SPiotr Jasiukajtis fmuld %f10,%f12,%f16 77325c28e83SPiotr Jasiukajtis 77425c28e83SPiotr Jasiukajtis 77525c28e83SPiotr Jasiukajtis .align 16 77625c28e83SPiotr Jasiukajtis.big1: 77725c28e83SPiotr Jasiukajtis faddd %f2,%f8,%f8 77825c28e83SPiotr Jasiukajtis fsubd %f4,%f30,%f4 77925c28e83SPiotr Jasiukajtis.big1_from_special1: 78025c28e83SPiotr Jasiukajtis lda [%i1]%asi,%o0 78125c28e83SPiotr Jasiukajtis fabsd %f28,%f22 78225c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 78325c28e83SPiotr Jasiukajtis mov %i5,%l6 784*55fea89dSDan Cross cmp %g5,%o5 78525c28e83SPiotr Jasiukajtis bge,pn %icc,.return_ah1 78625c28e83SPiotr Jasiukajtis! delay slot 78725c28e83SPiotr Jasiukajtis nop 78825c28e83SPiotr Jasiukajtis cmp %l1,%o4 78925c28e83SPiotr Jasiukajtis bge,pn %icc,1f 79025c28e83SPiotr Jasiukajtis! delay slot 79125c28e83SPiotr Jasiukajtis nop 79225c28e83SPiotr Jasiukajtis ldd [%fp+twom3],%f16 79325c28e83SPiotr Jasiukajtis fmuld %f10,%f16,%f10 79425c28e83SPiotr Jasiukajtis fmuld %f12,%f16,%f12 79525c28e83SPiotr Jasiukajtis add %l1,%o1,%l1 79625c28e83SPiotr Jasiukajtis srl %l1,10,%l1 79725c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 79825c28e83SPiotr Jasiukajtis ble,pn %icc,.last2 79925c28e83SPiotr Jasiukajtis! delay slot 80025c28e83SPiotr Jasiukajtis nop 80125c28e83SPiotr Jasiukajtis ba,pt %icc,.cont2 80225c28e83SPiotr Jasiukajtis! delay slot 80325c28e83SPiotr Jasiukajtis nop 80425c28e83SPiotr Jasiukajtis1: 80525c28e83SPiotr Jasiukajtis fbg,pn %fcc1,.return_ah1 80625c28e83SPiotr Jasiukajtis! delay slot 80725c28e83SPiotr Jasiukajtis nop 80825c28e83SPiotr Jasiukajtis fcmpd %fcc3,%f18,signbit 80925c28e83SPiotr Jasiukajtis fbl,pn %fcc3,.return_ah1 81025c28e83SPiotr Jasiukajtis! delay slot 81125c28e83SPiotr Jasiukajtis nop 81225c28e83SPiotr Jasiukajtis ba,pt %icc,.special1 81325c28e83SPiotr Jasiukajtis! delay slot 81425c28e83SPiotr Jasiukajtis fdivd %f10,%f12,%f16 81525c28e83SPiotr Jasiukajtis 81625c28e83SPiotr Jasiukajtis 81725c28e83SPiotr Jasiukajtis .align 16 81825c28e83SPiotr Jasiukajtis.small1: 81925c28e83SPiotr Jasiukajtis fsubd %f4,%f30,%f4 82025c28e83SPiotr Jasiukajtis.small1_from_special1: 82125c28e83SPiotr Jasiukajtis fabsd %f28,%f22 82225c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 82325c28e83SPiotr Jasiukajtis mov %i5,%l6 82425c28e83SPiotr Jasiukajtis fcmpd %fcc3,%f10,signbit 82525c28e83SPiotr Jasiukajtis fbe,pt %fcc3,.return_ah1 82625c28e83SPiotr Jasiukajtis! delay slot 82725c28e83SPiotr Jasiukajtis nop 82825c28e83SPiotr Jasiukajtis ldd [%fp+two110],%f16 82925c28e83SPiotr Jasiukajtis fmuld %f10,%f16,%f10 83025c28e83SPiotr Jasiukajtis fmuld %f12,%f16,%f12 83125c28e83SPiotr Jasiukajtis st %f10,[%fp+yscl] 83225c28e83SPiotr Jasiukajtis ld [%fp+yscl],%o7 83325c28e83SPiotr Jasiukajtis st %f12,[%fp+xscl] 83425c28e83SPiotr Jasiukajtis ld [%fp+xscl],%l1 83525c28e83SPiotr Jasiukajtis sub %l1,%o7,%l1 83625c28e83SPiotr Jasiukajtis add %l1,%o1,%l1 83725c28e83SPiotr Jasiukajtis srl %l1,10,%l1 83825c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 83925c28e83SPiotr Jasiukajtis ble,pn %icc,.last2 84025c28e83SPiotr Jasiukajtis! delay slot 84125c28e83SPiotr Jasiukajtis nop 84225c28e83SPiotr Jasiukajtis ba,pt %icc,.cont2 84325c28e83SPiotr Jasiukajtis! delay slot 84425c28e83SPiotr Jasiukajtis nop 84525c28e83SPiotr Jasiukajtis 84625c28e83SPiotr Jasiukajtis 84725c28e83SPiotr Jasiukajtis .align 16 84825c28e83SPiotr Jasiukajtis.return_ah1: 84925c28e83SPiotr Jasiukajtis fzero %f10 85025c28e83SPiotr Jasiukajtis fmovdg %fcc1,signbit,%f10 85125c28e83SPiotr Jasiukajtis fxor %f38,%f10,%f38 85225c28e83SPiotr Jasiukajtis fxor %f38,pio2,%f10 85325c28e83SPiotr Jasiukajtis fxor %f44,%f38,%f44 85425c28e83SPiotr Jasiukajtis fnegd pio2,%f16 85525c28e83SPiotr Jasiukajtis fmovdg %fcc1,signbit,%f16 85625c28e83SPiotr Jasiukajtis faddd %f16,%f10,%f16 85725c28e83SPiotr Jasiukajtis sub %g5,%l1,%o7 85825c28e83SPiotr Jasiukajtis cmp %o7,%o5 859*55fea89dSDan Cross bl,pt %icc,1f 86025c28e83SPiotr Jasiukajtis! delay slot 86125c28e83SPiotr Jasiukajtis nop 86225c28e83SPiotr Jasiukajtis ldd [%fp+pio4],%f10 86325c28e83SPiotr Jasiukajtis faddd %f16,%f10,%f16 86425c28e83SPiotr Jasiukajtis1: 86525c28e83SPiotr Jasiukajtis fdtoi %f16,%f14 86625c28e83SPiotr Jasiukajtis.special1: 86725c28e83SPiotr Jasiukajtis fxor %f16,%f44,%f16 86825c28e83SPiotr Jasiukajtis st %f16,[%l5] 86925c28e83SPiotr Jasiukajtis st %f17,[%l5+4] 87025c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 87125c28e83SPiotr Jasiukajtis bg,pn %icc,1f 87225c28e83SPiotr Jasiukajtis! delay slot 87325c28e83SPiotr Jasiukajtis nop 87425c28e83SPiotr Jasiukajtis fmovd pio2,%f20 ! set up dummy argument 87525c28e83SPiotr Jasiukajtis fmovd pio2,%f28 87625c28e83SPiotr Jasiukajtis fabsd %f20,%f24 87725c28e83SPiotr Jasiukajtis fabsd %f28,%f22 87825c28e83SPiotr Jasiukajtis sethi %hi(0x3ff921fb),%o0 87925c28e83SPiotr Jasiukajtis or %o0,%lo(0x3ff921fb),%o0 88025c28e83SPiotr Jasiukajtis mov %o0,%l3 88125c28e83SPiotr Jasiukajtis add %fp,junk,%i5 88225c28e83SPiotr Jasiukajtis1: 88325c28e83SPiotr Jasiukajtis fmovd %f20,%f10 88425c28e83SPiotr Jasiukajtis fmovd %f28,%f18 88525c28e83SPiotr Jasiukajtis fmovd %f24,%f14 88625c28e83SPiotr Jasiukajtis fmovd %f22,%f12 88725c28e83SPiotr Jasiukajtis mov %i5,%l5 88825c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 88925c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 89025c28e83SPiotr Jasiukajtis add %i5,%l7,%i5 89125c28e83SPiotr Jasiukajtis fand %f10,signbit,%f44 89225c28e83SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 89325c28e83SPiotr Jasiukajtis fand %f18,signbit,%f38 89425c28e83SPiotr Jasiukajtis andn %o0,%g5,%o0 89525c28e83SPiotr Jasiukajtis andn %l3,%g5,%l3 89625c28e83SPiotr Jasiukajtis fcmpd %fcc1,%f14,%f12 89725c28e83SPiotr Jasiukajtis fmovd %f14,%f10 89825c28e83SPiotr Jasiukajtis fmovdg %fcc1,%f12,%f10 89925c28e83SPiotr Jasiukajtis fmovdg %fcc1,%f14,%f12 90025c28e83SPiotr Jasiukajtis mov %o0,%o7 90125c28e83SPiotr Jasiukajtis movg %fcc1,%l3,%o0 90225c28e83SPiotr Jasiukajtis movg %fcc1,%o7,%l3 90325c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f20 90425c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f21 90525c28e83SPiotr Jasiukajtis fbu,pn %fcc1,.nan1_from_special1 90625c28e83SPiotr Jasiukajtis! delay slot 90725c28e83SPiotr Jasiukajtis nop 90825c28e83SPiotr Jasiukajtis lda [%i3]%asi,%f28 90925c28e83SPiotr Jasiukajtis lda [%i3+4]%asi,%f29 91025c28e83SPiotr Jasiukajtis fabsd %f20,%f24 91125c28e83SPiotr Jasiukajtis sub %l3,%o0,%l1 91225c28e83SPiotr Jasiukajtis sub %l3,%o3,%g5 91325c28e83SPiotr Jasiukajtis sub %l1,%o4,%o7 91425c28e83SPiotr Jasiukajtis andcc %g5,%o7,%g0 91525c28e83SPiotr Jasiukajtis bge,pn %icc,.big1_from_special1 91625c28e83SPiotr Jasiukajtis! delay slot 91725c28e83SPiotr Jasiukajtis nop 91825c28e83SPiotr Jasiukajtis cmp %o0,%o5 91925c28e83SPiotr Jasiukajtis bl,pn %icc,.small1_from_special1 92025c28e83SPiotr Jasiukajtis! delay slot 92125c28e83SPiotr Jasiukajtis lda [%i1]%asi,%o0 92225c28e83SPiotr Jasiukajtis fabsd %f28,%f22 92325c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 92425c28e83SPiotr Jasiukajtis add %l1,%o1,%l1 92525c28e83SPiotr Jasiukajtis srl %l1,10,%l1 92625c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 92725c28e83SPiotr Jasiukajtis ble,pn %icc,.last2 92825c28e83SPiotr Jasiukajtis! delay slot 92925c28e83SPiotr Jasiukajtis mov %i5,%l6 93025c28e83SPiotr Jasiukajtis ba,pt %icc,.cont2 93125c28e83SPiotr Jasiukajtis! delay slot 93225c28e83SPiotr Jasiukajtis nop 93325c28e83SPiotr Jasiukajtis 93425c28e83SPiotr Jasiukajtis 93525c28e83SPiotr Jasiukajtis 93625c28e83SPiotr Jasiukajtis .align 16 93725c28e83SPiotr Jasiukajtis.nan2: 93825c28e83SPiotr Jasiukajtis fmovdg %fcc0,signbit,%f0 93925c28e83SPiotr Jasiukajtis fmuld %f32,%f14,%f32 94025c28e83SPiotr Jasiukajtis fsubd %f10,%f16,%f14 94125c28e83SPiotr Jasiukajtis faddd %f12,%f18,%f18 94225c28e83SPiotr Jasiukajtis fxor %f36,%f0,%f36 94325c28e83SPiotr Jasiukajtis.nan2_from_special2: 94425c28e83SPiotr Jasiukajtis ba,pt %icc,.special2 94525c28e83SPiotr Jasiukajtis! delay slot 94625c28e83SPiotr Jasiukajtis fmuld %f20,%f22,%f26 94725c28e83SPiotr Jasiukajtis 94825c28e83SPiotr Jasiukajtis 94925c28e83SPiotr Jasiukajtis .align 16 95025c28e83SPiotr Jasiukajtis.big2: 95125c28e83SPiotr Jasiukajtis fxor %f36,%f0,%f36 95225c28e83SPiotr Jasiukajtis.big2_from_special2: 953*55fea89dSDan Cross cmp %g5,%o5 95425c28e83SPiotr Jasiukajtis bge,pn %icc,.return_ah2 95525c28e83SPiotr Jasiukajtis! delay slot 95625c28e83SPiotr Jasiukajtis nop 95725c28e83SPiotr Jasiukajtis cmp %l2,%o4 95825c28e83SPiotr Jasiukajtis bge,pn %icc,1f 95925c28e83SPiotr Jasiukajtis! delay slot 96025c28e83SPiotr Jasiukajtis nop 96125c28e83SPiotr Jasiukajtis ldd [%fp+twom3],%f26 96225c28e83SPiotr Jasiukajtis fmuld %f20,%f26,%f20 96325c28e83SPiotr Jasiukajtis fmuld %f22,%f26,%f22 96425c28e83SPiotr Jasiukajtis ba,pt %icc,.cont3 96525c28e83SPiotr Jasiukajtis! delay slot 96625c28e83SPiotr Jasiukajtis nop 96725c28e83SPiotr Jasiukajtis1: 96825c28e83SPiotr Jasiukajtis fbg,pn %fcc2,.return_ah2 96925c28e83SPiotr Jasiukajtis! delay slot 97025c28e83SPiotr Jasiukajtis nop 97125c28e83SPiotr Jasiukajtis fcmpd %fcc3,%f28,signbit 97225c28e83SPiotr Jasiukajtis fbl,pn %fcc3,.return_ah2 97325c28e83SPiotr Jasiukajtis! delay slot 97425c28e83SPiotr Jasiukajtis nop 97525c28e83SPiotr Jasiukajtis ba,pt %icc,.special2 97625c28e83SPiotr Jasiukajtis! delay slot 97725c28e83SPiotr Jasiukajtis fdivd %f20,%f22,%f26 97825c28e83SPiotr Jasiukajtis 97925c28e83SPiotr Jasiukajtis 98025c28e83SPiotr Jasiukajtis .align 16 98125c28e83SPiotr Jasiukajtis.small2: 98225c28e83SPiotr Jasiukajtis fcmpd %fcc3,%f20,signbit 98325c28e83SPiotr Jasiukajtis fbe,pt %fcc3,.return_ah2 98425c28e83SPiotr Jasiukajtis! delay slot 98525c28e83SPiotr Jasiukajtis nop 98625c28e83SPiotr Jasiukajtis ldd [%fp+two110],%f26 98725c28e83SPiotr Jasiukajtis fmuld %f20,%f26,%f20 98825c28e83SPiotr Jasiukajtis fmuld %f22,%f26,%f22 98925c28e83SPiotr Jasiukajtis st %f20,[%fp+yscl] 99025c28e83SPiotr Jasiukajtis ld [%fp+yscl],%o7 99125c28e83SPiotr Jasiukajtis st %f22,[%fp+xscl] 99225c28e83SPiotr Jasiukajtis ld [%fp+xscl],%l2 99325c28e83SPiotr Jasiukajtis sub %l2,%o7,%l2 99425c28e83SPiotr Jasiukajtis ba,pt %icc,.cont3 99525c28e83SPiotr Jasiukajtis! delay slot 99625c28e83SPiotr Jasiukajtis nop 99725c28e83SPiotr Jasiukajtis 99825c28e83SPiotr Jasiukajtis 99925c28e83SPiotr Jasiukajtis .align 16 100025c28e83SPiotr Jasiukajtis.return_ah2: 100125c28e83SPiotr Jasiukajtis fzero %f20 100225c28e83SPiotr Jasiukajtis fmovdg %fcc2,signbit,%f20 100325c28e83SPiotr Jasiukajtis fxor %f40,%f20,%f40 100425c28e83SPiotr Jasiukajtis fxor %f40,pio2,%f20 100525c28e83SPiotr Jasiukajtis fxor %f46,%f40,%f46 100625c28e83SPiotr Jasiukajtis fnegd pio2,%f26 100725c28e83SPiotr Jasiukajtis fmovdg %fcc2,signbit,%f26 100825c28e83SPiotr Jasiukajtis faddd %f26,%f20,%f26 100925c28e83SPiotr Jasiukajtis sub %g5,%l2,%o7 101025c28e83SPiotr Jasiukajtis cmp %o7,%o5 1011*55fea89dSDan Cross bl,pt %icc,1f 101225c28e83SPiotr Jasiukajtis! delay slot 101325c28e83SPiotr Jasiukajtis nop 101425c28e83SPiotr Jasiukajtis ldd [%fp+pio4],%f20 101525c28e83SPiotr Jasiukajtis faddd %f26,%f20,%f26 101625c28e83SPiotr Jasiukajtis1: 101725c28e83SPiotr Jasiukajtis fdtoi %f26,%f24 101825c28e83SPiotr Jasiukajtis.special2: 101925c28e83SPiotr Jasiukajtis fxor %f26,%f46,%f26 102025c28e83SPiotr Jasiukajtis st %f26,[%l6] 102125c28e83SPiotr Jasiukajtis st %f27,[%l6+4] 102225c28e83SPiotr Jasiukajtis addcc %i0,-1,%i0 102325c28e83SPiotr Jasiukajtis bg,pn %icc,1f 102425c28e83SPiotr Jasiukajtis! delay slot 102525c28e83SPiotr Jasiukajtis nop 102625c28e83SPiotr Jasiukajtis fmovd pio2,%f20 ! set up dummy argument 102725c28e83SPiotr Jasiukajtis fmovd pio2,%f22 102825c28e83SPiotr Jasiukajtis fzero %f40 102925c28e83SPiotr Jasiukajtis fzero %f46 103025c28e83SPiotr Jasiukajtis mov 0,%l2 103125c28e83SPiotr Jasiukajtis ba,pt %icc,.cont3 103225c28e83SPiotr Jasiukajtis! delay slot 103325c28e83SPiotr Jasiukajtis add %fp,junk,%l6 103425c28e83SPiotr Jasiukajtis1: 103525c28e83SPiotr Jasiukajtis lda [%i1]%asi,%f20 103625c28e83SPiotr Jasiukajtis lda [%i1+4]%asi,%f21 103725c28e83SPiotr Jasiukajtis lda [%i3]%asi,%f28 103825c28e83SPiotr Jasiukajtis lda [%i3+4]%asi,%f29 103925c28e83SPiotr Jasiukajtis fabsd %f20,%f24 104025c28e83SPiotr Jasiukajtis lda [%i1]%asi,%o0 104125c28e83SPiotr Jasiukajtis fabsd %f28,%f22 104225c28e83SPiotr Jasiukajtis lda [%i3]%asi,%l3 104325c28e83SPiotr Jasiukajtis mov %i5,%l6 104425c28e83SPiotr Jasiukajtis fand %f20,signbit,%f46 104525c28e83SPiotr Jasiukajtis add %i1,%i2,%i1 104625c28e83SPiotr Jasiukajtis fand %f28,signbit,%f40 104725c28e83SPiotr Jasiukajtis fcmpd %fcc2,%f24,%f22 104825c28e83SPiotr Jasiukajtis add %i3,%i4,%i3 104925c28e83SPiotr Jasiukajtis add %i5,%l7,%i5 105025c28e83SPiotr Jasiukajtis fmovd %f24,%f20 105125c28e83SPiotr Jasiukajtis sethi %hi(0x80000000),%g5 105225c28e83SPiotr Jasiukajtis andn %o0,%g5,%o0 105325c28e83SPiotr Jasiukajtis andn %l3,%g5,%l3 105425c28e83SPiotr Jasiukajtis fmovdg %fcc2,%f22,%f20 105525c28e83SPiotr Jasiukajtis fmovdg %fcc2,%f24,%f22 105625c28e83SPiotr Jasiukajtis mov %o0,%o7 105725c28e83SPiotr Jasiukajtis movg %fcc2,%l3,%o0 105825c28e83SPiotr Jasiukajtis movg %fcc2,%o7,%l3 105925c28e83SPiotr Jasiukajtis fbu,pn %fcc2,.nan2_from_special2 106025c28e83SPiotr Jasiukajtis! delay slot 106125c28e83SPiotr Jasiukajtis nop 106225c28e83SPiotr Jasiukajtis sub %l3,%o0,%l2 106325c28e83SPiotr Jasiukajtis sub %l3,%o3,%g5 106425c28e83SPiotr Jasiukajtis sub %l2,%o4,%o7 106525c28e83SPiotr Jasiukajtis andcc %g5,%o7,%g0 106625c28e83SPiotr Jasiukajtis bge,pn %icc,.big2_from_special2 106725c28e83SPiotr Jasiukajtis! delay slot 106825c28e83SPiotr Jasiukajtis nop 106925c28e83SPiotr Jasiukajtis cmp %o0,%o5 107025c28e83SPiotr Jasiukajtis bl,pn %icc,.small2 107125c28e83SPiotr Jasiukajtis! delay slot 107225c28e83SPiotr Jasiukajtis nop 107325c28e83SPiotr Jasiukajtis ba,pt %icc,.cont3 107425c28e83SPiotr Jasiukajtis! delay slot 107525c28e83SPiotr Jasiukajtis nop 107625c28e83SPiotr Jasiukajtis 107725c28e83SPiotr Jasiukajtis SET_SIZE(__vatan2) 107825c28e83SPiotr Jasiukajtis 1079