1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22/* 23 * Copyright 2003 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27#pragma ident "%Z%%M% %I% %E% SMI" 28 29 .section ".text",#alloc,#execinstr 30 .file "mont_mulf_asm_v9.s" 31 32 .section ".rodata",#alloc 33 .align 8 34! 35! CONSTANT POOL 36! 37TwoTo16: 38 .word 1089470464 39 .word 0 40 .type TwoTo16,#object 41 .size TwoTo16,8 42! 43! CONSTANT POOL 44! 45TwoToMinus16: 46 .word 1055916032 47 .word 0 48 .type TwoToMinus16,#object 49 .size TwoToMinus16,8 50! 51! CONSTANT POOL 52! 53Zero: 54 .word 0 55 .word 0 56 .type Zero,#object 57 .size Zero,8 58! 59! CONSTANT POOL 60! 61TwoTo32: 62 .word 1106247680 63 .word 0 64 .type TwoTo32,#object 65 .size TwoTo32,8 66! 67! CONSTANT POOL 68! 69TwoToMinus32: 70 .word 1039138816 71 .word 0 72 .type TwoToMinus32,#object 73 .size TwoToMinus32,8 74 75 .section ".text",#alloc,#execinstr 76/* 000000 0 */ .register %g3,#scratch 77/* 000000 */ .register %g2,#scratch 78/* 000000 0 */ .align 8 79/* 000000 */ .skip 24 80/* 0x0018 */ .align 4 81! FILE mont_mulf.c 82 83! 1 !/* 84! 2 ! * Copyright 2003 Sun Microsystems, Inc. All rights reserved. 85! 3 ! * Use is subject to license terms. 86! 4 ! */ 87! 6 !#pragma ident "%Z%%M% %I% %E% SMI" 88! 9 !/* 89! 10 ! * If compiled without -DRF_INLINE_MACROS then needs -lm at link time 90! 11 ! * If compiled with -DRF_INLINE_MACROS then needs conv.il at compile time 91! 12 ! * (i.e. cc <compileer_flags> -DRF_INLINE_MACROS conv.il mont_mulf.c ) 92! 13 ! */ 93! 15 !#include <sys/types.h> 94! 16 !#include <math.h> 95! 18 !static const double TwoTo16 = 65536.0; 96! 19 !static const double TwoToMinus16 = 1.0/65536.0; 97! 20 !static const double Zero = 0.0; 98! 21 !static const double TwoTo32 = 65536.0 * 65536.0; 99! 22 !static const double TwoToMinus32 = 1.0 / (65536.0 * 65536.0); 100! 24 !#ifdef RF_INLINE_MACROS 101! 26 !double upper32(double); 102! 27 !double lower32(double, double); 103! 28 !double mod(double, double, double); 104! 30 !#else 105! 32 !static double 106! 33 !upper32(double x) 107! 34 !{ 108! 35 ! return (floor(x * TwoToMinus32)); 109! 36 !} 110! 39 !/* ARGSUSED */ 111! 40 !static double 112! 41 !lower32(double x, double y) 113! 42 !{ 114! 43 ! return (x - TwoTo32 * floor(x * TwoToMinus32)); 115! 44 !} 116! 46 !static double 117! 47 !mod(double x, double oneoverm, double m) 118! 48 !{ 119! 49 ! return (x - m * floor(x * oneoverm)); 120! 50 !} 121! 52 !#endif 122! 55 !static void 123! 56 !cleanup(double *dt, int from, int tlen) 124! 57 !{ 125 126! 127! SUBROUTINE cleanup 128! 129! OFFSET SOURCE LINE LABEL INSTRUCTION 130 131 cleanup: 132/* 000000 57 */ or %g0,%o7,%g3 133/* 0x0004 0 */ sethi %hi(Zero),%o3 134 .L900000110: 135/* 0x0008 57 */ call .+8 136/* 0x000c */ sethi /*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000110-.)),%g2 137/* 0x0010 0 */ add %o3,%lo(Zero),%o3 138/* 0x0014 57 */ add %g2,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000110-.)),%g2 139/* 0x0018 */ add %g2,%o7,%o4 140/* 0x001c */ or %g0,%g3,%o7 141/* 0x0020 0 */ ldx [%o4+%o3],%o5 142/* 0x0024 57 */ sra %o1,0,%o3 143/* 0x0028 */ or %g0,%o0,%o4 144/* 0x002c */ sra %o2,0,%o1 145 146! 58 ! int i; 147! 59 ! double tmp, tmp1, x, x1; 148! 61 ! tmp = tmp1 = Zero; 149! 63 ! for (i = 2 * from; i < 2 * tlen; i += 2) { 150 151/* 0x0030 63 */ sll %o3,1,%g2 152/* 0x0034 61 */ ldd [%o5],%f12 153/* 0x0038 63 */ sll %o1,1,%o1 154/* 0x003c 57 */ add %g2,1,%o2 155/* 0x0040 63 */ cmp %g2,%o1 156/* 0x0044 */ bge,pt %icc,.L77000145 157/* 0x0048 */ fmovd %f12,%f10 158 159! 64 ! x = dt[i]; 160 161/* 0x004c 64 */ sra %g2,0,%o0 162/* 0x0050 57 */ sub %o1,1,%o3 163 .L900000111: 164/* 0x0054 64 */ sllx %o0,3,%o0 165 166! 65 ! x1 = dt[i + 1]; 167! 66 ! dt[i] = lower32(x, Zero) + tmp; 168 169/* 0x0058 66 */ ldd [%o5],%f4 170 171! 67 ! dt[i + 1] = lower32(x1, Zero) + tmp1; 172! 68 ! tmp = upper32(x); 173! 69 ! tmp1 = upper32(x1); 174 175/* 0x005c 69 */ add %g2,2,%g2 176/* 0x0060 65 */ sra %o2,0,%o1 177/* 0x0064 64 */ ldd [%o4+%o0],%f6 178/* 0x0068 69 */ add %o2,2,%o2 179/* 0x006c 65 */ sllx %o1,3,%o1 180/* 0x0070 69 */ cmp %g2,%o3 181/* 0x0074 65 */ ldd [%o4+%o1],%f8 182/* 0x0078 */ fdtox %f6,%f0 183/* 0x007c */ fdtox %f8,%f2 184/* 0x0080 */ fmovs %f4,%f0 185/* 0x0084 */ fmovs %f4,%f2 186/* 0x0088 */ fxtod %f0,%f0 187/* 0x008c */ fdtox %f6,%f4 188/* 0x0090 */ fxtod %f2,%f2 189/* 0x0094 */ fdtox %f8,%f6 190/* 0x0098 66 */ faddd %f0,%f10,%f0 191/* 0x009c */ std %f0,[%o4+%o0] 192/* 0x00a0 67 */ faddd %f2,%f12,%f0 193/* 0x00a4 */ std %f0,[%o4+%o1] 194/* 0x00a8 */ fitod %f4,%f10 195/* 0x00ac */ fitod %f6,%f12 196/* 0x00b0 69 */ ble,pt %icc,.L900000111 197/* 0x00b4 */ sra %g2,0,%o0 198 .L77000145: 199/* 0x00b8 */ retl ! Result = 200/* 0x00bc */ nop 201/* 0x00c0 0 */ .type cleanup,2 202/* 0x00c0 0 */ .size cleanup,(.-cleanup) 203 204 .section ".text",#alloc,#execinstr 205/* 000000 0 */ .align 4 206 207! 70 ! } 208! 71 !} 209! 74 !/* ARGSUSED */ 210! 75 !void 211! 76 !conv_d16_to_i32(uint32_t *i32, double *d16, int64_t *tmp, int ilen) 212! 77 !{ 213 214! 215! SUBROUTINE conv_d16_to_i32 216! 217! OFFSET SOURCE LINE LABEL INSTRUCTION 218 219 .global conv_d16_to_i32 220 conv_d16_to_i32: 221/* 000000 77 */ save %sp,-208,%sp 222 223! 78 ! int i; 224! 79 ! int64_t t, t1, /* using int64_t and not uint64_t */ 225! 80 ! a, b, c, d; /* because more efficient code is */ 226! 81 ! /* generated this way, and there */ 227! 82 ! /* is no overflow */ 228! 83 ! t1 = 0; 229! 84 ! a = (int64_t)d16[0]; 230 231/* 0x0004 84 */ ldd [%i1],%f0 232/* 0x0008 77 */ sra %i3,0,%g5 233/* 0x000c */ or %g0,%i0,%l1 234 235! 85 ! b = (int64_t)d16[1]; 236 237/* 0x0010 85 */ ldd [%i1+8],%f2 238 239! 86 ! for (i = 0; i < ilen - 1; i++) { 240 241/* 0x0014 86 */ sub %g5,1,%g2 242/* 0x0018 83 */ or %g0,0,%l7 243/* 0x001c 84 */ fdtox %f0,%f0 244/* 0x0020 */ std %f0,[%sp+2247] 245/* 0x0024 86 */ cmp %g2,0 246/* 0x0028 85 */ fdtox %f2,%f0 247/* 0x002c */ std %f0,[%sp+2239] 248/* 0x0030 86 */ or %g0,0,%o5 249/* 0x0034 */ sub %g5,1,%g4 250/* 0x0038 77 */ or %g0,-1,%g3 251/* 0x003c */ srl %g3,0,%l4 252/* 0x0040 */ sub %g5,2,%l0 253/* 0x0044 */ or %g0,%i1,%l2 254/* 0x0048 */ or %g0,%i0,%o7 255/* 0x004c 84 */ ldx [%sp+2247],%o1 256/* 0x0050 77 */ or %g0,2,%o2 257 258! 87 ! c = (int64_t)d16[2 * i + 2]; 259! 88 ! t1 += a & 0xffffffff; 260! 89 ! t = (a >> 32); 261! 90 ! d = (int64_t)d16[2 * i + 3]; 262! 91 ! t1 += (b & 0xffff) << 16; 263! 92 ! t += (b >> 16) + (t1 >> 32); 264! 93 ! i32[i] = t1 & 0xffffffff; 265! 94 ! t1 = t; 266! 95 ! a = c; 267! 96 ! b = d; 268 269/* 0x0054 96 */ or %g0,8,%i2 270/* 0x0058 85 */ ldx [%sp+2239],%o0 271/* 0x005c 86 */ ble,pt %icc,.L900000212 272/* 0x0060 101 */ sethi %hi(0xfc00),%g2 273/* 0x0064 77 */ sethi %hi(0xfc00),%g2 274/* 0x0068 86 */ cmp %g4,7 275/* 0x006c 77 */ add %g2,1023,%l3 276/* 0x0070 86 */ bl,pn %icc,.L77000169 277/* 0x0074 */ or %g0,3,%g5 278/* 0x0078 87 */ ldd [%i1+16],%f0 279/* 0x007c */ or %g0,32,%g5 280/* 0x0080 90 */ or %g0,40,%g4 281/* 0x0084 */ ldd [%i1+24],%f2 282/* 0x0088 91 */ and %o0,%l3,%g3 283/* 0x008c 88 */ and %o1,%l4,%l6 284/* 0x0090 92 */ srax %o0,16,%o0 285/* 0x0094 87 */ fdtox %f0,%f0 286/* 0x0098 */ std %f0,[%sp+2231] 287/* 0x009c 86 */ sub %l0,3,%o2 288/* 0x00a0 90 */ fdtox %f2,%f0 289/* 0x00a4 */ std %f0,[%sp+2223] 290/* 0x00a8 */ ldd [%i1+%g4],%f2 291/* 0x00ac */ or %g0,56,%g4 292/* 0x00b0 96 */ or %g0,3,%o5 293/* 0x00b4 87 */ ldd [%i1+%g5],%f0 294/* 0x00b8 91 */ sllx %g3,16,%g5 295/* 0x00bc 87 */ or %g0,48,%g3 296/* 0x00c0 86 */ add %l6,%g5,%l7 297/* 0x00c4 90 */ fdtox %f2,%f2 298/* 0x00c8 87 */ ldx [%sp+2231],%g2 299/* 0x00cc 92 */ srax %l7,32,%o3 300/* 0x00d0 87 */ fdtox %f0,%f0 301/* 0x00d4 */ std %f0,[%sp+2231] 302/* 0x00d8 */ ldd [%i1+%g3],%f0 303/* 0x00dc 89 */ srax %g2,32,%l6 304/* 0x00e0 96 */ or %g0,9,%i1 305/* 0x00e4 89 */ srax %o1,32,%g3 306/* 0x00e8 88 */ and %g2,%l4,%g2 307/* 0x00ec 90 */ ldx [%sp+2223],%g5 308/* 0x00f0 */ std %f2,[%sp+2223] 309/* 0x00f4 */ ldd [%l2+%g4],%f2 310/* 0x00f8 92 */ srax %g5,16,%i0 311/* 0x00fc 91 */ and %g5,%l3,%g4 312/* 0x0100 87 */ ldx [%sp+2231],%l5 313 .L900000207: 314/* 0x0104 87 */ sra %i2,0,%g5 315/* 0x0108 92 */ add %o0,%o3,%o0 316/* 0x010c 90 */ ldx [%sp+2223],%o1 317/* 0x0110 87 */ fdtox %f0,%f0 318/* 0x0114 */ std %f0,[%sp+2231] 319/* 0x0118 */ sllx %g5,3,%g5 320/* 0x011c 92 */ add %g3,%o0,%o0 321/* 0x0120 90 */ sra %i1,0,%g3 322/* 0x0124 93 */ and %l7,%l4,%o3 323/* 0x0128 87 */ ldd [%l2+%g5],%f0 324/* 0x012c 90 */ fdtox %f2,%f2 325/* 0x0130 */ std %f2,[%sp+2223] 326/* 0x0134 */ sllx %g3,3,%g3 327/* 0x0138 96 */ add %i1,2,%g5 328/* 0x013c 91 */ sllx %g4,16,%o4 329/* 0x0140 96 */ add %i2,2,%g4 330/* 0x0144 90 */ ldd [%l2+%g3],%f2 331/* 0x0148 93 */ st %o3,[%o7] 332/* 0x014c 86 */ add %g2,%o4,%g2 333/* 0x0150 96 */ add %o5,3,%o5 334/* 0x0154 86 */ add %g2,%o0,%g3 335/* 0x0158 89 */ srax %l5,32,%g2 336/* 0x015c 88 */ and %l5,%l4,%l5 337/* 0x0160 92 */ srax %g3,32,%o4 338/* 0x0164 87 */ ldx [%sp+2231],%o0 339/* 0x0168 92 */ srax %o1,16,%o3 340/* 0x016c 91 */ and %o1,%l3,%l7 341/* 0x0170 87 */ sra %g4,0,%o1 342/* 0x0174 92 */ add %i0,%o4,%i0 343/* 0x0178 90 */ ldx [%sp+2223],%o4 344/* 0x017c 87 */ fdtox %f0,%f0 345/* 0x0180 */ std %f0,[%sp+2231] 346/* 0x0184 */ sllx %o1,3,%o1 347/* 0x0188 92 */ add %l6,%i0,%i0 348/* 0x018c 90 */ sra %g5,0,%l6 349/* 0x0190 93 */ and %g3,%l4,%g3 350/* 0x0194 87 */ ldd [%l2+%o1],%f0 351/* 0x0198 90 */ fdtox %f2,%f2 352/* 0x019c */ std %f2,[%sp+2223] 353/* 0x01a0 */ sllx %l6,3,%o1 354/* 0x01a4 96 */ add %i1,4,%g5 355/* 0x01a8 91 */ sllx %l7,16,%l6 356/* 0x01ac 96 */ add %i2,4,%g4 357/* 0x01b0 90 */ ldd [%l2+%o1],%f2 358/* 0x01b4 93 */ st %g3,[%o7+4] 359/* 0x01b8 86 */ add %l5,%l6,%g3 360/* 0x01bc 96 */ cmp %o5,%o2 361/* 0x01c0 86 */ add %g3,%i0,%l7 362/* 0x01c4 89 */ srax %o0,32,%g3 363/* 0x01c8 88 */ and %o0,%l4,%l6 364/* 0x01cc 92 */ srax %l7,32,%o1 365/* 0x01d0 87 */ ldx [%sp+2231],%l5 366/* 0x01d4 92 */ srax %o4,16,%o0 367/* 0x01d8 91 */ and %o4,%l3,%o4 368/* 0x01dc 87 */ sra %g4,0,%i0 369/* 0x01e0 92 */ add %o3,%o1,%o3 370/* 0x01e4 90 */ ldx [%sp+2223],%o1 371/* 0x01e8 87 */ fdtox %f0,%f0 372/* 0x01ec */ std %f0,[%sp+2231] 373/* 0x01f0 */ sllx %i0,3,%i0 374/* 0x01f4 92 */ add %g2,%o3,%g2 375/* 0x01f8 90 */ sra %g5,0,%i1 376/* 0x01fc 93 */ and %l7,%l4,%o3 377/* 0x0200 87 */ ldd [%l2+%i0],%f0 378/* 0x0204 90 */ fdtox %f2,%f2 379/* 0x0208 */ std %f2,[%sp+2223] 380/* 0x020c */ sllx %i1,3,%l7 381/* 0x0210 96 */ add %g5,2,%i1 382/* 0x0214 91 */ sllx %o4,16,%g5 383/* 0x0218 96 */ add %i2,6,%i2 384/* 0x021c 90 */ ldd [%l2+%l7],%f2 385/* 0x0220 93 */ st %o3,[%o7+8] 386/* 0x0224 86 */ add %l6,%g5,%g4 387/* 0x0228 96 */ add %o7,12,%o7 388/* 0x022c 86 */ add %g4,%g2,%l7 389/* 0x0230 89 */ srax %l5,32,%l6 390/* 0x0234 88 */ and %l5,%l4,%g2 391/* 0x0238 92 */ srax %l7,32,%o3 392/* 0x023c 87 */ ldx [%sp+2231],%l5 393/* 0x0240 92 */ srax %o1,16,%i0 394/* 0x0244 96 */ ble,pt %icc,.L900000207 395/* 0x0248 */ and %o1,%l3,%g4 396 .L900000210: 397/* 0x024c 91 */ sllx %g4,16,%g4 398/* 0x0250 90 */ ldx [%sp+2223],%o1 399/* 0x0254 92 */ add %o0,%o3,%g5 400/* 0x0258 */ add %g3,%g5,%g3 401/* 0x025c 86 */ add %g2,%g4,%g2 402/* 0x0260 90 */ fdtox %f2,%f2 403/* 0x0264 */ sra %i1,0,%g4 404/* 0x0268 */ std %f2,[%sp+2223] 405/* 0x026c 86 */ add %g2,%g3,%o2 406/* 0x0270 87 */ sra %i2,0,%g2 407/* 0x0274 91 */ and %o1,%l3,%g5 408/* 0x0278 87 */ fdtox %f0,%f0 409/* 0x027c 92 */ srax %o2,32,%g3 410/* 0x0280 87 */ std %f0,[%sp+2231] 411/* 0x0284 88 */ and %l5,%l4,%o0 412/* 0x0288 87 */ sllx %g2,3,%g2 413/* 0x028c 92 */ add %i0,%g3,%g3 414/* 0x0290 90 */ sllx %g4,3,%g4 415/* 0x0294 87 */ ldd [%l2+%g2],%f0 416/* 0x0298 92 */ add %l6,%g3,%g2 417/* 0x029c 91 */ sllx %g5,16,%g3 418/* 0x02a0 90 */ ldd [%l2+%g4],%f2 419/* 0x02a4 93 */ and %l7,%l4,%g5 420/* 0x02a8 92 */ srax %o1,16,%o1 421/* 0x02ac 90 */ ldx [%sp+2223],%o3 422/* 0x02b0 86 */ add %o0,%g3,%g3 423/* 0x02b4 89 */ srax %l5,32,%l5 424/* 0x02b8 87 */ ldx [%sp+2231],%o4 425/* 0x02bc 86 */ add %g3,%g2,%g2 426/* 0x02c0 92 */ srax %g2,32,%o0 427/* 0x02c4 93 */ st %g5,[%o7] 428/* 0x02c8 91 */ and %o3,%l3,%g3 429/* 0x02cc */ sllx %g3,16,%g3 430/* 0x02d0 88 */ and %o4,%l4,%g4 431/* 0x02d4 87 */ fdtox %f0,%f0 432/* 0x02d8 */ std %f0,[%sp+2231] 433/* 0x02dc 92 */ add %o1,%o0,%o0 434/* 0x02e0 86 */ add %g4,%g3,%g3 435/* 0x02e4 93 */ and %o2,%l4,%g4 436/* 0x02e8 */ st %g4,[%o7+4] 437/* 0x02ec 92 */ add %l5,%o0,%l5 438/* 0x02f0 */ srax %o3,16,%g4 439/* 0x02f4 87 */ ldx [%sp+2231],%o1 440/* 0x02f8 86 */ add %g3,%l5,%g3 441/* 0x02fc 92 */ srax %g3,32,%o3 442/* 0x0300 90 */ fdtox %f2,%f2 443/* 0x0304 */ std %f2,[%sp+2223] 444/* 0x0308 96 */ add %o7,16,%o7 445/* 0x030c 93 */ and %g2,%l4,%g2 446/* 0x0310 */ st %g2,[%o7-8] 447/* 0x0314 92 */ add %g4,%o3,%g4 448/* 0x0318 96 */ add %o5,1,%o5 449/* 0x031c 89 */ srax %o4,32,%o3 450/* 0x0320 90 */ ldx [%sp+2223],%o0 451/* 0x0324 93 */ and %g3,%l4,%g2 452/* 0x0328 96 */ cmp %o5,%l0 453/* 0x032c 93 */ st %g2,[%o7-4] 454/* 0x0330 96 */ bg,pn %icc,.L77000162 455/* 0x0334 */ add %o3,%g4,%l7 456/* 0x0338 */ add %i1,2,%g5 457/* 0x033c */ add %i2,2,%o2 458 .L77000169: 459/* 0x0340 87 */ sra %o2,0,%g2 460 .L900000211: 461/* 0x0344 90 */ sra %g5,0,%g4 462/* 0x0348 91 */ and %o0,%l3,%o3 463/* 0x034c 87 */ sllx %g2,3,%g2 464/* 0x0350 88 */ and %o1,%l4,%g3 465/* 0x0354 90 */ sllx %g4,3,%g4 466/* 0x0358 87 */ ldd [%l2+%g2],%f0 467/* 0x035c 88 */ add %l7,%g3,%g3 468/* 0x0360 90 */ ldd [%l2+%g4],%f2 469/* 0x0364 91 */ sllx %o3,16,%g2 470/* 0x0368 96 */ add %o5,1,%o5 471/* 0x036c 87 */ fdtox %f0,%f0 472/* 0x0370 */ std %f0,[%sp+2231] 473/* 0x0374 92 */ srax %o0,16,%o3 474/* 0x0378 90 */ fdtox %f2,%f0 475/* 0x037c 89 */ srax %o1,32,%o1 476/* 0x0380 90 */ std %f0,[%sp+2223] 477/* 0x0384 91 */ add %g3,%g2,%g2 478/* 0x0388 96 */ add %o2,2,%o2 479/* 0x038c 92 */ srax %g2,32,%o0 480/* 0x0390 93 */ and %g2,%l4,%g3 481/* 0x0394 */ st %g3,[%o7] 482/* 0x0398 87 */ ldx [%sp+2231],%g2 483/* 0x039c 92 */ add %o3,%o0,%o0 484/* 0x03a0 96 */ add %g5,2,%g5 485/* 0x03a4 92 */ add %o1,%o0,%l7 486/* 0x03a8 96 */ add %o7,4,%o7 487/* 0x03ac 90 */ ldx [%sp+2223],%g4 488/* 0x03b0 95 */ or %g0,%g2,%o1 489/* 0x03b4 96 */ cmp %o5,%l0 490/* 0x03b8 */ or %g0,%g4,%o0 491/* 0x03bc */ ble,pt %icc,.L900000211 492/* 0x03c0 */ sra %o2,0,%g2 493 494! 97 ! } 495! 98 ! t1 += a & 0xffffffff; 496! 99 ! t = (a >> 32); 497! 100 ! t1 += (b & 0xffff) << 16; 498! 101 ! i32[i] = t1 & 0xffffffff; 499 500 .L77000162: 501/* 0x03c4 101 */ sethi %hi(0xfc00),%g2 502 .L900000212: 503/* 0x03c8 101 */ or %g0,-1,%g3 504/* 0x03cc */ srl %g3,0,%g3 505/* 0x03d0 */ add %g2,1023,%g2 506/* 0x03d4 */ and %o1,%g3,%g4 507/* 0x03d8 */ and %o0,%g2,%g2 508/* 0x03dc */ sllx %g2,16,%g2 509/* 0x03e0 */ add %l7,%g4,%g4 510/* 0x03e4 */ sra %o5,0,%g5 511/* 0x03e8 */ add %g4,%g2,%g4 512/* 0x03ec */ sllx %g5,2,%g2 513/* 0x03f0 */ and %g4,%g3,%g3 514/* 0x03f4 */ st %g3,[%l1+%g2] 515/* 0x03f8 */ ret ! Result = 516/* 0x03fc */ restore %g0,%g0,%g0 517/* 0x0400 0 */ .type conv_d16_to_i32,2 518/* 0x0400 0 */ .size conv_d16_to_i32,(.-conv_d16_to_i32) 519 520 .section ".text",#alloc,#execinstr 521/* 000000 0 */ .align 8 522! 523! CONSTANT POOL 524! 525 ___const_seg_900000301: 526/* 000000 0 */ .word 1127219200,0 527/* 0x0008 0 */ .type ___const_seg_900000301,1 528/* 0x0008 0 */ .size ___const_seg_900000301,(.-___const_seg_900000301) 529/* 0x0008 0 */ .align 8 530/* 0x0008 */ .skip 24 531/* 0x0020 */ .align 4 532 533! 102 !} 534! 104 !void 535! 105 !conv_i32_to_d32(double *d32, uint32_t *i32, int len) 536! 106 !{ 537 538! 539! SUBROUTINE conv_i32_to_d32 540! 541! OFFSET SOURCE LINE LABEL INSTRUCTION 542 543 .global conv_i32_to_d32 544 conv_i32_to_d32: 545/* 000000 106 */ or %g0,%o7,%g2 546 547! 107 ! int i; 548! 109 !#pragma pipeloop(0) 549! 110 ! for (i = 0; i < len; i++) 550! 111 ! d32[i] = (double)(i32[i]); 551 552/* 0x0004 111 */ sethi %hi(___const_seg_900000301),%g1 553 .L900000309: 554/* 0x0008 106 */ call .+8 555/* 0x000c */ sethi /*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000309-.)),%o4 556/* 0x0010 */ add %o4,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000309-.)),%o4 557/* 0x0014 */ sra %o2,0,%o2 558/* 0x0018 */ add %o4,%o7,%o5 559/* 0x001c 110 */ cmp %o2,0 560/* 0x0020 */ ble,pt %icc,.L77000181 561/* 0x0024 */ or %g0,%g2,%o7 562/* 0x0028 */ sub %o2,1,%o4 563/* 0x002c 111 */ add %g1,%lo(___const_seg_900000301),%o2 564/* 0x0030 */ ldx [%o5+%o2],%o5 565/* 0x0034 110 */ add %o4,1,%o3 566/* 0x0038 */ cmp %o3,9 567/* 0x003c */ bl,pn %icc,.L77000185 568/* 0x0040 */ or %g0,0,%o2 569/* 0x0044 111 */ ld [%o1],%f3 570/* 0x0048 110 */ sub %o4,4,%o3 571/* 0x004c 111 */ or %g0,4,%o2 572/* 0x0050 */ ld [%o1+12],%f9 573/* 0x0054 */ ldd [%o5],%f6 574/* 0x0058 */ ld [%o1+8],%f11 575/* 0x005c */ ld [%o1+4],%f13 576/* 0x0060 */ fmovs %f6,%f2 577/* 0x0064 */ add %o1,16,%o1 578 .L900000305: 579/* 0x0068 111 */ ld [%o1],%f1 580/* 0x006c */ add %o2,5,%o2 581/* 0x0070 */ add %o1,20,%o1 582/* 0x0074 */ fsubd %f2,%f6,%f2 583/* 0x0078 */ std %f2,[%o0] 584/* 0x007c */ cmp %o2,%o3 585/* 0x0080 */ add %o0,40,%o0 586/* 0x0084 */ fmovs %f6,%f12 587/* 0x0088 */ fsubd %f12,%f6,%f4 588/* 0x008c */ ld [%o1-16],%f3 589/* 0x0090 */ std %f4,[%o0-32] 590/* 0x0094 */ fmovs %f6,%f10 591/* 0x0098 */ fsubd %f10,%f6,%f4 592/* 0x009c */ ld [%o1-12],%f13 593/* 0x00a0 */ std %f4,[%o0-24] 594/* 0x00a4 */ fmovs %f6,%f8 595/* 0x00a8 */ fsubd %f8,%f6,%f4 596/* 0x00ac */ ld [%o1-8],%f11 597/* 0x00b0 */ std %f4,[%o0-16] 598/* 0x00b4 */ fmovs %f6,%f0 599/* 0x00b8 */ fsubd %f0,%f6,%f0 600/* 0x00bc */ ld [%o1-4],%f9 601/* 0x00c0 */ std %f0,[%o0-8] 602/* 0x00c4 */ ble,pt %icc,.L900000305 603/* 0x00c8 */ fmovs %f6,%f2 604 .L900000308: 605/* 0x00cc 111 */ fmovs %f6,%f12 606/* 0x00d0 */ add %o0,32,%o0 607/* 0x00d4 */ cmp %o2,%o4 608/* 0x00d8 */ fmovs %f6,%f10 609/* 0x00dc */ fmovs %f6,%f8 610/* 0x00e0 */ fsubd %f2,%f6,%f0 611/* 0x00e4 */ std %f0,[%o0-32] 612/* 0x00e8 */ fsubd %f12,%f6,%f0 613/* 0x00ec */ std %f0,[%o0-24] 614/* 0x00f0 */ fsubd %f10,%f6,%f0 615/* 0x00f4 */ std %f0,[%o0-16] 616/* 0x00f8 */ fsubd %f8,%f6,%f0 617/* 0x00fc */ bg,pn %icc,.L77000181 618/* 0x0100 */ std %f0,[%o0-8] 619 .L77000185: 620/* 0x0104 111 */ ld [%o1],%f1 621 .L900000310: 622/* 0x0108 111 */ ldd [%o5],%f6 623/* 0x010c */ add %o2,1,%o2 624/* 0x0110 */ add %o1,4,%o1 625/* 0x0114 */ cmp %o2,%o4 626/* 0x0118 */ fmovs %f6,%f0 627/* 0x011c */ fsubd %f0,%f6,%f0 628/* 0x0120 */ std %f0,[%o0] 629/* 0x0124 */ add %o0,8,%o0 630/* 0x0128 */ ble,a,pt %icc,.L900000310 631/* 0x012c */ ld [%o1],%f1 632 .L77000181: 633/* 0x0130 */ retl ! Result = 634/* 0x0134 */ nop 635/* 0x0138 0 */ .type conv_i32_to_d32,2 636/* 0x0138 0 */ .size conv_i32_to_d32,(.-conv_i32_to_d32) 637 638 .section ".text",#alloc,#execinstr 639/* 000000 0 */ .align 8 640! 641! CONSTANT POOL 642! 643 ___const_seg_900000401: 644/* 000000 0 */ .word 1127219200,0 645/* 0x0008 0 */ .type ___const_seg_900000401,1 646/* 0x0008 0 */ .size ___const_seg_900000401,(.-___const_seg_900000401) 647/* 0x0008 0 */ .align 8 648/* 0x0008 */ .skip 24 649/* 0x0020 */ .align 4 650 651! 112 !} 652! 115 !void 653! 116 !conv_i32_to_d16(double *d16, uint32_t *i32, int len) 654! 117 !{ 655 656! 657! SUBROUTINE conv_i32_to_d16 658! 659! OFFSET SOURCE LINE LABEL INSTRUCTION 660 661 .global conv_i32_to_d16 662 conv_i32_to_d16: 663/* 000000 117 */ save %sp,-192,%sp 664 .L900000410: 665/* 0x0004 117 */ call .+8 666/* 0x0008 */ sethi /*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000410-.)),%g3 667/* 0x000c 0 */ sethi %hi(___const_seg_900000401),%g2 668/* 0x0010 117 */ sra %i2,0,%o0 669/* 0x0014 */ add %g3,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000410-.)),%g3 670 671! 118 ! int i; 672! 119 ! uint32_t a; 673! 121 !#pragma pipeloop(0) 674! 122 ! for (i = 0; i < len; i++) { 675 676/* 0x0018 122 */ cmp %o0,0 677/* 0x001c */ ble,pt %icc,.L77000197 678/* 0x0020 */ add %g3,%o7,%g5 679/* 0x0024 0 */ add %g2,%lo(___const_seg_900000401),%g2 680/* 0x0028 122 */ or %g0,%o0,%g4 681/* 0x002c 0 */ ldx [%g5+%g2],%o5 682/* 0x0030 122 */ sethi %hi(0xfc00),%g3 683/* 0x0034 */ sub %o0,1,%o2 684/* 0x0038 */ add %g3,1023,%o3 685/* 0x003c 117 */ or %g0,%i1,%o1 686/* 0x0040 122 */ or %g0,0,%o0 687/* 0x0044 */ or %g0,0,%g5 688 689! 123 ! a = i32[i]; 690! 124 ! d16[2 * i] = (double)(a & 0xffff); 691 692/* 0x0048 124 */ ldd [%o5],%f2 693/* 0x004c 122 */ cmp %g4,4 694/* 0x0050 */ bl,pn %icc,.L77000201 695/* 0x0054 */ or %g0,1,%l0 696/* 0x0058 123 */ ld [%i1],%g3 697/* 0x005c 124 */ fmovs %f2,%f0 698/* 0x0060 */ or %g0,0,%g4 699 700! 125 ! d16[2 * i + 1] = (double)(a >> 16); 701 702/* 0x0064 125 */ fmovs %f2,%f4 703/* 0x0068 */ add %i1,12,%o1 704/* 0x006c */ or %g0,3,%o0 705/* 0x0070 124 */ and %g3,%o3,%g5 706/* 0x0074 */ st %g5,[%sp+2227] 707/* 0x0078 125 */ or %g0,2,%l1 708/* 0x007c */ srl %g3,16,%g3 709/* 0x0080 */ st %g3,[%sp+2223] 710/* 0x0084 */ or %g0,8,%g5 711/* 0x0088 123 */ ld [%i1+4],%g3 712/* 0x008c 125 */ or %g0,3,%l0 713/* 0x0090 124 */ and %g3,%o3,%g2 714/* 0x0094 */ ld [%sp+2227],%f1 715/* 0x0098 125 */ ld [%sp+2223],%f5 716/* 0x009c 124 */ st %g2,[%sp+2227] 717/* 0x00a0 */ fsubd %f0,%f2,%f0 718/* 0x00a4 125 */ srl %g3,16,%g2 719/* 0x00a8 */ st %g2,[%sp+2223] 720/* 0x00ac 124 */ std %f0,[%i0+%g4] 721/* 0x00b0 125 */ fsubd %f4,%f2,%f0 722/* 0x00b4 123 */ ld [%i1+8],%g2 723/* 0x00b8 125 */ std %f0,[%i0+%g5] 724 .L900000406: 725/* 0x00bc 125 */ add %o0,1,%o0 726/* 0x00c0 */ add %o1,4,%o1 727/* 0x00c4 124 */ ld [%sp+2227],%f1 728/* 0x00c8 125 */ cmp %o0,%o2 729/* 0x00cc */ ld [%sp+2223],%f5 730/* 0x00d0 122 */ nop ! volatile 731/* 0x00d4 */ nop ! volatile 732/* 0x00d8 */ nop ! volatile 733/* 0x00dc 124 */ and %g2,%o3,%g3 734/* 0x00e0 125 */ srl %g2,16,%g2 735/* 0x00e4 124 */ st %g3,[%sp+2227] 736/* 0x00e8 125 */ st %g2,[%sp+2223] 737/* 0x00ec 123 */ ld [%o1-4],%g2 738/* 0x00f0 125 */ fmovs %f2,%f4 739/* 0x00f4 */ sra %l0,0,%g4 740/* 0x00f8 124 */ fmovs %f2,%f0 741/* 0x00fc */ sra %l1,0,%g3 742/* 0x0100 */ fsubd %f0,%f2,%f0 743/* 0x0104 */ sllx %g3,3,%g3 744/* 0x0108 125 */ sllx %g4,3,%g4 745/* 0x010c 124 */ std %f0,[%i0+%g3] 746/* 0x0110 125 */ add %l1,2,%l1 747/* 0x0114 */ fsubd %f4,%f2,%f0 748/* 0x0118 */ std %f0,[%i0+%g4] 749/* 0x011c */ ble,pt %icc,.L900000406 750/* 0x0120 */ add %l0,2,%l0 751 .L900000409: 752/* 0x0124 124 */ and %g2,%o3,%g3 753/* 0x0128 125 */ ld [%sp+2223],%f5 754/* 0x012c 124 */ fmovs %f2,%f0 755/* 0x0130 */ ld [%sp+2227],%f1 756/* 0x0134 */ sra %l1,0,%g4 757/* 0x0138 125 */ add %l1,2,%g5 758/* 0x013c */ srl %g2,16,%g2 759/* 0x0140 */ st %g2,[%sp+2223] 760/* 0x0144 */ fmovs %f2,%f4 761/* 0x0148 124 */ sllx %g4,3,%g2 762/* 0x014c */ st %g3,[%sp+2227] 763/* 0x0150 125 */ add %l0,2,%g4 764/* 0x0154 124 */ fsubd %f0,%f2,%f0 765/* 0x0158 */ std %f0,[%i0+%g2] 766/* 0x015c 125 */ sra %l0,0,%g3 767/* 0x0160 */ fsubd %f4,%f2,%f0 768/* 0x0164 */ sllx %g3,3,%g3 769/* 0x0168 */ std %f0,[%i0+%g3] 770/* 0x016c 124 */ sra %g5,0,%g2 771/* 0x0170 */ ld [%sp+2227],%f1 772/* 0x0174 125 */ sra %g4,0,%g3 773/* 0x0178 */ ld [%sp+2223],%f5 774/* 0x017c 124 */ sllx %g2,3,%g2 775/* 0x0180 */ fmovs %f2,%f0 776/* 0x0184 125 */ sllx %g3,3,%g3 777/* 0x0188 */ fmovs %f2,%f4 778/* 0x018c 124 */ fsubd %f0,%f2,%f0 779/* 0x0190 */ std %f0,[%i0+%g2] 780/* 0x0194 125 */ fsubd %f4,%f2,%f0 781/* 0x0198 */ std %f0,[%i0+%g3] 782/* 0x019c */ ret ! Result = 783/* 0x01a0 */ restore %g0,%g0,%g0 784 .L77000201: 785/* 0x01a4 123 */ ld [%o1],%g3 786 .L900000411: 787/* 0x01a8 124 */ sra %g5,0,%g2 788/* 0x01ac */ ldd [%o5],%f2 789/* 0x01b0 125 */ add %o0,1,%o0 790/* 0x01b4 124 */ sllx %g2,3,%g4 791/* 0x01b8 */ and %g3,%o3,%g2 792/* 0x01bc */ st %g2,[%sp+2227] 793/* 0x01c0 */ fmovs %f2,%f0 794/* 0x01c4 125 */ srl %g3,16,%g3 795/* 0x01c8 */ add %o1,4,%o1 796/* 0x01cc */ sra %l0,0,%g2 797/* 0x01d0 */ add %g5,2,%g5 798/* 0x01d4 */ sllx %g2,3,%g2 799/* 0x01d8 */ cmp %o0,%o2 800/* 0x01dc 124 */ ld [%sp+2227],%f1 801/* 0x01e0 125 */ add %l0,2,%l0 802/* 0x01e4 124 */ fsubd %f0,%f2,%f0 803/* 0x01e8 */ std %f0,[%i0+%g4] 804/* 0x01ec 125 */ st %g3,[%sp+2223] 805/* 0x01f0 */ fmovs %f2,%f0 806/* 0x01f4 */ ld [%sp+2223],%f1 807/* 0x01f8 */ fsubd %f0,%f2,%f0 808/* 0x01fc */ std %f0,[%i0+%g2] 809/* 0x0200 */ ble,a,pt %icc,.L900000411 810/* 0x0204 */ ld [%o1],%g3 811 .L77000197: 812/* 0x0208 */ ret ! Result = 813/* 0x020c */ restore %g0,%g0,%g0 814/* 0x0210 0 */ .type conv_i32_to_d16,2 815/* 0x0210 0 */ .size conv_i32_to_d16,(.-conv_i32_to_d16) 816 817 .section ".text",#alloc,#execinstr 818/* 000000 0 */ .align 8 819! 820! CONSTANT POOL 821! 822 ___const_seg_900000501: 823/* 000000 0 */ .word 1127219200,0 824/* 0x0008 0 */ .type ___const_seg_900000501,1 825/* 0x0008 0 */ .size ___const_seg_900000501,(.-___const_seg_900000501) 826/* 0x0008 0 */ .align 8 827/* 0x0008 */ .skip 24 828/* 0x0020 */ .align 4 829 830! 126 ! } 831! 127 !} 832! 129 !#ifdef RF_INLINE_MACROS 833! 131 !void 834! 132 !i16_to_d16_and_d32x4(const double *, /* 1/(2^16) */ 835! 133 ! const double *, /* 2^16 */ 836! 134 ! const double *, /* 0 */ 837! 135 ! double *, /* result16 */ 838! 136 ! double *, /* result32 */ 839! 137 ! float *); /* source - should be unsigned int* */ 840! 138 ! /* converted to float* */ 841! 140 !#else 842! 143 !/* ARGSUSED */ 843! 144 !static void 844! 145 !i16_to_d16_and_d32x4(const double *dummy1, /* 1/(2^16) */ 845! 146 ! const double *dummy2, /* 2^16 */ 846! 147 ! const double *dummy3, /* 0 */ 847! 148 ! double *result16, 848! 149 ! double *result32, 849! 150 ! float *src) /* source - should be unsigned int* */ 850! 151 ! /* converted to float* */ 851! 152 !{ 852! 153 ! uint32_t *i32; 853! 154 ! uint32_t a, b, c, d; 854! 156 ! i32 = (uint32_t *)src; 855! 157 ! a = i32[0]; 856! 158 ! b = i32[1]; 857! 159 ! c = i32[2]; 858! 160 ! d = i32[3]; 859! 161 ! result16[0] = (double)(a & 0xffff); 860! 162 ! result16[1] = (double)(a >> 16); 861! 163 ! result32[0] = (double)a; 862! 164 ! result16[2] = (double)(b & 0xffff); 863! 165 ! result16[3] = (double)(b >> 16); 864! 166 ! result32[1] = (double)b; 865! 167 ! result16[4] = (double)(c & 0xffff); 866! 168 ! result16[5] = (double)(c >> 16); 867! 169 ! result32[2] = (double)c; 868! 170 ! result16[6] = (double)(d & 0xffff); 869! 171 ! result16[7] = (double)(d >> 16); 870! 172 ! result32[3] = (double)d; 871! 173 !} 872! 175 !#endif 873! 178 !void 874! 179 !conv_i32_to_d32_and_d16(double *d32, double *d16, uint32_t *i32, int len) 875! 180 !{ 876 877! 878! SUBROUTINE conv_i32_to_d32_and_d16 879! 880! OFFSET SOURCE LINE LABEL INSTRUCTION 881 882 .global conv_i32_to_d32_and_d16 883 conv_i32_to_d32_and_d16: 884/* 000000 180 */ save %sp,-192,%sp 885 .L900000512: 886/* 0x0004 180 */ call .+8 887/* 0x0008 */ sethi /*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000512-.)),%g4 888 889! 181 ! int i; 890! 182 ! uint32_t a; 891! 184 !#pragma pipeloop(0) 892! 185 ! for (i = 0; i < len - 3; i += 4) { 893 894/* 0x000c 185 */ or %g0,0,%g5 895/* 0x0010 180 */ sra %i3,0,%l1 896/* 0x0014 */ add %g4,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000512-.)),%g4 897/* 0x0018 185 */ sub %l1,3,%g2 898/* 0x001c 180 */ add %g4,%o7,%o0 899/* 0x0020 185 */ cmp %g2,0 900/* 0x0024 */ or %g0,0,%o7 901/* 0x0028 */ ble,pt %icc,.L900000515 902/* 0x002c 190 */ cmp %o7,%l1 903/* 0x0030 0 */ sethi %hi(Zero),%g2 904/* 0x0034 0 */ add %g2,%lo(Zero),%g2 905/* 0x0038 185 */ sub %l1,4,%o1 906/* 0x003c 0 */ ldx [%o0+%g2],%o2 907/* 0x0040 */ ldd [%o2],%f8 908 909! 186 ! i16_to_d16_and_d32x4(&TwoToMinus16, &TwoTo16, &Zero, 910! 187 ! &(d16[2*i]), &(d32[i]), 911! 188 ! (float *)(&(i32[i]))); 912 913 .L900000514: 914/* 0x0044 188 */ sra %o7,0,%g2 915/* 0x0048 */ fmovd %f8,%f10 916/* 0x004c */ ldd [%o2-8],%f6 917/* 0x0050 */ sllx %g2,2,%g3 918/* 0x0054 */ fmovd %f8,%f12 919/* 0x0058 */ ldd [%o2-16],%f16 920/* 0x005c */ ld [%i2+%g3],%f11 921/* 0x0060 */ add %i2,%g3,%g3 922/* 0x0064 */ fmovd %f8,%f14 923/* 0x0068 */ ld [%g3+4],%f13 924/* 0x006c */ sra %g5,0,%g4 925/* 0x0070 */ add %o7,4,%o7 926/* 0x0074 */ ld [%g3+8],%f15 927/* 0x0078 */ fxtod %f10,%f10 928/* 0x007c */ sllx %g2,3,%g2 929/* 0x0080 */ ld [%g3+12],%f9 930/* 0x0084 */ fxtod %f12,%f12 931/* 0x0088 */ sllx %g4,3,%g3 932/* 0x008c */ fxtod %f14,%f14 933/* 0x0090 */ std %f10,[%i0+%g2] 934/* 0x0094 */ add %i0,%g2,%g4 935/* 0x0098 */ fxtod %f8,%f8 936/* 0x009c */ fmuld %f6,%f10,%f0 937/* 0x00a0 */ std %f8,[%g4+24] 938/* 0x00a4 */ fmuld %f6,%f12,%f2 939/* 0x00a8 */ std %f12,[%g4+8] 940/* 0x00ac */ add %i1,%g3,%g2 941/* 0x00b0 */ fmuld %f6,%f14,%f4 942/* 0x00b4 */ std %f14,[%g4+16] 943/* 0x00b8 */ cmp %o7,%o1 944/* 0x00bc */ fmuld %f6,%f8,%f6 945/* 0x00c0 */ fdtox %f0,%f0 946/* 0x00c4 */ add %g5,8,%g5 947/* 0x00c8 */ fdtox %f2,%f2 948/* 0x00cc */ fdtox %f4,%f4 949/* 0x00d0 */ fdtox %f6,%f6 950/* 0x00d4 */ fxtod %f0,%f0 951/* 0x00d8 */ std %f0,[%g2+8] 952/* 0x00dc */ fxtod %f2,%f2 953/* 0x00e0 */ std %f2,[%g2+24] 954/* 0x00e4 */ fxtod %f4,%f4 955/* 0x00e8 */ std %f4,[%g2+40] 956/* 0x00ec */ fxtod %f6,%f6 957/* 0x00f0 */ std %f6,[%g2+56] 958/* 0x00f4 */ fmuld %f0,%f16,%f0 959/* 0x00f8 */ fmuld %f2,%f16,%f2 960/* 0x00fc */ fmuld %f4,%f16,%f4 961/* 0x0100 */ fsubd %f10,%f0,%f0 962/* 0x0104 */ std %f0,[%i1+%g3] 963/* 0x0108 */ fmuld %f6,%f16,%f6 964/* 0x010c */ fsubd %f12,%f2,%f2 965/* 0x0110 */ std %f2,[%g2+16] 966/* 0x0114 */ fsubd %f14,%f4,%f4 967/* 0x0118 */ std %f4,[%g2+32] 968/* 0x011c */ fsubd %f8,%f6,%f6 969/* 0x0120 */ std %f6,[%g2+48] 970/* 0x0124 */ ble,a,pt %icc,.L900000514 971/* 0x0128 */ ldd [%o2],%f8 972 973! 189 ! } 974! 190 ! for (; i < len; i++) { 975 976 .L77000212: 977/* 0x012c 190 */ cmp %o7,%l1 978 .L900000515: 979/* 0x0130 190 */ bge,pt %icc,.L77000217 980/* 0x0134 */ nop 981/* 0x0138 */ sll %o7,1,%l0 982/* 0x013c 0 */ sethi %hi(___const_seg_900000501),%g2 983/* 0x0140 0 */ add %g2,%lo(___const_seg_900000501),%g2 984/* 0x0144 190 */ sub %l1,%o7,%g4 985/* 0x0148 0 */ ldx [%o0+%g2],%l6 986/* 0x014c 190 */ sethi %hi(0xfc00),%g3 987/* 0x0150 */ cmp %g4,7 988/* 0x0154 */ add %g3,1023,%l2 989/* 0x0158 */ bl,pn %icc,.L77000214 990/* 0x015c */ add %l0,1,%g2 991 992! 191 ! a = i32[i]; 993 994/* 0x0160 191 */ sra %o7,0,%o3 995 996! 192 ! d32[i] = (double)(i32[i]); 997 998/* 0x0164 192 */ ldd [%l6],%f8 999 1000! 193 ! d16[2 * i] = (double)(a & 0xffff); 1001! 194 ! d16[2 * i + 1] = (double)(a >> 16); 1002 1003/* 0x0168 194 */ add %o7,1,%g3 1004/* 0x016c 191 */ sllx %o3,2,%g5 1005/* 0x0170 194 */ add %o7,2,%o1 1006/* 0x0174 191 */ sra %g3,0,%o0 1007/* 0x0178 */ ld [%i2+%g5],%o2 1008/* 0x017c 192 */ fmovs %f8,%f6 1009/* 0x0180 191 */ sllx %o0,2,%o4 1010/* 0x0184 193 */ fmovs %f8,%f0 1011/* 0x0188 194 */ add %l0,2,%o5 1012/* 0x018c 191 */ sra %o1,0,%l7 1013/* 0x0190 194 */ fmovs %f8,%f2 1014/* 0x0194 193 */ and %o2,%l2,%g4 1015/* 0x0198 */ st %g4,[%sp+2227] 1016/* 0x019c 194 */ srl %o2,16,%o2 1017/* 0x01a0 */ add %l0,3,%g4 1018/* 0x01a4 191 */ ld [%i2+%o4],%o7 1019/* 0x01a8 193 */ sra %l0,0,%l0 1020/* 0x01ac 190 */ sub %l1,4,%g3 1021/* 0x01b0 194 */ st %o2,[%sp+2223] 1022/* 0x01b4 191 */ sllx %l7,2,%o2 1023/* 0x01b8 192 */ ld [%i2+%g5],%f7 1024/* 0x01bc */ sllx %o3,3,%o3 1025/* 0x01c0 193 */ and %o7,%l2,%g5 1026/* 0x01c4 194 */ srl %o7,16,%o7 1027/* 0x01c8 */ sra %g2,0,%g2 1028/* 0x01cc 192 */ fsubd %f6,%f8,%f4 1029/* 0x01d0 193 */ ld [%sp+2227],%f1 1030/* 0x01d4 194 */ sllx %g2,3,%g2 1031/* 0x01d8 193 */ st %g5,[%sp+2227] 1032/* 0x01dc 191 */ ld [%i2+%o2],%g5 1033/* 0x01e0 193 */ fsubd %f0,%f8,%f0 1034/* 0x01e4 194 */ ld [%sp+2223],%f3 1035/* 0x01e8 */ st %o7,[%sp+2223] 1036/* 0x01ec 193 */ sllx %l0,3,%o7 1037/* 0x01f0 192 */ std %f4,[%i0+%o3] 1038/* 0x01f4 193 */ std %f0,[%i1+%o7] 1039/* 0x01f8 194 */ fsubd %f2,%f8,%f0 1040/* 0x01fc 192 */ ld [%i2+%o4],%f11 1041/* 0x0200 194 */ std %f0,[%i1+%g2] 1042 .L900000508: 1043/* 0x0204 193 */ ld [%sp+2227],%f7 1044/* 0x0208 190 */ nop ! volatile 1045/* 0x020c */ nop ! volatile 1046/* 0x0210 */ nop ! volatile 1047/* 0x0214 */ nop ! volatile 1048/* 0x0218 194 */ add %o1,1,%o1 1049/* 0x021c */ ld [%sp+2223],%f1 1050/* 0x0220 191 */ sra %o1,0,%g2 1051/* 0x0224 */ sllx %g2,2,%o3 1052/* 0x0228 193 */ and %g5,%l2,%o4 1053/* 0x022c 194 */ srl %g5,16,%o7 1054/* 0x0230 193 */ st %o4,[%sp+2227] 1055/* 0x0234 */ fmovs %f8,%f6 1056/* 0x0238 192 */ fmovs %f8,%f10 1057/* 0x023c 193 */ sra %o5,0,%o4 1058/* 0x0240 191 */ ld [%i2+%o3],%g5 1059/* 0x0244 194 */ st %o7,[%sp+2223] 1060/* 0x0248 192 */ fsubd %f10,%f8,%f4 1061/* 0x024c 193 */ sllx %o4,3,%o4 1062/* 0x0250 */ fsubd %f6,%f8,%f6 1063/* 0x0254 192 */ sllx %o0,3,%o0 1064/* 0x0258 */ ld [%i2+%o2],%f3 1065/* 0x025c */ std %f4,[%i0+%o0] 1066/* 0x0260 194 */ sra %g4,0,%o0 1067/* 0x0264 */ add %o5,2,%o2 1068/* 0x0268 */ fmovs %f8,%f0 1069/* 0x026c 193 */ std %f6,[%i1+%o4] 1070/* 0x0270 194 */ sllx %o0,3,%o0 1071/* 0x0274 */ add %g4,2,%o4 1072/* 0x0278 */ fsubd %f0,%f8,%f0 1073/* 0x027c */ std %f0,[%i1+%o0] 1074/* 0x0280 193 */ ld [%sp+2227],%f1 1075/* 0x0284 190 */ nop ! volatile 1076/* 0x0288 */ nop ! volatile 1077/* 0x028c */ nop ! volatile 1078/* 0x0290 */ nop ! volatile 1079/* 0x0294 194 */ add %o1,1,%o1 1080/* 0x0298 */ ld [%sp+2223],%f5 1081/* 0x029c 191 */ sra %o1,0,%o0 1082/* 0x02a0 */ sllx %o0,2,%g4 1083/* 0x02a4 193 */ and %g5,%l2,%o5 1084/* 0x02a8 194 */ srl %g5,16,%o7 1085/* 0x02ac 193 */ st %o5,[%sp+2227] 1086/* 0x02b0 */ fmovs %f8,%f0 1087/* 0x02b4 192 */ fmovs %f8,%f2 1088/* 0x02b8 193 */ sra %o2,0,%o5 1089/* 0x02bc 191 */ ld [%i2+%g4],%g5 1090/* 0x02c0 194 */ st %o7,[%sp+2223] 1091/* 0x02c4 192 */ fsubd %f2,%f8,%f2 1092/* 0x02c8 193 */ sllx %o5,3,%o5 1093/* 0x02cc */ fsubd %f0,%f8,%f0 1094/* 0x02d0 192 */ sllx %l7,3,%o7 1095/* 0x02d4 */ ld [%i2+%o3],%f7 1096/* 0x02d8 */ std %f2,[%i0+%o7] 1097/* 0x02dc 194 */ sra %o4,0,%o7 1098/* 0x02e0 */ add %o2,2,%o3 1099/* 0x02e4 */ fmovs %f8,%f4 1100/* 0x02e8 193 */ std %f0,[%i1+%o5] 1101/* 0x02ec 194 */ sllx %o7,3,%o2 1102/* 0x02f0 */ add %o4,2,%o4 1103/* 0x02f4 */ fsubd %f4,%f8,%f0 1104/* 0x02f8 */ std %f0,[%i1+%o2] 1105/* 0x02fc 193 */ ld [%sp+2227],%f1 1106/* 0x0300 190 */ nop ! volatile 1107/* 0x0304 */ nop ! volatile 1108/* 0x0308 */ nop ! volatile 1109/* 0x030c */ nop ! volatile 1110/* 0x0310 194 */ add %o1,1,%o1 1111/* 0x0314 */ ld [%sp+2223],%f3 1112/* 0x0318 191 */ sra %o1,0,%l7 1113/* 0x031c */ sllx %l7,2,%o2 1114/* 0x0320 193 */ and %g5,%l2,%o5 1115/* 0x0324 194 */ srl %g5,16,%o7 1116/* 0x0328 193 */ st %o5,[%sp+2227] 1117/* 0x032c */ fmovs %f8,%f0 1118/* 0x0330 192 */ fmovs %f8,%f6 1119/* 0x0334 193 */ sra %o3,0,%o5 1120/* 0x0338 191 */ ld [%i2+%o2],%g5 1121/* 0x033c 194 */ st %o7,[%sp+2223] 1122/* 0x0340 192 */ fsubd %f6,%f8,%f4 1123/* 0x0344 193 */ sllx %o5,3,%o7 1124/* 0x0348 */ fsubd %f0,%f8,%f0 1125/* 0x034c 192 */ sllx %g2,3,%g2 1126/* 0x0350 */ ld [%i2+%g4],%f11 1127/* 0x0354 */ std %f4,[%i0+%g2] 1128/* 0x0358 194 */ sra %o4,0,%g2 1129/* 0x035c */ add %o3,2,%o5 1130/* 0x0360 */ fmovs %f8,%f2 1131/* 0x0364 193 */ std %f0,[%i1+%o7] 1132/* 0x0368 194 */ sllx %g2,3,%g2 1133/* 0x036c */ add %o4,2,%g4 1134/* 0x0370 */ fsubd %f2,%f8,%f0 1135/* 0x0374 */ cmp %o1,%g3 1136/* 0x0378 */ bl,pt %icc,.L900000508 1137/* 0x037c */ std %f0,[%i1+%g2] 1138 .L900000511: 1139/* 0x0380 194 */ add %o1,1,%o7 1140/* 0x0384 193 */ ld [%sp+2227],%f1 1141/* 0x0388 194 */ add %o3,4,%g3 1142/* 0x038c 192 */ fmovs %f8,%f10 1143/* 0x0390 191 */ sra %o7,0,%o4 1144/* 0x0394 193 */ and %g5,%l2,%g2 1145/* 0x0398 */ st %g2,[%sp+2227] 1146/* 0x039c 194 */ fmovs %f8,%f2 1147/* 0x03a0 191 */ sllx %o4,2,%o3 1148/* 0x03a4 193 */ fmovs %f8,%f0 1149/* 0x03a8 194 */ add %g3,4,%l0 1150/* 0x03ac */ srl %g5,16,%g2 1151/* 0x03b0 191 */ ld [%i2+%o3],%o1 1152/* 0x03b4 192 */ fmovs %f8,%f4 1153/* 0x03b8 194 */ add %g4,2,%g5 1154/* 0x03bc */ add %o7,1,%o7 1155/* 0x03c0 */ ld [%sp+2223],%f3 1156/* 0x03c4 */ sra %g4,0,%g4 1157/* 0x03c8 192 */ fsubd %f10,%f8,%f6 1158/* 0x03cc 194 */ st %g2,[%sp+2223] 1159/* 0x03d0 193 */ sra %o5,0,%g2 1160/* 0x03d4 */ fsubd %f0,%f8,%f0 1161/* 0x03d8 192 */ sllx %o0,3,%o5 1162/* 0x03dc */ ld [%i2+%o2],%f5 1163/* 0x03e0 193 */ and %o1,%l2,%o0 1164/* 0x03e4 */ sllx %g2,3,%g2 1165/* 0x03e8 192 */ std %f6,[%i0+%o5] 1166/* 0x03ec 194 */ add %g3,2,%o2 1167/* 0x03f0 193 */ std %f0,[%i1+%g2] 1168/* 0x03f4 194 */ fsubd %f2,%f8,%f0 1169/* 0x03f8 */ sllx %g4,3,%g4 1170/* 0x03fc 193 */ sra %g3,0,%g2 1171/* 0x0400 194 */ std %f0,[%i1+%g4] 1172/* 0x0404 192 */ fsubd %f4,%f8,%f4 1173/* 0x0408 194 */ srl %o1,16,%o1 1174/* 0x040c */ ld [%sp+2223],%f3 1175/* 0x0410 */ add %g5,2,%o5 1176/* 0x0414 193 */ ld [%sp+2227],%f1 1177/* 0x0418 192 */ sllx %l7,3,%g3 1178/* 0x041c 194 */ cmp %o7,%l1 1179/* 0x0420 193 */ st %o0,[%sp+2227] 1180/* 0x0424 */ sllx %g2,3,%g4 1181/* 0x0428 194 */ add %g5,4,%g2 1182/* 0x042c 193 */ fmovs %f8,%f0 1183/* 0x0430 194 */ st %o1,[%sp+2223] 1184/* 0x0434 */ sra %g5,0,%g5 1185/* 0x0438 */ fmovs %f8,%f2 1186/* 0x043c 192 */ std %f4,[%i0+%g3] 1187/* 0x0440 194 */ sllx %g5,3,%g5 1188/* 0x0444 192 */ ld [%i2+%o3],%f7 1189/* 0x0448 193 */ sra %o2,0,%o0 1190/* 0x044c */ fsubd %f0,%f8,%f0 1191/* 0x0450 */ std %f0,[%i1+%g4] 1192/* 0x0454 192 */ sllx %o4,3,%o1 1193/* 0x0458 194 */ fsubd %f2,%f8,%f0 1194/* 0x045c */ std %f0,[%i1+%g5] 1195/* 0x0460 193 */ sllx %o0,3,%o0 1196/* 0x0464 194 */ ld [%sp+2223],%f3 1197/* 0x0468 */ sra %o5,0,%o2 1198/* 0x046c 193 */ ld [%sp+2227],%f1 1199/* 0x0470 194 */ sllx %o2,3,%g3 1200/* 0x0474 192 */ fmovs %f8,%f6 1201/* 0x0478 193 */ fmovs %f8,%f0 1202/* 0x047c 194 */ fmovs %f8,%f2 1203/* 0x0480 192 */ fsubd %f6,%f8,%f4 1204/* 0x0484 */ std %f4,[%i0+%o1] 1205/* 0x0488 193 */ fsubd %f0,%f8,%f0 1206/* 0x048c */ std %f0,[%i1+%o0] 1207/* 0x0490 194 */ fsubd %f2,%f8,%f0 1208/* 0x0494 */ bge,pn %icc,.L77000217 1209/* 0x0498 */ std %f0,[%i1+%g3] 1210 .L77000214: 1211/* 0x049c 191 */ sra %o7,0,%g3 1212 .L900000513: 1213/* 0x04a0 192 */ ldd [%l6],%f8 1214/* 0x04a4 191 */ sllx %g3,2,%g4 1215/* 0x04a8 194 */ add %o7,1,%o7 1216/* 0x04ac 192 */ ld [%i2+%g4],%f1 1217/* 0x04b0 193 */ sra %l0,0,%g5 1218/* 0x04b4 194 */ cmp %o7,%l1 1219/* 0x04b8 191 */ ld [%i2+%g4],%g4 1220/* 0x04bc 192 */ sllx %g3,3,%g3 1221/* 0x04c0 194 */ add %l0,2,%l0 1222/* 0x04c4 192 */ fmovs %f8,%f0 1223/* 0x04c8 193 */ sllx %g5,3,%o0 1224/* 0x04cc */ and %g4,%l2,%g5 1225/* 0x04d0 192 */ fsubd %f0,%f8,%f0 1226/* 0x04d4 */ std %f0,[%i0+%g3] 1227/* 0x04d8 194 */ srl %g4,16,%g3 1228/* 0x04dc 193 */ st %g5,[%sp+2227] 1229/* 0x04e0 194 */ sra %g2,0,%g4 1230/* 0x04e4 */ add %g2,2,%g2 1231/* 0x04e8 */ sllx %g4,3,%g4 1232/* 0x04ec 193 */ fmovs %f8,%f0 1233/* 0x04f0 */ ld [%sp+2227],%f1 1234/* 0x04f4 */ fsubd %f0,%f8,%f0 1235/* 0x04f8 */ std %f0,[%i1+%o0] 1236/* 0x04fc 194 */ st %g3,[%sp+2223] 1237/* 0x0500 */ fmovs %f8,%f0 1238/* 0x0504 */ ld [%sp+2223],%f1 1239/* 0x0508 */ fsubd %f0,%f8,%f0 1240/* 0x050c */ std %f0,[%i1+%g4] 1241/* 0x0510 */ bl,pt %icc,.L900000513 1242/* 0x0514 */ sra %o7,0,%g3 1243 .L77000217: 1244/* 0x0518 */ ret ! Result = 1245/* 0x051c */ restore %g0,%g0,%g0 1246/* 0x0520 0 */ .type conv_i32_to_d32_and_d16,2 1247/* 0x0520 0 */ .size conv_i32_to_d32_and_d16,(.-conv_i32_to_d32_and_d16) 1248 1249 .section ".text",#alloc,#execinstr 1250/* 000000 0 */ .align 4 1251 1252! 195 ! } 1253! 196 !} 1254! 199 !static void 1255! 200 !adjust_montf_result(uint32_t *i32, uint32_t *nint, int len) 1256! 201 !{ 1257 1258! 1259! SUBROUTINE adjust_montf_result 1260! 1261! OFFSET SOURCE LINE LABEL INSTRUCTION 1262 1263 adjust_montf_result: 1264/* 000000 201 */ sra %o2,0,%o3 1265/* 0x0004 */ or %g0,%o0,%o2 1266 1267! 202 ! int64_t acc; 1268! 203 ! int i; 1269! 205 ! if (i32[len] > 0) 1270 1271/* 0x0008 205 */ sllx %o3,2,%o0 1272/* 0x000c */ ld [%o2+%o0],%o0 1273/* 0x0010 */ cmp %o0,0 1274/* 0x0014 */ bgu,pn %icc,.L77000263 1275/* 0x0018 208 */ subcc %o3,1,%o5 1276/* 0x001c */ bneg,pn %icc,.L77000263 1277/* 0x0020 209 */ sra %o5,0,%o0 1278 1279! 206 ! i = -1; 1280! 207 ! else { 1281! 208 ! for (i = len - 1; i >= 0; i--) { 1282! 209 ! if (i32[i] != nint[i]) break; 1283 1284 .L900000612: 1285/* 0x0024 209 */ sllx %o0,2,%o0 1286/* 0x0028 */ ld [%o2+%o0],%o4 1287/* 0x002c */ ld [%o1+%o0],%o0 1288/* 0x0030 */ cmp %o4,%o0 1289/* 0x0034 */ bne,pn %icc,.L77000248 1290/* 0x0038 */ nop 1291/* 0x003c */ subcc %o5,1,%o5 1292/* 0x0040 */ bpos,pt %icc,.L900000612 1293/* 0x0044 */ sra %o5,0,%o0 1294 .L900000605: 1295/* 0x0048 209 */ ba .L900000611 1296/* 0x004c 214 */ cmp %o3,0 1297 .L77000248: 1298/* 0x0050 209 */ bleu,pt %icc,.L77000256 1299/* 0x0054 */ nop 1300 1301! 210 ! } 1302! 211 ! } 1303! 212 ! if ((i < 0) || (i32[i] > nint[i])) { 1304! 213 ! acc = 0; 1305! 214 ! for (i = 0; i < len; i++) { 1306 1307 .L77000263: 1308/* 0x0058 214 */ cmp %o3,0 1309 .L900000611: 1310/* 0x005c 214 */ ble,pt %icc,.L77000256 1311/* 0x0060 */ nop 1312/* 0x0064 209 */ or %g0,-1,%o4 1313/* 0x0068 214 */ or %g0,%o3,%o0 1314/* 0x006c 209 */ sub %o3,1,%g2 1315/* 0x0070 214 */ or %g0,0,%o3 1316/* 0x0074 209 */ srl %o4,0,%g3 1317/* 0x0078 214 */ cmp %o0,4 1318/* 0x007c 213 */ or %g0,0,%o5 1319/* 0x0080 214 */ bl,pn %icc,.L77000264 1320/* 0x0084 */ or %g0,%o1,%o4 1321 1322! 215 ! acc = acc + (uint64_t)(i32[i]) - (uint64_t)(nint[i]); 1323 1324/* 0x0088 215 */ ld [%o2+4],%g5 1325 1326! 216 ! i32[i] = acc & 0xffffffff; 1327! 217 ! acc = acc >> 32; 1328 1329/* 0x008c 217 */ add %o1,4,%o4 1330/* 0x0090 */ add %o2,8,%o2 1331/* 0x0094 214 */ sub %o0,2,%g4 1332/* 0x0098 215 */ ld [%o2-8],%o1 1333/* 0x009c 217 */ or %g0,2,%o3 1334/* 0x00a0 215 */ ld [%o4-4],%o0 1335/* 0x00a4 214 */ sub %o1,%o0,%o0 1336/* 0x00a8 */ or %g0,%o0,%o1 1337/* 0x00ac 216 */ and %o0,%g3,%o0 1338/* 0x00b0 */ st %o0,[%o2-8] 1339/* 0x00b4 217 */ srax %o1,32,%o0 1340 .L900000606: 1341/* 0x00b8 217 */ add %o3,1,%o3 1342/* 0x00bc 215 */ ld [%o4],%o1 1343/* 0x00c0 217 */ add %o4,4,%o4 1344/* 0x00c4 */ cmp %o3,%g4 1345/* 0x00c8 */ add %o2,4,%o2 1346/* 0x00cc 214 */ sub %g5,%o1,%o1 1347/* 0x00d0 */ add %o1,%o0,%o1 1348/* 0x00d4 216 */ and %o1,%g3,%o0 1349/* 0x00d8 215 */ ld [%o2-4],%g5 1350/* 0x00dc 216 */ st %o0,[%o2-8] 1351/* 0x00e0 217 */ ble,pt %icc,.L900000606 1352/* 0x00e4 */ srax %o1,32,%o0 1353 .L900000609: 1354/* 0x00e8 215 */ ld [%o4],%o1 1355/* 0x00ec 217 */ add %o4,8,%o4 1356/* 0x00f0 */ add %o3,1,%o3 1357/* 0x00f4 215 */ ld [%o2],%o5 1358/* 0x00f8 217 */ add %o2,4,%o2 1359/* 0x00fc */ cmp %o3,%g2 1360/* 0x0100 214 */ sub %g5,%o1,%o1 1361/* 0x0104 */ add %o1,%o0,%o1 1362/* 0x0108 216 */ and %o1,%g3,%o0 1363/* 0x010c */ st %o0,[%o2-8] 1364/* 0x0110 215 */ ld [%o4-4],%o0 1365/* 0x0114 217 */ srax %o1,32,%o1 1366/* 0x0118 214 */ sub %o5,%o0,%o0 1367/* 0x011c */ add %o0,%o1,%o1 1368/* 0x0120 216 */ and %o1,%g3,%o0 1369/* 0x0124 */ st %o0,[%o2-4] 1370/* 0x0128 217 */ bg,pn %icc,.L77000256 1371/* 0x012c */ srax %o1,32,%o5 1372 .L77000264: 1373/* 0x0130 215 */ ld [%o2],%o0 1374 .L900000610: 1375/* 0x0134 215 */ ld [%o4],%o1 1376/* 0x0138 */ add %o5,%o0,%o0 1377/* 0x013c 217 */ add %o3,1,%o3 1378/* 0x0140 */ add %o4,4,%o4 1379/* 0x0144 */ cmp %o3,%g2 1380/* 0x0148 215 */ sub %o0,%o1,%o1 1381/* 0x014c 216 */ and %o1,%g3,%o0 1382/* 0x0150 */ st %o0,[%o2] 1383/* 0x0154 217 */ add %o2,4,%o2 1384/* 0x0158 */ srax %o1,32,%o5 1385/* 0x015c */ ble,a,pt %icc,.L900000610 1386/* 0x0160 */ ld [%o2],%o0 1387 .L77000256: 1388/* 0x0164 */ retl ! Result = 1389/* 0x0168 */ nop 1390/* 0x016c 0 */ .type adjust_montf_result,2 1391/* 0x016c 0 */ .size adjust_montf_result,(.-adjust_montf_result) 1392 1393 .section ".text",#alloc,#execinstr 1394/* 000000 0 */ .align 8 1395/* 000000 */ .skip 24 1396/* 0x0018 */ .align 4 1397 1398! 218 ! } 1399! 219 ! } 1400! 220 !} 1401! 223 !/* 1402! 224 ! * the lengths of the input arrays should be at least the following: 1403! 225 ! * result[nlen+1], dm1[nlen], dm2[2*nlen+1], dt[4*nlen+2], dn[nlen], nint[nlen] 1404! 226 ! * all of them should be different from one another 1405! 227 ! */ 1406! 228 !void mont_mulf_noconv(uint32_t *result, 1407! 229 ! double *dm1, double *dm2, double *dt, 1408! 230 ! double *dn, uint32_t *nint, 1409! 231 ! int nlen, double dn0) 1410! 232 !{ 1411 1412! 1413! SUBROUTINE mont_mulf_noconv 1414! 1415! OFFSET SOURCE LINE LABEL INSTRUCTION 1416 1417 .global mont_mulf_noconv 1418 mont_mulf_noconv: 1419/* 000000 232 */ save %sp,-224,%sp 1420 .L900000738: 1421/* 0x0004 232 */ call .+8 1422/* 0x0008 */ sethi /*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000738-.)),%g5 1423/* 0x000c 0 */ sethi %hi(Zero),%g2 1424/* 0x0010 232 */ ldx [%fp+2223],%g3 1425/* 0x0014 */ fmovd %f14,%f42 1426/* 0x0018 */ add %g5,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000738-.)),%g5 1427/* 0x001c 0 */ add %g2,%lo(Zero),%g2 1428/* 0x0020 232 */ sra %g3,0,%l4 1429/* 0x0024 */ add %g5,%o7,%o1 1430 1431! 233 ! int i, j, jj; 1432! 234 ! double digit, m2j, a, b; 1433! 235 ! double *pdm1, *pdm2, *pdn, *pdtj, pdn_0, pdm1_0; 1434! 237 ! pdm1 = &(dm1[0]); 1435! 238 ! pdm2 = &(dm2[0]); 1436! 239 ! pdn = &(dn[0]); 1437! 240 ! pdm2[2 * nlen] = Zero; 1438 1439/* 0x0028 240 */ sll %l4,1,%g3 1440/* 0x002c 0 */ ldx [%o1+%g2],%o7 1441/* 0x0030 232 */ or %g0,%i2,%l3 1442/* 0x0034 240 */ sra %g3,0,%g2 1443/* 0x0038 232 */ or %g0,%i0,%l6 1444/* 0x003c 240 */ sllx %g2,3,%i2 1445/* 0x0040 */ ldd [%o7],%f0 1446/* 0x0044 232 */ or %g0,%i3,%l0 1447/* 0x0048 */ or %g0,%i5,%i0 1448 1449! 242 ! if (nlen != 16) { 1450 1451/* 0x004c 242 */ cmp %l4,16 1452/* 0x0050 */ be,pn %icc,.L77000362 1453/* 0x0054 */ std %f0,[%l3+%i2] 1454 1455! 243 ! for (i = 0; i < 4 * nlen + 2; i++) 1456 1457/* 0x0058 243 */ sll %l4,2,%g4 1458/* 0x005c 232 */ or %g0,%i1,%l5 1459/* 0x0060 243 */ add %g4,2,%g2 1460/* 0x0064 232 */ or %g0,%i4,%l7 1461/* 0x0068 243 */ cmp %g2,0 1462/* 0x006c */ ble,a,pt %icc,.L900000752 1463/* 0x0070 245 */ ldd [%i1],%f4 1464/* 0x0074 243 */ add %g4,1,%o0 1465/* 0x0078 */ or %g0,0,%g4 1466 1467! 244 ! dt[i] = Zero; 1468! 245 ! a = dt[0] = pdm1[0] * pdm2[0]; 1469! 246 ! digit = mod(lower32(a, Zero) * dn0, TwoToMinus16, TwoTo16); 1470! 248 ! pdtj = &(dt[0]); 1471! 249 ! for (j = jj = 0; j < 2 * nlen; j++, jj++, pdtj++) { 1472! 250 ! m2j = pdm2[j]; 1473! 251 ! a = pdtj[0] + pdn[0] * digit; 1474! 252 ! b = pdtj[1] + pdm1[0] * pdm2[j + 1] + a * TwoToMinus16; 1475! 253 ! pdtj[1] = b; 1476! 255 !#pragma pipeloop(0) 1477! 256 ! for (i = 1; i < nlen; i++) { 1478! 257 ! pdtj[2 * i] += pdm1[i] * m2j + pdn[i] * digit; 1479! 258 ! } 1480! 259 ! if (jj == 30) { 1481! 260 ! cleanup(dt, j / 2 + 1, 2 * nlen + 1); 1482! 261 ! jj = 0; 1483! 262 ! } 1484! 264 ! digit = mod(lower32(b, Zero) * dn0, 1485! 265 ! TwoToMinus16, TwoTo16); 1486! 266 ! } 1487! 267 ! } else { 1488! 268 ! a = dt[0] = pdm1[0] * pdm2[0]; 1489! 270 ! dt[65] = dt[64] = dt[63] = dt[62] = dt[61] = dt[60] = 1490! 271 ! dt[59] = dt[58] = dt[57] = dt[56] = dt[55] = 1491! 272 ! dt[54] = dt[53] = dt[52] = dt[51] = dt[50] = 1492! 273 ! dt[49] = dt[48] = dt[47] = dt[46] = dt[45] = 1493! 274 ! dt[44] = dt[43] = dt[42] = dt[41] = dt[40] = 1494! 275 ! dt[39] = dt[38] = dt[37] = dt[36] = dt[35] = 1495! 276 ! dt[34] = dt[33] = dt[32] = dt[31] = dt[30] = 1496! 277 ! dt[29] = dt[28] = dt[27] = dt[26] = dt[25] = 1497! 278 ! dt[24] = dt[23] = dt[22] = dt[21] = dt[20] = 1498! 279 ! dt[19] = dt[18] = dt[17] = dt[16] = dt[15] = 1499! 280 ! dt[14] = dt[13] = dt[12] = dt[11] = dt[10] = 1500! 281 ! dt[9] = dt[8] = dt[7] = dt[6] = dt[5] = dt[4] = 1501! 282 ! dt[3] = dt[2] = dt[1] = Zero; 1502! 284 ! pdn_0 = pdn[0]; 1503! 285 ! pdm1_0 = pdm1[0]; 1504! 287 ! digit = mod(lower32(a, Zero) * dn0, TwoToMinus16, TwoTo16); 1505! 288 ! pdtj = &(dt[0]); 1506! 290 ! for (j = 0; j < 32; j++, pdtj++) { 1507 1508/* 0x007c 290 */ add %o0,1,%g2 1509/* 0x0080 */ cmp %g2,3 1510/* 0x0084 */ bl,pn %icc,.L77000363 1511/* 0x0088 */ or %g0,%i3,%g5 1512/* 0x008c 244 */ std %f0,[%i3] 1513/* 0x0090 */ add %i3,8,%g5 1514/* 0x0094 290 */ sub %o0,1,%g2 1515/* 0x0098 244 */ or %g0,1,%g4 1516 .L900000722: 1517/* 0x009c 244 */ std %f0,[%g5] 1518/* 0x00a0 */ add %g4,2,%g4 1519/* 0x00a4 */ add %g5,16,%g5 1520/* 0x00a8 */ cmp %g4,%g2 1521/* 0x00ac */ ble,pt %icc,.L900000722 1522/* 0x00b0 */ std %f0,[%g5-8] 1523 .L900000725: 1524/* 0x00b4 244 */ cmp %g4,%o0 1525/* 0x00b8 */ bg,pn %icc,.L77000368 1526/* 0x00bc */ nop ! volatile 1527 .L77000363: 1528/* 0x00c0 244 */ ldd [%o7],%f0 1529 .L900000751: 1530/* 0x00c4 244 */ std %f0,[%g5] 1531/* 0x00c8 */ add %g4,1,%g4 1532/* 0x00cc */ add %g5,8,%g5 1533/* 0x00d0 */ cmp %g4,%o0 1534/* 0x00d4 */ ble,a,pt %icc,.L900000751 1535/* 0x00d8 */ ldd [%o7],%f0 1536 .L77000368: 1537/* 0x00dc 245 */ ldd [%i1],%f4 1538 .L900000752: 1539/* 0x00e0 249 */ cmp %g3,0 1540/* 0x00e4 260 */ add %g3,1,%g2 1541/* 0x00e8 245 */ ldd [%l3],%f0 1542/* 0x00ec 260 */ sll %g2,1,%i1 1543/* 0x00f0 248 */ or %g0,%i3,%o4 1544/* 0x00f4 246 */ ldd [%o7],%f2 1545/* 0x00f8 260 */ add %l5,8,%g2 1546/* 0x00fc 249 */ or %g0,0,%i4 1547/* 0x0100 245 */ fmuld %f4,%f0,%f0 1548/* 0x0104 */ std %f0,[%i3] 1549/* 0x0108 243 */ sub %g3,1,%i3 1550/* 0x010c 246 */ ldd [%o7-8],%f28 1551/* 0x0110 260 */ add %l7,8,%g3 1552/* 0x0114 249 */ or %g0,0,%l1 1553/* 0x0118 246 */ ldd [%o7-16],%f30 1554/* 0x011c 260 */ sub %l4,1,%o5 1555/* 0x0120 */ or %g0,1,%l2 1556/* 0x0124 */ fdtox %f0,%f4 1557/* 0x0128 */ fmovs %f2,%f4 1558/* 0x012c */ fxtod %f4,%f0 1559/* 0x0130 246 */ fmuld %f0,%f14,%f0 1560/* 0x0134 */ fmuld %f0,%f28,%f2 1561/* 0x0138 */ fdtox %f2,%f2 1562/* 0x013c */ fxtod %f2,%f2 1563/* 0x0140 */ fmuld %f2,%f30,%f2 1564/* 0x0144 */ fsubd %f0,%f2,%f22 1565/* 0x0148 249 */ ble,pt %icc,.L900000745 1566/* 0x014c 324 */ add %l0,%i2,%g4 1567/* 0x0150 252 */ ldd [%l7],%f0 1568/* 0x0154 260 */ stx %g3,[%sp+2223] 1569/* 0x0158 */ stx %g2,[%sp+2231] 1570 .L900000746: 1571/* 0x015c 252 */ sra %l2,0,%g2 1572/* 0x0160 */ fmuld %f0,%f22,%f4 1573/* 0x0164 */ ldd [%l5],%f2 1574/* 0x0168 */ sllx %g2,3,%g2 1575/* 0x016c */ ldd [%o4],%f6 1576/* 0x0170 256 */ cmp %l4,1 1577/* 0x0174 252 */ ldd [%l3+%g2],%f0 1578/* 0x0178 250 */ sra %l1,0,%g2 1579/* 0x017c 256 */ or %g0,1,%g4 1580/* 0x0180 252 */ faddd %f6,%f4,%f6 1581/* 0x0184 250 */ sllx %g2,3,%g2 1582/* 0x0188 260 */ ldx [%sp+2231],%g5 1583/* 0x018c 252 */ fmuld %f2,%f0,%f0 1584/* 0x0190 */ ldd [%o4+8],%f2 1585/* 0x0194 257 */ or %g0,32,%o1 1586/* 0x0198 250 */ ldd [%l3+%g2],%f24 1587/* 0x019c 256 */ sub %l4,3,%i5 1588/* 0x01a0 257 */ or %g0,16,%o2 1589/* 0x01a4 260 */ ldx [%sp+2223],%g3 1590/* 0x01a8 257 */ or %g0,6,%o3 1591/* 0x01ac 252 */ faddd %f2,%f0,%f0 1592/* 0x01b0 */ fmuld %f6,%f28,%f2 1593/* 0x01b4 */ faddd %f0,%f2,%f26 1594/* 0x01b8 253 */ std %f26,[%o4+8] 1595/* 0x01bc 256 */ ble,pt %icc,.L900000750 1596/* 0x01c0 259 */ cmp %i4,30 1597/* 0x01c4 256 */ cmp %o5,7 1598/* 0x01c8 */ bl,pn %icc,.L77000367 1599/* 0x01cc */ or %g0,2,%o0 1600/* 0x01d0 257 */ ldd [%l5+8],%f4 1601/* 0x01d4 */ add %l7,32,%g3 1602/* 0x01d8 */ add %l5,40,%g5 1603/* 0x01dc */ ldd [%l7+8],%f0 1604/* 0x01e0 */ or %g0,5,%g4 1605/* 0x01e4 */ or %g0,6,%o0 1606/* 0x01e8 */ ldd [%l5+16],%f2 1607/* 0x01ec */ fmuld %f4,%f24,%f10 1608/* 0x01f0 */ ldd [%l7+16],%f8 1609/* 0x01f4 */ fmuld %f0,%f22,%f0 1610/* 0x01f8 */ ldd [%o4+16],%f14 1611/* 0x01fc */ fmuld %f2,%f24,%f4 1612/* 0x0200 */ ldd [%l5+24],%f2 1613/* 0x0204 */ ldd [%l7+24],%f6 1614/* 0x0208 */ faddd %f10,%f0,%f10 1615/* 0x020c */ ldd [%o4+%o1],%f12 1616/* 0x0210 */ ldd [%l5+32],%f0 1617 .L900000734: 1618/* 0x0214 257 */ sllx %o0,3,%g2 1619/* 0x0218 */ add %g4,3,%g4 1620/* 0x021c */ ldd [%g3],%f16 1621/* 0x0220 */ fmuld %f8,%f22,%f8 1622/* 0x0224 */ add %o3,2,%o0 1623/* 0x0228 */ cmp %g4,%i5 1624/* 0x022c */ ldd [%o4+%g2],%f18 1625/* 0x0230 */ sra %o0,0,%o3 1626/* 0x0234 */ add %g3,24,%g3 1627/* 0x0238 */ ldd [%g5],%f20 1628/* 0x023c */ faddd %f14,%f10,%f10 1629/* 0x0240 */ std %f10,[%o4+%o2] 1630/* 0x0244 */ faddd %f4,%f8,%f4 1631/* 0x0248 */ add %g5,24,%g5 1632/* 0x024c */ fmuld %f2,%f24,%f10 1633/* 0x0250 */ fmuld %f6,%f22,%f6 1634/* 0x0254 */ sllx %o3,3,%o2 1635/* 0x0258 */ ldd [%g3-16],%f8 1636/* 0x025c */ add %o0,2,%o0 1637/* 0x0260 */ ldd [%o4+%o2],%f14 1638/* 0x0264 */ sra %o0,0,%o3 1639/* 0x0268 */ faddd %f12,%f4,%f4 1640/* 0x026c */ ldd [%g5-16],%f2 1641/* 0x0270 */ std %f4,[%o4+%o1] 1642/* 0x0274 */ faddd %f10,%f6,%f4 1643/* 0x0278 */ fmuld %f0,%f24,%f10 1644/* 0x027c */ fmuld %f16,%f22,%f16 1645/* 0x0280 */ sllx %o3,3,%o1 1646/* 0x0284 */ ldd [%g3-8],%f6 1647/* 0x0288 */ add %o0,2,%o3 1648/* 0x028c */ ldd [%o4+%o1],%f12 1649/* 0x0290 */ sra %o3,0,%o0 1650/* 0x0294 */ faddd %f18,%f4,%f4 1651/* 0x0298 */ ldd [%g5-8],%f0 1652/* 0x029c */ std %f4,[%o4+%g2] 1653/* 0x02a0 */ faddd %f10,%f16,%f10 1654/* 0x02a4 */ ble,pt %icc,.L900000734 1655/* 0x02a8 */ fmuld %f20,%f24,%f4 1656 .L900000737: 1657/* 0x02ac 257 */ fmuld %f8,%f22,%f8 1658/* 0x02b0 */ ldd [%g3],%f16 1659/* 0x02b4 */ sllx %o0,3,%g2 1660/* 0x02b8 */ faddd %f14,%f10,%f10 1661/* 0x02bc */ ldd [%o4+%g2],%f14 1662/* 0x02c0 */ fmuld %f2,%f24,%f2 1663/* 0x02c4 */ add %o3,2,%o0 1664/* 0x02c8 */ fmuld %f6,%f22,%f6 1665/* 0x02cc */ std %f10,[%o4+%o2] 1666/* 0x02d0 */ sra %o0,0,%o2 1667/* 0x02d4 */ faddd %f4,%f8,%f4 1668/* 0x02d8 */ fmuld %f0,%f24,%f0 1669/* 0x02dc */ sllx %o2,3,%o2 1670/* 0x02e0 */ fmuld %f16,%f22,%f8 1671/* 0x02e4 */ cmp %g4,%o5 1672/* 0x02e8 */ add %o3,4,%o0 1673/* 0x02ec */ faddd %f2,%f6,%f2 1674/* 0x02f0 */ add %g3,8,%g3 1675/* 0x02f4 */ ldd [%o4+%o2],%f10 1676/* 0x02f8 */ faddd %f12,%f4,%f4 1677/* 0x02fc */ faddd %f0,%f8,%f0 1678/* 0x0300 */ std %f4,[%o4+%o1] 1679/* 0x0304 */ faddd %f14,%f2,%f2 1680/* 0x0308 */ std %f2,[%o4+%g2] 1681/* 0x030c */ faddd %f10,%f0,%f0 1682/* 0x0310 */ bg,pn %icc,.L77000296 1683/* 0x0314 */ std %f0,[%o4+%o2] 1684 .L77000367: 1685/* 0x0318 257 */ ldd [%g5],%f2 1686 .L900000749: 1687/* 0x031c 257 */ ldd [%g3],%f0 1688/* 0x0320 */ fmuld %f2,%f24,%f2 1689/* 0x0324 */ sra %o0,0,%g2 1690/* 0x0328 */ sllx %g2,3,%g2 1691/* 0x032c */ add %g4,1,%g4 1692/* 0x0330 */ fmuld %f0,%f22,%f0 1693/* 0x0334 */ ldd [%o4+%g2],%f4 1694/* 0x0338 */ add %g5,8,%g5 1695/* 0x033c */ add %g3,8,%g3 1696/* 0x0340 */ add %o0,2,%o0 1697/* 0x0344 */ cmp %g4,%o5 1698/* 0x0348 */ faddd %f2,%f0,%f0 1699/* 0x034c */ faddd %f4,%f0,%f0 1700/* 0x0350 */ std %f0,[%o4+%g2] 1701/* 0x0354 */ ble,a,pt %icc,.L900000749 1702/* 0x0358 */ ldd [%g5],%f2 1703 .L77000296: 1704/* 0x035c 259 */ cmp %i4,30 1705 .L900000750: 1706/* 0x0360 259 */ bne,a,pt %icc,.L900000748 1707/* 0x0364 */ fdtox %f26,%f0 1708/* 0x0368 260 */ srl %l1,31,%g2 1709/* 0x036c */ ldd [%o7],%f12 1710/* 0x0370 259 */ sub %i1,1,%o0 1711/* 0x0374 260 */ add %l1,%g2,%g2 1712/* 0x0378 */ sra %g2,1,%g2 1713/* 0x037c */ fmovd %f12,%f10 1714/* 0x0380 */ add %g2,1,%g2 1715/* 0x0384 */ sll %g2,1,%g2 1716/* 0x0388 */ cmp %g2,%i1 1717/* 0x038c */ bge,pt %icc,.L77000298 1718/* 0x0390 261 */ or %g0,0,%i4 1719/* 0x0394 260 */ or %g0,%g2,%g4 1720/* 0x0398 259 */ add %g2,1,%g5 1721/* 0x039c 260 */ sra %g4,0,%g2 1722 .L900000747: 1723/* 0x03a0 260 */ sllx %g2,3,%g2 1724/* 0x03a4 */ ldd [%o7],%f4 1725/* 0x03a8 */ add %g4,2,%g4 1726/* 0x03ac */ sra %g5,0,%g3 1727/* 0x03b0 */ ldd [%l0+%g2],%f6 1728/* 0x03b4 */ add %g5,2,%g5 1729/* 0x03b8 */ sllx %g3,3,%g3 1730/* 0x03bc */ cmp %g4,%o0 1731/* 0x03c0 */ ldd [%l0+%g3],%f8 1732/* 0x03c4 */ fdtox %f6,%f0 1733/* 0x03c8 */ fdtox %f8,%f2 1734/* 0x03cc */ fmovs %f4,%f0 1735/* 0x03d0 */ fmovs %f4,%f2 1736/* 0x03d4 */ fxtod %f0,%f0 1737/* 0x03d8 */ fdtox %f6,%f4 1738/* 0x03dc */ fxtod %f2,%f2 1739/* 0x03e0 */ fdtox %f8,%f6 1740/* 0x03e4 */ faddd %f0,%f10,%f0 1741/* 0x03e8 */ std %f0,[%l0+%g2] 1742/* 0x03ec */ faddd %f2,%f12,%f0 1743/* 0x03f0 */ std %f0,[%l0+%g3] 1744/* 0x03f4 */ fitod %f4,%f10 1745/* 0x03f8 */ fitod %f6,%f12 1746/* 0x03fc */ ble,pt %icc,.L900000747 1747/* 0x0400 */ sra %g4,0,%g2 1748 .L77000316: 1749/* 0x0404 261 */ or %g0,0,%i4 1750 .L77000298: 1751/* 0x0408 */ fdtox %f26,%f0 1752 .L900000748: 1753/* 0x040c 265 */ ldd [%o7],%f2 1754/* 0x0410 */ add %l1,1,%l1 1755/* 0x0414 */ add %l2,1,%l2 1756/* 0x0418 */ add %i4,1,%i4 1757/* 0x041c */ add %o4,8,%o4 1758/* 0x0420 */ cmp %l1,%i3 1759/* 0x0424 */ fmovs %f2,%f0 1760/* 0x0428 */ fxtod %f0,%f0 1761/* 0x042c */ fmuld %f0,%f42,%f0 1762/* 0x0430 */ fmuld %f0,%f28,%f2 1763/* 0x0434 */ fdtox %f2,%f2 1764/* 0x0438 */ fxtod %f2,%f2 1765/* 0x043c */ fmuld %f2,%f30,%f2 1766/* 0x0440 */ fsubd %f0,%f2,%f22 1767/* 0x0444 */ ble,a,pt %icc,.L900000746 1768/* 0x0448 252 */ ldd [%l7],%f0 1769 .L900000721: 1770/* 0x044c 265 */ ba .L900000745 1771/* 0x0450 324 */ add %l0,%i2,%g4 1772 .L77000362: 1773/* 0x0454 268 */ ldd [%i1],%f4 1774/* 0x0458 290 */ or %g0,1,%g5 1775/* 0x045c 288 */ or %g0,%i3,%g4 1776/* 0x0460 268 */ ldd [%l3],%f2 1777/* 0x0464 282 */ std %f0,[%i3+8] 1778/* 0x0468 */ std %f0,[%i3+16] 1779/* 0x046c 268 */ fmuld %f4,%f2,%f2 1780/* 0x0470 */ std %f2,[%i3] 1781/* 0x0474 282 */ std %f0,[%i3+24] 1782/* 0x0478 */ std %f0,[%i3+32] 1783/* 0x047c */ fdtox %f2,%f2 1784/* 0x0480 */ std %f0,[%i3+40] 1785/* 0x0484 */ std %f0,[%i3+48] 1786/* 0x0488 */ std %f0,[%i3+56] 1787/* 0x048c */ std %f0,[%i3+64] 1788/* 0x0490 */ fmovs %f0,%f2 1789/* 0x0494 */ std %f0,[%i3+72] 1790/* 0x0498 */ std %f0,[%i3+80] 1791/* 0x049c */ fxtod %f2,%f2 1792/* 0x04a0 */ std %f0,[%i3+88] 1793/* 0x04a4 */ std %f0,[%i3+96] 1794/* 0x04a8 */ std %f0,[%i3+104] 1795/* 0x04ac */ std %f0,[%i3+112] 1796/* 0x04b0 */ std %f0,[%i3+120] 1797/* 0x04b4 */ std %f0,[%i3+128] 1798/* 0x04b8 */ std %f0,[%i3+136] 1799/* 0x04bc */ std %f0,[%i3+144] 1800/* 0x04c0 */ std %f0,[%i3+152] 1801/* 0x04c4 */ std %f0,[%i3+160] 1802/* 0x04c8 */ std %f0,[%i3+168] 1803/* 0x04cc */ std %f0,[%i3+176] 1804/* 0x04d0 */ std %f0,[%i3+184] 1805/* 0x04d4 */ std %f0,[%i3+192] 1806/* 0x04d8 */ std %f0,[%i3+200] 1807/* 0x04dc */ std %f0,[%i3+208] 1808/* 0x04e0 */ std %f0,[%i3+216] 1809/* 0x04e4 */ std %f0,[%i3+224] 1810/* 0x04e8 */ std %f0,[%i3+232] 1811/* 0x04ec */ std %f0,[%i3+240] 1812/* 0x04f0 */ std %f0,[%i3+248] 1813/* 0x04f4 287 */ fmuld %f2,%f14,%f6 1814 1815! 292 ! m2j = pdm2[j]; 1816! 293 ! a = pdtj[0] + pdn_0 * digit; 1817! 294 ! b = pdtj[1] + pdm1_0 * pdm2[j + 1] + a * TwoToMinus16; 1818 1819/* 0x04f8 294 */ sra %g5,0,%g2 1820/* 0x04fc 282 */ std %f0,[%i3+256] 1821/* 0x0500 290 */ or %g0,0,%g3 1822/* 0x0504 282 */ std %f0,[%i3+264] 1823/* 0x0508 */ std %f0,[%i3+272] 1824/* 0x050c */ std %f0,[%i3+280] 1825/* 0x0510 */ std %f0,[%i3+288] 1826/* 0x0514 */ std %f0,[%i3+296] 1827/* 0x0518 */ std %f0,[%i3+304] 1828/* 0x051c */ std %f0,[%i3+312] 1829/* 0x0520 */ std %f0,[%i3+320] 1830/* 0x0524 */ std %f0,[%i3+328] 1831/* 0x0528 */ std %f0,[%i3+336] 1832/* 0x052c */ std %f0,[%i3+344] 1833/* 0x0530 */ std %f0,[%i3+352] 1834/* 0x0534 */ std %f0,[%i3+360] 1835/* 0x0538 */ std %f0,[%i3+368] 1836/* 0x053c */ std %f0,[%i3+376] 1837/* 0x0540 */ std %f0,[%i3+384] 1838/* 0x0544 */ std %f0,[%i3+392] 1839/* 0x0548 */ std %f0,[%i3+400] 1840/* 0x054c */ std %f0,[%i3+408] 1841/* 0x0550 287 */ ldd [%o7-8],%f44 1842/* 0x0554 */ ldd [%o7-16],%f46 1843/* 0x0558 282 */ std %f0,[%i3+416] 1844/* 0x055c */ fmuld %f6,%f44,%f4 1845/* 0x0560 */ std %f0,[%i3+424] 1846/* 0x0564 */ std %f0,[%i3+432] 1847/* 0x0568 */ std %f0,[%i3+440] 1848/* 0x056c */ fdtox %f4,%f2 1849/* 0x0570 */ std %f0,[%i3+448] 1850/* 0x0574 */ std %f0,[%i3+456] 1851/* 0x0578 */ std %f0,[%i3+464] 1852/* 0x057c */ fxtod %f2,%f2 1853/* 0x0580 */ std %f0,[%i3+472] 1854/* 0x0584 */ std %f0,[%i3+480] 1855/* 0x0588 */ std %f0,[%i3+488] 1856/* 0x058c */ fmuld %f2,%f46,%f2 1857/* 0x0590 */ std %f0,[%i3+496] 1858/* 0x0594 */ std %f0,[%i3+504] 1859/* 0x0598 */ std %f0,[%i3+512] 1860/* 0x059c */ fsubd %f6,%f2,%f38 1861/* 0x05a0 */ std %f0,[%i3+520] 1862/* 0x05a4 284 */ ldd [%i4],%f36 1863/* 0x05a8 285 */ ldd [%i1],%f40 1864 .L900000744: 1865 1866 1867 1868 1869 fmovd %f38,%f0 1870 fmovd %f42,%f18 1871 ldd [%i4],%f2 1872 ldd [%g4],%f8 1873 ldd [%i1],%f10 1874 ldd [%o7-8],%f14 1875 ldd [%o7-16],%f16 1876 ldd [%l3],%f24 1877 1878 ldd [%i1+8],%f26 1879 ldd [%i1+16],%f40 1880 ldd [%i1+48],%f46 1881 ldd [%i1+56],%f30 1882 ldd [%i1+64],%f54 1883 ldd [%i1+104],%f34 1884 ldd [%i1+112],%f58 1885 1886 ldd [%i4+8],%f28 1887 ldd [%i4+104],%f38 1888 ldd [%i4+112],%f60 1889 1890 1891 .L99999999: 1892!1 1893 ldd [%i1+24],%f32 1894 fmuld %f0,%f2,%f4 1895!2 1896 ldd [%i4+24],%f36 1897 fmuld %f26,%f24,%f20 1898!3 1899 ldd [%i1+40],%f42 1900 fmuld %f28,%f0,%f22 1901!4 1902 ldd [%i4+40],%f44 1903 fmuld %f32,%f24,%f32 1904!5 1905 ldd [%l3+8],%f6 1906 faddd %f4,%f8,%f4 1907 fmuld %f36,%f0,%f36 1908!6 1909 add %l3,8,%l3 1910 ldd [%i4+56],%f50 1911 fmuld %f42,%f24,%f42 1912!7 1913 ldd [%i1+72],%f52 1914 faddd %f20,%f22,%f20 1915 fmuld %f44,%f0,%f44 1916!8 1917 ldd [%g4+16],%f22 1918 fmuld %f10,%f6,%f12 1919!9 1920 ldd [%i4+72],%f56 1921 faddd %f32,%f36,%f32 1922 fmuld %f14,%f4,%f4 1923!10 1924 ldd [%g4+48],%f36 1925 fmuld %f30,%f24,%f48 1926!11 1927 ldd [%g4+8],%f8 1928 faddd %f20,%f22,%f20 1929 fmuld %f50,%f0,%f50 1930!12 1931 std %f20,[%g4+16] 1932 faddd %f42,%f44,%f42 1933 fmuld %f52,%f24,%f52 1934!13 1935 ldd [%g4+80],%f44 1936 faddd %f4,%f12,%f4 1937 fmuld %f56,%f0,%f56 1938!14 1939 ldd [%i1+88],%f20 1940 faddd %f32,%f36,%f32 1941!15 1942 ldd [%i4+88],%f22 1943 faddd %f48,%f50,%f48 1944!16 1945 ldd [%g4+112],%f50 1946 faddd %f52,%f56,%f52 1947!17 1948 ldd [%g4+144],%f56 1949 faddd %f4,%f8,%f8 1950 fmuld %f20,%f24,%f20 1951!18 1952 std %f32,[%g4+48] 1953 faddd %f42,%f44,%f42 1954 fmuld %f22,%f0,%f22 1955!19 1956 std %f42,[%g4+80] 1957 faddd %f48,%f50,%f48 1958 fmuld %f34,%f24,%f32 1959!20 1960 std %f48,[%g4+112] 1961 faddd %f52,%f56,%f52 1962 fmuld %f38,%f0,%f36 1963!21 1964 ldd [%i1+120],%f42 1965 fdtox %f8,%f4 1966!22 1967 std %f52,[%g4+144] 1968 faddd %f20,%f22,%f20 1969!23 1970 ldd [%i4+120],%f44 1971!24 1972 ldd [%g4+176],%f22 1973 faddd %f32,%f36,%f32 1974 fmuld %f42,%f24,%f42 1975!25 1976 ldd [%i4+16],%f50 1977 fmovs %f17,%f4 1978!26 1979 ldd [%i1+32],%f52 1980 fmuld %f44,%f0,%f44 1981!27 1982 ldd [%i4+32],%f56 1983 fmuld %f40,%f24,%f48 1984!28 1985 ldd [%g4+208],%f36 1986 faddd %f20,%f22,%f20 1987 fmuld %f50,%f0,%f50 1988!29 1989 std %f20,[%g4+176] 1990 fxtod %f4,%f4 1991 fmuld %f52,%f24,%f52 1992!30 1993 ldd [%i4+48],%f22 1994 faddd %f42,%f44,%f42 1995 fmuld %f56,%f0,%f56 1996!31 1997 ldd [%g4+240],%f44 1998 faddd %f32,%f36,%f32 1999!32 2000 std %f32,[%g4+208] 2001 faddd %f48,%f50,%f48 2002 fmuld %f46,%f24,%f20 2003!33 2004 ldd [%g4+32],%f50 2005 fmuld %f4,%f18,%f12 2006!34 2007 ldd [%i4+64],%f36 2008 faddd %f52,%f56,%f52 2009 fmuld %f22,%f0,%f22 2010!35 2011 ldd [%g4+64],%f56 2012 faddd %f42,%f44,%f42 2013!36 2014 std %f42,[%g4+240] 2015 faddd %f48,%f50,%f48 2016 fmuld %f54,%f24,%f32 2017!37 2018 std %f48,[%g4+32] 2019 fmuld %f12,%f14,%f4 2020!38 2021 ldd [%i1+80],%f42 2022 faddd %f52,%f56,%f56 ! yes, tmp52! 2023 fmuld %f36,%f0,%f36 2024!39 2025 ldd [%i4+80],%f44 2026 faddd %f20,%f22,%f20 2027!40 2028 ldd [%i1+96],%f48 2029 fmuld %f58,%f24,%f52 2030!41 2031 ldd [%i4+96],%f50 2032 fdtox %f4,%f4 2033 fmuld %f42,%f24,%f42 2034!42 2035 std %f56,[%g4+64] ! yes, tmp52! 2036 faddd %f32,%f36,%f32 2037 fmuld %f44,%f0,%f44 2038!43 2039 ldd [%g4+96],%f22 2040 fmuld %f48,%f24,%f48 2041!44 2042 ldd [%g4+128],%f36 2043 fmovd %f6,%f24 2044 fmuld %f50,%f0,%f50 2045!45 2046 fxtod %f4,%f4 2047 fmuld %f60,%f0,%f56 2048!46 2049 add %g4,8,%g4 2050 faddd %f42,%f44,%f42 2051!47 2052 ldd [%g4+160-8],%f44 2053 faddd %f20,%f22,%f20 2054!48 2055 std %f20,[%g4+96-8] 2056 faddd %f48,%f50,%f48 2057!49 2058 ldd [%g4+192-8],%f50 2059 faddd %f52,%f56,%f52 2060 fmuld %f4,%f16,%f4 2061!50 2062 ldd [%g4+224-8],%f56 2063 faddd %f32,%f36,%f32 2064!51 2065 std %f32,[%g4+128-8] 2066 faddd %f42,%f44,%f42 2067!52 2068 add %g3,1,%g3 2069 std %f42,[%g4+160-8] 2070 faddd %f48,%f50,%f48 2071!53 2072 cmp %g3,31 2073 std %f48,[%g4+192-8] 2074 fsubd %f12,%f4,%f0 2075!54 2076 faddd %f52,%f56,%f52 2077 ble,pt %icc,.L99999999 2078 std %f52,[%g4+224-8] 2079!55 2080 std %f8,[%g4] 2081 2082 2083 2084 2085 2086 2087 2088! 321 ! } 2089! 322 ! } 2090! 324 ! conv_d16_to_i32(result, dt + 2 * nlen, (int64_t *)dt, nlen + 1); 2091 2092 .L77000371: 2093/* 0x0808 324 */ add %l0,%i2,%g4 2094 .L900000745: 2095/* 0x080c 324 */ ldd [%l0+%i2],%f0 2096/* 0x0810 0 */ or %g0,-1,%l3 2097/* 0x0814 324 */ ldd [%g4+8],%f2 2098/* 0x0818 */ or %g0,0,%i2 2099/* 0x081c */ or %g0,0,%o5 2100/* 0x0820 */ fdtox %f0,%f0 2101/* 0x0824 */ std %f0,[%sp+2263] 2102/* 0x0828 */ cmp %l4,0 2103/* 0x082c */ fdtox %f2,%f0 2104/* 0x0830 */ std %f0,[%sp+2255] 2105/* 0x0834 320 */ srl %l3,0,%l2 2106/* 0x0838 */ or %g0,2,%o0 2107/* 0x083c */ sub %l4,1,%l0 2108/* 0x0840 */ or %g0,%l6,%o7 2109/* 0x0844 324 */ or %g0,32,%o3 2110/* 0x0848 */ or %g0,16,%g3 2111/* 0x084c */ or %g0,40,%o4 2112/* 0x0850 */ ldx [%sp+2255],%g5 2113/* 0x0854 */ or %g0,9,%i3 2114/* 0x0858 */ or %g0,8,%i4 2115/* 0x085c */ ldx [%sp+2263],%o1 2116/* 0x0860 */ ble,pt %icc,.L900000743 2117/* 0x0864 320 */ sethi %hi(0xfc00),%g2 2118/* 0x0868 */ sethi %hi(0xfc00),%g2 2119/* 0x086c 324 */ cmp %l4,7 2120/* 0x0870 320 */ add %g2,1023,%l1 2121/* 0x0874 324 */ bl,pn %icc,.L77000372 2122/* 0x0878 */ or %g0,3,%o2 2123/* 0x087c */ ldd [%g4+16],%f0 2124/* 0x0880 */ srax %g5,16,%o2 2125/* 0x0884 */ and %g5,%l1,%g3 2126/* 0x0888 */ ldd [%g4+24],%f2 2127/* 0x088c */ sllx %g3,16,%o0 2128/* 0x0890 */ and %o1,%l2,%i1 2129/* 0x0894 */ fdtox %f0,%f0 2130/* 0x0898 */ std %f0,[%sp+2247] 2131/* 0x089c */ add %i1,%o0,%i1 2132/* 0x08a0 */ fdtox %f2,%f0 2133/* 0x08a4 */ std %f0,[%sp+2239] 2134/* 0x08a8 */ or %g0,48,%g3 2135/* 0x08ac */ ldd [%g4+%o4],%f2 2136/* 0x08b0 */ or %g0,56,%o4 2137/* 0x08b4 */ or %g0,3,%o5 2138/* 0x08b8 */ ldd [%g4+%o3],%f0 2139/* 0x08bc */ sub %l4,4,%o3 2140/* 0x08c0 */ fdtox %f2,%f2 2141/* 0x08c4 */ ldx [%sp+2247],%g2 2142/* 0x08c8 */ fdtox %f0,%f0 2143/* 0x08cc */ std %f0,[%sp+2247] 2144/* 0x08d0 */ srax %g2,32,%l7 2145/* 0x08d4 */ ldd [%g4+%g3],%f0 2146/* 0x08d8 */ and %g2,%l2,%g2 2147/* 0x08dc */ srax %o1,32,%g3 2148/* 0x08e0 */ ldx [%sp+2239],%o0 2149/* 0x08e4 */ std %f2,[%sp+2239] 2150/* 0x08e8 */ srax %o0,16,%i2 2151/* 0x08ec */ ldd [%g4+%o4],%f2 2152/* 0x08f0 */ and %o0,%l1,%g5 2153/* 0x08f4 */ srax %i1,32,%o4 2154/* 0x08f8 */ ldx [%sp+2247],%l5 2155 .L900000726: 2156/* 0x08fc 324 */ sra %i4,0,%o0 2157/* 0x0900 */ add %o2,%o4,%o1 2158/* 0x0904 */ ldx [%sp+2239],%o2 2159/* 0x0908 */ fdtox %f0,%f0 2160/* 0x090c */ std %f0,[%sp+2247] 2161/* 0x0910 */ sllx %o0,3,%o0 2162/* 0x0914 */ add %g3,%o1,%o1 2163/* 0x0918 */ sra %i3,0,%g3 2164/* 0x091c */ and %i1,%l2,%o4 2165/* 0x0920 */ ldd [%g4+%o0],%f0 2166/* 0x0924 */ fdtox %f2,%f2 2167/* 0x0928 */ std %f2,[%sp+2239] 2168/* 0x092c */ sllx %g3,3,%g3 2169/* 0x0930 */ add %i3,2,%o0 2170/* 0x0934 */ sllx %g5,16,%i1 2171/* 0x0938 */ add %i4,2,%g5 2172/* 0x093c */ ldd [%g4+%g3],%f2 2173/* 0x0940 */ st %o4,[%o7] 2174/* 0x0944 */ add %g2,%i1,%g2 2175/* 0x0948 */ add %o5,3,%o5 2176/* 0x094c */ add %g2,%o1,%g3 2177/* 0x0950 */ srax %l5,32,%g2 2178/* 0x0954 */ and %l5,%l2,%i1 2179/* 0x0958 */ srax %g3,32,%l5 2180/* 0x095c */ ldx [%sp+2247],%o4 2181/* 0x0960 */ srax %o2,16,%o1 2182/* 0x0964 */ and %o2,%l1,%i3 2183/* 0x0968 */ sra %g5,0,%o2 2184/* 0x096c */ add %i2,%l5,%i2 2185/* 0x0970 */ ldx [%sp+2239],%l5 2186/* 0x0974 */ fdtox %f0,%f0 2187/* 0x0978 */ std %f0,[%sp+2247] 2188/* 0x097c */ sllx %o2,3,%o2 2189/* 0x0980 */ add %l7,%i2,%i2 2190/* 0x0984 */ sra %o0,0,%l7 2191/* 0x0988 */ and %g3,%l2,%g3 2192/* 0x098c */ ldd [%g4+%o2],%f0 2193/* 0x0990 */ fdtox %f2,%f2 2194/* 0x0994 */ std %f2,[%sp+2239] 2195/* 0x0998 */ sllx %l7,3,%o2 2196/* 0x099c */ add %o0,2,%o0 2197/* 0x09a0 */ sllx %i3,16,%l7 2198/* 0x09a4 */ add %i4,4,%g5 2199/* 0x09a8 */ ldd [%g4+%o2],%f2 2200/* 0x09ac */ st %g3,[%o7+4] 2201/* 0x09b0 */ add %i1,%l7,%g3 2202/* 0x09b4 */ cmp %o5,%o3 2203/* 0x09b8 */ add %g3,%i2,%i1 2204/* 0x09bc */ srax %o4,32,%g3 2205/* 0x09c0 */ and %o4,%l2,%l7 2206/* 0x09c4 */ srax %i1,32,%i2 2207/* 0x09c8 */ ldx [%sp+2247],%o4 2208/* 0x09cc */ srax %l5,16,%o2 2209/* 0x09d0 */ and %l5,%l1,%l5 2210/* 0x09d4 */ sra %g5,0,%i3 2211/* 0x09d8 */ add %o1,%i2,%i2 2212/* 0x09dc */ ldx [%sp+2239],%o1 2213/* 0x09e0 */ fdtox %f0,%f0 2214/* 0x09e4 */ std %f0,[%sp+2247] 2215/* 0x09e8 */ sllx %i3,3,%i3 2216/* 0x09ec */ add %g2,%i2,%g2 2217/* 0x09f0 */ sra %o0,0,%i2 2218/* 0x09f4 */ and %i1,%l2,%i1 2219/* 0x09f8 */ ldd [%g4+%i3],%f0 2220/* 0x09fc */ fdtox %f2,%f2 2221/* 0x0a00 */ std %f2,[%sp+2239] 2222/* 0x0a04 */ sllx %i2,3,%i2 2223/* 0x0a08 */ add %o0,2,%i3 2224/* 0x0a0c */ sllx %l5,16,%o0 2225/* 0x0a10 */ add %i4,6,%i4 2226/* 0x0a14 */ ldd [%g4+%i2],%f2 2227/* 0x0a18 */ st %i1,[%o7+8] 2228/* 0x0a1c */ add %l7,%o0,%g5 2229/* 0x0a20 */ add %o7,12,%o7 2230/* 0x0a24 */ add %g5,%g2,%i1 2231/* 0x0a28 */ srax %o4,32,%l7 2232/* 0x0a2c */ and %o4,%l2,%g2 2233/* 0x0a30 */ srax %i1,32,%o4 2234/* 0x0a34 */ ldx [%sp+2247],%l5 2235/* 0x0a38 */ srax %o1,16,%i2 2236/* 0x0a3c */ ble,pt %icc,.L900000726 2237/* 0x0a40 */ and %o1,%l1,%g5 2238 .L900000729: 2239/* 0x0a44 324 */ sllx %g5,16,%g5 2240/* 0x0a48 */ ldx [%sp+2239],%o1 2241/* 0x0a4c */ add %o2,%o4,%o0 2242/* 0x0a50 */ add %g3,%o0,%g3 2243/* 0x0a54 */ add %g2,%g5,%g2 2244/* 0x0a58 */ fdtox %f2,%f2 2245/* 0x0a5c */ sra %i3,0,%g5 2246/* 0x0a60 */ std %f2,[%sp+2239] 2247/* 0x0a64 */ add %g2,%g3,%o2 2248/* 0x0a68 */ sra %i4,0,%g2 2249/* 0x0a6c */ and %o1,%l1,%o0 2250/* 0x0a70 */ fdtox %f0,%f0 2251/* 0x0a74 */ srax %o2,32,%g3 2252/* 0x0a78 */ std %f0,[%sp+2247] 2253/* 0x0a7c */ add %o5,1,%o5 2254/* 0x0a80 */ sllx %g2,3,%g2 2255/* 0x0a84 */ add %i2,%g3,%g3 2256/* 0x0a88 */ sllx %g5,3,%g5 2257/* 0x0a8c */ ldd [%g4+%g2],%f0 2258/* 0x0a90 */ and %l5,%l2,%i2 2259/* 0x0a94 */ sllx %o0,16,%g2 2260/* 0x0a98 */ ldd [%g4+%g5],%f2 2261/* 0x0a9c */ add %l7,%g3,%g3 2262/* 0x0aa0 */ srax %o1,16,%o1 2263/* 0x0aa4 */ ldx [%sp+2239],%o3 2264/* 0x0aa8 */ add %i2,%g2,%g2 2265/* 0x0aac */ srax %l5,32,%l5 2266/* 0x0ab0 */ ldx [%sp+2247],%o4 2267/* 0x0ab4 */ add %g2,%g3,%g2 2268/* 0x0ab8 */ srax %g2,32,%g5 2269/* 0x0abc */ and %o3,%l1,%g3 2270/* 0x0ac0 */ fdtox %f0,%f0 2271/* 0x0ac4 */ sllx %g3,16,%g3 2272/* 0x0ac8 */ std %f0,[%sp+2247] 2273/* 0x0acc */ and %o4,%l2,%o0 2274/* 0x0ad0 */ srax %o3,16,%o3 2275/* 0x0ad4 */ add %o1,%g5,%g5 2276/* 0x0ad8 */ fdtox %f2,%f2 2277/* 0x0adc */ std %f2,[%sp+2239] 2278/* 0x0ae0 */ srax %o4,32,%o4 2279/* 0x0ae4 */ add %o0,%g3,%g3 2280/* 0x0ae8 */ add %l5,%g5,%l5 2281/* 0x0aec */ and %o2,%l2,%o0 2282/* 0x0af0 */ st %o0,[%o7+4] 2283/* 0x0af4 */ ldx [%sp+2247],%o1 2284/* 0x0af8 */ and %i1,%l2,%l7 2285/* 0x0afc */ add %g3,%l5,%g3 2286/* 0x0b00 */ st %l7,[%o7] 2287/* 0x0b04 */ srax %g3,32,%l5 2288/* 0x0b08 */ add %o7,16,%o7 2289/* 0x0b0c */ ldx [%sp+2239],%g5 2290/* 0x0b10 */ and %g2,%l2,%g2 2291/* 0x0b14 */ add %o3,%l5,%o3 2292/* 0x0b18 */ st %g2,[%o7-8] 2293/* 0x0b1c */ and %g3,%l2,%g2 2294/* 0x0b20 */ cmp %o5,%l0 2295/* 0x0b24 */ st %g2,[%o7-4] 2296/* 0x0b28 */ bg,pn %icc,.L77000319 2297/* 0x0b2c */ add %o4,%o3,%i2 2298/* 0x0b30 */ add %i3,2,%o2 2299/* 0x0b34 */ add %i4,2,%o0 2300 .L77000372: 2301/* 0x0b38 324 */ sra %o0,0,%g2 2302 .L900000742: 2303/* 0x0b3c 324 */ sllx %g2,3,%g2 2304/* 0x0b40 */ and %g5,%l1,%o4 2305/* 0x0b44 */ sra %o2,0,%o3 2306/* 0x0b48 */ ldd [%g4+%g2],%f0 2307/* 0x0b4c */ and %o1,%l2,%g3 2308/* 0x0b50 */ sllx %o3,3,%o3 2309/* 0x0b54 */ add %i2,%g3,%g3 2310/* 0x0b58 */ sllx %o4,16,%g2 2311/* 0x0b5c */ ldd [%g4+%o3],%f2 2312/* 0x0b60 */ fdtox %f0,%f0 2313/* 0x0b64 */ srax %g5,16,%o4 2314/* 0x0b68 */ std %f0,[%sp+2247] 2315/* 0x0b6c */ add %g3,%g2,%g2 2316/* 0x0b70 */ srax %g2,32,%o3 2317/* 0x0b74 */ and %g2,%l2,%g3 2318/* 0x0b78 */ fdtox %f2,%f0 2319/* 0x0b7c */ srax %o1,32,%o1 2320/* 0x0b80 */ std %f0,[%sp+2239] 2321/* 0x0b84 */ add %o4,%o3,%o3 2322/* 0x0b88 */ st %g3,[%o7] 2323/* 0x0b8c */ add %o5,1,%o5 2324/* 0x0b90 */ add %o1,%o3,%i2 2325/* 0x0b94 */ ldx [%sp+2247],%g2 2326/* 0x0b98 */ add %o0,2,%o0 2327/* 0x0b9c */ add %o2,2,%o2 2328/* 0x0ba0 */ ldx [%sp+2239],%g5 2329/* 0x0ba4 */ add %o7,4,%o7 2330/* 0x0ba8 */ cmp %o5,%l0 2331/* 0x0bac */ or %g0,%g2,%o1 2332/* 0x0bb0 */ ble,pt %icc,.L900000742 2333/* 0x0bb4 */ sra %o0,0,%g2 2334 .L77000319: 2335/* 0x0bb8 320 */ sethi %hi(0xfc00),%g2 2336 .L900000743: 2337/* 0x0bbc 320 */ srl %l3,0,%o0 2338/* 0x0bc0 */ add %g2,1023,%g2 2339/* 0x0bc4 */ and %g5,%g2,%g2 2340/* 0x0bc8 */ and %o1,%o0,%g3 2341/* 0x0bcc */ sllx %g2,16,%g2 2342/* 0x0bd0 */ add %i2,%g3,%g3 2343/* 0x0bd4 */ sra %o5,0,%g4 2344/* 0x0bd8 */ add %g3,%g2,%g2 2345/* 0x0bdc */ sllx %g4,2,%g3 2346/* 0x0be0 */ and %g2,%o0,%g2 2347/* 0x0be4 */ st %g2,[%l6+%g3] 2348 2349! 325 ! adjust_montf_result(result, nint, nlen); 2350 2351/* 0x0be8 325 */ sllx %l4,2,%g2 2352/* 0x0bec */ ld [%l6+%g2],%g2 2353/* 0x0bf0 */ cmp %g2,0 2354/* 0x0bf4 */ bgu,pn %icc,.L77000369 2355/* 0x0bf8 */ subcc %l4,1,%g4 2356/* 0x0bfc */ bneg,pn %icc,.L77000369 2357/* 0x0c00 */ sra %g4,0,%g2 2358 .L900000741: 2359/* 0x0c04 325 */ sllx %g2,2,%g2 2360/* 0x0c08 */ ld [%l6+%g2],%g3 2361/* 0x0c0c */ ld [%i0+%g2],%g2 2362/* 0x0c10 */ cmp %g3,%g2 2363/* 0x0c14 */ bne,pn %icc,.L77000328 2364/* 0x0c18 */ nop 2365/* 0x0c1c */ subcc %g4,1,%g4 2366/* 0x0c20 */ bpos,pt %icc,.L900000741 2367/* 0x0c24 */ sra %g4,0,%g2 2368 .L900000720: 2369/* 0x0c28 325 */ ba .L900000740 2370/* 0x0c2c 249 */ cmp %l4,0 2371 .L77000328: 2372/* 0x0c30 325 */ bleu,pt %icc,.L77000307 2373/* 0x0c34 */ nop 2374 .L77000369: 2375/* 0x0c38 249 */ cmp %l4,0 2376 .L900000740: 2377/* 0x0c3c 249 */ ble,pt %icc,.L77000307 2378/* 0x0c40 */ nop 2379/* 0x0c44 */ or %g0,0,%g5 2380/* 0x0c48 */ or %g0,0,%g3 2381/* 0x0c4c 325 */ or %g0,%l6,%o1 2382/* 0x0c50 */ sub %l4,1,%g4 2383/* 0x0c54 249 */ cmp %l4,4 2384/* 0x0c58 */ bl,pn %icc,.L77000370 2385/* 0x0c5c */ or %g0,%i0,%o3 2386/* 0x0c60 */ ld [%l6],%o2 2387/* 0x0c64 */ add %i0,4,%o3 2388/* 0x0c68 */ add %l6,8,%o1 2389/* 0x0c6c */ ld [%i0],%g2 2390/* 0x0c70 */ sub %l4,2,%o4 2391/* 0x0c74 */ or %g0,2,%g3 2392/* 0x0c78 */ ld [%l6+4],%o5 2393/* 0x0c7c */ sub %o2,%g2,%g2 2394/* 0x0c80 */ or %g0,%g2,%g5 2395/* 0x0c84 */ and %g2,%o0,%g2 2396/* 0x0c88 */ st %g2,[%l6] 2397/* 0x0c8c */ srax %g5,32,%g2 2398 .L900000730: 2399/* 0x0c90 249 */ add %g3,1,%g3 2400/* 0x0c94 */ ld [%o3],%g5 2401/* 0x0c98 */ add %o3,4,%o3 2402/* 0x0c9c */ cmp %g3,%o4 2403/* 0x0ca0 */ add %o1,4,%o1 2404/* 0x0ca4 */ sub %o5,%g5,%g5 2405/* 0x0ca8 */ add %g5,%g2,%g5 2406/* 0x0cac */ and %g5,%o0,%g2 2407/* 0x0cb0 */ ld [%o1-4],%o5 2408/* 0x0cb4 */ st %g2,[%o1-8] 2409/* 0x0cb8 */ ble,pt %icc,.L900000730 2410/* 0x0cbc */ srax %g5,32,%g2 2411 .L900000733: 2412/* 0x0cc0 249 */ ld [%o3],%g5 2413/* 0x0cc4 */ add %o3,8,%o3 2414/* 0x0cc8 */ add %g3,1,%g3 2415/* 0x0ccc */ ld [%o1],%o2 2416/* 0x0cd0 */ add %o1,4,%o1 2417/* 0x0cd4 */ cmp %g3,%g4 2418/* 0x0cd8 */ sub %o5,%g5,%g5 2419/* 0x0cdc */ add %g5,%g2,%g5 2420/* 0x0ce0 */ and %g5,%o0,%g2 2421/* 0x0ce4 */ st %g2,[%o1-8] 2422/* 0x0ce8 */ ld [%o3-4],%g2 2423/* 0x0cec */ srax %g5,32,%g5 2424/* 0x0cf0 */ sub %o2,%g2,%g2 2425/* 0x0cf4 */ add %g2,%g5,%g5 2426/* 0x0cf8 */ and %g5,%o0,%g2 2427/* 0x0cfc */ st %g2,[%o1-4] 2428/* 0x0d00 */ bg,pn %icc,.L77000307 2429/* 0x0d04 */ srax %g5,32,%g5 2430 .L77000370: 2431/* 0x0d08 249 */ ld [%o1],%g2 2432 .L900000739: 2433/* 0x0d0c 249 */ ld [%o3],%o2 2434/* 0x0d10 */ add %g5,%g2,%g2 2435/* 0x0d14 */ add %g3,1,%g3 2436/* 0x0d18 */ add %o3,4,%o3 2437/* 0x0d1c */ cmp %g3,%g4 2438/* 0x0d20 */ sub %g2,%o2,%g5 2439/* 0x0d24 */ and %g5,%o0,%g2 2440/* 0x0d28 */ st %g2,[%o1] 2441/* 0x0d2c */ add %o1,4,%o1 2442/* 0x0d30 */ srax %g5,32,%g5 2443/* 0x0d34 */ ble,a,pt %icc,.L900000739 2444/* 0x0d38 */ ld [%o1],%g2 2445 .L77000307: 2446/* 0x0d3c */ ret ! Result = 2447/* 0x0d40 */ restore %g0,%g0,%g0 2448/* 0x0d44 0 */ .type mont_mulf_noconv,2 2449/* 0x0d44 0 */ .size mont_mulf_noconv,(.-mont_mulf_noconv) 2450 2451! Begin Disassembling Stabs 2452 .xstabs ".stab.index","Xa ; O ; P ; V=3.1 ; R=Sun WorkShop 6 update 1 C 5.2 Patch 109513-02 2001/02/04",60,0,0,0 ! (/tmp/acompAAAnPa4q5:1) 2453 .xstabs ".stab.index","/home/ferenc/venus/userland/rsa; /ws/cpg-tools/SUNWspro/SC6.1/bin/../WS6U1/bin/cc -DRF_INLINE_MACROS -fast -xarch=v9 -xO5 -xstrconst -xdepend -Xa -xchip=ultra2 -KPIC -Wc,-Qrm-Qd -Wc,-Qrm-Qf -Wc,-assembly -V -c conv_v9.il -o mont_mulf.o mont_mulf.c -W0,-xp",52,0,0,0 ! (/tmp/acompAAAnPa4q5:2) 2454! End Disassembling Stabs 2455 2456! Begin Disassembling Ident 2457 .ident "cg: Sun WorkShop 6 update 1 Compiler Common 6.1 Patch 109505-04 2001/03/07" ! (NO SOURCE LINE) 2458 .ident "@(#)mont_mulf.c\t1.2\t01/09/24 SMI" ! (/tmp/acompAAAnPa4q5:4) 2459 .ident "@(#)types.h\t1.66\t00/02/14 SMI" ! (/tmp/acompAAAnPa4q5:5) 2460 .ident "@(#)isa_defs.h\t1.20\t99/05/04 SMI" ! (/tmp/acompAAAnPa4q5:6) 2461 .ident "@(#)feature_tests.h\t1.18\t99/07/26 SMI" ! (/tmp/acompAAAnPa4q5:7) 2462 .ident "@(#)machtypes.h\t1.13\t99/05/04 SMI" ! (/tmp/acompAAAnPa4q5:8) 2463 .ident "@(#)int_types.h\t1.6\t97/08/20 SMI" ! (/tmp/acompAAAnPa4q5:9) 2464 .ident "@(#)select.h\t1.16\t98/04/27 SMI" ! (/tmp/acompAAAnPa4q5:10) 2465 .ident "@(#)time.h\t2.66\t01/01/17 SMI" ! (/tmp/acompAAAnPa4q5:11) 2466 .ident "@(#)time.h\t1.39\t99/08/10 SMI" ! (/tmp/acompAAAnPa4q5:12) 2467 .ident "@(#)time_iso.h\t1.1\t99/08/09 SMI" ! (/tmp/acompAAAnPa4q5:13) 2468 .ident "@(#)time_impl.h\t1.5\t99/10/05 SMI" ! (/tmp/acompAAAnPa4q5:14) 2469 .ident "@(#)math.h\t2.10\t99/07/29 SMI" ! (/tmp/acompAAAnPa4q5:15) 2470 .ident "@(#)math_iso.h\t1.1\t99/07/30 SMI" ! (/tmp/acompAAAnPa4q5:16) 2471 .ident "@(#)floatingpoint.h\t2.5\t99/06/22 SMI" ! (/tmp/acompAAAnPa4q5:17) 2472 .ident "@(#)stdio_tag.h\t1.3\t98/04/20 SMI" ! (/tmp/acompAAAnPa4q5:18) 2473 .ident "@(#)ieeefp.h\t2.8 99/10/29" ! (/tmp/acompAAAnPa4q5:19) 2474 .ident "acomp: Sun WorkShop 6 update 1 C 5.2 Patch 109513-02 2001/02/04" ! (/tmp/acompAAAnPa4q5:47) 2475! End Disassembling Ident 2476