1*5d9d9091SRichard Lowe/* 2*5d9d9091SRichard Lowe * CDDL HEADER START 3*5d9d9091SRichard Lowe * 4*5d9d9091SRichard Lowe * The contents of this file are subject to the terms of the 5*5d9d9091SRichard Lowe * Common Development and Distribution License (the "License"). 6*5d9d9091SRichard Lowe * You may not use this file except in compliance with the License. 7*5d9d9091SRichard Lowe * 8*5d9d9091SRichard Lowe * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*5d9d9091SRichard Lowe * or http://www.opensolaris.org/os/licensing. 10*5d9d9091SRichard Lowe * See the License for the specific language governing permissions 11*5d9d9091SRichard Lowe * and limitations under the License. 12*5d9d9091SRichard Lowe * 13*5d9d9091SRichard Lowe * When distributing Covered Code, include this CDDL HEADER in each 14*5d9d9091SRichard Lowe * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*5d9d9091SRichard Lowe * If applicable, add the following below this CDDL HEADER, with the 16*5d9d9091SRichard Lowe * fields enclosed by brackets "[]" replaced with your own identifying 17*5d9d9091SRichard Lowe * information: Portions Copyright [yyyy] [name of copyright owner] 18*5d9d9091SRichard Lowe * 19*5d9d9091SRichard Lowe * CDDL HEADER END 20*5d9d9091SRichard Lowe */ 21*5d9d9091SRichard Lowe/* 22*5d9d9091SRichard Lowe * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23*5d9d9091SRichard Lowe * Use is subject to license terms. 24*5d9d9091SRichard Lowe */ 25*5d9d9091SRichard Lowe 26*5d9d9091SRichard Lowe/* 27*5d9d9091SRichard Lowe * This file is mostly a result of compiling the mont_mulf.c file to generate an 28*5d9d9091SRichard Lowe * assembly output and then hand-editing that output to replace the 29*5d9d9091SRichard Lowe * compiler-generated loop for the 512-bit case (nlen == 16) in the 30*5d9d9091SRichard Lowe * mont_mulf_noconv routine with a hand-crafted version. This file also 31*5d9d9091SRichard Lowe * has big_savefp() and big_restorefp() routines added by hand. 32*5d9d9091SRichard Lowe */ 33*5d9d9091SRichard Lowe 34*5d9d9091SRichard Lowe#include <sys/asm_linkage.h> 35*5d9d9091SRichard Lowe#include <sys/trap.h> 36*5d9d9091SRichard Lowe#include <sys/stack.h> 37*5d9d9091SRichard Lowe#include <sys/privregs.h> 38*5d9d9091SRichard Lowe#include <sys/regset.h> 39*5d9d9091SRichard Lowe#include <sys/vis.h> 40*5d9d9091SRichard Lowe#include <sys/machthread.h> 41*5d9d9091SRichard Lowe#include <sys/machtrap.h> 42*5d9d9091SRichard Lowe#include <sys/machsig.h> 43*5d9d9091SRichard Lowe 44*5d9d9091SRichard Lowe .section ".text",#alloc,#execinstr 45*5d9d9091SRichard Lowe .file "mont_mulf.s" 46*5d9d9091SRichard Lowe 47*5d9d9091SRichard Lowe .section ".bss",#alloc,#write 48*5d9d9091SRichard LoweBbss.bss: 49*5d9d9091SRichard Lowe 50*5d9d9091SRichard Lowe .section ".data",#alloc,#write 51*5d9d9091SRichard LoweDdata.data: 52*5d9d9091SRichard Lowe 53*5d9d9091SRichard Lowe .section ".rodata",#alloc 54*5d9d9091SRichard Lowe! 55*5d9d9091SRichard Lowe! CONSTANT POOL 56*5d9d9091SRichard Lowe! 57*5d9d9091SRichard LoweDrodata.rodata: 58*5d9d9091SRichard Lowe .global TwoTo16 59*5d9d9091SRichard Lowe .align 8 60*5d9d9091SRichard Lowe! 61*5d9d9091SRichard Lowe! CONSTANT POOL 62*5d9d9091SRichard Lowe! 63*5d9d9091SRichard Lowe .global TwoTo16 64*5d9d9091SRichard LoweTwoTo16: 65*5d9d9091SRichard Lowe .word 1089470464 66*5d9d9091SRichard Lowe .word 0 67*5d9d9091SRichard Lowe .type TwoTo16,#object 68*5d9d9091SRichard Lowe .size TwoTo16,8 69*5d9d9091SRichard Lowe .global TwoToMinus16 70*5d9d9091SRichard Lowe! 71*5d9d9091SRichard Lowe! CONSTANT POOL 72*5d9d9091SRichard Lowe! 73*5d9d9091SRichard Lowe .global TwoToMinus16 74*5d9d9091SRichard LoweTwoToMinus16: 75*5d9d9091SRichard Lowe .word 1055916032 76*5d9d9091SRichard Lowe .word 0 77*5d9d9091SRichard Lowe .type TwoToMinus16,#object 78*5d9d9091SRichard Lowe .size TwoToMinus16,8 79*5d9d9091SRichard Lowe .global Zero 80*5d9d9091SRichard Lowe! 81*5d9d9091SRichard Lowe! CONSTANT POOL 82*5d9d9091SRichard Lowe! 83*5d9d9091SRichard Lowe .global Zero 84*5d9d9091SRichard LoweZero: 85*5d9d9091SRichard Lowe .word 0 86*5d9d9091SRichard Lowe .word 0 87*5d9d9091SRichard Lowe .type Zero,#object 88*5d9d9091SRichard Lowe .size Zero,8 89*5d9d9091SRichard Lowe .global TwoTo32 90*5d9d9091SRichard Lowe! 91*5d9d9091SRichard Lowe! CONSTANT POOL 92*5d9d9091SRichard Lowe! 93*5d9d9091SRichard Lowe .global TwoTo32 94*5d9d9091SRichard LoweTwoTo32: 95*5d9d9091SRichard Lowe .word 1106247680 96*5d9d9091SRichard Lowe .word 0 97*5d9d9091SRichard Lowe .type TwoTo32,#object 98*5d9d9091SRichard Lowe .size TwoTo32,8 99*5d9d9091SRichard Lowe .global TwoToMinus32 100*5d9d9091SRichard Lowe! 101*5d9d9091SRichard Lowe! CONSTANT POOL 102*5d9d9091SRichard Lowe! 103*5d9d9091SRichard Lowe .global TwoToMinus32 104*5d9d9091SRichard LoweTwoToMinus32: 105*5d9d9091SRichard Lowe .word 1039138816 106*5d9d9091SRichard Lowe .word 0 107*5d9d9091SRichard Lowe .type TwoToMinus32,#object 108*5d9d9091SRichard Lowe .size TwoToMinus32,8 109*5d9d9091SRichard Lowe 110*5d9d9091SRichard Lowe .section ".text",#alloc,#execinstr 111*5d9d9091SRichard Lowe/* 000000 0 */ .register %g3,#scratch 112*5d9d9091SRichard Lowe/* 000000 */ .register %g2,#scratch 113*5d9d9091SRichard Lowe/* 000000 0 */ .align 32 114*5d9d9091SRichard Lowe! FILE mont_mulf.c 115*5d9d9091SRichard Lowe 116*5d9d9091SRichard Lowe! 1 !/* 117*5d9d9091SRichard Lowe! 2 ! * Copyright 2005 Sun Microsystems, Inc. All rights reserved. 118*5d9d9091SRichard Lowe! 3 ! * Use is subject to license terms. 119*5d9d9091SRichard Lowe! 4 ! */ 120*5d9d9091SRichard Lowe! 6 !#pragma ident "@(#)mont_mulf.c 1.2 01/09/24 SMI" 121*5d9d9091SRichard Lowe! 9 !/* 122*5d9d9091SRichard Lowe! 10 ! * If compiled without -DRF_INLINE_MACROS then needs -lm at link time 123*5d9d9091SRichard Lowe! 11 ! * If compiled with -DRF_INLINE_MACROS then needs conv.il at compile time 124*5d9d9091SRichard Lowe! 12 ! * (i.e. cc <compileer_flags> -DRF_INLINE_MACROS conv.il mont_mulf.c ) 125*5d9d9091SRichard Lowe! 13 ! */ 126*5d9d9091SRichard Lowe! 15 !#include <sys/types.h> 127*5d9d9091SRichard Lowe! 16 !#include <math.h> 128*5d9d9091SRichard Lowe! 18 !static const double TwoTo16 = 65536.0; 129*5d9d9091SRichard Lowe! 19 !static const double TwoToMinus16 = 1.0/65536.0; 130*5d9d9091SRichard Lowe! 20 !static const double Zero = 0.0; 131*5d9d9091SRichard Lowe! 21 !static const double TwoTo32 = 65536.0 * 65536.0; 132*5d9d9091SRichard Lowe! 22 !static const double TwoToMinus32 = 1.0 / (65536.0 * 65536.0); 133*5d9d9091SRichard Lowe! 24 !#ifdef RF_INLINE_MACROS 134*5d9d9091SRichard Lowe! 26 !double upper32(double); 135*5d9d9091SRichard Lowe! 27 !double lower32(double, double); 136*5d9d9091SRichard Lowe! 28 !double mod(double, double, double); 137*5d9d9091SRichard Lowe! 30 !#else 138*5d9d9091SRichard Lowe! 32 !static double 139*5d9d9091SRichard Lowe! 33 !upper32(double x) 140*5d9d9091SRichard Lowe! 34 !{ 141*5d9d9091SRichard Lowe! 35 ! return (floor(x * TwoToMinus32)); 142*5d9d9091SRichard Lowe! 36 !} 143*5d9d9091SRichard Lowe! 39 !/* ARGSUSED */ 144*5d9d9091SRichard Lowe! 40 !static double 145*5d9d9091SRichard Lowe! 41 !lower32(double x, double y) 146*5d9d9091SRichard Lowe! 42 !{ 147*5d9d9091SRichard Lowe! 43 ! return (x - TwoTo32 * floor(x * TwoToMinus32)); 148*5d9d9091SRichard Lowe! 44 !} 149*5d9d9091SRichard Lowe! 46 !static double 150*5d9d9091SRichard Lowe! 47 !mod(double x, double oneoverm, double m) 151*5d9d9091SRichard Lowe! 48 !{ 152*5d9d9091SRichard Lowe! 49 ! return (x - m * floor(x * oneoverm)); 153*5d9d9091SRichard Lowe! 50 !} 154*5d9d9091SRichard Lowe! 52 !#endif 155*5d9d9091SRichard Lowe! 55 !static void 156*5d9d9091SRichard Lowe! 56 !cleanup(double *dt, int from, int tlen) 157*5d9d9091SRichard Lowe! 57 !{ 158*5d9d9091SRichard Lowe 159*5d9d9091SRichard Lowe! 160*5d9d9091SRichard Lowe! SUBROUTINE cleanup 161*5d9d9091SRichard Lowe! 162*5d9d9091SRichard Lowe! OFFSET SOURCE LINE LABEL INSTRUCTION 163*5d9d9091SRichard Lowe 164*5d9d9091SRichard Lowe cleanup: 165*5d9d9091SRichard Lowe/* 000000 57 */ sra %o1,0,%o4 166*5d9d9091SRichard Lowe/* 0x0004 */ sra %o2,0,%o5 167*5d9d9091SRichard Lowe 168*5d9d9091SRichard Lowe! 58 ! int i; 169*5d9d9091SRichard Lowe! 59 ! double tmp, tmp1, x, x1; 170*5d9d9091SRichard Lowe! 61 ! tmp = tmp1 = Zero; 171*5d9d9091SRichard Lowe 172*5d9d9091SRichard Lowe/* 0x0008 61 */ sll %o5,1,%g5 173*5d9d9091SRichard Lowe 174*5d9d9091SRichard Lowe! 63 ! for (i = 2 * from; i < 2 * tlen; i += 2) { 175*5d9d9091SRichard Lowe 176*5d9d9091SRichard Lowe/* 0x000c 63 */ sll %o4,1,%g3 177*5d9d9091SRichard Lowe/* 0x0010 */ cmp %g3,%g5 178*5d9d9091SRichard Lowe/* 0x0014 */ bge,pn %icc,.L77000188 179*5d9d9091SRichard Lowe/* 0x0018 0 */ sethi %hi(Zero),%o3 180*5d9d9091SRichard Lowe .L77000197: 181*5d9d9091SRichard Lowe/* 0x001c 63 */ ldd [%o3+%lo(Zero)],%f8 182*5d9d9091SRichard Lowe/* 0x0020 */ sra %g3,0,%o1 183*5d9d9091SRichard Lowe/* 0x0024 */ sub %g5,1,%g2 184*5d9d9091SRichard Lowe/* 0x0028 */ sllx %o1,3,%g4 185*5d9d9091SRichard Lowe 186*5d9d9091SRichard Lowe! 64 ! x = dt[i]; 187*5d9d9091SRichard Lowe 188*5d9d9091SRichard Lowe/* 0x002c 64 */ ldd [%g4+%o0],%f10 189*5d9d9091SRichard Lowe/* 0x0030 63 */ add %g4,%o0,%g1 190*5d9d9091SRichard Lowe/* 0x0034 */ fmovd %f8,%f18 191*5d9d9091SRichard Lowe/* 0x0038 */ fmovd %f8,%f16 192*5d9d9091SRichard Lowe 193*5d9d9091SRichard Lowe! 65 ! x1 = dt[i + 1]; 194*5d9d9091SRichard Lowe! 66 ! dt[i] = lower32(x, Zero) + tmp; 195*5d9d9091SRichard Lowe 196*5d9d9091SRichard Lowe .L900000110: 197*5d9d9091SRichard Lowe/* 0x003c 66 */ fdtox %f10,%f0 198*5d9d9091SRichard Lowe/* 0x0040 65 */ ldd [%g1+8],%f12 199*5d9d9091SRichard Lowe 200*5d9d9091SRichard Lowe! 67 ! dt[i + 1] = lower32(x1, Zero) + tmp1; 201*5d9d9091SRichard Lowe! 68 ! tmp = upper32(x); 202*5d9d9091SRichard Lowe! 69 ! tmp1 = upper32(x1); 203*5d9d9091SRichard Lowe 204*5d9d9091SRichard Lowe/* 0x0044 69 */ add %g3,2,%g3 205*5d9d9091SRichard Lowe/* 0x0048 */ cmp %g3,%g2 206*5d9d9091SRichard Lowe/* 0x004c 67 */ fdtox %f12,%f2 207*5d9d9091SRichard Lowe/* 0x0050 68 */ fmovd %f0,%f4 208*5d9d9091SRichard Lowe/* 0x0054 66 */ fmovs %f8,%f0 209*5d9d9091SRichard Lowe/* 0x0058 67 */ fmovs %f8,%f2 210*5d9d9091SRichard Lowe/* 0x005c 66 */ fxtod %f0,%f0 211*5d9d9091SRichard Lowe/* 0x0060 67 */ fxtod %f2,%f2 212*5d9d9091SRichard Lowe/* 0x0064 69 */ fdtox %f12,%f6 213*5d9d9091SRichard Lowe/* 0x0068 66 */ faddd %f0,%f18,%f10 214*5d9d9091SRichard Lowe/* 0x006c */ std %f10,[%g1] 215*5d9d9091SRichard Lowe/* 0x0070 67 */ faddd %f2,%f16,%f14 216*5d9d9091SRichard Lowe/* 0x0074 */ std %f14,[%g1+8] 217*5d9d9091SRichard Lowe/* 0x0078 68 */ fitod %f4,%f18 218*5d9d9091SRichard Lowe/* 0x007c 69 */ add %g1,16,%g1 219*5d9d9091SRichard Lowe/* 0x0080 */ fitod %f6,%f16 220*5d9d9091SRichard Lowe/* 0x0084 */ ble,a,pt %icc,.L900000110 221*5d9d9091SRichard Lowe/* 0x0088 64 */ ldd [%g1],%f10 222*5d9d9091SRichard Lowe .L77000188: 223*5d9d9091SRichard Lowe/* 0x008c 69 */ retl ! Result = 224*5d9d9091SRichard Lowe/* 0x0090 */ nop 225*5d9d9091SRichard Lowe/* 0x0094 0 */ .type cleanup,2 226*5d9d9091SRichard Lowe/* 0x0094 0 */ .size cleanup,(.-cleanup) 227*5d9d9091SRichard Lowe 228*5d9d9091SRichard Lowe .section ".text",#alloc,#execinstr 229*5d9d9091SRichard Lowe/* 000000 0 */ .align 8 230*5d9d9091SRichard Lowe/* 000000 */ .skip 24 231*5d9d9091SRichard Lowe/* 0x0018 */ .align 32 232*5d9d9091SRichard Lowe 233*5d9d9091SRichard Lowe! 70 ! } 234*5d9d9091SRichard Lowe! 71 !} 235*5d9d9091SRichard Lowe! 75 !#ifdef _KERNEL 236*5d9d9091SRichard Lowe! 76 !/* 237*5d9d9091SRichard Lowe! 77 ! * This only works if 0 <= d < 2^53 238*5d9d9091SRichard Lowe! 78 ! */ 239*5d9d9091SRichard Lowe! 79 !uint64_t 240*5d9d9091SRichard Lowe! 80 !double2uint64_t(double* d) 241*5d9d9091SRichard Lowe! 81 !{ 242*5d9d9091SRichard Lowe! 82 ! uint64_t x; 243*5d9d9091SRichard Lowe! 83 ! uint64_t exp; 244*5d9d9091SRichard Lowe! 84 ! uint64_t man; 245*5d9d9091SRichard Lowe! 86 ! x = *((uint64_t *)d); 246*5d9d9091SRichard Lowe 247*5d9d9091SRichard Lowe! 248*5d9d9091SRichard Lowe! SUBROUTINE double2uint64_t 249*5d9d9091SRichard Lowe! 250*5d9d9091SRichard Lowe! OFFSET SOURCE LINE LABEL INSTRUCTION 251*5d9d9091SRichard Lowe 252*5d9d9091SRichard Lowe .global double2uint64_t 253*5d9d9091SRichard Lowe double2uint64_t: 254*5d9d9091SRichard Lowe/* 000000 86 */ ldx [%o0],%o2 255*5d9d9091SRichard Lowe 256*5d9d9091SRichard Lowe! 87 ! if (x == 0) { 257*5d9d9091SRichard Lowe 258*5d9d9091SRichard Lowe/* 0x0004 87 */ cmp %o2,0 259*5d9d9091SRichard Lowe/* 0x0008 */ bne,pn %xcc,.L900000206 260*5d9d9091SRichard Lowe/* 0x000c 94 */ sethi %hi(0xfff00000),%o5 261*5d9d9091SRichard Lowe .L77000202: 262*5d9d9091SRichard Lowe/* 0x0010 94 */ retl ! Result = %o0 263*5d9d9091SRichard Lowe 264*5d9d9091SRichard Lowe! 88 ! return (0ULL); 265*5d9d9091SRichard Lowe 266*5d9d9091SRichard Lowe/* 0x0014 88 */ or %g0,0,%o0 267*5d9d9091SRichard Lowe 268*5d9d9091SRichard Lowe! 89 ! } 269*5d9d9091SRichard Lowe! 90 ! exp = (x >> 52) - 1023; 270*5d9d9091SRichard Lowe! 91 ! man = (x & 0xfffffffffffffULL) | 0x10000000000000ULL; 271*5d9d9091SRichard Lowe! 92 ! x = man >> (52 - exp); 272*5d9d9091SRichard Lowe! 94 ! return (x); 273*5d9d9091SRichard Lowe 274*5d9d9091SRichard Lowe .L900000206: 275*5d9d9091SRichard Lowe/* 0x0018 94 */ sllx %o5,32,%o4 276*5d9d9091SRichard Lowe/* 0x001c */ srlx %o2,52,%o0 277*5d9d9091SRichard Lowe/* 0x0020 */ sethi %hi(0x40000000),%o1 278*5d9d9091SRichard Lowe/* 0x0024 */ or %g0,1023,%g5 279*5d9d9091SRichard Lowe/* 0x0028 */ sllx %o1,22,%g4 280*5d9d9091SRichard Lowe/* 0x002c */ xor %o4,-1,%o3 281*5d9d9091SRichard Lowe/* 0x0030 */ sub %g5,%o0,%g3 282*5d9d9091SRichard Lowe/* 0x0034 */ and %o2,%o3,%g2 283*5d9d9091SRichard Lowe/* 0x0038 */ or %g2,%g4,%o5 284*5d9d9091SRichard Lowe/* 0x003c */ add %g3,52,%g1 285*5d9d9091SRichard Lowe/* 0x0040 */ retl ! Result = %o0 286*5d9d9091SRichard Lowe/* 0x0044 */ srlx %o5,%g1,%o0 287*5d9d9091SRichard Lowe/* 0x0048 0 */ .type double2uint64_t,2 288*5d9d9091SRichard Lowe/* 0x0048 0 */ .size double2uint64_t,(.-double2uint64_t) 289*5d9d9091SRichard Lowe 290*5d9d9091SRichard Lowe .section ".text",#alloc,#execinstr 291*5d9d9091SRichard Lowe/* 000000 0 */ .align 8 292*5d9d9091SRichard Lowe/* 000000 */ .skip 24 293*5d9d9091SRichard Lowe/* 0x0018 */ .align 32 294*5d9d9091SRichard Lowe 295*5d9d9091SRichard Lowe! 95 !} 296*5d9d9091SRichard Lowe! 96 !#else 297*5d9d9091SRichard Lowe! 97 !/* 298*5d9d9091SRichard Lowe! 98 ! * This only works if 0 <= d < 2^63 299*5d9d9091SRichard Lowe! 99 ! */ 300*5d9d9091SRichard Lowe! 100 !uint64_t 301*5d9d9091SRichard Lowe! 101 !double2uint64_t(double* d) 302*5d9d9091SRichard Lowe! 102 !{ 303*5d9d9091SRichard Lowe! 103 ! return ((int64_t)(*d)); 304*5d9d9091SRichard Lowe! 104 !} 305*5d9d9091SRichard Lowe! 105 !#endif 306*5d9d9091SRichard Lowe! 107 !/* ARGSUSED */ 307*5d9d9091SRichard Lowe! 108 !void 308*5d9d9091SRichard Lowe! 109 !conv_d16_to_i32(uint32_t *i32, double *d16, int64_t *tmp, int ilen) 309*5d9d9091SRichard Lowe! 110 !{ 310*5d9d9091SRichard Lowe 311*5d9d9091SRichard Lowe! 312*5d9d9091SRichard Lowe! SUBROUTINE conv_d16_to_i32 313*5d9d9091SRichard Lowe! 314*5d9d9091SRichard Lowe! OFFSET SOURCE LINE LABEL INSTRUCTION 315*5d9d9091SRichard Lowe 316*5d9d9091SRichard Lowe .global conv_d16_to_i32 317*5d9d9091SRichard Lowe conv_d16_to_i32: 318*5d9d9091SRichard Lowe/* 000000 110 */ save %sp,-176,%sp 319*5d9d9091SRichard Lowe 320*5d9d9091SRichard Lowe! 111 ! int i; 321*5d9d9091SRichard Lowe! 112 ! int64_t t, t1, /* using int64_t and not uint64_t */ 322*5d9d9091SRichard Lowe! 113 ! a, b, c, d; /* because more efficient code is */ 323*5d9d9091SRichard Lowe! 114 ! /* generated this way, and there */ 324*5d9d9091SRichard Lowe! 115 ! /* is no overflow */ 325*5d9d9091SRichard Lowe! 116 ! t1 = 0; 326*5d9d9091SRichard Lowe! 117 ! a = double2uint64_t(&(d16[0])); 327*5d9d9091SRichard Lowe 328*5d9d9091SRichard Lowe/* 0x0004 117 */ ldx [%i1],%o0 329*5d9d9091SRichard Lowe/* 0x0008 118 */ ldx [%i1+8],%i2 330*5d9d9091SRichard Lowe/* 0x000c 117 */ cmp %o0,0 331*5d9d9091SRichard Lowe/* 0x0010 */ bne,pn %xcc,.L77000216 332*5d9d9091SRichard Lowe/* 0x0014 */ or %g0,0,%i4 333*5d9d9091SRichard Lowe .L77000215: 334*5d9d9091SRichard Lowe/* 0x0018 117 */ ba .L900000316 335*5d9d9091SRichard Lowe/* 0x001c 118 */ cmp %i2,0 336*5d9d9091SRichard Lowe .L77000216: 337*5d9d9091SRichard Lowe/* 0x0020 117 */ srlx %o0,52,%o5 338*5d9d9091SRichard Lowe/* 0x0024 */ sethi %hi(0xfff00000),%i4 339*5d9d9091SRichard Lowe/* 0x0028 */ sllx %i4,32,%o2 340*5d9d9091SRichard Lowe/* 0x002c */ sethi %hi(0x40000000),%o7 341*5d9d9091SRichard Lowe/* 0x0030 */ sllx %o7,22,%o3 342*5d9d9091SRichard Lowe/* 0x0034 */ or %g0,1023,%o4 343*5d9d9091SRichard Lowe/* 0x0038 */ xor %o2,-1,%g5 344*5d9d9091SRichard Lowe/* 0x003c */ sub %o4,%o5,%l0 345*5d9d9091SRichard Lowe/* 0x0040 */ and %o0,%g5,%o1 346*5d9d9091SRichard Lowe/* 0x0044 */ add %l0,52,%l1 347*5d9d9091SRichard Lowe/* 0x0048 */ or %o1,%o3,%g4 348*5d9d9091SRichard Lowe 349*5d9d9091SRichard Lowe! 118 ! b = double2uint64_t(&(d16[1])); 350*5d9d9091SRichard Lowe 351*5d9d9091SRichard Lowe/* 0x004c 118 */ cmp %i2,0 352*5d9d9091SRichard Lowe/* 0x0050 117 */ srlx %g4,%l1,%i4 353*5d9d9091SRichard Lowe .L900000316: 354*5d9d9091SRichard Lowe/* 0x0054 118 */ bne,pn %xcc,.L77000222 355*5d9d9091SRichard Lowe/* 0x0058 134 */ sub %i3,1,%l3 356*5d9d9091SRichard Lowe .L77000221: 357*5d9d9091SRichard Lowe/* 0x005c 118 */ or %g0,0,%i2 358*5d9d9091SRichard Lowe/* 0x0060 */ ba .L900000315 359*5d9d9091SRichard Lowe/* 0x0064 116 */ or %g0,0,%o3 360*5d9d9091SRichard Lowe .L77000222: 361*5d9d9091SRichard Lowe/* 0x0068 118 */ srlx %i2,52,%l6 362*5d9d9091SRichard Lowe/* 0x006c */ sethi %hi(0xfff00000),%g4 363*5d9d9091SRichard Lowe/* 0x0070 */ sllx %g4,32,%i5 364*5d9d9091SRichard Lowe/* 0x0074 */ sethi %hi(0x40000000),%l5 365*5d9d9091SRichard Lowe/* 0x0078 */ xor %i5,-1,%l4 366*5d9d9091SRichard Lowe/* 0x007c */ or %g0,1023,%l2 367*5d9d9091SRichard Lowe/* 0x0080 */ and %i2,%l4,%l7 368*5d9d9091SRichard Lowe/* 0x0084 */ sllx %l5,22,%i2 369*5d9d9091SRichard Lowe/* 0x0088 */ sub %l2,%l6,%g1 370*5d9d9091SRichard Lowe/* 0x008c */ or %l7,%i2,%g3 371*5d9d9091SRichard Lowe/* 0x0090 */ add %g1,52,%g2 372*5d9d9091SRichard Lowe/* 0x0094 116 */ or %g0,0,%o3 373*5d9d9091SRichard Lowe/* 0x0098 118 */ srlx %g3,%g2,%i2 374*5d9d9091SRichard Lowe 375*5d9d9091SRichard Lowe! 119 ! for (i = 0; i < ilen - 1; i++) { 376*5d9d9091SRichard Lowe 377*5d9d9091SRichard Lowe .L900000315: 378*5d9d9091SRichard Lowe/* 0x009c 119 */ cmp %l3,0 379*5d9d9091SRichard Lowe/* 0x00a0 */ ble,pn %icc,.L77000210 380*5d9d9091SRichard Lowe/* 0x00a4 */ or %g0,0,%l4 381*5d9d9091SRichard Lowe .L77000245: 382*5d9d9091SRichard Lowe/* 0x00a8 118 */ sethi %hi(0xfff00000),%l7 383*5d9d9091SRichard Lowe/* 0x00ac */ or %g0,-1,%l6 384*5d9d9091SRichard Lowe/* 0x00b0 */ sllx %l7,32,%l3 385*5d9d9091SRichard Lowe/* 0x00b4 */ srl %l6,0,%l6 386*5d9d9091SRichard Lowe/* 0x00b8 */ sethi %hi(0x40000000),%l1 387*5d9d9091SRichard Lowe/* 0x00bc */ sethi %hi(0xfc00),%l2 388*5d9d9091SRichard Lowe/* 0x00c0 */ xor %l3,-1,%l7 389*5d9d9091SRichard Lowe/* 0x00c4 */ sllx %l1,22,%l3 390*5d9d9091SRichard Lowe/* 0x00c8 */ sub %i3,2,%l5 391*5d9d9091SRichard Lowe/* 0x00cc */ add %l2,1023,%l2 392*5d9d9091SRichard Lowe/* 0x00d0 */ or %g0,2,%g2 393*5d9d9091SRichard Lowe/* 0x00d4 */ or %g0,%i0,%g1 394*5d9d9091SRichard Lowe 395*5d9d9091SRichard Lowe! 120 ! c = double2uint64_t(&(d16[2 * i + 2])); 396*5d9d9091SRichard Lowe 397*5d9d9091SRichard Lowe .L77000208: 398*5d9d9091SRichard Lowe/* 0x00d8 120 */ sra %g2,0,%g3 399*5d9d9091SRichard Lowe/* 0x00dc 123 */ add %g2,1,%o2 400*5d9d9091SRichard Lowe/* 0x00e0 120 */ sllx %g3,3,%i3 401*5d9d9091SRichard Lowe 402*5d9d9091SRichard Lowe! 121 ! t1 += a & 0xffffffff; 403*5d9d9091SRichard Lowe! 122 ! t = (a >> 32); 404*5d9d9091SRichard Lowe! 123 ! d = double2uint64_t(&(d16[2 * i + 3])); 405*5d9d9091SRichard Lowe 406*5d9d9091SRichard Lowe/* 0x00e4 123 */ sra %o2,0,%g5 407*5d9d9091SRichard Lowe/* 0x00e8 120 */ ldx [%i1+%i3],%o5 408*5d9d9091SRichard Lowe/* 0x00ec 123 */ sllx %g5,3,%o0 409*5d9d9091SRichard Lowe/* 0x00f0 121 */ and %i4,%l6,%g4 410*5d9d9091SRichard Lowe/* 0x00f4 123 */ ldx [%i1+%o0],%i3 411*5d9d9091SRichard Lowe/* 0x00f8 120 */ cmp %o5,0 412*5d9d9091SRichard Lowe/* 0x00fc */ bne,pn %xcc,.L77000228 413*5d9d9091SRichard Lowe/* 0x0100 124 */ and %i2,%l2,%i5 414*5d9d9091SRichard Lowe .L77000227: 415*5d9d9091SRichard Lowe/* 0x0104 120 */ or %g0,0,%l1 416*5d9d9091SRichard Lowe/* 0x0108 */ ba .L900000314 417*5d9d9091SRichard Lowe/* 0x010c 121 */ add %o3,%g4,%o0 418*5d9d9091SRichard Lowe .L77000228: 419*5d9d9091SRichard Lowe/* 0x0110 120 */ srlx %o5,52,%o7 420*5d9d9091SRichard Lowe/* 0x0114 */ and %o5,%l7,%o5 421*5d9d9091SRichard Lowe/* 0x0118 */ or %g0,52,%l0 422*5d9d9091SRichard Lowe/* 0x011c */ sub %o7,1023,%o4 423*5d9d9091SRichard Lowe/* 0x0120 */ or %o5,%l3,%l1 424*5d9d9091SRichard Lowe/* 0x0124 */ sub %l0,%o4,%o1 425*5d9d9091SRichard Lowe/* 0x0128 */ srlx %l1,%o1,%l1 426*5d9d9091SRichard Lowe/* 0x012c 121 */ add %o3,%g4,%o0 427*5d9d9091SRichard Lowe .L900000314: 428*5d9d9091SRichard Lowe/* 0x0130 122 */ srax %i4,32,%g3 429*5d9d9091SRichard Lowe/* 0x0134 123 */ cmp %i3,0 430*5d9d9091SRichard Lowe/* 0x0138 */ bne,pn %xcc,.L77000234 431*5d9d9091SRichard Lowe/* 0x013c 124 */ sllx %i5,16,%g5 432*5d9d9091SRichard Lowe .L77000233: 433*5d9d9091SRichard Lowe/* 0x0140 123 */ or %g0,0,%o2 434*5d9d9091SRichard Lowe/* 0x0144 */ ba .L900000313 435*5d9d9091SRichard Lowe/* 0x0148 124 */ add %o0,%g5,%o7 436*5d9d9091SRichard Lowe .L77000234: 437*5d9d9091SRichard Lowe/* 0x014c 123 */ srlx %i3,52,%o2 438*5d9d9091SRichard Lowe/* 0x0150 */ and %i3,%l7,%i4 439*5d9d9091SRichard Lowe/* 0x0154 */ sub %o2,1023,%o1 440*5d9d9091SRichard Lowe/* 0x0158 */ or %g0,52,%g4 441*5d9d9091SRichard Lowe/* 0x015c */ sub %g4,%o1,%i5 442*5d9d9091SRichard Lowe/* 0x0160 */ or %i4,%l3,%i3 443*5d9d9091SRichard Lowe/* 0x0164 */ srlx %i3,%i5,%o2 444*5d9d9091SRichard Lowe 445*5d9d9091SRichard Lowe! 124 ! t1 += (b & 0xffff) << 16; 446*5d9d9091SRichard Lowe 447*5d9d9091SRichard Lowe/* 0x0168 124 */ add %o0,%g5,%o7 448*5d9d9091SRichard Lowe 449*5d9d9091SRichard Lowe! 125 ! t += (b >> 16) + (t1 >> 32); 450*5d9d9091SRichard Lowe 451*5d9d9091SRichard Lowe .L900000313: 452*5d9d9091SRichard Lowe/* 0x016c 125 */ srax %i2,16,%l0 453*5d9d9091SRichard Lowe/* 0x0170 */ srax %o7,32,%o4 454*5d9d9091SRichard Lowe/* 0x0174 */ add %l0,%o4,%o3 455*5d9d9091SRichard Lowe 456*5d9d9091SRichard Lowe! 126 ! i32[i] = t1 & 0xffffffff; 457*5d9d9091SRichard Lowe! 127 ! t1 = t; 458*5d9d9091SRichard Lowe! 128 ! a = c; 459*5d9d9091SRichard Lowe! 129 ! b = d; 460*5d9d9091SRichard Lowe 461*5d9d9091SRichard Lowe/* 0x0178 129 */ add %l4,1,%l4 462*5d9d9091SRichard Lowe/* 0x017c 126 */ and %o7,%l6,%o5 463*5d9d9091SRichard Lowe/* 0x0180 125 */ add %g3,%o3,%o3 464*5d9d9091SRichard Lowe/* 0x0184 126 */ st %o5,[%g1] 465*5d9d9091SRichard Lowe/* 0x0188 128 */ or %g0,%l1,%i4 466*5d9d9091SRichard Lowe/* 0x018c 129 */ or %g0,%o2,%i2 467*5d9d9091SRichard Lowe/* 0x0190 */ add %g2,2,%g2 468*5d9d9091SRichard Lowe/* 0x0194 */ cmp %l4,%l5 469*5d9d9091SRichard Lowe/* 0x0198 */ ble,pt %icc,.L77000208 470*5d9d9091SRichard Lowe/* 0x019c */ add %g1,4,%g1 471*5d9d9091SRichard Lowe 472*5d9d9091SRichard Lowe! 130 ! } 473*5d9d9091SRichard Lowe! 131 ! t1 += a & 0xffffffff; 474*5d9d9091SRichard Lowe! 132 ! t = (a >> 32); 475*5d9d9091SRichard Lowe! 133 ! t1 += (b & 0xffff) << 16; 476*5d9d9091SRichard Lowe! 134 ! i32[i] = t1 & 0xffffffff; 477*5d9d9091SRichard Lowe 478*5d9d9091SRichard Lowe .L77000210: 479*5d9d9091SRichard Lowe/* 0x01a0 134 */ sra %l4,0,%l4 480*5d9d9091SRichard Lowe/* 0x01a4 */ sethi %hi(0xfc00),%i1 481*5d9d9091SRichard Lowe/* 0x01a8 */ add %o3,%i4,%l2 482*5d9d9091SRichard Lowe/* 0x01ac */ add %i1,1023,%i5 483*5d9d9091SRichard Lowe/* 0x01b0 */ and %i2,%i5,%l5 484*5d9d9091SRichard Lowe/* 0x01b4 */ sllx %l4,2,%i2 485*5d9d9091SRichard Lowe/* 0x01b8 */ sllx %l5,16,%l6 486*5d9d9091SRichard Lowe/* 0x01bc */ add %l2,%l6,%l7 487*5d9d9091SRichard Lowe/* 0x01c0 */ st %l7,[%i0+%i2] 488*5d9d9091SRichard Lowe/* 0x01c4 129 */ ret ! Result = 489*5d9d9091SRichard Lowe/* 0x01c8 */ restore %g0,%g0,%g0 490*5d9d9091SRichard Lowe/* 0x01cc 0 */ .type conv_d16_to_i32,2 491*5d9d9091SRichard Lowe/* 0x01cc 0 */ .size conv_d16_to_i32,(.-conv_d16_to_i32) 492*5d9d9091SRichard Lowe 493*5d9d9091SRichard Lowe .section ".text",#alloc,#execinstr 494*5d9d9091SRichard Lowe/* 000000 0 */ .align 8 495*5d9d9091SRichard Lowe! 496*5d9d9091SRichard Lowe! CONSTANT POOL 497*5d9d9091SRichard Lowe! 498*5d9d9091SRichard Lowe ___const_seg_900000401: 499*5d9d9091SRichard Lowe/* 000000 0 */ .word 1127219200,0 500*5d9d9091SRichard Lowe/* 0x0008 */ .word 1127219200 501*5d9d9091SRichard Lowe/* 0x000c 0 */ .type ___const_seg_900000401,1 502*5d9d9091SRichard Lowe/* 0x000c 0 */ .size ___const_seg_900000401,(.-___const_seg_900000401) 503*5d9d9091SRichard Lowe/* 0x000c 0 */ .align 8 504*5d9d9091SRichard Lowe/* 0x0010 */ .skip 24 505*5d9d9091SRichard Lowe/* 0x0028 */ .align 32 506*5d9d9091SRichard Lowe 507*5d9d9091SRichard Lowe! 135 !} 508*5d9d9091SRichard Lowe! 138 !void 509*5d9d9091SRichard Lowe! 139 !conv_i32_to_d32(double *d32, uint32_t *i32, int len) 510*5d9d9091SRichard Lowe! 140 !{ 511*5d9d9091SRichard Lowe 512*5d9d9091SRichard Lowe! 513*5d9d9091SRichard Lowe! SUBROUTINE conv_i32_to_d32 514*5d9d9091SRichard Lowe! 515*5d9d9091SRichard Lowe! OFFSET SOURCE LINE LABEL INSTRUCTION 516*5d9d9091SRichard Lowe 517*5d9d9091SRichard Lowe .global conv_i32_to_d32 518*5d9d9091SRichard Lowe conv_i32_to_d32: 519*5d9d9091SRichard Lowe/* 000000 140 */ orcc %g0,%o2,%o2 520*5d9d9091SRichard Lowe 521*5d9d9091SRichard Lowe! 141 ! int i; 522*5d9d9091SRichard Lowe! 143 !#pragma pipeloop(0) 523*5d9d9091SRichard Lowe! 144 ! for (i = 0; i < len; i++) 524*5d9d9091SRichard Lowe 525*5d9d9091SRichard Lowe/* 0x0004 144 */ ble,pn %icc,.L77000254 526*5d9d9091SRichard Lowe/* 0x0008 */ sub %o2,1,%o3 527*5d9d9091SRichard Lowe .L77000263: 528*5d9d9091SRichard Lowe/* 0x000c 140 */ or %g0,%o0,%o2 529*5d9d9091SRichard Lowe 530*5d9d9091SRichard Lowe! 145 ! d32[i] = (double)(i32[i]); 531*5d9d9091SRichard Lowe 532*5d9d9091SRichard Lowe/* 0x0010 145 */ add %o3,1,%o5 533*5d9d9091SRichard Lowe/* 0x0014 144 */ or %g0,0,%g5 534*5d9d9091SRichard Lowe/* 0x0018 145 */ cmp %o5,10 535*5d9d9091SRichard Lowe/* 0x001c */ bl,pn %icc,.L77000261 536*5d9d9091SRichard Lowe/* 0x0020 */ sethi %hi(___const_seg_900000401),%g4 537*5d9d9091SRichard Lowe .L900000407: 538*5d9d9091SRichard Lowe/* 0x0024 145 */ prefetch [%o1],0 539*5d9d9091SRichard Lowe/* 0x0028 */ prefetch [%o0],22 540*5d9d9091SRichard Lowe/* 0x002c */ sethi %hi(___const_seg_900000401+8),%o4 541*5d9d9091SRichard Lowe/* 0x0030 */ or %g0,%o0,%o2 542*5d9d9091SRichard Lowe/* 0x0034 */ prefetch [%o1+64],0 543*5d9d9091SRichard Lowe/* 0x0038 */ add %o1,8,%o0 544*5d9d9091SRichard Lowe/* 0x003c */ sub %o3,7,%o5 545*5d9d9091SRichard Lowe/* 0x0040 */ prefetch [%o2+64],22 546*5d9d9091SRichard Lowe/* 0x0044 */ or %g0,2,%g5 547*5d9d9091SRichard Lowe/* 0x0048 */ prefetch [%o2+128],22 548*5d9d9091SRichard Lowe/* 0x004c */ prefetch [%o2+192],22 549*5d9d9091SRichard Lowe/* 0x0050 */ prefetch [%o1+128],0 550*5d9d9091SRichard Lowe/* 0x0054 */ ld [%o4+%lo(___const_seg_900000401+8)],%f2 551*5d9d9091SRichard Lowe/* 0x0058 */ ldd [%g4+%lo(___const_seg_900000401)],%f16 552*5d9d9091SRichard Lowe/* 0x005c */ fmovs %f2,%f0 553*5d9d9091SRichard Lowe/* 0x0060 */ prefetch [%o2+256],22 554*5d9d9091SRichard Lowe/* 0x0064 */ prefetch [%o2+320],22 555*5d9d9091SRichard Lowe/* 0x0068 */ ld [%o1],%f3 556*5d9d9091SRichard Lowe/* 0x006c */ prefetch [%o1+192],0 557*5d9d9091SRichard Lowe/* 0x0070 */ ld [%o1+4],%f1 558*5d9d9091SRichard Lowe .L900000405: 559*5d9d9091SRichard Lowe/* 0x0074 145 */ prefetch [%o0+188],0 560*5d9d9091SRichard Lowe/* 0x0078 */ fsubd %f2,%f16,%f22 561*5d9d9091SRichard Lowe/* 0x007c */ add %g5,8,%g5 562*5d9d9091SRichard Lowe/* 0x0080 */ add %o0,32,%o0 563*5d9d9091SRichard Lowe/* 0x0084 */ ld [%o4+%lo(___const_seg_900000401+8)],%f4 564*5d9d9091SRichard Lowe/* 0x0088 */ std %f22,[%o2] 565*5d9d9091SRichard Lowe/* 0x008c */ cmp %g5,%o5 566*5d9d9091SRichard Lowe/* 0x0090 */ ld [%o0-32],%f5 567*5d9d9091SRichard Lowe/* 0x0094 */ fsubd %f0,%f16,%f24 568*5d9d9091SRichard Lowe/* 0x0098 */ add %o2,64,%o2 569*5d9d9091SRichard Lowe/* 0x009c */ fmovs %f4,%f0 570*5d9d9091SRichard Lowe/* 0x00a0 */ std %f24,[%o2-56] 571*5d9d9091SRichard Lowe/* 0x00a4 */ ld [%o0-28],%f1 572*5d9d9091SRichard Lowe/* 0x00a8 */ fsubd %f4,%f16,%f26 573*5d9d9091SRichard Lowe/* 0x00ac */ fmovs %f0,%f6 574*5d9d9091SRichard Lowe/* 0x00b0 */ prefetch [%o2+312],22 575*5d9d9091SRichard Lowe/* 0x00b4 */ std %f26,[%o2-48] 576*5d9d9091SRichard Lowe/* 0x00b8 */ ld [%o0-24],%f7 577*5d9d9091SRichard Lowe/* 0x00bc */ fsubd %f0,%f16,%f28 578*5d9d9091SRichard Lowe/* 0x00c0 */ fmovs %f6,%f8 579*5d9d9091SRichard Lowe/* 0x00c4 */ std %f28,[%o2-40] 580*5d9d9091SRichard Lowe/* 0x00c8 */ ld [%o0-20],%f9 581*5d9d9091SRichard Lowe/* 0x00cc */ fsubd %f6,%f16,%f30 582*5d9d9091SRichard Lowe/* 0x00d0 */ fmovs %f8,%f10 583*5d9d9091SRichard Lowe/* 0x00d4 */ std %f30,[%o2-32] 584*5d9d9091SRichard Lowe/* 0x00d8 */ ld [%o0-16],%f11 585*5d9d9091SRichard Lowe/* 0x00dc */ prefetch [%o2+344],22 586*5d9d9091SRichard Lowe/* 0x00e0 */ fsubd %f8,%f16,%f48 587*5d9d9091SRichard Lowe/* 0x00e4 */ fmovs %f10,%f12 588*5d9d9091SRichard Lowe/* 0x00e8 */ std %f48,[%o2-24] 589*5d9d9091SRichard Lowe/* 0x00ec */ ld [%o0-12],%f13 590*5d9d9091SRichard Lowe/* 0x00f0 */ fsubd %f10,%f16,%f50 591*5d9d9091SRichard Lowe/* 0x00f4 */ fmovs %f12,%f2 592*5d9d9091SRichard Lowe/* 0x00f8 */ std %f50,[%o2-16] 593*5d9d9091SRichard Lowe/* 0x00fc */ ld [%o0-8],%f3 594*5d9d9091SRichard Lowe/* 0x0100 */ fsubd %f12,%f16,%f52 595*5d9d9091SRichard Lowe/* 0x0104 */ fmovs %f2,%f0 596*5d9d9091SRichard Lowe/* 0x0108 */ std %f52,[%o2-8] 597*5d9d9091SRichard Lowe/* 0x010c */ ble,pt %icc,.L900000405 598*5d9d9091SRichard Lowe/* 0x0110 */ ld [%o0-4],%f1 599*5d9d9091SRichard Lowe .L900000408: 600*5d9d9091SRichard Lowe/* 0x0114 145 */ fsubd %f2,%f16,%f18 601*5d9d9091SRichard Lowe/* 0x0118 */ add %o2,16,%o2 602*5d9d9091SRichard Lowe/* 0x011c */ cmp %g5,%o3 603*5d9d9091SRichard Lowe/* 0x0120 */ std %f18,[%o2-16] 604*5d9d9091SRichard Lowe/* 0x0124 */ fsubd %f0,%f16,%f20 605*5d9d9091SRichard Lowe/* 0x0128 */ or %g0,%o0,%o1 606*5d9d9091SRichard Lowe/* 0x012c */ bg,pn %icc,.L77000254 607*5d9d9091SRichard Lowe/* 0x0130 */ std %f20,[%o2-8] 608*5d9d9091SRichard Lowe .L77000261: 609*5d9d9091SRichard Lowe/* 0x0134 145 */ ld [%o1],%f15 610*5d9d9091SRichard Lowe .L900000409: 611*5d9d9091SRichard Lowe/* 0x0138 145 */ sethi %hi(___const_seg_900000401+8),%o4 612*5d9d9091SRichard Lowe/* 0x013c */ ldd [%g4+%lo(___const_seg_900000401)],%f16 613*5d9d9091SRichard Lowe/* 0x0140 */ add %g5,1,%g5 614*5d9d9091SRichard Lowe/* 0x0144 */ ld [%o4+%lo(___const_seg_900000401+8)],%f14 615*5d9d9091SRichard Lowe/* 0x0148 */ add %o1,4,%o1 616*5d9d9091SRichard Lowe/* 0x014c */ cmp %g5,%o3 617*5d9d9091SRichard Lowe/* 0x0150 */ fsubd %f14,%f16,%f54 618*5d9d9091SRichard Lowe/* 0x0154 */ std %f54,[%o2] 619*5d9d9091SRichard Lowe/* 0x0158 */ add %o2,8,%o2 620*5d9d9091SRichard Lowe/* 0x015c */ ble,a,pt %icc,.L900000409 621*5d9d9091SRichard Lowe/* 0x0160 */ ld [%o1],%f15 622*5d9d9091SRichard Lowe .L77000254: 623*5d9d9091SRichard Lowe/* 0x0164 145 */ retl ! Result = 624*5d9d9091SRichard Lowe/* 0x0168 */ nop 625*5d9d9091SRichard Lowe/* 0x016c 0 */ .type conv_i32_to_d32,2 626*5d9d9091SRichard Lowe/* 0x016c 0 */ .size conv_i32_to_d32,(.-conv_i32_to_d32) 627*5d9d9091SRichard Lowe 628*5d9d9091SRichard Lowe .section ".text",#alloc,#execinstr 629*5d9d9091SRichard Lowe/* 000000 0 */ .align 8 630*5d9d9091SRichard Lowe! 631*5d9d9091SRichard Lowe! CONSTANT POOL 632*5d9d9091SRichard Lowe! 633*5d9d9091SRichard Lowe ___const_seg_900000501: 634*5d9d9091SRichard Lowe/* 000000 0 */ .word 1127219200,0 635*5d9d9091SRichard Lowe/* 0x0008 */ .word 1127219200 636*5d9d9091SRichard Lowe/* 0x000c 0 */ .type ___const_seg_900000501,1 637*5d9d9091SRichard Lowe/* 0x000c 0 */ .size ___const_seg_900000501,(.-___const_seg_900000501) 638*5d9d9091SRichard Lowe/* 0x000c 0 */ .align 8 639*5d9d9091SRichard Lowe/* 0x0010 */ .skip 24 640*5d9d9091SRichard Lowe/* 0x0028 */ .align 32 641*5d9d9091SRichard Lowe 642*5d9d9091SRichard Lowe! 146 !} 643*5d9d9091SRichard Lowe! 149 !void 644*5d9d9091SRichard Lowe! 150 !conv_i32_to_d16(double *d16, uint32_t *i32, int len) 645*5d9d9091SRichard Lowe! 151 !{ 646*5d9d9091SRichard Lowe 647*5d9d9091SRichard Lowe! 648*5d9d9091SRichard Lowe! SUBROUTINE conv_i32_to_d16 649*5d9d9091SRichard Lowe! 650*5d9d9091SRichard Lowe! OFFSET SOURCE LINE LABEL INSTRUCTION 651*5d9d9091SRichard Lowe 652*5d9d9091SRichard Lowe .global conv_i32_to_d16 653*5d9d9091SRichard Lowe conv_i32_to_d16: 654*5d9d9091SRichard Lowe/* 000000 151 */ save %sp,-368,%sp 655*5d9d9091SRichard Lowe/* 0x0004 */ orcc %g0,%i2,%i2 656*5d9d9091SRichard Lowe 657*5d9d9091SRichard Lowe! 152 ! int i; 658*5d9d9091SRichard Lowe! 153 ! uint32_t a; 659*5d9d9091SRichard Lowe! 155 !#pragma pipeloop(0) 660*5d9d9091SRichard Lowe! 156 ! for (i = 0; i < len; i++) { 661*5d9d9091SRichard Lowe 662*5d9d9091SRichard Lowe/* 0x0008 156 */ ble,pn %icc,.L77000272 663*5d9d9091SRichard Lowe/* 0x000c */ sub %i2,1,%l6 664*5d9d9091SRichard Lowe .L77000281: 665*5d9d9091SRichard Lowe/* 0x0010 156 */ sethi %hi(0xfc00),%i3 666*5d9d9091SRichard Lowe 667*5d9d9091SRichard Lowe! 157 ! a = i32[i]; 668*5d9d9091SRichard Lowe 669*5d9d9091SRichard Lowe/* 0x0014 157 */ or %g0,%i2,%l1 670*5d9d9091SRichard Lowe/* 0x0018 156 */ add %i3,1023,%i4 671*5d9d9091SRichard Lowe/* 0x001c 157 */ cmp %i2,4 672*5d9d9091SRichard Lowe/* 0x0020 151 */ or %g0,%i1,%l7 673*5d9d9091SRichard Lowe/* 0x0024 */ or %g0,%i0,%i2 674*5d9d9091SRichard Lowe/* 0x0028 156 */ or %g0,0,%i5 675*5d9d9091SRichard Lowe/* 0x002c */ or %g0,0,%i3 676*5d9d9091SRichard Lowe/* 0x0030 157 */ bl,pn %icc,.L77000279 677*5d9d9091SRichard Lowe/* 0x0034 0 */ sethi %hi(___const_seg_900000501),%i1 678*5d9d9091SRichard Lowe .L900000508: 679*5d9d9091SRichard Lowe/* 0x0038 157 */ prefetch [%i0+8],22 680*5d9d9091SRichard Lowe/* 0x003c */ prefetch [%i0+72],22 681*5d9d9091SRichard Lowe/* 0x0040 */ or %g0,%i0,%l2 682*5d9d9091SRichard Lowe 683*5d9d9091SRichard Lowe! 158 ! d16[2 * i] = (double)(a & 0xffff); 684*5d9d9091SRichard Lowe 685*5d9d9091SRichard Lowe/* 0x0044 158 */ sethi %hi(___const_seg_900000501+8),%l1 686*5d9d9091SRichard Lowe/* 0x0048 157 */ prefetch [%i0+136],22 687*5d9d9091SRichard Lowe/* 0x004c */ sub %l6,1,%i0 688*5d9d9091SRichard Lowe/* 0x0050 */ or %g0,0,%i3 689*5d9d9091SRichard Lowe/* 0x0054 */ prefetch [%i2+200],22 690*5d9d9091SRichard Lowe/* 0x0058 */ or %g0,2,%i5 691*5d9d9091SRichard Lowe/* 0x005c */ prefetch [%i2+264],22 692*5d9d9091SRichard Lowe/* 0x0060 */ prefetch [%i2+328],22 693*5d9d9091SRichard Lowe/* 0x0064 */ prefetch [%i2+392],22 694*5d9d9091SRichard Lowe/* 0x0068 */ ld [%l7],%l3 695*5d9d9091SRichard Lowe/* 0x006c */ ld [%l7+4],%l4 696*5d9d9091SRichard Lowe/* 0x0070 158 */ ldd [%i1+%lo(___const_seg_900000501)],%f20 697*5d9d9091SRichard Lowe 698*5d9d9091SRichard Lowe! 159 ! d16[2 * i + 1] = (double)(a >> 16); 699*5d9d9091SRichard Lowe 700*5d9d9091SRichard Lowe/* 0x0074 159 */ srl %l3,16,%o1 701*5d9d9091SRichard Lowe/* 0x0078 158 */ and %l3,%i4,%o3 702*5d9d9091SRichard Lowe/* 0x007c */ st %o3,[%sp+2335] 703*5d9d9091SRichard Lowe/* 0x0080 159 */ srl %l4,16,%g4 704*5d9d9091SRichard Lowe/* 0x0084 158 */ and %l4,%i4,%o0 705*5d9d9091SRichard Lowe/* 0x0088 */ st %o0,[%sp+2303] 706*5d9d9091SRichard Lowe/* 0x008c 159 */ add %l7,8,%l7 707*5d9d9091SRichard Lowe/* 0x0090 */ st %o1,[%sp+2271] 708*5d9d9091SRichard Lowe/* 0x0094 */ st %g4,[%sp+2239] 709*5d9d9091SRichard Lowe/* 0x0098 157 */ prefetch [%i2+456],22 710*5d9d9091SRichard Lowe/* 0x009c */ prefetch [%i2+520],22 711*5d9d9091SRichard Lowe .L900000506: 712*5d9d9091SRichard Lowe/* 0x00a0 157 */ prefetch [%l2+536],22 713*5d9d9091SRichard Lowe/* 0x00a4 159 */ add %i5,2,%i5 714*5d9d9091SRichard Lowe/* 0x00a8 157 */ add %l2,32,%l2 715*5d9d9091SRichard Lowe/* 0x00ac */ ld [%l7],%g2 716*5d9d9091SRichard Lowe/* 0x00b0 159 */ cmp %i5,%i0 717*5d9d9091SRichard Lowe/* 0x00b4 */ add %l7,8,%l7 718*5d9d9091SRichard Lowe/* 0x00b8 158 */ ld [%sp+2335],%f9 719*5d9d9091SRichard Lowe/* 0x00bc 159 */ add %i3,4,%i3 720*5d9d9091SRichard Lowe/* 0x00c0 158 */ ld [%l1+%lo(___const_seg_900000501+8)],%f8 721*5d9d9091SRichard Lowe/* 0x00c4 159 */ ld [%sp+2271],%f11 722*5d9d9091SRichard Lowe/* 0x00c8 158 */ and %g2,%i4,%g3 723*5d9d9091SRichard Lowe/* 0x00cc 159 */ fmovs %f8,%f10 724*5d9d9091SRichard Lowe/* 0x00d0 158 */ st %g3,[%sp+2335] 725*5d9d9091SRichard Lowe/* 0x00d4 */ fsubd %f8,%f20,%f28 726*5d9d9091SRichard Lowe/* 0x00d8 */ std %f28,[%l2-32] 727*5d9d9091SRichard Lowe/* 0x00dc 159 */ srl %g2,16,%g1 728*5d9d9091SRichard Lowe/* 0x00e0 */ st %g1,[%sp+2271] 729*5d9d9091SRichard Lowe/* 0x00e4 */ fsubd %f10,%f20,%f30 730*5d9d9091SRichard Lowe/* 0x00e8 */ std %f30,[%l2-24] 731*5d9d9091SRichard Lowe/* 0x00ec 157 */ ld [%l7-4],%l0 732*5d9d9091SRichard Lowe/* 0x00f0 158 */ ld [%sp+2303],%f13 733*5d9d9091SRichard Lowe/* 0x00f4 */ ld [%l1+%lo(___const_seg_900000501+8)],%f12 734*5d9d9091SRichard Lowe/* 0x00f8 159 */ ld [%sp+2239],%f15 735*5d9d9091SRichard Lowe/* 0x00fc 158 */ and %l0,%i4,%l5 736*5d9d9091SRichard Lowe/* 0x0100 159 */ fmovs %f12,%f14 737*5d9d9091SRichard Lowe/* 0x0104 158 */ st %l5,[%sp+2303] 738*5d9d9091SRichard Lowe/* 0x0108 */ fsubd %f12,%f20,%f44 739*5d9d9091SRichard Lowe/* 0x010c */ std %f44,[%l2-16] 740*5d9d9091SRichard Lowe/* 0x0110 159 */ srl %l0,16,%o5 741*5d9d9091SRichard Lowe/* 0x0114 */ st %o5,[%sp+2239] 742*5d9d9091SRichard Lowe/* 0x0118 */ fsubd %f14,%f20,%f46 743*5d9d9091SRichard Lowe/* 0x011c */ ble,pt %icc,.L900000506 744*5d9d9091SRichard Lowe/* 0x0120 */ std %f46,[%l2-8] 745*5d9d9091SRichard Lowe .L900000509: 746*5d9d9091SRichard Lowe/* 0x0124 158 */ ld [%l1+%lo(___const_seg_900000501+8)],%f0 747*5d9d9091SRichard Lowe/* 0x0128 159 */ cmp %i5,%l6 748*5d9d9091SRichard Lowe/* 0x012c */ add %i3,4,%i3 749*5d9d9091SRichard Lowe/* 0x0130 158 */ ld [%sp+2335],%f1 750*5d9d9091SRichard Lowe/* 0x0134 */ ld [%sp+2303],%f5 751*5d9d9091SRichard Lowe/* 0x0138 159 */ fmovs %f0,%f2 752*5d9d9091SRichard Lowe/* 0x013c */ ld [%sp+2271],%f3 753*5d9d9091SRichard Lowe/* 0x0140 158 */ fmovs %f0,%f4 754*5d9d9091SRichard Lowe/* 0x0144 159 */ ld [%sp+2239],%f7 755*5d9d9091SRichard Lowe/* 0x0148 */ fmovs %f0,%f6 756*5d9d9091SRichard Lowe/* 0x014c 158 */ fsubd %f0,%f20,%f22 757*5d9d9091SRichard Lowe/* 0x0150 */ std %f22,[%l2] 758*5d9d9091SRichard Lowe/* 0x0154 159 */ fsubd %f2,%f20,%f24 759*5d9d9091SRichard Lowe/* 0x0158 */ std %f24,[%l2+8] 760*5d9d9091SRichard Lowe/* 0x015c 158 */ fsubd %f4,%f20,%f26 761*5d9d9091SRichard Lowe/* 0x0160 */ std %f26,[%l2+16] 762*5d9d9091SRichard Lowe/* 0x0164 159 */ fsubd %f6,%f20,%f20 763*5d9d9091SRichard Lowe/* 0x0168 */ bg,pn %icc,.L77000272 764*5d9d9091SRichard Lowe/* 0x016c */ std %f20,[%l2+24] 765*5d9d9091SRichard Lowe .L77000279: 766*5d9d9091SRichard Lowe/* 0x0170 157 */ ld [%l7],%l2 767*5d9d9091SRichard Lowe .L900000510: 768*5d9d9091SRichard Lowe/* 0x0174 158 */ and %l2,%i4,%o4 769*5d9d9091SRichard Lowe/* 0x0178 */ st %o4,[%sp+2399] 770*5d9d9091SRichard Lowe/* 0x017c 159 */ srl %l2,16,%o2 771*5d9d9091SRichard Lowe/* 0x0180 */ st %o2,[%sp+2367] 772*5d9d9091SRichard Lowe/* 0x0184 158 */ sethi %hi(___const_seg_900000501+8),%l1 773*5d9d9091SRichard Lowe/* 0x0188 */ sra %i3,0,%i0 774*5d9d9091SRichard Lowe/* 0x018c */ ld [%l1+%lo(___const_seg_900000501+8)],%f16 775*5d9d9091SRichard Lowe/* 0x0190 */ sllx %i0,3,%o1 776*5d9d9091SRichard Lowe/* 0x0194 159 */ add %i3,1,%o3 777*5d9d9091SRichard Lowe/* 0x0198 158 */ ldd [%i1+%lo(___const_seg_900000501)],%f20 778*5d9d9091SRichard Lowe/* 0x019c 159 */ sra %o3,0,%l3 779*5d9d9091SRichard Lowe/* 0x01a0 */ add %i5,1,%i5 780*5d9d9091SRichard Lowe/* 0x01a4 158 */ ld [%sp+2399],%f17 781*5d9d9091SRichard Lowe/* 0x01a8 159 */ sllx %l3,3,%o0 782*5d9d9091SRichard Lowe/* 0x01ac */ add %l7,4,%l7 783*5d9d9091SRichard Lowe/* 0x01b0 */ fmovs %f16,%f18 784*5d9d9091SRichard Lowe/* 0x01b4 */ cmp %i5,%l6 785*5d9d9091SRichard Lowe/* 0x01b8 */ add %i3,2,%i3 786*5d9d9091SRichard Lowe/* 0x01bc 158 */ fsubd %f16,%f20,%f48 787*5d9d9091SRichard Lowe/* 0x01c0 */ std %f48,[%i2+%o1] 788*5d9d9091SRichard Lowe/* 0x01c4 159 */ ld [%sp+2367],%f19 789*5d9d9091SRichard Lowe/* 0x01c8 */ fsubd %f18,%f20,%f50 790*5d9d9091SRichard Lowe/* 0x01cc */ std %f50,[%i2+%o0] 791*5d9d9091SRichard Lowe/* 0x01d0 */ ble,a,pt %icc,.L900000510 792*5d9d9091SRichard Lowe/* 0x01d4 157 */ ld [%l7],%l2 793*5d9d9091SRichard Lowe .L77000272: 794*5d9d9091SRichard Lowe/* 0x01d8 159 */ ret ! Result = 795*5d9d9091SRichard Lowe/* 0x01dc */ restore %g0,%g0,%g0 796*5d9d9091SRichard Lowe/* 0x01e0 0 */ .type conv_i32_to_d16,2 797*5d9d9091SRichard Lowe/* 0x01e0 0 */ .size conv_i32_to_d16,(.-conv_i32_to_d16) 798*5d9d9091SRichard Lowe 799*5d9d9091SRichard Lowe .section ".text",#alloc,#execinstr 800*5d9d9091SRichard Lowe/* 000000 0 */ .align 8 801*5d9d9091SRichard Lowe! 802*5d9d9091SRichard Lowe! CONSTANT POOL 803*5d9d9091SRichard Lowe! 804*5d9d9091SRichard Lowe ___const_seg_900000601: 805*5d9d9091SRichard Lowe/* 000000 0 */ .word 1127219200,0 806*5d9d9091SRichard Lowe/* 0x0008 */ .word 1127219200 807*5d9d9091SRichard Lowe/* 0x000c 0 */ .type ___const_seg_900000601,1 808*5d9d9091SRichard Lowe/* 0x000c 0 */ .size ___const_seg_900000601,(.-___const_seg_900000601) 809*5d9d9091SRichard Lowe/* 0x000c 0 */ .align 8 810*5d9d9091SRichard Lowe/* 0x0010 */ .skip 24 811*5d9d9091SRichard Lowe/* 0x0028 */ .align 32 812*5d9d9091SRichard Lowe 813*5d9d9091SRichard Lowe! 160 ! } 814*5d9d9091SRichard Lowe! 161 !} 815*5d9d9091SRichard Lowe! 163 !#ifdef RF_INLINE_MACROS 816*5d9d9091SRichard Lowe! 165 !void 817*5d9d9091SRichard Lowe! 166 !i16_to_d16_and_d32x4(const double *, /* 1/(2^16) */ 818*5d9d9091SRichard Lowe! 167 ! const double *, /* 2^16 */ 819*5d9d9091SRichard Lowe! 168 ! const double *, /* 0 */ 820*5d9d9091SRichard Lowe! 169 ! double *, /* result16 */ 821*5d9d9091SRichard Lowe! 170 ! double *, /* result32 */ 822*5d9d9091SRichard Lowe! 171 ! float *); /* source - should be unsigned int* */ 823*5d9d9091SRichard Lowe! 172 ! /* converted to float* */ 824*5d9d9091SRichard Lowe! 174 !#else 825*5d9d9091SRichard Lowe! 177 !/* ARGSUSED */ 826*5d9d9091SRichard Lowe! 178 !static void 827*5d9d9091SRichard Lowe! 179 !i16_to_d16_and_d32x4(const double *dummy1, /* 1/(2^16) */ 828*5d9d9091SRichard Lowe! 180 ! const double *dummy2, /* 2^16 */ 829*5d9d9091SRichard Lowe! 181 ! const double *dummy3, /* 0 */ 830*5d9d9091SRichard Lowe! 182 ! double *result16, 831*5d9d9091SRichard Lowe! 183 ! double *result32, 832*5d9d9091SRichard Lowe! 184 ! float *src) /* source - should be unsigned int* */ 833*5d9d9091SRichard Lowe! 185 ! /* converted to float* */ 834*5d9d9091SRichard Lowe! 186 !{ 835*5d9d9091SRichard Lowe! 187 ! uint32_t *i32; 836*5d9d9091SRichard Lowe! 188 ! uint32_t a, b, c, d; 837*5d9d9091SRichard Lowe! 190 ! i32 = (uint32_t *)src; 838*5d9d9091SRichard Lowe! 191 ! a = i32[0]; 839*5d9d9091SRichard Lowe! 192 ! b = i32[1]; 840*5d9d9091SRichard Lowe! 193 ! c = i32[2]; 841*5d9d9091SRichard Lowe! 194 ! d = i32[3]; 842*5d9d9091SRichard Lowe! 195 ! result16[0] = (double)(a & 0xffff); 843*5d9d9091SRichard Lowe! 196 ! result16[1] = (double)(a >> 16); 844*5d9d9091SRichard Lowe! 197 ! result32[0] = (double)a; 845*5d9d9091SRichard Lowe! 198 ! result16[2] = (double)(b & 0xffff); 846*5d9d9091SRichard Lowe! 199 ! result16[3] = (double)(b >> 16); 847*5d9d9091SRichard Lowe! 200 ! result32[1] = (double)b; 848*5d9d9091SRichard Lowe! 201 ! result16[4] = (double)(c & 0xffff); 849*5d9d9091SRichard Lowe! 202 ! result16[5] = (double)(c >> 16); 850*5d9d9091SRichard Lowe! 203 ! result32[2] = (double)c; 851*5d9d9091SRichard Lowe! 204 ! result16[6] = (double)(d & 0xffff); 852*5d9d9091SRichard Lowe! 205 ! result16[7] = (double)(d >> 16); 853*5d9d9091SRichard Lowe! 206 ! result32[3] = (double)d; 854*5d9d9091SRichard Lowe! 207 !} 855*5d9d9091SRichard Lowe! 209 !#endif 856*5d9d9091SRichard Lowe! 212 !void 857*5d9d9091SRichard Lowe! 213 !conv_i32_to_d32_and_d16(double *d32, double *d16, uint32_t *i32, int len) 858*5d9d9091SRichard Lowe! 214 !{ 859*5d9d9091SRichard Lowe 860*5d9d9091SRichard Lowe! 861*5d9d9091SRichard Lowe! SUBROUTINE conv_i32_to_d32_and_d16 862*5d9d9091SRichard Lowe! 863*5d9d9091SRichard Lowe! OFFSET SOURCE LINE LABEL INSTRUCTION 864*5d9d9091SRichard Lowe 865*5d9d9091SRichard Lowe .global conv_i32_to_d32_and_d16 866*5d9d9091SRichard Lowe conv_i32_to_d32_and_d16: 867*5d9d9091SRichard Lowe/* 000000 214 */ save %sp,-368,%sp 868*5d9d9091SRichard Lowe 869*5d9d9091SRichard Lowe! 215 ! int i; 870*5d9d9091SRichard Lowe! 216 ! uint32_t a; 871*5d9d9091SRichard Lowe! 218 !#pragma pipeloop(0) 872*5d9d9091SRichard Lowe! 219 ! for (i = 0; i < len - 3; i += 4) { 873*5d9d9091SRichard Lowe! 220 ! i16_to_d16_and_d32x4(&TwoToMinus16, &TwoTo16, &Zero, 874*5d9d9091SRichard Lowe! 221 ! &(d16[2*i]), &(d32[i]), 875*5d9d9091SRichard Lowe! 222 ! (float *)(&(i32[i]))); 876*5d9d9091SRichard Lowe! 223 ! } 877*5d9d9091SRichard Lowe! 224 ! for (; i < len; i++) { 878*5d9d9091SRichard Lowe! 225 ! a = i32[i]; 879*5d9d9091SRichard Lowe! 226 ! d32[i] = (double)(i32[i]); 880*5d9d9091SRichard Lowe! 227 ! d16[2 * i] = (double)(a & 0xffff); 881*5d9d9091SRichard Lowe! 228 ! d16[2 * i + 1] = (double)(a >> 16); 882*5d9d9091SRichard Lowe 883*5d9d9091SRichard Lowe/* 0x0004 228 */ sub %i3,3,%i4 884*5d9d9091SRichard Lowe/* 0x0008 219 */ cmp %i4,0 885*5d9d9091SRichard Lowe/* 0x000c */ ble,pn %icc,.L77000289 886*5d9d9091SRichard Lowe/* 0x0010 */ or %g0,0,%i5 887*5d9d9091SRichard Lowe .L77000306: 888*5d9d9091SRichard Lowe/* 0x0014 222 */ sethi %hi(Zero),%g3 889*5d9d9091SRichard Lowe/* 0x0018 */ sethi %hi(TwoToMinus16),%g2 890*5d9d9091SRichard Lowe/* 0x001c */ sethi %hi(TwoTo16),%o5 891*5d9d9091SRichard Lowe/* 0x0020 */ ldd [%g3+%lo(Zero)],%f2 892*5d9d9091SRichard Lowe/* 0x0024 219 */ sub %i3,4,%o4 893*5d9d9091SRichard Lowe/* 0x0028 */ or %g0,0,%o3 894*5d9d9091SRichard Lowe/* 0x002c */ or %g0,%i0,%l6 895*5d9d9091SRichard Lowe/* 0x0030 */ or %g0,%i2,%l5 896*5d9d9091SRichard Lowe .L900000615: 897*5d9d9091SRichard Lowe/* 0x0034 222 */ fmovd %f2,%f26 898*5d9d9091SRichard Lowe/* 0x0038 */ ld [%l5],%f27 899*5d9d9091SRichard Lowe/* 0x003c */ sra %o3,0,%o0 900*5d9d9091SRichard Lowe/* 0x0040 */ add %i5,4,%i5 901*5d9d9091SRichard Lowe/* 0x0044 */ fmovd %f2,%f28 902*5d9d9091SRichard Lowe/* 0x0048 */ ld [%l5+4],%f29 903*5d9d9091SRichard Lowe/* 0x004c */ sllx %o0,3,%g5 904*5d9d9091SRichard Lowe/* 0x0050 */ cmp %i5,%o4 905*5d9d9091SRichard Lowe/* 0x0054 */ fmovd %f2,%f30 906*5d9d9091SRichard Lowe/* 0x0058 */ ld [%l5+8],%f31 907*5d9d9091SRichard Lowe/* 0x005c */ add %i1,%g5,%g4 908*5d9d9091SRichard Lowe/* 0x0060 */ add %o3,8,%o3 909*5d9d9091SRichard Lowe/* 0x0064 */ ld [%l5+12],%f3 910*5d9d9091SRichard Lowe/* 0x0068 */ fxtod %f26,%f26 911*5d9d9091SRichard Lowe/* 0x006c */ ldd [%g2+%lo(TwoToMinus16)],%f32 912*5d9d9091SRichard Lowe/* 0x0070 */ fxtod %f28,%f28 913*5d9d9091SRichard Lowe/* 0x0074 */ add %l5,16,%l5 914*5d9d9091SRichard Lowe/* 0x0078 */ fxtod %f30,%f30 915*5d9d9091SRichard Lowe/* 0x007c */ ldd [%o5+%lo(TwoTo16)],%f34 916*5d9d9091SRichard Lowe/* 0x0080 */ fxtod %f2,%f2 917*5d9d9091SRichard Lowe/* 0x0084 */ std %f2,[%l6+24] 918*5d9d9091SRichard Lowe/* 0x0088 */ fmuld %f32,%f26,%f36 919*5d9d9091SRichard Lowe/* 0x008c */ std %f26,[%l6] 920*5d9d9091SRichard Lowe/* 0x0090 */ fmuld %f32,%f28,%f38 921*5d9d9091SRichard Lowe/* 0x0094 */ std %f28,[%l6+8] 922*5d9d9091SRichard Lowe/* 0x0098 */ fmuld %f32,%f30,%f40 923*5d9d9091SRichard Lowe/* 0x009c */ std %f30,[%l6+16] 924*5d9d9091SRichard Lowe/* 0x00a0 */ fmuld %f32,%f2,%f42 925*5d9d9091SRichard Lowe/* 0x00a4 */ add %l6,32,%l6 926*5d9d9091SRichard Lowe/* 0x00a8 */ fdtox %f36,%f36 927*5d9d9091SRichard Lowe/* 0x00ac */ fdtox %f38,%f38 928*5d9d9091SRichard Lowe/* 0x00b0 */ fdtox %f40,%f40 929*5d9d9091SRichard Lowe/* 0x00b4 */ fdtox %f42,%f42 930*5d9d9091SRichard Lowe/* 0x00b8 */ fxtod %f36,%f36 931*5d9d9091SRichard Lowe/* 0x00bc */ std %f36,[%g4+8] 932*5d9d9091SRichard Lowe/* 0x00c0 */ fxtod %f38,%f38 933*5d9d9091SRichard Lowe/* 0x00c4 */ std %f38,[%g4+24] 934*5d9d9091SRichard Lowe/* 0x00c8 */ fxtod %f40,%f40 935*5d9d9091SRichard Lowe/* 0x00cc */ std %f40,[%g4+40] 936*5d9d9091SRichard Lowe/* 0x00d0 */ fxtod %f42,%f42 937*5d9d9091SRichard Lowe/* 0x00d4 */ std %f42,[%g4+56] 938*5d9d9091SRichard Lowe/* 0x00d8 */ fmuld %f36,%f34,%f36 939*5d9d9091SRichard Lowe/* 0x00dc */ fmuld %f38,%f34,%f38 940*5d9d9091SRichard Lowe/* 0x00e0 */ fmuld %f40,%f34,%f40 941*5d9d9091SRichard Lowe/* 0x00e4 */ fmuld %f42,%f34,%f42 942*5d9d9091SRichard Lowe/* 0x00e8 */ fsubd %f26,%f36,%f36 943*5d9d9091SRichard Lowe/* 0x00ec */ std %f36,[%i1+%g5] 944*5d9d9091SRichard Lowe/* 0x00f0 */ fsubd %f28,%f38,%f38 945*5d9d9091SRichard Lowe/* 0x00f4 */ std %f38,[%g4+16] 946*5d9d9091SRichard Lowe/* 0x00f8 */ fsubd %f30,%f40,%f40 947*5d9d9091SRichard Lowe/* 0x00fc */ std %f40,[%g4+32] 948*5d9d9091SRichard Lowe/* 0x0100 */ fsubd %f2,%f42,%f42 949*5d9d9091SRichard Lowe/* 0x0104 */ std %f42,[%g4+48] 950*5d9d9091SRichard Lowe/* 0x0108 */ ble,a,pt %icc,.L900000615 951*5d9d9091SRichard Lowe/* 0x010c */ ldd [%g3+%lo(Zero)],%f2 952*5d9d9091SRichard Lowe .L77000289: 953*5d9d9091SRichard Lowe/* 0x0110 224 */ cmp %i5,%i3 954*5d9d9091SRichard Lowe/* 0x0114 */ bge,pn %icc,.L77000294 955*5d9d9091SRichard Lowe/* 0x0118 */ sethi %hi(0xfc00),%l0 956*5d9d9091SRichard Lowe .L77000307: 957*5d9d9091SRichard Lowe/* 0x011c 224 */ sra %i5,0,%l2 958*5d9d9091SRichard Lowe/* 0x0120 */ sll %i5,1,%i4 959*5d9d9091SRichard Lowe/* 0x0124 */ sllx %l2,3,%l1 960*5d9d9091SRichard Lowe/* 0x0128 */ sllx %l2,2,%o1 961*5d9d9091SRichard Lowe/* 0x012c 225 */ sub %i3,%i5,%l3 962*5d9d9091SRichard Lowe/* 0x0130 224 */ add %l0,1023,%l0 963*5d9d9091SRichard Lowe/* 0x0134 */ add %l1,%i0,%l1 964*5d9d9091SRichard Lowe/* 0x0138 */ add %o1,%i2,%i2 965*5d9d9091SRichard Lowe/* 0x013c 225 */ cmp %l3,5 966*5d9d9091SRichard Lowe/* 0x0140 */ bl,pn %icc,.L77000291 967*5d9d9091SRichard Lowe/* 0x0144 0 */ sethi %hi(___const_seg_900000601),%l7 968*5d9d9091SRichard Lowe .L900000612: 969*5d9d9091SRichard Lowe/* 0x0148 225 */ prefetch [%l1],22 970*5d9d9091SRichard Lowe/* 0x014c */ prefetch [%l1+64],22 971*5d9d9091SRichard Lowe/* 0x0150 */ sra %i4,0,%l6 972*5d9d9091SRichard Lowe/* 0x0154 226 */ sethi %hi(___const_seg_900000601+8),%l2 973*5d9d9091SRichard Lowe/* 0x0158 225 */ prefetch [%l1+128],22 974*5d9d9091SRichard Lowe/* 0x015c */ add %l6,-2,%l5 975*5d9d9091SRichard Lowe/* 0x0160 */ sub %i3,3,%i0 976*5d9d9091SRichard Lowe/* 0x0164 */ prefetch [%l1+192],22 977*5d9d9091SRichard Lowe/* 0x0168 */ sllx %l5,3,%o4 978*5d9d9091SRichard Lowe/* 0x016c 228 */ add %i5,1,%i5 979*5d9d9091SRichard Lowe/* 0x0170 225 */ add %i1,%o4,%o3 980*5d9d9091SRichard Lowe/* 0x0174 */ or %g0,%i3,%g1 981*5d9d9091SRichard Lowe/* 0x0178 */ ld [%i2],%l4 982*5d9d9091SRichard Lowe/* 0x017c */ prefetch [%o3+16],22 983*5d9d9091SRichard Lowe/* 0x0180 */ add %o3,16,%l3 984*5d9d9091SRichard Lowe/* 0x0184 228 */ add %i2,4,%i2 985*5d9d9091SRichard Lowe/* 0x0188 225 */ prefetch [%o3+80],22 986*5d9d9091SRichard Lowe/* 0x018c 228 */ srl %l4,16,%o1 987*5d9d9091SRichard Lowe/* 0x0190 227 */ and %l4,%l0,%o0 988*5d9d9091SRichard Lowe/* 0x0194 225 */ prefetch [%o3+144],22 989*5d9d9091SRichard Lowe/* 0x0198 228 */ st %o1,[%sp+2271] 990*5d9d9091SRichard Lowe/* 0x019c 227 */ st %o0,[%sp+2239] 991*5d9d9091SRichard Lowe/* 0x01a0 226 */ ldd [%l7+%lo(___const_seg_900000601)],%f32 992*5d9d9091SRichard Lowe/* 0x01a4 228 */ ld [%l2+%lo(___const_seg_900000601+8)],%f0 993*5d9d9091SRichard Lowe/* 0x01a8 225 */ prefetch [%o3+208],22 994*5d9d9091SRichard Lowe/* 0x01ac */ prefetch [%o3+272],22 995*5d9d9091SRichard Lowe/* 0x01b0 */ prefetch [%o3+336],22 996*5d9d9091SRichard Lowe .L900000610: 997*5d9d9091SRichard Lowe/* 0x01b4 225 */ prefetch [%l1+192],22 998*5d9d9091SRichard Lowe/* 0x01b8 228 */ add %i5,4,%i5 999*5d9d9091SRichard Lowe/* 0x01bc 225 */ add %l3,64,%l3 1000*5d9d9091SRichard Lowe/* 0x01c0 227 */ ld [%l2+%lo(___const_seg_900000601+8)],%f8 1001*5d9d9091SRichard Lowe/* 0x01c4 228 */ cmp %i5,%i0 1002*5d9d9091SRichard Lowe/* 0x01c8 225 */ ld [%i2],%g5 1003*5d9d9091SRichard Lowe/* 0x01cc 228 */ add %i2,16,%i2 1004*5d9d9091SRichard Lowe/* 0x01d0 */ add %l1,32,%l1 1005*5d9d9091SRichard Lowe/* 0x01d4 */ add %i4,8,%i4 1006*5d9d9091SRichard Lowe/* 0x01d8 226 */ ld [%i2-20],%f7 1007*5d9d9091SRichard Lowe/* 0x01dc 228 */ srl %g5,16,%i3 1008*5d9d9091SRichard Lowe/* 0x01e0 226 */ fmovs %f8,%f6 1009*5d9d9091SRichard Lowe/* 0x01e4 228 */ st %i3,[%sp+2335] 1010*5d9d9091SRichard Lowe/* 0x01e8 227 */ and %g5,%l0,%g4 1011*5d9d9091SRichard Lowe/* 0x01ec */ st %g4,[%sp+2303] 1012*5d9d9091SRichard Lowe/* 0x01f0 226 */ fsubd %f6,%f32,%f40 1013*5d9d9091SRichard Lowe/* 0x01f4 227 */ ld [%sp+2239],%f9 1014*5d9d9091SRichard Lowe/* 0x01f8 228 */ ld [%sp+2271],%f1 1015*5d9d9091SRichard Lowe/* 0x01fc */ fmovs %f8,%f12 1016*5d9d9091SRichard Lowe/* 0x0200 226 */ std %f40,[%l1-32] 1017*5d9d9091SRichard Lowe/* 0x0204 227 */ fsubd %f8,%f32,%f42 1018*5d9d9091SRichard Lowe/* 0x0208 */ std %f42,[%l3-64] 1019*5d9d9091SRichard Lowe/* 0x020c 228 */ fsubd %f0,%f32,%f44 1020*5d9d9091SRichard Lowe/* 0x0210 */ std %f44,[%l3-56] 1021*5d9d9091SRichard Lowe/* 0x0214 227 */ fmovs %f12,%f10 1022*5d9d9091SRichard Lowe/* 0x0218 225 */ ld [%i2-12],%g2 1023*5d9d9091SRichard Lowe/* 0x021c 226 */ ld [%i2-16],%f1 1024*5d9d9091SRichard Lowe/* 0x0220 228 */ srl %g2,16,%g3 1025*5d9d9091SRichard Lowe/* 0x0224 226 */ fmovs %f12,%f0 1026*5d9d9091SRichard Lowe/* 0x0228 225 */ prefetch [%l3+320],22 1027*5d9d9091SRichard Lowe/* 0x022c 228 */ st %g3,[%sp+2271] 1028*5d9d9091SRichard Lowe/* 0x0230 227 */ and %g2,%l0,%l6 1029*5d9d9091SRichard Lowe/* 0x0234 */ st %l6,[%sp+2239] 1030*5d9d9091SRichard Lowe/* 0x0238 226 */ fsubd %f0,%f32,%f46 1031*5d9d9091SRichard Lowe/* 0x023c 227 */ ld [%sp+2303],%f11 1032*5d9d9091SRichard Lowe/* 0x0240 228 */ ld [%sp+2335],%f13 1033*5d9d9091SRichard Lowe/* 0x0244 */ fmovs %f12,%f18 1034*5d9d9091SRichard Lowe/* 0x0248 226 */ std %f46,[%l1-24] 1035*5d9d9091SRichard Lowe/* 0x024c 227 */ fsubd %f10,%f32,%f48 1036*5d9d9091SRichard Lowe/* 0x0250 */ std %f48,[%l3-48] 1037*5d9d9091SRichard Lowe/* 0x0254 228 */ fsubd %f12,%f32,%f50 1038*5d9d9091SRichard Lowe/* 0x0258 */ std %f50,[%l3-40] 1039*5d9d9091SRichard Lowe/* 0x025c 227 */ fmovs %f18,%f16 1040*5d9d9091SRichard Lowe/* 0x0260 225 */ ld [%i2-8],%o5 1041*5d9d9091SRichard Lowe/* 0x0264 226 */ ld [%i2-12],%f15 1042*5d9d9091SRichard Lowe/* 0x0268 228 */ srl %o5,16,%l5 1043*5d9d9091SRichard Lowe/* 0x026c 226 */ fmovs %f18,%f14 1044*5d9d9091SRichard Lowe/* 0x0270 228 */ st %l5,[%sp+2335] 1045*5d9d9091SRichard Lowe/* 0x0274 227 */ and %o5,%l0,%o4 1046*5d9d9091SRichard Lowe/* 0x0278 */ st %o4,[%sp+2303] 1047*5d9d9091SRichard Lowe/* 0x027c 226 */ fsubd %f14,%f32,%f52 1048*5d9d9091SRichard Lowe/* 0x0280 227 */ ld [%sp+2239],%f17 1049*5d9d9091SRichard Lowe/* 0x0284 228 */ ld [%sp+2271],%f19 1050*5d9d9091SRichard Lowe/* 0x0288 225 */ prefetch [%l3+352],22 1051*5d9d9091SRichard Lowe/* 0x028c 228 */ fmovs %f18,%f24 1052*5d9d9091SRichard Lowe/* 0x0290 226 */ std %f52,[%l1-16] 1053*5d9d9091SRichard Lowe/* 0x0294 227 */ fsubd %f16,%f32,%f54 1054*5d9d9091SRichard Lowe/* 0x0298 */ std %f54,[%l3-32] 1055*5d9d9091SRichard Lowe/* 0x029c 228 */ fsubd %f18,%f32,%f56 1056*5d9d9091SRichard Lowe/* 0x02a0 */ std %f56,[%l3-24] 1057*5d9d9091SRichard Lowe/* 0x02a4 227 */ fmovs %f24,%f22 1058*5d9d9091SRichard Lowe/* 0x02a8 225 */ ld [%i2-4],%l4 1059*5d9d9091SRichard Lowe/* 0x02ac 226 */ ld [%i2-8],%f21 1060*5d9d9091SRichard Lowe/* 0x02b0 228 */ srl %l4,16,%o3 1061*5d9d9091SRichard Lowe/* 0x02b4 226 */ fmovs %f24,%f20 1062*5d9d9091SRichard Lowe/* 0x02b8 228 */ st %o3,[%sp+2271] 1063*5d9d9091SRichard Lowe/* 0x02bc 227 */ and %l4,%l0,%o2 1064*5d9d9091SRichard Lowe/* 0x02c0 */ st %o2,[%sp+2239] 1065*5d9d9091SRichard Lowe/* 0x02c4 226 */ fsubd %f20,%f32,%f58 1066*5d9d9091SRichard Lowe/* 0x02c8 227 */ ld [%sp+2303],%f23 1067*5d9d9091SRichard Lowe/* 0x02cc 228 */ ld [%sp+2335],%f25 1068*5d9d9091SRichard Lowe/* 0x02d0 */ fmovs %f24,%f0 1069*5d9d9091SRichard Lowe/* 0x02d4 226 */ std %f58,[%l1-8] 1070*5d9d9091SRichard Lowe/* 0x02d8 227 */ fsubd %f22,%f32,%f60 1071*5d9d9091SRichard Lowe/* 0x02dc */ std %f60,[%l3-16] 1072*5d9d9091SRichard Lowe/* 0x02e0 228 */ fsubd %f24,%f32,%f62 1073*5d9d9091SRichard Lowe/* 0x02e4 */ bl,pt %icc,.L900000610 1074*5d9d9091SRichard Lowe/* 0x02e8 */ std %f62,[%l3-8] 1075*5d9d9091SRichard Lowe .L900000613: 1076*5d9d9091SRichard Lowe/* 0x02ec 227 */ ld [%l2+%lo(___const_seg_900000601+8)],%f4 1077*5d9d9091SRichard Lowe/* 0x02f0 228 */ add %l1,8,%l1 1078*5d9d9091SRichard Lowe/* 0x02f4 */ cmp %i5,%g1 1079*5d9d9091SRichard Lowe/* 0x02f8 226 */ ld [%i2-4],%f3 1080*5d9d9091SRichard Lowe/* 0x02fc 225 */ or %g0,%g1,%i3 1081*5d9d9091SRichard Lowe/* 0x0300 228 */ add %i4,2,%i4 1082*5d9d9091SRichard Lowe/* 0x0304 227 */ ld [%sp+2239],%f5 1083*5d9d9091SRichard Lowe/* 0x0308 226 */ fmovs %f4,%f2 1084*5d9d9091SRichard Lowe/* 0x030c 228 */ ld [%sp+2271],%f1 1085*5d9d9091SRichard Lowe/* 0x0310 226 */ fsubd %f2,%f32,%f34 1086*5d9d9091SRichard Lowe/* 0x0314 */ std %f34,[%l1-8] 1087*5d9d9091SRichard Lowe/* 0x0318 227 */ fsubd %f4,%f32,%f36 1088*5d9d9091SRichard Lowe/* 0x031c */ std %f36,[%l3] 1089*5d9d9091SRichard Lowe/* 0x0320 228 */ fsubd %f0,%f32,%f38 1090*5d9d9091SRichard Lowe/* 0x0324 */ bge,pn %icc,.L77000294 1091*5d9d9091SRichard Lowe/* 0x0328 */ std %f38,[%l3+8] 1092*5d9d9091SRichard Lowe .L77000291: 1093*5d9d9091SRichard Lowe/* 0x032c 225 */ ld [%i2],%o2 1094*5d9d9091SRichard Lowe .L900000614: 1095*5d9d9091SRichard Lowe/* 0x0330 226 */ ldd [%l7+%lo(___const_seg_900000601)],%f32 1096*5d9d9091SRichard Lowe/* 0x0334 228 */ srl %o2,16,%l3 1097*5d9d9091SRichard Lowe/* 0x0338 227 */ sra %i4,0,%i0 1098*5d9d9091SRichard Lowe/* 0x033c 228 */ st %l3,[%sp+2367] 1099*5d9d9091SRichard Lowe/* 0x0340 227 */ and %o2,%l0,%g1 1100*5d9d9091SRichard Lowe/* 0x0344 226 */ sethi %hi(___const_seg_900000601+8),%l2 1101*5d9d9091SRichard Lowe/* 0x0348 227 */ st %g1,[%sp+2399] 1102*5d9d9091SRichard Lowe/* 0x034c */ sllx %i0,3,%o0 1103*5d9d9091SRichard Lowe/* 0x0350 228 */ add %i4,1,%l4 1104*5d9d9091SRichard Lowe/* 0x0354 226 */ ld [%l2+%lo(___const_seg_900000601+8)],%f4 1105*5d9d9091SRichard Lowe/* 0x0358 228 */ sra %l4,0,%o1 1106*5d9d9091SRichard Lowe/* 0x035c */ add %i5,1,%i5 1107*5d9d9091SRichard Lowe/* 0x0360 226 */ ld [%i2],%f5 1108*5d9d9091SRichard Lowe/* 0x0364 228 */ sllx %o1,3,%g5 1109*5d9d9091SRichard Lowe/* 0x0368 */ cmp %i5,%i3 1110*5d9d9091SRichard Lowe/* 0x036c */ ld [%sp+2367],%f9 1111*5d9d9091SRichard Lowe/* 0x0370 */ add %i2,4,%i2 1112*5d9d9091SRichard Lowe/* 0x0374 */ add %i4,2,%i4 1113*5d9d9091SRichard Lowe/* 0x0378 227 */ fmovs %f4,%f6 1114*5d9d9091SRichard Lowe/* 0x037c 226 */ fsubd %f4,%f32,%f44 1115*5d9d9091SRichard Lowe/* 0x0380 */ std %f44,[%l1] 1116*5d9d9091SRichard Lowe/* 0x0384 227 */ ld [%sp+2399],%f7 1117*5d9d9091SRichard Lowe/* 0x0388 228 */ fmovs %f6,%f8 1118*5d9d9091SRichard Lowe/* 0x038c */ add %l1,8,%l1 1119*5d9d9091SRichard Lowe/* 0x0390 */ fsubd %f8,%f32,%f48 1120*5d9d9091SRichard Lowe/* 0x0394 227 */ fsubd %f6,%f32,%f46 1121*5d9d9091SRichard Lowe/* 0x0398 */ std %f46,[%i1+%o0] 1122*5d9d9091SRichard Lowe/* 0x039c 228 */ std %f48,[%i1+%g5] 1123*5d9d9091SRichard Lowe/* 0x03a0 */ bl,a,pt %icc,.L900000614 1124*5d9d9091SRichard Lowe/* 0x03a4 225 */ ld [%i2],%o2 1125*5d9d9091SRichard Lowe .L77000294: 1126*5d9d9091SRichard Lowe/* 0x03a8 222 */ ret ! Result = 1127*5d9d9091SRichard Lowe/* 0x03ac */ restore %g0,%g0,%g0 1128*5d9d9091SRichard Lowe/* 0x03b0 0 */ .type conv_i32_to_d32_and_d16,2 1129*5d9d9091SRichard Lowe/* 0x03b0 0 */ .size conv_i32_to_d32_and_d16,(.-conv_i32_to_d32_and_d16) 1130*5d9d9091SRichard Lowe 1131*5d9d9091SRichard Lowe .section ".text",#alloc,#execinstr 1132*5d9d9091SRichard Lowe/* 000000 0 */ .align 32 1133*5d9d9091SRichard Lowe 1134*5d9d9091SRichard Lowe! 229 ! } 1135*5d9d9091SRichard Lowe! 230 !} 1136*5d9d9091SRichard Lowe! 232 !extern long long c1, c2, c3, c4; 1137*5d9d9091SRichard Lowe! 234 !static void 1138*5d9d9091SRichard Lowe! 235 !adjust_montf_result(uint32_t *i32, uint32_t *nint, int len) 1139*5d9d9091SRichard Lowe! 236 !{ 1140*5d9d9091SRichard Lowe 1141*5d9d9091SRichard Lowe! 1142*5d9d9091SRichard Lowe! SUBROUTINE adjust_montf_result 1143*5d9d9091SRichard Lowe! 1144*5d9d9091SRichard Lowe! OFFSET SOURCE LINE LABEL INSTRUCTION 1145*5d9d9091SRichard Lowe 1146*5d9d9091SRichard Lowe adjust_montf_result: 1147*5d9d9091SRichard Lowe/* 000000 236 */ sra %o2,0,%g2 1148*5d9d9091SRichard Lowe/* 0x0004 */ or %g0,%o0,%o4 1149*5d9d9091SRichard Lowe 1150*5d9d9091SRichard Lowe! 237 ! int64_t acc; 1151*5d9d9091SRichard Lowe! 238 ! int i; 1152*5d9d9091SRichard Lowe! 240 ! if (i32[len] > 0) { 1153*5d9d9091SRichard Lowe 1154*5d9d9091SRichard Lowe/* 0x0008 240 */ sllx %g2,2,%g3 1155*5d9d9091SRichard Lowe/* 0x000c */ ld [%o0+%g3],%o0 1156*5d9d9091SRichard Lowe/* 0x0010 */ cmp %o0,0 1157*5d9d9091SRichard Lowe/* 0x0014 */ bleu,pn %icc,.L77000316 1158*5d9d9091SRichard Lowe/* 0x0018 236 */ or %g0,%o1,%o5 1159*5d9d9091SRichard Lowe 1160*5d9d9091SRichard Lowe! 241 ! i = -1; 1161*5d9d9091SRichard Lowe 1162*5d9d9091SRichard Lowe .L77000315: 1163*5d9d9091SRichard Lowe/* 0x001c 241 */ sub %g2,1,%g3 1164*5d9d9091SRichard Lowe/* 0x0020 */ ba .L900000712 1165*5d9d9091SRichard Lowe/* 0x0024 249 */ cmp %g2,0 1166*5d9d9091SRichard Lowe 1167*5d9d9091SRichard Lowe! 242 ! } else { 1168*5d9d9091SRichard Lowe! 243 ! for (i = len - 1; i >= 0; i--) { 1169*5d9d9091SRichard Lowe 1170*5d9d9091SRichard Lowe .L77000316: 1171*5d9d9091SRichard Lowe/* 0x0028 243 */ subcc %g2,1,%g3 1172*5d9d9091SRichard Lowe/* 0x002c */ bneg,pn %icc,.L77000340 1173*5d9d9091SRichard Lowe/* 0x0030 */ or %g0,%g3,%o3 1174*5d9d9091SRichard Lowe .L77000348: 1175*5d9d9091SRichard Lowe/* 0x0034 243 */ sra %g3,0,%o1 1176*5d9d9091SRichard Lowe/* 0x0038 */ sllx %o1,2,%g1 1177*5d9d9091SRichard Lowe 1178*5d9d9091SRichard Lowe! 244 ! if (i32[i] != nint[i]) break; 1179*5d9d9091SRichard Lowe 1180*5d9d9091SRichard Lowe/* 0x003c 244 */ ld [%g1+%o5],%g4 1181*5d9d9091SRichard Lowe/* 0x0040 243 */ add %g1,%o4,%o2 1182*5d9d9091SRichard Lowe/* 0x0044 */ add %g1,%o5,%o1 1183*5d9d9091SRichard Lowe .L900000713: 1184*5d9d9091SRichard Lowe/* 0x0048 244 */ ld [%o2],%o0 1185*5d9d9091SRichard Lowe/* 0x004c */ cmp %o0,%g4 1186*5d9d9091SRichard Lowe/* 0x0050 */ bne,pn %icc,.L77000324 1187*5d9d9091SRichard Lowe/* 0x0054 */ sub %o2,4,%o2 1188*5d9d9091SRichard Lowe .L77000320: 1189*5d9d9091SRichard Lowe/* 0x0058 244 */ sub %o1,4,%o1 1190*5d9d9091SRichard Lowe/* 0x005c */ subcc %o3,1,%o3 1191*5d9d9091SRichard Lowe/* 0x0060 */ bpos,a,pt %icc,.L900000713 1192*5d9d9091SRichard Lowe/* 0x0064 */ ld [%o1],%g4 1193*5d9d9091SRichard Lowe .L900000706: 1194*5d9d9091SRichard Lowe/* 0x0068 244 */ ba .L900000712 1195*5d9d9091SRichard Lowe/* 0x006c 249 */ cmp %g2,0 1196*5d9d9091SRichard Lowe .L77000324: 1197*5d9d9091SRichard Lowe/* 0x0070 244 */ sra %o3,0,%o0 1198*5d9d9091SRichard Lowe/* 0x0074 */ sllx %o0,2,%g1 1199*5d9d9091SRichard Lowe/* 0x0078 */ ld [%o5+%g1],%o3 1200*5d9d9091SRichard Lowe/* 0x007c */ ld [%o4+%g1],%g5 1201*5d9d9091SRichard Lowe/* 0x0080 */ cmp %g5,%o3 1202*5d9d9091SRichard Lowe/* 0x0084 */ bleu,pt %icc,.L77000332 1203*5d9d9091SRichard Lowe/* 0x0088 */ nop 1204*5d9d9091SRichard Lowe 1205*5d9d9091SRichard Lowe! 245 ! } 1206*5d9d9091SRichard Lowe! 246 ! } 1207*5d9d9091SRichard Lowe! 247 ! if ((i < 0) || (i32[i] > nint[i])) { 1208*5d9d9091SRichard Lowe! 248 ! acc = 0; 1209*5d9d9091SRichard Lowe! 249 ! for (i = 0; i < len; i++) { 1210*5d9d9091SRichard Lowe 1211*5d9d9091SRichard Lowe .L77000340: 1212*5d9d9091SRichard Lowe/* 0x008c 249 */ cmp %g2,0 1213*5d9d9091SRichard Lowe .L900000712: 1214*5d9d9091SRichard Lowe/* 0x0090 249 */ ble,pn %icc,.L77000332 1215*5d9d9091SRichard Lowe/* 0x0094 250 */ or %g0,%g2,%o3 1216*5d9d9091SRichard Lowe .L77000347: 1217*5d9d9091SRichard Lowe/* 0x0098 249 */ or %g0,0,%o0 1218*5d9d9091SRichard Lowe 1219*5d9d9091SRichard Lowe! 250 ! acc = acc + (uint64_t)(i32[i]) - (uint64_t)(nint[i]); 1220*5d9d9091SRichard Lowe 1221*5d9d9091SRichard Lowe/* 0x009c 250 */ cmp %o3,10 1222*5d9d9091SRichard Lowe/* 0x00a0 */ bl,pn %icc,.L77000341 1223*5d9d9091SRichard Lowe/* 0x00a4 249 */ or %g0,0,%g2 1224*5d9d9091SRichard Lowe .L900000709: 1225*5d9d9091SRichard Lowe/* 0x00a8 250 */ prefetch [%o4],22 1226*5d9d9091SRichard Lowe/* 0x00ac */ prefetch [%o4+64],22 1227*5d9d9091SRichard Lowe 1228*5d9d9091SRichard Lowe! 251 ! i32[i] = acc & 0xffffffff; 1229*5d9d9091SRichard Lowe! 252 ! acc = acc >> 32; 1230*5d9d9091SRichard Lowe 1231*5d9d9091SRichard Lowe/* 0x00b0 252 */ add %o5,4,%o1 1232*5d9d9091SRichard Lowe/* 0x00b4 */ add %o4,8,%o2 1233*5d9d9091SRichard Lowe/* 0x00b8 250 */ prefetch [%o4+128],22 1234*5d9d9091SRichard Lowe/* 0x00bc */ sub %o3,8,%o5 1235*5d9d9091SRichard Lowe/* 0x00c0 */ or %g0,2,%o0 1236*5d9d9091SRichard Lowe/* 0x00c4 */ prefetch [%o4+192],22 1237*5d9d9091SRichard Lowe/* 0x00c8 */ prefetch [%o4+256],22 1238*5d9d9091SRichard Lowe/* 0x00cc */ prefetch [%o4+320],22 1239*5d9d9091SRichard Lowe/* 0x00d0 */ prefetch [%o4+384],22 1240*5d9d9091SRichard Lowe/* 0x00d4 */ ld [%o2-4],%g5 1241*5d9d9091SRichard Lowe/* 0x00d8 */ prefetch [%o2+440],22 1242*5d9d9091SRichard Lowe/* 0x00dc */ prefetch [%o2+504],22 1243*5d9d9091SRichard Lowe/* 0x00e0 */ ld [%o4],%g4 1244*5d9d9091SRichard Lowe/* 0x00e4 */ ld [%o1-4],%o4 1245*5d9d9091SRichard Lowe/* 0x00e8 */ sub %g4,%o4,%o3 1246*5d9d9091SRichard Lowe/* 0x00ec 251 */ st %o3,[%o2-8] 1247*5d9d9091SRichard Lowe/* 0x00f0 252 */ srax %o3,32,%g4 1248*5d9d9091SRichard Lowe .L900000707: 1249*5d9d9091SRichard Lowe/* 0x00f4 252 */ add %o0,8,%o0 1250*5d9d9091SRichard Lowe/* 0x00f8 */ add %o2,32,%o2 1251*5d9d9091SRichard Lowe/* 0x00fc 250 */ ld [%o1],%g1 1252*5d9d9091SRichard Lowe/* 0x0100 */ prefetch [%o2+496],22 1253*5d9d9091SRichard Lowe/* 0x0104 252 */ cmp %o0,%o5 1254*5d9d9091SRichard Lowe/* 0x0108 */ add %o1,32,%o1 1255*5d9d9091SRichard Lowe/* 0x010c 250 */ sub %g5,%g1,%g5 1256*5d9d9091SRichard Lowe/* 0x0110 */ add %g5,%g4,%o4 1257*5d9d9091SRichard Lowe/* 0x0114 */ ld [%o2-32],%g4 1258*5d9d9091SRichard Lowe/* 0x0118 251 */ st %o4,[%o2-36] 1259*5d9d9091SRichard Lowe/* 0x011c 252 */ srax %o4,32,%g1 1260*5d9d9091SRichard Lowe/* 0x0120 250 */ ld [%o1-28],%o3 1261*5d9d9091SRichard Lowe/* 0x0124 */ sub %g4,%o3,%g2 1262*5d9d9091SRichard Lowe/* 0x0128 */ add %g2,%g1,%g5 1263*5d9d9091SRichard Lowe/* 0x012c */ ld [%o2-28],%o3 1264*5d9d9091SRichard Lowe/* 0x0130 251 */ st %g5,[%o2-32] 1265*5d9d9091SRichard Lowe/* 0x0134 252 */ srax %g5,32,%g4 1266*5d9d9091SRichard Lowe/* 0x0138 250 */ ld [%o1-24],%o4 1267*5d9d9091SRichard Lowe/* 0x013c */ sub %o3,%o4,%g1 1268*5d9d9091SRichard Lowe/* 0x0140 */ add %g1,%g4,%g2 1269*5d9d9091SRichard Lowe/* 0x0144 */ ld [%o2-24],%o3 1270*5d9d9091SRichard Lowe/* 0x0148 251 */ st %g2,[%o2-28] 1271*5d9d9091SRichard Lowe/* 0x014c 252 */ srax %g2,32,%g5 1272*5d9d9091SRichard Lowe/* 0x0150 250 */ ld [%o1-20],%o4 1273*5d9d9091SRichard Lowe/* 0x0154 */ sub %o3,%o4,%g4 1274*5d9d9091SRichard Lowe/* 0x0158 */ add %g4,%g5,%g1 1275*5d9d9091SRichard Lowe/* 0x015c */ ld [%o2-20],%o4 1276*5d9d9091SRichard Lowe/* 0x0160 251 */ st %g1,[%o2-24] 1277*5d9d9091SRichard Lowe/* 0x0164 252 */ srax %g1,32,%o3 1278*5d9d9091SRichard Lowe/* 0x0168 250 */ ld [%o1-16],%g2 1279*5d9d9091SRichard Lowe/* 0x016c */ sub %o4,%g2,%g5 1280*5d9d9091SRichard Lowe/* 0x0170 */ add %g5,%o3,%g1 1281*5d9d9091SRichard Lowe/* 0x0174 */ ld [%o2-16],%g4 1282*5d9d9091SRichard Lowe/* 0x0178 251 */ st %g1,[%o2-20] 1283*5d9d9091SRichard Lowe/* 0x017c 252 */ srax %g1,32,%o4 1284*5d9d9091SRichard Lowe/* 0x0180 250 */ ld [%o1-12],%g2 1285*5d9d9091SRichard Lowe/* 0x0184 */ sub %g4,%g2,%o3 1286*5d9d9091SRichard Lowe/* 0x0188 */ add %o3,%o4,%g5 1287*5d9d9091SRichard Lowe/* 0x018c */ ld [%o2-12],%g2 1288*5d9d9091SRichard Lowe/* 0x0190 251 */ st %g5,[%o2-16] 1289*5d9d9091SRichard Lowe/* 0x0194 252 */ srax %g5,32,%g4 1290*5d9d9091SRichard Lowe/* 0x0198 250 */ ld [%o1-8],%g1 1291*5d9d9091SRichard Lowe/* 0x019c */ sub %g2,%g1,%o4 1292*5d9d9091SRichard Lowe/* 0x01a0 */ add %o4,%g4,%o3 1293*5d9d9091SRichard Lowe/* 0x01a4 */ ld [%o2-8],%g2 1294*5d9d9091SRichard Lowe/* 0x01a8 251 */ st %o3,[%o2-12] 1295*5d9d9091SRichard Lowe/* 0x01ac 252 */ srax %o3,32,%g5 1296*5d9d9091SRichard Lowe/* 0x01b0 250 */ ld [%o1-4],%g1 1297*5d9d9091SRichard Lowe/* 0x01b4 */ sub %g2,%g1,%g4 1298*5d9d9091SRichard Lowe/* 0x01b8 */ add %g4,%g5,%o4 1299*5d9d9091SRichard Lowe/* 0x01bc */ ld [%o2-4],%g5 1300*5d9d9091SRichard Lowe/* 0x01c0 251 */ st %o4,[%o2-8] 1301*5d9d9091SRichard Lowe/* 0x01c4 252 */ ble,pt %icc,.L900000707 1302*5d9d9091SRichard Lowe/* 0x01c8 */ srax %o4,32,%g4 1303*5d9d9091SRichard Lowe .L900000710: 1304*5d9d9091SRichard Lowe/* 0x01cc 250 */ ld [%o1],%o3 1305*5d9d9091SRichard Lowe/* 0x01d0 252 */ add %o1,4,%o5 1306*5d9d9091SRichard Lowe/* 0x01d4 250 */ or %g0,%o2,%o4 1307*5d9d9091SRichard Lowe/* 0x01d8 252 */ cmp %o0,%g3 1308*5d9d9091SRichard Lowe/* 0x01dc 250 */ sub %g5,%o3,%g2 1309*5d9d9091SRichard Lowe/* 0x01e0 */ add %g2,%g4,%g1 1310*5d9d9091SRichard Lowe/* 0x01e4 251 */ st %g1,[%o2-4] 1311*5d9d9091SRichard Lowe/* 0x01e8 252 */ bg,pn %icc,.L77000332 1312*5d9d9091SRichard Lowe/* 0x01ec */ srax %g1,32,%g2 1313*5d9d9091SRichard Lowe .L77000341: 1314*5d9d9091SRichard Lowe/* 0x01f0 250 */ ld [%o4],%g5 1315*5d9d9091SRichard Lowe .L900000711: 1316*5d9d9091SRichard Lowe/* 0x01f4 250 */ ld [%o5],%o2 1317*5d9d9091SRichard Lowe/* 0x01f8 */ add %g2,%g5,%g4 1318*5d9d9091SRichard Lowe/* 0x01fc 252 */ add %o0,1,%o0 1319*5d9d9091SRichard Lowe/* 0x0200 */ cmp %o0,%g3 1320*5d9d9091SRichard Lowe/* 0x0204 */ add %o5,4,%o5 1321*5d9d9091SRichard Lowe/* 0x0208 250 */ sub %g4,%o2,%o1 1322*5d9d9091SRichard Lowe/* 0x020c 251 */ st %o1,[%o4] 1323*5d9d9091SRichard Lowe/* 0x0210 252 */ srax %o1,32,%g2 1324*5d9d9091SRichard Lowe/* 0x0214 */ add %o4,4,%o4 1325*5d9d9091SRichard Lowe/* 0x0218 */ ble,a,pt %icc,.L900000711 1326*5d9d9091SRichard Lowe/* 0x021c 250 */ ld [%o4],%g5 1327*5d9d9091SRichard Lowe .L77000332: 1328*5d9d9091SRichard Lowe/* 0x0220 252 */ retl ! Result = 1329*5d9d9091SRichard Lowe/* 0x0224 */ nop 1330*5d9d9091SRichard Lowe/* 0x0228 0 */ .type adjust_montf_result,2 1331*5d9d9091SRichard Lowe/* 0x0228 0 */ .size adjust_montf_result,(.-adjust_montf_result) 1332*5d9d9091SRichard Lowe 1333*5d9d9091SRichard Lowe .section ".text",#alloc,#execinstr 1334*5d9d9091SRichard Lowe/* 000000 0 */ .align 32 1335*5d9d9091SRichard Lowe 1336*5d9d9091SRichard Lowe! 253 ! } 1337*5d9d9091SRichard Lowe! 254 ! } 1338*5d9d9091SRichard Lowe! 255 !} 1339*5d9d9091SRichard Lowe! 257 !/************* 1340*5d9d9091SRichard Lowe! 258 !static void 1341*5d9d9091SRichard Lowe! 259 !adjust_montf_result_bad(uint32_t *i32, uint32_t *nint, int len) 1342*5d9d9091SRichard Lowe! 260 !{ 1343*5d9d9091SRichard Lowe! 261 ! int64_t acc; 1344*5d9d9091SRichard Lowe! 262 ! int i; 1345*5d9d9091SRichard Lowe! 264 ! c4++; 1346*5d9d9091SRichard Lowe! 265 ! 1347*5d9d9091SRichard Lowe! 266 ! if (i32[len] > 0) { 1348*5d9d9091SRichard Lowe! 267 ! i = -1; 1349*5d9d9091SRichard Lowe! 268 ! c1++; 1350*5d9d9091SRichard Lowe! 269 ! } else { 1351*5d9d9091SRichard Lowe! 270 ! for (i = len - 1; i >= 0; i++) { 1352*5d9d9091SRichard Lowe! 271 ! if (i32[i] != nint[i]) break; 1353*5d9d9091SRichard Lowe! 272 ! c2++; 1354*5d9d9091SRichard Lowe! 273 ! } 1355*5d9d9091SRichard Lowe! 274 ! } 1356*5d9d9091SRichard Lowe! 275 ! if ((i < 0) || (i32[i] > nint[i])) { 1357*5d9d9091SRichard Lowe! 276 ! c3++; 1358*5d9d9091SRichard Lowe! 277 ! acc = 0; 1359*5d9d9091SRichard Lowe! 278 ! for (i = 0; i < len; i++) { 1360*5d9d9091SRichard Lowe! 279 ! acc = acc + (uint64_t)(i32[i]) - (uint64_t)(nint[i]); 1361*5d9d9091SRichard Lowe! 280 ! i32[i] = acc & 0xffffffff; 1362*5d9d9091SRichard Lowe! 281 ! acc = acc >> 32; 1363*5d9d9091SRichard Lowe! 282 ! } 1364*5d9d9091SRichard Lowe! 283 ! } 1365*5d9d9091SRichard Lowe! 284 !} 1366*5d9d9091SRichard Lowe! 285 !uint32_t saveresult[1000]; 1367*5d9d9091SRichard Lowe! 286 !void printarray(char *name, uint32_t *arr, int len) 1368*5d9d9091SRichard Lowe! 287 !{ 1369*5d9d9091SRichard Lowe! 288 ! int i, j; 1370*5d9d9091SRichard Lowe! 289 ! uint64_t tmp; 1371*5d9d9091SRichard Lowe! 291 ! printf("uint64_t %s[%d] =\n{\n",name,(len+1)/2); 1372*5d9d9091SRichard Lowe! 292 ! for(i=j=0; i<len; i+=2,j+=2){ 1373*5d9d9091SRichard Lowe! 293 ! if(j == 6){ 1374*5d9d9091SRichard Lowe! 294 ! printf("\n"); 1375*5d9d9091SRichard Lowe! 295 ! j=0; 1376*5d9d9091SRichard Lowe! 296 ! } 1377*5d9d9091SRichard Lowe! 297 ! tmp = (((uint64_t)arr[i])<<32) | ((uint64_t)arr[i+1]); 1378*5d9d9091SRichard Lowe! 298 ! printf("0x%016llx",tmp); 1379*5d9d9091SRichard Lowe! 299 ! if((i/2)!=(((len+1)/2)-1))printf(","); 1380*5d9d9091SRichard Lowe! 300 ! if(j!=4)printf(" "); 1381*5d9d9091SRichard Lowe! 301 ! } 1382*5d9d9091SRichard Lowe! 302 ! if(j!=0) printf("\n"); 1383*5d9d9091SRichard Lowe! 303 ! printf("};\n"); 1384*5d9d9091SRichard Lowe! 304 !} 1385*5d9d9091SRichard Lowe! 305 !**************/ 1386*5d9d9091SRichard Lowe! 308 !/* 1387*5d9d9091SRichard Lowe! 309 ! * the lengths of the input arrays should be at least the following: 1388*5d9d9091SRichard Lowe! 310 ! * result[nlen+1], dm1[nlen], dm2[2*nlen+1], dt[4*nlen+2], dn[nlen], nint[nlen] 1389*5d9d9091SRichard Lowe! 311 ! * all of them should be different from one another 1390*5d9d9091SRichard Lowe! 312 ! */ 1391*5d9d9091SRichard Lowe! 313 !void mont_mulf_noconv(uint32_t *result, 1392*5d9d9091SRichard Lowe! 314 ! double *dm1, double *dm2, double *dt, 1393*5d9d9091SRichard Lowe! 315 ! double *dn, uint32_t *nint, 1394*5d9d9091SRichard Lowe! 316 ! int nlen, double dn0) 1395*5d9d9091SRichard Lowe! 317 !{ 1396*5d9d9091SRichard Lowe 1397*5d9d9091SRichard Lowe! 1398*5d9d9091SRichard Lowe! SUBROUTINE mont_mulf_noconv 1399*5d9d9091SRichard Lowe! 1400*5d9d9091SRichard Lowe! OFFSET SOURCE LINE LABEL INSTRUCTION 1401*5d9d9091SRichard Lowe 1402*5d9d9091SRichard Lowe .global mont_mulf_noconv 1403*5d9d9091SRichard Lowe mont_mulf_noconv: 1404*5d9d9091SRichard Lowe/* 000000 317 */ save %sp,-176,%sp 1405*5d9d9091SRichard Lowe/* 0x0004 */ ldx [%fp+2223],%g1 1406*5d9d9091SRichard Lowe/* 0x0008 0 */ sethi %hi(Zero),%l5 1407*5d9d9091SRichard Lowe/* 0x000c 317 */ or %g0,%i2,%l0 1408*5d9d9091SRichard Lowe 1409*5d9d9091SRichard Lowe! 318 ! int i, j, jj; 1410*5d9d9091SRichard Lowe! 319 ! double digit, m2j, a, b; 1411*5d9d9091SRichard Lowe! 320 ! double *pdm1, *pdm2, *pdn, *pdtj, pdn_0, pdm1_0; 1412*5d9d9091SRichard Lowe! 322 ! pdm1 = &(dm1[0]); 1413*5d9d9091SRichard Lowe! 323 ! pdm2 = &(dm2[0]); 1414*5d9d9091SRichard Lowe! 324 ! pdn = &(dn[0]); 1415*5d9d9091SRichard Lowe! 325 ! pdm2[2 * nlen] = Zero; 1416*5d9d9091SRichard Lowe 1417*5d9d9091SRichard Lowe/* 0x0010 325 */ ldd [%l5+%lo(Zero)],%f0 1418*5d9d9091SRichard Lowe/* 0x0014 317 */ or %g0,%i0,%i2 1419*5d9d9091SRichard Lowe/* 0x0018 325 */ sll %g1,1,%o3 1420*5d9d9091SRichard Lowe 1421*5d9d9091SRichard Lowe! 327 ! if (nlen != 16) { 1422*5d9d9091SRichard Lowe 1423*5d9d9091SRichard Lowe/* 0x001c 327 */ cmp %g1,16 1424*5d9d9091SRichard Lowe/* 0x0020 325 */ sra %o3,0,%i0 1425*5d9d9091SRichard Lowe/* 0x0024 */ sllx %i0,3,%o0 1426*5d9d9091SRichard Lowe/* 0x0028 317 */ or %g0,%i5,%i0 1427*5d9d9091SRichard Lowe/* 0x002c 327 */ bne,pn %icc,.L77000476 1428*5d9d9091SRichard Lowe/* 0x0030 325 */ std %f0,[%l0+%o0] 1429*5d9d9091SRichard Lowe .L77000488: 1430*5d9d9091SRichard Lowe/* 0x0034 0 */ sethi %hi(TwoToMinus16),%o2 1431*5d9d9091SRichard Lowe/* 0x0038 0 */ sethi %hi(TwoTo16),%l3 1432*5d9d9091SRichard Lowe 1433*5d9d9091SRichard Lowe! 328 ! for (i = 0; i < 4 * nlen + 2; i++) 1434*5d9d9091SRichard Lowe! 329 ! dt[i] = Zero; 1435*5d9d9091SRichard Lowe! 330 ! a = dt[0] = pdm1[0] * pdm2[0]; 1436*5d9d9091SRichard Lowe! 331 ! digit = mod(lower32(a, Zero) * dn0, TwoToMinus16, TwoTo16); 1437*5d9d9091SRichard Lowe! 333 ! pdtj = &(dt[0]); 1438*5d9d9091SRichard Lowe! 334 ! for (j = jj = 0; j < 2 * nlen; j++, jj++, pdtj++) { 1439*5d9d9091SRichard Lowe! 335 ! m2j = pdm2[j]; 1440*5d9d9091SRichard Lowe! 336 ! a = pdtj[0] + pdn[0] * digit; 1441*5d9d9091SRichard Lowe! 337 ! b = pdtj[1] + pdm1[0] * pdm2[j + 1] + a * TwoToMinus16; 1442*5d9d9091SRichard Lowe! 338 ! pdtj[1] = b; 1443*5d9d9091SRichard Lowe! 340 !#pragma pipeloop(0) 1444*5d9d9091SRichard Lowe! 341 ! for (i = 1; i < nlen; i++) { 1445*5d9d9091SRichard Lowe! 342 ! pdtj[2 * i] += pdm1[i] * m2j + pdn[i] * digit; 1446*5d9d9091SRichard Lowe! 343 ! } 1447*5d9d9091SRichard Lowe! 344 ! if (jj == 15) { 1448*5d9d9091SRichard Lowe! 345 ! cleanup(dt, j / 2 + 1, 2 * nlen + 1); 1449*5d9d9091SRichard Lowe! 346 ! jj = 0; 1450*5d9d9091SRichard Lowe! 347 ! } 1451*5d9d9091SRichard Lowe! 349 ! digit = mod(lower32(b, Zero) * dn0, 1452*5d9d9091SRichard Lowe! 350 ! TwoToMinus16, TwoTo16); 1453*5d9d9091SRichard Lowe! 351 ! } 1454*5d9d9091SRichard Lowe! 352 ! } else { 1455*5d9d9091SRichard Lowe! 353 ! a = dt[0] = pdm1[0] * pdm2[0]; 1456*5d9d9091SRichard Lowe 1457*5d9d9091SRichard Lowe/* 0x003c 353 */ ldd [%i1],%f40 1458*5d9d9091SRichard Lowe 1459*5d9d9091SRichard Lowe! 355 ! dt[65] = dt[64] = dt[63] = dt[62] = dt[61] = dt[60] = 1460*5d9d9091SRichard Lowe! 356 ! dt[59] = dt[58] = dt[57] = dt[56] = dt[55] = 1461*5d9d9091SRichard Lowe! 357 ! dt[54] = dt[53] = dt[52] = dt[51] = dt[50] = 1462*5d9d9091SRichard Lowe! 358 ! dt[49] = dt[48] = dt[47] = dt[46] = dt[45] = 1463*5d9d9091SRichard Lowe! 359 ! dt[44] = dt[43] = dt[42] = dt[41] = dt[40] = 1464*5d9d9091SRichard Lowe! 360 ! dt[39] = dt[38] = dt[37] = dt[36] = dt[35] = 1465*5d9d9091SRichard Lowe! 361 ! dt[34] = dt[33] = dt[32] = dt[31] = dt[30] = 1466*5d9d9091SRichard Lowe! 362 ! dt[29] = dt[28] = dt[27] = dt[26] = dt[25] = 1467*5d9d9091SRichard Lowe! 363 ! dt[24] = dt[23] = dt[22] = dt[21] = dt[20] = 1468*5d9d9091SRichard Lowe! 364 ! dt[19] = dt[18] = dt[17] = dt[16] = dt[15] = 1469*5d9d9091SRichard Lowe! 365 ! dt[14] = dt[13] = dt[12] = dt[11] = dt[10] = 1470*5d9d9091SRichard Lowe! 366 ! dt[9] = dt[8] = dt[7] = dt[6] = dt[5] = dt[4] = 1471*5d9d9091SRichard Lowe! 367 ! dt[3] = dt[2] = dt[1] = Zero; 1472*5d9d9091SRichard Lowe! 369 ! pdn_0 = pdn[0]; 1473*5d9d9091SRichard Lowe! 370 ! pdm1_0 = pdm1[0]; 1474*5d9d9091SRichard Lowe! 372 ! digit = mod(lower32(a, Zero) * dn0, TwoToMinus16, TwoTo16); 1475*5d9d9091SRichard Lowe! 373 ! pdtj = &(dt[0]); 1476*5d9d9091SRichard Lowe 1477*5d9d9091SRichard Lowe/* 0x0040 373 */ or %g0,%i3,%o3 1478*5d9d9091SRichard Lowe 1479*5d9d9091SRichard Lowe! 375 ! for (j = 0; j < 32; j++, pdtj++) { 1480*5d9d9091SRichard Lowe 1481*5d9d9091SRichard Lowe/* 0x0044 375 */ or %g0,0,%l1 1482*5d9d9091SRichard Lowe/* 0x0048 353 */ ldd [%l0],%f42 1483*5d9d9091SRichard Lowe/* 0x004c 372 */ ldd [%o2+%lo(TwoToMinus16)],%f44 1484*5d9d9091SRichard Lowe/* 0x0050 */ ldd [%l3+%lo(TwoTo16)],%f46 1485*5d9d9091SRichard Lowe/* 0x0054 367 */ std %f0,[%i3+8] 1486*5d9d9091SRichard Lowe/* 0x0058 353 */ fmuld %f40,%f42,%f38 1487*5d9d9091SRichard Lowe/* 0x005c */ std %f38,[%i3] 1488*5d9d9091SRichard Lowe/* 0x0060 367 */ std %f0,[%i3+16] 1489*5d9d9091SRichard Lowe/* 0x0064 */ std %f0,[%i3+24] 1490*5d9d9091SRichard Lowe/* 0x0068 */ std %f0,[%i3+32] 1491*5d9d9091SRichard Lowe/* 0x006c 372 */ fdtox %f38,%f4 1492*5d9d9091SRichard Lowe/* 0x0070 367 */ std %f0,[%i3+40] 1493*5d9d9091SRichard Lowe/* 0x0074 */ std %f0,[%i3+48] 1494*5d9d9091SRichard Lowe/* 0x0078 */ std %f0,[%i3+56] 1495*5d9d9091SRichard Lowe/* 0x007c 372 */ fmovs %f0,%f4 1496*5d9d9091SRichard Lowe/* 0x0080 367 */ std %f0,[%i3+64] 1497*5d9d9091SRichard Lowe/* 0x0084 */ std %f0,[%i3+72] 1498*5d9d9091SRichard Lowe/* 0x0088 372 */ fxtod %f4,%f52 1499*5d9d9091SRichard Lowe/* 0x008c 367 */ std %f0,[%i3+80] 1500*5d9d9091SRichard Lowe/* 0x0090 */ std %f0,[%i3+88] 1501*5d9d9091SRichard Lowe/* 0x0094 */ std %f0,[%i3+96] 1502*5d9d9091SRichard Lowe/* 0x0098 */ std %f0,[%i3+104] 1503*5d9d9091SRichard Lowe/* 0x009c 372 */ fmuld %f52,%f14,%f60 1504*5d9d9091SRichard Lowe/* 0x00a0 367 */ std %f0,[%i3+112] 1505*5d9d9091SRichard Lowe/* 0x00a4 */ std %f0,[%i3+120] 1506*5d9d9091SRichard Lowe/* 0x00a8 */ std %f0,[%i3+128] 1507*5d9d9091SRichard Lowe/* 0x00ac */ std %f0,[%i3+136] 1508*5d9d9091SRichard Lowe/* 0x00b0 372 */ fmuld %f60,%f44,%f62 1509*5d9d9091SRichard Lowe/* 0x00b4 367 */ std %f0,[%i3+144] 1510*5d9d9091SRichard Lowe/* 0x00b8 */ std %f0,[%i3+152] 1511*5d9d9091SRichard Lowe/* 0x00bc */ std %f0,[%i3+160] 1512*5d9d9091SRichard Lowe/* 0x00c0 */ std %f0,[%i3+168] 1513*5d9d9091SRichard Lowe/* 0x00c4 372 */ fdtox %f62,%f32 1514*5d9d9091SRichard Lowe/* 0x00c8 367 */ std %f0,[%i3+176] 1515*5d9d9091SRichard Lowe/* 0x00cc */ std %f0,[%i3+184] 1516*5d9d9091SRichard Lowe/* 0x00d0 */ std %f0,[%i3+192] 1517*5d9d9091SRichard Lowe/* 0x00d4 */ std %f0,[%i3+200] 1518*5d9d9091SRichard Lowe/* 0x00d8 372 */ fxtod %f32,%f50 1519*5d9d9091SRichard Lowe/* 0x00dc 367 */ std %f0,[%i3+208] 1520*5d9d9091SRichard Lowe/* 0x00e0 */ std %f0,[%i3+216] 1521*5d9d9091SRichard Lowe/* 0x00e4 */ std %f0,[%i3+224] 1522*5d9d9091SRichard Lowe/* 0x00e8 */ std %f0,[%i3+232] 1523*5d9d9091SRichard Lowe/* 0x00ec 372 */ fmuld %f50,%f46,%f34 1524*5d9d9091SRichard Lowe/* 0x00f0 367 */ std %f0,[%i3+240] 1525*5d9d9091SRichard Lowe/* 0x00f4 */ std %f0,[%i3+248] 1526*5d9d9091SRichard Lowe/* 0x00f8 */ std %f0,[%i3+256] 1527*5d9d9091SRichard Lowe/* 0x00fc */ std %f0,[%i3+264] 1528*5d9d9091SRichard Lowe/* 0x0100 372 */ fsubd %f60,%f34,%f40 1529*5d9d9091SRichard Lowe/* 0x0104 367 */ std %f0,[%i3+272] 1530*5d9d9091SRichard Lowe/* 0x0108 */ std %f0,[%i3+280] 1531*5d9d9091SRichard Lowe/* 0x010c */ std %f0,[%i3+288] 1532*5d9d9091SRichard Lowe/* 0x0110 */ std %f0,[%i3+296] 1533*5d9d9091SRichard Lowe/* 0x0114 */ std %f0,[%i3+304] 1534*5d9d9091SRichard Lowe/* 0x0118 */ std %f0,[%i3+312] 1535*5d9d9091SRichard Lowe/* 0x011c */ std %f0,[%i3+320] 1536*5d9d9091SRichard Lowe/* 0x0120 */ std %f0,[%i3+328] 1537*5d9d9091SRichard Lowe/* 0x0124 */ std %f0,[%i3+336] 1538*5d9d9091SRichard Lowe/* 0x0128 */ std %f0,[%i3+344] 1539*5d9d9091SRichard Lowe/* 0x012c */ std %f0,[%i3+352] 1540*5d9d9091SRichard Lowe/* 0x0130 */ std %f0,[%i3+360] 1541*5d9d9091SRichard Lowe/* 0x0134 */ std %f0,[%i3+368] 1542*5d9d9091SRichard Lowe/* 0x0138 375 */ sub %g1,1,%l3 1543*5d9d9091SRichard Lowe/* 0x013c */ add %i3,8,%o7 1544*5d9d9091SRichard Lowe/* 0x0140 367 */ std %f0,[%i3+376] 1545*5d9d9091SRichard Lowe/* 0x0144 */ std %f0,[%i3+384] 1546*5d9d9091SRichard Lowe/* 0x0148 */ std %f0,[%i3+392] 1547*5d9d9091SRichard Lowe/* 0x014c */ std %f0,[%i3+400] 1548*5d9d9091SRichard Lowe/* 0x0150 */ std %f0,[%i3+408] 1549*5d9d9091SRichard Lowe/* 0x0154 */ std %f0,[%i3+416] 1550*5d9d9091SRichard Lowe/* 0x0158 */ std %f0,[%i3+424] 1551*5d9d9091SRichard Lowe/* 0x015c */ std %f0,[%i3+432] 1552*5d9d9091SRichard Lowe/* 0x0160 */ std %f0,[%i3+440] 1553*5d9d9091SRichard Lowe/* 0x0164 */ std %f0,[%i3+448] 1554*5d9d9091SRichard Lowe/* 0x0168 */ std %f0,[%i3+456] 1555*5d9d9091SRichard Lowe/* 0x016c */ std %f0,[%i3+464] 1556*5d9d9091SRichard Lowe/* 0x0170 */ std %f0,[%i3+472] 1557*5d9d9091SRichard Lowe/* 0x0174 */ std %f0,[%i3+480] 1558*5d9d9091SRichard Lowe/* 0x0178 */ std %f0,[%i3+488] 1559*5d9d9091SRichard Lowe/* 0x017c */ std %f0,[%i3+496] 1560*5d9d9091SRichard Lowe/* 0x0180 */ std %f0,[%i3+504] 1561*5d9d9091SRichard Lowe/* 0x0184 */ std %f0,[%i3+512] 1562*5d9d9091SRichard Lowe/* 0x0188 */ std %f0,[%i3+520] 1563*5d9d9091SRichard Lowe 1564*5d9d9091SRichard Lowe!BEGIN HAND CODED PART 1565*5d9d9091SRichard Lowe 1566*5d9d9091SRichard Lowe! cheetah schedule, no even-odd trick 1567*5d9d9091SRichard Lowe 1568*5d9d9091SRichard Lowe 1569*5d9d9091SRichard Lowe add %i3,%g0,%o5 1570*5d9d9091SRichard Lowe 1571*5d9d9091SRichard Lowe fmovd %f40,%f0 1572*5d9d9091SRichard Lowe fmovd %f14,%f2 1573*5d9d9091SRichard Lowe fmovd %f44,%f8 1574*5d9d9091SRichard Lowe sethi %hi(TwoTo32),%l5 1575*5d9d9091SRichard Lowe fmovd %f46,%f10 1576*5d9d9091SRichard Lowe sethi %hi(TwoToMinus32),%g5 1577*5d9d9091SRichard Lowe ldd [%i3],%f6 1578*5d9d9091SRichard Lowe ldd [%l0],%f4 1579*5d9d9091SRichard Lowe 1580*5d9d9091SRichard Lowe ldd [%i1],%f40 1581*5d9d9091SRichard Lowe ldd [%i1+8],%f42 1582*5d9d9091SRichard Lowe ldd [%i1+16],%f52 1583*5d9d9091SRichard Lowe ldd [%i1+48],%f54 1584*5d9d9091SRichard Lowe ldd [%i1+56],%f36 1585*5d9d9091SRichard Lowe ldd [%i1+64],%f56 1586*5d9d9091SRichard Lowe ldd [%i1+104],%f48 1587*5d9d9091SRichard Lowe ldd [%i1+112],%f58 1588*5d9d9091SRichard Lowe 1589*5d9d9091SRichard Lowe ldd [%i4],%f44 1590*5d9d9091SRichard Lowe ldd [%i4+8],%f46 1591*5d9d9091SRichard Lowe ldd [%i4+104],%f50 1592*5d9d9091SRichard Lowe ldd [%i4+112],%f60 1593*5d9d9091SRichard Lowe 1594*5d9d9091SRichard Lowe 1595*5d9d9091SRichard Lowe .L99999999: 1596*5d9d9091SRichard Lowe!1 1597*5d9d9091SRichard Lowe ldd [%i1+24],%f20 1598*5d9d9091SRichard Lowe fmuld %f0,%f44,%f12 1599*5d9d9091SRichard Lowe!2 1600*5d9d9091SRichard Lowe ldd [%i4+24],%f22 1601*5d9d9091SRichard Lowe fmuld %f42,%f4,%f16 1602*5d9d9091SRichard Lowe!3 1603*5d9d9091SRichard Lowe ldd [%i1+40],%f24 1604*5d9d9091SRichard Lowe fmuld %f46,%f0,%f18 1605*5d9d9091SRichard Lowe!4 1606*5d9d9091SRichard Lowe ldd [%i4+40],%f26 1607*5d9d9091SRichard Lowe fmuld %f20,%f4,%f20 1608*5d9d9091SRichard Lowe!5 1609*5d9d9091SRichard Lowe ldd [%l0+8],%f38 1610*5d9d9091SRichard Lowe faddd %f12,%f6,%f12 1611*5d9d9091SRichard Lowe fmuld %f22,%f0,%f22 1612*5d9d9091SRichard Lowe!6 1613*5d9d9091SRichard Lowe add %l0,8,%l0 1614*5d9d9091SRichard Lowe ldd [%i4+56],%f30 1615*5d9d9091SRichard Lowe fmuld %f24,%f4,%f24 1616*5d9d9091SRichard Lowe!7 1617*5d9d9091SRichard Lowe ldd [%i1+72],%f32 1618*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 1619*5d9d9091SRichard Lowe fmuld %f26,%f0,%f26 1620*5d9d9091SRichard Lowe!8 1621*5d9d9091SRichard Lowe ldd [%i3+16],%f18 1622*5d9d9091SRichard Lowe fmuld %f40,%f38,%f14 1623*5d9d9091SRichard Lowe!9 1624*5d9d9091SRichard Lowe ldd [%i4+72],%f34 1625*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 1626*5d9d9091SRichard Lowe fmuld %f8,%f12,%f12 1627*5d9d9091SRichard Lowe!10 1628*5d9d9091SRichard Lowe ldd [%i3+48],%f22 1629*5d9d9091SRichard Lowe fmuld %f36,%f4,%f28 1630*5d9d9091SRichard Lowe!11 1631*5d9d9091SRichard Lowe ldd [%i3+8],%f6 1632*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 1633*5d9d9091SRichard Lowe fmuld %f30,%f0,%f30 1634*5d9d9091SRichard Lowe!12 1635*5d9d9091SRichard Lowe std %f16,[%i3+16] 1636*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 1637*5d9d9091SRichard Lowe fmuld %f32,%f4,%f32 1638*5d9d9091SRichard Lowe!13 1639*5d9d9091SRichard Lowe ldd [%i3+80],%f26 1640*5d9d9091SRichard Lowe faddd %f12,%f14,%f12 1641*5d9d9091SRichard Lowe fmuld %f34,%f0,%f34 1642*5d9d9091SRichard Lowe!14 1643*5d9d9091SRichard Lowe ldd [%i1+88],%f16 1644*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 1645*5d9d9091SRichard Lowe!15 1646*5d9d9091SRichard Lowe ldd [%i4+88],%f18 1647*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 1648*5d9d9091SRichard Lowe!16 1649*5d9d9091SRichard Lowe ldd [%i3+112],%f30 1650*5d9d9091SRichard Lowe faddd %f32,%f34,%f32 1651*5d9d9091SRichard Lowe!17 1652*5d9d9091SRichard Lowe ldd [%i3+144],%f34 1653*5d9d9091SRichard Lowe faddd %f12,%f6,%f6 1654*5d9d9091SRichard Lowe fmuld %f16,%f4,%f16 1655*5d9d9091SRichard Lowe!18 1656*5d9d9091SRichard Lowe std %f20,[%i3+48] 1657*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 1658*5d9d9091SRichard Lowe fmuld %f18,%f0,%f18 1659*5d9d9091SRichard Lowe!19 1660*5d9d9091SRichard Lowe std %f24,[%i3+80] 1661*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 1662*5d9d9091SRichard Lowe fmuld %f48,%f4,%f20 1663*5d9d9091SRichard Lowe!20 1664*5d9d9091SRichard Lowe std %f28,[%i3+112] 1665*5d9d9091SRichard Lowe faddd %f32,%f34,%f32 1666*5d9d9091SRichard Lowe fmuld %f50,%f0,%f22 1667*5d9d9091SRichard Lowe!21 1668*5d9d9091SRichard Lowe ldd [%i1+120],%f24 1669*5d9d9091SRichard Lowe fdtox %f6,%f12 1670*5d9d9091SRichard Lowe!22 1671*5d9d9091SRichard Lowe std %f32,[%i3+144] 1672*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 1673*5d9d9091SRichard Lowe!23 1674*5d9d9091SRichard Lowe ldd [%i4+120],%f26 1675*5d9d9091SRichard Lowe!24 1676*5d9d9091SRichard Lowe ldd [%i3+176],%f18 1677*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 1678*5d9d9091SRichard Lowe fmuld %f24,%f4,%f24 1679*5d9d9091SRichard Lowe!25 1680*5d9d9091SRichard Lowe ldd [%i4+16],%f30 1681*5d9d9091SRichard Lowe fmovs %f11,%f12 1682*5d9d9091SRichard Lowe!26 1683*5d9d9091SRichard Lowe ldd [%i1+32],%f32 1684*5d9d9091SRichard Lowe fmuld %f26,%f0,%f26 1685*5d9d9091SRichard Lowe!27 1686*5d9d9091SRichard Lowe ldd [%i4+32],%f34 1687*5d9d9091SRichard Lowe fmuld %f52,%f4,%f28 1688*5d9d9091SRichard Lowe!28 1689*5d9d9091SRichard Lowe ldd [%i3+208],%f22 1690*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 1691*5d9d9091SRichard Lowe fmuld %f30,%f0,%f30 1692*5d9d9091SRichard Lowe!29 1693*5d9d9091SRichard Lowe std %f16,[%i3+176] 1694*5d9d9091SRichard Lowe fxtod %f12,%f12 1695*5d9d9091SRichard Lowe fmuld %f32,%f4,%f32 1696*5d9d9091SRichard Lowe!30 1697*5d9d9091SRichard Lowe ldd [%i4+48],%f18 1698*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 1699*5d9d9091SRichard Lowe fmuld %f34,%f0,%f34 1700*5d9d9091SRichard Lowe!31 1701*5d9d9091SRichard Lowe ldd [%i3+240],%f26 1702*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 1703*5d9d9091SRichard Lowe!32 1704*5d9d9091SRichard Lowe std %f20,[%i3+208] 1705*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 1706*5d9d9091SRichard Lowe fmuld %f54,%f4,%f16 1707*5d9d9091SRichard Lowe!33 1708*5d9d9091SRichard Lowe ldd [%i3+32],%f30 1709*5d9d9091SRichard Lowe fmuld %f12,%f2,%f14 1710*5d9d9091SRichard Lowe!34 1711*5d9d9091SRichard Lowe ldd [%i4+64],%f22 1712*5d9d9091SRichard Lowe faddd %f32,%f34,%f32 1713*5d9d9091SRichard Lowe fmuld %f18,%f0,%f18 1714*5d9d9091SRichard Lowe!35 1715*5d9d9091SRichard Lowe ldd [%i3+64],%f34 1716*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 1717*5d9d9091SRichard Lowe!36 1718*5d9d9091SRichard Lowe std %f24,[%i3+240] 1719*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 1720*5d9d9091SRichard Lowe fmuld %f56,%f4,%f20 1721*5d9d9091SRichard Lowe!37 1722*5d9d9091SRichard Lowe std %f28,[%i3+32] 1723*5d9d9091SRichard Lowe fmuld %f14,%f8,%f12 1724*5d9d9091SRichard Lowe!38 1725*5d9d9091SRichard Lowe ldd [%i1+80],%f24 1726*5d9d9091SRichard Lowe faddd %f32,%f34,%f34 ! yes, tmp52! 1727*5d9d9091SRichard Lowe fmuld %f22,%f0,%f22 1728*5d9d9091SRichard Lowe!39 1729*5d9d9091SRichard Lowe ldd [%i4+80],%f26 1730*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 1731*5d9d9091SRichard Lowe!40 1732*5d9d9091SRichard Lowe ldd [%i1+96],%f28 1733*5d9d9091SRichard Lowe fmuld %f58,%f4,%f32 1734*5d9d9091SRichard Lowe!41 1735*5d9d9091SRichard Lowe ldd [%i4+96],%f30 1736*5d9d9091SRichard Lowe fdtox %f12,%f12 1737*5d9d9091SRichard Lowe fmuld %f24,%f4,%f24 1738*5d9d9091SRichard Lowe!42 1739*5d9d9091SRichard Lowe std %f34,[%i3+64] ! yes, tmp52! 1740*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 1741*5d9d9091SRichard Lowe fmuld %f26,%f0,%f26 1742*5d9d9091SRichard Lowe!43 1743*5d9d9091SRichard Lowe ldd [%i3+96],%f18 1744*5d9d9091SRichard Lowe fmuld %f28,%f4,%f28 1745*5d9d9091SRichard Lowe!44 1746*5d9d9091SRichard Lowe ldd [%i3+128],%f22 1747*5d9d9091SRichard Lowe fmovd %f38,%f4 1748*5d9d9091SRichard Lowe fmuld %f30,%f0,%f30 1749*5d9d9091SRichard Lowe!45 1750*5d9d9091SRichard Lowe fxtod %f12,%f12 1751*5d9d9091SRichard Lowe fmuld %f60,%f0,%f34 1752*5d9d9091SRichard Lowe!46 1753*5d9d9091SRichard Lowe add %i3,8,%i3 1754*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 1755*5d9d9091SRichard Lowe!47 1756*5d9d9091SRichard Lowe ldd [%i3+160-8],%f26 1757*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 1758*5d9d9091SRichard Lowe!48 1759*5d9d9091SRichard Lowe std %f16,[%i3+96-8] 1760*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 1761*5d9d9091SRichard Lowe!49 1762*5d9d9091SRichard Lowe ldd [%i3+192-8],%f30 1763*5d9d9091SRichard Lowe faddd %f32,%f34,%f32 1764*5d9d9091SRichard Lowe fmuld %f12,%f10,%f12 1765*5d9d9091SRichard Lowe!50 1766*5d9d9091SRichard Lowe ldd [%i3+224-8],%f34 1767*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 1768*5d9d9091SRichard Lowe!51 1769*5d9d9091SRichard Lowe std %f20,[%i3+128-8] 1770*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 1771*5d9d9091SRichard Lowe!52 1772*5d9d9091SRichard Lowe add %l1,1,%l1 1773*5d9d9091SRichard Lowe std %f24,[%i3+160-8] 1774*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 1775*5d9d9091SRichard Lowe!53 1776*5d9d9091SRichard Lowe cmp %l1,15 1777*5d9d9091SRichard Lowe std %f28,[%i3+192-8] 1778*5d9d9091SRichard Lowe fsubd %f14,%f12,%f0 1779*5d9d9091SRichard Lowe!54 1780*5d9d9091SRichard Lowe faddd %f32,%f34,%f32 1781*5d9d9091SRichard Lowe ble,pt %icc,.L99999999 1782*5d9d9091SRichard Lowe std %f32,[%i3+224-8] 1783*5d9d9091SRichard Lowe 1784*5d9d9091SRichard Lowe 1785*5d9d9091SRichard Lowe! 1786*5d9d9091SRichard Lowe ldd [%g5+%lo(TwoToMinus32)],%f8 1787*5d9d9091SRichard Lowe! 1788*5d9d9091SRichard Lowe ldd [%i3+8],%f16 1789*5d9d9091SRichard Lowe! 1790*5d9d9091SRichard Lowe ldd [%i3+16],%f20 1791*5d9d9091SRichard Lowe! 1792*5d9d9091SRichard Lowe fmuld %f8,%f16,%f18 1793*5d9d9091SRichard Lowe ldd [%i3+24],%f24 1794*5d9d9091SRichard Lowe! 1795*5d9d9091SRichard Lowe fmuld %f8,%f20,%f22 1796*5d9d9091SRichard Lowe ldd [%i3+32],%f28 1797*5d9d9091SRichard Lowe! 1798*5d9d9091SRichard Lowe fmuld %f8,%f24,%f26 1799*5d9d9091SRichard Lowe ldd [%l5+%lo(TwoTo32)],%f10 1800*5d9d9091SRichard Lowe! 1801*5d9d9091SRichard Lowe fmuld %f8,%f28,%f30 1802*5d9d9091SRichard Lowe! 1803*5d9d9091SRichard Lowe fdtox %f18,%f18 1804*5d9d9091SRichard Lowe! 1805*5d9d9091SRichard Lowe fdtox %f22,%f22 1806*5d9d9091SRichard Lowe! 1807*5d9d9091SRichard Lowe fdtox %f26,%f26 1808*5d9d9091SRichard Lowe ldd [%i3+40],%f32 1809*5d9d9091SRichard Lowe! 1810*5d9d9091SRichard Lowe fdtox %f30,%f30 1811*5d9d9091SRichard Lowe ldd [%i3+48],%f56 1812*5d9d9091SRichard Lowe! 1813*5d9d9091SRichard Lowe fxtod %f18,%f18 1814*5d9d9091SRichard Lowe fmuld %f8,%f32,%f34 1815*5d9d9091SRichard Lowe ldd [%i3+56],%f36 1816*5d9d9091SRichard Lowe! 1817*5d9d9091SRichard Lowe fxtod %f22,%f22 1818*5d9d9091SRichard Lowe fmuld %f8,%f56,%f58 1819*5d9d9091SRichard Lowe ldd [%i3+64],%f38 1820*5d9d9091SRichard Lowe! 1821*5d9d9091SRichard Lowe fxtod %f26,%f26 1822*5d9d9091SRichard Lowe fmuld %f8,%f36,%f60 1823*5d9d9091SRichard Lowe! 1824*5d9d9091SRichard Lowe fxtod %f30,%f30 1825*5d9d9091SRichard Lowe fmuld %f8,%f38,%f62 1826*5d9d9091SRichard Lowe! 1827*5d9d9091SRichard Lowe fdtox %f34,%f34 1828*5d9d9091SRichard Lowe fmuld %f10,%f18,%f40 1829*5d9d9091SRichard Lowe! 1830*5d9d9091SRichard Lowe fdtox %f58,%f58 1831*5d9d9091SRichard Lowe fmuld %f10,%f22,%f42 1832*5d9d9091SRichard Lowe! 1833*5d9d9091SRichard Lowe fdtox %f60,%f60 1834*5d9d9091SRichard Lowe fmuld %f10,%f26,%f44 1835*5d9d9091SRichard Lowe! 1836*5d9d9091SRichard Lowe fdtox %f62,%f62 1837*5d9d9091SRichard Lowe fmuld %f10,%f30,%f46 1838*5d9d9091SRichard Lowe! 1839*5d9d9091SRichard Lowe fxtod %f34,%f34 1840*5d9d9091SRichard Lowe! 1841*5d9d9091SRichard Lowe fxtod %f58,%f58 1842*5d9d9091SRichard Lowe! 1843*5d9d9091SRichard Lowe fxtod %f60,%f60 1844*5d9d9091SRichard Lowe! 1845*5d9d9091SRichard Lowe fxtod %f62,%f62 1846*5d9d9091SRichard Lowe! 1847*5d9d9091SRichard Lowe fsubd %f16,%f40,%f40 1848*5d9d9091SRichard Lowe fmuld %f10,%f34,%f48 1849*5d9d9091SRichard Lowe! 1850*5d9d9091SRichard Lowe fsubd %f20,%f42,%f42 1851*5d9d9091SRichard Lowe fmuld %f10,%f58,%f50 1852*5d9d9091SRichard Lowe! 1853*5d9d9091SRichard Lowe fsubd %f24,%f44,%f44 1854*5d9d9091SRichard Lowe fmuld %f10,%f60,%f52 1855*5d9d9091SRichard Lowe! 1856*5d9d9091SRichard Lowe fsubd %f28,%f46,%f46 1857*5d9d9091SRichard Lowe fmuld %f10,%f62,%f54 1858*5d9d9091SRichard Lowe! 1859*5d9d9091SRichard Lowe std %f40,[%i3+8] 1860*5d9d9091SRichard Lowe! 1861*5d9d9091SRichard Lowe std %f42,[%i3+16] 1862*5d9d9091SRichard Lowe! 1863*5d9d9091SRichard Lowe faddd %f18,%f44,%f44 1864*5d9d9091SRichard Lowe std %f44,[%i3+24] 1865*5d9d9091SRichard Lowe! 1866*5d9d9091SRichard Lowe faddd %f22,%f46,%f46 1867*5d9d9091SRichard Lowe std %f46,[%i3+32] 1868*5d9d9091SRichard Lowe! 1869*5d9d9091SRichard Lowe 1870*5d9d9091SRichard Lowe 1871*5d9d9091SRichard Lowe 1872*5d9d9091SRichard Lowe fsubd %f32,%f48,%f48 1873*5d9d9091SRichard Lowe ldd [%i3+64+8],%f16 1874*5d9d9091SRichard Lowe! 1875*5d9d9091SRichard Lowe fsubd %f56,%f50,%f50 1876*5d9d9091SRichard Lowe ldd [%i3+64+16],%f20 1877*5d9d9091SRichard Lowe! 1878*5d9d9091SRichard Lowe fsubd %f36,%f52,%f52 1879*5d9d9091SRichard Lowe ldd [%i3+64+24],%f24 1880*5d9d9091SRichard Lowe! 1881*5d9d9091SRichard Lowe fsubd %f38,%f54,%f54 1882*5d9d9091SRichard Lowe ldd [%i3+64+32],%f28 1883*5d9d9091SRichard Lowe! 1884*5d9d9091SRichard Lowe faddd %f26,%f48,%f48 1885*5d9d9091SRichard Lowe fmuld %f8,%f16,%f18 1886*5d9d9091SRichard Lowe std %f48,[%i3+40] 1887*5d9d9091SRichard Lowe! 1888*5d9d9091SRichard Lowe faddd %f30,%f50,%f50 1889*5d9d9091SRichard Lowe fmuld %f8,%f20,%f22 1890*5d9d9091SRichard Lowe std %f50,[%i3+48] 1891*5d9d9091SRichard Lowe! 1892*5d9d9091SRichard Lowe faddd %f34,%f52,%f52 1893*5d9d9091SRichard Lowe fmuld %f8,%f24,%f26 1894*5d9d9091SRichard Lowe std %f52,[%i3+56] 1895*5d9d9091SRichard Lowe! 1896*5d9d9091SRichard Lowe faddd %f58,%f54,%f54 1897*5d9d9091SRichard Lowe fmuld %f8,%f28,%f30 1898*5d9d9091SRichard Lowe std %f54,[%i3+64] 1899*5d9d9091SRichard Lowe! 1900*5d9d9091SRichard Lowe 1901*5d9d9091SRichard Lowe 1902*5d9d9091SRichard Lowe fdtox %f18,%f18 1903*5d9d9091SRichard Lowe! 1904*5d9d9091SRichard Lowe fdtox %f22,%f22 1905*5d9d9091SRichard Lowe! 1906*5d9d9091SRichard Lowe fdtox %f26,%f26 1907*5d9d9091SRichard Lowe ldd [%i3+64+40],%f32 1908*5d9d9091SRichard Lowe! 1909*5d9d9091SRichard Lowe fdtox %f30,%f30 1910*5d9d9091SRichard Lowe ldd [%i3+64+48],%f56 1911*5d9d9091SRichard Lowe! 1912*5d9d9091SRichard Lowe fxtod %f18,%f18 1913*5d9d9091SRichard Lowe fmuld %f8,%f32,%f34 1914*5d9d9091SRichard Lowe ldd [%i3+64+56],%f36 1915*5d9d9091SRichard Lowe! 1916*5d9d9091SRichard Lowe fxtod %f22,%f22 1917*5d9d9091SRichard Lowe fmuld %f8,%f56,%f58 1918*5d9d9091SRichard Lowe ldd [%i3+64+64],%f38 1919*5d9d9091SRichard Lowe! 1920*5d9d9091SRichard Lowe fxtod %f26,%f26 1921*5d9d9091SRichard Lowe fmuld %f8,%f36,%f12 1922*5d9d9091SRichard Lowe! 1923*5d9d9091SRichard Lowe fxtod %f30,%f30 1924*5d9d9091SRichard Lowe fmuld %f8,%f38,%f14 1925*5d9d9091SRichard Lowe! 1926*5d9d9091SRichard Lowe fdtox %f34,%f34 1927*5d9d9091SRichard Lowe fmuld %f10,%f18,%f40 1928*5d9d9091SRichard Lowe! 1929*5d9d9091SRichard Lowe fdtox %f58,%f58 1930*5d9d9091SRichard Lowe fmuld %f10,%f22,%f42 1931*5d9d9091SRichard Lowe! 1932*5d9d9091SRichard Lowe fdtox %f12,%f12 1933*5d9d9091SRichard Lowe fmuld %f10,%f26,%f44 1934*5d9d9091SRichard Lowe! 1935*5d9d9091SRichard Lowe fdtox %f14,%f14 1936*5d9d9091SRichard Lowe fmuld %f10,%f30,%f46 1937*5d9d9091SRichard Lowe! 1938*5d9d9091SRichard Lowe fxtod %f34,%f34 1939*5d9d9091SRichard Lowe! 1940*5d9d9091SRichard Lowe fxtod %f58,%f58 1941*5d9d9091SRichard Lowe! 1942*5d9d9091SRichard Lowe fxtod %f12,%f12 1943*5d9d9091SRichard Lowe! 1944*5d9d9091SRichard Lowe fxtod %f14,%f14 1945*5d9d9091SRichard Lowe! 1946*5d9d9091SRichard Lowe fsubd %f16,%f40,%f40 1947*5d9d9091SRichard Lowe fmuld %f10,%f34,%f48 1948*5d9d9091SRichard Lowe! 1949*5d9d9091SRichard Lowe fsubd %f20,%f42,%f42 1950*5d9d9091SRichard Lowe fmuld %f10,%f58,%f50 1951*5d9d9091SRichard Lowe! 1952*5d9d9091SRichard Lowe fsubd %f24,%f44,%f44 1953*5d9d9091SRichard Lowe fmuld %f10,%f12,%f52 1954*5d9d9091SRichard Lowe! 1955*5d9d9091SRichard Lowe fsubd %f28,%f46,%f46 1956*5d9d9091SRichard Lowe fmuld %f10,%f14,%f54 1957*5d9d9091SRichard Lowe! 1958*5d9d9091SRichard Lowe faddd %f60,%f40,%f40 1959*5d9d9091SRichard Lowe std %f40,[%i3+64+8] 1960*5d9d9091SRichard Lowe! 1961*5d9d9091SRichard Lowe faddd %f62,%f42,%f42 1962*5d9d9091SRichard Lowe std %f42,[%i3+64+16] 1963*5d9d9091SRichard Lowe! 1964*5d9d9091SRichard Lowe faddd %f18,%f44,%f44 1965*5d9d9091SRichard Lowe std %f44,[%i3+64+24] 1966*5d9d9091SRichard Lowe! 1967*5d9d9091SRichard Lowe faddd %f22,%f46,%f46 1968*5d9d9091SRichard Lowe std %f46,[%i3+64+32] 1969*5d9d9091SRichard Lowe! 1970*5d9d9091SRichard Lowe 1971*5d9d9091SRichard Lowe 1972*5d9d9091SRichard Lowe 1973*5d9d9091SRichard Lowe fsubd %f32,%f48,%f48 1974*5d9d9091SRichard Lowe ldd [%i3+64+64+8],%f16 1975*5d9d9091SRichard Lowe! 1976*5d9d9091SRichard Lowe fsubd %f56,%f50,%f50 1977*5d9d9091SRichard Lowe ldd [%i3+64+64+16],%f20 1978*5d9d9091SRichard Lowe! 1979*5d9d9091SRichard Lowe fsubd %f36,%f52,%f52 1980*5d9d9091SRichard Lowe ldd [%i3+64+64+24],%f24 1981*5d9d9091SRichard Lowe! 1982*5d9d9091SRichard Lowe fsubd %f38,%f54,%f54 1983*5d9d9091SRichard Lowe ldd [%i3+64+64+32],%f28 1984*5d9d9091SRichard Lowe! 1985*5d9d9091SRichard Lowe faddd %f26,%f48,%f48 1986*5d9d9091SRichard Lowe fmuld %f8,%f16,%f18 1987*5d9d9091SRichard Lowe std %f48,[%i3+64+40] 1988*5d9d9091SRichard Lowe! 1989*5d9d9091SRichard Lowe faddd %f30,%f50,%f50 1990*5d9d9091SRichard Lowe fmuld %f8,%f20,%f22 1991*5d9d9091SRichard Lowe std %f50,[%i3+64+48] 1992*5d9d9091SRichard Lowe! 1993*5d9d9091SRichard Lowe faddd %f34,%f52,%f52 1994*5d9d9091SRichard Lowe fmuld %f8,%f24,%f26 1995*5d9d9091SRichard Lowe std %f52,[%i3+64+56] 1996*5d9d9091SRichard Lowe! 1997*5d9d9091SRichard Lowe faddd %f58,%f54,%f54 1998*5d9d9091SRichard Lowe fmuld %f8,%f28,%f30 1999*5d9d9091SRichard Lowe std %f54,[%i3+64+64] 2000*5d9d9091SRichard Lowe! 2001*5d9d9091SRichard Lowe 2002*5d9d9091SRichard Lowe 2003*5d9d9091SRichard Lowe 2004*5d9d9091SRichard Lowe fdtox %f18,%f18 2005*5d9d9091SRichard Lowe! 2006*5d9d9091SRichard Lowe fdtox %f22,%f22 2007*5d9d9091SRichard Lowe! 2008*5d9d9091SRichard Lowe fdtox %f26,%f26 2009*5d9d9091SRichard Lowe ldd [%i3+64+64+40],%f32 2010*5d9d9091SRichard Lowe! 2011*5d9d9091SRichard Lowe fdtox %f30,%f30 2012*5d9d9091SRichard Lowe ldd [%i3+64+64+48],%f56 2013*5d9d9091SRichard Lowe! 2014*5d9d9091SRichard Lowe fxtod %f18,%f18 2015*5d9d9091SRichard Lowe fmuld %f8,%f32,%f34 2016*5d9d9091SRichard Lowe ldd [%i3+64+64+56],%f36 2017*5d9d9091SRichard Lowe! 2018*5d9d9091SRichard Lowe fxtod %f22,%f22 2019*5d9d9091SRichard Lowe fmuld %f8,%f56,%f58 2020*5d9d9091SRichard Lowe ldd [%i3+64+64+64],%f38 2021*5d9d9091SRichard Lowe! 2022*5d9d9091SRichard Lowe fxtod %f26,%f26 2023*5d9d9091SRichard Lowe fmuld %f8,%f36,%f60 2024*5d9d9091SRichard Lowe! 2025*5d9d9091SRichard Lowe fxtod %f30,%f30 2026*5d9d9091SRichard Lowe fmuld %f8,%f38,%f62 2027*5d9d9091SRichard Lowe! 2028*5d9d9091SRichard Lowe fdtox %f34,%f34 2029*5d9d9091SRichard Lowe fmuld %f10,%f18,%f40 2030*5d9d9091SRichard Lowe! 2031*5d9d9091SRichard Lowe fdtox %f58,%f58 2032*5d9d9091SRichard Lowe fmuld %f10,%f22,%f42 2033*5d9d9091SRichard Lowe! 2034*5d9d9091SRichard Lowe fdtox %f60,%f60 2035*5d9d9091SRichard Lowe fmuld %f10,%f26,%f44 2036*5d9d9091SRichard Lowe! 2037*5d9d9091SRichard Lowe fdtox %f62,%f62 2038*5d9d9091SRichard Lowe fmuld %f10,%f30,%f46 2039*5d9d9091SRichard Lowe! 2040*5d9d9091SRichard Lowe fxtod %f34,%f34 2041*5d9d9091SRichard Lowe! 2042*5d9d9091SRichard Lowe fxtod %f58,%f58 2043*5d9d9091SRichard Lowe! 2044*5d9d9091SRichard Lowe fxtod %f60,%f60 2045*5d9d9091SRichard Lowe! 2046*5d9d9091SRichard Lowe fxtod %f62,%f62 2047*5d9d9091SRichard Lowe! 2048*5d9d9091SRichard Lowe fsubd %f16,%f40,%f40 2049*5d9d9091SRichard Lowe fmuld %f10,%f34,%f48 2050*5d9d9091SRichard Lowe! 2051*5d9d9091SRichard Lowe fsubd %f20,%f42,%f42 2052*5d9d9091SRichard Lowe fmuld %f10,%f58,%f50 2053*5d9d9091SRichard Lowe! 2054*5d9d9091SRichard Lowe fsubd %f24,%f44,%f44 2055*5d9d9091SRichard Lowe fmuld %f10,%f60,%f52 2056*5d9d9091SRichard Lowe! 2057*5d9d9091SRichard Lowe fsubd %f28,%f46,%f46 2058*5d9d9091SRichard Lowe fmuld %f10,%f62,%f54 2059*5d9d9091SRichard Lowe! 2060*5d9d9091SRichard Lowe faddd %f12,%f40,%f40 2061*5d9d9091SRichard Lowe std %f40,[%i3+64+64+8] 2062*5d9d9091SRichard Lowe! 2063*5d9d9091SRichard Lowe faddd %f14,%f42,%f42 2064*5d9d9091SRichard Lowe std %f42,[%i3+64+64+16] 2065*5d9d9091SRichard Lowe! 2066*5d9d9091SRichard Lowe faddd %f18,%f44,%f44 2067*5d9d9091SRichard Lowe std %f44,[%i3+64+64+24] 2068*5d9d9091SRichard Lowe! 2069*5d9d9091SRichard Lowe faddd %f22,%f46,%f46 2070*5d9d9091SRichard Lowe std %f46,[%i3+64+64+32] 2071*5d9d9091SRichard Lowe! 2072*5d9d9091SRichard Lowe 2073*5d9d9091SRichard Lowe 2074*5d9d9091SRichard Lowe fsubd %f32,%f48,%f48 2075*5d9d9091SRichard Lowe ldd [%i3+64+64+64+8],%f16 2076*5d9d9091SRichard Lowe! 2077*5d9d9091SRichard Lowe fsubd %f56,%f50,%f50 2078*5d9d9091SRichard Lowe ldd [%i3+64+64+64+16],%f20 2079*5d9d9091SRichard Lowe! 2080*5d9d9091SRichard Lowe fsubd %f36,%f52,%f52 2081*5d9d9091SRichard Lowe ldd [%i3+64+64+64+24],%f24 2082*5d9d9091SRichard Lowe! 2083*5d9d9091SRichard Lowe fsubd %f38,%f54,%f54 2084*5d9d9091SRichard Lowe ldd [%i3+64+64+64+32],%f28 2085*5d9d9091SRichard Lowe! 2086*5d9d9091SRichard Lowe faddd %f26,%f48,%f48 2087*5d9d9091SRichard Lowe fmuld %f8,%f16,%f18 2088*5d9d9091SRichard Lowe std %f48,[%i3+64+64+40] 2089*5d9d9091SRichard Lowe! 2090*5d9d9091SRichard Lowe faddd %f30,%f50,%f50 2091*5d9d9091SRichard Lowe fmuld %f8,%f20,%f22 2092*5d9d9091SRichard Lowe std %f50,[%i3+64+64+48] 2093*5d9d9091SRichard Lowe! 2094*5d9d9091SRichard Lowe faddd %f34,%f52,%f52 2095*5d9d9091SRichard Lowe fmuld %f8,%f24,%f26 2096*5d9d9091SRichard Lowe std %f52,[%i3+64+64+56] 2097*5d9d9091SRichard Lowe! 2098*5d9d9091SRichard Lowe faddd %f58,%f54,%f54 2099*5d9d9091SRichard Lowe fmuld %f8,%f28,%f30 2100*5d9d9091SRichard Lowe std %f54,[%i3+64+64+64] 2101*5d9d9091SRichard Lowe! 2102*5d9d9091SRichard Lowe 2103*5d9d9091SRichard Lowe 2104*5d9d9091SRichard Lowe fdtox %f18,%f18 2105*5d9d9091SRichard Lowe! 2106*5d9d9091SRichard Lowe fdtox %f22,%f22 2107*5d9d9091SRichard Lowe! 2108*5d9d9091SRichard Lowe fdtox %f26,%f26 2109*5d9d9091SRichard Lowe ldd [%i3+64+64+64+40],%f32 2110*5d9d9091SRichard Lowe! 2111*5d9d9091SRichard Lowe fdtox %f30,%f30 2112*5d9d9091SRichard Lowe ldd [%i3+64+64+64+48],%f56 2113*5d9d9091SRichard Lowe! 2114*5d9d9091SRichard Lowe fxtod %f18,%f18 2115*5d9d9091SRichard Lowe fmuld %f8,%f32,%f34 2116*5d9d9091SRichard Lowe ldd [%i3+64+64+64+56],%f36 2117*5d9d9091SRichard Lowe! 2118*5d9d9091SRichard Lowe fxtod %f22,%f22 2119*5d9d9091SRichard Lowe fmuld %f8,%f56,%f58 2120*5d9d9091SRichard Lowe ldd [%i3+64+64+64+64],%f38 2121*5d9d9091SRichard Lowe! 2122*5d9d9091SRichard Lowe fxtod %f26,%f26 2123*5d9d9091SRichard Lowe fmuld %f8,%f36,%f12 2124*5d9d9091SRichard Lowe! 2125*5d9d9091SRichard Lowe fxtod %f30,%f30 2126*5d9d9091SRichard Lowe fmuld %f8,%f38,%f14 2127*5d9d9091SRichard Lowe! 2128*5d9d9091SRichard Lowe fdtox %f34,%f34 2129*5d9d9091SRichard Lowe fmuld %f10,%f18,%f40 2130*5d9d9091SRichard Lowe! 2131*5d9d9091SRichard Lowe fdtox %f58,%f58 2132*5d9d9091SRichard Lowe fmuld %f10,%f22,%f42 2133*5d9d9091SRichard Lowe! 2134*5d9d9091SRichard Lowe fdtox %f12,%f12 2135*5d9d9091SRichard Lowe fmuld %f10,%f26,%f44 2136*5d9d9091SRichard Lowe! 2137*5d9d9091SRichard Lowe fdtox %f14,%f14 2138*5d9d9091SRichard Lowe fmuld %f10,%f30,%f46 2139*5d9d9091SRichard Lowe! 2140*5d9d9091SRichard Lowe sethi %hi(TwoToMinus16),%g5 2141*5d9d9091SRichard Lowe fxtod %f34,%f34 2142*5d9d9091SRichard Lowe! 2143*5d9d9091SRichard Lowe sethi %hi(TwoTo16),%l5 2144*5d9d9091SRichard Lowe fxtod %f58,%f58 2145*5d9d9091SRichard Lowe! 2146*5d9d9091SRichard Lowe fxtod %f12,%f12 2147*5d9d9091SRichard Lowe! 2148*5d9d9091SRichard Lowe fxtod %f14,%f14 2149*5d9d9091SRichard Lowe! 2150*5d9d9091SRichard Lowe fsubd %f16,%f40,%f16 2151*5d9d9091SRichard Lowe fmuld %f10,%f34,%f48 2152*5d9d9091SRichard Lowe ldd [%g5+%lo(TwoToMinus16)],%f8 2153*5d9d9091SRichard Lowe! 2154*5d9d9091SRichard Lowe fsubd %f20,%f42,%f20 2155*5d9d9091SRichard Lowe fmuld %f10,%f58,%f50 2156*5d9d9091SRichard Lowe ldd [%i1],%f40 ! should be %f40 2157*5d9d9091SRichard Lowe! 2158*5d9d9091SRichard Lowe fsubd %f24,%f44,%f24 2159*5d9d9091SRichard Lowe fmuld %f10,%f12,%f52 2160*5d9d9091SRichard Lowe ldd [%i1+8],%f42 ! should be %f42 2161*5d9d9091SRichard Lowe! 2162*5d9d9091SRichard Lowe fsubd %f28,%f46,%f28 2163*5d9d9091SRichard Lowe fmuld %f10,%f14,%f54 2164*5d9d9091SRichard Lowe ldd [%i4],%f44 ! should be %f44 2165*5d9d9091SRichard Lowe! 2166*5d9d9091SRichard Lowe faddd %f60,%f16,%f16 2167*5d9d9091SRichard Lowe std %f16,[%i3+64+64+64+8] 2168*5d9d9091SRichard Lowe! 2169*5d9d9091SRichard Lowe faddd %f62,%f20,%f20 2170*5d9d9091SRichard Lowe std %f20,[%i3+64+64+64+16] 2171*5d9d9091SRichard Lowe! 2172*5d9d9091SRichard Lowe faddd %f18,%f24,%f24 2173*5d9d9091SRichard Lowe std %f24,[%i3+64+64+64+24] 2174*5d9d9091SRichard Lowe! 2175*5d9d9091SRichard Lowe faddd %f22,%f28,%f28 2176*5d9d9091SRichard Lowe std %f28,[%i3+64+64+64+32] 2177*5d9d9091SRichard Lowe! 2178*5d9d9091SRichard Lowe fsubd %f32,%f48,%f32 2179*5d9d9091SRichard Lowe ldd [%i4+8],%f46 ! should be %f46 2180*5d9d9091SRichard Lowe! 2181*5d9d9091SRichard Lowe fsubd %f56,%f50,%f56 2182*5d9d9091SRichard Lowe ldd [%i1+104],%f48 ! should be %f48 2183*5d9d9091SRichard Lowe! 2184*5d9d9091SRichard Lowe fsubd %f36,%f52,%f36 2185*5d9d9091SRichard Lowe ldd [%i4+104],%f50 ! should be %f50 2186*5d9d9091SRichard Lowe! 2187*5d9d9091SRichard Lowe fsubd %f38,%f54,%f38 2188*5d9d9091SRichard Lowe ldd [%i1+16],%f52 ! should be %f52 2189*5d9d9091SRichard Lowe! 2190*5d9d9091SRichard Lowe faddd %f26,%f32,%f32 2191*5d9d9091SRichard Lowe std %f32,[%i3+64+64+64+40] 2192*5d9d9091SRichard Lowe! 2193*5d9d9091SRichard Lowe faddd %f30,%f56,%f56 2194*5d9d9091SRichard Lowe std %f56,[%i3+64+64+64+48] 2195*5d9d9091SRichard Lowe! 2196*5d9d9091SRichard Lowe faddd %f34,%f36,%f36 2197*5d9d9091SRichard Lowe std %f36,[%i3+64+64+64+56] 2198*5d9d9091SRichard Lowe! 2199*5d9d9091SRichard Lowe faddd %f58,%f38,%f38 2200*5d9d9091SRichard Lowe std %f38,[%i3+64+64+64+64] 2201*5d9d9091SRichard Lowe! 2202*5d9d9091SRichard Lowe std %f12,[%i3+64+64+64+64+8] 2203*5d9d9091SRichard Lowe! 2204*5d9d9091SRichard Lowe std %f14,[%i3+64+64+64+64+16] 2205*5d9d9091SRichard Lowe! 2206*5d9d9091SRichard Lowe 2207*5d9d9091SRichard Lowe ldd [%l5+%lo(TwoTo16)],%f10 2208*5d9d9091SRichard Lowe ldd [%i1+48],%f54 2209*5d9d9091SRichard Lowe ldd [%i1+56],%f36 2210*5d9d9091SRichard Lowe ldd [%i1+64],%f56 2211*5d9d9091SRichard Lowe ldd [%i1+112],%f58 2212*5d9d9091SRichard Lowe 2213*5d9d9091SRichard Lowe ldd [%i4+104],%f50 2214*5d9d9091SRichard Lowe ldd [%i4+112],%f60 2215*5d9d9091SRichard Lowe 2216*5d9d9091SRichard Lowe 2217*5d9d9091SRichard Lowe .L99999998: 2218*5d9d9091SRichard Lowe!1 2219*5d9d9091SRichard Lowe ldd [%i1+24],%f20 2220*5d9d9091SRichard Lowe fmuld %f0,%f44,%f12 2221*5d9d9091SRichard Lowe!2 2222*5d9d9091SRichard Lowe ldd [%i4+24],%f22 2223*5d9d9091SRichard Lowe fmuld %f42,%f4,%f16 2224*5d9d9091SRichard Lowe!3 2225*5d9d9091SRichard Lowe ldd [%i1+40],%f24 2226*5d9d9091SRichard Lowe fmuld %f46,%f0,%f18 2227*5d9d9091SRichard Lowe!4 2228*5d9d9091SRichard Lowe ldd [%i4+40],%f26 2229*5d9d9091SRichard Lowe fmuld %f20,%f4,%f20 2230*5d9d9091SRichard Lowe!5 2231*5d9d9091SRichard Lowe ldd [%l0+8],%f38 2232*5d9d9091SRichard Lowe faddd %f12,%f6,%f12 2233*5d9d9091SRichard Lowe fmuld %f22,%f0,%f22 2234*5d9d9091SRichard Lowe!6 2235*5d9d9091SRichard Lowe add %l0,8,%l0 2236*5d9d9091SRichard Lowe ldd [%i4+56],%f30 2237*5d9d9091SRichard Lowe fmuld %f24,%f4,%f24 2238*5d9d9091SRichard Lowe!7 2239*5d9d9091SRichard Lowe ldd [%i1+72],%f32 2240*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 2241*5d9d9091SRichard Lowe fmuld %f26,%f0,%f26 2242*5d9d9091SRichard Lowe!8 2243*5d9d9091SRichard Lowe ldd [%i3+16],%f18 2244*5d9d9091SRichard Lowe fmuld %f40,%f38,%f14 2245*5d9d9091SRichard Lowe!9 2246*5d9d9091SRichard Lowe ldd [%i4+72],%f34 2247*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 2248*5d9d9091SRichard Lowe fmuld %f8,%f12,%f12 2249*5d9d9091SRichard Lowe!10 2250*5d9d9091SRichard Lowe ldd [%i3+48],%f22 2251*5d9d9091SRichard Lowe fmuld %f36,%f4,%f28 2252*5d9d9091SRichard Lowe!11 2253*5d9d9091SRichard Lowe ldd [%i3+8],%f6 2254*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 2255*5d9d9091SRichard Lowe fmuld %f30,%f0,%f30 2256*5d9d9091SRichard Lowe!12 2257*5d9d9091SRichard Lowe std %f16,[%i3+16] 2258*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 2259*5d9d9091SRichard Lowe fmuld %f32,%f4,%f32 2260*5d9d9091SRichard Lowe!13 2261*5d9d9091SRichard Lowe ldd [%i3+80],%f26 2262*5d9d9091SRichard Lowe faddd %f12,%f14,%f12 2263*5d9d9091SRichard Lowe fmuld %f34,%f0,%f34 2264*5d9d9091SRichard Lowe!14 2265*5d9d9091SRichard Lowe ldd [%i1+88],%f16 2266*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 2267*5d9d9091SRichard Lowe!15 2268*5d9d9091SRichard Lowe ldd [%i4+88],%f18 2269*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 2270*5d9d9091SRichard Lowe!16 2271*5d9d9091SRichard Lowe ldd [%i3+112],%f30 2272*5d9d9091SRichard Lowe faddd %f32,%f34,%f32 2273*5d9d9091SRichard Lowe!17 2274*5d9d9091SRichard Lowe ldd [%i3+144],%f34 2275*5d9d9091SRichard Lowe faddd %f12,%f6,%f6 2276*5d9d9091SRichard Lowe fmuld %f16,%f4,%f16 2277*5d9d9091SRichard Lowe!18 2278*5d9d9091SRichard Lowe std %f20,[%i3+48] 2279*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 2280*5d9d9091SRichard Lowe fmuld %f18,%f0,%f18 2281*5d9d9091SRichard Lowe!19 2282*5d9d9091SRichard Lowe std %f24,[%i3+80] 2283*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 2284*5d9d9091SRichard Lowe fmuld %f48,%f4,%f20 2285*5d9d9091SRichard Lowe!20 2286*5d9d9091SRichard Lowe std %f28,[%i3+112] 2287*5d9d9091SRichard Lowe faddd %f32,%f34,%f32 2288*5d9d9091SRichard Lowe fmuld %f50,%f0,%f22 2289*5d9d9091SRichard Lowe!21 2290*5d9d9091SRichard Lowe ldd [%i1+120],%f24 2291*5d9d9091SRichard Lowe fdtox %f6,%f12 2292*5d9d9091SRichard Lowe!22 2293*5d9d9091SRichard Lowe std %f32,[%i3+144] 2294*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 2295*5d9d9091SRichard Lowe!23 2296*5d9d9091SRichard Lowe ldd [%i4+120],%f26 2297*5d9d9091SRichard Lowe!24 2298*5d9d9091SRichard Lowe ldd [%i3+176],%f18 2299*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 2300*5d9d9091SRichard Lowe fmuld %f24,%f4,%f24 2301*5d9d9091SRichard Lowe!25 2302*5d9d9091SRichard Lowe ldd [%i4+16],%f30 2303*5d9d9091SRichard Lowe fmovs %f11,%f12 2304*5d9d9091SRichard Lowe!26 2305*5d9d9091SRichard Lowe ldd [%i1+32],%f32 2306*5d9d9091SRichard Lowe fmuld %f26,%f0,%f26 2307*5d9d9091SRichard Lowe!27 2308*5d9d9091SRichard Lowe ldd [%i4+32],%f34 2309*5d9d9091SRichard Lowe fmuld %f52,%f4,%f28 2310*5d9d9091SRichard Lowe!28 2311*5d9d9091SRichard Lowe ldd [%i3+208],%f22 2312*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 2313*5d9d9091SRichard Lowe fmuld %f30,%f0,%f30 2314*5d9d9091SRichard Lowe!29 2315*5d9d9091SRichard Lowe std %f16,[%i3+176] 2316*5d9d9091SRichard Lowe fxtod %f12,%f12 2317*5d9d9091SRichard Lowe fmuld %f32,%f4,%f32 2318*5d9d9091SRichard Lowe!30 2319*5d9d9091SRichard Lowe ldd [%i4+48],%f18 2320*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 2321*5d9d9091SRichard Lowe fmuld %f34,%f0,%f34 2322*5d9d9091SRichard Lowe!31 2323*5d9d9091SRichard Lowe ldd [%i3+240],%f26 2324*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 2325*5d9d9091SRichard Lowe!32 2326*5d9d9091SRichard Lowe std %f20,[%i3+208] 2327*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 2328*5d9d9091SRichard Lowe fmuld %f54,%f4,%f16 2329*5d9d9091SRichard Lowe!33 2330*5d9d9091SRichard Lowe ldd [%i3+32],%f30 2331*5d9d9091SRichard Lowe fmuld %f12,%f2,%f14 2332*5d9d9091SRichard Lowe!34 2333*5d9d9091SRichard Lowe ldd [%i4+64],%f22 2334*5d9d9091SRichard Lowe faddd %f32,%f34,%f32 2335*5d9d9091SRichard Lowe fmuld %f18,%f0,%f18 2336*5d9d9091SRichard Lowe!35 2337*5d9d9091SRichard Lowe ldd [%i3+64],%f34 2338*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 2339*5d9d9091SRichard Lowe!36 2340*5d9d9091SRichard Lowe std %f24,[%i3+240] 2341*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 2342*5d9d9091SRichard Lowe fmuld %f56,%f4,%f20 2343*5d9d9091SRichard Lowe!37 2344*5d9d9091SRichard Lowe std %f28,[%i3+32] 2345*5d9d9091SRichard Lowe fmuld %f14,%f8,%f12 2346*5d9d9091SRichard Lowe!38 2347*5d9d9091SRichard Lowe ldd [%i1+80],%f24 2348*5d9d9091SRichard Lowe faddd %f32,%f34,%f34 ! yes, tmp52! 2349*5d9d9091SRichard Lowe fmuld %f22,%f0,%f22 2350*5d9d9091SRichard Lowe!39 2351*5d9d9091SRichard Lowe ldd [%i4+80],%f26 2352*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 2353*5d9d9091SRichard Lowe!40 2354*5d9d9091SRichard Lowe ldd [%i1+96],%f28 2355*5d9d9091SRichard Lowe fmuld %f58,%f4,%f32 2356*5d9d9091SRichard Lowe!41 2357*5d9d9091SRichard Lowe ldd [%i4+96],%f30 2358*5d9d9091SRichard Lowe fdtox %f12,%f12 2359*5d9d9091SRichard Lowe fmuld %f24,%f4,%f24 2360*5d9d9091SRichard Lowe!42 2361*5d9d9091SRichard Lowe std %f34,[%i3+64] ! yes, tmp52! 2362*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 2363*5d9d9091SRichard Lowe fmuld %f26,%f0,%f26 2364*5d9d9091SRichard Lowe!43 2365*5d9d9091SRichard Lowe ldd [%i3+96],%f18 2366*5d9d9091SRichard Lowe fmuld %f28,%f4,%f28 2367*5d9d9091SRichard Lowe!44 2368*5d9d9091SRichard Lowe ldd [%i3+128],%f22 2369*5d9d9091SRichard Lowe fmovd %f38,%f4 2370*5d9d9091SRichard Lowe fmuld %f30,%f0,%f30 2371*5d9d9091SRichard Lowe!45 2372*5d9d9091SRichard Lowe fxtod %f12,%f12 2373*5d9d9091SRichard Lowe fmuld %f60,%f0,%f34 2374*5d9d9091SRichard Lowe!46 2375*5d9d9091SRichard Lowe add %i3,8,%i3 2376*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 2377*5d9d9091SRichard Lowe!47 2378*5d9d9091SRichard Lowe ldd [%i3+160-8],%f26 2379*5d9d9091SRichard Lowe faddd %f16,%f18,%f16 2380*5d9d9091SRichard Lowe!48 2381*5d9d9091SRichard Lowe std %f16,[%i3+96-8] 2382*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 2383*5d9d9091SRichard Lowe!49 2384*5d9d9091SRichard Lowe ldd [%i3+192-8],%f30 2385*5d9d9091SRichard Lowe faddd %f32,%f34,%f32 2386*5d9d9091SRichard Lowe fmuld %f12,%f10,%f12 2387*5d9d9091SRichard Lowe!50 2388*5d9d9091SRichard Lowe ldd [%i3+224-8],%f34 2389*5d9d9091SRichard Lowe faddd %f20,%f22,%f20 2390*5d9d9091SRichard Lowe!51 2391*5d9d9091SRichard Lowe std %f20,[%i3+128-8] 2392*5d9d9091SRichard Lowe faddd %f24,%f26,%f24 2393*5d9d9091SRichard Lowe!52 2394*5d9d9091SRichard Lowe add %l1,1,%l1 2395*5d9d9091SRichard Lowe std %f24,[%i3+160-8] 2396*5d9d9091SRichard Lowe faddd %f28,%f30,%f28 2397*5d9d9091SRichard Lowe!53 2398*5d9d9091SRichard Lowe cmp %l1,31 2399*5d9d9091SRichard Lowe std %f28,[%i3+192-8] 2400*5d9d9091SRichard Lowe fsubd %f14,%f12,%f0 2401*5d9d9091SRichard Lowe!54 2402*5d9d9091SRichard Lowe faddd %f32,%f34,%f32 2403*5d9d9091SRichard Lowe ble,pt %icc,.L99999998 2404*5d9d9091SRichard Lowe std %f32,[%i3+224-8] 2405*5d9d9091SRichard Lowe!55 2406*5d9d9091SRichard Lowe std %f6,[%i3] 2407*5d9d9091SRichard Lowe 2408*5d9d9091SRichard Lowe add %o5,%g0,%i3 2409*5d9d9091SRichard Lowe 2410*5d9d9091SRichard Lowe 2411*5d9d9091SRichard Lowe!END HAND CODED PART 2412*5d9d9091SRichard Lowe .L900000828: 2413*5d9d9091SRichard Lowe/* 0x03e4 405 */ ba .L900000852 2414*5d9d9091SRichard Lowe/* 0x03e8 409 */ ldx [%i3+%o0],%l1 2415*5d9d9091SRichard Lowe 2416*5d9d9091SRichard Lowe! 406 ! } 2417*5d9d9091SRichard Lowe! 407 ! } 2418*5d9d9091SRichard Lowe! 409 ! conv_d16_to_i32(result, dt + 2 * nlen, (int64_t *)dt, nlen + 1); 2419*5d9d9091SRichard Lowe! 411 !/*for(i=0;i<nlen+1;i++) saveresult[i]=result[i];*/ 2420*5d9d9091SRichard Lowe! 413 ! adjust_montf_result(result, nint, nlen); 2421*5d9d9091SRichard Lowe 2422*5d9d9091SRichard Lowe .L77000476: 2423*5d9d9091SRichard Lowe/* 0x03ec 413 */ sll %g1,2,%l3 2424*5d9d9091SRichard Lowe/* 0x03f0 0 */ sethi %hi(TwoTo16),%g5 2425*5d9d9091SRichard Lowe/* 0x03f4 413 */ add %l3,2,%l2 2426*5d9d9091SRichard Lowe/* 0x03f8 328 */ cmp %l2,0 2427*5d9d9091SRichard Lowe/* 0x03fc */ ble,pn %icc,.L77000482 2428*5d9d9091SRichard Lowe/* 0x0400 0 */ sethi %hi(TwoToMinus16),%o2 2429*5d9d9091SRichard Lowe .L77000514: 2430*5d9d9091SRichard Lowe/* 0x0404 329 */ add %l3,2,%l2 2431*5d9d9091SRichard Lowe/* 0x0408 328 */ add %l3,1,%o4 2432*5d9d9091SRichard Lowe/* 0x040c */ or %g0,0,%l3 2433*5d9d9091SRichard Lowe/* 0x0410 329 */ cmp %l2,8 2434*5d9d9091SRichard Lowe/* 0x0414 */ bl,pn %icc,.L77000477 2435*5d9d9091SRichard Lowe/* 0x0418 328 */ or %g0,%i3,%l1 2436*5d9d9091SRichard Lowe .L900000831: 2437*5d9d9091SRichard Lowe/* 0x041c 329 */ prefetch [%i3],22 2438*5d9d9091SRichard Lowe/* 0x0420 */ sub %o4,7,%l4 2439*5d9d9091SRichard Lowe/* 0x0424 */ or %g0,0,%l3 2440*5d9d9091SRichard Lowe/* 0x0428 */ or %g0,%i3,%l1 2441*5d9d9091SRichard Lowe .L900000829: 2442*5d9d9091SRichard Lowe/* 0x042c 329 */ prefetch [%l1+528],22 2443*5d9d9091SRichard Lowe/* 0x0430 */ std %f0,[%l1] 2444*5d9d9091SRichard Lowe/* 0x0434 */ add %l3,8,%l3 2445*5d9d9091SRichard Lowe/* 0x0438 */ add %l1,64,%l1 2446*5d9d9091SRichard Lowe/* 0x043c */ std %f0,[%l1-56] 2447*5d9d9091SRichard Lowe/* 0x0440 */ cmp %l3,%l4 2448*5d9d9091SRichard Lowe/* 0x0444 */ std %f0,[%l1-48] 2449*5d9d9091SRichard Lowe/* 0x0448 */ std %f0,[%l1-40] 2450*5d9d9091SRichard Lowe/* 0x044c */ prefetch [%l1+496],22 2451*5d9d9091SRichard Lowe/* 0x0450 */ std %f0,[%l1-32] 2452*5d9d9091SRichard Lowe/* 0x0454 */ std %f0,[%l1-24] 2453*5d9d9091SRichard Lowe/* 0x0458 */ std %f0,[%l1-16] 2454*5d9d9091SRichard Lowe/* 0x045c */ ble,pt %icc,.L900000829 2455*5d9d9091SRichard Lowe/* 0x0460 */ std %f0,[%l1-8] 2456*5d9d9091SRichard Lowe .L900000832: 2457*5d9d9091SRichard Lowe/* 0x0464 329 */ cmp %l3,%o4 2458*5d9d9091SRichard Lowe/* 0x0468 */ bg,pn %icc,.L77000482 2459*5d9d9091SRichard Lowe/* 0x046c */ nop 2460*5d9d9091SRichard Lowe .L77000477: 2461*5d9d9091SRichard Lowe/* 0x0470 329 */ add %l3,1,%l3 2462*5d9d9091SRichard Lowe .L900000851: 2463*5d9d9091SRichard Lowe/* 0x0474 329 */ std %f0,[%l1] 2464*5d9d9091SRichard Lowe/* 0x0478 */ cmp %l3,%o4 2465*5d9d9091SRichard Lowe/* 0x047c */ add %l1,8,%l1 2466*5d9d9091SRichard Lowe/* 0x0480 */ ble,pt %icc,.L900000851 2467*5d9d9091SRichard Lowe/* 0x0484 */ add %l3,1,%l3 2468*5d9d9091SRichard Lowe .L77000482: 2469*5d9d9091SRichard Lowe/* 0x0488 330 */ ldd [%i1],%f40 2470*5d9d9091SRichard Lowe/* 0x048c 334 */ cmp %o3,0 2471*5d9d9091SRichard Lowe/* 0x0490 */ sub %g1,1,%l3 2472*5d9d9091SRichard Lowe/* 0x0494 330 */ ldd [%l0],%f42 2473*5d9d9091SRichard Lowe/* 0x0498 331 */ ldd [%o2+%lo(TwoToMinus16)],%f36 2474*5d9d9091SRichard Lowe/* 0x049c */ ldd [%g5+%lo(TwoTo16)],%f38 2475*5d9d9091SRichard Lowe/* 0x04a0 330 */ fmuld %f40,%f42,%f52 2476*5d9d9091SRichard Lowe/* 0x04a4 331 */ fdtox %f52,%f8 2477*5d9d9091SRichard Lowe/* 0x04a8 */ fmovs %f0,%f8 2478*5d9d9091SRichard Lowe/* 0x04ac */ fxtod %f8,%f62 2479*5d9d9091SRichard Lowe/* 0x04b0 */ fmuld %f62,%f14,%f60 2480*5d9d9091SRichard Lowe/* 0x04b4 */ fmuld %f60,%f36,%f32 2481*5d9d9091SRichard Lowe/* 0x04b8 */ fdtox %f32,%f50 2482*5d9d9091SRichard Lowe/* 0x04bc */ fxtod %f50,%f34 2483*5d9d9091SRichard Lowe/* 0x04c0 */ fmuld %f34,%f38,%f46 2484*5d9d9091SRichard Lowe/* 0x04c4 */ fsubd %f60,%f46,%f40 2485*5d9d9091SRichard Lowe/* 0x04c8 334 */ ble,pn %icc,.L77000378 2486*5d9d9091SRichard Lowe/* 0x04cc 330 */ std %f52,[%i3] 2487*5d9d9091SRichard Lowe .L77000509: 2488*5d9d9091SRichard Lowe/* 0x04d0 345 */ add %o3,1,%g5 2489*5d9d9091SRichard Lowe/* 0x04d4 */ sll %g5,1,%o2 2490*5d9d9091SRichard Lowe/* 0x04d8 */ or %g0,0,%l1 2491*5d9d9091SRichard Lowe/* 0x04dc 337 */ ldd [%i4],%f42 2492*5d9d9091SRichard Lowe/* 0x04e0 345 */ sub %o3,1,%o3 2493*5d9d9091SRichard Lowe/* 0x04e4 */ or %g0,0,%o5 2494*5d9d9091SRichard Lowe/* 0x04e8 */ or %g0,%i3,%l2 2495*5d9d9091SRichard Lowe/* 0x04ec */ add %i4,8,%o1 2496*5d9d9091SRichard Lowe/* 0x04f0 */ add %i1,8,%g5 2497*5d9d9091SRichard Lowe .L900000848: 2498*5d9d9091SRichard Lowe/* 0x04f4 337 */ fmuld %f40,%f42,%f34 2499*5d9d9091SRichard Lowe/* 0x04f8 */ ldd [%l0+8],%f32 2500*5d9d9091SRichard Lowe/* 0x04fc 341 */ cmp %g1,1 2501*5d9d9091SRichard Lowe/* 0x0500 337 */ ldd [%i1],%f50 2502*5d9d9091SRichard Lowe/* 0x0504 */ ldd [%l2],%f46 2503*5d9d9091SRichard Lowe/* 0x0508 */ ldd [%l2+8],%f44 2504*5d9d9091SRichard Lowe/* 0x050c */ fmuld %f50,%f32,%f60 2505*5d9d9091SRichard Lowe/* 0x0510 335 */ ldd [%l0],%f42 2506*5d9d9091SRichard Lowe/* 0x0514 337 */ faddd %f46,%f34,%f48 2507*5d9d9091SRichard Lowe/* 0x0518 */ faddd %f44,%f60,%f58 2508*5d9d9091SRichard Lowe/* 0x051c */ fmuld %f36,%f48,%f54 2509*5d9d9091SRichard Lowe/* 0x0520 */ faddd %f58,%f54,%f34 2510*5d9d9091SRichard Lowe/* 0x0524 341 */ ble,pn %icc,.L77000368 2511*5d9d9091SRichard Lowe/* 0x0528 338 */ std %f34,[%l2+8] 2512*5d9d9091SRichard Lowe .L77000507: 2513*5d9d9091SRichard Lowe/* 0x052c 341 */ or %g0,1,%l5 2514*5d9d9091SRichard Lowe/* 0x0530 */ or %g0,2,%l4 2515*5d9d9091SRichard Lowe/* 0x0534 */ or %g0,%g5,%g4 2516*5d9d9091SRichard Lowe/* 0x0538 342 */ cmp %l3,12 2517*5d9d9091SRichard Lowe/* 0x053c */ bl,pn %icc,.L77000481 2518*5d9d9091SRichard Lowe/* 0x0540 341 */ or %g0,%o1,%g3 2519*5d9d9091SRichard Lowe .L900000839: 2520*5d9d9091SRichard Lowe/* 0x0544 342 */ prefetch [%i1+8],0 2521*5d9d9091SRichard Lowe/* 0x0548 */ prefetch [%i1+72],0 2522*5d9d9091SRichard Lowe/* 0x054c */ add %i4,40,%l6 2523*5d9d9091SRichard Lowe/* 0x0550 */ add %i1,40,%l7 2524*5d9d9091SRichard Lowe/* 0x0554 */ prefetch [%l2+16],0 2525*5d9d9091SRichard Lowe/* 0x0558 */ or %g0,%l2,%o7 2526*5d9d9091SRichard Lowe/* 0x055c */ sub %l3,7,%i5 2527*5d9d9091SRichard Lowe/* 0x0560 */ prefetch [%l2+80],0 2528*5d9d9091SRichard Lowe/* 0x0564 */ add %l2,80,%g2 2529*5d9d9091SRichard Lowe/* 0x0568 */ or %g0,2,%l4 2530*5d9d9091SRichard Lowe/* 0x056c */ prefetch [%i1+136],0 2531*5d9d9091SRichard Lowe/* 0x0570 */ or %g0,5,%l5 2532*5d9d9091SRichard Lowe/* 0x0574 */ prefetch [%i1+200],0 2533*5d9d9091SRichard Lowe/* 0x0578 */ prefetch [%l2+144],0 2534*5d9d9091SRichard Lowe/* 0x057c */ ldd [%i4+8],%f52 2535*5d9d9091SRichard Lowe/* 0x0580 */ ldd [%i4+16],%f44 2536*5d9d9091SRichard Lowe/* 0x0584 */ ldd [%i4+24],%f56 2537*5d9d9091SRichard Lowe/* 0x0588 */ fmuld %f40,%f52,%f48 2538*5d9d9091SRichard Lowe/* 0x058c */ fmuld %f40,%f44,%f46 2539*5d9d9091SRichard Lowe/* 0x0590 */ fmuld %f40,%f56,%f44 2540*5d9d9091SRichard Lowe/* 0x0594 */ ldd [%l2+48],%f56 2541*5d9d9091SRichard Lowe/* 0x0598 */ prefetch [%l2+208],0 2542*5d9d9091SRichard Lowe/* 0x059c */ prefetch [%l2+272],0 2543*5d9d9091SRichard Lowe/* 0x05a0 */ prefetch [%l2+336],0 2544*5d9d9091SRichard Lowe/* 0x05a4 */ prefetch [%l2+400],0 2545*5d9d9091SRichard Lowe/* 0x05a8 */ ldd [%i1+8],%f32 2546*5d9d9091SRichard Lowe/* 0x05ac */ ldd [%i1+16],%f60 2547*5d9d9091SRichard Lowe/* 0x05b0 */ ldd [%i1+24],%f50 2548*5d9d9091SRichard Lowe/* 0x05b4 */ fmuld %f42,%f32,%f62 2549*5d9d9091SRichard Lowe/* 0x05b8 */ ldd [%i1+32],%f32 2550*5d9d9091SRichard Lowe/* 0x05bc */ fmuld %f42,%f60,%f58 2551*5d9d9091SRichard Lowe/* 0x05c0 */ ldd [%l2+16],%f52 2552*5d9d9091SRichard Lowe/* 0x05c4 */ ldd [%l2+32],%f54 2553*5d9d9091SRichard Lowe/* 0x05c8 */ faddd %f62,%f48,%f60 2554*5d9d9091SRichard Lowe/* 0x05cc */ fmuld %f42,%f50,%f48 2555*5d9d9091SRichard Lowe/* 0x05d0 */ faddd %f58,%f46,%f62 2556*5d9d9091SRichard Lowe/* 0x05d4 */ ldd [%i4+32],%f46 2557*5d9d9091SRichard Lowe/* 0x05d8 */ ldd [%l2+64],%f58 2558*5d9d9091SRichard Lowe .L900000837: 2559*5d9d9091SRichard Lowe/* 0x05dc 342 */ prefetch [%l7+192],0 2560*5d9d9091SRichard Lowe/* 0x05e0 */ fmuld %f40,%f46,%f46 2561*5d9d9091SRichard Lowe/* 0x05e4 */ faddd %f60,%f52,%f60 2562*5d9d9091SRichard Lowe/* 0x05e8 */ ldd [%l6],%f52 2563*5d9d9091SRichard Lowe/* 0x05ec */ std %f60,[%g2-64] 2564*5d9d9091SRichard Lowe/* 0x05f0 */ fmuld %f42,%f32,%f50 2565*5d9d9091SRichard Lowe/* 0x05f4 */ add %l5,8,%l5 2566*5d9d9091SRichard Lowe/* 0x05f8 */ ldd [%l7],%f60 2567*5d9d9091SRichard Lowe/* 0x05fc */ faddd %f48,%f44,%f48 2568*5d9d9091SRichard Lowe/* 0x0600 */ cmp %l5,%i5 2569*5d9d9091SRichard Lowe/* 0x0604 */ ldd [%g2],%f32 2570*5d9d9091SRichard Lowe/* 0x0608 */ add %g2,128,%g2 2571*5d9d9091SRichard Lowe/* 0x060c */ prefetch [%g2+256],0 2572*5d9d9091SRichard Lowe/* 0x0610 */ fmuld %f40,%f52,%f52 2573*5d9d9091SRichard Lowe/* 0x0614 */ faddd %f62,%f54,%f44 2574*5d9d9091SRichard Lowe/* 0x0618 */ ldd [%l6+8],%f54 2575*5d9d9091SRichard Lowe/* 0x061c */ std %f44,[%g2-176] 2576*5d9d9091SRichard Lowe/* 0x0620 */ fmuld %f42,%f60,%f44 2577*5d9d9091SRichard Lowe/* 0x0624 */ add %l6,64,%l6 2578*5d9d9091SRichard Lowe/* 0x0628 */ ldd [%l7+8],%f60 2579*5d9d9091SRichard Lowe/* 0x062c */ faddd %f50,%f46,%f50 2580*5d9d9091SRichard Lowe/* 0x0630 */ add %l7,64,%l7 2581*5d9d9091SRichard Lowe/* 0x0634 */ add %l4,16,%l4 2582*5d9d9091SRichard Lowe/* 0x0638 */ ldd [%g2-112],%f46 2583*5d9d9091SRichard Lowe/* 0x063c */ fmuld %f40,%f54,%f54 2584*5d9d9091SRichard Lowe/* 0x0640 */ faddd %f48,%f56,%f62 2585*5d9d9091SRichard Lowe/* 0x0644 */ ldd [%l6-48],%f56 2586*5d9d9091SRichard Lowe/* 0x0648 */ std %f62,[%g2-160] 2587*5d9d9091SRichard Lowe/* 0x064c */ fmuld %f42,%f60,%f48 2588*5d9d9091SRichard Lowe/* 0x0650 */ ldd [%l7-48],%f60 2589*5d9d9091SRichard Lowe/* 0x0654 */ faddd %f44,%f52,%f52 2590*5d9d9091SRichard Lowe/* 0x0658 */ ldd [%g2-96],%f30 2591*5d9d9091SRichard Lowe/* 0x065c */ prefetch [%g2+288],0 2592*5d9d9091SRichard Lowe/* 0x0660 */ fmuld %f40,%f56,%f56 2593*5d9d9091SRichard Lowe/* 0x0664 */ faddd %f50,%f58,%f62 2594*5d9d9091SRichard Lowe/* 0x0668 */ ldd [%l6-40],%f58 2595*5d9d9091SRichard Lowe/* 0x066c */ std %f62,[%g2-144] 2596*5d9d9091SRichard Lowe/* 0x0670 */ fmuld %f42,%f60,%f50 2597*5d9d9091SRichard Lowe/* 0x0674 */ ldd [%l7-40],%f62 2598*5d9d9091SRichard Lowe/* 0x0678 */ faddd %f48,%f54,%f54 2599*5d9d9091SRichard Lowe/* 0x067c */ ldd [%g2-80],%f28 2600*5d9d9091SRichard Lowe/* 0x0680 */ prefetch [%l7+160],0 2601*5d9d9091SRichard Lowe/* 0x0684 */ fmuld %f40,%f58,%f48 2602*5d9d9091SRichard Lowe/* 0x0688 */ faddd %f52,%f32,%f44 2603*5d9d9091SRichard Lowe/* 0x068c */ ldd [%l6-32],%f58 2604*5d9d9091SRichard Lowe/* 0x0690 */ std %f44,[%g2-128] 2605*5d9d9091SRichard Lowe/* 0x0694 */ fmuld %f42,%f62,%f44 2606*5d9d9091SRichard Lowe/* 0x0698 */ ldd [%l7-32],%f60 2607*5d9d9091SRichard Lowe/* 0x069c */ faddd %f50,%f56,%f56 2608*5d9d9091SRichard Lowe/* 0x06a0 */ ldd [%g2-64],%f52 2609*5d9d9091SRichard Lowe/* 0x06a4 */ prefetch [%g2+320],0 2610*5d9d9091SRichard Lowe/* 0x06a8 */ fmuld %f40,%f58,%f50 2611*5d9d9091SRichard Lowe/* 0x06ac */ faddd %f54,%f46,%f32 2612*5d9d9091SRichard Lowe/* 0x06b0 */ ldd [%l6-24],%f62 2613*5d9d9091SRichard Lowe/* 0x06b4 */ std %f32,[%g2-112] 2614*5d9d9091SRichard Lowe/* 0x06b8 */ fmuld %f42,%f60,%f46 2615*5d9d9091SRichard Lowe/* 0x06bc */ ldd [%l7-24],%f60 2616*5d9d9091SRichard Lowe/* 0x06c0 */ faddd %f44,%f48,%f48 2617*5d9d9091SRichard Lowe/* 0x06c4 */ ldd [%g2-48],%f54 2618*5d9d9091SRichard Lowe/* 0x06c8 */ fmuld %f40,%f62,%f26 2619*5d9d9091SRichard Lowe/* 0x06cc */ faddd %f56,%f30,%f32 2620*5d9d9091SRichard Lowe/* 0x06d0 */ ldd [%l6-16],%f58 2621*5d9d9091SRichard Lowe/* 0x06d4 */ std %f32,[%g2-96] 2622*5d9d9091SRichard Lowe/* 0x06d8 */ fmuld %f42,%f60,%f30 2623*5d9d9091SRichard Lowe/* 0x06dc */ ldd [%l7-16],%f32 2624*5d9d9091SRichard Lowe/* 0x06e0 */ faddd %f46,%f50,%f60 2625*5d9d9091SRichard Lowe/* 0x06e4 */ ldd [%g2-32],%f56 2626*5d9d9091SRichard Lowe/* 0x06e8 */ prefetch [%g2+352],0 2627*5d9d9091SRichard Lowe/* 0x06ec */ fmuld %f40,%f58,%f44 2628*5d9d9091SRichard Lowe/* 0x06f0 */ faddd %f48,%f28,%f62 2629*5d9d9091SRichard Lowe/* 0x06f4 */ ldd [%l6-8],%f46 2630*5d9d9091SRichard Lowe/* 0x06f8 */ std %f62,[%g2-80] 2631*5d9d9091SRichard Lowe/* 0x06fc */ fmuld %f42,%f32,%f48 2632*5d9d9091SRichard Lowe/* 0x0700 */ ldd [%l7-8],%f32 2633*5d9d9091SRichard Lowe/* 0x0704 */ faddd %f30,%f26,%f62 2634*5d9d9091SRichard Lowe/* 0x0708 */ ble,pt %icc,.L900000837 2635*5d9d9091SRichard Lowe/* 0x070c */ ldd [%g2-16],%f58 2636*5d9d9091SRichard Lowe .L900000840: 2637*5d9d9091SRichard Lowe/* 0x0710 342 */ fmuld %f40,%f46,%f46 2638*5d9d9091SRichard Lowe/* 0x0714 */ faddd %f62,%f54,%f62 2639*5d9d9091SRichard Lowe/* 0x0718 */ std %f62,[%g2-48] 2640*5d9d9091SRichard Lowe/* 0x071c */ cmp %l5,%l3 2641*5d9d9091SRichard Lowe/* 0x0720 */ fmuld %f42,%f32,%f50 2642*5d9d9091SRichard Lowe/* 0x0724 */ faddd %f48,%f44,%f48 2643*5d9d9091SRichard Lowe/* 0x0728 */ or %g0,%l7,%g4 2644*5d9d9091SRichard Lowe/* 0x072c */ or %g0,%l6,%g3 2645*5d9d9091SRichard Lowe/* 0x0730 */ faddd %f60,%f52,%f60 2646*5d9d9091SRichard Lowe/* 0x0734 */ std %f60,[%g2-64] 2647*5d9d9091SRichard Lowe/* 0x0738 */ or %g0,%o7,%l2 2648*5d9d9091SRichard Lowe/* 0x073c */ add %l4,8,%l4 2649*5d9d9091SRichard Lowe/* 0x0740 */ faddd %f50,%f46,%f54 2650*5d9d9091SRichard Lowe/* 0x0744 */ faddd %f48,%f56,%f56 2651*5d9d9091SRichard Lowe/* 0x0748 */ std %f56,[%g2-32] 2652*5d9d9091SRichard Lowe/* 0x074c */ faddd %f54,%f58,%f58 2653*5d9d9091SRichard Lowe/* 0x0750 */ bg,pn %icc,.L77000368 2654*5d9d9091SRichard Lowe/* 0x0754 */ std %f58,[%g2-16] 2655*5d9d9091SRichard Lowe .L77000481: 2656*5d9d9091SRichard Lowe/* 0x0758 342 */ ldd [%g4],%f44 2657*5d9d9091SRichard Lowe .L900000850: 2658*5d9d9091SRichard Lowe/* 0x075c 342 */ ldd [%g3],%f48 2659*5d9d9091SRichard Lowe/* 0x0760 */ fmuld %f42,%f44,%f58 2660*5d9d9091SRichard Lowe/* 0x0764 */ sra %l4,0,%l7 2661*5d9d9091SRichard Lowe/* 0x0768 */ add %l5,1,%l5 2662*5d9d9091SRichard Lowe/* 0x076c */ sllx %l7,3,%g2 2663*5d9d9091SRichard Lowe/* 0x0770 */ add %g4,8,%g4 2664*5d9d9091SRichard Lowe/* 0x0774 */ ldd [%l2+%g2],%f56 2665*5d9d9091SRichard Lowe/* 0x0778 */ cmp %l5,%l3 2666*5d9d9091SRichard Lowe/* 0x077c */ add %l4,2,%l4 2667*5d9d9091SRichard Lowe/* 0x0780 */ fmuld %f40,%f48,%f54 2668*5d9d9091SRichard Lowe/* 0x0784 */ add %g3,8,%g3 2669*5d9d9091SRichard Lowe/* 0x0788 */ faddd %f58,%f54,%f52 2670*5d9d9091SRichard Lowe/* 0x078c */ faddd %f52,%f56,%f62 2671*5d9d9091SRichard Lowe/* 0x0790 */ std %f62,[%l2+%g2] 2672*5d9d9091SRichard Lowe/* 0x0794 */ ble,a,pt %icc,.L900000850 2673*5d9d9091SRichard Lowe/* 0x0798 */ ldd [%g4],%f44 2674*5d9d9091SRichard Lowe .L77000368: 2675*5d9d9091SRichard Lowe/* 0x079c 344 */ cmp %o5,15 2676*5d9d9091SRichard Lowe/* 0x07a0 */ bne,pn %icc,.L77000483 2677*5d9d9091SRichard Lowe/* 0x07a4 345 */ srl %l1,31,%g4 2678*5d9d9091SRichard Lowe .L77000478: 2679*5d9d9091SRichard Lowe/* 0x07a8 345 */ add %l1,%g4,%l4 2680*5d9d9091SRichard Lowe/* 0x07ac */ sra %l4,1,%o7 2681*5d9d9091SRichard Lowe/* 0x07b0 */ add %o7,1,%o4 2682*5d9d9091SRichard Lowe/* 0x07b4 */ sll %o4,1,%l6 2683*5d9d9091SRichard Lowe/* 0x07b8 */ cmp %l6,%o2 2684*5d9d9091SRichard Lowe/* 0x07bc */ bge,pn %icc,.L77000392 2685*5d9d9091SRichard Lowe/* 0x07c0 */ fmovd %f0,%f42 2686*5d9d9091SRichard Lowe .L77000508: 2687*5d9d9091SRichard Lowe/* 0x07c4 345 */ sra %l6,0,%l4 2688*5d9d9091SRichard Lowe/* 0x07c8 */ sllx %l4,3,%g2 2689*5d9d9091SRichard Lowe/* 0x07cc */ fmovd %f0,%f32 2690*5d9d9091SRichard Lowe/* 0x07d0 */ sub %o2,1,%l5 2691*5d9d9091SRichard Lowe/* 0x07d4 */ ldd [%g2+%i3],%f40 2692*5d9d9091SRichard Lowe/* 0x07d8 */ add %g2,%i3,%g3 2693*5d9d9091SRichard Lowe .L900000849: 2694*5d9d9091SRichard Lowe/* 0x07dc 345 */ fdtox %f40,%f10 2695*5d9d9091SRichard Lowe/* 0x07e0 */ ldd [%g3+8],%f52 2696*5d9d9091SRichard Lowe/* 0x07e4 */ add %l6,2,%l6 2697*5d9d9091SRichard Lowe/* 0x07e8 */ cmp %l6,%l5 2698*5d9d9091SRichard Lowe/* 0x07ec */ fdtox %f52,%f2 2699*5d9d9091SRichard Lowe/* 0x07f0 */ fmovd %f10,%f30 2700*5d9d9091SRichard Lowe/* 0x07f4 */ fmovs %f0,%f10 2701*5d9d9091SRichard Lowe/* 0x07f8 */ fmovs %f0,%f2 2702*5d9d9091SRichard Lowe/* 0x07fc */ fxtod %f10,%f10 2703*5d9d9091SRichard Lowe/* 0x0800 */ fxtod %f2,%f2 2704*5d9d9091SRichard Lowe/* 0x0804 */ fdtox %f52,%f28 2705*5d9d9091SRichard Lowe/* 0x0808 */ faddd %f10,%f32,%f56 2706*5d9d9091SRichard Lowe/* 0x080c */ std %f56,[%g3] 2707*5d9d9091SRichard Lowe/* 0x0810 */ faddd %f2,%f42,%f62 2708*5d9d9091SRichard Lowe/* 0x0814 */ std %f62,[%g3+8] 2709*5d9d9091SRichard Lowe/* 0x0818 */ fitod %f30,%f32 2710*5d9d9091SRichard Lowe/* 0x081c */ add %g3,16,%g3 2711*5d9d9091SRichard Lowe/* 0x0820 */ fitod %f28,%f42 2712*5d9d9091SRichard Lowe/* 0x0824 */ ble,a,pt %icc,.L900000849 2713*5d9d9091SRichard Lowe/* 0x0828 */ ldd [%g3],%f40 2714*5d9d9091SRichard Lowe .L77000392: 2715*5d9d9091SRichard Lowe/* 0x082c 346 */ or %g0,0,%o5 2716*5d9d9091SRichard Lowe .L77000483: 2717*5d9d9091SRichard Lowe/* 0x0830 350 */ fdtox %f34,%f6 2718*5d9d9091SRichard Lowe/* 0x0834 */ add %l1,1,%l1 2719*5d9d9091SRichard Lowe/* 0x0838 */ cmp %l1,%o3 2720*5d9d9091SRichard Lowe/* 0x083c */ add %o5,1,%o5 2721*5d9d9091SRichard Lowe/* 0x0840 */ add %l2,8,%l2 2722*5d9d9091SRichard Lowe/* 0x0844 */ add %l0,8,%l0 2723*5d9d9091SRichard Lowe/* 0x0848 */ fmovs %f0,%f6 2724*5d9d9091SRichard Lowe/* 0x084c */ fxtod %f6,%f46 2725*5d9d9091SRichard Lowe/* 0x0850 */ fmuld %f46,%f14,%f56 2726*5d9d9091SRichard Lowe/* 0x0854 */ fmuld %f56,%f36,%f44 2727*5d9d9091SRichard Lowe/* 0x0858 */ fdtox %f44,%f48 2728*5d9d9091SRichard Lowe/* 0x085c */ fxtod %f48,%f58 2729*5d9d9091SRichard Lowe/* 0x0860 */ fmuld %f58,%f38,%f54 2730*5d9d9091SRichard Lowe/* 0x0864 */ fsubd %f56,%f54,%f40 2731*5d9d9091SRichard Lowe/* 0x0868 */ ble,a,pt %icc,.L900000848 2732*5d9d9091SRichard Lowe/* 0x086c 337 */ ldd [%i4],%f42 2733*5d9d9091SRichard Lowe .L77000378: 2734*5d9d9091SRichard Lowe/* 0x0870 409 */ ldx [%i3+%o0],%l1 2735*5d9d9091SRichard Lowe .L900000852: 2736*5d9d9091SRichard Lowe/* 0x0874 409 */ add %i3,%o0,%l4 2737*5d9d9091SRichard Lowe/* 0x0878 */ ldx [%l4+8],%i1 2738*5d9d9091SRichard Lowe/* 0x087c */ cmp %l1,0 2739*5d9d9091SRichard Lowe/* 0x0880 */ bne,pn %xcc,.L77000403 2740*5d9d9091SRichard Lowe/* 0x0884 */ or %g0,0,%g5 2741*5d9d9091SRichard Lowe .L77000402: 2742*5d9d9091SRichard Lowe/* 0x0888 409 */ or %g0,0,%i3 2743*5d9d9091SRichard Lowe/* 0x088c */ ba .L900000847 2744*5d9d9091SRichard Lowe/* 0x0890 */ cmp %i1,0 2745*5d9d9091SRichard Lowe .L77000403: 2746*5d9d9091SRichard Lowe/* 0x0894 409 */ srlx %l1,52,%o5 2747*5d9d9091SRichard Lowe/* 0x0898 */ sethi %hi(0xfff00000),%i3 2748*5d9d9091SRichard Lowe/* 0x089c */ sllx %i3,32,%o2 2749*5d9d9091SRichard Lowe/* 0x08a0 */ sethi %hi(0x40000000),%o0 2750*5d9d9091SRichard Lowe/* 0x08a4 */ sllx %o0,22,%o4 2751*5d9d9091SRichard Lowe/* 0x08a8 */ or %g0,1023,%l0 2752*5d9d9091SRichard Lowe/* 0x08ac */ xor %o2,-1,%o3 2753*5d9d9091SRichard Lowe/* 0x08b0 */ sub %l0,%o5,%o7 2754*5d9d9091SRichard Lowe/* 0x08b4 */ and %l1,%o3,%l1 2755*5d9d9091SRichard Lowe/* 0x08b8 */ add %o7,52,%i4 2756*5d9d9091SRichard Lowe/* 0x08bc */ or %l1,%o4,%o1 2757*5d9d9091SRichard Lowe/* 0x08c0 */ cmp %i1,0 2758*5d9d9091SRichard Lowe/* 0x08c4 */ srlx %o1,%i4,%i3 2759*5d9d9091SRichard Lowe .L900000847: 2760*5d9d9091SRichard Lowe/* 0x08c8 409 */ bne,pn %xcc,.L77000409 2761*5d9d9091SRichard Lowe/* 0x08cc */ or %g0,0,%o7 2762*5d9d9091SRichard Lowe .L77000408: 2763*5d9d9091SRichard Lowe/* 0x08d0 409 */ ba .L900000846 2764*5d9d9091SRichard Lowe/* 0x08d4 350 */ cmp %g1,0 2765*5d9d9091SRichard Lowe .L77000409: 2766*5d9d9091SRichard Lowe/* 0x08d8 409 */ srlx %i1,52,%l2 2767*5d9d9091SRichard Lowe/* 0x08dc */ sethi %hi(0xfff00000),%o7 2768*5d9d9091SRichard Lowe/* 0x08e0 */ sllx %o7,32,%i4 2769*5d9d9091SRichard Lowe/* 0x08e4 */ sethi %hi(0x40000000),%i5 2770*5d9d9091SRichard Lowe/* 0x08e8 */ sllx %i5,22,%l6 2771*5d9d9091SRichard Lowe/* 0x08ec */ or %g0,1023,%l5 2772*5d9d9091SRichard Lowe/* 0x08f0 */ xor %i4,-1,%o1 2773*5d9d9091SRichard Lowe/* 0x08f4 */ sub %l5,%l2,%g2 2774*5d9d9091SRichard Lowe/* 0x08f8 */ and %i1,%o1,%l7 2775*5d9d9091SRichard Lowe/* 0x08fc */ add %g2,52,%g3 2776*5d9d9091SRichard Lowe/* 0x0900 */ or %l7,%l6,%g4 2777*5d9d9091SRichard Lowe/* 0x0904 350 */ cmp %g1,0 2778*5d9d9091SRichard Lowe/* 0x0908 409 */ srlx %g4,%g3,%o7 2779*5d9d9091SRichard Lowe .L900000846: 2780*5d9d9091SRichard Lowe/* 0x090c 350 */ ble,pn %icc,.L77000397 2781*5d9d9091SRichard Lowe/* 0x0910 */ or %g0,0,%l5 2782*5d9d9091SRichard Lowe .L77000510: 2783*5d9d9091SRichard Lowe/* 0x0914 409 */ sethi %hi(0xfff00000),%g4 2784*5d9d9091SRichard Lowe/* 0x0918 */ sllx %g4,32,%o0 2785*5d9d9091SRichard Lowe/* 0x091c 0 */ or %g0,-1,%i5 2786*5d9d9091SRichard Lowe/* 0x0920 409 */ srl %i5,0,%l7 2787*5d9d9091SRichard Lowe/* 0x0924 */ sethi %hi(0x40000000),%i1 2788*5d9d9091SRichard Lowe/* 0x0928 */ sllx %i1,22,%l6 2789*5d9d9091SRichard Lowe/* 0x092c */ sethi %hi(0xfc00),%i4 2790*5d9d9091SRichard Lowe/* 0x0930 */ xor %o0,-1,%g2 2791*5d9d9091SRichard Lowe/* 0x0934 */ add %i4,1023,%l2 2792*5d9d9091SRichard Lowe/* 0x0938 */ or %g0,2,%g4 2793*5d9d9091SRichard Lowe/* 0x093c */ or %g0,%i2,%g3 2794*5d9d9091SRichard Lowe .L77000395: 2795*5d9d9091SRichard Lowe/* 0x0940 409 */ sra %g4,0,%o2 2796*5d9d9091SRichard Lowe/* 0x0944 */ add %g4,1,%o3 2797*5d9d9091SRichard Lowe/* 0x0948 */ sllx %o2,3,%o0 2798*5d9d9091SRichard Lowe/* 0x094c */ sra %o3,0,%o5 2799*5d9d9091SRichard Lowe/* 0x0950 */ ldx [%l4+%o0],%o4 2800*5d9d9091SRichard Lowe/* 0x0954 */ sllx %o5,3,%l0 2801*5d9d9091SRichard Lowe/* 0x0958 */ and %i3,%l7,%o1 2802*5d9d9091SRichard Lowe/* 0x095c */ ldx [%l4+%l0],%i4 2803*5d9d9091SRichard Lowe/* 0x0960 */ cmp %o4,0 2804*5d9d9091SRichard Lowe/* 0x0964 */ bne,pn %xcc,.L77000415 2805*5d9d9091SRichard Lowe/* 0x0968 350 */ and %o7,%l2,%i5 2806*5d9d9091SRichard Lowe .L77000414: 2807*5d9d9091SRichard Lowe/* 0x096c 409 */ or %g0,0,%l1 2808*5d9d9091SRichard Lowe/* 0x0970 */ ba .L900000845 2809*5d9d9091SRichard Lowe/* 0x0974 */ add %g5,%o1,%i1 2810*5d9d9091SRichard Lowe .L77000415: 2811*5d9d9091SRichard Lowe/* 0x0978 409 */ srlx %o4,52,%o3 2812*5d9d9091SRichard Lowe/* 0x097c */ and %o4,%g2,%l1 2813*5d9d9091SRichard Lowe/* 0x0980 */ or %g0,52,%o0 2814*5d9d9091SRichard Lowe/* 0x0984 */ sub %o3,1023,%l0 2815*5d9d9091SRichard Lowe/* 0x0988 */ or %l1,%l6,%o4 2816*5d9d9091SRichard Lowe/* 0x098c */ sub %o0,%l0,%o5 2817*5d9d9091SRichard Lowe/* 0x0990 */ srlx %o4,%o5,%l1 2818*5d9d9091SRichard Lowe/* 0x0994 */ add %g5,%o1,%i1 2819*5d9d9091SRichard Lowe .L900000845: 2820*5d9d9091SRichard Lowe/* 0x0998 409 */ srax %i3,32,%g5 2821*5d9d9091SRichard Lowe/* 0x099c */ cmp %i4,0 2822*5d9d9091SRichard Lowe/* 0x09a0 */ bne,pn %xcc,.L77000421 2823*5d9d9091SRichard Lowe/* 0x09a4 350 */ sllx %i5,16,%o2 2824*5d9d9091SRichard Lowe .L77000420: 2825*5d9d9091SRichard Lowe/* 0x09a8 409 */ or %g0,0,%o4 2826*5d9d9091SRichard Lowe/* 0x09ac */ ba .L900000844 2827*5d9d9091SRichard Lowe/* 0x09b0 350 */ add %i1,%o2,%o5 2828*5d9d9091SRichard Lowe .L77000421: 2829*5d9d9091SRichard Lowe/* 0x09b4 409 */ srlx %i4,52,%o4 2830*5d9d9091SRichard Lowe/* 0x09b8 */ or %g0,52,%o0 2831*5d9d9091SRichard Lowe/* 0x09bc */ sub %o4,1023,%o3 2832*5d9d9091SRichard Lowe/* 0x09c0 */ and %i4,%g2,%i3 2833*5d9d9091SRichard Lowe/* 0x09c4 */ or %i3,%l6,%o5 2834*5d9d9091SRichard Lowe/* 0x09c8 */ sub %o0,%o3,%l0 2835*5d9d9091SRichard Lowe/* 0x09cc */ srlx %o5,%l0,%o4 2836*5d9d9091SRichard Lowe/* 0x09d0 350 */ add %i1,%o2,%o5 2837*5d9d9091SRichard Lowe .L900000844: 2838*5d9d9091SRichard Lowe/* 0x09d4 350 */ srax %o7,16,%i4 2839*5d9d9091SRichard Lowe/* 0x09d8 */ srax %o5,32,%i5 2840*5d9d9091SRichard Lowe/* 0x09dc */ add %i4,%i5,%o1 2841*5d9d9091SRichard Lowe/* 0x09e0 */ add %l5,1,%l5 2842*5d9d9091SRichard Lowe/* 0x09e4 */ and %o5,%l7,%i1 2843*5d9d9091SRichard Lowe/* 0x09e8 */ add %g5,%o1,%g5 2844*5d9d9091SRichard Lowe/* 0x09ec */ st %i1,[%g3] 2845*5d9d9091SRichard Lowe/* 0x09f0 */ or %g0,%l1,%i3 2846*5d9d9091SRichard Lowe/* 0x09f4 */ or %g0,%o4,%o7 2847*5d9d9091SRichard Lowe/* 0x09f8 */ add %g4,2,%g4 2848*5d9d9091SRichard Lowe/* 0x09fc */ cmp %l5,%l3 2849*5d9d9091SRichard Lowe/* 0x0a00 */ ble,pt %icc,.L77000395 2850*5d9d9091SRichard Lowe/* 0x0a04 */ add %g3,4,%g3 2851*5d9d9091SRichard Lowe .L77000397: 2852*5d9d9091SRichard Lowe/* 0x0a08 409 */ sethi %hi(0xfc00),%l4 2853*5d9d9091SRichard Lowe/* 0x0a0c */ sra %l5,0,%i5 2854*5d9d9091SRichard Lowe/* 0x0a10 */ add %l4,1023,%i1 2855*5d9d9091SRichard Lowe/* 0x0a14 */ add %g5,%i3,%l5 2856*5d9d9091SRichard Lowe/* 0x0a18 */ and %o7,%i1,%g5 2857*5d9d9091SRichard Lowe/* 0x0a1c */ sllx %g5,16,%l2 2858*5d9d9091SRichard Lowe/* 0x0a20 */ sllx %i5,2,%l7 2859*5d9d9091SRichard Lowe/* 0x0a24 413 */ sra %g1,0,%g2 2860*5d9d9091SRichard Lowe/* 0x0a28 409 */ add %l5,%l2,%l6 2861*5d9d9091SRichard Lowe/* 0x0a2c */ st %l6,[%i2+%l7] 2862*5d9d9091SRichard Lowe/* 0x0a30 413 */ sllx %g2,2,%g3 2863*5d9d9091SRichard Lowe/* 0x0a34 */ ld [%i2+%g3],%g4 2864*5d9d9091SRichard Lowe/* 0x0a38 */ cmp %g4,0 2865*5d9d9091SRichard Lowe/* 0x0a3c */ bgu,pn %icc,.L77000486 2866*5d9d9091SRichard Lowe/* 0x0a40 */ cmp %l3,0 2867*5d9d9091SRichard Lowe .L77000427: 2868*5d9d9091SRichard Lowe/* 0x0a44 413 */ bl,pn %icc,.L77000486 2869*5d9d9091SRichard Lowe/* 0x0a48 */ or %g0,%l3,%i5 2870*5d9d9091SRichard Lowe .L77000512: 2871*5d9d9091SRichard Lowe/* 0x0a4c 413 */ sra %l3,0,%o5 2872*5d9d9091SRichard Lowe/* 0x0a50 */ sllx %o5,2,%l7 2873*5d9d9091SRichard Lowe/* 0x0a54 */ ld [%l7+%i0],%o5 2874*5d9d9091SRichard Lowe/* 0x0a58 */ add %l7,%i2,%o1 2875*5d9d9091SRichard Lowe/* 0x0a5c */ add %l7,%i0,%i4 2876*5d9d9091SRichard Lowe .L900000843: 2877*5d9d9091SRichard Lowe/* 0x0a60 413 */ ld [%o1],%i1 2878*5d9d9091SRichard Lowe/* 0x0a64 */ cmp %i1,%o5 2879*5d9d9091SRichard Lowe/* 0x0a68 */ bne,pn %icc,.L77000435 2880*5d9d9091SRichard Lowe/* 0x0a6c */ sub %o1,4,%o1 2881*5d9d9091SRichard Lowe .L77000431: 2882*5d9d9091SRichard Lowe/* 0x0a70 413 */ sub %i4,4,%i4 2883*5d9d9091SRichard Lowe/* 0x0a74 */ subcc %i5,1,%i5 2884*5d9d9091SRichard Lowe/* 0x0a78 */ bpos,a,pt %icc,.L900000843 2885*5d9d9091SRichard Lowe/* 0x0a7c */ ld [%i4],%o5 2886*5d9d9091SRichard Lowe .L900000827: 2887*5d9d9091SRichard Lowe/* 0x0a80 413 */ ba .L900000842 2888*5d9d9091SRichard Lowe/* 0x0a84 350 */ cmp %g1,0 2889*5d9d9091SRichard Lowe .L77000435: 2890*5d9d9091SRichard Lowe/* 0x0a88 413 */ sra %i5,0,%o0 2891*5d9d9091SRichard Lowe/* 0x0a8c */ sllx %o0,2,%l1 2892*5d9d9091SRichard Lowe/* 0x0a90 */ ld [%i0+%l1],%i3 2893*5d9d9091SRichard Lowe/* 0x0a94 */ ld [%i2+%l1],%l0 2894*5d9d9091SRichard Lowe/* 0x0a98 */ cmp %l0,%i3 2895*5d9d9091SRichard Lowe/* 0x0a9c */ bleu,pt %icc,.L77000379 2896*5d9d9091SRichard Lowe/* 0x0aa0 */ nop 2897*5d9d9091SRichard Lowe .L77000486: 2898*5d9d9091SRichard Lowe/* 0x0aa4 350 */ cmp %g1,0 2899*5d9d9091SRichard Lowe .L900000842: 2900*5d9d9091SRichard Lowe/* 0x0aa8 350 */ ble,pn %icc,.L77000379 2901*5d9d9091SRichard Lowe/* 0x0aac */ add %l3,1,%g3 2902*5d9d9091SRichard Lowe .L77000511: 2903*5d9d9091SRichard Lowe/* 0x0ab0 350 */ or %g0,0,%l5 2904*5d9d9091SRichard Lowe/* 0x0ab4 */ cmp %g3,10 2905*5d9d9091SRichard Lowe/* 0x0ab8 */ bl,pn %icc,.L77000487 2906*5d9d9091SRichard Lowe/* 0x0abc */ or %g0,0,%g1 2907*5d9d9091SRichard Lowe .L900000835: 2908*5d9d9091SRichard Lowe/* 0x0ac0 350 */ prefetch [%i2],22 2909*5d9d9091SRichard Lowe/* 0x0ac4 */ add %i0,4,%l2 2910*5d9d9091SRichard Lowe/* 0x0ac8 */ prefetch [%i2+64],22 2911*5d9d9091SRichard Lowe/* 0x0acc */ add %i2,8,%o5 2912*5d9d9091SRichard Lowe/* 0x0ad0 */ sub %l3,7,%i0 2913*5d9d9091SRichard Lowe/* 0x0ad4 */ prefetch [%i2+128],22 2914*5d9d9091SRichard Lowe/* 0x0ad8 */ or %g0,2,%l5 2915*5d9d9091SRichard Lowe/* 0x0adc */ prefetch [%i2+192],22 2916*5d9d9091SRichard Lowe/* 0x0ae0 */ prefetch [%i2+256],22 2917*5d9d9091SRichard Lowe/* 0x0ae4 */ prefetch [%i2+320],22 2918*5d9d9091SRichard Lowe/* 0x0ae8 */ prefetch [%i2+384],22 2919*5d9d9091SRichard Lowe/* 0x0aec */ ld [%l2-4],%l7 2920*5d9d9091SRichard Lowe/* 0x0af0 */ ld [%o5-4],%l6 2921*5d9d9091SRichard Lowe/* 0x0af4 */ prefetch [%o5+440],22 2922*5d9d9091SRichard Lowe/* 0x0af8 */ prefetch [%o5+504],22 2923*5d9d9091SRichard Lowe/* 0x0afc */ ld [%i2],%i2 2924*5d9d9091SRichard Lowe/* 0x0b00 */ sub %i2,%l7,%g3 2925*5d9d9091SRichard Lowe/* 0x0b04 */ st %g3,[%o5-8] 2926*5d9d9091SRichard Lowe/* 0x0b08 */ srax %g3,32,%l7 2927*5d9d9091SRichard Lowe .L900000833: 2928*5d9d9091SRichard Lowe/* 0x0b0c 350 */ add %l5,8,%l5 2929*5d9d9091SRichard Lowe/* 0x0b10 */ add %o5,32,%o5 2930*5d9d9091SRichard Lowe/* 0x0b14 */ ld [%l2],%i5 2931*5d9d9091SRichard Lowe/* 0x0b18 */ prefetch [%o5+496],22 2932*5d9d9091SRichard Lowe/* 0x0b1c */ cmp %l5,%i0 2933*5d9d9091SRichard Lowe/* 0x0b20 */ add %l2,32,%l2 2934*5d9d9091SRichard Lowe/* 0x0b24 */ sub %l6,%i5,%g5 2935*5d9d9091SRichard Lowe/* 0x0b28 */ add %g5,%l7,%o0 2936*5d9d9091SRichard Lowe/* 0x0b2c */ ld [%o5-32],%l4 2937*5d9d9091SRichard Lowe/* 0x0b30 */ st %o0,[%o5-36] 2938*5d9d9091SRichard Lowe/* 0x0b34 */ srax %o0,32,%i3 2939*5d9d9091SRichard Lowe/* 0x0b38 */ ld [%l2-28],%i1 2940*5d9d9091SRichard Lowe/* 0x0b3c */ sub %l4,%i1,%i4 2941*5d9d9091SRichard Lowe/* 0x0b40 */ add %i4,%i3,%o1 2942*5d9d9091SRichard Lowe/* 0x0b44 */ ld [%o5-28],%o3 2943*5d9d9091SRichard Lowe/* 0x0b48 */ st %o1,[%o5-32] 2944*5d9d9091SRichard Lowe/* 0x0b4c */ srax %o1,32,%l1 2945*5d9d9091SRichard Lowe/* 0x0b50 */ ld [%l2-24],%o2 2946*5d9d9091SRichard Lowe/* 0x0b54 */ sub %o3,%o2,%g2 2947*5d9d9091SRichard Lowe/* 0x0b58 */ add %g2,%l1,%o7 2948*5d9d9091SRichard Lowe/* 0x0b5c */ ld [%o5-24],%l0 2949*5d9d9091SRichard Lowe/* 0x0b60 */ st %o7,[%o5-28] 2950*5d9d9091SRichard Lowe/* 0x0b64 */ srax %o7,32,%l6 2951*5d9d9091SRichard Lowe/* 0x0b68 */ ld [%l2-20],%o4 2952*5d9d9091SRichard Lowe/* 0x0b6c */ sub %l0,%o4,%g1 2953*5d9d9091SRichard Lowe/* 0x0b70 */ add %g1,%l6,%l7 2954*5d9d9091SRichard Lowe/* 0x0b74 */ ld [%o5-20],%i2 2955*5d9d9091SRichard Lowe/* 0x0b78 */ st %l7,[%o5-24] 2956*5d9d9091SRichard Lowe/* 0x0b7c */ srax %l7,32,%g4 2957*5d9d9091SRichard Lowe/* 0x0b80 */ ld [%l2-16],%g3 2958*5d9d9091SRichard Lowe/* 0x0b84 */ sub %i2,%g3,%i5 2959*5d9d9091SRichard Lowe/* 0x0b88 */ add %i5,%g4,%g5 2960*5d9d9091SRichard Lowe/* 0x0b8c */ ld [%o5-16],%i1 2961*5d9d9091SRichard Lowe/* 0x0b90 */ st %g5,[%o5-20] 2962*5d9d9091SRichard Lowe/* 0x0b94 */ srax %g5,32,%l4 2963*5d9d9091SRichard Lowe/* 0x0b98 */ ld [%l2-12],%o0 2964*5d9d9091SRichard Lowe/* 0x0b9c */ sub %i1,%o0,%i3 2965*5d9d9091SRichard Lowe/* 0x0ba0 */ add %i3,%l4,%i4 2966*5d9d9091SRichard Lowe/* 0x0ba4 */ ld [%o5-12],%o2 2967*5d9d9091SRichard Lowe/* 0x0ba8 */ st %i4,[%o5-16] 2968*5d9d9091SRichard Lowe/* 0x0bac */ srax %i4,32,%o3 2969*5d9d9091SRichard Lowe/* 0x0bb0 */ ld [%l2-8],%o1 2970*5d9d9091SRichard Lowe/* 0x0bb4 */ sub %o2,%o1,%l1 2971*5d9d9091SRichard Lowe/* 0x0bb8 */ add %l1,%o3,%g2 2972*5d9d9091SRichard Lowe/* 0x0bbc */ ld [%o5-8],%o4 2973*5d9d9091SRichard Lowe/* 0x0bc0 */ st %g2,[%o5-12] 2974*5d9d9091SRichard Lowe/* 0x0bc4 */ srax %g2,32,%l0 2975*5d9d9091SRichard Lowe/* 0x0bc8 */ ld [%l2-4],%o7 2976*5d9d9091SRichard Lowe/* 0x0bcc */ sub %o4,%o7,%l6 2977*5d9d9091SRichard Lowe/* 0x0bd0 */ add %l6,%l0,%g1 2978*5d9d9091SRichard Lowe/* 0x0bd4 */ ld [%o5-4],%l6 2979*5d9d9091SRichard Lowe/* 0x0bd8 */ st %g1,[%o5-8] 2980*5d9d9091SRichard Lowe/* 0x0bdc */ ble,pt %icc,.L900000833 2981*5d9d9091SRichard Lowe/* 0x0be0 */ srax %g1,32,%l7 2982*5d9d9091SRichard Lowe .L900000836: 2983*5d9d9091SRichard Lowe/* 0x0be4 350 */ ld [%l2],%l0 2984*5d9d9091SRichard Lowe/* 0x0be8 */ add %l2,4,%i0 2985*5d9d9091SRichard Lowe/* 0x0bec */ or %g0,%o5,%i2 2986*5d9d9091SRichard Lowe/* 0x0bf0 */ cmp %l5,%l3 2987*5d9d9091SRichard Lowe/* 0x0bf4 */ sub %l6,%l0,%l6 2988*5d9d9091SRichard Lowe/* 0x0bf8 */ add %l6,%l7,%g1 2989*5d9d9091SRichard Lowe/* 0x0bfc */ st %g1,[%o5-4] 2990*5d9d9091SRichard Lowe/* 0x0c00 */ bg,pn %icc,.L77000379 2991*5d9d9091SRichard Lowe/* 0x0c04 */ srax %g1,32,%g1 2992*5d9d9091SRichard Lowe .L77000487: 2993*5d9d9091SRichard Lowe/* 0x0c08 350 */ ld [%i2],%o4 2994*5d9d9091SRichard Lowe .L900000841: 2995*5d9d9091SRichard Lowe/* 0x0c0c 350 */ ld [%i0],%i3 2996*5d9d9091SRichard Lowe/* 0x0c10 */ add %g1,%o4,%l0 2997*5d9d9091SRichard Lowe/* 0x0c14 */ add %l5,1,%l5 2998*5d9d9091SRichard Lowe/* 0x0c18 */ cmp %l5,%l3 2999*5d9d9091SRichard Lowe/* 0x0c1c */ add %i0,4,%i0 3000*5d9d9091SRichard Lowe/* 0x0c20 */ sub %l0,%i3,%l6 3001*5d9d9091SRichard Lowe/* 0x0c24 */ st %l6,[%i2] 3002*5d9d9091SRichard Lowe/* 0x0c28 */ srax %l6,32,%g1 3003*5d9d9091SRichard Lowe/* 0x0c2c */ add %i2,4,%i2 3004*5d9d9091SRichard Lowe/* 0x0c30 */ ble,a,pt %icc,.L900000841 3005*5d9d9091SRichard Lowe/* 0x0c34 */ ld [%i2],%o4 3006*5d9d9091SRichard Lowe .L77000379: 3007*5d9d9091SRichard Lowe/* 0x0c38 405 */ ret ! Result = 3008*5d9d9091SRichard Lowe/* 0x0c3c */ restore %g0,%g0,%g0 3009*5d9d9091SRichard Lowe/* 0x0c40 0 */ .type mont_mulf_noconv,2 3010*5d9d9091SRichard Lowe/* 0x0c40 0 */ .size mont_mulf_noconv,(.-mont_mulf_noconv) 3011*5d9d9091SRichard Lowe 3012*5d9d9091SRichard Lowe! Begin Disassembling Debug Info 3013*5d9d9091SRichard Lowe .xstabs ".stab.index","V=10.0;DBG_GEN=4.14.14;cd;backend;Xa;O;R=Sun C 5.5 Patch 112760-07 2004/02/03",60,0,0,0 3014*5d9d9091SRichard Lowe .xstabs ".stab.index","/workspace/ferenc/algorithms/bignum/unified/mont_mulf; /ws/onnv-tools/SUNWspro/SOS8/prod/bin/cc -D_KERNEL -DRF_INLINE_MACROS -fast -xarch=v9 -xO5 -xstrconst -xdepend -Xa -xchip=ultra3 -xcode=abs32 -Wc,-Qrm-Qd -Wc,-Qrm-Qf -Wc,-assembly -V -W0,-xp -c conv_v9.il -o mont_mulf.o mont_mulf.c",52,0,0,0 3015*5d9d9091SRichard Lowe 3016*5d9d9091SRichard Lowe! End Disassembling Debug Info 3017*5d9d9091SRichard Lowe 3018*5d9d9091SRichard Lowe! Begin Disassembling Ident 3019*5d9d9091SRichard Lowe .ident "cg: Sun Compiler Common 7.1 Patch 112763-10 2004/01/27" ! (NO SOURCE LINE) 3020*5d9d9091SRichard Lowe .ident "@(#)mont_mulf.c\t1.2\t01/09/24 SMI" ! (/tmp/acompAAApja4Fx:8) 3021*5d9d9091SRichard Lowe .ident "@(#)types.h\t1.74\t03/08/07 SMI" ! (/tmp/acompAAApja4Fx:9) 3022*5d9d9091SRichard Lowe .ident "@(#)isa_defs.h\t1.20\t99/05/04 SMI" ! (/tmp/acompAAApja4Fx:10) 3023*5d9d9091SRichard Lowe .ident "@(#)feature_tests.h\t1.18\t99/07/26 SMI" ! (/tmp/acompAAApja4Fx:11) 3024*5d9d9091SRichard Lowe .ident "@(#)machtypes.h\t1.13\t99/05/04 SMI" ! (/tmp/acompAAApja4Fx:12) 3025*5d9d9091SRichard Lowe .ident "@(#)inttypes.h\t1.2\t98/01/16 SMI" ! (/tmp/acompAAApja4Fx:13) 3026*5d9d9091SRichard Lowe .ident "@(#)int_types.h\t1.6\t97/08/20 SMI" ! (/tmp/acompAAApja4Fx:14) 3027*5d9d9091SRichard Lowe .ident "@(#)int_limits.h\t1.6\t99/08/06 SMI" ! (/tmp/acompAAApja4Fx:15) 3028*5d9d9091SRichard Lowe .ident "@(#)int_const.h\t1.2\t96/07/08 SMI" ! (/tmp/acompAAApja4Fx:16) 3029*5d9d9091SRichard Lowe .ident "@(#)int_fmtio.h\t1.2\t96/07/08 SMI" ! (/tmp/acompAAApja4Fx:17) 3030*5d9d9091SRichard Lowe .ident "@(#)types32.h\t1.4\t98/02/13 SMI" ! (/tmp/acompAAApja4Fx:18) 3031*5d9d9091SRichard Lowe .ident "@(#)select.h\t1.17\t01/08/15 SMI" ! (/tmp/acompAAApja4Fx:19) 3032*5d9d9091SRichard Lowe .ident "@(#)math.h\t2.11\t00/09/07 SMI" ! (/tmp/acompAAApja4Fx:20) 3033*5d9d9091SRichard Lowe .ident "@(#)math_iso.h\t1.2\t00/09/07 SMI" ! (/tmp/acompAAApja4Fx:21) 3034*5d9d9091SRichard Lowe .ident "@(#)floatingpoint.h\t2.5\t99/06/22 SMI" ! (/tmp/acompAAApja4Fx:22) 3035*5d9d9091SRichard Lowe .ident "@(#)stdio_tag.h\t1.3\t98/04/20 SMI" ! (/tmp/acompAAApja4Fx:23) 3036*5d9d9091SRichard Lowe .ident "@(#)ieeefp.h\t2.8 99/10/29" ! (/tmp/acompAAApja4Fx:24) 3037*5d9d9091SRichard Lowe .ident "acomp: Sun C 5.5 Patch 112760-07 2004/02/03" ! (/tmp/acompAAApja4Fx:57) 3038*5d9d9091SRichard Lowe .ident "iropt: Sun Compiler Common 7.1 Patch 112763-10 2004/01/27" ! (/tmp/acompAAApja4Fx:58) 3039*5d9d9091SRichard Lowe .ident "cg: Sun Compiler Common 7.1 Patch 112763-10 2004/01/27" ! (NO SOURCE LINE) 3040*5d9d9091SRichard Lowe! End Disassembling Ident 3041*5d9d9091SRichard Lowe 3042*5d9d9091SRichard Lowe#define FZERO \ 3043*5d9d9091SRichard Lowe fzero %f0 ;\ 3044*5d9d9091SRichard Lowe fzero %f2 ;\ 3045*5d9d9091SRichard Lowe faddd %f0, %f2, %f4 ;\ 3046*5d9d9091SRichard Lowe fmuld %f0, %f2, %f6 ;\ 3047*5d9d9091SRichard Lowe faddd %f0, %f2, %f8 ;\ 3048*5d9d9091SRichard Lowe fmuld %f0, %f2, %f10 ;\ 3049*5d9d9091SRichard Lowe faddd %f0, %f2, %f12 ;\ 3050*5d9d9091SRichard Lowe fmuld %f0, %f2, %f14 ;\ 3051*5d9d9091SRichard Lowe faddd %f0, %f2, %f16 ;\ 3052*5d9d9091SRichard Lowe fmuld %f0, %f2, %f18 ;\ 3053*5d9d9091SRichard Lowe faddd %f0, %f2, %f20 ;\ 3054*5d9d9091SRichard Lowe fmuld %f0, %f2, %f22 ;\ 3055*5d9d9091SRichard Lowe faddd %f0, %f2, %f24 ;\ 3056*5d9d9091SRichard Lowe fmuld %f0, %f2, %f26 ;\ 3057*5d9d9091SRichard Lowe faddd %f0, %f2, %f28 ;\ 3058*5d9d9091SRichard Lowe fmuld %f0, %f2, %f30 ;\ 3059*5d9d9091SRichard Lowe faddd %f0, %f2, %f32 ;\ 3060*5d9d9091SRichard Lowe fmuld %f0, %f2, %f34 ;\ 3061*5d9d9091SRichard Lowe faddd %f0, %f2, %f36 ;\ 3062*5d9d9091SRichard Lowe fmuld %f0, %f2, %f38 ;\ 3063*5d9d9091SRichard Lowe faddd %f0, %f2, %f40 ;\ 3064*5d9d9091SRichard Lowe fmuld %f0, %f2, %f42 ;\ 3065*5d9d9091SRichard Lowe faddd %f0, %f2, %f44 ;\ 3066*5d9d9091SRichard Lowe fmuld %f0, %f2, %f46 ;\ 3067*5d9d9091SRichard Lowe faddd %f0, %f2, %f48 ;\ 3068*5d9d9091SRichard Lowe fmuld %f0, %f2, %f50 ;\ 3069*5d9d9091SRichard Lowe faddd %f0, %f2, %f52 ;\ 3070*5d9d9091SRichard Lowe fmuld %f0, %f2, %f54 ;\ 3071*5d9d9091SRichard Lowe faddd %f0, %f2, %f56 ;\ 3072*5d9d9091SRichard Lowe fmuld %f0, %f2, %f58 ;\ 3073*5d9d9091SRichard Lowe faddd %f0, %f2, %f60 ;\ 3074*5d9d9091SRichard Lowe fmuld %f0, %f2, %f62 3075*5d9d9091SRichard Lowe 3076*5d9d9091SRichard Lowe#include "assym.h" 3077*5d9d9091SRichard Lowe 3078*5d9d9091SRichard Lowe/* 3079*5d9d9091SRichard Lowe * In the routine below, we check/set FPRS_FEF bit since 3080*5d9d9091SRichard Lowe * we don't want to take a fp_disabled trap. We need not 3081*5d9d9091SRichard Lowe * check/set PSTATE_PEF bit as it is done early during boot. 3082*5d9d9091SRichard Lowe */ 3083*5d9d9091SRichard Lowe ENTRY(big_savefp) 3084*5d9d9091SRichard Lowe rd %fprs, %o2 3085*5d9d9091SRichard Lowe st %o2, [%o0 + FPU_FPRS] 3086*5d9d9091SRichard Lowe andcc %o2, FPRS_FEF, %g0 ! is FPRS_FEF set? 3087*5d9d9091SRichard Lowe bnz,a,pt %icc, .fregs_save ! yes, go to save 3088*5d9d9091SRichard Lowe nop 3089*5d9d9091SRichard Lowe wr %g0, FPRS_FEF, %fprs ! else, set the bit 3090*5d9d9091SRichard Lowe stx %fsr, [%o0 + FPU_FSR] ! store %fsr 3091*5d9d9091SRichard Lowe retl 3092*5d9d9091SRichard Lowe nop 3093*5d9d9091SRichard Lowe.fregs_save: 3094*5d9d9091SRichard Lowe BSTORE_FPREGS(%o0, %o4) 3095*5d9d9091SRichard Lowe stx %fsr, [%o0 + FPU_FSR] ! store %fsr 3096*5d9d9091SRichard Lowe retl 3097*5d9d9091SRichard Lowe nop 3098*5d9d9091SRichard Lowe SET_SIZE(big_savefp) 3099*5d9d9091SRichard Lowe 3100*5d9d9091SRichard Lowe 3101*5d9d9091SRichard Lowe ENTRY(big_restorefp) 3102*5d9d9091SRichard Lowe ldx [%o0 + FPU_FSR], %fsr ! restore %fsr 3103*5d9d9091SRichard Lowe ld [%o0 + FPU_FPRS], %o1 3104*5d9d9091SRichard Lowe andcc %o1, FPRS_FEF, %g0 ! is FPRS_FEF set in saved %fprs? 3105*5d9d9091SRichard Lowe bnz,pt %icc, .fregs_restore ! yes, go to restore 3106*5d9d9091SRichard Lowe nop 3107*5d9d9091SRichard Lowe FZERO ! zero out to avoid leaks 3108*5d9d9091SRichard Lowe wr %g0, 0, %fprs 3109*5d9d9091SRichard Lowe retl 3110*5d9d9091SRichard Lowe nop 3111*5d9d9091SRichard Lowe.fregs_restore: 3112*5d9d9091SRichard Lowe BLOAD_FPREGS(%o0, %o2) 3113*5d9d9091SRichard Lowe wr %o1, 0, %fprs 3114*5d9d9091SRichard Lowe retl 3115*5d9d9091SRichard Lowe nop 3116*5d9d9091SRichard Lowe SET_SIZE(big_restorefp) 3117