17c478bd9Sstevel@tonic-gate/*
27c478bd9Sstevel@tonic-gate * CDDL HEADER START
37c478bd9Sstevel@tonic-gate *
47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the
57c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only
67c478bd9Sstevel@tonic-gate * (the "License").  You may not use this file except in compliance
77c478bd9Sstevel@tonic-gate * with the License.
87c478bd9Sstevel@tonic-gate *
97c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
117c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions
127c478bd9Sstevel@tonic-gate * and limitations under the License.
137c478bd9Sstevel@tonic-gate *
147c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
157c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
177c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
187c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
197c478bd9Sstevel@tonic-gate *
207c478bd9Sstevel@tonic-gate * CDDL HEADER END
217c478bd9Sstevel@tonic-gate */
227c478bd9Sstevel@tonic-gate/*
237c478bd9Sstevel@tonic-gate * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
247c478bd9Sstevel@tonic-gate * Use is subject to license terms.
257c478bd9Sstevel@tonic-gate */
267c478bd9Sstevel@tonic-gate
277c478bd9Sstevel@tonic-gate#pragma ident	"%Z%%M%	%I%	%E% SMI"
287c478bd9Sstevel@tonic-gate
297c478bd9Sstevel@tonic-gate
307c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
317c478bd9Sstevel@tonic-gate	.file	"mont_mulf_asm_v8plus.s"
327c478bd9Sstevel@tonic-gate
337c478bd9Sstevel@tonic-gate/*
347c478bd9Sstevel@tonic-gate * This file is a result of compiling the mont_mulf.c file to generate an
357c478bd9Sstevel@tonic-gate * assembly output and then hand-editing that output to replace the
36*55fea89dSDan Cross * compiler-generated loop for the 512-bit case (nlen == 16) in the
377c478bd9Sstevel@tonic-gate * mont_mulf_noconv routine with a hand-crafted version.
387c478bd9Sstevel@tonic-gate * To compile this:
397c478bd9Sstevel@tonic-gate *
407c478bd9Sstevel@tonic-gate * cc -c -xarch=v8plus -KPIC mont_mulf_asm.s
417c478bd9Sstevel@tonic-gate *
427c478bd9Sstevel@tonic-gate * Note, this file does not support sparcv9 (64-bit).
437c478bd9Sstevel@tonic-gate */
447c478bd9Sstevel@tonic-gate
45*55fea89dSDan Cross
467c478bd9Sstevel@tonic-gate	.section	".rodata",#alloc
477c478bd9Sstevel@tonic-gate	.align	8
487c478bd9Sstevel@tonic-gate!
497c478bd9Sstevel@tonic-gate! CONSTANT POOL
507c478bd9Sstevel@tonic-gate!
517c478bd9Sstevel@tonic-gateTwoTo16:
527c478bd9Sstevel@tonic-gate	.word	1089470464
537c478bd9Sstevel@tonic-gate	.word	0
547c478bd9Sstevel@tonic-gate	.type	TwoTo16,#object
557c478bd9Sstevel@tonic-gate	.size	TwoTo16,8
567c478bd9Sstevel@tonic-gate!
577c478bd9Sstevel@tonic-gate! CONSTANT POOL
587c478bd9Sstevel@tonic-gate!
597c478bd9Sstevel@tonic-gateTwoToMinus16:
607c478bd9Sstevel@tonic-gate	.word	1055916032
617c478bd9Sstevel@tonic-gate	.word	0
627c478bd9Sstevel@tonic-gate	.type	TwoToMinus16,#object
637c478bd9Sstevel@tonic-gate	.size	TwoToMinus16,8
647c478bd9Sstevel@tonic-gate!
657c478bd9Sstevel@tonic-gate! CONSTANT POOL
667c478bd9Sstevel@tonic-gate!
677c478bd9Sstevel@tonic-gateZero:
687c478bd9Sstevel@tonic-gate	.word	0
697c478bd9Sstevel@tonic-gate	.word	0
707c478bd9Sstevel@tonic-gate	.type	Zero,#object
717c478bd9Sstevel@tonic-gate	.size	Zero,8
727c478bd9Sstevel@tonic-gate!
737c478bd9Sstevel@tonic-gate! CONSTANT POOL
747c478bd9Sstevel@tonic-gate!
757c478bd9Sstevel@tonic-gateTwoTo32:
767c478bd9Sstevel@tonic-gate	.word	1106247680
777c478bd9Sstevel@tonic-gate	.word	0
787c478bd9Sstevel@tonic-gate	.type	TwoTo32,#object
797c478bd9Sstevel@tonic-gate	.size	TwoTo32,8
807c478bd9Sstevel@tonic-gate!
817c478bd9Sstevel@tonic-gate! CONSTANT POOL
827c478bd9Sstevel@tonic-gate!
837c478bd9Sstevel@tonic-gateTwoToMinus32:
847c478bd9Sstevel@tonic-gate	.word	1039138816
857c478bd9Sstevel@tonic-gate	.word	0
867c478bd9Sstevel@tonic-gate	.type	TwoToMinus32,#object
877c478bd9Sstevel@tonic-gate	.size	TwoToMinus32,8
887c478bd9Sstevel@tonic-gate
897c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
907c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	4
917c478bd9Sstevel@tonic-gate!
927c478bd9Sstevel@tonic-gate! SUBROUTINE conv_d16_to_i32
937c478bd9Sstevel@tonic-gate!
947c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
957c478bd9Sstevel@tonic-gate
967c478bd9Sstevel@tonic-gate                       	.global conv_d16_to_i32
977c478bd9Sstevel@tonic-gate                       conv_d16_to_i32:
987c478bd9Sstevel@tonic-gate/* 000000	     */		save	%sp,-128,%sp
997c478bd9Sstevel@tonic-gate! FILE mont_mulf.c
1007c478bd9Sstevel@tonic-gate
1017c478bd9Sstevel@tonic-gate!    1		      !#define RF_INLINE_MACROS
1027c478bd9Sstevel@tonic-gate!    3		      !static const double TwoTo16=65536.0;
1037c478bd9Sstevel@tonic-gate!    4		      !static const double TwoToMinus16=1.0/65536.0;
1047c478bd9Sstevel@tonic-gate!    5		      !static const double Zero=0.0;
1057c478bd9Sstevel@tonic-gate!    6		      !static const double TwoTo32=65536.0*65536.0;
1067c478bd9Sstevel@tonic-gate!    7		      !static const double TwoToMinus32=1.0/(65536.0*65536.0);
1077c478bd9Sstevel@tonic-gate!    9		      !#ifdef RF_INLINE_MACROS
1087c478bd9Sstevel@tonic-gate!   11		      !double upper32(double);
1097c478bd9Sstevel@tonic-gate!   12		      !double lower32(double, double);
1107c478bd9Sstevel@tonic-gate!   13		      !double mod(double, double, double);
1117c478bd9Sstevel@tonic-gate!   15		      !#else
1127c478bd9Sstevel@tonic-gate!   17		      !static double upper32(double x)
1137c478bd9Sstevel@tonic-gate!   18		      !{
1147c478bd9Sstevel@tonic-gate!   19		      !  return floor(x*TwoToMinus32);
1157c478bd9Sstevel@tonic-gate!   20		      !}
1167c478bd9Sstevel@tonic-gate!   22		      !static double lower32(double x, double y)
1177c478bd9Sstevel@tonic-gate!   23		      !{
1187c478bd9Sstevel@tonic-gate!   24		      !  return x-TwoTo32*floor(x*TwoToMinus32);
1197c478bd9Sstevel@tonic-gate!   25		      !}
1207c478bd9Sstevel@tonic-gate!   27		      !static double mod(double x, double oneoverm, double m)
1217c478bd9Sstevel@tonic-gate!   28		      !{
1227c478bd9Sstevel@tonic-gate!   29		      !  return x-m*floor(x*oneoverm);
1237c478bd9Sstevel@tonic-gate!   30		      !}
1247c478bd9Sstevel@tonic-gate!   32		      !#endif
1257c478bd9Sstevel@tonic-gate!   35		      !static void cleanup(double *dt, int from, int tlen)
1267c478bd9Sstevel@tonic-gate!   36		      !{
1277c478bd9Sstevel@tonic-gate!   37		      ! int i;
1287c478bd9Sstevel@tonic-gate!   38		      ! double tmp,tmp1,x,x1;
1297c478bd9Sstevel@tonic-gate!   40		      ! tmp=tmp1=Zero;
1307c478bd9Sstevel@tonic-gate!   41		      ! /* original code **
1317c478bd9Sstevel@tonic-gate!   42		      ! for(i=2*from;i<2*tlen-2;i++)
1327c478bd9Sstevel@tonic-gate!   43		      !   {
1337c478bd9Sstevel@tonic-gate!   44		      !     x=dt[i];
1347c478bd9Sstevel@tonic-gate!   45		      !     dt[i]=lower32(x,Zero)+tmp1;
1357c478bd9Sstevel@tonic-gate!   46		      !     tmp1=tmp;
1367c478bd9Sstevel@tonic-gate!   47		      !     tmp=upper32(x);
1377c478bd9Sstevel@tonic-gate!   48		      !   }
1387c478bd9Sstevel@tonic-gate!   49		      ! dt[tlen-2]+=tmp1;
1397c478bd9Sstevel@tonic-gate!   50		      ! dt[tlen-1]+=tmp;
1407c478bd9Sstevel@tonic-gate!   51		      ! **end original code ***/
1417c478bd9Sstevel@tonic-gate!   52		      ! /* new code ***/
1427c478bd9Sstevel@tonic-gate!   53		      ! for(i=2*from;i<2*tlen;i+=2)
1437c478bd9Sstevel@tonic-gate!   54		      !   {
1447c478bd9Sstevel@tonic-gate!   55		      !     x=dt[i];
1457c478bd9Sstevel@tonic-gate!   56		      !     x1=dt[i+1];
1467c478bd9Sstevel@tonic-gate!   57		      !     dt[i]=lower32(x,Zero)+tmp;
1477c478bd9Sstevel@tonic-gate!   58		      !     dt[i+1]=lower32(x1,Zero)+tmp1;
1487c478bd9Sstevel@tonic-gate!   59		      !     tmp=upper32(x);
1497c478bd9Sstevel@tonic-gate!   60		      !     tmp1=upper32(x1);
1507c478bd9Sstevel@tonic-gate!   61		      !   }
1517c478bd9Sstevel@tonic-gate!   62		      !  /** end new code **/
1527c478bd9Sstevel@tonic-gate!   63		      !}
1537c478bd9Sstevel@tonic-gate!   66		      !void conv_d16_to_i32(unsigned int *i32, double *d16, long long *tmp, int ilen)
1547c478bd9Sstevel@tonic-gate!   67		      !{
1557c478bd9Sstevel@tonic-gate!   68		      !int i;
1567c478bd9Sstevel@tonic-gate!   69		      !long long t, t1, a, b, c, d;
1577c478bd9Sstevel@tonic-gate!   71		      ! t1=0;
1587c478bd9Sstevel@tonic-gate!   72		      ! a=(long long)d16[0];
1597c478bd9Sstevel@tonic-gate
1607c478bd9Sstevel@tonic-gate/* 0x0004	  72 */		ldd	[%i1],%f0
1617c478bd9Sstevel@tonic-gate/* 0x0008	  67 */		or	%g0,%i1,%o0
1627c478bd9Sstevel@tonic-gate
1637c478bd9Sstevel@tonic-gate!   73		      ! b=(long long)d16[1];
1647c478bd9Sstevel@tonic-gate!   74		      ! for(i=0; i<ilen-1; i++)
1657c478bd9Sstevel@tonic-gate
1667c478bd9Sstevel@tonic-gate/* 0x000c	  74 */		sub	%i3,1,%g2
1677c478bd9Sstevel@tonic-gate/* 0x0010	     */		cmp	%g2,0
1687c478bd9Sstevel@tonic-gate/* 0x0014	  71 */		or	%g0,0,%o4
1697c478bd9Sstevel@tonic-gate/* 0x0018	  72 */		fdtox	%f0,%f0
1707c478bd9Sstevel@tonic-gate/* 0x001c	     */		std	%f0,[%sp+120]
1717c478bd9Sstevel@tonic-gate/* 0x0020	  74 */		or	%g0,0,%o7
1727c478bd9Sstevel@tonic-gate/* 0x0024	  67 */		or	%g0,%i3,%o1
1737c478bd9Sstevel@tonic-gate/* 0x0028	     */		sub	%i3,2,%o2
1747c478bd9Sstevel@tonic-gate/* 0x002c	  73 */		ldd	[%o0+8],%f0
1757c478bd9Sstevel@tonic-gate/* 0x0030	  67 */		sethi	%hi(0xfc00),%o1
1767c478bd9Sstevel@tonic-gate/* 0x0034	     */		add	%o2,1,%g3
1777c478bd9Sstevel@tonic-gate/* 0x0038	     */		add	%o1,1023,%o1
1787c478bd9Sstevel@tonic-gate/* 0x003c	     */		or	%g0,%i0,%o5
1797c478bd9Sstevel@tonic-gate/* 0x0040	  73 */		fdtox	%f0,%f0
1807c478bd9Sstevel@tonic-gate/* 0x0044	     */		std	%f0,[%sp+112]
1817c478bd9Sstevel@tonic-gate/* 0x0048	     */		ldx	[%sp+112],%g1
1827c478bd9Sstevel@tonic-gate/* 0x004c	  72 */		ldx	[%sp+120],%g4
1837c478bd9Sstevel@tonic-gate/* 0x0050	  74 */		ble,pt	%icc,.L900000117
1847c478bd9Sstevel@tonic-gate/* 0x0054	     */		sethi	%hi(0xfc00),%g2
1857c478bd9Sstevel@tonic-gate/* 0x0058	  67 */		or	%g0,-1,%g2
1867c478bd9Sstevel@tonic-gate/* 0x005c	  74 */		cmp	%g3,3
1877c478bd9Sstevel@tonic-gate/* 0x0060	  67 */		srl	%g2,0,%o3
1887c478bd9Sstevel@tonic-gate/* 0x0064	  74 */		bl,pn	%icc,.L77000134
1897c478bd9Sstevel@tonic-gate/* 0x0068	     */		or	%g0,%o0,%g2
1907c478bd9Sstevel@tonic-gate
1917c478bd9Sstevel@tonic-gate!   75		      !   {
1927c478bd9Sstevel@tonic-gate!   76		      !     c=(long long)d16[2*i+2];
1937c478bd9Sstevel@tonic-gate
1947c478bd9Sstevel@tonic-gate/* 0x006c	  76 */		ldd	[%o0+16],%f0
1957c478bd9Sstevel@tonic-gate
1967c478bd9Sstevel@tonic-gate!   77		      !     t1+=a&0xffffffff;
1977c478bd9Sstevel@tonic-gate!   78		      !     t=(a>>32);
1987c478bd9Sstevel@tonic-gate!   79		      !     d=(long long)d16[2*i+3];
1997c478bd9Sstevel@tonic-gate!   80		      !     t1+=(b&0xffff)<<16;
2007c478bd9Sstevel@tonic-gate!   81		      !     t+=(b>>16)+(t1>>32);
2017c478bd9Sstevel@tonic-gate!   82		      !     i32[i]=t1&0xffffffff;
2027c478bd9Sstevel@tonic-gate!   83		      !     t1=t;
2037c478bd9Sstevel@tonic-gate!   84		      !     a=c;
2047c478bd9Sstevel@tonic-gate!   85		      !     b=d;
2057c478bd9Sstevel@tonic-gate
2067c478bd9Sstevel@tonic-gate/* 0x0070	  85 */		add	%o0,16,%g2
2077c478bd9Sstevel@tonic-gate/* 0x0074	  80 */		and	%g1,%o1,%o0
2087c478bd9Sstevel@tonic-gate/* 0x0078	     */		sllx	%o0,16,%g3
2097c478bd9Sstevel@tonic-gate/* 0x007c	  77 */		and	%g4,%o3,%o0
2107c478bd9Sstevel@tonic-gate/* 0x0080	  74 */		add	%o0,%g3,%o4
2117c478bd9Sstevel@tonic-gate/* 0x0084	  76 */		fdtox	%f0,%f0
2127c478bd9Sstevel@tonic-gate/* 0x0088	     */		std	%f0,[%sp+104]
2137c478bd9Sstevel@tonic-gate/* 0x008c	  82 */		and	%o4,%o3,%g5
2147c478bd9Sstevel@tonic-gate/* 0x0090	  79 */		ldd	[%g2+8],%f2
2157c478bd9Sstevel@tonic-gate/* 0x0094	  85 */		add	%o5,4,%o5
2167c478bd9Sstevel@tonic-gate/* 0x0098	  81 */		srax	%o4,32,%o4
2177c478bd9Sstevel@tonic-gate/* 0x009c	     */		stx	%o4,[%sp+112]
2187c478bd9Sstevel@tonic-gate/* 0x00a0	  79 */		fdtox	%f2,%f0
2197c478bd9Sstevel@tonic-gate/* 0x00a4	     */		std	%f0,[%sp+96]
2207c478bd9Sstevel@tonic-gate/* 0x00a8	  81 */		srax	%g1,16,%o0
2217c478bd9Sstevel@tonic-gate/* 0x00ac	     */		ldx	[%sp+112],%o7
2227c478bd9Sstevel@tonic-gate/* 0x00b0	  78 */		srax	%g4,32,%o4
2237c478bd9Sstevel@tonic-gate/* 0x00b4	  81 */		add	%o0,%o7,%g4
2247c478bd9Sstevel@tonic-gate/* 0x00b8	  85 */		or	%g0,1,%o7
2257c478bd9Sstevel@tonic-gate/* 0x00bc	  76 */		ldx	[%sp+104],%g3
2267c478bd9Sstevel@tonic-gate/* 0x00c0	  81 */		add	%o4,%g4,%o4
2277c478bd9Sstevel@tonic-gate/* 0x00c4	  79 */		ldx	[%sp+96],%g1
2287c478bd9Sstevel@tonic-gate/* 0x00c8	  82 */		st	%g5,[%o5-4]
2297c478bd9Sstevel@tonic-gate/* 0x00cc	  84 */		or	%g0,%g3,%g4
2307c478bd9Sstevel@tonic-gate                       .L900000112:
2317c478bd9Sstevel@tonic-gate/* 0x00d0	  76 */		ldd	[%g2+16],%f0
2327c478bd9Sstevel@tonic-gate/* 0x00d4	  85 */		add	%o7,1,%o7
2337c478bd9Sstevel@tonic-gate/* 0x00d8	     */		add	%o5,4,%o5
2347c478bd9Sstevel@tonic-gate/* 0x00dc	     */		cmp	%o7,%o2
2357c478bd9Sstevel@tonic-gate/* 0x00e0	     */		add	%g2,16,%g2
2367c478bd9Sstevel@tonic-gate/* 0x00e4	  76 */		fdtox	%f0,%f0
2377c478bd9Sstevel@tonic-gate/* 0x00e8	     */		std	%f0,[%sp+104]
2387c478bd9Sstevel@tonic-gate/* 0x00ec	  79 */		ldd	[%g2+8],%f0
2397c478bd9Sstevel@tonic-gate/* 0x00f0	     */		fdtox	%f0,%f0
2407c478bd9Sstevel@tonic-gate/* 0x00f4	     */		std	%f0,[%sp+96]
2417c478bd9Sstevel@tonic-gate/* 0x00f8	  80 */		and	%g1,%o1,%g3
2427c478bd9Sstevel@tonic-gate/* 0x00fc	     */		sllx	%g3,16,%g5
2437c478bd9Sstevel@tonic-gate/* 0x0100	  77 */		and	%g4,%o3,%g3
2447c478bd9Sstevel@tonic-gate/* 0x0104	  74 */		add	%g3,%g5,%g3
2457c478bd9Sstevel@tonic-gate/* 0x0108	  81 */		srax	%g1,16,%g1
2467c478bd9Sstevel@tonic-gate/* 0x010c	  74 */		add	%g3,%o4,%g3
2477c478bd9Sstevel@tonic-gate/* 0x0110	  81 */		srax	%g3,32,%o4
2487c478bd9Sstevel@tonic-gate/* 0x0114	     */		stx	%o4,[%sp+112]
2497c478bd9Sstevel@tonic-gate/* 0x0118	  76 */		ldx	[%sp+104],%g5
2507c478bd9Sstevel@tonic-gate/* 0x011c	  78 */		srax	%g4,32,%o4
2517c478bd9Sstevel@tonic-gate/* 0x0120	  81 */		ldx	[%sp+112],%g4
2527c478bd9Sstevel@tonic-gate/* 0x0124	     */		add	%g1,%g4,%g4
2537c478bd9Sstevel@tonic-gate/* 0x0128	  79 */		ldx	[%sp+96],%g1
2547c478bd9Sstevel@tonic-gate/* 0x012c	  81 */		add	%o4,%g4,%o4
2557c478bd9Sstevel@tonic-gate/* 0x0130	  82 */		and	%g3,%o3,%g3
2567c478bd9Sstevel@tonic-gate/* 0x0134	  84 */		or	%g0,%g5,%g4
2577c478bd9Sstevel@tonic-gate/* 0x0138	  85 */		ble,pt	%icc,.L900000112
2587c478bd9Sstevel@tonic-gate/* 0x013c	     */		st	%g3,[%o5-4]
2597c478bd9Sstevel@tonic-gate                       .L900000115:
2607c478bd9Sstevel@tonic-gate/* 0x0140	  85 */		ba	.L900000117
2617c478bd9Sstevel@tonic-gate/* 0x0144	     */		sethi	%hi(0xfc00),%g2
2627c478bd9Sstevel@tonic-gate                       .L77000134:
2637c478bd9Sstevel@tonic-gate/* 0x0148	  76 */		ldd	[%g2+16],%f0
2647c478bd9Sstevel@tonic-gate                       .L900000116:
2657c478bd9Sstevel@tonic-gate/* 0x014c	  77 */		and	%g4,%o3,%o0
2667c478bd9Sstevel@tonic-gate/* 0x0150	  80 */		and	%g1,%o1,%g3
2677c478bd9Sstevel@tonic-gate/* 0x0154	  76 */		fdtox	%f0,%f0
2687c478bd9Sstevel@tonic-gate/* 0x0158	  77 */		add	%o4,%o0,%o0
2697c478bd9Sstevel@tonic-gate/* 0x015c	  76 */		std	%f0,[%sp+104]
2707c478bd9Sstevel@tonic-gate/* 0x0160	  85 */		add	%o7,1,%o7
2717c478bd9Sstevel@tonic-gate/* 0x0164	  80 */		sllx	%g3,16,%o4
2727c478bd9Sstevel@tonic-gate/* 0x0168	  79 */		ldd	[%g2+24],%f2
2737c478bd9Sstevel@tonic-gate/* 0x016c	  85 */		add	%g2,16,%g2
2747c478bd9Sstevel@tonic-gate/* 0x0170	  80 */		add	%o0,%o4,%o0
2757c478bd9Sstevel@tonic-gate/* 0x0174	  85 */		cmp	%o7,%o2
2767c478bd9Sstevel@tonic-gate/* 0x0178	  82 */		and	%o0,%o3,%g3
2777c478bd9Sstevel@tonic-gate/* 0x017c	  79 */		fdtox	%f2,%f0
2787c478bd9Sstevel@tonic-gate/* 0x0180	     */		std	%f0,[%sp+96]
2797c478bd9Sstevel@tonic-gate/* 0x0184	  81 */		srax	%o0,32,%o0
2807c478bd9Sstevel@tonic-gate/* 0x0188	     */		stx	%o0,[%sp+112]
2817c478bd9Sstevel@tonic-gate/* 0x018c	  78 */		srax	%g4,32,%o4
2827c478bd9Sstevel@tonic-gate/* 0x0190	  79 */		ldx	[%sp+96],%o0
2837c478bd9Sstevel@tonic-gate/* 0x0194	  81 */		srax	%g1,16,%g5
2847c478bd9Sstevel@tonic-gate/* 0x0198	     */		ldx	[%sp+112],%g4
2857c478bd9Sstevel@tonic-gate/* 0x019c	  76 */		ldx	[%sp+104],%g1
2867c478bd9Sstevel@tonic-gate/* 0x01a0	  82 */		st	%g3,[%o5]
2877c478bd9Sstevel@tonic-gate/* 0x01a4	  81 */		add	%g5,%g4,%g4
2887c478bd9Sstevel@tonic-gate/* 0x01a8	  85 */		add	%o5,4,%o5
2897c478bd9Sstevel@tonic-gate/* 0x01ac	  81 */		add	%o4,%g4,%o4
2907c478bd9Sstevel@tonic-gate/* 0x01b0	  84 */		or	%g0,%g1,%g4
2917c478bd9Sstevel@tonic-gate/* 0x01b4	  85 */		or	%g0,%o0,%g1
2927c478bd9Sstevel@tonic-gate/* 0x01b8	     */		ble,a,pt	%icc,.L900000116
2937c478bd9Sstevel@tonic-gate/* 0x01bc	     */		ldd	[%g2+16],%f0
2947c478bd9Sstevel@tonic-gate                       .L77000127:
2957c478bd9Sstevel@tonic-gate
2967c478bd9Sstevel@tonic-gate!   86		      !   }
2977c478bd9Sstevel@tonic-gate!   87		      !     t1+=a&0xffffffff;
2987c478bd9Sstevel@tonic-gate!   88		      !     t=(a>>32);
2997c478bd9Sstevel@tonic-gate!   89		      !     t1+=(b&0xffff)<<16;
3007c478bd9Sstevel@tonic-gate!   90		      !     i32[i]=t1&0xffffffff;
3017c478bd9Sstevel@tonic-gate
3027c478bd9Sstevel@tonic-gate/* 0x01c0	  90 */		sethi	%hi(0xfc00),%g2
3037c478bd9Sstevel@tonic-gate                       .L900000117:
3047c478bd9Sstevel@tonic-gate/* 0x01c4	  90 */		or	%g0,-1,%g3
3057c478bd9Sstevel@tonic-gate/* 0x01c8	     */		add	%g2,1023,%g2
3067c478bd9Sstevel@tonic-gate/* 0x01cc	     */		srl	%g3,0,%g3
3077c478bd9Sstevel@tonic-gate/* 0x01d0	     */		and	%g1,%g2,%g2
3087c478bd9Sstevel@tonic-gate/* 0x01d4	     */		and	%g4,%g3,%g4
3097c478bd9Sstevel@tonic-gate/* 0x01d8	     */		sllx	%g2,16,%g2
3107c478bd9Sstevel@tonic-gate/* 0x01dc	     */		add	%o4,%g4,%g4
3117c478bd9Sstevel@tonic-gate/* 0x01e0	     */		add	%g4,%g2,%g2
3127c478bd9Sstevel@tonic-gate/* 0x01e4	     */		sll	%o7,2,%g4
3137c478bd9Sstevel@tonic-gate/* 0x01e8	     */		and	%g2,%g3,%g2
3147c478bd9Sstevel@tonic-gate/* 0x01ec	     */		st	%g2,[%i0+%g4]
315*55fea89dSDan Cross/* 0x01f0	     */		ret	! Result =
3167c478bd9Sstevel@tonic-gate/* 0x01f4	     */		restore	%g0,%g0,%g0
3177c478bd9Sstevel@tonic-gate/* 0x01f8	   0 */		.type	conv_d16_to_i32,2
3187c478bd9Sstevel@tonic-gate/* 0x01f8	     */		.size	conv_d16_to_i32,(.-conv_d16_to_i32)
3197c478bd9Sstevel@tonic-gate
3207c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
3217c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	8
3227c478bd9Sstevel@tonic-gate!
3237c478bd9Sstevel@tonic-gate! CONSTANT POOL
3247c478bd9Sstevel@tonic-gate!
3257c478bd9Sstevel@tonic-gate                       .L_const_seg_900000201:
3267c478bd9Sstevel@tonic-gate/* 000000	   0 */		.word	1127219200,0
3277c478bd9Sstevel@tonic-gate/* 0x0008	   0 */		.align	4
3287c478bd9Sstevel@tonic-gate/* 0x0008	     */		.skip	16
3297c478bd9Sstevel@tonic-gate!
3307c478bd9Sstevel@tonic-gate! SUBROUTINE conv_i32_to_d32
3317c478bd9Sstevel@tonic-gate!
3327c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
3337c478bd9Sstevel@tonic-gate
3347c478bd9Sstevel@tonic-gate                       	.global conv_i32_to_d32
3357c478bd9Sstevel@tonic-gate                       conv_i32_to_d32:
3367c478bd9Sstevel@tonic-gate/* 000000	     */		or	%g0,%o7,%g2
3377c478bd9Sstevel@tonic-gate/* 0x0004	     */		or	%g0,%o1,%g4
3387c478bd9Sstevel@tonic-gate                       .L900000210:
3397c478bd9Sstevel@tonic-gate/* 0x0008	     */		call	.+8
3407c478bd9Sstevel@tonic-gate/* 0x000c	     */		sethi	/*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000210-.)),%g3
3417c478bd9Sstevel@tonic-gate
3427c478bd9Sstevel@tonic-gate!   92		      !}
3437c478bd9Sstevel@tonic-gate!   94		      !void conv_i32_to_d32(double *d32, unsigned int *i32, int len)
3447c478bd9Sstevel@tonic-gate!   95		      !{
3457c478bd9Sstevel@tonic-gate!   96		      !int i;
3467c478bd9Sstevel@tonic-gate!   98		      !#pragma pipeloop(0)
3477c478bd9Sstevel@tonic-gate!   99		      ! for(i=0;i<len;i++) d32[i]=(double)(i32[i]);
3487c478bd9Sstevel@tonic-gate
3497c478bd9Sstevel@tonic-gate/* 0x0010	  99 */		or	%g0,0,%o5
3507c478bd9Sstevel@tonic-gate/* 0x0014	  95 */		add	%g3,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000210-.)),%g3
3517c478bd9Sstevel@tonic-gate/* 0x0018	     */		or	%g0,%o0,%g5
3527c478bd9Sstevel@tonic-gate/* 0x001c	     */		add	%g3,%o7,%g1
3537c478bd9Sstevel@tonic-gate/* 0x0020	     */		orcc	%g0,%o2,%g3
3547c478bd9Sstevel@tonic-gate/* 0x0024	  99 */		ble,pt	%icc,.L77000140
3557c478bd9Sstevel@tonic-gate/* 0x0028	     */		or	%g0,%g2,%o7
3567c478bd9Sstevel@tonic-gate/* 0x002c	     */		sethi	%hi(.L_const_seg_900000201),%g2
3577c478bd9Sstevel@tonic-gate/* 0x0030	     */		add	%g2,%lo(.L_const_seg_900000201),%g2
3587c478bd9Sstevel@tonic-gate/* 0x0034	     */		sub	%o2,1,%g3
3597c478bd9Sstevel@tonic-gate/* 0x0038	     */		ld	[%g1+%g2],%g2
3607c478bd9Sstevel@tonic-gate/* 0x003c	     */		cmp	%o2,9
3617c478bd9Sstevel@tonic-gate/* 0x0040	     */		bl,pn	%icc,.L77000144
3627c478bd9Sstevel@tonic-gate/* 0x0044	     */		ldd	[%g2],%f8
3637c478bd9Sstevel@tonic-gate/* 0x0048	     */		add	%o1,16,%g4
3647c478bd9Sstevel@tonic-gate/* 0x004c	     */		sub	%o2,5,%g1
3657c478bd9Sstevel@tonic-gate/* 0x0050	     */		ld	[%o1],%f7
3667c478bd9Sstevel@tonic-gate/* 0x0054	     */		or	%g0,4,%o5
3677c478bd9Sstevel@tonic-gate/* 0x0058	     */		ld	[%o1+4],%f5
3687c478bd9Sstevel@tonic-gate/* 0x005c	     */		ld	[%o1+8],%f3
3697c478bd9Sstevel@tonic-gate/* 0x0060	     */		fmovs	%f8,%f6
3707c478bd9Sstevel@tonic-gate/* 0x0064	     */		ld	[%o1+12],%f1
3717c478bd9Sstevel@tonic-gate                       .L900000205:
3727c478bd9Sstevel@tonic-gate/* 0x0068	     */		ld	[%g4],%f11
3737c478bd9Sstevel@tonic-gate/* 0x006c	     */		add	%o5,5,%o5
3747c478bd9Sstevel@tonic-gate/* 0x0070	     */		add	%g4,20,%g4
3757c478bd9Sstevel@tonic-gate/* 0x0074	     */		fsubd	%f6,%f8,%f6
3767c478bd9Sstevel@tonic-gate/* 0x0078	     */		std	%f6,[%g5]
3777c478bd9Sstevel@tonic-gate/* 0x007c	     */		cmp	%o5,%g1
3787c478bd9Sstevel@tonic-gate/* 0x0080	     */		add	%g5,40,%g5
3797c478bd9Sstevel@tonic-gate/* 0x0084	     */		fmovs	%f8,%f4
3807c478bd9Sstevel@tonic-gate/* 0x0088	     */		ld	[%g4-16],%f7
3817c478bd9Sstevel@tonic-gate/* 0x008c	     */		fsubd	%f4,%f8,%f12
3827c478bd9Sstevel@tonic-gate/* 0x0090	     */		fmovs	%f8,%f2
3837c478bd9Sstevel@tonic-gate/* 0x0094	     */		std	%f12,[%g5-32]
3847c478bd9Sstevel@tonic-gate/* 0x0098	     */		ld	[%g4-12],%f5
3857c478bd9Sstevel@tonic-gate/* 0x009c	     */		fsubd	%f2,%f8,%f12
3867c478bd9Sstevel@tonic-gate/* 0x00a0	     */		fmovs	%f8,%f0
3877c478bd9Sstevel@tonic-gate/* 0x00a4	     */		std	%f12,[%g5-24]
3887c478bd9Sstevel@tonic-gate/* 0x00a8	     */		ld	[%g4-8],%f3
3897c478bd9Sstevel@tonic-gate/* 0x00ac	     */		fsubd	%f0,%f8,%f12
3907c478bd9Sstevel@tonic-gate/* 0x00b0	     */		fmovs	%f8,%f10
3917c478bd9Sstevel@tonic-gate/* 0x00b4	     */		std	%f12,[%g5-16]
3927c478bd9Sstevel@tonic-gate/* 0x00b8	     */		ld	[%g4-4],%f1
3937c478bd9Sstevel@tonic-gate/* 0x00bc	     */		fsubd	%f10,%f8,%f10
3947c478bd9Sstevel@tonic-gate/* 0x00c0	     */		fmovs	%f8,%f6
3957c478bd9Sstevel@tonic-gate/* 0x00c4	     */		ble,pt	%icc,.L900000205
3967c478bd9Sstevel@tonic-gate/* 0x00c8	     */		std	%f10,[%g5-8]
3977c478bd9Sstevel@tonic-gate                       .L900000208:
3987c478bd9Sstevel@tonic-gate/* 0x00cc	     */		fmovs	%f8,%f4
3997c478bd9Sstevel@tonic-gate/* 0x00d0	     */		add	%g5,32,%g5
4007c478bd9Sstevel@tonic-gate/* 0x00d4	     */		cmp	%o5,%g3
4017c478bd9Sstevel@tonic-gate/* 0x00d8	     */		fmovs	%f8,%f2
4027c478bd9Sstevel@tonic-gate/* 0x00dc	     */		fmovs	%f8,%f0
4037c478bd9Sstevel@tonic-gate/* 0x00e0	     */		fsubd	%f6,%f8,%f6
4047c478bd9Sstevel@tonic-gate/* 0x00e4	     */		std	%f6,[%g5-32]
4057c478bd9Sstevel@tonic-gate/* 0x00e8	     */		fsubd	%f4,%f8,%f4
4067c478bd9Sstevel@tonic-gate/* 0x00ec	     */		std	%f4,[%g5-24]
4077c478bd9Sstevel@tonic-gate/* 0x00f0	     */		fsubd	%f2,%f8,%f2
4087c478bd9Sstevel@tonic-gate/* 0x00f4	     */		std	%f2,[%g5-16]
4097c478bd9Sstevel@tonic-gate/* 0x00f8	     */		fsubd	%f0,%f8,%f0
4107c478bd9Sstevel@tonic-gate/* 0x00fc	     */		bg,pn	%icc,.L77000140
4117c478bd9Sstevel@tonic-gate/* 0x0100	     */		std	%f0,[%g5-8]
4127c478bd9Sstevel@tonic-gate                       .L77000144:
4137c478bd9Sstevel@tonic-gate/* 0x0104	     */		ld	[%g4],%f1
4147c478bd9Sstevel@tonic-gate                       .L900000211:
4157c478bd9Sstevel@tonic-gate/* 0x0108	     */		ldd	[%g2],%f8
4167c478bd9Sstevel@tonic-gate/* 0x010c	     */		add	%o5,1,%o5
4177c478bd9Sstevel@tonic-gate/* 0x0110	     */		add	%g4,4,%g4
4187c478bd9Sstevel@tonic-gate/* 0x0114	     */		cmp	%o5,%g3
4197c478bd9Sstevel@tonic-gate/* 0x0118	     */		fmovs	%f8,%f0
4207c478bd9Sstevel@tonic-gate/* 0x011c	     */		fsubd	%f0,%f8,%f0
4217c478bd9Sstevel@tonic-gate/* 0x0120	     */		std	%f0,[%g5]
4227c478bd9Sstevel@tonic-gate/* 0x0124	     */		add	%g5,8,%g5
4237c478bd9Sstevel@tonic-gate/* 0x0128	     */		ble,a,pt	%icc,.L900000211
4247c478bd9Sstevel@tonic-gate/* 0x012c	     */		ld	[%g4],%f1
4257c478bd9Sstevel@tonic-gate                       .L77000140:
426*55fea89dSDan Cross/* 0x0130	     */		retl	! Result =
4277c478bd9Sstevel@tonic-gate/* 0x0134	     */		nop
4287c478bd9Sstevel@tonic-gate/* 0x0138	   0 */		.type	conv_i32_to_d32,2
4297c478bd9Sstevel@tonic-gate/* 0x0138	     */		.size	conv_i32_to_d32,(.-conv_i32_to_d32)
4307c478bd9Sstevel@tonic-gate
4317c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
4327c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	8
4337c478bd9Sstevel@tonic-gate!
4347c478bd9Sstevel@tonic-gate! CONSTANT POOL
4357c478bd9Sstevel@tonic-gate!
4367c478bd9Sstevel@tonic-gate                       .L_const_seg_900000301:
4377c478bd9Sstevel@tonic-gate/* 000000	   0 */		.word	1127219200,0
4387c478bd9Sstevel@tonic-gate/* 0x0008	   0 */		.align	4
4397c478bd9Sstevel@tonic-gate/* 0x0008	     */		.skip	16
4407c478bd9Sstevel@tonic-gate!
4417c478bd9Sstevel@tonic-gate! SUBROUTINE conv_i32_to_d16
4427c478bd9Sstevel@tonic-gate!
4437c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
4447c478bd9Sstevel@tonic-gate
4457c478bd9Sstevel@tonic-gate                       	.global conv_i32_to_d16
4467c478bd9Sstevel@tonic-gate                       conv_i32_to_d16:
4477c478bd9Sstevel@tonic-gate/* 000000	     */		save	%sp,-104,%sp
4487c478bd9Sstevel@tonic-gate                       .L900000310:
4497c478bd9Sstevel@tonic-gate/* 0x0004	     */		call	.+8
4507c478bd9Sstevel@tonic-gate/* 0x0008	     */		sethi	/*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000310-.)),%g3
4517c478bd9Sstevel@tonic-gate/* 0x000c	     */		orcc	%g0,%i2,%o0
4527c478bd9Sstevel@tonic-gate/* 0x0010	     */		add	%g3,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000310-.)),%g3
4537c478bd9Sstevel@tonic-gate
4547c478bd9Sstevel@tonic-gate!  100		      !}
4557c478bd9Sstevel@tonic-gate!  103		      !void conv_i32_to_d16(double *d16, unsigned int *i32, int len)
4567c478bd9Sstevel@tonic-gate!  104		      !{
4577c478bd9Sstevel@tonic-gate!  105		      !int i;
4587c478bd9Sstevel@tonic-gate!  106		      !unsigned int a;
4597c478bd9Sstevel@tonic-gate!  108		      !#pragma pipeloop(0)
4607c478bd9Sstevel@tonic-gate!  109		      ! for(i=0;i<len;i++)
4617c478bd9Sstevel@tonic-gate
4627c478bd9Sstevel@tonic-gate/* 0x0014	 109 */		ble,pt	%icc,.L77000150
4637c478bd9Sstevel@tonic-gate/* 0x0018	     */		add	%g3,%o7,%o2
4647c478bd9Sstevel@tonic-gate
4657c478bd9Sstevel@tonic-gate!  110		      !   {
4667c478bd9Sstevel@tonic-gate!  111		      !     a=i32[i];
4677c478bd9Sstevel@tonic-gate!  112		      !     d16[2*i]=(double)(a&0xffff);
4687c478bd9Sstevel@tonic-gate!  113		      !     d16[2*i+1]=(double)(a>>16);
4697c478bd9Sstevel@tonic-gate
4707c478bd9Sstevel@tonic-gate/* 0x001c	 113 */		sethi	%hi(.L_const_seg_900000301),%g2
4717c478bd9Sstevel@tonic-gate/* 0x0020	 109 */		sub	%o0,1,%o5
4727c478bd9Sstevel@tonic-gate/* 0x0024	 113 */		add	%g2,%lo(.L_const_seg_900000301),%o1
4737c478bd9Sstevel@tonic-gate/* 0x0028	     */		ld	[%o2+%o1],%o3
4747c478bd9Sstevel@tonic-gate/* 0x002c	 109 */		sethi	%hi(0xfc00),%o0
4757c478bd9Sstevel@tonic-gate/* 0x0030	     */		add	%o5,1,%g2
4767c478bd9Sstevel@tonic-gate/* 0x0034	     */		or	%g0,0,%g1
4777c478bd9Sstevel@tonic-gate/* 0x0038	     */		cmp	%g2,3
4787c478bd9Sstevel@tonic-gate/* 0x003c	 112 */		ldd	[%o3],%f0
4797c478bd9Sstevel@tonic-gate/* 0x0040	     */		or	%g0,%i1,%o7
4807c478bd9Sstevel@tonic-gate/* 0x0044	     */		add	%o0,1023,%o4
4817c478bd9Sstevel@tonic-gate/* 0x0048	     */		or	%g0,%i0,%g3
4827c478bd9Sstevel@tonic-gate/* 0x004c	 109 */		bl,pn	%icc,.L77000154
4837c478bd9Sstevel@tonic-gate/* 0x0050	     */		add	%o7,4,%o0
4847c478bd9Sstevel@tonic-gate/* 0x0054	 111 */		ld	[%o0-4],%o1
4857c478bd9Sstevel@tonic-gate/* 0x0058	   0 */		or	%g0,%o0,%o7
4867c478bd9Sstevel@tonic-gate/* 0x005c	 113 */		or	%g0,1,%g1
4877c478bd9Sstevel@tonic-gate/* 0x0060	 112 */		and	%o1,%o4,%o0
4887c478bd9Sstevel@tonic-gate                       .L900000306:
4897c478bd9Sstevel@tonic-gate/* 0x0064	 112 */		st	%o0,[%sp+96]
4907c478bd9Sstevel@tonic-gate/* 0x0068	 113 */		add	%g1,1,%g1
4917c478bd9Sstevel@tonic-gate/* 0x006c	     */		add	%g3,16,%g3
4927c478bd9Sstevel@tonic-gate/* 0x0070	     */		cmp	%g1,%o5
4937c478bd9Sstevel@tonic-gate/* 0x0074	     */		add	%o7,4,%o7
4947c478bd9Sstevel@tonic-gate/* 0x0078	 112 */		ld	[%sp+96],%f3
4957c478bd9Sstevel@tonic-gate/* 0x007c	     */		fmovs	%f0,%f2
4967c478bd9Sstevel@tonic-gate/* 0x0080	     */		fsubd	%f2,%f0,%f2
4977c478bd9Sstevel@tonic-gate/* 0x0084	 113 */		srl	%o1,16,%o0
4987c478bd9Sstevel@tonic-gate/* 0x0088	 112 */		std	%f2,[%g3-16]
4997c478bd9Sstevel@tonic-gate/* 0x008c	 113 */		st	%o0,[%sp+92]
5007c478bd9Sstevel@tonic-gate/* 0x0090	     */		ld	[%sp+92],%f3
5017c478bd9Sstevel@tonic-gate/* 0x0094	 111 */		ld	[%o7-4],%o1
5027c478bd9Sstevel@tonic-gate/* 0x0098	 113 */		fmovs	%f0,%f2
5037c478bd9Sstevel@tonic-gate/* 0x009c	     */		fsubd	%f2,%f0,%f2
5047c478bd9Sstevel@tonic-gate/* 0x00a0	 112 */		and	%o1,%o4,%o0
5057c478bd9Sstevel@tonic-gate/* 0x00a4	 113 */		ble,pt	%icc,.L900000306
5067c478bd9Sstevel@tonic-gate/* 0x00a8	     */		std	%f2,[%g3-8]
5077c478bd9Sstevel@tonic-gate                       .L900000309:
5087c478bd9Sstevel@tonic-gate/* 0x00ac	 112 */		st	%o0,[%sp+96]
5097c478bd9Sstevel@tonic-gate/* 0x00b0	     */		fmovs	%f0,%f2
5107c478bd9Sstevel@tonic-gate/* 0x00b4	 113 */		add	%g3,16,%g3
5117c478bd9Sstevel@tonic-gate/* 0x00b8	     */		srl	%o1,16,%o0
5127c478bd9Sstevel@tonic-gate/* 0x00bc	 112 */		ld	[%sp+96],%f3
5137c478bd9Sstevel@tonic-gate/* 0x00c0	     */		fsubd	%f2,%f0,%f2
5147c478bd9Sstevel@tonic-gate/* 0x00c4	     */		std	%f2,[%g3-16]
5157c478bd9Sstevel@tonic-gate/* 0x00c8	 113 */		st	%o0,[%sp+92]
5167c478bd9Sstevel@tonic-gate/* 0x00cc	     */		fmovs	%f0,%f2
5177c478bd9Sstevel@tonic-gate/* 0x00d0	     */		ld	[%sp+92],%f3
5187c478bd9Sstevel@tonic-gate/* 0x00d4	     */		fsubd	%f2,%f0,%f0
5197c478bd9Sstevel@tonic-gate/* 0x00d8	     */		std	%f0,[%g3-8]
520*55fea89dSDan Cross/* 0x00dc	     */		ret	! Result =
5217c478bd9Sstevel@tonic-gate/* 0x00e0	     */		restore	%g0,%g0,%g0
5227c478bd9Sstevel@tonic-gate                       .L77000154:
5237c478bd9Sstevel@tonic-gate/* 0x00e4	 111 */		ld	[%o7],%o0
5247c478bd9Sstevel@tonic-gate                       .L900000311:
5257c478bd9Sstevel@tonic-gate/* 0x00e8	 112 */		and	%o0,%o4,%o1
5267c478bd9Sstevel@tonic-gate/* 0x00ec	     */		st	%o1,[%sp+96]
5277c478bd9Sstevel@tonic-gate/* 0x00f0	 113 */		add	%g1,1,%g1
5287c478bd9Sstevel@tonic-gate/* 0x00f4	 112 */		ldd	[%o3],%f0
5297c478bd9Sstevel@tonic-gate/* 0x00f8	 113 */		srl	%o0,16,%o0
5307c478bd9Sstevel@tonic-gate/* 0x00fc	     */		add	%o7,4,%o7
5317c478bd9Sstevel@tonic-gate/* 0x0100	     */		cmp	%g1,%o5
5327c478bd9Sstevel@tonic-gate/* 0x0104	 112 */		fmovs	%f0,%f2
5337c478bd9Sstevel@tonic-gate/* 0x0108	     */		ld	[%sp+96],%f3
5347c478bd9Sstevel@tonic-gate/* 0x010c	     */		fsubd	%f2,%f0,%f2
5357c478bd9Sstevel@tonic-gate/* 0x0110	     */		std	%f2,[%g3]
5367c478bd9Sstevel@tonic-gate/* 0x0114	 113 */		st	%o0,[%sp+92]
5377c478bd9Sstevel@tonic-gate/* 0x0118	     */		fmovs	%f0,%f2
5387c478bd9Sstevel@tonic-gate/* 0x011c	     */		ld	[%sp+92],%f3
5397c478bd9Sstevel@tonic-gate/* 0x0120	     */		fsubd	%f2,%f0,%f0
5407c478bd9Sstevel@tonic-gate/* 0x0124	     */		std	%f0,[%g3+8]
5417c478bd9Sstevel@tonic-gate/* 0x0128	     */		add	%g3,16,%g3
5427c478bd9Sstevel@tonic-gate/* 0x012c	     */		ble,a,pt	%icc,.L900000311
5437c478bd9Sstevel@tonic-gate/* 0x0130	     */		ld	[%o7],%o0
5447c478bd9Sstevel@tonic-gate                       .L77000150:
545*55fea89dSDan Cross/* 0x0134	     */		ret	! Result =
5467c478bd9Sstevel@tonic-gate/* 0x0138	     */		restore	%g0,%g0,%g0
5477c478bd9Sstevel@tonic-gate/* 0x013c	   0 */		.type	conv_i32_to_d16,2
5487c478bd9Sstevel@tonic-gate/* 0x013c	     */		.size	conv_i32_to_d16,(.-conv_i32_to_d16)
5497c478bd9Sstevel@tonic-gate
5507c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
5517c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	8
5527c478bd9Sstevel@tonic-gate!
5537c478bd9Sstevel@tonic-gate! CONSTANT POOL
5547c478bd9Sstevel@tonic-gate!
5557c478bd9Sstevel@tonic-gate                       .L_const_seg_900000401:
5567c478bd9Sstevel@tonic-gate/* 000000	   0 */		.word	1127219200,0
5577c478bd9Sstevel@tonic-gate/* 0x0008	   0 */		.align	4
5587c478bd9Sstevel@tonic-gate/* 0x0008	     */		.skip	16
5597c478bd9Sstevel@tonic-gate!
5607c478bd9Sstevel@tonic-gate! SUBROUTINE conv_i32_to_d32_and_d16
5617c478bd9Sstevel@tonic-gate!
5627c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
5637c478bd9Sstevel@tonic-gate
5647c478bd9Sstevel@tonic-gate                       	.global conv_i32_to_d32_and_d16
5657c478bd9Sstevel@tonic-gate                       conv_i32_to_d32_and_d16:
5667c478bd9Sstevel@tonic-gate/* 000000	     */		save	%sp,-104,%sp
5677c478bd9Sstevel@tonic-gate                       .L900000413:
5687c478bd9Sstevel@tonic-gate/* 0x0004	     */		call	.+8
5697c478bd9Sstevel@tonic-gate/* 0x0008	     */		sethi	/*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000413-.)),%g4
5707c478bd9Sstevel@tonic-gate
5717c478bd9Sstevel@tonic-gate!  114		      !   }
5727c478bd9Sstevel@tonic-gate!  115		      !}
573*55fea89dSDan Cross!  118		      !void i16_to_d16_and_d32x4(const double * /*1/(2^16)*/,
5747c478bd9Sstevel@tonic-gate!  119		      !			  const double * /* 2^16*/, const double * /* 0 */,
5757c478bd9Sstevel@tonic-gate!  120		      !			  double * /*result16*/, double * /* result32 */,
5767c478bd9Sstevel@tonic-gate!  121		      !			  float *  /*source - should be */
5777c478bd9Sstevel@tonic-gate!  122		      !		          unsigned int* converted to float* */);
578*55fea89dSDan Cross!  126		      !void conv_i32_to_d32_and_d16(double *d32, double *d16,
5797c478bd9Sstevel@tonic-gate!  127		      !			     unsigned int *i32, int len)
5807c478bd9Sstevel@tonic-gate!  128		      !{
5817c478bd9Sstevel@tonic-gate!  129		      !int i;
5827c478bd9Sstevel@tonic-gate!  130		      !unsigned int a;
5837c478bd9Sstevel@tonic-gate!  132		      !#pragma pipeloop(0)
5847c478bd9Sstevel@tonic-gate!  133		      ! for(i=0;i<len-3;i+=4)
5857c478bd9Sstevel@tonic-gate
5867c478bd9Sstevel@tonic-gate/* 0x000c	 133 */		sub	%i3,3,%g2
5877c478bd9Sstevel@tonic-gate/* 0x0010	     */		cmp	%g2,0
5887c478bd9Sstevel@tonic-gate/* 0x0014	 128 */		add	%g4,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000413-.)),%g4
5897c478bd9Sstevel@tonic-gate/* 0x0018	     */		or	%g0,%i2,%g5
5907c478bd9Sstevel@tonic-gate
5917c478bd9Sstevel@tonic-gate!  134		      !   {
5927c478bd9Sstevel@tonic-gate!  135		      !     i16_to_d16_and_d32x4(&TwoToMinus16, &TwoTo16, &Zero,
5937c478bd9Sstevel@tonic-gate!  136		      !			  &(d16[2*i]), &(d32[i]), (float *)(&(i32[i])));
5947c478bd9Sstevel@tonic-gate
5957c478bd9Sstevel@tonic-gate/* 0x001c	 136 */		sethi	%hi(Zero),%g2
5967c478bd9Sstevel@tonic-gate/* 0x0020	 128 */		add	%g4,%o7,%o2
5977c478bd9Sstevel@tonic-gate/* 0x0024	 133 */		or	%g0,0,%g1
5987c478bd9Sstevel@tonic-gate/* 0x0028	 128 */		or	%g0,%i0,%i4
5997c478bd9Sstevel@tonic-gate/* 0x002c	 136 */		add	%g2,%lo(Zero),%g2
6007c478bd9Sstevel@tonic-gate/* 0x0030	 133 */		ble,pt	%icc,.L900000416
6017c478bd9Sstevel@tonic-gate/* 0x0034	     */		cmp	%g1,%i3
6027c478bd9Sstevel@tonic-gate/* 0x0038	     */		or	%g0,%g5,%o4
6037c478bd9Sstevel@tonic-gate/* 0x003c	 136 */		ld	[%o2+%g2],%o1
6047c478bd9Sstevel@tonic-gate/* 0x0040	 133 */		sub	%i3,4,%o3
6057c478bd9Sstevel@tonic-gate/* 0x0044	     */		or	%g0,0,%o7
6067c478bd9Sstevel@tonic-gate/* 0x0048	     */		or	%g0,0,%o5
6077c478bd9Sstevel@tonic-gate/* 0x004c	 136 */		or	%g0,%o4,%g4
6087c478bd9Sstevel@tonic-gate                       .L900000415:
6097c478bd9Sstevel@tonic-gate/* 0x0050	     */		ldd	[%o1],%f2
6107c478bd9Sstevel@tonic-gate/* 0x0054	 136 */		add	%i4,%o7,%g2
6117c478bd9Sstevel@tonic-gate/* 0x0058	     */		add	%i1,%o5,%g3
6127c478bd9Sstevel@tonic-gate/* 0x005c	     */		ldd	[%o1-8],%f0
6137c478bd9Sstevel@tonic-gate/* 0x0060	     */		add	%g1,4,%g1
6147c478bd9Sstevel@tonic-gate/* 0x0064	     */		add	%o4,16,%o4
6157c478bd9Sstevel@tonic-gate/* 0x0068	     */		fmovd	%f2,%f14
6167c478bd9Sstevel@tonic-gate/* 0x006c	     */		ld	[%g4],%f15
6177c478bd9Sstevel@tonic-gate/* 0x0070	     */		cmp	%g1,%o3
6187c478bd9Sstevel@tonic-gate/* 0x0074	     */		fmovd	%f2,%f10
6197c478bd9Sstevel@tonic-gate/* 0x0078	     */		ld	[%g4+4],%f11
6207c478bd9Sstevel@tonic-gate/* 0x007c	     */		fmovd	%f2,%f6
6217c478bd9Sstevel@tonic-gate/* 0x0080	     */		ld	[%g4+8],%f7
6227c478bd9Sstevel@tonic-gate/* 0x0084	     */		ld	[%g4+12],%f3
6237c478bd9Sstevel@tonic-gate/* 0x0088	     */		fxtod	%f14,%f14
6247c478bd9Sstevel@tonic-gate/* 0x008c	     */		fxtod	%f10,%f10
6257c478bd9Sstevel@tonic-gate/* 0x0090	     */		ldd	[%o1-16],%f16
6267c478bd9Sstevel@tonic-gate/* 0x0094	     */		fxtod	%f6,%f6
6277c478bd9Sstevel@tonic-gate/* 0x0098	     */		std	%f14,[%i4+%o7]
6287c478bd9Sstevel@tonic-gate/* 0x009c	     */		add	%o7,32,%o7
6297c478bd9Sstevel@tonic-gate/* 0x00a0	     */		fxtod	%f2,%f2
6307c478bd9Sstevel@tonic-gate/* 0x00a4	     */		fmuld	%f0,%f14,%f12
6317c478bd9Sstevel@tonic-gate/* 0x00a8	     */		std	%f10,[%g2+8]
6327c478bd9Sstevel@tonic-gate/* 0x00ac	     */		fmuld	%f0,%f10,%f8
6337c478bd9Sstevel@tonic-gate/* 0x00b0	     */		std	%f6,[%g2+16]
6347c478bd9Sstevel@tonic-gate/* 0x00b4	     */		fmuld	%f0,%f6,%f4
6357c478bd9Sstevel@tonic-gate/* 0x00b8	     */		std	%f2,[%g2+24]
6367c478bd9Sstevel@tonic-gate/* 0x00bc	     */		fmuld	%f0,%f2,%f0
6377c478bd9Sstevel@tonic-gate/* 0x00c0	     */		fdtox	%f12,%f12
6387c478bd9Sstevel@tonic-gate/* 0x00c4	     */		fdtox	%f8,%f8
6397c478bd9Sstevel@tonic-gate/* 0x00c8	     */		fdtox	%f4,%f4
6407c478bd9Sstevel@tonic-gate/* 0x00cc	     */		fdtox	%f0,%f0
6417c478bd9Sstevel@tonic-gate/* 0x00d0	     */		fxtod	%f12,%f12
6427c478bd9Sstevel@tonic-gate/* 0x00d4	     */		std	%f12,[%g3+8]
6437c478bd9Sstevel@tonic-gate/* 0x00d8	     */		fxtod	%f8,%f8
6447c478bd9Sstevel@tonic-gate/* 0x00dc	     */		std	%f8,[%g3+24]
6457c478bd9Sstevel@tonic-gate/* 0x00e0	     */		fxtod	%f4,%f4
6467c478bd9Sstevel@tonic-gate/* 0x00e4	     */		std	%f4,[%g3+40]
6477c478bd9Sstevel@tonic-gate/* 0x00e8	     */		fxtod	%f0,%f0
6487c478bd9Sstevel@tonic-gate/* 0x00ec	     */		fmuld	%f12,%f16,%f12
6497c478bd9Sstevel@tonic-gate/* 0x00f0	     */		std	%f0,[%g3+56]
6507c478bd9Sstevel@tonic-gate/* 0x00f4	     */		fmuld	%f8,%f16,%f8
6517c478bd9Sstevel@tonic-gate/* 0x00f8	     */		fmuld	%f4,%f16,%f4
6527c478bd9Sstevel@tonic-gate/* 0x00fc	     */		fmuld	%f0,%f16,%f0
6537c478bd9Sstevel@tonic-gate/* 0x0100	     */		fsubd	%f14,%f12,%f12
6547c478bd9Sstevel@tonic-gate/* 0x0104	     */		std	%f12,[%i1+%o5]
6557c478bd9Sstevel@tonic-gate/* 0x0108	     */		fsubd	%f10,%f8,%f8
6567c478bd9Sstevel@tonic-gate/* 0x010c	     */		std	%f8,[%g3+16]
6577c478bd9Sstevel@tonic-gate/* 0x0110	     */		add	%o5,64,%o5
6587c478bd9Sstevel@tonic-gate/* 0x0114	     */		fsubd	%f6,%f4,%f4
6597c478bd9Sstevel@tonic-gate/* 0x0118	     */		std	%f4,[%g3+32]
6607c478bd9Sstevel@tonic-gate/* 0x011c	     */		fsubd	%f2,%f0,%f0
6617c478bd9Sstevel@tonic-gate/* 0x0120	     */		std	%f0,[%g3+48]
6627c478bd9Sstevel@tonic-gate/* 0x0124	     */		ble,pt	%icc,.L900000415
6637c478bd9Sstevel@tonic-gate/* 0x0128	     */		or	%g0,%o4,%g4
6647c478bd9Sstevel@tonic-gate                       .L77000159:
6657c478bd9Sstevel@tonic-gate
6667c478bd9Sstevel@tonic-gate!  137		      !   }
6677c478bd9Sstevel@tonic-gate!  138		      ! for(;i<len;i++)
6687c478bd9Sstevel@tonic-gate
6697c478bd9Sstevel@tonic-gate/* 0x012c	 138 */		cmp	%g1,%i3
6707c478bd9Sstevel@tonic-gate                       .L900000416:
6717c478bd9Sstevel@tonic-gate/* 0x0130	 138 */		bge,pt	%icc,.L77000164
6727c478bd9Sstevel@tonic-gate/* 0x0134	     */		nop
6737c478bd9Sstevel@tonic-gate
6747c478bd9Sstevel@tonic-gate!  139		      !   {
6757c478bd9Sstevel@tonic-gate!  140		      !     a=i32[i];
6767c478bd9Sstevel@tonic-gate!  141		      !     d32[i]=(double)(i32[i]);
6777c478bd9Sstevel@tonic-gate!  142		      !     d16[2*i]=(double)(a&0xffff);
6787c478bd9Sstevel@tonic-gate!  143		      !     d16[2*i+1]=(double)(a>>16);
6797c478bd9Sstevel@tonic-gate
6807c478bd9Sstevel@tonic-gate/* 0x0138	 143 */		sethi	%hi(.L_const_seg_900000401),%g2
6817c478bd9Sstevel@tonic-gate/* 0x013c	     */		add	%g2,%lo(.L_const_seg_900000401),%o1
6827c478bd9Sstevel@tonic-gate/* 0x0140	 138 */		sethi	%hi(0xfc00),%o0
6837c478bd9Sstevel@tonic-gate/* 0x0144	     */		ld	[%o2+%o1],%o2
6847c478bd9Sstevel@tonic-gate/* 0x0148	     */		sll	%g1,2,%o3
6857c478bd9Sstevel@tonic-gate/* 0x014c	     */		sub	%i3,%g1,%g3
6867c478bd9Sstevel@tonic-gate/* 0x0150	     */		sll	%g1,3,%g2
6877c478bd9Sstevel@tonic-gate/* 0x0154	     */		add	%o0,1023,%o4
6887c478bd9Sstevel@tonic-gate/* 0x0158	 141 */		ldd	[%o2],%f0
6897c478bd9Sstevel@tonic-gate/* 0x015c	     */		add	%g5,%o3,%o0
6907c478bd9Sstevel@tonic-gate/* 0x0160	 138 */		cmp	%g3,3
6917c478bd9Sstevel@tonic-gate/* 0x0164	     */		add	%i4,%g2,%o3
6927c478bd9Sstevel@tonic-gate/* 0x0168	     */		sub	%i3,1,%o1
6937c478bd9Sstevel@tonic-gate/* 0x016c	     */		sll	%g1,4,%g4
6947c478bd9Sstevel@tonic-gate/* 0x0170	     */		bl,pn	%icc,.L77000161
6957c478bd9Sstevel@tonic-gate/* 0x0174	     */		add	%i1,%g4,%o5
6967c478bd9Sstevel@tonic-gate/* 0x0178	 141 */		ld	[%o0],%f3
6977c478bd9Sstevel@tonic-gate/* 0x017c	 143 */		add	%o3,8,%o3
6987c478bd9Sstevel@tonic-gate/* 0x0180	 140 */		ld	[%o0],%o7
6997c478bd9Sstevel@tonic-gate/* 0x0184	 143 */		add	%o5,16,%o5
7007c478bd9Sstevel@tonic-gate/* 0x0188	     */		add	%g1,1,%g1
7017c478bd9Sstevel@tonic-gate/* 0x018c	 141 */		fmovs	%f0,%f2
7027c478bd9Sstevel@tonic-gate/* 0x0190	 143 */		add	%o0,4,%o0
7037c478bd9Sstevel@tonic-gate/* 0x0194	 142 */		and	%o7,%o4,%g2
7047c478bd9Sstevel@tonic-gate/* 0x0198	 141 */		fsubd	%f2,%f0,%f2
7057c478bd9Sstevel@tonic-gate/* 0x019c	     */		std	%f2,[%o3-8]
7067c478bd9Sstevel@tonic-gate/* 0x01a0	 143 */		srl	%o7,16,%o7
7077c478bd9Sstevel@tonic-gate/* 0x01a4	 142 */		st	%g2,[%sp+96]
7087c478bd9Sstevel@tonic-gate/* 0x01a8	     */		fmovs	%f0,%f2
7097c478bd9Sstevel@tonic-gate/* 0x01ac	     */		ld	[%sp+96],%f3
7107c478bd9Sstevel@tonic-gate/* 0x01b0	     */		fsubd	%f2,%f0,%f2
7117c478bd9Sstevel@tonic-gate/* 0x01b4	     */		std	%f2,[%o5-16]
7127c478bd9Sstevel@tonic-gate/* 0x01b8	 143 */		st	%o7,[%sp+92]
7137c478bd9Sstevel@tonic-gate/* 0x01bc	     */		fmovs	%f0,%f2
7147c478bd9Sstevel@tonic-gate/* 0x01c0	     */		ld	[%sp+92],%f3
7157c478bd9Sstevel@tonic-gate/* 0x01c4	     */		fsubd	%f2,%f0,%f2
7167c478bd9Sstevel@tonic-gate/* 0x01c8	     */		std	%f2,[%o5-8]
7177c478bd9Sstevel@tonic-gate                       .L900000409:
7187c478bd9Sstevel@tonic-gate/* 0x01cc	 141 */		ld	[%o0],%f3
7197c478bd9Sstevel@tonic-gate/* 0x01d0	 143 */		add	%g1,2,%g1
7207c478bd9Sstevel@tonic-gate/* 0x01d4	     */		add	%o5,32,%o5
7217c478bd9Sstevel@tonic-gate/* 0x01d8	 140 */		ld	[%o0],%o7
7227c478bd9Sstevel@tonic-gate/* 0x01dc	 143 */		cmp	%g1,%o1
7237c478bd9Sstevel@tonic-gate/* 0x01e0	     */		add	%o3,16,%o3
7247c478bd9Sstevel@tonic-gate/* 0x01e4	 141 */		fmovs	%f0,%f2
7257c478bd9Sstevel@tonic-gate/* 0x01e8	     */		fsubd	%f2,%f0,%f2
7267c478bd9Sstevel@tonic-gate/* 0x01ec	     */		std	%f2,[%o3-16]
7277c478bd9Sstevel@tonic-gate/* 0x01f0	 142 */		and	%o7,%o4,%g2
7287c478bd9Sstevel@tonic-gate/* 0x01f4	     */		st	%g2,[%sp+96]
7297c478bd9Sstevel@tonic-gate/* 0x01f8	     */		ld	[%sp+96],%f3
7307c478bd9Sstevel@tonic-gate/* 0x01fc	     */		fmovs	%f0,%f2
7317c478bd9Sstevel@tonic-gate/* 0x0200	     */		fsubd	%f2,%f0,%f2
7327c478bd9Sstevel@tonic-gate/* 0x0204	 143 */		srl	%o7,16,%o7
7337c478bd9Sstevel@tonic-gate/* 0x0208	 142 */		std	%f2,[%o5-32]
7347c478bd9Sstevel@tonic-gate/* 0x020c	 143 */		st	%o7,[%sp+92]
7357c478bd9Sstevel@tonic-gate/* 0x0210	     */		ld	[%sp+92],%f3
7367c478bd9Sstevel@tonic-gate/* 0x0214	     */		fmovs	%f0,%f2
7377c478bd9Sstevel@tonic-gate/* 0x0218	     */		fsubd	%f2,%f0,%f2
7387c478bd9Sstevel@tonic-gate/* 0x021c	     */		std	%f2,[%o5-24]
7397c478bd9Sstevel@tonic-gate/* 0x0220	     */		add	%o0,4,%o0
7407c478bd9Sstevel@tonic-gate/* 0x0224	 141 */		ld	[%o0],%f3
7417c478bd9Sstevel@tonic-gate/* 0x0228	 140 */		ld	[%o0],%o7
7427c478bd9Sstevel@tonic-gate/* 0x022c	 141 */		fmovs	%f0,%f2
7437c478bd9Sstevel@tonic-gate/* 0x0230	     */		fsubd	%f2,%f0,%f2
7447c478bd9Sstevel@tonic-gate/* 0x0234	     */		std	%f2,[%o3-8]
7457c478bd9Sstevel@tonic-gate/* 0x0238	 142 */		and	%o7,%o4,%g2
7467c478bd9Sstevel@tonic-gate/* 0x023c	     */		st	%g2,[%sp+96]
7477c478bd9Sstevel@tonic-gate/* 0x0240	     */		ld	[%sp+96],%f3
7487c478bd9Sstevel@tonic-gate/* 0x0244	     */		fmovs	%f0,%f2
7497c478bd9Sstevel@tonic-gate/* 0x0248	     */		fsubd	%f2,%f0,%f2
7507c478bd9Sstevel@tonic-gate/* 0x024c	 143 */		srl	%o7,16,%o7
7517c478bd9Sstevel@tonic-gate/* 0x0250	 142 */		std	%f2,[%o5-16]
7527c478bd9Sstevel@tonic-gate/* 0x0254	 143 */		st	%o7,[%sp+92]
7537c478bd9Sstevel@tonic-gate/* 0x0258	     */		ld	[%sp+92],%f3
7547c478bd9Sstevel@tonic-gate/* 0x025c	     */		fmovs	%f0,%f2
7557c478bd9Sstevel@tonic-gate/* 0x0260	     */		fsubd	%f2,%f0,%f2
7567c478bd9Sstevel@tonic-gate/* 0x0264	     */		std	%f2,[%o5-8]
7577c478bd9Sstevel@tonic-gate/* 0x0268	     */		bl,pt	%icc,.L900000409
7587c478bd9Sstevel@tonic-gate/* 0x026c	     */		add	%o0,4,%o0
7597c478bd9Sstevel@tonic-gate                       .L900000412:
7607c478bd9Sstevel@tonic-gate/* 0x0270	 143 */		cmp	%g1,%i3
7617c478bd9Sstevel@tonic-gate/* 0x0274	     */		bge,pn	%icc,.L77000164
7627c478bd9Sstevel@tonic-gate/* 0x0278	     */		nop
7637c478bd9Sstevel@tonic-gate                       .L77000161:
7647c478bd9Sstevel@tonic-gate/* 0x027c	 141 */		ld	[%o0],%f3
7657c478bd9Sstevel@tonic-gate                       .L900000414:
7667c478bd9Sstevel@tonic-gate/* 0x0280	 141 */		ldd	[%o2],%f0
7677c478bd9Sstevel@tonic-gate/* 0x0284	 143 */		add	%g1,1,%g1
7687c478bd9Sstevel@tonic-gate/* 0x0288	 140 */		ld	[%o0],%o1
7697c478bd9Sstevel@tonic-gate/* 0x028c	 143 */		add	%o0,4,%o0
7707c478bd9Sstevel@tonic-gate/* 0x0290	     */		cmp	%g1,%i3
7717c478bd9Sstevel@tonic-gate/* 0x0294	 141 */		fmovs	%f0,%f2
7727c478bd9Sstevel@tonic-gate/* 0x0298	 142 */		and	%o1,%o4,%o7
7737c478bd9Sstevel@tonic-gate/* 0x029c	 141 */		fsubd	%f2,%f0,%f2
7747c478bd9Sstevel@tonic-gate/* 0x02a0	     */		std	%f2,[%o3]
7757c478bd9Sstevel@tonic-gate/* 0x02a4	 143 */		srl	%o1,16,%o1
7767c478bd9Sstevel@tonic-gate/* 0x02a8	 142 */		st	%o7,[%sp+96]
7777c478bd9Sstevel@tonic-gate/* 0x02ac	 143 */		add	%o3,8,%o3
7787c478bd9Sstevel@tonic-gate/* 0x02b0	 142 */		fmovs	%f0,%f2
7797c478bd9Sstevel@tonic-gate/* 0x02b4	     */		ld	[%sp+96],%f3
7807c478bd9Sstevel@tonic-gate/* 0x02b8	     */		fsubd	%f2,%f0,%f2
7817c478bd9Sstevel@tonic-gate/* 0x02bc	     */		std	%f2,[%o5]
7827c478bd9Sstevel@tonic-gate/* 0x02c0	 143 */		st	%o1,[%sp+92]
7837c478bd9Sstevel@tonic-gate/* 0x02c4	     */		fmovs	%f0,%f2
7847c478bd9Sstevel@tonic-gate/* 0x02c8	     */		ld	[%sp+92],%f3
7857c478bd9Sstevel@tonic-gate/* 0x02cc	     */		fsubd	%f2,%f0,%f0
7867c478bd9Sstevel@tonic-gate/* 0x02d0	     */		std	%f0,[%o5+8]
7877c478bd9Sstevel@tonic-gate/* 0x02d4	     */		add	%o5,16,%o5
7887c478bd9Sstevel@tonic-gate/* 0x02d8	     */		bl,a,pt	%icc,.L900000414
7897c478bd9Sstevel@tonic-gate/* 0x02dc	     */		ld	[%o0],%f3
7907c478bd9Sstevel@tonic-gate                       .L77000164:
791*55fea89dSDan Cross/* 0x02e0	     */		ret	! Result =
7927c478bd9Sstevel@tonic-gate/* 0x02e4	     */		restore	%g0,%g0,%g0
7937c478bd9Sstevel@tonic-gate/* 0x02e8	   0 */		.type	conv_i32_to_d32_and_d16,2
7947c478bd9Sstevel@tonic-gate/* 0x02e8	     */		.size	conv_i32_to_d32_and_d16,(.-conv_i32_to_d32_and_d16)
7957c478bd9Sstevel@tonic-gate
7967c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
7977c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	4
7987c478bd9Sstevel@tonic-gate!
7997c478bd9Sstevel@tonic-gate! SUBROUTINE adjust_montf_result
8007c478bd9Sstevel@tonic-gate!
8017c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
8027c478bd9Sstevel@tonic-gate
8037c478bd9Sstevel@tonic-gate                       	.global adjust_montf_result
8047c478bd9Sstevel@tonic-gate                       adjust_montf_result:
8057c478bd9Sstevel@tonic-gate
8067c478bd9Sstevel@tonic-gate!  144		      !   }
8077c478bd9Sstevel@tonic-gate!  145		      !}
8087c478bd9Sstevel@tonic-gate!  148		      !void adjust_montf_result(unsigned int *i32, unsigned int *nint, int len)
8097c478bd9Sstevel@tonic-gate!  149		      !{
8107c478bd9Sstevel@tonic-gate!  150		      !long long acc;
8117c478bd9Sstevel@tonic-gate!  151		      !int i;
8127c478bd9Sstevel@tonic-gate!  153		      ! if(i32[len]>0) i=-1;
8137c478bd9Sstevel@tonic-gate
8147c478bd9Sstevel@tonic-gate/* 000000	 153 */		sll	%o2,2,%g1
8157c478bd9Sstevel@tonic-gate/* 0x0004	     */		or	%g0,-1,%g3
8167c478bd9Sstevel@tonic-gate/* 0x0008	     */		ld	[%o0+%g1],%g1
8177c478bd9Sstevel@tonic-gate/* 0x000c	     */		cmp	%g1,0
8187c478bd9Sstevel@tonic-gate/* 0x0010	     */		bleu,pn	%icc,.L77000175
8197c478bd9Sstevel@tonic-gate/* 0x0014	     */		or	%g0,%o1,%o3
8207c478bd9Sstevel@tonic-gate/* 0x0018	     */		ba	.L900000511
8217c478bd9Sstevel@tonic-gate/* 0x001c	     */		cmp	%g3,0
8227c478bd9Sstevel@tonic-gate                       .L77000175:
8237c478bd9Sstevel@tonic-gate
8247c478bd9Sstevel@tonic-gate!  154		      ! else
8257c478bd9Sstevel@tonic-gate!  155		      !   {
8267c478bd9Sstevel@tonic-gate!  156		      !     for(i=len-1; i>=0; i--)
8277c478bd9Sstevel@tonic-gate
8287c478bd9Sstevel@tonic-gate/* 0x0020	 156 */		subcc	%o2,1,%g3
8297c478bd9Sstevel@tonic-gate/* 0x0024	     */		bneg,pt	%icc,.L900000511
8307c478bd9Sstevel@tonic-gate/* 0x0028	     */		cmp	%g3,0
8317c478bd9Sstevel@tonic-gate/* 0x002c	     */		sll	%g3,2,%g1
8327c478bd9Sstevel@tonic-gate/* 0x0030	     */		add	%o0,%g1,%g2
8337c478bd9Sstevel@tonic-gate/* 0x0034	     */		add	%o1,%g1,%g1
8347c478bd9Sstevel@tonic-gate
8357c478bd9Sstevel@tonic-gate!  157		      !       {
8367c478bd9Sstevel@tonic-gate!  158		      !	 if(i32[i]!=nint[i]) break;
8377c478bd9Sstevel@tonic-gate
8387c478bd9Sstevel@tonic-gate/* 0x0038	 158 */		ld	[%g1],%g5
8397c478bd9Sstevel@tonic-gate                       .L900000510:
8407c478bd9Sstevel@tonic-gate/* 0x003c	 158 */		ld	[%g2],%o5
8417c478bd9Sstevel@tonic-gate/* 0x0040	     */		sub	%g1,4,%g1
8427c478bd9Sstevel@tonic-gate/* 0x0044	     */		sub	%g2,4,%g2
8437c478bd9Sstevel@tonic-gate/* 0x0048	     */		cmp	%o5,%g5
8447c478bd9Sstevel@tonic-gate/* 0x004c	     */		bne,pn	%icc,.L77000182
8457c478bd9Sstevel@tonic-gate/* 0x0050	     */		nop
8467c478bd9Sstevel@tonic-gate/* 0x0054	     */		subcc	%g3,1,%g3
8477c478bd9Sstevel@tonic-gate/* 0x0058	     */		bpos,a,pt	%icc,.L900000510
8487c478bd9Sstevel@tonic-gate/* 0x005c	     */		ld	[%g1],%g5
8497c478bd9Sstevel@tonic-gate                       .L77000182:
8507c478bd9Sstevel@tonic-gate
8517c478bd9Sstevel@tonic-gate!  159		      !       }
8527c478bd9Sstevel@tonic-gate!  160		      !   }
8537c478bd9Sstevel@tonic-gate!  161		      ! if((i<0)||(i32[i]>nint[i]))
8547c478bd9Sstevel@tonic-gate
8557c478bd9Sstevel@tonic-gate/* 0x0060	 161 */		cmp	%g3,0
8567c478bd9Sstevel@tonic-gate                       .L900000511:
8577c478bd9Sstevel@tonic-gate/* 0x0064	 161 */		bl,pn	%icc,.L77000198
8587c478bd9Sstevel@tonic-gate/* 0x0068	     */		sll	%g3,2,%g2
8597c478bd9Sstevel@tonic-gate/* 0x006c	     */		ld	[%o1+%g2],%g1
8607c478bd9Sstevel@tonic-gate/* 0x0070	     */		ld	[%o0+%g2],%g2
8617c478bd9Sstevel@tonic-gate/* 0x0074	     */		cmp	%g2,%g1
8627c478bd9Sstevel@tonic-gate/* 0x0078	     */		bleu,pt	%icc,.L77000191
8637c478bd9Sstevel@tonic-gate/* 0x007c	     */		nop
8647c478bd9Sstevel@tonic-gate                       .L77000198:
8657c478bd9Sstevel@tonic-gate
8667c478bd9Sstevel@tonic-gate!  162		      !   {
8677c478bd9Sstevel@tonic-gate!  163		      !     acc=0;
8687c478bd9Sstevel@tonic-gate!  164		      !     for(i=0;i<len;i++)
8697c478bd9Sstevel@tonic-gate
8707c478bd9Sstevel@tonic-gate/* 0x0080	 164 */		cmp	%o2,0
8717c478bd9Sstevel@tonic-gate/* 0x0084	     */		ble,pt	%icc,.L77000191
8727c478bd9Sstevel@tonic-gate/* 0x0088	     */		nop
8737c478bd9Sstevel@tonic-gate/* 0x008c	 161 */		or	%g0,-1,%g2
8747c478bd9Sstevel@tonic-gate/* 0x0090	     */		sub	%o2,1,%g4
8757c478bd9Sstevel@tonic-gate/* 0x0094	     */		srl	%g2,0,%g3
8767c478bd9Sstevel@tonic-gate/* 0x0098	 163 */		or	%g0,0,%g5
8777c478bd9Sstevel@tonic-gate/* 0x009c	 164 */		or	%g0,0,%o5
8787c478bd9Sstevel@tonic-gate/* 0x00a0	 161 */		or	%g0,%o0,%o4
8797c478bd9Sstevel@tonic-gate/* 0x00a4	     */		cmp	%o2,3
8807c478bd9Sstevel@tonic-gate/* 0x00a8	     */		add	%o1,4,%g2
8817c478bd9Sstevel@tonic-gate/* 0x00ac	 164 */		bl,pn	%icc,.L77000199
8827c478bd9Sstevel@tonic-gate/* 0x00b0	     */		add	%o0,8,%g1
8837c478bd9Sstevel@tonic-gate
8847c478bd9Sstevel@tonic-gate!  165		      !       {
8857c478bd9Sstevel@tonic-gate!  166		      !	 acc=acc+(unsigned long long)(i32[i])-(unsigned long long)(nint[i]);
8867c478bd9Sstevel@tonic-gate
8877c478bd9Sstevel@tonic-gate/* 0x00b4	 166 */		ld	[%o0],%o2
8887c478bd9Sstevel@tonic-gate/* 0x00b8	   0 */		or	%g0,%g2,%o3
8897c478bd9Sstevel@tonic-gate/* 0x00bc	 166 */		ld	[%o1],%o1
8907c478bd9Sstevel@tonic-gate/* 0x00c0	   0 */		or	%g0,%g1,%o4
8917c478bd9Sstevel@tonic-gate
8927c478bd9Sstevel@tonic-gate!  167		      !	 i32[i]=acc&0xffffffff;
8937c478bd9Sstevel@tonic-gate!  168		      !	 acc=acc>>32;
8947c478bd9Sstevel@tonic-gate
8957c478bd9Sstevel@tonic-gate/* 0x00c4	 168 */		or	%g0,2,%o5
8967c478bd9Sstevel@tonic-gate/* 0x00c8	 166 */		ld	[%o0+4],%g1
8977c478bd9Sstevel@tonic-gate/* 0x00cc	 164 */		sub	%o2,%o1,%o2
8987c478bd9Sstevel@tonic-gate/* 0x00d0	     */		or	%g0,%o2,%g5
8997c478bd9Sstevel@tonic-gate/* 0x00d4	 167 */		and	%o2,%g3,%o2
9007c478bd9Sstevel@tonic-gate/* 0x00d8	     */		st	%o2,[%o0]
9017c478bd9Sstevel@tonic-gate/* 0x00dc	 168 */		srax	%g5,32,%g5
9027c478bd9Sstevel@tonic-gate                       .L900000505:
9037c478bd9Sstevel@tonic-gate/* 0x00e0	 166 */		ld	[%o3],%o2
9047c478bd9Sstevel@tonic-gate/* 0x00e4	 168 */		add	%o5,1,%o5
9057c478bd9Sstevel@tonic-gate/* 0x00e8	     */		add	%o3,4,%o3
9067c478bd9Sstevel@tonic-gate/* 0x00ec	     */		cmp	%o5,%g4
9077c478bd9Sstevel@tonic-gate/* 0x00f0	     */		add	%o4,4,%o4
9087c478bd9Sstevel@tonic-gate/* 0x00f4	 164 */		sub	%g1,%o2,%g1
9097c478bd9Sstevel@tonic-gate/* 0x00f8	     */		add	%g1,%g5,%g5
9107c478bd9Sstevel@tonic-gate/* 0x00fc	 167 */		and	%g5,%g3,%o2
9117c478bd9Sstevel@tonic-gate/* 0x0100	 166 */		ld	[%o4-4],%g1
9127c478bd9Sstevel@tonic-gate/* 0x0104	 167 */		st	%o2,[%o4-8]
9137c478bd9Sstevel@tonic-gate/* 0x0108	 168 */		ble,pt	%icc,.L900000505
9147c478bd9Sstevel@tonic-gate/* 0x010c	     */		srax	%g5,32,%g5
9157c478bd9Sstevel@tonic-gate                       .L900000508:
9167c478bd9Sstevel@tonic-gate/* 0x0110	 166 */		ld	[%o3],%g2
9177c478bd9Sstevel@tonic-gate/* 0x0114	 164 */		sub	%g1,%g2,%g1
9187c478bd9Sstevel@tonic-gate/* 0x0118	     */		add	%g1,%g5,%g1
9197c478bd9Sstevel@tonic-gate/* 0x011c	 167 */		and	%g1,%g3,%g2
920*55fea89dSDan Cross/* 0x0120	     */		retl	! Result =
9217c478bd9Sstevel@tonic-gate/* 0x0124	     */		st	%g2,[%o4-4]
9227c478bd9Sstevel@tonic-gate                       .L77000199:
9237c478bd9Sstevel@tonic-gate/* 0x0128	 166 */		ld	[%o4],%g1
9247c478bd9Sstevel@tonic-gate                       .L900000509:
9257c478bd9Sstevel@tonic-gate/* 0x012c	 166 */		ld	[%o3],%g2
9267c478bd9Sstevel@tonic-gate/* 0x0130	     */		add	%g5,%g1,%g1
9277c478bd9Sstevel@tonic-gate/* 0x0134	 168 */		add	%o5,1,%o5
9287c478bd9Sstevel@tonic-gate/* 0x0138	     */		add	%o3,4,%o3
9297c478bd9Sstevel@tonic-gate/* 0x013c	     */		cmp	%o5,%g4
9307c478bd9Sstevel@tonic-gate/* 0x0140	 166 */		sub	%g1,%g2,%g1
9317c478bd9Sstevel@tonic-gate/* 0x0144	 167 */		and	%g1,%g3,%g2
9327c478bd9Sstevel@tonic-gate/* 0x0148	     */		st	%g2,[%o4]
9337c478bd9Sstevel@tonic-gate/* 0x014c	 168 */		add	%o4,4,%o4
9347c478bd9Sstevel@tonic-gate/* 0x0150	     */		srax	%g1,32,%g5
9357c478bd9Sstevel@tonic-gate/* 0x0154	     */		ble,a,pt	%icc,.L900000509
9367c478bd9Sstevel@tonic-gate/* 0x0158	     */		ld	[%o4],%g1
9377c478bd9Sstevel@tonic-gate                       .L77000191:
938*55fea89dSDan Cross/* 0x015c	     */		retl	! Result =
9397c478bd9Sstevel@tonic-gate/* 0x0160	     */		nop
9407c478bd9Sstevel@tonic-gate/* 0x0164	   0 */		.type	adjust_montf_result,2
9417c478bd9Sstevel@tonic-gate/* 0x0164	     */		.size	adjust_montf_result,(.-adjust_montf_result)
9427c478bd9Sstevel@tonic-gate
9437c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
9447c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	4
9457c478bd9Sstevel@tonic-gate/* 000000	     */		.skip	16
9467c478bd9Sstevel@tonic-gate!
9477c478bd9Sstevel@tonic-gate! SUBROUTINE mont_mulf_noconv
9487c478bd9Sstevel@tonic-gate!
9497c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
9507c478bd9Sstevel@tonic-gate
9517c478bd9Sstevel@tonic-gate                       	.global mont_mulf_noconv
9527c478bd9Sstevel@tonic-gate                       mont_mulf_noconv:
9537c478bd9Sstevel@tonic-gate/* 000000	     */		save	%sp,-144,%sp
9547c478bd9Sstevel@tonic-gate                       .L900000644:
9557c478bd9Sstevel@tonic-gate/* 0x0004	     */		call	.+8
9567c478bd9Sstevel@tonic-gate/* 0x0008	     */		sethi	/*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000644-.)),%g4
9577c478bd9Sstevel@tonic-gate
9587c478bd9Sstevel@tonic-gate!  169		      !       }
9597c478bd9Sstevel@tonic-gate!  170		      !   }
9607c478bd9Sstevel@tonic-gate!  171		      !}
9617c478bd9Sstevel@tonic-gate!  175		      !void cleanup(double *dt, int from, int tlen);
9627c478bd9Sstevel@tonic-gate!  177		      !/*
9637c478bd9Sstevel@tonic-gate!  178		      !** the lengths of the input arrays should be at least the following:
9647c478bd9Sstevel@tonic-gate!  179		      !** result[nlen+1], dm1[nlen], dm2[2*nlen+1], dt[4*nlen+2], dn[nlen], nint[nlen]
9657c478bd9Sstevel@tonic-gate!  180		      !** all of them should be different from one another
9667c478bd9Sstevel@tonic-gate!  181		      !**
9677c478bd9Sstevel@tonic-gate!  182		      !*/
9687c478bd9Sstevel@tonic-gate!  183		      !void mont_mulf_noconv(unsigned int *result,
9697c478bd9Sstevel@tonic-gate!  184		      !		     double *dm1, double *dm2, double *dt,
9707c478bd9Sstevel@tonic-gate!  185		      !		     double *dn, unsigned int *nint,
9717c478bd9Sstevel@tonic-gate!  186		      !		     int nlen, double dn0)
9727c478bd9Sstevel@tonic-gate!  187		      !{
9737c478bd9Sstevel@tonic-gate!  188		      ! int i, j, jj;
9747c478bd9Sstevel@tonic-gate!  189		      ! int tmp;
9757c478bd9Sstevel@tonic-gate!  190		      ! double digit, m2j, nextm2j, a, b;
9767c478bd9Sstevel@tonic-gate!  191		      ! double *dptmp, *pdm1, *pdm2, *pdn, *pdtj, pdn_0, pdm1_0;
9777c478bd9Sstevel@tonic-gate!  193		      ! pdm1=&(dm1[0]);
9787c478bd9Sstevel@tonic-gate!  194		      ! pdm2=&(dm2[0]);
9797c478bd9Sstevel@tonic-gate!  195		      ! pdn=&(dn[0]);
9807c478bd9Sstevel@tonic-gate!  196		      ! pdm2[2*nlen]=Zero;
9817c478bd9Sstevel@tonic-gate
9827c478bd9Sstevel@tonic-gate/* 0x000c	 196 */		sethi	%hi(Zero),%g2
9837c478bd9Sstevel@tonic-gate/* 0x0010	     */		ld	[%fp+92],%o0
9847c478bd9Sstevel@tonic-gate/* 0x0014	 187 */		add	%g4,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000644-.)),%g4
9857c478bd9Sstevel@tonic-gate/* 0x0018	 196 */		add	%g2,%lo(Zero),%g2
9867c478bd9Sstevel@tonic-gate/* 0x001c	 187 */		ldd	[%fp+96],%f2
9877c478bd9Sstevel@tonic-gate/* 0x0020	     */		add	%g4,%o7,%o3
9887c478bd9Sstevel@tonic-gate/* 0x0024	     */		st	%i0,[%fp+68]
9897c478bd9Sstevel@tonic-gate/* 0x0028	     */		or	%g0,%i3,%o1
9907c478bd9Sstevel@tonic-gate/* 0x002c	 196 */		ld	[%o3+%g2],%g3
9917c478bd9Sstevel@tonic-gate/* 0x0030	     */		sll	%o0,4,%g2
9927c478bd9Sstevel@tonic-gate/* 0x0034	 187 */		or	%g0,%i1,%g4
9937c478bd9Sstevel@tonic-gate/* 0x0038	     */		fmovd	%f2,%f16
9947c478bd9Sstevel@tonic-gate/* 0x003c	     */		st	%i5,[%fp+88]
9957c478bd9Sstevel@tonic-gate/* 0x0040	     */		or	%g0,%o1,%g5
9967c478bd9Sstevel@tonic-gate/* 0x0044	     */		or	%g0,%i2,%o2
9977c478bd9Sstevel@tonic-gate/* 0x0048	 196 */		ldd	[%g3],%f0
9987c478bd9Sstevel@tonic-gate/* 0x004c	     */		or	%g0,%o0,%g1
9997c478bd9Sstevel@tonic-gate
10007c478bd9Sstevel@tonic-gate!  198		      ! if (nlen!=16)
10017c478bd9Sstevel@tonic-gate
10027c478bd9Sstevel@tonic-gate/* 0x0050	 198 */		cmp	%o0,16
10037c478bd9Sstevel@tonic-gate/* 0x0054	     */		be,pn	%icc,.L77000289
10047c478bd9Sstevel@tonic-gate/* 0x0058	     */		std	%f0,[%o2+%g2]
10057c478bd9Sstevel@tonic-gate
10067c478bd9Sstevel@tonic-gate!  199		      !   {
10077c478bd9Sstevel@tonic-gate!  200		      !     for(i=0;i<4*nlen+2;i++) dt[i]=Zero;
10087c478bd9Sstevel@tonic-gate
10097c478bd9Sstevel@tonic-gate/* 0x005c	 200 */		sll	%o0,2,%g2
10107c478bd9Sstevel@tonic-gate/* 0x0060	 187 */		or	%g0,%i4,%i0
10117c478bd9Sstevel@tonic-gate/* 0x0064	 196 */		sll	%o0,1,%o7
10127c478bd9Sstevel@tonic-gate/* 0x0068	 200 */		add	%g2,2,%o2
10137c478bd9Sstevel@tonic-gate/* 0x006c	     */		cmp	%o2,0
10147c478bd9Sstevel@tonic-gate/* 0x0070	 196 */		or	%g0,%i2,%i1
10157c478bd9Sstevel@tonic-gate/* 0x0074	 200 */		ble,a,pt	%icc,.L900000658
10167c478bd9Sstevel@tonic-gate/* 0x0078	     */		ldd	[%g4],%f0
10177c478bd9Sstevel@tonic-gate
10187c478bd9Sstevel@tonic-gate!  202		      !     a=dt[0]=pdm1[0]*pdm2[0];
10197c478bd9Sstevel@tonic-gate!  203		      !     digit=mod(lower32(a,Zero)*dn0,TwoToMinus16,TwoTo16);
10207c478bd9Sstevel@tonic-gate!  205		      !     pdtj=&(dt[0]);
10217c478bd9Sstevel@tonic-gate!  206		      !     for(j=jj=0;j<2*nlen;j++,jj++,pdtj++)
10227c478bd9Sstevel@tonic-gate!  207		      !       {
10237c478bd9Sstevel@tonic-gate!  208		      !	 m2j=pdm2[j];
10247c478bd9Sstevel@tonic-gate!  209		      !	 a=pdtj[0]+pdn[0]*digit;
10257c478bd9Sstevel@tonic-gate!  210		      !	 b=pdtj[1]+pdm1[0]*pdm2[j+1]+a*TwoToMinus16;
10267c478bd9Sstevel@tonic-gate!  211		      !	 pdtj[1]=b;
10277c478bd9Sstevel@tonic-gate!  213		      !#pragma pipeloop(0)
10287c478bd9Sstevel@tonic-gate!  214		      !	 for(i=1;i<nlen;i++)
10297c478bd9Sstevel@tonic-gate!  215		      !	   {
10307c478bd9Sstevel@tonic-gate!  216		      !	     pdtj[2*i]+=pdm1[i]*m2j+pdn[i]*digit;
10317c478bd9Sstevel@tonic-gate!  217		      !	   }
10327c478bd9Sstevel@tonic-gate!  218		      ! 	 if((jj==30)) {cleanup(dt,j/2+1,2*nlen+1); jj=0;}
1033*55fea89dSDan Cross!  219		      !
10347c478bd9Sstevel@tonic-gate!  220		      !	 digit=mod(lower32(b,Zero)*dn0,TwoToMinus16,TwoTo16);
10357c478bd9Sstevel@tonic-gate!  221		      !       }
10367c478bd9Sstevel@tonic-gate!  222		      !   }
10377c478bd9Sstevel@tonic-gate!  223		      ! else
10387c478bd9Sstevel@tonic-gate!  224		      !   {
10397c478bd9Sstevel@tonic-gate!  225		      !     a=dt[0]=pdm1[0]*pdm2[0];
10407c478bd9Sstevel@tonic-gate!  227		      !     dt[65]=     dt[64]=     dt[63]=     dt[62]=     dt[61]=     dt[60]=
10417c478bd9Sstevel@tonic-gate!  228		      !     dt[59]=     dt[58]=     dt[57]=     dt[56]=     dt[55]=     dt[54]=
10427c478bd9Sstevel@tonic-gate!  229		      !     dt[53]=     dt[52]=     dt[51]=     dt[50]=     dt[49]=     dt[48]=
10437c478bd9Sstevel@tonic-gate!  230		      !     dt[47]=     dt[46]=     dt[45]=     dt[44]=     dt[43]=     dt[42]=
10447c478bd9Sstevel@tonic-gate!  231		      !     dt[41]=     dt[40]=     dt[39]=     dt[38]=     dt[37]=     dt[36]=
10457c478bd9Sstevel@tonic-gate!  232		      !     dt[35]=     dt[34]=     dt[33]=     dt[32]=     dt[31]=     dt[30]=
10467c478bd9Sstevel@tonic-gate!  233		      !     dt[29]=     dt[28]=     dt[27]=     dt[26]=     dt[25]=     dt[24]=
10477c478bd9Sstevel@tonic-gate!  234		      !     dt[23]=     dt[22]=     dt[21]=     dt[20]=     dt[19]=     dt[18]=
10487c478bd9Sstevel@tonic-gate!  235		      !     dt[17]=     dt[16]=     dt[15]=     dt[14]=     dt[13]=     dt[12]=
10497c478bd9Sstevel@tonic-gate!  236		      !     dt[11]=     dt[10]=     dt[ 9]=     dt[ 8]=     dt[ 7]=     dt[ 6]=
10507c478bd9Sstevel@tonic-gate!  237		      !     dt[ 5]=     dt[ 4]=     dt[ 3]=     dt[ 2]=     dt[ 1]=Zero;
10517c478bd9Sstevel@tonic-gate!  239		      !     pdn_0=pdn[0];
10527c478bd9Sstevel@tonic-gate!  240		      !     pdm1_0=pdm1[0];
10537c478bd9Sstevel@tonic-gate!  242		      !     digit=mod(lower32(a,Zero)*dn0,TwoToMinus16,TwoTo16);
10547c478bd9Sstevel@tonic-gate!  243		      !     pdtj=&(dt[0]);
10557c478bd9Sstevel@tonic-gate!  245		      !     for(j=0;j<32;j++,pdtj++)
10567c478bd9Sstevel@tonic-gate!  246		      !       {
10577c478bd9Sstevel@tonic-gate!  248		      !	 m2j=pdm2[j];
10587c478bd9Sstevel@tonic-gate!  249		      !	 a=pdtj[0]+pdn_0*digit;
10597c478bd9Sstevel@tonic-gate!  250		      !	 b=pdtj[1]+pdm1_0*pdm2[j+1]+a*TwoToMinus16;
10607c478bd9Sstevel@tonic-gate!  251		      !	 pdtj[1]=b;
10617c478bd9Sstevel@tonic-gate!  253		      !	 /**** this loop will be fully unrolled:
10627c478bd9Sstevel@tonic-gate!  254		      !	 for(i=1;i<16;i++)
10637c478bd9Sstevel@tonic-gate!  255		      !	   {
10647c478bd9Sstevel@tonic-gate!  256		      !	     pdtj[2*i]+=pdm1[i]*m2j+pdn[i]*digit;
10657c478bd9Sstevel@tonic-gate!  257		      !	   }
10667c478bd9Sstevel@tonic-gate!  258		      !	 *************************************/
10677c478bd9Sstevel@tonic-gate!  259		      !	     pdtj[2]+=pdm1[1]*m2j+pdn[1]*digit;
10687c478bd9Sstevel@tonic-gate!  260		      !	     pdtj[4]+=pdm1[2]*m2j+pdn[2]*digit;
10697c478bd9Sstevel@tonic-gate!  261		      !	     pdtj[6]+=pdm1[3]*m2j+pdn[3]*digit;
10707c478bd9Sstevel@tonic-gate!  262		      !	     pdtj[8]+=pdm1[4]*m2j+pdn[4]*digit;
10717c478bd9Sstevel@tonic-gate!  263		      !	     pdtj[10]+=pdm1[5]*m2j+pdn[5]*digit;
10727c478bd9Sstevel@tonic-gate!  264		      !	     pdtj[12]+=pdm1[6]*m2j+pdn[6]*digit;
10737c478bd9Sstevel@tonic-gate!  265		      !	     pdtj[14]+=pdm1[7]*m2j+pdn[7]*digit;
10747c478bd9Sstevel@tonic-gate!  266		      !	     pdtj[16]+=pdm1[8]*m2j+pdn[8]*digit;
10757c478bd9Sstevel@tonic-gate!  267		      !	     pdtj[18]+=pdm1[9]*m2j+pdn[9]*digit;
10767c478bd9Sstevel@tonic-gate!  268		      !	     pdtj[20]+=pdm1[10]*m2j+pdn[10]*digit;
10777c478bd9Sstevel@tonic-gate!  269		      !	     pdtj[22]+=pdm1[11]*m2j+pdn[11]*digit;
10787c478bd9Sstevel@tonic-gate!  270		      !	     pdtj[24]+=pdm1[12]*m2j+pdn[12]*digit;
10797c478bd9Sstevel@tonic-gate!  271		      !	     pdtj[26]+=pdm1[13]*m2j+pdn[13]*digit;
10807c478bd9Sstevel@tonic-gate!  272		      !	     pdtj[28]+=pdm1[14]*m2j+pdn[14]*digit;
10817c478bd9Sstevel@tonic-gate!  273		      !	     pdtj[30]+=pdm1[15]*m2j+pdn[15]*digit;
10827c478bd9Sstevel@tonic-gate!  274		      !	 /* no need for cleenup, cannot overflow */
10837c478bd9Sstevel@tonic-gate!  275		      !	 digit=mod(lower32(b,Zero)*dn0,TwoToMinus16,TwoTo16);
10847c478bd9Sstevel@tonic-gate!  276		      !       }
10857c478bd9Sstevel@tonic-gate!  277		      !   }
10867c478bd9Sstevel@tonic-gate!  279		      ! conv_d16_to_i32(result,dt+2*nlen,(long long *)dt,nlen+1);
1087*55fea89dSDan Cross!  281		      ! adjust_montf_result(result,nint,nlen);
10887c478bd9Sstevel@tonic-gate
10897c478bd9Sstevel@tonic-gate/* 0x007c	 281 */		add	%g2,2,%o0
10907c478bd9Sstevel@tonic-gate/* 0x0080	 200 */		add	%g2,1,%o2
10917c478bd9Sstevel@tonic-gate/* 0x0084	 281 */		cmp	%o0,3
10927c478bd9Sstevel@tonic-gate/* 0x0088	     */		bl,pn	%icc,.L77000279
10937c478bd9Sstevel@tonic-gate/* 0x008c	     */		or	%g0,1,%o0
10947c478bd9Sstevel@tonic-gate/* 0x0090	     */		add	%o1,8,%o1
10957c478bd9Sstevel@tonic-gate/* 0x0094	     */		or	%g0,1,%o3
10967c478bd9Sstevel@tonic-gate/* 0x0098	     */		std	%f0,[%g5]
10977c478bd9Sstevel@tonic-gate                       .L900000628:
10987c478bd9Sstevel@tonic-gate/* 0x009c	     */		std	%f0,[%o1]
10997c478bd9Sstevel@tonic-gate/* 0x00a0	     */		add	%o3,2,%o3
11007c478bd9Sstevel@tonic-gate/* 0x00a4	     */		add	%o1,16,%o1
11017c478bd9Sstevel@tonic-gate/* 0x00a8	     */		cmp	%o3,%g2
11027c478bd9Sstevel@tonic-gate/* 0x00ac	     */		ble,pt	%icc,.L900000628
11037c478bd9Sstevel@tonic-gate/* 0x00b0	     */		std	%f0,[%o1-8]
11047c478bd9Sstevel@tonic-gate                       .L900000631:
11057c478bd9Sstevel@tonic-gate/* 0x00b4	     */		cmp	%o3,%o2
11067c478bd9Sstevel@tonic-gate/* 0x00b8	     */		bg,pn	%icc,.L77000284
11077c478bd9Sstevel@tonic-gate/* 0x00bc	     */		add	%o3,1,%o0
11087c478bd9Sstevel@tonic-gate                       .L77000279:
11097c478bd9Sstevel@tonic-gate/* 0x00c0	     */		std	%f0,[%o1]
11107c478bd9Sstevel@tonic-gate                       .L900000657:
11117c478bd9Sstevel@tonic-gate/* 0x00c4	     */		ldd	[%g3],%f0
11127c478bd9Sstevel@tonic-gate/* 0x00c8	     */		cmp	%o0,%o2
11137c478bd9Sstevel@tonic-gate/* 0x00cc	     */		add	%o1,8,%o1
11147c478bd9Sstevel@tonic-gate/* 0x00d0	     */		add	%o0,1,%o0
11157c478bd9Sstevel@tonic-gate/* 0x00d4	     */		ble,a,pt	%icc,.L900000657
11167c478bd9Sstevel@tonic-gate/* 0x00d8	     */		std	%f0,[%o1]
11177c478bd9Sstevel@tonic-gate                       .L77000284:
11187c478bd9Sstevel@tonic-gate/* 0x00dc	 202 */		ldd	[%g4],%f0
11197c478bd9Sstevel@tonic-gate                       .L900000658:
11207c478bd9Sstevel@tonic-gate/* 0x00e0	 202 */		ldd	[%i2],%f2
11217c478bd9Sstevel@tonic-gate/* 0x00e4	     */		add	%o7,1,%o2
11227c478bd9Sstevel@tonic-gate/* 0x00e8	 206 */		cmp	%o7,0
11237c478bd9Sstevel@tonic-gate/* 0x00ec	     */		sll	%o2,1,%o0
11247c478bd9Sstevel@tonic-gate/* 0x00f0	     */		sub	%o7,1,%o1
11257c478bd9Sstevel@tonic-gate/* 0x00f4	 202 */		fmuld	%f0,%f2,%f0
11267c478bd9Sstevel@tonic-gate/* 0x00f8	     */		std	%f0,[%g5]
11277c478bd9Sstevel@tonic-gate/* 0x00fc	     */		sub	%g1,1,%o7
11287c478bd9Sstevel@tonic-gate/* 0x0100	     */		ldd	[%g3],%f6
11297c478bd9Sstevel@tonic-gate/* 0x0104	   0 */		or	%g0,%o7,%i2
11307c478bd9Sstevel@tonic-gate/* 0x0108	     */		or	%g0,0,%l0
11317c478bd9Sstevel@tonic-gate/* 0x010c	     */		ldd	[%g3-8],%f2
11327c478bd9Sstevel@tonic-gate/* 0x0110	     */		or	%g0,0,%i5
11337c478bd9Sstevel@tonic-gate/* 0x0114	     */		or	%g0,%o1,%o5
11347c478bd9Sstevel@tonic-gate/* 0x0118	     */		fdtox	%f0,%f0
11357c478bd9Sstevel@tonic-gate/* 0x011c	     */		ldd	[%g3-16],%f4
11367c478bd9Sstevel@tonic-gate/* 0x0120	     */		or	%g0,%o0,%o3
11377c478bd9Sstevel@tonic-gate/* 0x0124	 210 */		add	%i1,8,%o4
11387c478bd9Sstevel@tonic-gate/* 0x0128	     */		or	%g0,0,%i4
11397c478bd9Sstevel@tonic-gate/* 0x012c	     */		fmovs	%f6,%f0
11407c478bd9Sstevel@tonic-gate/* 0x0130	     */		fxtod	%f0,%f0
11417c478bd9Sstevel@tonic-gate/* 0x0134	 203 */		fmuld	%f0,%f16,%f0
11427c478bd9Sstevel@tonic-gate/* 0x0138	     */		fmuld	%f0,%f2,%f2
11437c478bd9Sstevel@tonic-gate/* 0x013c	     */		fdtox	%f2,%f2
11447c478bd9Sstevel@tonic-gate/* 0x0140	     */		fxtod	%f2,%f2
11457c478bd9Sstevel@tonic-gate/* 0x0144	     */		fmuld	%f2,%f4,%f2
11467c478bd9Sstevel@tonic-gate/* 0x0148	     */		fsubd	%f0,%f2,%f22
11477c478bd9Sstevel@tonic-gate/* 0x014c	 206 */		ble,pt	%icc,.L900000651
11487c478bd9Sstevel@tonic-gate/* 0x0150	     */		sll	%g1,4,%g2
11497c478bd9Sstevel@tonic-gate/* 0x0154	 210 */		ldd	[%i0],%f0
11507c478bd9Sstevel@tonic-gate                       .L900000652:
11517c478bd9Sstevel@tonic-gate/* 0x0158	 210 */		fmuld	%f0,%f22,%f8
11527c478bd9Sstevel@tonic-gate/* 0x015c	     */		ldd	[%g4],%f0
11537c478bd9Sstevel@tonic-gate/* 0x0160	 214 */		cmp	%g1,1
11547c478bd9Sstevel@tonic-gate/* 0x0164	 210 */		ldd	[%o4+%i4],%f6
11557c478bd9Sstevel@tonic-gate/* 0x0168	     */		add	%g4,8,%o0
11567c478bd9Sstevel@tonic-gate/* 0x016c	 214 */		or	%g0,1,%o1
11577c478bd9Sstevel@tonic-gate/* 0x0170	 210 */		ldd	[%i3],%f2
11587c478bd9Sstevel@tonic-gate/* 0x0174	     */		add	%i3,16,%l1
11597c478bd9Sstevel@tonic-gate/* 0x0178	     */		fmuld	%f0,%f6,%f6
11607c478bd9Sstevel@tonic-gate/* 0x017c	     */		ldd	[%g3-8],%f4
11617c478bd9Sstevel@tonic-gate/* 0x0180	     */		faddd	%f2,%f8,%f2
11627c478bd9Sstevel@tonic-gate/* 0x0184	     */		ldd	[%i3+8],%f0
11637c478bd9Sstevel@tonic-gate/* 0x0188	 208 */		ldd	[%i1+%i4],%f20
11647c478bd9Sstevel@tonic-gate/* 0x018c	 210 */		faddd	%f0,%f6,%f0
11657c478bd9Sstevel@tonic-gate/* 0x0190	     */		fmuld	%f2,%f4,%f2
11667c478bd9Sstevel@tonic-gate/* 0x0194	     */		faddd	%f0,%f2,%f18
11677c478bd9Sstevel@tonic-gate/* 0x0198	 211 */		std	%f18,[%i3+8]
11687c478bd9Sstevel@tonic-gate/* 0x019c	 214 */		ble,pt	%icc,.L900000656
11697c478bd9Sstevel@tonic-gate/* 0x01a0	     */		srl	%i5,31,%g2
11707c478bd9Sstevel@tonic-gate/* 0x01a4	     */		cmp	%i2,7
11717c478bd9Sstevel@tonic-gate/* 0x01a8	 210 */		add	%i0,8,%g2
11727c478bd9Sstevel@tonic-gate/* 0x01ac	 214 */		bl,pn	%icc,.L77000281
11737c478bd9Sstevel@tonic-gate/* 0x01b0	     */		add	%g2,24,%o2
11747c478bd9Sstevel@tonic-gate/* 0x01b4	 216 */		ldd	[%g4+8],%f2
11757c478bd9Sstevel@tonic-gate/* 0x01b8	     */		add	%g4,40,%o0
11767c478bd9Sstevel@tonic-gate/* 0x01bc	     */		ldd	[%g4+16],%f6
11777c478bd9Sstevel@tonic-gate/* 0x01c0	   0 */		or	%g0,%o2,%g2
11787c478bd9Sstevel@tonic-gate/* 0x01c4	 216 */		add	%i3,48,%l1
11797c478bd9Sstevel@tonic-gate/* 0x01c8	     */		ldd	[%g2-24],%f0
11807c478bd9Sstevel@tonic-gate/* 0x01cc	     */		fmuld	%f2,%f20,%f2
11817c478bd9Sstevel@tonic-gate/* 0x01d0	 214 */		sub	%i2,2,%o2
11827c478bd9Sstevel@tonic-gate/* 0x01d4	 216 */		ldd	[%g2-16],%f8
11837c478bd9Sstevel@tonic-gate/* 0x01d8	     */		fmuld	%f6,%f20,%f10
11847c478bd9Sstevel@tonic-gate/* 0x01dc	     */		or	%g0,5,%o1
11857c478bd9Sstevel@tonic-gate/* 0x01e0	     */		ldd	[%g4+24],%f14
11867c478bd9Sstevel@tonic-gate/* 0x01e4	     */		fmuld	%f0,%f22,%f4
11877c478bd9Sstevel@tonic-gate/* 0x01e8	     */		ldd	[%i3+16],%f0
11887c478bd9Sstevel@tonic-gate/* 0x01ec	     */		ldd	[%g2-8],%f6
11897c478bd9Sstevel@tonic-gate/* 0x01f0	     */		ldd	[%g4+32],%f12
11907c478bd9Sstevel@tonic-gate/* 0x01f4	     */		faddd	%f2,%f4,%f4
11917c478bd9Sstevel@tonic-gate/* 0x01f8	     */		ldd	[%i3+32],%f2
11927c478bd9Sstevel@tonic-gate                       .L900000640:
11937c478bd9Sstevel@tonic-gate/* 0x01fc	 216 */		ldd	[%g2],%f24
11947c478bd9Sstevel@tonic-gate/* 0x0200	     */		add	%o1,3,%o1
11957c478bd9Sstevel@tonic-gate/* 0x0204	     */		add	%g2,24,%g2
11967c478bd9Sstevel@tonic-gate/* 0x0208	     */		fmuld	%f8,%f22,%f8
11977c478bd9Sstevel@tonic-gate/* 0x020c	     */		ldd	[%l1],%f28
11987c478bd9Sstevel@tonic-gate/* 0x0210	     */		cmp	%o1,%o2
11997c478bd9Sstevel@tonic-gate/* 0x0214	     */		add	%o0,24,%o0
12007c478bd9Sstevel@tonic-gate/* 0x0218	     */		ldd	[%o0-24],%f26
12017c478bd9Sstevel@tonic-gate/* 0x021c	     */		faddd	%f0,%f4,%f0
12027c478bd9Sstevel@tonic-gate/* 0x0220	     */		add	%l1,48,%l1
12037c478bd9Sstevel@tonic-gate/* 0x0224	     */		faddd	%f10,%f8,%f10
12047c478bd9Sstevel@tonic-gate/* 0x0228	     */		fmuld	%f14,%f20,%f4
12057c478bd9Sstevel@tonic-gate/* 0x022c	     */		std	%f0,[%l1-80]
12067c478bd9Sstevel@tonic-gate/* 0x0230	     */		ldd	[%g2-16],%f8
12077c478bd9Sstevel@tonic-gate/* 0x0234	     */		fmuld	%f6,%f22,%f6
12087c478bd9Sstevel@tonic-gate/* 0x0238	     */		ldd	[%l1-32],%f0
12097c478bd9Sstevel@tonic-gate/* 0x023c	     */		ldd	[%o0-16],%f14
12107c478bd9Sstevel@tonic-gate/* 0x0240	     */		faddd	%f2,%f10,%f2
12117c478bd9Sstevel@tonic-gate/* 0x0244	     */		faddd	%f4,%f6,%f10
12127c478bd9Sstevel@tonic-gate/* 0x0248	     */		fmuld	%f12,%f20,%f4
12137c478bd9Sstevel@tonic-gate/* 0x024c	     */		std	%f2,[%l1-64]
12147c478bd9Sstevel@tonic-gate/* 0x0250	     */		ldd	[%g2-8],%f6
12157c478bd9Sstevel@tonic-gate/* 0x0254	     */		fmuld	%f24,%f22,%f24
12167c478bd9Sstevel@tonic-gate/* 0x0258	     */		ldd	[%l1-16],%f2
12177c478bd9Sstevel@tonic-gate/* 0x025c	     */		ldd	[%o0-8],%f12
12187c478bd9Sstevel@tonic-gate/* 0x0260	     */		faddd	%f28,%f10,%f10
12197c478bd9Sstevel@tonic-gate/* 0x0264	     */		std	%f10,[%l1-48]
12207c478bd9Sstevel@tonic-gate/* 0x0268	     */		fmuld	%f26,%f20,%f10
12217c478bd9Sstevel@tonic-gate/* 0x026c	     */		ble,pt	%icc,.L900000640
12227c478bd9Sstevel@tonic-gate/* 0x0270	     */		faddd	%f4,%f24,%f4
12237c478bd9Sstevel@tonic-gate                       .L900000643:
12247c478bd9Sstevel@tonic-gate/* 0x0274	 216 */		fmuld	%f8,%f22,%f28
12257c478bd9Sstevel@tonic-gate/* 0x0278	     */		ldd	[%g2],%f24
12267c478bd9Sstevel@tonic-gate/* 0x027c	     */		faddd	%f0,%f4,%f26
12277c478bd9Sstevel@tonic-gate/* 0x0280	     */		fmuld	%f12,%f20,%f8
12287c478bd9Sstevel@tonic-gate/* 0x0284	     */		add	%l1,32,%l1
12297c478bd9Sstevel@tonic-gate/* 0x0288	     */		cmp	%o1,%i2
12307c478bd9Sstevel@tonic-gate/* 0x028c	     */		fmuld	%f14,%f20,%f14
12317c478bd9Sstevel@tonic-gate/* 0x0290	     */		ldd	[%l1-32],%f4
12327c478bd9Sstevel@tonic-gate/* 0x0294	     */		add	%g2,8,%g2
12337c478bd9Sstevel@tonic-gate/* 0x0298	     */		faddd	%f10,%f28,%f12
12347c478bd9Sstevel@tonic-gate/* 0x029c	     */		fmuld	%f6,%f22,%f6
12357c478bd9Sstevel@tonic-gate/* 0x02a0	     */		ldd	[%l1-16],%f0
12367c478bd9Sstevel@tonic-gate/* 0x02a4	     */		fmuld	%f24,%f22,%f10
12377c478bd9Sstevel@tonic-gate/* 0x02a8	     */		std	%f26,[%l1-64]
12387c478bd9Sstevel@tonic-gate/* 0x02ac	     */		faddd	%f2,%f12,%f2
12397c478bd9Sstevel@tonic-gate/* 0x02b0	     */		std	%f2,[%l1-48]
12407c478bd9Sstevel@tonic-gate/* 0x02b4	     */		faddd	%f14,%f6,%f6
12417c478bd9Sstevel@tonic-gate/* 0x02b8	     */		faddd	%f8,%f10,%f2
12427c478bd9Sstevel@tonic-gate/* 0x02bc	     */		faddd	%f4,%f6,%f4
12437c478bd9Sstevel@tonic-gate/* 0x02c0	     */		std	%f4,[%l1-32]
12447c478bd9Sstevel@tonic-gate/* 0x02c4	     */		faddd	%f0,%f2,%f0
12457c478bd9Sstevel@tonic-gate/* 0x02c8	     */		bg,pn	%icc,.L77000213
12467c478bd9Sstevel@tonic-gate/* 0x02cc	     */		std	%f0,[%l1-16]
12477c478bd9Sstevel@tonic-gate                       .L77000281:
12487c478bd9Sstevel@tonic-gate/* 0x02d0	 216 */		ldd	[%o0],%f0
12497c478bd9Sstevel@tonic-gate                       .L900000655:
12507c478bd9Sstevel@tonic-gate/* 0x02d4	 216 */		ldd	[%g2],%f4
12517c478bd9Sstevel@tonic-gate/* 0x02d8	     */		fmuld	%f0,%f20,%f2
12527c478bd9Sstevel@tonic-gate/* 0x02dc	     */		add	%o1,1,%o1
12537c478bd9Sstevel@tonic-gate/* 0x02e0	     */		ldd	[%l1],%f0
12547c478bd9Sstevel@tonic-gate/* 0x02e4	     */		add	%o0,8,%o0
12557c478bd9Sstevel@tonic-gate/* 0x02e8	     */		add	%g2,8,%g2
12567c478bd9Sstevel@tonic-gate/* 0x02ec	     */		fmuld	%f4,%f22,%f4
12577c478bd9Sstevel@tonic-gate/* 0x02f0	     */		cmp	%o1,%i2
12587c478bd9Sstevel@tonic-gate/* 0x02f4	     */		faddd	%f2,%f4,%f2
12597c478bd9Sstevel@tonic-gate/* 0x02f8	     */		faddd	%f0,%f2,%f0
12607c478bd9Sstevel@tonic-gate/* 0x02fc	     */		std	%f0,[%l1]
12617c478bd9Sstevel@tonic-gate/* 0x0300	     */		add	%l1,16,%l1
12627c478bd9Sstevel@tonic-gate/* 0x0304	     */		ble,a,pt	%icc,.L900000655
12637c478bd9Sstevel@tonic-gate/* 0x0308	     */		ldd	[%o0],%f0
12647c478bd9Sstevel@tonic-gate                       .L77000213:
12657c478bd9Sstevel@tonic-gate/* 0x030c	     */		srl	%i5,31,%g2
12667c478bd9Sstevel@tonic-gate                       .L900000656:
12677c478bd9Sstevel@tonic-gate/* 0x0310	 218 */		cmp	%l0,30
12687c478bd9Sstevel@tonic-gate/* 0x0314	     */		bne,a,pt	%icc,.L900000654
12697c478bd9Sstevel@tonic-gate/* 0x0318	     */		fdtox	%f18,%f0
12707c478bd9Sstevel@tonic-gate/* 0x031c	     */		add	%i5,%g2,%g2
12717c478bd9Sstevel@tonic-gate/* 0x0320	     */		sub	%o3,1,%o2
12727c478bd9Sstevel@tonic-gate/* 0x0324	     */		sra	%g2,1,%o0
12737c478bd9Sstevel@tonic-gate/* 0x0328	 216 */		ldd	[%g3],%f0
12747c478bd9Sstevel@tonic-gate/* 0x032c	     */		add	%o0,1,%g2
12757c478bd9Sstevel@tonic-gate/* 0x0330	     */		sll	%g2,1,%o0
12767c478bd9Sstevel@tonic-gate/* 0x0334	     */		fmovd	%f0,%f2
12777c478bd9Sstevel@tonic-gate/* 0x0338	     */		sll	%g2,4,%o1
12787c478bd9Sstevel@tonic-gate/* 0x033c	     */		cmp	%o0,%o3
12797c478bd9Sstevel@tonic-gate/* 0x0340	     */		bge,pt	%icc,.L77000215
12807c478bd9Sstevel@tonic-gate/* 0x0344	     */		or	%g0,0,%l0
12817c478bd9Sstevel@tonic-gate/* 0x0348	 218 */		add	%g5,%o1,%o1
12827c478bd9Sstevel@tonic-gate/* 0x034c	 216 */		ldd	[%o1],%f6
12837c478bd9Sstevel@tonic-gate                       .L900000653:
12847c478bd9Sstevel@tonic-gate/* 0x0350	     */		fdtox	%f6,%f10
12857c478bd9Sstevel@tonic-gate/* 0x0354	     */		ldd	[%o1+8],%f4
12867c478bd9Sstevel@tonic-gate/* 0x0358	     */		add	%o0,2,%o0
12877c478bd9Sstevel@tonic-gate/* 0x035c	     */		ldd	[%g3],%f12
12887c478bd9Sstevel@tonic-gate/* 0x0360	     */		fdtox	%f6,%f6
12897c478bd9Sstevel@tonic-gate/* 0x0364	     */		cmp	%o0,%o2
12907c478bd9Sstevel@tonic-gate/* 0x0368	     */		fdtox	%f4,%f8
12917c478bd9Sstevel@tonic-gate/* 0x036c	     */		fdtox	%f4,%f4
12927c478bd9Sstevel@tonic-gate/* 0x0370	     */		fmovs	%f12,%f10
12937c478bd9Sstevel@tonic-gate/* 0x0374	     */		fmovs	%f12,%f8
12947c478bd9Sstevel@tonic-gate/* 0x0378	     */		fxtod	%f10,%f10
12957c478bd9Sstevel@tonic-gate/* 0x037c	     */		fxtod	%f8,%f8
12967c478bd9Sstevel@tonic-gate/* 0x0380	     */		faddd	%f10,%f2,%f2
12977c478bd9Sstevel@tonic-gate/* 0x0384	     */		std	%f2,[%o1]
12987c478bd9Sstevel@tonic-gate/* 0x0388	     */		faddd	%f8,%f0,%f0
12997c478bd9Sstevel@tonic-gate/* 0x038c	     */		std	%f0,[%o1+8]
13007c478bd9Sstevel@tonic-gate/* 0x0390	     */		add	%o1,16,%o1
13017c478bd9Sstevel@tonic-gate/* 0x0394	     */		fitod	%f6,%f2
13027c478bd9Sstevel@tonic-gate/* 0x0398	     */		fitod	%f4,%f0
13037c478bd9Sstevel@tonic-gate/* 0x039c	     */		ble,a,pt	%icc,.L900000653
13047c478bd9Sstevel@tonic-gate/* 0x03a0	     */		ldd	[%o1],%f6
13057c478bd9Sstevel@tonic-gate                       .L77000233:
13067c478bd9Sstevel@tonic-gate/* 0x03a4	     */		or	%g0,0,%l0
13077c478bd9Sstevel@tonic-gate                       .L77000215:
13087c478bd9Sstevel@tonic-gate/* 0x03a8	     */		fdtox	%f18,%f0
13097c478bd9Sstevel@tonic-gate                       .L900000654:
13107c478bd9Sstevel@tonic-gate/* 0x03ac	     */		ldd	[%g3],%f6
13117c478bd9Sstevel@tonic-gate/* 0x03b0	 220 */		add	%i5,1,%i5
13127c478bd9Sstevel@tonic-gate/* 0x03b4	     */		add	%i4,8,%i4
13137c478bd9Sstevel@tonic-gate/* 0x03b8	     */		ldd	[%g3-8],%f2
13147c478bd9Sstevel@tonic-gate/* 0x03bc	     */		add	%l0,1,%l0
13157c478bd9Sstevel@tonic-gate/* 0x03c0	     */		add	%i3,8,%i3
13167c478bd9Sstevel@tonic-gate/* 0x03c4	     */		fmovs	%f6,%f0
13177c478bd9Sstevel@tonic-gate/* 0x03c8	     */		ldd	[%g3-16],%f4
13187c478bd9Sstevel@tonic-gate/* 0x03cc	     */		cmp	%i5,%o5
13197c478bd9Sstevel@tonic-gate/* 0x03d0	     */		fxtod	%f0,%f0
13207c478bd9Sstevel@tonic-gate/* 0x03d4	     */		fmuld	%f0,%f16,%f0
13217c478bd9Sstevel@tonic-gate/* 0x03d8	     */		fmuld	%f0,%f2,%f2
13227c478bd9Sstevel@tonic-gate/* 0x03dc	     */		fdtox	%f2,%f2
13237c478bd9Sstevel@tonic-gate/* 0x03e0	     */		fxtod	%f2,%f2
13247c478bd9Sstevel@tonic-gate/* 0x03e4	     */		fmuld	%f2,%f4,%f2
13257c478bd9Sstevel@tonic-gate/* 0x03e8	     */		fsubd	%f0,%f2,%f22
13267c478bd9Sstevel@tonic-gate/* 0x03ec	     */		ble,a,pt	%icc,.L900000652
13277c478bd9Sstevel@tonic-gate/* 0x03f0	     */		ldd	[%i0],%f0
13287c478bd9Sstevel@tonic-gate                       .L900000627:
13297c478bd9Sstevel@tonic-gate/* 0x03f4	 220 */		ba	.L900000651
13307c478bd9Sstevel@tonic-gate/* 0x03f8	     */		sll	%g1,4,%g2
13317c478bd9Sstevel@tonic-gate                       .L77000289:
13327c478bd9Sstevel@tonic-gate/* 0x03fc	 225 */		ldd	[%o2],%f6
13337c478bd9Sstevel@tonic-gate/* 0x0400	 243 */		or	%g0,%o1,%o4
13347c478bd9Sstevel@tonic-gate/* 0x0404	 245 */		or	%g0,0,%o3
13357c478bd9Sstevel@tonic-gate/* 0x0408	 225 */		ldd	[%g4],%f4
13367c478bd9Sstevel@tonic-gate/* 0x040c	 237 */		std	%f0,[%o1+8]
13377c478bd9Sstevel@tonic-gate/* 0x0410	     */		std	%f0,[%o1+16]
13387c478bd9Sstevel@tonic-gate/* 0x0414	 225 */		fmuld	%f4,%f6,%f4
13397c478bd9Sstevel@tonic-gate/* 0x0418	     */		std	%f4,[%o1]
13407c478bd9Sstevel@tonic-gate/* 0x041c	 237 */		std	%f0,[%o1+24]
13417c478bd9Sstevel@tonic-gate/* 0x0420	     */		std	%f0,[%o1+32]
13427c478bd9Sstevel@tonic-gate/* 0x0424	     */		fdtox	%f4,%f4
13437c478bd9Sstevel@tonic-gate/* 0x0428	     */		std	%f0,[%o1+40]
13447c478bd9Sstevel@tonic-gate/* 0x042c	     */		std	%f0,[%o1+48]
13457c478bd9Sstevel@tonic-gate/* 0x0430	     */		std	%f0,[%o1+56]
13467c478bd9Sstevel@tonic-gate/* 0x0434	     */		std	%f0,[%o1+64]
13477c478bd9Sstevel@tonic-gate/* 0x0438	     */		std	%f0,[%o1+72]
13487c478bd9Sstevel@tonic-gate/* 0x043c	     */		std	%f0,[%o1+80]
13497c478bd9Sstevel@tonic-gate/* 0x0440	     */		std	%f0,[%o1+88]
13507c478bd9Sstevel@tonic-gate/* 0x0444	     */		std	%f0,[%o1+96]
13517c478bd9Sstevel@tonic-gate/* 0x0448	     */		std	%f0,[%o1+104]
13527c478bd9Sstevel@tonic-gate/* 0x044c	     */		std	%f0,[%o1+112]
13537c478bd9Sstevel@tonic-gate/* 0x0450	     */		std	%f0,[%o1+120]
13547c478bd9Sstevel@tonic-gate/* 0x0454	     */		std	%f0,[%o1+128]
13557c478bd9Sstevel@tonic-gate/* 0x0458	     */		std	%f0,[%o1+136]
13567c478bd9Sstevel@tonic-gate/* 0x045c	     */		std	%f0,[%o1+144]
13577c478bd9Sstevel@tonic-gate/* 0x0460	     */		std	%f0,[%o1+152]
13587c478bd9Sstevel@tonic-gate/* 0x0464	     */		std	%f0,[%o1+160]
13597c478bd9Sstevel@tonic-gate/* 0x0468	     */		std	%f0,[%o1+168]
13607c478bd9Sstevel@tonic-gate/* 0x046c	     */		fmovs	%f0,%f4
13617c478bd9Sstevel@tonic-gate/* 0x0470	     */		std	%f0,[%o1+176]
13627c478bd9Sstevel@tonic-gate/* 0x0474	 245 */		or	%g0,0,%o0
13637c478bd9Sstevel@tonic-gate/* 0x0478	 237 */		std	%f0,[%o1+184]
13647c478bd9Sstevel@tonic-gate/* 0x047c	     */		fxtod	%f4,%f4
13657c478bd9Sstevel@tonic-gate/* 0x0480	     */		std	%f0,[%o1+192]
13667c478bd9Sstevel@tonic-gate/* 0x0484	     */		std	%f0,[%o1+200]
13677c478bd9Sstevel@tonic-gate/* 0x0488	     */		std	%f0,[%o1+208]
13687c478bd9Sstevel@tonic-gate/* 0x048c	 242 */		fmuld	%f4,%f2,%f2
13697c478bd9Sstevel@tonic-gate/* 0x0490	 237 */		std	%f0,[%o1+216]
13707c478bd9Sstevel@tonic-gate/* 0x0494	     */		std	%f0,[%o1+224]
13717c478bd9Sstevel@tonic-gate/* 0x0498	     */		std	%f0,[%o1+232]
13727c478bd9Sstevel@tonic-gate/* 0x049c	     */		std	%f0,[%o1+240]
13737c478bd9Sstevel@tonic-gate/* 0x04a0	     */		std	%f0,[%o1+248]
13747c478bd9Sstevel@tonic-gate/* 0x04a4	     */		std	%f0,[%o1+256]
13757c478bd9Sstevel@tonic-gate/* 0x04a8	     */		std	%f0,[%o1+264]
13767c478bd9Sstevel@tonic-gate/* 0x04ac	     */		std	%f0,[%o1+272]
13777c478bd9Sstevel@tonic-gate/* 0x04b0	     */		std	%f0,[%o1+280]
13787c478bd9Sstevel@tonic-gate/* 0x04b4	     */		std	%f0,[%o1+288]
13797c478bd9Sstevel@tonic-gate/* 0x04b8	     */		std	%f0,[%o1+296]
13807c478bd9Sstevel@tonic-gate/* 0x04bc	     */		std	%f0,[%o1+304]
13817c478bd9Sstevel@tonic-gate/* 0x04c0	     */		std	%f0,[%o1+312]
13827c478bd9Sstevel@tonic-gate/* 0x04c4	     */		std	%f0,[%o1+320]
13837c478bd9Sstevel@tonic-gate/* 0x04c8	     */		std	%f0,[%o1+328]
13847c478bd9Sstevel@tonic-gate/* 0x04cc	     */		std	%f0,[%o1+336]
13857c478bd9Sstevel@tonic-gate/* 0x04d0	     */		std	%f0,[%o1+344]
13867c478bd9Sstevel@tonic-gate/* 0x04d4	     */		std	%f0,[%o1+352]
13877c478bd9Sstevel@tonic-gate/* 0x04d8	     */		std	%f0,[%o1+360]
13887c478bd9Sstevel@tonic-gate/* 0x04dc	     */		std	%f0,[%o1+368]
13897c478bd9Sstevel@tonic-gate/* 0x04e0	     */		std	%f0,[%o1+376]
13907c478bd9Sstevel@tonic-gate/* 0x04e4	     */		std	%f0,[%o1+384]
13917c478bd9Sstevel@tonic-gate/* 0x04e8	     */		std	%f0,[%o1+392]
13927c478bd9Sstevel@tonic-gate/* 0x04ec	     */		std	%f0,[%o1+400]
13937c478bd9Sstevel@tonic-gate/* 0x04f0	     */		std	%f0,[%o1+408]
13947c478bd9Sstevel@tonic-gate/* 0x04f4	     */		std	%f0,[%o1+416]
13957c478bd9Sstevel@tonic-gate/* 0x04f8	     */		std	%f0,[%o1+424]
13967c478bd9Sstevel@tonic-gate/* 0x04fc	     */		std	%f0,[%o1+432]
13977c478bd9Sstevel@tonic-gate/* 0x0500	     */		std	%f0,[%o1+440]
13987c478bd9Sstevel@tonic-gate/* 0x0504	     */		std	%f0,[%o1+448]
13997c478bd9Sstevel@tonic-gate/* 0x0508	     */		std	%f0,[%o1+456]
14007c478bd9Sstevel@tonic-gate/* 0x050c	     */		std	%f0,[%o1+464]
14017c478bd9Sstevel@tonic-gate/* 0x0510	     */		std	%f0,[%o1+472]
14027c478bd9Sstevel@tonic-gate/* 0x0514	     */		std	%f0,[%o1+480]
14037c478bd9Sstevel@tonic-gate/* 0x0518	     */		std	%f0,[%o1+488]
14047c478bd9Sstevel@tonic-gate/* 0x051c	     */		std	%f0,[%o1+496]
14057c478bd9Sstevel@tonic-gate/* 0x0520	     */		std	%f0,[%o1+504]
14067c478bd9Sstevel@tonic-gate/* 0x0524	     */		std	%f0,[%o1+512]
14077c478bd9Sstevel@tonic-gate/* 0x0528	     */		std	%f0,[%o1+520]
14087c478bd9Sstevel@tonic-gate/* 0x052c	     */		ldd	[%g3-8],%f0
14097c478bd9Sstevel@tonic-gate/* 0x0530	     */		ldd	[%g3-16],%f8
14107c478bd9Sstevel@tonic-gate/* 0x0534	     */		fmuld	%f2,%f0,%f6
14117c478bd9Sstevel@tonic-gate/* 0x0538	 239 */		ldd	[%i4],%f4
14127c478bd9Sstevel@tonic-gate/* 0x053c	 240 */		ldd	[%g4],%f0
14137c478bd9Sstevel@tonic-gate/* 0x0540	     */		fdtox	%f6,%f6
14147c478bd9Sstevel@tonic-gate/* 0x0544	     */		fxtod	%f6,%f6
14157c478bd9Sstevel@tonic-gate/* 0x0548	     */		fmuld	%f6,%f8,%f6
14167c478bd9Sstevel@tonic-gate/* 0x054c	     */		fsubd	%f2,%f6,%f2
14177c478bd9Sstevel@tonic-gate/* 0x0550	 250 */		fmuld	%f4,%f2,%f12
14187c478bd9Sstevel@tonic-gate                       .L900000650:
14197c478bd9Sstevel@tonic-gate
14207c478bd9Sstevel@tonic-gate
14217c478bd9Sstevel@tonic-gate	fmovd %f2,%f0
14227c478bd9Sstevel@tonic-gate	fmovd %f16,%f18
14237c478bd9Sstevel@tonic-gate	ldd [%i4],%f2
14247c478bd9Sstevel@tonic-gate	ldd [%o4],%f8
14257c478bd9Sstevel@tonic-gate	ldd [%g4],%f10
14267c478bd9Sstevel@tonic-gate	ldd [%g3-8],%f14
14277c478bd9Sstevel@tonic-gate	ldd [%g3-16],%f16
14287c478bd9Sstevel@tonic-gate	ldd [%i2],%f24
14297c478bd9Sstevel@tonic-gate
14307c478bd9Sstevel@tonic-gate	ldd [%g4+8],%f26
14317c478bd9Sstevel@tonic-gate	ldd [%g4+16],%f40
14327c478bd9Sstevel@tonic-gate	ldd [%g4+48],%f46
14337c478bd9Sstevel@tonic-gate	ldd [%g4+56],%f30
14347c478bd9Sstevel@tonic-gate	ldd [%g4+64],%f54
14357c478bd9Sstevel@tonic-gate	ldd [%g4+104],%f34
14367c478bd9Sstevel@tonic-gate	ldd [%g4+112],%f58
14377c478bd9Sstevel@tonic-gate
1438*55fea89dSDan Cross	ldd [%i4+8],%f28
14397c478bd9Sstevel@tonic-gate	ldd [%i4+104],%f38
14407c478bd9Sstevel@tonic-gate	ldd [%i4+112],%f60
14417c478bd9Sstevel@tonic-gate
14427c478bd9Sstevel@tonic-gate
14437c478bd9Sstevel@tonic-gate	.L99999999:
14447c478bd9Sstevel@tonic-gate!1
14457c478bd9Sstevel@tonic-gate	ldd	[%g4+24],%f32
14467c478bd9Sstevel@tonic-gate	fmuld	%f0,%f2,%f4
14477c478bd9Sstevel@tonic-gate!2
14487c478bd9Sstevel@tonic-gate	ldd	[%i4+24],%f36
14497c478bd9Sstevel@tonic-gate	fmuld	%f26,%f24,%f20
14507c478bd9Sstevel@tonic-gate!3
14517c478bd9Sstevel@tonic-gate	ldd	[%g4+40],%f42
14527c478bd9Sstevel@tonic-gate	fmuld	%f28,%f0,%f22
14537c478bd9Sstevel@tonic-gate!4
14547c478bd9Sstevel@tonic-gate	ldd	[%i4+40],%f44
14557c478bd9Sstevel@tonic-gate	fmuld	%f32,%f24,%f32
14567c478bd9Sstevel@tonic-gate!5
14577c478bd9Sstevel@tonic-gate	ldd	[%i2+8],%f6
14587c478bd9Sstevel@tonic-gate	faddd	%f4,%f8,%f4
14597c478bd9Sstevel@tonic-gate	fmuld	%f36,%f0,%f36
14607c478bd9Sstevel@tonic-gate!6
14617c478bd9Sstevel@tonic-gate	add	%i2,8,%i2
14627c478bd9Sstevel@tonic-gate	ldd	[%i4+56],%f50
14637c478bd9Sstevel@tonic-gate	fmuld	%f42,%f24,%f42
14647c478bd9Sstevel@tonic-gate!7
14657c478bd9Sstevel@tonic-gate	ldd	[%g4+72],%f52
14667c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
14677c478bd9Sstevel@tonic-gate	fmuld	%f44,%f0,%f44
14687c478bd9Sstevel@tonic-gate!8
14697c478bd9Sstevel@tonic-gate	ldd	[%o4+16],%f22
14707c478bd9Sstevel@tonic-gate	fmuld	%f10,%f6,%f12
14717c478bd9Sstevel@tonic-gate!9
14727c478bd9Sstevel@tonic-gate	ldd	[%i4+72],%f56
14737c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
14747c478bd9Sstevel@tonic-gate	fmuld	%f14,%f4,%f4
14757c478bd9Sstevel@tonic-gate!10
14767c478bd9Sstevel@tonic-gate	ldd	[%o4+48],%f36
14777c478bd9Sstevel@tonic-gate	fmuld	%f30,%f24,%f48
14787c478bd9Sstevel@tonic-gate!11
14797c478bd9Sstevel@tonic-gate	ldd	[%o4+8],%f8
14807c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
1481*55fea89dSDan Cross	fmuld	%f50,%f0,%f50
14827c478bd9Sstevel@tonic-gate!12
14837c478bd9Sstevel@tonic-gate	std	%f20,[%o4+16]
14847c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
14857c478bd9Sstevel@tonic-gate	fmuld	%f52,%f24,%f52
14867c478bd9Sstevel@tonic-gate!13
14877c478bd9Sstevel@tonic-gate	ldd	[%o4+80],%f44
14887c478bd9Sstevel@tonic-gate	faddd	%f4,%f12,%f4
14897c478bd9Sstevel@tonic-gate	fmuld	%f56,%f0,%f56
14907c478bd9Sstevel@tonic-gate!14
14917c478bd9Sstevel@tonic-gate	ldd	[%g4+88],%f20
14927c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
14937c478bd9Sstevel@tonic-gate!15
14947c478bd9Sstevel@tonic-gate	ldd	[%i4+88],%f22
14957c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
14967c478bd9Sstevel@tonic-gate!16
14977c478bd9Sstevel@tonic-gate	ldd	[%o4+112],%f50
14987c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f52
14997c478bd9Sstevel@tonic-gate!17
15007c478bd9Sstevel@tonic-gate	ldd	[%o4+144],%f56
15017c478bd9Sstevel@tonic-gate	faddd	%f4,%f8,%f8
15027c478bd9Sstevel@tonic-gate	fmuld	%f20,%f24,%f20
15037c478bd9Sstevel@tonic-gate!18
15047c478bd9Sstevel@tonic-gate	std	%f32,[%o4+48]
15057c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
15067c478bd9Sstevel@tonic-gate	fmuld	%f22,%f0,%f22
15077c478bd9Sstevel@tonic-gate!19
15087c478bd9Sstevel@tonic-gate	std	%f42,[%o4+80]
15097c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
15107c478bd9Sstevel@tonic-gate	fmuld	%f34,%f24,%f32
15117c478bd9Sstevel@tonic-gate!20
15127c478bd9Sstevel@tonic-gate	std	%f48,[%o4+112]
15137c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f52
15147c478bd9Sstevel@tonic-gate	fmuld	%f38,%f0,%f36
15157c478bd9Sstevel@tonic-gate!21
15167c478bd9Sstevel@tonic-gate	ldd	[%g4+120],%f42
15177c478bd9Sstevel@tonic-gate	fdtox	%f8,%f4
15187c478bd9Sstevel@tonic-gate!22
15197c478bd9Sstevel@tonic-gate	std	%f52,[%o4+144]
15207c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
15217c478bd9Sstevel@tonic-gate!23
15227c478bd9Sstevel@tonic-gate	ldd	[%i4+120],%f44
15237c478bd9Sstevel@tonic-gate!24
15247c478bd9Sstevel@tonic-gate	ldd	[%o4+176],%f22
15257c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
15267c478bd9Sstevel@tonic-gate	fmuld	%f42,%f24,%f42
15277c478bd9Sstevel@tonic-gate!25
15287c478bd9Sstevel@tonic-gate	ldd	[%i4+16],%f50
15297c478bd9Sstevel@tonic-gate	fmovs	%f17,%f4
15307c478bd9Sstevel@tonic-gate!26
15317c478bd9Sstevel@tonic-gate	ldd	[%g4+32],%f52
15327c478bd9Sstevel@tonic-gate	fmuld	%f44,%f0,%f44
15337c478bd9Sstevel@tonic-gate!27
15347c478bd9Sstevel@tonic-gate	ldd	[%i4+32],%f56
15357c478bd9Sstevel@tonic-gate	fmuld	%f40,%f24,%f48
15367c478bd9Sstevel@tonic-gate!28
15377c478bd9Sstevel@tonic-gate	ldd	[%o4+208],%f36
15387c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
15397c478bd9Sstevel@tonic-gate	fmuld	%f50,%f0,%f50
15407c478bd9Sstevel@tonic-gate!29
15417c478bd9Sstevel@tonic-gate	std	%f20,[%o4+176]
15427c478bd9Sstevel@tonic-gate	fxtod	%f4,%f4
15437c478bd9Sstevel@tonic-gate	fmuld	%f52,%f24,%f52
15447c478bd9Sstevel@tonic-gate!30
15457c478bd9Sstevel@tonic-gate	ldd	[%i4+48],%f22
15467c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
15477c478bd9Sstevel@tonic-gate	fmuld	%f56,%f0,%f56
15487c478bd9Sstevel@tonic-gate!31
15497c478bd9Sstevel@tonic-gate	ldd	[%o4+240],%f44
15507c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
15517c478bd9Sstevel@tonic-gate!32
15527c478bd9Sstevel@tonic-gate	std	%f32,[%o4+208]
15537c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
15547c478bd9Sstevel@tonic-gate	fmuld	%f46,%f24,%f20
15557c478bd9Sstevel@tonic-gate!33
15567c478bd9Sstevel@tonic-gate	ldd	[%o4+32],%f50
15577c478bd9Sstevel@tonic-gate	fmuld	%f4,%f18,%f12
15587c478bd9Sstevel@tonic-gate!34
15597c478bd9Sstevel@tonic-gate	ldd	[%i4+64],%f36
15607c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f52
15617c478bd9Sstevel@tonic-gate	fmuld	%f22,%f0,%f22
15627c478bd9Sstevel@tonic-gate!35
15637c478bd9Sstevel@tonic-gate	ldd	[%o4+64],%f56
15647c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
15657c478bd9Sstevel@tonic-gate!36
15667c478bd9Sstevel@tonic-gate	std	%f42,[%o4+240]
15677c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
15687c478bd9Sstevel@tonic-gate	fmuld	%f54,%f24,%f32
15697c478bd9Sstevel@tonic-gate!37
15707c478bd9Sstevel@tonic-gate	std	%f48,[%o4+32]
15717c478bd9Sstevel@tonic-gate	fmuld	%f12,%f14,%f4
15727c478bd9Sstevel@tonic-gate!38
15737c478bd9Sstevel@tonic-gate	ldd	[%g4+80],%f42
15747c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f56	! yes, tmp52!
15757c478bd9Sstevel@tonic-gate	fmuld	%f36,%f0,%f36
15767c478bd9Sstevel@tonic-gate!39
15777c478bd9Sstevel@tonic-gate	ldd	[%i4+80],%f44
15787c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
15797c478bd9Sstevel@tonic-gate!40
15807c478bd9Sstevel@tonic-gate	ldd	[%g4+96],%f48
15817c478bd9Sstevel@tonic-gate	fmuld	%f58,%f24,%f52
15827c478bd9Sstevel@tonic-gate!41
15837c478bd9Sstevel@tonic-gate	ldd	[%i4+96],%f50
15847c478bd9Sstevel@tonic-gate	fdtox	%f4,%f4
15857c478bd9Sstevel@tonic-gate	fmuld	%f42,%f24,%f42
15867c478bd9Sstevel@tonic-gate!42
15877c478bd9Sstevel@tonic-gate	std	%f56,[%o4+64]	! yes, tmp52!
15887c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
15897c478bd9Sstevel@tonic-gate	fmuld	%f44,%f0,%f44
15907c478bd9Sstevel@tonic-gate!43
15917c478bd9Sstevel@tonic-gate	ldd	[%o4+96],%f22
15927c478bd9Sstevel@tonic-gate	fmuld	%f48,%f24,%f48
15937c478bd9Sstevel@tonic-gate!44
15947c478bd9Sstevel@tonic-gate	ldd	[%o4+128],%f36
15957c478bd9Sstevel@tonic-gate	fmovd	%f6,%f24
15967c478bd9Sstevel@tonic-gate	fmuld	%f50,%f0,%f50
15977c478bd9Sstevel@tonic-gate!45
15987c478bd9Sstevel@tonic-gate	fxtod	%f4,%f4
15997c478bd9Sstevel@tonic-gate	fmuld	%f60,%f0,%f56
16007c478bd9Sstevel@tonic-gate!46
16017c478bd9Sstevel@tonic-gate	add	%o4,8,%o4
16027c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
16037c478bd9Sstevel@tonic-gate!47
16047c478bd9Sstevel@tonic-gate	ldd	[%o4+160-8],%f44
16057c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
16067c478bd9Sstevel@tonic-gate!48
16077c478bd9Sstevel@tonic-gate	std	%f20,[%o4+96-8]
16087c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
16097c478bd9Sstevel@tonic-gate!49
16107c478bd9Sstevel@tonic-gate	ldd	[%o4+192-8],%f50
16117c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f52
16127c478bd9Sstevel@tonic-gate	fmuld	%f4,%f16,%f4
16137c478bd9Sstevel@tonic-gate!50
16147c478bd9Sstevel@tonic-gate	ldd	[%o4+224-8],%f56
16157c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
16167c478bd9Sstevel@tonic-gate!51
16177c478bd9Sstevel@tonic-gate	std	%f32,[%o4+128-8]
16187c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
16197c478bd9Sstevel@tonic-gate!52
16207c478bd9Sstevel@tonic-gate	add	%o3,1,%o3
16217c478bd9Sstevel@tonic-gate	std	%f42,[%o4+160-8]
16227c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
16237c478bd9Sstevel@tonic-gate!53
16247c478bd9Sstevel@tonic-gate	cmp	%o3,31
16257c478bd9Sstevel@tonic-gate	std	%f48,[%o4+192-8]
16267c478bd9Sstevel@tonic-gate	fsubd	%f12,%f4,%f0
16277c478bd9Sstevel@tonic-gate!54
16287c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f52
16297c478bd9Sstevel@tonic-gate	ble,pt	%icc,.L99999999
16307c478bd9Sstevel@tonic-gate	std	%f52,[%o4+224-8]
16317c478bd9Sstevel@tonic-gate!55
16327c478bd9Sstevel@tonic-gate	std %f8,[%o4]
1633*55fea89dSDan Cross
1634*55fea89dSDan Cross
16357c478bd9Sstevel@tonic-gate	                       .L77000285:
16367c478bd9Sstevel@tonic-gate/* 0x07a8	 279 */		sll	%g1,4,%g2
16377c478bd9Sstevel@tonic-gate                       .L900000651:
16387c478bd9Sstevel@tonic-gate/* 0x07ac	 279 */		ldd	[%g5+%g2],%f0
16397c478bd9Sstevel@tonic-gate/* 0x07b0	     */		add	%g5,%g2,%i1
16407c478bd9Sstevel@tonic-gate/* 0x07b4	     */		or	%g0,0,%o4
16417c478bd9Sstevel@tonic-gate/* 0x07b8	 206 */		ld	[%fp+68],%o0
16427c478bd9Sstevel@tonic-gate/* 0x07bc	 279 */		or	%g0,0,%i0
16437c478bd9Sstevel@tonic-gate/* 0x07c0	     */		cmp	%g1,0
16447c478bd9Sstevel@tonic-gate/* 0x07c4	     */		fdtox	%f0,%f0
16457c478bd9Sstevel@tonic-gate/* 0x07c8	     */		std	%f0,[%sp+120]
16467c478bd9Sstevel@tonic-gate/* 0x07cc	 275 */		sethi	%hi(0xfc00),%o1
16477c478bd9Sstevel@tonic-gate/* 0x07d0	 206 */		or	%g0,%o0,%o3
16487c478bd9Sstevel@tonic-gate/* 0x07d4	 275 */		sub	%g1,1,%g4
16497c478bd9Sstevel@tonic-gate/* 0x07d8	 279 */		ldd	[%i1+8],%f0
16507c478bd9Sstevel@tonic-gate/* 0x07dc	     */		or	%g0,%o0,%g5
16517c478bd9Sstevel@tonic-gate/* 0x07e0	     */		add	%o1,1023,%o1
16527c478bd9Sstevel@tonic-gate/* 0x07e4	     */		fdtox	%f0,%f0
16537c478bd9Sstevel@tonic-gate/* 0x07e8	     */		std	%f0,[%sp+112]
16547c478bd9Sstevel@tonic-gate/* 0x07ec	     */		ldx	[%sp+112],%o5
16557c478bd9Sstevel@tonic-gate/* 0x07f0	     */		ldx	[%sp+120],%o7
16567c478bd9Sstevel@tonic-gate/* 0x07f4	     */		ble,pt	%icc,.L900000649
16577c478bd9Sstevel@tonic-gate/* 0x07f8	     */		sethi	%hi(0xfc00),%g2
16587c478bd9Sstevel@tonic-gate/* 0x07fc	 275 */		or	%g0,-1,%g2
16597c478bd9Sstevel@tonic-gate/* 0x0800	 279 */		cmp	%g1,3
16607c478bd9Sstevel@tonic-gate/* 0x0804	 275 */		srl	%g2,0,%o2
16617c478bd9Sstevel@tonic-gate/* 0x0808	 279 */		bl,pn	%icc,.L77000286
16627c478bd9Sstevel@tonic-gate/* 0x080c	     */		or	%g0,%i1,%g2
16637c478bd9Sstevel@tonic-gate/* 0x0810	     */		ldd	[%i1+16],%f0
16647c478bd9Sstevel@tonic-gate/* 0x0814	     */		and	%o5,%o1,%o0
16657c478bd9Sstevel@tonic-gate/* 0x0818	     */		add	%i1,16,%g2
16667c478bd9Sstevel@tonic-gate/* 0x081c	     */		sllx	%o0,16,%g3
16677c478bd9Sstevel@tonic-gate/* 0x0820	     */		and	%o7,%o2,%o0
16687c478bd9Sstevel@tonic-gate/* 0x0824	     */		fdtox	%f0,%f0
16697c478bd9Sstevel@tonic-gate/* 0x0828	     */		std	%f0,[%sp+104]
16707c478bd9Sstevel@tonic-gate/* 0x082c	     */		add	%o0,%g3,%o4
16717c478bd9Sstevel@tonic-gate/* 0x0830	     */		ldd	[%i1+24],%f2
16727c478bd9Sstevel@tonic-gate/* 0x0834	     */		srax	%o5,16,%o0
16737c478bd9Sstevel@tonic-gate/* 0x0838	     */		add	%o3,4,%g5
16747c478bd9Sstevel@tonic-gate/* 0x083c	     */		stx	%o0,[%sp+128]
16757c478bd9Sstevel@tonic-gate/* 0x0840	     */		and	%o4,%o2,%o0
16767c478bd9Sstevel@tonic-gate/* 0x0844	     */		or	%g0,1,%i0
16777c478bd9Sstevel@tonic-gate/* 0x0848	     */		stx	%o0,[%sp+112]
16787c478bd9Sstevel@tonic-gate/* 0x084c	     */		srax	%o4,32,%o0
16797c478bd9Sstevel@tonic-gate/* 0x0850	     */		fdtox	%f2,%f0
16807c478bd9Sstevel@tonic-gate/* 0x0854	     */		stx	%o0,[%sp+136]
16817c478bd9Sstevel@tonic-gate/* 0x0858	     */		srax	%o7,32,%o4
16827c478bd9Sstevel@tonic-gate/* 0x085c	     */		std	%f0,[%sp+96]
16837c478bd9Sstevel@tonic-gate/* 0x0860	     */		ldx	[%sp+136],%o7
16847c478bd9Sstevel@tonic-gate/* 0x0864	     */		ldx	[%sp+128],%o0
16857c478bd9Sstevel@tonic-gate/* 0x0868	     */		ldx	[%sp+104],%g3
16867c478bd9Sstevel@tonic-gate/* 0x086c	     */		add	%o0,%o7,%o0
16877c478bd9Sstevel@tonic-gate/* 0x0870	     */		ldx	[%sp+112],%o7
16887c478bd9Sstevel@tonic-gate/* 0x0874	     */		add	%o4,%o0,%o4
16897c478bd9Sstevel@tonic-gate/* 0x0878	     */		ldx	[%sp+96],%o5
16907c478bd9Sstevel@tonic-gate/* 0x087c	     */		st	%o7,[%o3]
16917c478bd9Sstevel@tonic-gate/* 0x0880	     */		or	%g0,%g3,%o7
16927c478bd9Sstevel@tonic-gate                       .L900000632:
16937c478bd9Sstevel@tonic-gate/* 0x0884	     */		ldd	[%g2+16],%f0
16947c478bd9Sstevel@tonic-gate/* 0x0888	     */		add	%i0,1,%i0
16957c478bd9Sstevel@tonic-gate/* 0x088c	     */		add	%g5,4,%g5
16967c478bd9Sstevel@tonic-gate/* 0x0890	     */		cmp	%i0,%g4
16977c478bd9Sstevel@tonic-gate/* 0x0894	     */		add	%g2,16,%g2
16987c478bd9Sstevel@tonic-gate/* 0x0898	     */		fdtox	%f0,%f0
16997c478bd9Sstevel@tonic-gate/* 0x089c	     */		std	%f0,[%sp+104]
17007c478bd9Sstevel@tonic-gate/* 0x08a0	     */		ldd	[%g2+8],%f0
17017c478bd9Sstevel@tonic-gate/* 0x08a4	     */		fdtox	%f0,%f0
17027c478bd9Sstevel@tonic-gate/* 0x08a8	     */		std	%f0,[%sp+96]
17037c478bd9Sstevel@tonic-gate/* 0x08ac	     */		and	%o5,%o1,%g3
17047c478bd9Sstevel@tonic-gate/* 0x08b0	     */		sllx	%g3,16,%g3
17057c478bd9Sstevel@tonic-gate/* 0x08b4	     */		stx	%g3,[%sp+120]
17067c478bd9Sstevel@tonic-gate/* 0x08b8	     */		and	%o7,%o2,%g3
17077c478bd9Sstevel@tonic-gate/* 0x08bc	     */		stx	%o7,[%sp+128]
17087c478bd9Sstevel@tonic-gate/* 0x08c0	     */		ldx	[%sp+120],%o7
17097c478bd9Sstevel@tonic-gate/* 0x08c4	     */		add	%g3,%o7,%g3
17107c478bd9Sstevel@tonic-gate/* 0x08c8	     */		ldx	[%sp+128],%o7
17117c478bd9Sstevel@tonic-gate/* 0x08cc	     */		srax	%o5,16,%o5
17127c478bd9Sstevel@tonic-gate/* 0x08d0	     */		add	%g3,%o4,%g3
17137c478bd9Sstevel@tonic-gate/* 0x08d4	     */		srax	%g3,32,%o4
17147c478bd9Sstevel@tonic-gate/* 0x08d8	     */		stx	%o4,[%sp+112]
17157c478bd9Sstevel@tonic-gate/* 0x08dc	     */		srax	%o7,32,%o4
17167c478bd9Sstevel@tonic-gate/* 0x08e0	     */		ldx	[%sp+112],%o7
17177c478bd9Sstevel@tonic-gate/* 0x08e4	     */		add	%o5,%o7,%o7
17187c478bd9Sstevel@tonic-gate/* 0x08e8	     */		ldx	[%sp+96],%o5
17197c478bd9Sstevel@tonic-gate/* 0x08ec	     */		add	%o4,%o7,%o4
17207c478bd9Sstevel@tonic-gate/* 0x08f0	     */		and	%g3,%o2,%g3
17217c478bd9Sstevel@tonic-gate/* 0x08f4	     */		ldx	[%sp+104],%o7
17227c478bd9Sstevel@tonic-gate/* 0x08f8	     */		ble,pt	%icc,.L900000632
17237c478bd9Sstevel@tonic-gate/* 0x08fc	     */		st	%g3,[%g5-4]
17247c478bd9Sstevel@tonic-gate                       .L900000635:
17257c478bd9Sstevel@tonic-gate/* 0x0900	     */		ba	.L900000649
17267c478bd9Sstevel@tonic-gate/* 0x0904	     */		sethi	%hi(0xfc00),%g2
17277c478bd9Sstevel@tonic-gate                       .L77000286:
17287c478bd9Sstevel@tonic-gate/* 0x0908	     */		ldd	[%g2+16],%f0
17297c478bd9Sstevel@tonic-gate                       .L900000648:
17307c478bd9Sstevel@tonic-gate/* 0x090c	     */		and	%o7,%o2,%o0
17317c478bd9Sstevel@tonic-gate/* 0x0910	     */		and	%o5,%o1,%g3
17327c478bd9Sstevel@tonic-gate/* 0x0914	     */		fdtox	%f0,%f0
17337c478bd9Sstevel@tonic-gate/* 0x0918	     */		add	%o4,%o0,%o0
17347c478bd9Sstevel@tonic-gate/* 0x091c	     */		std	%f0,[%sp+104]
17357c478bd9Sstevel@tonic-gate/* 0x0920	     */		add	%i0,1,%i0
17367c478bd9Sstevel@tonic-gate/* 0x0924	     */		sllx	%g3,16,%o4
17377c478bd9Sstevel@tonic-gate/* 0x0928	     */		ldd	[%g2+24],%f2
17387c478bd9Sstevel@tonic-gate/* 0x092c	     */		add	%g2,16,%g2
17397c478bd9Sstevel@tonic-gate/* 0x0930	     */		add	%o0,%o4,%o4
17407c478bd9Sstevel@tonic-gate/* 0x0934	     */		cmp	%i0,%g4
17417c478bd9Sstevel@tonic-gate/* 0x0938	     */		srax	%o5,16,%o0
17427c478bd9Sstevel@tonic-gate/* 0x093c	     */		stx	%o0,[%sp+112]
17437c478bd9Sstevel@tonic-gate/* 0x0940	     */		and	%o4,%o2,%g3
17447c478bd9Sstevel@tonic-gate/* 0x0944	     */		srax	%o4,32,%o5
17457c478bd9Sstevel@tonic-gate/* 0x0948	     */		fdtox	%f2,%f0
17467c478bd9Sstevel@tonic-gate/* 0x094c	     */		std	%f0,[%sp+96]
17477c478bd9Sstevel@tonic-gate/* 0x0950	     */		srax	%o7,32,%o4
17487c478bd9Sstevel@tonic-gate/* 0x0954	     */		ldx	[%sp+112],%o7
17497c478bd9Sstevel@tonic-gate/* 0x0958	     */		add	%o7,%o5,%o7
17507c478bd9Sstevel@tonic-gate/* 0x095c	     */		ldx	[%sp+104],%o5
17517c478bd9Sstevel@tonic-gate/* 0x0960	     */		add	%o4,%o7,%o4
17527c478bd9Sstevel@tonic-gate/* 0x0964	     */		ldx	[%sp+96],%o0
17537c478bd9Sstevel@tonic-gate/* 0x0968	     */		st	%g3,[%g5]
17547c478bd9Sstevel@tonic-gate/* 0x096c	     */		or	%g0,%o5,%o7
17557c478bd9Sstevel@tonic-gate/* 0x0970	     */		add	%g5,4,%g5
17567c478bd9Sstevel@tonic-gate/* 0x0974	     */		or	%g0,%o0,%o5
17577c478bd9Sstevel@tonic-gate/* 0x0978	     */		ble,a,pt	%icc,.L900000648
17587c478bd9Sstevel@tonic-gate/* 0x097c	     */		ldd	[%g2+16],%f0
17597c478bd9Sstevel@tonic-gate                       .L77000236:
17607c478bd9Sstevel@tonic-gate/* 0x0980	     */		sethi	%hi(0xfc00),%g2
17617c478bd9Sstevel@tonic-gate                       .L900000649:
17627c478bd9Sstevel@tonic-gate/* 0x0984	     */		or	%g0,-1,%o0
17637c478bd9Sstevel@tonic-gate/* 0x0988	     */		add	%g2,1023,%g2
17647c478bd9Sstevel@tonic-gate/* 0x098c	     */		ld	[%fp+88],%o1
17657c478bd9Sstevel@tonic-gate/* 0x0990	     */		srl	%o0,0,%g3
17667c478bd9Sstevel@tonic-gate/* 0x0994	     */		and	%o5,%g2,%g2
17677c478bd9Sstevel@tonic-gate/* 0x0998	     */		and	%o7,%g3,%g4
17687c478bd9Sstevel@tonic-gate/* 0x099c	     */		sllx	%g2,16,%g2
17697c478bd9Sstevel@tonic-gate/* 0x09a0	     */		add	%o4,%g4,%g4
17707c478bd9Sstevel@tonic-gate/* 0x09a4	     */		add	%g4,%g2,%g2
17717c478bd9Sstevel@tonic-gate/* 0x09a8	     */		sll	%i0,2,%g4
17727c478bd9Sstevel@tonic-gate/* 0x09ac	     */		and	%g2,%g3,%g2
17737c478bd9Sstevel@tonic-gate/* 0x09b0	     */		st	%g2,[%o3+%g4]
17747c478bd9Sstevel@tonic-gate/* 0x09b4	 281 */		sll	%g1,2,%g2
17757c478bd9Sstevel@tonic-gate/* 0x09b8	     */		ld	[%o3+%g2],%g2
17767c478bd9Sstevel@tonic-gate/* 0x09bc	     */		cmp	%g2,0
17777c478bd9Sstevel@tonic-gate/* 0x09c0	     */		bleu,pn	%icc,.L77000241
17787c478bd9Sstevel@tonic-gate/* 0x09c4	     */		or	%g0,-1,%o5
17797c478bd9Sstevel@tonic-gate/* 0x09c8	     */		ba	.L900000647
17807c478bd9Sstevel@tonic-gate/* 0x09cc	     */		cmp	%o5,0
17817c478bd9Sstevel@tonic-gate                       .L77000241:
17827c478bd9Sstevel@tonic-gate/* 0x09d0	     */		subcc	%g1,1,%o5
17837c478bd9Sstevel@tonic-gate/* 0x09d4	     */		bneg,pt	%icc,.L900000647
17847c478bd9Sstevel@tonic-gate/* 0x09d8	     */		cmp	%o5,0
17857c478bd9Sstevel@tonic-gate/* 0x09dc	     */		sll	%o5,2,%g2
17867c478bd9Sstevel@tonic-gate/* 0x09e0	     */		add	%o1,%g2,%o0
17877c478bd9Sstevel@tonic-gate/* 0x09e4	     */		add	%o3,%g2,%o4
17887c478bd9Sstevel@tonic-gate/* 0x09e8	     */		ld	[%o0],%g2
17897c478bd9Sstevel@tonic-gate                       .L900000646:
17907c478bd9Sstevel@tonic-gate/* 0x09ec	     */		ld	[%o4],%g3
17917c478bd9Sstevel@tonic-gate/* 0x09f0	     */		sub	%o0,4,%o0
17927c478bd9Sstevel@tonic-gate/* 0x09f4	     */		sub	%o4,4,%o4
17937c478bd9Sstevel@tonic-gate/* 0x09f8	     */		cmp	%g3,%g2
17947c478bd9Sstevel@tonic-gate/* 0x09fc	     */		bne,pn	%icc,.L77000244
17957c478bd9Sstevel@tonic-gate/* 0x0a00	     */		nop
17967c478bd9Sstevel@tonic-gate/* 0x0a04	     */		subcc	%o5,1,%o5
17977c478bd9Sstevel@tonic-gate/* 0x0a08	     */		bpos,a,pt	%icc,.L900000646
17987c478bd9Sstevel@tonic-gate/* 0x0a0c	     */		ld	[%o0],%g2
17997c478bd9Sstevel@tonic-gate                       .L77000244:
18007c478bd9Sstevel@tonic-gate/* 0x0a10	     */		cmp	%o5,0
18017c478bd9Sstevel@tonic-gate                       .L900000647:
18027c478bd9Sstevel@tonic-gate/* 0x0a14	     */		bl,pn	%icc,.L77000287
18037c478bd9Sstevel@tonic-gate/* 0x0a18	     */		sll	%o5,2,%g2
18047c478bd9Sstevel@tonic-gate/* 0x0a1c	     */		ld	[%o1+%g2],%g3
18057c478bd9Sstevel@tonic-gate/* 0x0a20	     */		ld	[%o3+%g2],%g2
18067c478bd9Sstevel@tonic-gate/* 0x0a24	     */		cmp	%g2,%g3
18077c478bd9Sstevel@tonic-gate/* 0x0a28	     */		bleu,pt	%icc,.L77000224
18087c478bd9Sstevel@tonic-gate/* 0x0a2c	     */		nop
18097c478bd9Sstevel@tonic-gate                       .L77000287:
18107c478bd9Sstevel@tonic-gate/* 0x0a30	     */		cmp	%g1,0
18117c478bd9Sstevel@tonic-gate/* 0x0a34	     */		ble,pt	%icc,.L77000224
18127c478bd9Sstevel@tonic-gate/* 0x0a38	     */		nop
18137c478bd9Sstevel@tonic-gate/* 0x0a3c	 281 */		sub	%g1,1,%o7
18147c478bd9Sstevel@tonic-gate/* 0x0a40	     */		or	%g0,-1,%g2
18157c478bd9Sstevel@tonic-gate/* 0x0a44	     */		srl	%g2,0,%o4
18167c478bd9Sstevel@tonic-gate/* 0x0a48	     */		add	%o7,1,%o0
18177c478bd9Sstevel@tonic-gate/* 0x0a4c	     */		or	%g0,%o1,%o2
18187c478bd9Sstevel@tonic-gate/* 0x0a50	 279 */		or	%g0,0,%o5
18197c478bd9Sstevel@tonic-gate/* 0x0a54	     */		or	%g0,0,%g1
18207c478bd9Sstevel@tonic-gate/* 0x0a58	     */		cmp	%o0,3
18217c478bd9Sstevel@tonic-gate/* 0x0a5c	     */		add	%o1,4,%o0
18227c478bd9Sstevel@tonic-gate/* 0x0a60	     */		bl,pn	%icc,.L77000288
18237c478bd9Sstevel@tonic-gate/* 0x0a64	     */		add	%o3,8,%o1
18247c478bd9Sstevel@tonic-gate/* 0x0a68	     */		ld	[%o0-4],%g3
18257c478bd9Sstevel@tonic-gate/* 0x0a6c	   0 */		or	%g0,%o1,%o3
18267c478bd9Sstevel@tonic-gate/* 0x0a70	     */		or	%g0,%o0,%o2
18277c478bd9Sstevel@tonic-gate/* 0x0a74	 279 */		ld	[%o1-8],%g2
18287c478bd9Sstevel@tonic-gate/* 0x0a78	     */		or	%g0,2,%g1
18297c478bd9Sstevel@tonic-gate/* 0x0a7c	     */		ld	[%o3-4],%o0
18307c478bd9Sstevel@tonic-gate/* 0x0a80	     */		sub	%g2,%g3,%g2
18317c478bd9Sstevel@tonic-gate/* 0x0a84	     */		or	%g0,%g2,%o5
18327c478bd9Sstevel@tonic-gate/* 0x0a88	     */		and	%g2,%o4,%g2
18337c478bd9Sstevel@tonic-gate/* 0x0a8c	     */		st	%g2,[%o3-8]
18347c478bd9Sstevel@tonic-gate/* 0x0a90	     */		srax	%o5,32,%o5
18357c478bd9Sstevel@tonic-gate                       .L900000636:
18367c478bd9Sstevel@tonic-gate/* 0x0a94	     */		ld	[%o2],%g2
18377c478bd9Sstevel@tonic-gate/* 0x0a98	     */		add	%g1,1,%g1
18387c478bd9Sstevel@tonic-gate/* 0x0a9c	     */		add	%o2,4,%o2
18397c478bd9Sstevel@tonic-gate/* 0x0aa0	     */		cmp	%g1,%o7
18407c478bd9Sstevel@tonic-gate/* 0x0aa4	     */		add	%o3,4,%o3
18417c478bd9Sstevel@tonic-gate/* 0x0aa8	     */		sub	%o0,%g2,%o0
18427c478bd9Sstevel@tonic-gate/* 0x0aac	     */		add	%o0,%o5,%o5
18437c478bd9Sstevel@tonic-gate/* 0x0ab0	     */		and	%o5,%o4,%g2
18447c478bd9Sstevel@tonic-gate/* 0x0ab4	     */		ld	[%o3-4],%o0
18457c478bd9Sstevel@tonic-gate/* 0x0ab8	     */		st	%g2,[%o3-8]
18467c478bd9Sstevel@tonic-gate/* 0x0abc	     */		ble,pt	%icc,.L900000636
18477c478bd9Sstevel@tonic-gate/* 0x0ac0	     */		srax	%o5,32,%o5
18487c478bd9Sstevel@tonic-gate                       .L900000639:
18497c478bd9Sstevel@tonic-gate/* 0x0ac4	     */		ld	[%o2],%o1
18507c478bd9Sstevel@tonic-gate/* 0x0ac8	     */		sub	%o0,%o1,%o0
18517c478bd9Sstevel@tonic-gate/* 0x0acc	     */		add	%o0,%o5,%o0
18527c478bd9Sstevel@tonic-gate/* 0x0ad0	     */		and	%o0,%o4,%o1
18537c478bd9Sstevel@tonic-gate/* 0x0ad4	     */		st	%o1,[%o3-4]
1854*55fea89dSDan Cross/* 0x0ad8	     */		ret	! Result =
18557c478bd9Sstevel@tonic-gate/* 0x0adc	     */		restore	%g0,%g0,%g0
18567c478bd9Sstevel@tonic-gate                       .L77000288:
18577c478bd9Sstevel@tonic-gate/* 0x0ae0	     */		ld	[%o3],%o0
18587c478bd9Sstevel@tonic-gate                       .L900000645:
18597c478bd9Sstevel@tonic-gate/* 0x0ae4	     */		ld	[%o2],%o1
18607c478bd9Sstevel@tonic-gate/* 0x0ae8	     */		add	%o5,%o0,%o0
18617c478bd9Sstevel@tonic-gate/* 0x0aec	     */		add	%g1,1,%g1
18627c478bd9Sstevel@tonic-gate/* 0x0af0	     */		add	%o2,4,%o2
18637c478bd9Sstevel@tonic-gate/* 0x0af4	     */		cmp	%g1,%o7
18647c478bd9Sstevel@tonic-gate/* 0x0af8	     */		sub	%o0,%o1,%o0
18657c478bd9Sstevel@tonic-gate/* 0x0afc	     */		and	%o0,%o4,%o1
18667c478bd9Sstevel@tonic-gate/* 0x0b00	     */		st	%o1,[%o3]
18677c478bd9Sstevel@tonic-gate/* 0x0b04	     */		add	%o3,4,%o3
18687c478bd9Sstevel@tonic-gate/* 0x0b08	     */		srax	%o0,32,%o5
18697c478bd9Sstevel@tonic-gate/* 0x0b0c	     */		ble,a,pt	%icc,.L900000645
18707c478bd9Sstevel@tonic-gate/* 0x0b10	     */		ld	[%o3],%o0
18717c478bd9Sstevel@tonic-gate                       .L77000224:
1872*55fea89dSDan Cross/* 0x0b14	     */		ret	! Result =
18737c478bd9Sstevel@tonic-gate/* 0x0b18	     */		restore	%g0,%g0,%g0
18747c478bd9Sstevel@tonic-gate/* 0x0b1c	   0 */		.type	mont_mulf_noconv,2
18757c478bd9Sstevel@tonic-gate/* 0x0b1c	     */		.size	mont_mulf_noconv,(.-mont_mulf_noconv)
18767c478bd9Sstevel@tonic-gate
18777c478bd9Sstevel@tonic-gate! Begin Disassembling Stabs
18787c478bd9Sstevel@tonic-gate	.xstabs	".stab.index","Xa ; O ; P ; V=3.1 ; R=WorkShop Compilers 5.0 99/02/25 C 5.0 patch 107289-01",60,0,0,0	! (/tmp/acompAAAhNaOly:1)
18797c478bd9Sstevel@tonic-gate	.xstabs	".stab.index","/home/ferenc/venus/userland/rsa; /usr/dist/pkgs/devpro,v5.0/5.x-sparc/SC5.0/bin/cc -fast -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -xchip=ultra2 -KPIC -Wc,-Qrm-Qd -Wc,-Qrm-Qf -Wc,-assembly -V -c proba.il -o mont_mulf.o  mont_mulf.c -W0,-xp",52,0,0,0	! (/tmp/acompAAAhNaOly:2)
18807c478bd9Sstevel@tonic-gate! End Disassembling Stabs
18817c478bd9Sstevel@tonic-gate
18827c478bd9Sstevel@tonic-gate! Begin Disassembling Ident
18837c478bd9Sstevel@tonic-gate	.ident	"cg: WorkShop Compilers 5.0 99/04/15 Compiler Common 5.0 Patch 107357-02"	! (NO SOURCE LINE)
18847c478bd9Sstevel@tonic-gate	.ident	"acomp: WorkShop Compilers 5.0 99/02/25 C 5.0 patch 107289-01"	! (/tmp/acompAAAhNaOly:31)
18857c478bd9Sstevel@tonic-gate! End Disassembling Ident
1886