xref: /illumos-gate/usr/src/common/bignum/sun4u/mont_mulf_v8plus.s (revision 7c478bd95313f5f23a4c958a745db2134aa0324)
1*7c478bd9Sstevel@tonic-gate/*
2*7c478bd9Sstevel@tonic-gate * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate *
4*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate * with the License.
8*7c478bd9Sstevel@tonic-gate *
9*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate *
14*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate *
20*7c478bd9Sstevel@tonic-gate * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate */
22*7c478bd9Sstevel@tonic-gate/*
23*7c478bd9Sstevel@tonic-gate * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
24*7c478bd9Sstevel@tonic-gate * Use is subject to license terms.
25*7c478bd9Sstevel@tonic-gate */
26*7c478bd9Sstevel@tonic-gate
27*7c478bd9Sstevel@tonic-gate#pragma ident	"%Z%%M%	%I%	%E% SMI"
28*7c478bd9Sstevel@tonic-gate
29*7c478bd9Sstevel@tonic-gate
30*7c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
31*7c478bd9Sstevel@tonic-gate	.file	"mont_mulf_asm_v8plus.s"
32*7c478bd9Sstevel@tonic-gate
33*7c478bd9Sstevel@tonic-gate/*
34*7c478bd9Sstevel@tonic-gate * This file is a result of compiling the mont_mulf.c file to generate an
35*7c478bd9Sstevel@tonic-gate * assembly output and then hand-editing that output to replace the
36*7c478bd9Sstevel@tonic-gate * compiler-generated loop for the 512-bit case (nlen == 16) in the
37*7c478bd9Sstevel@tonic-gate * mont_mulf_noconv routine with a hand-crafted version.
38*7c478bd9Sstevel@tonic-gate * To compile this:
39*7c478bd9Sstevel@tonic-gate *
40*7c478bd9Sstevel@tonic-gate * cc -c -xarch=v8plus -KPIC mont_mulf_asm.s
41*7c478bd9Sstevel@tonic-gate *
42*7c478bd9Sstevel@tonic-gate * Note, this file does not support sparcv9 (64-bit).
43*7c478bd9Sstevel@tonic-gate */
44*7c478bd9Sstevel@tonic-gate
45*7c478bd9Sstevel@tonic-gate
46*7c478bd9Sstevel@tonic-gate	.section	".rodata",#alloc
47*7c478bd9Sstevel@tonic-gate	.align	8
48*7c478bd9Sstevel@tonic-gate!
49*7c478bd9Sstevel@tonic-gate! CONSTANT POOL
50*7c478bd9Sstevel@tonic-gate!
51*7c478bd9Sstevel@tonic-gateTwoTo16:
52*7c478bd9Sstevel@tonic-gate	.word	1089470464
53*7c478bd9Sstevel@tonic-gate	.word	0
54*7c478bd9Sstevel@tonic-gate	.type	TwoTo16,#object
55*7c478bd9Sstevel@tonic-gate	.size	TwoTo16,8
56*7c478bd9Sstevel@tonic-gate!
57*7c478bd9Sstevel@tonic-gate! CONSTANT POOL
58*7c478bd9Sstevel@tonic-gate!
59*7c478bd9Sstevel@tonic-gateTwoToMinus16:
60*7c478bd9Sstevel@tonic-gate	.word	1055916032
61*7c478bd9Sstevel@tonic-gate	.word	0
62*7c478bd9Sstevel@tonic-gate	.type	TwoToMinus16,#object
63*7c478bd9Sstevel@tonic-gate	.size	TwoToMinus16,8
64*7c478bd9Sstevel@tonic-gate!
65*7c478bd9Sstevel@tonic-gate! CONSTANT POOL
66*7c478bd9Sstevel@tonic-gate!
67*7c478bd9Sstevel@tonic-gateZero:
68*7c478bd9Sstevel@tonic-gate	.word	0
69*7c478bd9Sstevel@tonic-gate	.word	0
70*7c478bd9Sstevel@tonic-gate	.type	Zero,#object
71*7c478bd9Sstevel@tonic-gate	.size	Zero,8
72*7c478bd9Sstevel@tonic-gate!
73*7c478bd9Sstevel@tonic-gate! CONSTANT POOL
74*7c478bd9Sstevel@tonic-gate!
75*7c478bd9Sstevel@tonic-gateTwoTo32:
76*7c478bd9Sstevel@tonic-gate	.word	1106247680
77*7c478bd9Sstevel@tonic-gate	.word	0
78*7c478bd9Sstevel@tonic-gate	.type	TwoTo32,#object
79*7c478bd9Sstevel@tonic-gate	.size	TwoTo32,8
80*7c478bd9Sstevel@tonic-gate!
81*7c478bd9Sstevel@tonic-gate! CONSTANT POOL
82*7c478bd9Sstevel@tonic-gate!
83*7c478bd9Sstevel@tonic-gateTwoToMinus32:
84*7c478bd9Sstevel@tonic-gate	.word	1039138816
85*7c478bd9Sstevel@tonic-gate	.word	0
86*7c478bd9Sstevel@tonic-gate	.type	TwoToMinus32,#object
87*7c478bd9Sstevel@tonic-gate	.size	TwoToMinus32,8
88*7c478bd9Sstevel@tonic-gate
89*7c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
90*7c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	4
91*7c478bd9Sstevel@tonic-gate!
92*7c478bd9Sstevel@tonic-gate! SUBROUTINE conv_d16_to_i32
93*7c478bd9Sstevel@tonic-gate!
94*7c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
95*7c478bd9Sstevel@tonic-gate
96*7c478bd9Sstevel@tonic-gate                       	.global conv_d16_to_i32
97*7c478bd9Sstevel@tonic-gate                       conv_d16_to_i32:
98*7c478bd9Sstevel@tonic-gate/* 000000	     */		save	%sp,-128,%sp
99*7c478bd9Sstevel@tonic-gate! FILE mont_mulf.c
100*7c478bd9Sstevel@tonic-gate
101*7c478bd9Sstevel@tonic-gate!    1		      !#define RF_INLINE_MACROS
102*7c478bd9Sstevel@tonic-gate!    3		      !static const double TwoTo16=65536.0;
103*7c478bd9Sstevel@tonic-gate!    4		      !static const double TwoToMinus16=1.0/65536.0;
104*7c478bd9Sstevel@tonic-gate!    5		      !static const double Zero=0.0;
105*7c478bd9Sstevel@tonic-gate!    6		      !static const double TwoTo32=65536.0*65536.0;
106*7c478bd9Sstevel@tonic-gate!    7		      !static const double TwoToMinus32=1.0/(65536.0*65536.0);
107*7c478bd9Sstevel@tonic-gate!    9		      !#ifdef RF_INLINE_MACROS
108*7c478bd9Sstevel@tonic-gate!   11		      !double upper32(double);
109*7c478bd9Sstevel@tonic-gate!   12		      !double lower32(double, double);
110*7c478bd9Sstevel@tonic-gate!   13		      !double mod(double, double, double);
111*7c478bd9Sstevel@tonic-gate!   15		      !#else
112*7c478bd9Sstevel@tonic-gate!   17		      !static double upper32(double x)
113*7c478bd9Sstevel@tonic-gate!   18		      !{
114*7c478bd9Sstevel@tonic-gate!   19		      !  return floor(x*TwoToMinus32);
115*7c478bd9Sstevel@tonic-gate!   20		      !}
116*7c478bd9Sstevel@tonic-gate!   22		      !static double lower32(double x, double y)
117*7c478bd9Sstevel@tonic-gate!   23		      !{
118*7c478bd9Sstevel@tonic-gate!   24		      !  return x-TwoTo32*floor(x*TwoToMinus32);
119*7c478bd9Sstevel@tonic-gate!   25		      !}
120*7c478bd9Sstevel@tonic-gate!   27		      !static double mod(double x, double oneoverm, double m)
121*7c478bd9Sstevel@tonic-gate!   28		      !{
122*7c478bd9Sstevel@tonic-gate!   29		      !  return x-m*floor(x*oneoverm);
123*7c478bd9Sstevel@tonic-gate!   30		      !}
124*7c478bd9Sstevel@tonic-gate!   32		      !#endif
125*7c478bd9Sstevel@tonic-gate!   35		      !static void cleanup(double *dt, int from, int tlen)
126*7c478bd9Sstevel@tonic-gate!   36		      !{
127*7c478bd9Sstevel@tonic-gate!   37		      ! int i;
128*7c478bd9Sstevel@tonic-gate!   38		      ! double tmp,tmp1,x,x1;
129*7c478bd9Sstevel@tonic-gate!   40		      ! tmp=tmp1=Zero;
130*7c478bd9Sstevel@tonic-gate!   41		      ! /* original code **
131*7c478bd9Sstevel@tonic-gate!   42		      ! for(i=2*from;i<2*tlen-2;i++)
132*7c478bd9Sstevel@tonic-gate!   43		      !   {
133*7c478bd9Sstevel@tonic-gate!   44		      !     x=dt[i];
134*7c478bd9Sstevel@tonic-gate!   45		      !     dt[i]=lower32(x,Zero)+tmp1;
135*7c478bd9Sstevel@tonic-gate!   46		      !     tmp1=tmp;
136*7c478bd9Sstevel@tonic-gate!   47		      !     tmp=upper32(x);
137*7c478bd9Sstevel@tonic-gate!   48		      !   }
138*7c478bd9Sstevel@tonic-gate!   49		      ! dt[tlen-2]+=tmp1;
139*7c478bd9Sstevel@tonic-gate!   50		      ! dt[tlen-1]+=tmp;
140*7c478bd9Sstevel@tonic-gate!   51		      ! **end original code ***/
141*7c478bd9Sstevel@tonic-gate!   52		      ! /* new code ***/
142*7c478bd9Sstevel@tonic-gate!   53		      ! for(i=2*from;i<2*tlen;i+=2)
143*7c478bd9Sstevel@tonic-gate!   54		      !   {
144*7c478bd9Sstevel@tonic-gate!   55		      !     x=dt[i];
145*7c478bd9Sstevel@tonic-gate!   56		      !     x1=dt[i+1];
146*7c478bd9Sstevel@tonic-gate!   57		      !     dt[i]=lower32(x,Zero)+tmp;
147*7c478bd9Sstevel@tonic-gate!   58		      !     dt[i+1]=lower32(x1,Zero)+tmp1;
148*7c478bd9Sstevel@tonic-gate!   59		      !     tmp=upper32(x);
149*7c478bd9Sstevel@tonic-gate!   60		      !     tmp1=upper32(x1);
150*7c478bd9Sstevel@tonic-gate!   61		      !   }
151*7c478bd9Sstevel@tonic-gate!   62		      !  /** end new code **/
152*7c478bd9Sstevel@tonic-gate!   63		      !}
153*7c478bd9Sstevel@tonic-gate!   66		      !void conv_d16_to_i32(unsigned int *i32, double *d16, long long *tmp, int ilen)
154*7c478bd9Sstevel@tonic-gate!   67		      !{
155*7c478bd9Sstevel@tonic-gate!   68		      !int i;
156*7c478bd9Sstevel@tonic-gate!   69		      !long long t, t1, a, b, c, d;
157*7c478bd9Sstevel@tonic-gate!   71		      ! t1=0;
158*7c478bd9Sstevel@tonic-gate!   72		      ! a=(long long)d16[0];
159*7c478bd9Sstevel@tonic-gate
160*7c478bd9Sstevel@tonic-gate/* 0x0004	  72 */		ldd	[%i1],%f0
161*7c478bd9Sstevel@tonic-gate/* 0x0008	  67 */		or	%g0,%i1,%o0
162*7c478bd9Sstevel@tonic-gate
163*7c478bd9Sstevel@tonic-gate!   73		      ! b=(long long)d16[1];
164*7c478bd9Sstevel@tonic-gate!   74		      ! for(i=0; i<ilen-1; i++)
165*7c478bd9Sstevel@tonic-gate
166*7c478bd9Sstevel@tonic-gate/* 0x000c	  74 */		sub	%i3,1,%g2
167*7c478bd9Sstevel@tonic-gate/* 0x0010	     */		cmp	%g2,0
168*7c478bd9Sstevel@tonic-gate/* 0x0014	  71 */		or	%g0,0,%o4
169*7c478bd9Sstevel@tonic-gate/* 0x0018	  72 */		fdtox	%f0,%f0
170*7c478bd9Sstevel@tonic-gate/* 0x001c	     */		std	%f0,[%sp+120]
171*7c478bd9Sstevel@tonic-gate/* 0x0020	  74 */		or	%g0,0,%o7
172*7c478bd9Sstevel@tonic-gate/* 0x0024	  67 */		or	%g0,%i3,%o1
173*7c478bd9Sstevel@tonic-gate/* 0x0028	     */		sub	%i3,2,%o2
174*7c478bd9Sstevel@tonic-gate/* 0x002c	  73 */		ldd	[%o0+8],%f0
175*7c478bd9Sstevel@tonic-gate/* 0x0030	  67 */		sethi	%hi(0xfc00),%o1
176*7c478bd9Sstevel@tonic-gate/* 0x0034	     */		add	%o2,1,%g3
177*7c478bd9Sstevel@tonic-gate/* 0x0038	     */		add	%o1,1023,%o1
178*7c478bd9Sstevel@tonic-gate/* 0x003c	     */		or	%g0,%i0,%o5
179*7c478bd9Sstevel@tonic-gate/* 0x0040	  73 */		fdtox	%f0,%f0
180*7c478bd9Sstevel@tonic-gate/* 0x0044	     */		std	%f0,[%sp+112]
181*7c478bd9Sstevel@tonic-gate/* 0x0048	     */		ldx	[%sp+112],%g1
182*7c478bd9Sstevel@tonic-gate/* 0x004c	  72 */		ldx	[%sp+120],%g4
183*7c478bd9Sstevel@tonic-gate/* 0x0050	  74 */		ble,pt	%icc,.L900000117
184*7c478bd9Sstevel@tonic-gate/* 0x0054	     */		sethi	%hi(0xfc00),%g2
185*7c478bd9Sstevel@tonic-gate/* 0x0058	  67 */		or	%g0,-1,%g2
186*7c478bd9Sstevel@tonic-gate/* 0x005c	  74 */		cmp	%g3,3
187*7c478bd9Sstevel@tonic-gate/* 0x0060	  67 */		srl	%g2,0,%o3
188*7c478bd9Sstevel@tonic-gate/* 0x0064	  74 */		bl,pn	%icc,.L77000134
189*7c478bd9Sstevel@tonic-gate/* 0x0068	     */		or	%g0,%o0,%g2
190*7c478bd9Sstevel@tonic-gate
191*7c478bd9Sstevel@tonic-gate!   75		      !   {
192*7c478bd9Sstevel@tonic-gate!   76		      !     c=(long long)d16[2*i+2];
193*7c478bd9Sstevel@tonic-gate
194*7c478bd9Sstevel@tonic-gate/* 0x006c	  76 */		ldd	[%o0+16],%f0
195*7c478bd9Sstevel@tonic-gate
196*7c478bd9Sstevel@tonic-gate!   77		      !     t1+=a&0xffffffff;
197*7c478bd9Sstevel@tonic-gate!   78		      !     t=(a>>32);
198*7c478bd9Sstevel@tonic-gate!   79		      !     d=(long long)d16[2*i+3];
199*7c478bd9Sstevel@tonic-gate!   80		      !     t1+=(b&0xffff)<<16;
200*7c478bd9Sstevel@tonic-gate!   81		      !     t+=(b>>16)+(t1>>32);
201*7c478bd9Sstevel@tonic-gate!   82		      !     i32[i]=t1&0xffffffff;
202*7c478bd9Sstevel@tonic-gate!   83		      !     t1=t;
203*7c478bd9Sstevel@tonic-gate!   84		      !     a=c;
204*7c478bd9Sstevel@tonic-gate!   85		      !     b=d;
205*7c478bd9Sstevel@tonic-gate
206*7c478bd9Sstevel@tonic-gate/* 0x0070	  85 */		add	%o0,16,%g2
207*7c478bd9Sstevel@tonic-gate/* 0x0074	  80 */		and	%g1,%o1,%o0
208*7c478bd9Sstevel@tonic-gate/* 0x0078	     */		sllx	%o0,16,%g3
209*7c478bd9Sstevel@tonic-gate/* 0x007c	  77 */		and	%g4,%o3,%o0
210*7c478bd9Sstevel@tonic-gate/* 0x0080	  74 */		add	%o0,%g3,%o4
211*7c478bd9Sstevel@tonic-gate/* 0x0084	  76 */		fdtox	%f0,%f0
212*7c478bd9Sstevel@tonic-gate/* 0x0088	     */		std	%f0,[%sp+104]
213*7c478bd9Sstevel@tonic-gate/* 0x008c	  82 */		and	%o4,%o3,%g5
214*7c478bd9Sstevel@tonic-gate/* 0x0090	  79 */		ldd	[%g2+8],%f2
215*7c478bd9Sstevel@tonic-gate/* 0x0094	  85 */		add	%o5,4,%o5
216*7c478bd9Sstevel@tonic-gate/* 0x0098	  81 */		srax	%o4,32,%o4
217*7c478bd9Sstevel@tonic-gate/* 0x009c	     */		stx	%o4,[%sp+112]
218*7c478bd9Sstevel@tonic-gate/* 0x00a0	  79 */		fdtox	%f2,%f0
219*7c478bd9Sstevel@tonic-gate/* 0x00a4	     */		std	%f0,[%sp+96]
220*7c478bd9Sstevel@tonic-gate/* 0x00a8	  81 */		srax	%g1,16,%o0
221*7c478bd9Sstevel@tonic-gate/* 0x00ac	     */		ldx	[%sp+112],%o7
222*7c478bd9Sstevel@tonic-gate/* 0x00b0	  78 */		srax	%g4,32,%o4
223*7c478bd9Sstevel@tonic-gate/* 0x00b4	  81 */		add	%o0,%o7,%g4
224*7c478bd9Sstevel@tonic-gate/* 0x00b8	  85 */		or	%g0,1,%o7
225*7c478bd9Sstevel@tonic-gate/* 0x00bc	  76 */		ldx	[%sp+104],%g3
226*7c478bd9Sstevel@tonic-gate/* 0x00c0	  81 */		add	%o4,%g4,%o4
227*7c478bd9Sstevel@tonic-gate/* 0x00c4	  79 */		ldx	[%sp+96],%g1
228*7c478bd9Sstevel@tonic-gate/* 0x00c8	  82 */		st	%g5,[%o5-4]
229*7c478bd9Sstevel@tonic-gate/* 0x00cc	  84 */		or	%g0,%g3,%g4
230*7c478bd9Sstevel@tonic-gate                       .L900000112:
231*7c478bd9Sstevel@tonic-gate/* 0x00d0	  76 */		ldd	[%g2+16],%f0
232*7c478bd9Sstevel@tonic-gate/* 0x00d4	  85 */		add	%o7,1,%o7
233*7c478bd9Sstevel@tonic-gate/* 0x00d8	     */		add	%o5,4,%o5
234*7c478bd9Sstevel@tonic-gate/* 0x00dc	     */		cmp	%o7,%o2
235*7c478bd9Sstevel@tonic-gate/* 0x00e0	     */		add	%g2,16,%g2
236*7c478bd9Sstevel@tonic-gate/* 0x00e4	  76 */		fdtox	%f0,%f0
237*7c478bd9Sstevel@tonic-gate/* 0x00e8	     */		std	%f0,[%sp+104]
238*7c478bd9Sstevel@tonic-gate/* 0x00ec	  79 */		ldd	[%g2+8],%f0
239*7c478bd9Sstevel@tonic-gate/* 0x00f0	     */		fdtox	%f0,%f0
240*7c478bd9Sstevel@tonic-gate/* 0x00f4	     */		std	%f0,[%sp+96]
241*7c478bd9Sstevel@tonic-gate/* 0x00f8	  80 */		and	%g1,%o1,%g3
242*7c478bd9Sstevel@tonic-gate/* 0x00fc	     */		sllx	%g3,16,%g5
243*7c478bd9Sstevel@tonic-gate/* 0x0100	  77 */		and	%g4,%o3,%g3
244*7c478bd9Sstevel@tonic-gate/* 0x0104	  74 */		add	%g3,%g5,%g3
245*7c478bd9Sstevel@tonic-gate/* 0x0108	  81 */		srax	%g1,16,%g1
246*7c478bd9Sstevel@tonic-gate/* 0x010c	  74 */		add	%g3,%o4,%g3
247*7c478bd9Sstevel@tonic-gate/* 0x0110	  81 */		srax	%g3,32,%o4
248*7c478bd9Sstevel@tonic-gate/* 0x0114	     */		stx	%o4,[%sp+112]
249*7c478bd9Sstevel@tonic-gate/* 0x0118	  76 */		ldx	[%sp+104],%g5
250*7c478bd9Sstevel@tonic-gate/* 0x011c	  78 */		srax	%g4,32,%o4
251*7c478bd9Sstevel@tonic-gate/* 0x0120	  81 */		ldx	[%sp+112],%g4
252*7c478bd9Sstevel@tonic-gate/* 0x0124	     */		add	%g1,%g4,%g4
253*7c478bd9Sstevel@tonic-gate/* 0x0128	  79 */		ldx	[%sp+96],%g1
254*7c478bd9Sstevel@tonic-gate/* 0x012c	  81 */		add	%o4,%g4,%o4
255*7c478bd9Sstevel@tonic-gate/* 0x0130	  82 */		and	%g3,%o3,%g3
256*7c478bd9Sstevel@tonic-gate/* 0x0134	  84 */		or	%g0,%g5,%g4
257*7c478bd9Sstevel@tonic-gate/* 0x0138	  85 */		ble,pt	%icc,.L900000112
258*7c478bd9Sstevel@tonic-gate/* 0x013c	     */		st	%g3,[%o5-4]
259*7c478bd9Sstevel@tonic-gate                       .L900000115:
260*7c478bd9Sstevel@tonic-gate/* 0x0140	  85 */		ba	.L900000117
261*7c478bd9Sstevel@tonic-gate/* 0x0144	     */		sethi	%hi(0xfc00),%g2
262*7c478bd9Sstevel@tonic-gate                       .L77000134:
263*7c478bd9Sstevel@tonic-gate/* 0x0148	  76 */		ldd	[%g2+16],%f0
264*7c478bd9Sstevel@tonic-gate                       .L900000116:
265*7c478bd9Sstevel@tonic-gate/* 0x014c	  77 */		and	%g4,%o3,%o0
266*7c478bd9Sstevel@tonic-gate/* 0x0150	  80 */		and	%g1,%o1,%g3
267*7c478bd9Sstevel@tonic-gate/* 0x0154	  76 */		fdtox	%f0,%f0
268*7c478bd9Sstevel@tonic-gate/* 0x0158	  77 */		add	%o4,%o0,%o0
269*7c478bd9Sstevel@tonic-gate/* 0x015c	  76 */		std	%f0,[%sp+104]
270*7c478bd9Sstevel@tonic-gate/* 0x0160	  85 */		add	%o7,1,%o7
271*7c478bd9Sstevel@tonic-gate/* 0x0164	  80 */		sllx	%g3,16,%o4
272*7c478bd9Sstevel@tonic-gate/* 0x0168	  79 */		ldd	[%g2+24],%f2
273*7c478bd9Sstevel@tonic-gate/* 0x016c	  85 */		add	%g2,16,%g2
274*7c478bd9Sstevel@tonic-gate/* 0x0170	  80 */		add	%o0,%o4,%o0
275*7c478bd9Sstevel@tonic-gate/* 0x0174	  85 */		cmp	%o7,%o2
276*7c478bd9Sstevel@tonic-gate/* 0x0178	  82 */		and	%o0,%o3,%g3
277*7c478bd9Sstevel@tonic-gate/* 0x017c	  79 */		fdtox	%f2,%f0
278*7c478bd9Sstevel@tonic-gate/* 0x0180	     */		std	%f0,[%sp+96]
279*7c478bd9Sstevel@tonic-gate/* 0x0184	  81 */		srax	%o0,32,%o0
280*7c478bd9Sstevel@tonic-gate/* 0x0188	     */		stx	%o0,[%sp+112]
281*7c478bd9Sstevel@tonic-gate/* 0x018c	  78 */		srax	%g4,32,%o4
282*7c478bd9Sstevel@tonic-gate/* 0x0190	  79 */		ldx	[%sp+96],%o0
283*7c478bd9Sstevel@tonic-gate/* 0x0194	  81 */		srax	%g1,16,%g5
284*7c478bd9Sstevel@tonic-gate/* 0x0198	     */		ldx	[%sp+112],%g4
285*7c478bd9Sstevel@tonic-gate/* 0x019c	  76 */		ldx	[%sp+104],%g1
286*7c478bd9Sstevel@tonic-gate/* 0x01a0	  82 */		st	%g3,[%o5]
287*7c478bd9Sstevel@tonic-gate/* 0x01a4	  81 */		add	%g5,%g4,%g4
288*7c478bd9Sstevel@tonic-gate/* 0x01a8	  85 */		add	%o5,4,%o5
289*7c478bd9Sstevel@tonic-gate/* 0x01ac	  81 */		add	%o4,%g4,%o4
290*7c478bd9Sstevel@tonic-gate/* 0x01b0	  84 */		or	%g0,%g1,%g4
291*7c478bd9Sstevel@tonic-gate/* 0x01b4	  85 */		or	%g0,%o0,%g1
292*7c478bd9Sstevel@tonic-gate/* 0x01b8	     */		ble,a,pt	%icc,.L900000116
293*7c478bd9Sstevel@tonic-gate/* 0x01bc	     */		ldd	[%g2+16],%f0
294*7c478bd9Sstevel@tonic-gate                       .L77000127:
295*7c478bd9Sstevel@tonic-gate
296*7c478bd9Sstevel@tonic-gate!   86		      !   }
297*7c478bd9Sstevel@tonic-gate!   87		      !     t1+=a&0xffffffff;
298*7c478bd9Sstevel@tonic-gate!   88		      !     t=(a>>32);
299*7c478bd9Sstevel@tonic-gate!   89		      !     t1+=(b&0xffff)<<16;
300*7c478bd9Sstevel@tonic-gate!   90		      !     i32[i]=t1&0xffffffff;
301*7c478bd9Sstevel@tonic-gate
302*7c478bd9Sstevel@tonic-gate/* 0x01c0	  90 */		sethi	%hi(0xfc00),%g2
303*7c478bd9Sstevel@tonic-gate                       .L900000117:
304*7c478bd9Sstevel@tonic-gate/* 0x01c4	  90 */		or	%g0,-1,%g3
305*7c478bd9Sstevel@tonic-gate/* 0x01c8	     */		add	%g2,1023,%g2
306*7c478bd9Sstevel@tonic-gate/* 0x01cc	     */		srl	%g3,0,%g3
307*7c478bd9Sstevel@tonic-gate/* 0x01d0	     */		and	%g1,%g2,%g2
308*7c478bd9Sstevel@tonic-gate/* 0x01d4	     */		and	%g4,%g3,%g4
309*7c478bd9Sstevel@tonic-gate/* 0x01d8	     */		sllx	%g2,16,%g2
310*7c478bd9Sstevel@tonic-gate/* 0x01dc	     */		add	%o4,%g4,%g4
311*7c478bd9Sstevel@tonic-gate/* 0x01e0	     */		add	%g4,%g2,%g2
312*7c478bd9Sstevel@tonic-gate/* 0x01e4	     */		sll	%o7,2,%g4
313*7c478bd9Sstevel@tonic-gate/* 0x01e8	     */		and	%g2,%g3,%g2
314*7c478bd9Sstevel@tonic-gate/* 0x01ec	     */		st	%g2,[%i0+%g4]
315*7c478bd9Sstevel@tonic-gate/* 0x01f0	     */		ret	! Result =
316*7c478bd9Sstevel@tonic-gate/* 0x01f4	     */		restore	%g0,%g0,%g0
317*7c478bd9Sstevel@tonic-gate/* 0x01f8	   0 */		.type	conv_d16_to_i32,2
318*7c478bd9Sstevel@tonic-gate/* 0x01f8	     */		.size	conv_d16_to_i32,(.-conv_d16_to_i32)
319*7c478bd9Sstevel@tonic-gate
320*7c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
321*7c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	8
322*7c478bd9Sstevel@tonic-gate!
323*7c478bd9Sstevel@tonic-gate! CONSTANT POOL
324*7c478bd9Sstevel@tonic-gate!
325*7c478bd9Sstevel@tonic-gate                       .L_const_seg_900000201:
326*7c478bd9Sstevel@tonic-gate/* 000000	   0 */		.word	1127219200,0
327*7c478bd9Sstevel@tonic-gate/* 0x0008	   0 */		.align	4
328*7c478bd9Sstevel@tonic-gate/* 0x0008	     */		.skip	16
329*7c478bd9Sstevel@tonic-gate!
330*7c478bd9Sstevel@tonic-gate! SUBROUTINE conv_i32_to_d32
331*7c478bd9Sstevel@tonic-gate!
332*7c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
333*7c478bd9Sstevel@tonic-gate
334*7c478bd9Sstevel@tonic-gate                       	.global conv_i32_to_d32
335*7c478bd9Sstevel@tonic-gate                       conv_i32_to_d32:
336*7c478bd9Sstevel@tonic-gate/* 000000	     */		or	%g0,%o7,%g2
337*7c478bd9Sstevel@tonic-gate/* 0x0004	     */		or	%g0,%o1,%g4
338*7c478bd9Sstevel@tonic-gate                       .L900000210:
339*7c478bd9Sstevel@tonic-gate/* 0x0008	     */		call	.+8
340*7c478bd9Sstevel@tonic-gate/* 0x000c	     */		sethi	/*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000210-.)),%g3
341*7c478bd9Sstevel@tonic-gate
342*7c478bd9Sstevel@tonic-gate!   92		      !}
343*7c478bd9Sstevel@tonic-gate!   94		      !void conv_i32_to_d32(double *d32, unsigned int *i32, int len)
344*7c478bd9Sstevel@tonic-gate!   95		      !{
345*7c478bd9Sstevel@tonic-gate!   96		      !int i;
346*7c478bd9Sstevel@tonic-gate!   98		      !#pragma pipeloop(0)
347*7c478bd9Sstevel@tonic-gate!   99		      ! for(i=0;i<len;i++) d32[i]=(double)(i32[i]);
348*7c478bd9Sstevel@tonic-gate
349*7c478bd9Sstevel@tonic-gate/* 0x0010	  99 */		or	%g0,0,%o5
350*7c478bd9Sstevel@tonic-gate/* 0x0014	  95 */		add	%g3,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000210-.)),%g3
351*7c478bd9Sstevel@tonic-gate/* 0x0018	     */		or	%g0,%o0,%g5
352*7c478bd9Sstevel@tonic-gate/* 0x001c	     */		add	%g3,%o7,%g1
353*7c478bd9Sstevel@tonic-gate/* 0x0020	     */		orcc	%g0,%o2,%g3
354*7c478bd9Sstevel@tonic-gate/* 0x0024	  99 */		ble,pt	%icc,.L77000140
355*7c478bd9Sstevel@tonic-gate/* 0x0028	     */		or	%g0,%g2,%o7
356*7c478bd9Sstevel@tonic-gate/* 0x002c	     */		sethi	%hi(.L_const_seg_900000201),%g2
357*7c478bd9Sstevel@tonic-gate/* 0x0030	     */		add	%g2,%lo(.L_const_seg_900000201),%g2
358*7c478bd9Sstevel@tonic-gate/* 0x0034	     */		sub	%o2,1,%g3
359*7c478bd9Sstevel@tonic-gate/* 0x0038	     */		ld	[%g1+%g2],%g2
360*7c478bd9Sstevel@tonic-gate/* 0x003c	     */		cmp	%o2,9
361*7c478bd9Sstevel@tonic-gate/* 0x0040	     */		bl,pn	%icc,.L77000144
362*7c478bd9Sstevel@tonic-gate/* 0x0044	     */		ldd	[%g2],%f8
363*7c478bd9Sstevel@tonic-gate/* 0x0048	     */		add	%o1,16,%g4
364*7c478bd9Sstevel@tonic-gate/* 0x004c	     */		sub	%o2,5,%g1
365*7c478bd9Sstevel@tonic-gate/* 0x0050	     */		ld	[%o1],%f7
366*7c478bd9Sstevel@tonic-gate/* 0x0054	     */		or	%g0,4,%o5
367*7c478bd9Sstevel@tonic-gate/* 0x0058	     */		ld	[%o1+4],%f5
368*7c478bd9Sstevel@tonic-gate/* 0x005c	     */		ld	[%o1+8],%f3
369*7c478bd9Sstevel@tonic-gate/* 0x0060	     */		fmovs	%f8,%f6
370*7c478bd9Sstevel@tonic-gate/* 0x0064	     */		ld	[%o1+12],%f1
371*7c478bd9Sstevel@tonic-gate                       .L900000205:
372*7c478bd9Sstevel@tonic-gate/* 0x0068	     */		ld	[%g4],%f11
373*7c478bd9Sstevel@tonic-gate/* 0x006c	     */		add	%o5,5,%o5
374*7c478bd9Sstevel@tonic-gate/* 0x0070	     */		add	%g4,20,%g4
375*7c478bd9Sstevel@tonic-gate/* 0x0074	     */		fsubd	%f6,%f8,%f6
376*7c478bd9Sstevel@tonic-gate/* 0x0078	     */		std	%f6,[%g5]
377*7c478bd9Sstevel@tonic-gate/* 0x007c	     */		cmp	%o5,%g1
378*7c478bd9Sstevel@tonic-gate/* 0x0080	     */		add	%g5,40,%g5
379*7c478bd9Sstevel@tonic-gate/* 0x0084	     */		fmovs	%f8,%f4
380*7c478bd9Sstevel@tonic-gate/* 0x0088	     */		ld	[%g4-16],%f7
381*7c478bd9Sstevel@tonic-gate/* 0x008c	     */		fsubd	%f4,%f8,%f12
382*7c478bd9Sstevel@tonic-gate/* 0x0090	     */		fmovs	%f8,%f2
383*7c478bd9Sstevel@tonic-gate/* 0x0094	     */		std	%f12,[%g5-32]
384*7c478bd9Sstevel@tonic-gate/* 0x0098	     */		ld	[%g4-12],%f5
385*7c478bd9Sstevel@tonic-gate/* 0x009c	     */		fsubd	%f2,%f8,%f12
386*7c478bd9Sstevel@tonic-gate/* 0x00a0	     */		fmovs	%f8,%f0
387*7c478bd9Sstevel@tonic-gate/* 0x00a4	     */		std	%f12,[%g5-24]
388*7c478bd9Sstevel@tonic-gate/* 0x00a8	     */		ld	[%g4-8],%f3
389*7c478bd9Sstevel@tonic-gate/* 0x00ac	     */		fsubd	%f0,%f8,%f12
390*7c478bd9Sstevel@tonic-gate/* 0x00b0	     */		fmovs	%f8,%f10
391*7c478bd9Sstevel@tonic-gate/* 0x00b4	     */		std	%f12,[%g5-16]
392*7c478bd9Sstevel@tonic-gate/* 0x00b8	     */		ld	[%g4-4],%f1
393*7c478bd9Sstevel@tonic-gate/* 0x00bc	     */		fsubd	%f10,%f8,%f10
394*7c478bd9Sstevel@tonic-gate/* 0x00c0	     */		fmovs	%f8,%f6
395*7c478bd9Sstevel@tonic-gate/* 0x00c4	     */		ble,pt	%icc,.L900000205
396*7c478bd9Sstevel@tonic-gate/* 0x00c8	     */		std	%f10,[%g5-8]
397*7c478bd9Sstevel@tonic-gate                       .L900000208:
398*7c478bd9Sstevel@tonic-gate/* 0x00cc	     */		fmovs	%f8,%f4
399*7c478bd9Sstevel@tonic-gate/* 0x00d0	     */		add	%g5,32,%g5
400*7c478bd9Sstevel@tonic-gate/* 0x00d4	     */		cmp	%o5,%g3
401*7c478bd9Sstevel@tonic-gate/* 0x00d8	     */		fmovs	%f8,%f2
402*7c478bd9Sstevel@tonic-gate/* 0x00dc	     */		fmovs	%f8,%f0
403*7c478bd9Sstevel@tonic-gate/* 0x00e0	     */		fsubd	%f6,%f8,%f6
404*7c478bd9Sstevel@tonic-gate/* 0x00e4	     */		std	%f6,[%g5-32]
405*7c478bd9Sstevel@tonic-gate/* 0x00e8	     */		fsubd	%f4,%f8,%f4
406*7c478bd9Sstevel@tonic-gate/* 0x00ec	     */		std	%f4,[%g5-24]
407*7c478bd9Sstevel@tonic-gate/* 0x00f0	     */		fsubd	%f2,%f8,%f2
408*7c478bd9Sstevel@tonic-gate/* 0x00f4	     */		std	%f2,[%g5-16]
409*7c478bd9Sstevel@tonic-gate/* 0x00f8	     */		fsubd	%f0,%f8,%f0
410*7c478bd9Sstevel@tonic-gate/* 0x00fc	     */		bg,pn	%icc,.L77000140
411*7c478bd9Sstevel@tonic-gate/* 0x0100	     */		std	%f0,[%g5-8]
412*7c478bd9Sstevel@tonic-gate                       .L77000144:
413*7c478bd9Sstevel@tonic-gate/* 0x0104	     */		ld	[%g4],%f1
414*7c478bd9Sstevel@tonic-gate                       .L900000211:
415*7c478bd9Sstevel@tonic-gate/* 0x0108	     */		ldd	[%g2],%f8
416*7c478bd9Sstevel@tonic-gate/* 0x010c	     */		add	%o5,1,%o5
417*7c478bd9Sstevel@tonic-gate/* 0x0110	     */		add	%g4,4,%g4
418*7c478bd9Sstevel@tonic-gate/* 0x0114	     */		cmp	%o5,%g3
419*7c478bd9Sstevel@tonic-gate/* 0x0118	     */		fmovs	%f8,%f0
420*7c478bd9Sstevel@tonic-gate/* 0x011c	     */		fsubd	%f0,%f8,%f0
421*7c478bd9Sstevel@tonic-gate/* 0x0120	     */		std	%f0,[%g5]
422*7c478bd9Sstevel@tonic-gate/* 0x0124	     */		add	%g5,8,%g5
423*7c478bd9Sstevel@tonic-gate/* 0x0128	     */		ble,a,pt	%icc,.L900000211
424*7c478bd9Sstevel@tonic-gate/* 0x012c	     */		ld	[%g4],%f1
425*7c478bd9Sstevel@tonic-gate                       .L77000140:
426*7c478bd9Sstevel@tonic-gate/* 0x0130	     */		retl	! Result =
427*7c478bd9Sstevel@tonic-gate/* 0x0134	     */		nop
428*7c478bd9Sstevel@tonic-gate/* 0x0138	   0 */		.type	conv_i32_to_d32,2
429*7c478bd9Sstevel@tonic-gate/* 0x0138	     */		.size	conv_i32_to_d32,(.-conv_i32_to_d32)
430*7c478bd9Sstevel@tonic-gate
431*7c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
432*7c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	8
433*7c478bd9Sstevel@tonic-gate!
434*7c478bd9Sstevel@tonic-gate! CONSTANT POOL
435*7c478bd9Sstevel@tonic-gate!
436*7c478bd9Sstevel@tonic-gate                       .L_const_seg_900000301:
437*7c478bd9Sstevel@tonic-gate/* 000000	   0 */		.word	1127219200,0
438*7c478bd9Sstevel@tonic-gate/* 0x0008	   0 */		.align	4
439*7c478bd9Sstevel@tonic-gate/* 0x0008	     */		.skip	16
440*7c478bd9Sstevel@tonic-gate!
441*7c478bd9Sstevel@tonic-gate! SUBROUTINE conv_i32_to_d16
442*7c478bd9Sstevel@tonic-gate!
443*7c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
444*7c478bd9Sstevel@tonic-gate
445*7c478bd9Sstevel@tonic-gate                       	.global conv_i32_to_d16
446*7c478bd9Sstevel@tonic-gate                       conv_i32_to_d16:
447*7c478bd9Sstevel@tonic-gate/* 000000	     */		save	%sp,-104,%sp
448*7c478bd9Sstevel@tonic-gate                       .L900000310:
449*7c478bd9Sstevel@tonic-gate/* 0x0004	     */		call	.+8
450*7c478bd9Sstevel@tonic-gate/* 0x0008	     */		sethi	/*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000310-.)),%g3
451*7c478bd9Sstevel@tonic-gate/* 0x000c	     */		orcc	%g0,%i2,%o0
452*7c478bd9Sstevel@tonic-gate/* 0x0010	     */		add	%g3,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000310-.)),%g3
453*7c478bd9Sstevel@tonic-gate
454*7c478bd9Sstevel@tonic-gate!  100		      !}
455*7c478bd9Sstevel@tonic-gate!  103		      !void conv_i32_to_d16(double *d16, unsigned int *i32, int len)
456*7c478bd9Sstevel@tonic-gate!  104		      !{
457*7c478bd9Sstevel@tonic-gate!  105		      !int i;
458*7c478bd9Sstevel@tonic-gate!  106		      !unsigned int a;
459*7c478bd9Sstevel@tonic-gate!  108		      !#pragma pipeloop(0)
460*7c478bd9Sstevel@tonic-gate!  109		      ! for(i=0;i<len;i++)
461*7c478bd9Sstevel@tonic-gate
462*7c478bd9Sstevel@tonic-gate/* 0x0014	 109 */		ble,pt	%icc,.L77000150
463*7c478bd9Sstevel@tonic-gate/* 0x0018	     */		add	%g3,%o7,%o2
464*7c478bd9Sstevel@tonic-gate
465*7c478bd9Sstevel@tonic-gate!  110		      !   {
466*7c478bd9Sstevel@tonic-gate!  111		      !     a=i32[i];
467*7c478bd9Sstevel@tonic-gate!  112		      !     d16[2*i]=(double)(a&0xffff);
468*7c478bd9Sstevel@tonic-gate!  113		      !     d16[2*i+1]=(double)(a>>16);
469*7c478bd9Sstevel@tonic-gate
470*7c478bd9Sstevel@tonic-gate/* 0x001c	 113 */		sethi	%hi(.L_const_seg_900000301),%g2
471*7c478bd9Sstevel@tonic-gate/* 0x0020	 109 */		sub	%o0,1,%o5
472*7c478bd9Sstevel@tonic-gate/* 0x0024	 113 */		add	%g2,%lo(.L_const_seg_900000301),%o1
473*7c478bd9Sstevel@tonic-gate/* 0x0028	     */		ld	[%o2+%o1],%o3
474*7c478bd9Sstevel@tonic-gate/* 0x002c	 109 */		sethi	%hi(0xfc00),%o0
475*7c478bd9Sstevel@tonic-gate/* 0x0030	     */		add	%o5,1,%g2
476*7c478bd9Sstevel@tonic-gate/* 0x0034	     */		or	%g0,0,%g1
477*7c478bd9Sstevel@tonic-gate/* 0x0038	     */		cmp	%g2,3
478*7c478bd9Sstevel@tonic-gate/* 0x003c	 112 */		ldd	[%o3],%f0
479*7c478bd9Sstevel@tonic-gate/* 0x0040	     */		or	%g0,%i1,%o7
480*7c478bd9Sstevel@tonic-gate/* 0x0044	     */		add	%o0,1023,%o4
481*7c478bd9Sstevel@tonic-gate/* 0x0048	     */		or	%g0,%i0,%g3
482*7c478bd9Sstevel@tonic-gate/* 0x004c	 109 */		bl,pn	%icc,.L77000154
483*7c478bd9Sstevel@tonic-gate/* 0x0050	     */		add	%o7,4,%o0
484*7c478bd9Sstevel@tonic-gate/* 0x0054	 111 */		ld	[%o0-4],%o1
485*7c478bd9Sstevel@tonic-gate/* 0x0058	   0 */		or	%g0,%o0,%o7
486*7c478bd9Sstevel@tonic-gate/* 0x005c	 113 */		or	%g0,1,%g1
487*7c478bd9Sstevel@tonic-gate/* 0x0060	 112 */		and	%o1,%o4,%o0
488*7c478bd9Sstevel@tonic-gate                       .L900000306:
489*7c478bd9Sstevel@tonic-gate/* 0x0064	 112 */		st	%o0,[%sp+96]
490*7c478bd9Sstevel@tonic-gate/* 0x0068	 113 */		add	%g1,1,%g1
491*7c478bd9Sstevel@tonic-gate/* 0x006c	     */		add	%g3,16,%g3
492*7c478bd9Sstevel@tonic-gate/* 0x0070	     */		cmp	%g1,%o5
493*7c478bd9Sstevel@tonic-gate/* 0x0074	     */		add	%o7,4,%o7
494*7c478bd9Sstevel@tonic-gate/* 0x0078	 112 */		ld	[%sp+96],%f3
495*7c478bd9Sstevel@tonic-gate/* 0x007c	     */		fmovs	%f0,%f2
496*7c478bd9Sstevel@tonic-gate/* 0x0080	     */		fsubd	%f2,%f0,%f2
497*7c478bd9Sstevel@tonic-gate/* 0x0084	 113 */		srl	%o1,16,%o0
498*7c478bd9Sstevel@tonic-gate/* 0x0088	 112 */		std	%f2,[%g3-16]
499*7c478bd9Sstevel@tonic-gate/* 0x008c	 113 */		st	%o0,[%sp+92]
500*7c478bd9Sstevel@tonic-gate/* 0x0090	     */		ld	[%sp+92],%f3
501*7c478bd9Sstevel@tonic-gate/* 0x0094	 111 */		ld	[%o7-4],%o1
502*7c478bd9Sstevel@tonic-gate/* 0x0098	 113 */		fmovs	%f0,%f2
503*7c478bd9Sstevel@tonic-gate/* 0x009c	     */		fsubd	%f2,%f0,%f2
504*7c478bd9Sstevel@tonic-gate/* 0x00a0	 112 */		and	%o1,%o4,%o0
505*7c478bd9Sstevel@tonic-gate/* 0x00a4	 113 */		ble,pt	%icc,.L900000306
506*7c478bd9Sstevel@tonic-gate/* 0x00a8	     */		std	%f2,[%g3-8]
507*7c478bd9Sstevel@tonic-gate                       .L900000309:
508*7c478bd9Sstevel@tonic-gate/* 0x00ac	 112 */		st	%o0,[%sp+96]
509*7c478bd9Sstevel@tonic-gate/* 0x00b0	     */		fmovs	%f0,%f2
510*7c478bd9Sstevel@tonic-gate/* 0x00b4	 113 */		add	%g3,16,%g3
511*7c478bd9Sstevel@tonic-gate/* 0x00b8	     */		srl	%o1,16,%o0
512*7c478bd9Sstevel@tonic-gate/* 0x00bc	 112 */		ld	[%sp+96],%f3
513*7c478bd9Sstevel@tonic-gate/* 0x00c0	     */		fsubd	%f2,%f0,%f2
514*7c478bd9Sstevel@tonic-gate/* 0x00c4	     */		std	%f2,[%g3-16]
515*7c478bd9Sstevel@tonic-gate/* 0x00c8	 113 */		st	%o0,[%sp+92]
516*7c478bd9Sstevel@tonic-gate/* 0x00cc	     */		fmovs	%f0,%f2
517*7c478bd9Sstevel@tonic-gate/* 0x00d0	     */		ld	[%sp+92],%f3
518*7c478bd9Sstevel@tonic-gate/* 0x00d4	     */		fsubd	%f2,%f0,%f0
519*7c478bd9Sstevel@tonic-gate/* 0x00d8	     */		std	%f0,[%g3-8]
520*7c478bd9Sstevel@tonic-gate/* 0x00dc	     */		ret	! Result =
521*7c478bd9Sstevel@tonic-gate/* 0x00e0	     */		restore	%g0,%g0,%g0
522*7c478bd9Sstevel@tonic-gate                       .L77000154:
523*7c478bd9Sstevel@tonic-gate/* 0x00e4	 111 */		ld	[%o7],%o0
524*7c478bd9Sstevel@tonic-gate                       .L900000311:
525*7c478bd9Sstevel@tonic-gate/* 0x00e8	 112 */		and	%o0,%o4,%o1
526*7c478bd9Sstevel@tonic-gate/* 0x00ec	     */		st	%o1,[%sp+96]
527*7c478bd9Sstevel@tonic-gate/* 0x00f0	 113 */		add	%g1,1,%g1
528*7c478bd9Sstevel@tonic-gate/* 0x00f4	 112 */		ldd	[%o3],%f0
529*7c478bd9Sstevel@tonic-gate/* 0x00f8	 113 */		srl	%o0,16,%o0
530*7c478bd9Sstevel@tonic-gate/* 0x00fc	     */		add	%o7,4,%o7
531*7c478bd9Sstevel@tonic-gate/* 0x0100	     */		cmp	%g1,%o5
532*7c478bd9Sstevel@tonic-gate/* 0x0104	 112 */		fmovs	%f0,%f2
533*7c478bd9Sstevel@tonic-gate/* 0x0108	     */		ld	[%sp+96],%f3
534*7c478bd9Sstevel@tonic-gate/* 0x010c	     */		fsubd	%f2,%f0,%f2
535*7c478bd9Sstevel@tonic-gate/* 0x0110	     */		std	%f2,[%g3]
536*7c478bd9Sstevel@tonic-gate/* 0x0114	 113 */		st	%o0,[%sp+92]
537*7c478bd9Sstevel@tonic-gate/* 0x0118	     */		fmovs	%f0,%f2
538*7c478bd9Sstevel@tonic-gate/* 0x011c	     */		ld	[%sp+92],%f3
539*7c478bd9Sstevel@tonic-gate/* 0x0120	     */		fsubd	%f2,%f0,%f0
540*7c478bd9Sstevel@tonic-gate/* 0x0124	     */		std	%f0,[%g3+8]
541*7c478bd9Sstevel@tonic-gate/* 0x0128	     */		add	%g3,16,%g3
542*7c478bd9Sstevel@tonic-gate/* 0x012c	     */		ble,a,pt	%icc,.L900000311
543*7c478bd9Sstevel@tonic-gate/* 0x0130	     */		ld	[%o7],%o0
544*7c478bd9Sstevel@tonic-gate                       .L77000150:
545*7c478bd9Sstevel@tonic-gate/* 0x0134	     */		ret	! Result =
546*7c478bd9Sstevel@tonic-gate/* 0x0138	     */		restore	%g0,%g0,%g0
547*7c478bd9Sstevel@tonic-gate/* 0x013c	   0 */		.type	conv_i32_to_d16,2
548*7c478bd9Sstevel@tonic-gate/* 0x013c	     */		.size	conv_i32_to_d16,(.-conv_i32_to_d16)
549*7c478bd9Sstevel@tonic-gate
550*7c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
551*7c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	8
552*7c478bd9Sstevel@tonic-gate!
553*7c478bd9Sstevel@tonic-gate! CONSTANT POOL
554*7c478bd9Sstevel@tonic-gate!
555*7c478bd9Sstevel@tonic-gate                       .L_const_seg_900000401:
556*7c478bd9Sstevel@tonic-gate/* 000000	   0 */		.word	1127219200,0
557*7c478bd9Sstevel@tonic-gate/* 0x0008	   0 */		.align	4
558*7c478bd9Sstevel@tonic-gate/* 0x0008	     */		.skip	16
559*7c478bd9Sstevel@tonic-gate!
560*7c478bd9Sstevel@tonic-gate! SUBROUTINE conv_i32_to_d32_and_d16
561*7c478bd9Sstevel@tonic-gate!
562*7c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
563*7c478bd9Sstevel@tonic-gate
564*7c478bd9Sstevel@tonic-gate                       	.global conv_i32_to_d32_and_d16
565*7c478bd9Sstevel@tonic-gate                       conv_i32_to_d32_and_d16:
566*7c478bd9Sstevel@tonic-gate/* 000000	     */		save	%sp,-104,%sp
567*7c478bd9Sstevel@tonic-gate                       .L900000413:
568*7c478bd9Sstevel@tonic-gate/* 0x0004	     */		call	.+8
569*7c478bd9Sstevel@tonic-gate/* 0x0008	     */		sethi	/*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000413-.)),%g4
570*7c478bd9Sstevel@tonic-gate
571*7c478bd9Sstevel@tonic-gate!  114		      !   }
572*7c478bd9Sstevel@tonic-gate!  115		      !}
573*7c478bd9Sstevel@tonic-gate!  118		      !void i16_to_d16_and_d32x4(const double * /*1/(2^16)*/,
574*7c478bd9Sstevel@tonic-gate!  119		      !			  const double * /* 2^16*/, const double * /* 0 */,
575*7c478bd9Sstevel@tonic-gate!  120		      !			  double * /*result16*/, double * /* result32 */,
576*7c478bd9Sstevel@tonic-gate!  121		      !			  float *  /*source - should be */
577*7c478bd9Sstevel@tonic-gate!  122		      !		          unsigned int* converted to float* */);
578*7c478bd9Sstevel@tonic-gate!  126		      !void conv_i32_to_d32_and_d16(double *d32, double *d16,
579*7c478bd9Sstevel@tonic-gate!  127		      !			     unsigned int *i32, int len)
580*7c478bd9Sstevel@tonic-gate!  128		      !{
581*7c478bd9Sstevel@tonic-gate!  129		      !int i;
582*7c478bd9Sstevel@tonic-gate!  130		      !unsigned int a;
583*7c478bd9Sstevel@tonic-gate!  132		      !#pragma pipeloop(0)
584*7c478bd9Sstevel@tonic-gate!  133		      ! for(i=0;i<len-3;i+=4)
585*7c478bd9Sstevel@tonic-gate
586*7c478bd9Sstevel@tonic-gate/* 0x000c	 133 */		sub	%i3,3,%g2
587*7c478bd9Sstevel@tonic-gate/* 0x0010	     */		cmp	%g2,0
588*7c478bd9Sstevel@tonic-gate/* 0x0014	 128 */		add	%g4,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000413-.)),%g4
589*7c478bd9Sstevel@tonic-gate/* 0x0018	     */		or	%g0,%i2,%g5
590*7c478bd9Sstevel@tonic-gate
591*7c478bd9Sstevel@tonic-gate!  134		      !   {
592*7c478bd9Sstevel@tonic-gate!  135		      !     i16_to_d16_and_d32x4(&TwoToMinus16, &TwoTo16, &Zero,
593*7c478bd9Sstevel@tonic-gate!  136		      !			  &(d16[2*i]), &(d32[i]), (float *)(&(i32[i])));
594*7c478bd9Sstevel@tonic-gate
595*7c478bd9Sstevel@tonic-gate/* 0x001c	 136 */		sethi	%hi(Zero),%g2
596*7c478bd9Sstevel@tonic-gate/* 0x0020	 128 */		add	%g4,%o7,%o2
597*7c478bd9Sstevel@tonic-gate/* 0x0024	 133 */		or	%g0,0,%g1
598*7c478bd9Sstevel@tonic-gate/* 0x0028	 128 */		or	%g0,%i0,%i4
599*7c478bd9Sstevel@tonic-gate/* 0x002c	 136 */		add	%g2,%lo(Zero),%g2
600*7c478bd9Sstevel@tonic-gate/* 0x0030	 133 */		ble,pt	%icc,.L900000416
601*7c478bd9Sstevel@tonic-gate/* 0x0034	     */		cmp	%g1,%i3
602*7c478bd9Sstevel@tonic-gate/* 0x0038	     */		or	%g0,%g5,%o4
603*7c478bd9Sstevel@tonic-gate/* 0x003c	 136 */		ld	[%o2+%g2],%o1
604*7c478bd9Sstevel@tonic-gate/* 0x0040	 133 */		sub	%i3,4,%o3
605*7c478bd9Sstevel@tonic-gate/* 0x0044	     */		or	%g0,0,%o7
606*7c478bd9Sstevel@tonic-gate/* 0x0048	     */		or	%g0,0,%o5
607*7c478bd9Sstevel@tonic-gate/* 0x004c	 136 */		or	%g0,%o4,%g4
608*7c478bd9Sstevel@tonic-gate                       .L900000415:
609*7c478bd9Sstevel@tonic-gate/* 0x0050	     */		ldd	[%o1],%f2
610*7c478bd9Sstevel@tonic-gate/* 0x0054	 136 */		add	%i4,%o7,%g2
611*7c478bd9Sstevel@tonic-gate/* 0x0058	     */		add	%i1,%o5,%g3
612*7c478bd9Sstevel@tonic-gate/* 0x005c	     */		ldd	[%o1-8],%f0
613*7c478bd9Sstevel@tonic-gate/* 0x0060	     */		add	%g1,4,%g1
614*7c478bd9Sstevel@tonic-gate/* 0x0064	     */		add	%o4,16,%o4
615*7c478bd9Sstevel@tonic-gate/* 0x0068	     */		fmovd	%f2,%f14
616*7c478bd9Sstevel@tonic-gate/* 0x006c	     */		ld	[%g4],%f15
617*7c478bd9Sstevel@tonic-gate/* 0x0070	     */		cmp	%g1,%o3
618*7c478bd9Sstevel@tonic-gate/* 0x0074	     */		fmovd	%f2,%f10
619*7c478bd9Sstevel@tonic-gate/* 0x0078	     */		ld	[%g4+4],%f11
620*7c478bd9Sstevel@tonic-gate/* 0x007c	     */		fmovd	%f2,%f6
621*7c478bd9Sstevel@tonic-gate/* 0x0080	     */		ld	[%g4+8],%f7
622*7c478bd9Sstevel@tonic-gate/* 0x0084	     */		ld	[%g4+12],%f3
623*7c478bd9Sstevel@tonic-gate/* 0x0088	     */		fxtod	%f14,%f14
624*7c478bd9Sstevel@tonic-gate/* 0x008c	     */		fxtod	%f10,%f10
625*7c478bd9Sstevel@tonic-gate/* 0x0090	     */		ldd	[%o1-16],%f16
626*7c478bd9Sstevel@tonic-gate/* 0x0094	     */		fxtod	%f6,%f6
627*7c478bd9Sstevel@tonic-gate/* 0x0098	     */		std	%f14,[%i4+%o7]
628*7c478bd9Sstevel@tonic-gate/* 0x009c	     */		add	%o7,32,%o7
629*7c478bd9Sstevel@tonic-gate/* 0x00a0	     */		fxtod	%f2,%f2
630*7c478bd9Sstevel@tonic-gate/* 0x00a4	     */		fmuld	%f0,%f14,%f12
631*7c478bd9Sstevel@tonic-gate/* 0x00a8	     */		std	%f10,[%g2+8]
632*7c478bd9Sstevel@tonic-gate/* 0x00ac	     */		fmuld	%f0,%f10,%f8
633*7c478bd9Sstevel@tonic-gate/* 0x00b0	     */		std	%f6,[%g2+16]
634*7c478bd9Sstevel@tonic-gate/* 0x00b4	     */		fmuld	%f0,%f6,%f4
635*7c478bd9Sstevel@tonic-gate/* 0x00b8	     */		std	%f2,[%g2+24]
636*7c478bd9Sstevel@tonic-gate/* 0x00bc	     */		fmuld	%f0,%f2,%f0
637*7c478bd9Sstevel@tonic-gate/* 0x00c0	     */		fdtox	%f12,%f12
638*7c478bd9Sstevel@tonic-gate/* 0x00c4	     */		fdtox	%f8,%f8
639*7c478bd9Sstevel@tonic-gate/* 0x00c8	     */		fdtox	%f4,%f4
640*7c478bd9Sstevel@tonic-gate/* 0x00cc	     */		fdtox	%f0,%f0
641*7c478bd9Sstevel@tonic-gate/* 0x00d0	     */		fxtod	%f12,%f12
642*7c478bd9Sstevel@tonic-gate/* 0x00d4	     */		std	%f12,[%g3+8]
643*7c478bd9Sstevel@tonic-gate/* 0x00d8	     */		fxtod	%f8,%f8
644*7c478bd9Sstevel@tonic-gate/* 0x00dc	     */		std	%f8,[%g3+24]
645*7c478bd9Sstevel@tonic-gate/* 0x00e0	     */		fxtod	%f4,%f4
646*7c478bd9Sstevel@tonic-gate/* 0x00e4	     */		std	%f4,[%g3+40]
647*7c478bd9Sstevel@tonic-gate/* 0x00e8	     */		fxtod	%f0,%f0
648*7c478bd9Sstevel@tonic-gate/* 0x00ec	     */		fmuld	%f12,%f16,%f12
649*7c478bd9Sstevel@tonic-gate/* 0x00f0	     */		std	%f0,[%g3+56]
650*7c478bd9Sstevel@tonic-gate/* 0x00f4	     */		fmuld	%f8,%f16,%f8
651*7c478bd9Sstevel@tonic-gate/* 0x00f8	     */		fmuld	%f4,%f16,%f4
652*7c478bd9Sstevel@tonic-gate/* 0x00fc	     */		fmuld	%f0,%f16,%f0
653*7c478bd9Sstevel@tonic-gate/* 0x0100	     */		fsubd	%f14,%f12,%f12
654*7c478bd9Sstevel@tonic-gate/* 0x0104	     */		std	%f12,[%i1+%o5]
655*7c478bd9Sstevel@tonic-gate/* 0x0108	     */		fsubd	%f10,%f8,%f8
656*7c478bd9Sstevel@tonic-gate/* 0x010c	     */		std	%f8,[%g3+16]
657*7c478bd9Sstevel@tonic-gate/* 0x0110	     */		add	%o5,64,%o5
658*7c478bd9Sstevel@tonic-gate/* 0x0114	     */		fsubd	%f6,%f4,%f4
659*7c478bd9Sstevel@tonic-gate/* 0x0118	     */		std	%f4,[%g3+32]
660*7c478bd9Sstevel@tonic-gate/* 0x011c	     */		fsubd	%f2,%f0,%f0
661*7c478bd9Sstevel@tonic-gate/* 0x0120	     */		std	%f0,[%g3+48]
662*7c478bd9Sstevel@tonic-gate/* 0x0124	     */		ble,pt	%icc,.L900000415
663*7c478bd9Sstevel@tonic-gate/* 0x0128	     */		or	%g0,%o4,%g4
664*7c478bd9Sstevel@tonic-gate                       .L77000159:
665*7c478bd9Sstevel@tonic-gate
666*7c478bd9Sstevel@tonic-gate!  137		      !   }
667*7c478bd9Sstevel@tonic-gate!  138		      ! for(;i<len;i++)
668*7c478bd9Sstevel@tonic-gate
669*7c478bd9Sstevel@tonic-gate/* 0x012c	 138 */		cmp	%g1,%i3
670*7c478bd9Sstevel@tonic-gate                       .L900000416:
671*7c478bd9Sstevel@tonic-gate/* 0x0130	 138 */		bge,pt	%icc,.L77000164
672*7c478bd9Sstevel@tonic-gate/* 0x0134	     */		nop
673*7c478bd9Sstevel@tonic-gate
674*7c478bd9Sstevel@tonic-gate!  139		      !   {
675*7c478bd9Sstevel@tonic-gate!  140		      !     a=i32[i];
676*7c478bd9Sstevel@tonic-gate!  141		      !     d32[i]=(double)(i32[i]);
677*7c478bd9Sstevel@tonic-gate!  142		      !     d16[2*i]=(double)(a&0xffff);
678*7c478bd9Sstevel@tonic-gate!  143		      !     d16[2*i+1]=(double)(a>>16);
679*7c478bd9Sstevel@tonic-gate
680*7c478bd9Sstevel@tonic-gate/* 0x0138	 143 */		sethi	%hi(.L_const_seg_900000401),%g2
681*7c478bd9Sstevel@tonic-gate/* 0x013c	     */		add	%g2,%lo(.L_const_seg_900000401),%o1
682*7c478bd9Sstevel@tonic-gate/* 0x0140	 138 */		sethi	%hi(0xfc00),%o0
683*7c478bd9Sstevel@tonic-gate/* 0x0144	     */		ld	[%o2+%o1],%o2
684*7c478bd9Sstevel@tonic-gate/* 0x0148	     */		sll	%g1,2,%o3
685*7c478bd9Sstevel@tonic-gate/* 0x014c	     */		sub	%i3,%g1,%g3
686*7c478bd9Sstevel@tonic-gate/* 0x0150	     */		sll	%g1,3,%g2
687*7c478bd9Sstevel@tonic-gate/* 0x0154	     */		add	%o0,1023,%o4
688*7c478bd9Sstevel@tonic-gate/* 0x0158	 141 */		ldd	[%o2],%f0
689*7c478bd9Sstevel@tonic-gate/* 0x015c	     */		add	%g5,%o3,%o0
690*7c478bd9Sstevel@tonic-gate/* 0x0160	 138 */		cmp	%g3,3
691*7c478bd9Sstevel@tonic-gate/* 0x0164	     */		add	%i4,%g2,%o3
692*7c478bd9Sstevel@tonic-gate/* 0x0168	     */		sub	%i3,1,%o1
693*7c478bd9Sstevel@tonic-gate/* 0x016c	     */		sll	%g1,4,%g4
694*7c478bd9Sstevel@tonic-gate/* 0x0170	     */		bl,pn	%icc,.L77000161
695*7c478bd9Sstevel@tonic-gate/* 0x0174	     */		add	%i1,%g4,%o5
696*7c478bd9Sstevel@tonic-gate/* 0x0178	 141 */		ld	[%o0],%f3
697*7c478bd9Sstevel@tonic-gate/* 0x017c	 143 */		add	%o3,8,%o3
698*7c478bd9Sstevel@tonic-gate/* 0x0180	 140 */		ld	[%o0],%o7
699*7c478bd9Sstevel@tonic-gate/* 0x0184	 143 */		add	%o5,16,%o5
700*7c478bd9Sstevel@tonic-gate/* 0x0188	     */		add	%g1,1,%g1
701*7c478bd9Sstevel@tonic-gate/* 0x018c	 141 */		fmovs	%f0,%f2
702*7c478bd9Sstevel@tonic-gate/* 0x0190	 143 */		add	%o0,4,%o0
703*7c478bd9Sstevel@tonic-gate/* 0x0194	 142 */		and	%o7,%o4,%g2
704*7c478bd9Sstevel@tonic-gate/* 0x0198	 141 */		fsubd	%f2,%f0,%f2
705*7c478bd9Sstevel@tonic-gate/* 0x019c	     */		std	%f2,[%o3-8]
706*7c478bd9Sstevel@tonic-gate/* 0x01a0	 143 */		srl	%o7,16,%o7
707*7c478bd9Sstevel@tonic-gate/* 0x01a4	 142 */		st	%g2,[%sp+96]
708*7c478bd9Sstevel@tonic-gate/* 0x01a8	     */		fmovs	%f0,%f2
709*7c478bd9Sstevel@tonic-gate/* 0x01ac	     */		ld	[%sp+96],%f3
710*7c478bd9Sstevel@tonic-gate/* 0x01b0	     */		fsubd	%f2,%f0,%f2
711*7c478bd9Sstevel@tonic-gate/* 0x01b4	     */		std	%f2,[%o5-16]
712*7c478bd9Sstevel@tonic-gate/* 0x01b8	 143 */		st	%o7,[%sp+92]
713*7c478bd9Sstevel@tonic-gate/* 0x01bc	     */		fmovs	%f0,%f2
714*7c478bd9Sstevel@tonic-gate/* 0x01c0	     */		ld	[%sp+92],%f3
715*7c478bd9Sstevel@tonic-gate/* 0x01c4	     */		fsubd	%f2,%f0,%f2
716*7c478bd9Sstevel@tonic-gate/* 0x01c8	     */		std	%f2,[%o5-8]
717*7c478bd9Sstevel@tonic-gate                       .L900000409:
718*7c478bd9Sstevel@tonic-gate/* 0x01cc	 141 */		ld	[%o0],%f3
719*7c478bd9Sstevel@tonic-gate/* 0x01d0	 143 */		add	%g1,2,%g1
720*7c478bd9Sstevel@tonic-gate/* 0x01d4	     */		add	%o5,32,%o5
721*7c478bd9Sstevel@tonic-gate/* 0x01d8	 140 */		ld	[%o0],%o7
722*7c478bd9Sstevel@tonic-gate/* 0x01dc	 143 */		cmp	%g1,%o1
723*7c478bd9Sstevel@tonic-gate/* 0x01e0	     */		add	%o3,16,%o3
724*7c478bd9Sstevel@tonic-gate/* 0x01e4	 141 */		fmovs	%f0,%f2
725*7c478bd9Sstevel@tonic-gate/* 0x01e8	     */		fsubd	%f2,%f0,%f2
726*7c478bd9Sstevel@tonic-gate/* 0x01ec	     */		std	%f2,[%o3-16]
727*7c478bd9Sstevel@tonic-gate/* 0x01f0	 142 */		and	%o7,%o4,%g2
728*7c478bd9Sstevel@tonic-gate/* 0x01f4	     */		st	%g2,[%sp+96]
729*7c478bd9Sstevel@tonic-gate/* 0x01f8	     */		ld	[%sp+96],%f3
730*7c478bd9Sstevel@tonic-gate/* 0x01fc	     */		fmovs	%f0,%f2
731*7c478bd9Sstevel@tonic-gate/* 0x0200	     */		fsubd	%f2,%f0,%f2
732*7c478bd9Sstevel@tonic-gate/* 0x0204	 143 */		srl	%o7,16,%o7
733*7c478bd9Sstevel@tonic-gate/* 0x0208	 142 */		std	%f2,[%o5-32]
734*7c478bd9Sstevel@tonic-gate/* 0x020c	 143 */		st	%o7,[%sp+92]
735*7c478bd9Sstevel@tonic-gate/* 0x0210	     */		ld	[%sp+92],%f3
736*7c478bd9Sstevel@tonic-gate/* 0x0214	     */		fmovs	%f0,%f2
737*7c478bd9Sstevel@tonic-gate/* 0x0218	     */		fsubd	%f2,%f0,%f2
738*7c478bd9Sstevel@tonic-gate/* 0x021c	     */		std	%f2,[%o5-24]
739*7c478bd9Sstevel@tonic-gate/* 0x0220	     */		add	%o0,4,%o0
740*7c478bd9Sstevel@tonic-gate/* 0x0224	 141 */		ld	[%o0],%f3
741*7c478bd9Sstevel@tonic-gate/* 0x0228	 140 */		ld	[%o0],%o7
742*7c478bd9Sstevel@tonic-gate/* 0x022c	 141 */		fmovs	%f0,%f2
743*7c478bd9Sstevel@tonic-gate/* 0x0230	     */		fsubd	%f2,%f0,%f2
744*7c478bd9Sstevel@tonic-gate/* 0x0234	     */		std	%f2,[%o3-8]
745*7c478bd9Sstevel@tonic-gate/* 0x0238	 142 */		and	%o7,%o4,%g2
746*7c478bd9Sstevel@tonic-gate/* 0x023c	     */		st	%g2,[%sp+96]
747*7c478bd9Sstevel@tonic-gate/* 0x0240	     */		ld	[%sp+96],%f3
748*7c478bd9Sstevel@tonic-gate/* 0x0244	     */		fmovs	%f0,%f2
749*7c478bd9Sstevel@tonic-gate/* 0x0248	     */		fsubd	%f2,%f0,%f2
750*7c478bd9Sstevel@tonic-gate/* 0x024c	 143 */		srl	%o7,16,%o7
751*7c478bd9Sstevel@tonic-gate/* 0x0250	 142 */		std	%f2,[%o5-16]
752*7c478bd9Sstevel@tonic-gate/* 0x0254	 143 */		st	%o7,[%sp+92]
753*7c478bd9Sstevel@tonic-gate/* 0x0258	     */		ld	[%sp+92],%f3
754*7c478bd9Sstevel@tonic-gate/* 0x025c	     */		fmovs	%f0,%f2
755*7c478bd9Sstevel@tonic-gate/* 0x0260	     */		fsubd	%f2,%f0,%f2
756*7c478bd9Sstevel@tonic-gate/* 0x0264	     */		std	%f2,[%o5-8]
757*7c478bd9Sstevel@tonic-gate/* 0x0268	     */		bl,pt	%icc,.L900000409
758*7c478bd9Sstevel@tonic-gate/* 0x026c	     */		add	%o0,4,%o0
759*7c478bd9Sstevel@tonic-gate                       .L900000412:
760*7c478bd9Sstevel@tonic-gate/* 0x0270	 143 */		cmp	%g1,%i3
761*7c478bd9Sstevel@tonic-gate/* 0x0274	     */		bge,pn	%icc,.L77000164
762*7c478bd9Sstevel@tonic-gate/* 0x0278	     */		nop
763*7c478bd9Sstevel@tonic-gate                       .L77000161:
764*7c478bd9Sstevel@tonic-gate/* 0x027c	 141 */		ld	[%o0],%f3
765*7c478bd9Sstevel@tonic-gate                       .L900000414:
766*7c478bd9Sstevel@tonic-gate/* 0x0280	 141 */		ldd	[%o2],%f0
767*7c478bd9Sstevel@tonic-gate/* 0x0284	 143 */		add	%g1,1,%g1
768*7c478bd9Sstevel@tonic-gate/* 0x0288	 140 */		ld	[%o0],%o1
769*7c478bd9Sstevel@tonic-gate/* 0x028c	 143 */		add	%o0,4,%o0
770*7c478bd9Sstevel@tonic-gate/* 0x0290	     */		cmp	%g1,%i3
771*7c478bd9Sstevel@tonic-gate/* 0x0294	 141 */		fmovs	%f0,%f2
772*7c478bd9Sstevel@tonic-gate/* 0x0298	 142 */		and	%o1,%o4,%o7
773*7c478bd9Sstevel@tonic-gate/* 0x029c	 141 */		fsubd	%f2,%f0,%f2
774*7c478bd9Sstevel@tonic-gate/* 0x02a0	     */		std	%f2,[%o3]
775*7c478bd9Sstevel@tonic-gate/* 0x02a4	 143 */		srl	%o1,16,%o1
776*7c478bd9Sstevel@tonic-gate/* 0x02a8	 142 */		st	%o7,[%sp+96]
777*7c478bd9Sstevel@tonic-gate/* 0x02ac	 143 */		add	%o3,8,%o3
778*7c478bd9Sstevel@tonic-gate/* 0x02b0	 142 */		fmovs	%f0,%f2
779*7c478bd9Sstevel@tonic-gate/* 0x02b4	     */		ld	[%sp+96],%f3
780*7c478bd9Sstevel@tonic-gate/* 0x02b8	     */		fsubd	%f2,%f0,%f2
781*7c478bd9Sstevel@tonic-gate/* 0x02bc	     */		std	%f2,[%o5]
782*7c478bd9Sstevel@tonic-gate/* 0x02c0	 143 */		st	%o1,[%sp+92]
783*7c478bd9Sstevel@tonic-gate/* 0x02c4	     */		fmovs	%f0,%f2
784*7c478bd9Sstevel@tonic-gate/* 0x02c8	     */		ld	[%sp+92],%f3
785*7c478bd9Sstevel@tonic-gate/* 0x02cc	     */		fsubd	%f2,%f0,%f0
786*7c478bd9Sstevel@tonic-gate/* 0x02d0	     */		std	%f0,[%o5+8]
787*7c478bd9Sstevel@tonic-gate/* 0x02d4	     */		add	%o5,16,%o5
788*7c478bd9Sstevel@tonic-gate/* 0x02d8	     */		bl,a,pt	%icc,.L900000414
789*7c478bd9Sstevel@tonic-gate/* 0x02dc	     */		ld	[%o0],%f3
790*7c478bd9Sstevel@tonic-gate                       .L77000164:
791*7c478bd9Sstevel@tonic-gate/* 0x02e0	     */		ret	! Result =
792*7c478bd9Sstevel@tonic-gate/* 0x02e4	     */		restore	%g0,%g0,%g0
793*7c478bd9Sstevel@tonic-gate/* 0x02e8	   0 */		.type	conv_i32_to_d32_and_d16,2
794*7c478bd9Sstevel@tonic-gate/* 0x02e8	     */		.size	conv_i32_to_d32_and_d16,(.-conv_i32_to_d32_and_d16)
795*7c478bd9Sstevel@tonic-gate
796*7c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
797*7c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	4
798*7c478bd9Sstevel@tonic-gate!
799*7c478bd9Sstevel@tonic-gate! SUBROUTINE adjust_montf_result
800*7c478bd9Sstevel@tonic-gate!
801*7c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
802*7c478bd9Sstevel@tonic-gate
803*7c478bd9Sstevel@tonic-gate                       	.global adjust_montf_result
804*7c478bd9Sstevel@tonic-gate                       adjust_montf_result:
805*7c478bd9Sstevel@tonic-gate
806*7c478bd9Sstevel@tonic-gate!  144		      !   }
807*7c478bd9Sstevel@tonic-gate!  145		      !}
808*7c478bd9Sstevel@tonic-gate!  148		      !void adjust_montf_result(unsigned int *i32, unsigned int *nint, int len)
809*7c478bd9Sstevel@tonic-gate!  149		      !{
810*7c478bd9Sstevel@tonic-gate!  150		      !long long acc;
811*7c478bd9Sstevel@tonic-gate!  151		      !int i;
812*7c478bd9Sstevel@tonic-gate!  153		      ! if(i32[len]>0) i=-1;
813*7c478bd9Sstevel@tonic-gate
814*7c478bd9Sstevel@tonic-gate/* 000000	 153 */		sll	%o2,2,%g1
815*7c478bd9Sstevel@tonic-gate/* 0x0004	     */		or	%g0,-1,%g3
816*7c478bd9Sstevel@tonic-gate/* 0x0008	     */		ld	[%o0+%g1],%g1
817*7c478bd9Sstevel@tonic-gate/* 0x000c	     */		cmp	%g1,0
818*7c478bd9Sstevel@tonic-gate/* 0x0010	     */		bleu,pn	%icc,.L77000175
819*7c478bd9Sstevel@tonic-gate/* 0x0014	     */		or	%g0,%o1,%o3
820*7c478bd9Sstevel@tonic-gate/* 0x0018	     */		ba	.L900000511
821*7c478bd9Sstevel@tonic-gate/* 0x001c	     */		cmp	%g3,0
822*7c478bd9Sstevel@tonic-gate                       .L77000175:
823*7c478bd9Sstevel@tonic-gate
824*7c478bd9Sstevel@tonic-gate!  154		      ! else
825*7c478bd9Sstevel@tonic-gate!  155		      !   {
826*7c478bd9Sstevel@tonic-gate!  156		      !     for(i=len-1; i>=0; i--)
827*7c478bd9Sstevel@tonic-gate
828*7c478bd9Sstevel@tonic-gate/* 0x0020	 156 */		subcc	%o2,1,%g3
829*7c478bd9Sstevel@tonic-gate/* 0x0024	     */		bneg,pt	%icc,.L900000511
830*7c478bd9Sstevel@tonic-gate/* 0x0028	     */		cmp	%g3,0
831*7c478bd9Sstevel@tonic-gate/* 0x002c	     */		sll	%g3,2,%g1
832*7c478bd9Sstevel@tonic-gate/* 0x0030	     */		add	%o0,%g1,%g2
833*7c478bd9Sstevel@tonic-gate/* 0x0034	     */		add	%o1,%g1,%g1
834*7c478bd9Sstevel@tonic-gate
835*7c478bd9Sstevel@tonic-gate!  157		      !       {
836*7c478bd9Sstevel@tonic-gate!  158		      !	 if(i32[i]!=nint[i]) break;
837*7c478bd9Sstevel@tonic-gate
838*7c478bd9Sstevel@tonic-gate/* 0x0038	 158 */		ld	[%g1],%g5
839*7c478bd9Sstevel@tonic-gate                       .L900000510:
840*7c478bd9Sstevel@tonic-gate/* 0x003c	 158 */		ld	[%g2],%o5
841*7c478bd9Sstevel@tonic-gate/* 0x0040	     */		sub	%g1,4,%g1
842*7c478bd9Sstevel@tonic-gate/* 0x0044	     */		sub	%g2,4,%g2
843*7c478bd9Sstevel@tonic-gate/* 0x0048	     */		cmp	%o5,%g5
844*7c478bd9Sstevel@tonic-gate/* 0x004c	     */		bne,pn	%icc,.L77000182
845*7c478bd9Sstevel@tonic-gate/* 0x0050	     */		nop
846*7c478bd9Sstevel@tonic-gate/* 0x0054	     */		subcc	%g3,1,%g3
847*7c478bd9Sstevel@tonic-gate/* 0x0058	     */		bpos,a,pt	%icc,.L900000510
848*7c478bd9Sstevel@tonic-gate/* 0x005c	     */		ld	[%g1],%g5
849*7c478bd9Sstevel@tonic-gate                       .L77000182:
850*7c478bd9Sstevel@tonic-gate
851*7c478bd9Sstevel@tonic-gate!  159		      !       }
852*7c478bd9Sstevel@tonic-gate!  160		      !   }
853*7c478bd9Sstevel@tonic-gate!  161		      ! if((i<0)||(i32[i]>nint[i]))
854*7c478bd9Sstevel@tonic-gate
855*7c478bd9Sstevel@tonic-gate/* 0x0060	 161 */		cmp	%g3,0
856*7c478bd9Sstevel@tonic-gate                       .L900000511:
857*7c478bd9Sstevel@tonic-gate/* 0x0064	 161 */		bl,pn	%icc,.L77000198
858*7c478bd9Sstevel@tonic-gate/* 0x0068	     */		sll	%g3,2,%g2
859*7c478bd9Sstevel@tonic-gate/* 0x006c	     */		ld	[%o1+%g2],%g1
860*7c478bd9Sstevel@tonic-gate/* 0x0070	     */		ld	[%o0+%g2],%g2
861*7c478bd9Sstevel@tonic-gate/* 0x0074	     */		cmp	%g2,%g1
862*7c478bd9Sstevel@tonic-gate/* 0x0078	     */		bleu,pt	%icc,.L77000191
863*7c478bd9Sstevel@tonic-gate/* 0x007c	     */		nop
864*7c478bd9Sstevel@tonic-gate                       .L77000198:
865*7c478bd9Sstevel@tonic-gate
866*7c478bd9Sstevel@tonic-gate!  162		      !   {
867*7c478bd9Sstevel@tonic-gate!  163		      !     acc=0;
868*7c478bd9Sstevel@tonic-gate!  164		      !     for(i=0;i<len;i++)
869*7c478bd9Sstevel@tonic-gate
870*7c478bd9Sstevel@tonic-gate/* 0x0080	 164 */		cmp	%o2,0
871*7c478bd9Sstevel@tonic-gate/* 0x0084	     */		ble,pt	%icc,.L77000191
872*7c478bd9Sstevel@tonic-gate/* 0x0088	     */		nop
873*7c478bd9Sstevel@tonic-gate/* 0x008c	 161 */		or	%g0,-1,%g2
874*7c478bd9Sstevel@tonic-gate/* 0x0090	     */		sub	%o2,1,%g4
875*7c478bd9Sstevel@tonic-gate/* 0x0094	     */		srl	%g2,0,%g3
876*7c478bd9Sstevel@tonic-gate/* 0x0098	 163 */		or	%g0,0,%g5
877*7c478bd9Sstevel@tonic-gate/* 0x009c	 164 */		or	%g0,0,%o5
878*7c478bd9Sstevel@tonic-gate/* 0x00a0	 161 */		or	%g0,%o0,%o4
879*7c478bd9Sstevel@tonic-gate/* 0x00a4	     */		cmp	%o2,3
880*7c478bd9Sstevel@tonic-gate/* 0x00a8	     */		add	%o1,4,%g2
881*7c478bd9Sstevel@tonic-gate/* 0x00ac	 164 */		bl,pn	%icc,.L77000199
882*7c478bd9Sstevel@tonic-gate/* 0x00b0	     */		add	%o0,8,%g1
883*7c478bd9Sstevel@tonic-gate
884*7c478bd9Sstevel@tonic-gate!  165		      !       {
885*7c478bd9Sstevel@tonic-gate!  166		      !	 acc=acc+(unsigned long long)(i32[i])-(unsigned long long)(nint[i]);
886*7c478bd9Sstevel@tonic-gate
887*7c478bd9Sstevel@tonic-gate/* 0x00b4	 166 */		ld	[%o0],%o2
888*7c478bd9Sstevel@tonic-gate/* 0x00b8	   0 */		or	%g0,%g2,%o3
889*7c478bd9Sstevel@tonic-gate/* 0x00bc	 166 */		ld	[%o1],%o1
890*7c478bd9Sstevel@tonic-gate/* 0x00c0	   0 */		or	%g0,%g1,%o4
891*7c478bd9Sstevel@tonic-gate
892*7c478bd9Sstevel@tonic-gate!  167		      !	 i32[i]=acc&0xffffffff;
893*7c478bd9Sstevel@tonic-gate!  168		      !	 acc=acc>>32;
894*7c478bd9Sstevel@tonic-gate
895*7c478bd9Sstevel@tonic-gate/* 0x00c4	 168 */		or	%g0,2,%o5
896*7c478bd9Sstevel@tonic-gate/* 0x00c8	 166 */		ld	[%o0+4],%g1
897*7c478bd9Sstevel@tonic-gate/* 0x00cc	 164 */		sub	%o2,%o1,%o2
898*7c478bd9Sstevel@tonic-gate/* 0x00d0	     */		or	%g0,%o2,%g5
899*7c478bd9Sstevel@tonic-gate/* 0x00d4	 167 */		and	%o2,%g3,%o2
900*7c478bd9Sstevel@tonic-gate/* 0x00d8	     */		st	%o2,[%o0]
901*7c478bd9Sstevel@tonic-gate/* 0x00dc	 168 */		srax	%g5,32,%g5
902*7c478bd9Sstevel@tonic-gate                       .L900000505:
903*7c478bd9Sstevel@tonic-gate/* 0x00e0	 166 */		ld	[%o3],%o2
904*7c478bd9Sstevel@tonic-gate/* 0x00e4	 168 */		add	%o5,1,%o5
905*7c478bd9Sstevel@tonic-gate/* 0x00e8	     */		add	%o3,4,%o3
906*7c478bd9Sstevel@tonic-gate/* 0x00ec	     */		cmp	%o5,%g4
907*7c478bd9Sstevel@tonic-gate/* 0x00f0	     */		add	%o4,4,%o4
908*7c478bd9Sstevel@tonic-gate/* 0x00f4	 164 */		sub	%g1,%o2,%g1
909*7c478bd9Sstevel@tonic-gate/* 0x00f8	     */		add	%g1,%g5,%g5
910*7c478bd9Sstevel@tonic-gate/* 0x00fc	 167 */		and	%g5,%g3,%o2
911*7c478bd9Sstevel@tonic-gate/* 0x0100	 166 */		ld	[%o4-4],%g1
912*7c478bd9Sstevel@tonic-gate/* 0x0104	 167 */		st	%o2,[%o4-8]
913*7c478bd9Sstevel@tonic-gate/* 0x0108	 168 */		ble,pt	%icc,.L900000505
914*7c478bd9Sstevel@tonic-gate/* 0x010c	     */		srax	%g5,32,%g5
915*7c478bd9Sstevel@tonic-gate                       .L900000508:
916*7c478bd9Sstevel@tonic-gate/* 0x0110	 166 */		ld	[%o3],%g2
917*7c478bd9Sstevel@tonic-gate/* 0x0114	 164 */		sub	%g1,%g2,%g1
918*7c478bd9Sstevel@tonic-gate/* 0x0118	     */		add	%g1,%g5,%g1
919*7c478bd9Sstevel@tonic-gate/* 0x011c	 167 */		and	%g1,%g3,%g2
920*7c478bd9Sstevel@tonic-gate/* 0x0120	     */		retl	! Result =
921*7c478bd9Sstevel@tonic-gate/* 0x0124	     */		st	%g2,[%o4-4]
922*7c478bd9Sstevel@tonic-gate                       .L77000199:
923*7c478bd9Sstevel@tonic-gate/* 0x0128	 166 */		ld	[%o4],%g1
924*7c478bd9Sstevel@tonic-gate                       .L900000509:
925*7c478bd9Sstevel@tonic-gate/* 0x012c	 166 */		ld	[%o3],%g2
926*7c478bd9Sstevel@tonic-gate/* 0x0130	     */		add	%g5,%g1,%g1
927*7c478bd9Sstevel@tonic-gate/* 0x0134	 168 */		add	%o5,1,%o5
928*7c478bd9Sstevel@tonic-gate/* 0x0138	     */		add	%o3,4,%o3
929*7c478bd9Sstevel@tonic-gate/* 0x013c	     */		cmp	%o5,%g4
930*7c478bd9Sstevel@tonic-gate/* 0x0140	 166 */		sub	%g1,%g2,%g1
931*7c478bd9Sstevel@tonic-gate/* 0x0144	 167 */		and	%g1,%g3,%g2
932*7c478bd9Sstevel@tonic-gate/* 0x0148	     */		st	%g2,[%o4]
933*7c478bd9Sstevel@tonic-gate/* 0x014c	 168 */		add	%o4,4,%o4
934*7c478bd9Sstevel@tonic-gate/* 0x0150	     */		srax	%g1,32,%g5
935*7c478bd9Sstevel@tonic-gate/* 0x0154	     */		ble,a,pt	%icc,.L900000509
936*7c478bd9Sstevel@tonic-gate/* 0x0158	     */		ld	[%o4],%g1
937*7c478bd9Sstevel@tonic-gate                       .L77000191:
938*7c478bd9Sstevel@tonic-gate/* 0x015c	     */		retl	! Result =
939*7c478bd9Sstevel@tonic-gate/* 0x0160	     */		nop
940*7c478bd9Sstevel@tonic-gate/* 0x0164	   0 */		.type	adjust_montf_result,2
941*7c478bd9Sstevel@tonic-gate/* 0x0164	     */		.size	adjust_montf_result,(.-adjust_montf_result)
942*7c478bd9Sstevel@tonic-gate
943*7c478bd9Sstevel@tonic-gate	.section	".text",#alloc,#execinstr
944*7c478bd9Sstevel@tonic-gate/* 000000	   0 */		.align	4
945*7c478bd9Sstevel@tonic-gate/* 000000	     */		.skip	16
946*7c478bd9Sstevel@tonic-gate!
947*7c478bd9Sstevel@tonic-gate! SUBROUTINE mont_mulf_noconv
948*7c478bd9Sstevel@tonic-gate!
949*7c478bd9Sstevel@tonic-gate! OFFSET    SOURCE LINE	LABEL	INSTRUCTION
950*7c478bd9Sstevel@tonic-gate
951*7c478bd9Sstevel@tonic-gate                       	.global mont_mulf_noconv
952*7c478bd9Sstevel@tonic-gate                       mont_mulf_noconv:
953*7c478bd9Sstevel@tonic-gate/* 000000	     */		save	%sp,-144,%sp
954*7c478bd9Sstevel@tonic-gate                       .L900000644:
955*7c478bd9Sstevel@tonic-gate/* 0x0004	     */		call	.+8
956*7c478bd9Sstevel@tonic-gate/* 0x0008	     */		sethi	/*X*/%hi(_GLOBAL_OFFSET_TABLE_-(.L900000644-.)),%g4
957*7c478bd9Sstevel@tonic-gate
958*7c478bd9Sstevel@tonic-gate!  169		      !       }
959*7c478bd9Sstevel@tonic-gate!  170		      !   }
960*7c478bd9Sstevel@tonic-gate!  171		      !}
961*7c478bd9Sstevel@tonic-gate!  175		      !void cleanup(double *dt, int from, int tlen);
962*7c478bd9Sstevel@tonic-gate!  177		      !/*
963*7c478bd9Sstevel@tonic-gate!  178		      !** the lengths of the input arrays should be at least the following:
964*7c478bd9Sstevel@tonic-gate!  179		      !** result[nlen+1], dm1[nlen], dm2[2*nlen+1], dt[4*nlen+2], dn[nlen], nint[nlen]
965*7c478bd9Sstevel@tonic-gate!  180		      !** all of them should be different from one another
966*7c478bd9Sstevel@tonic-gate!  181		      !**
967*7c478bd9Sstevel@tonic-gate!  182		      !*/
968*7c478bd9Sstevel@tonic-gate!  183		      !void mont_mulf_noconv(unsigned int *result,
969*7c478bd9Sstevel@tonic-gate!  184		      !		     double *dm1, double *dm2, double *dt,
970*7c478bd9Sstevel@tonic-gate!  185		      !		     double *dn, unsigned int *nint,
971*7c478bd9Sstevel@tonic-gate!  186		      !		     int nlen, double dn0)
972*7c478bd9Sstevel@tonic-gate!  187		      !{
973*7c478bd9Sstevel@tonic-gate!  188		      ! int i, j, jj;
974*7c478bd9Sstevel@tonic-gate!  189		      ! int tmp;
975*7c478bd9Sstevel@tonic-gate!  190		      ! double digit, m2j, nextm2j, a, b;
976*7c478bd9Sstevel@tonic-gate!  191		      ! double *dptmp, *pdm1, *pdm2, *pdn, *pdtj, pdn_0, pdm1_0;
977*7c478bd9Sstevel@tonic-gate!  193		      ! pdm1=&(dm1[0]);
978*7c478bd9Sstevel@tonic-gate!  194		      ! pdm2=&(dm2[0]);
979*7c478bd9Sstevel@tonic-gate!  195		      ! pdn=&(dn[0]);
980*7c478bd9Sstevel@tonic-gate!  196		      ! pdm2[2*nlen]=Zero;
981*7c478bd9Sstevel@tonic-gate
982*7c478bd9Sstevel@tonic-gate/* 0x000c	 196 */		sethi	%hi(Zero),%g2
983*7c478bd9Sstevel@tonic-gate/* 0x0010	     */		ld	[%fp+92],%o0
984*7c478bd9Sstevel@tonic-gate/* 0x0014	 187 */		add	%g4,/*X*/%lo(_GLOBAL_OFFSET_TABLE_-(.L900000644-.)),%g4
985*7c478bd9Sstevel@tonic-gate/* 0x0018	 196 */		add	%g2,%lo(Zero),%g2
986*7c478bd9Sstevel@tonic-gate/* 0x001c	 187 */		ldd	[%fp+96],%f2
987*7c478bd9Sstevel@tonic-gate/* 0x0020	     */		add	%g4,%o7,%o3
988*7c478bd9Sstevel@tonic-gate/* 0x0024	     */		st	%i0,[%fp+68]
989*7c478bd9Sstevel@tonic-gate/* 0x0028	     */		or	%g0,%i3,%o1
990*7c478bd9Sstevel@tonic-gate/* 0x002c	 196 */		ld	[%o3+%g2],%g3
991*7c478bd9Sstevel@tonic-gate/* 0x0030	     */		sll	%o0,4,%g2
992*7c478bd9Sstevel@tonic-gate/* 0x0034	 187 */		or	%g0,%i1,%g4
993*7c478bd9Sstevel@tonic-gate/* 0x0038	     */		fmovd	%f2,%f16
994*7c478bd9Sstevel@tonic-gate/* 0x003c	     */		st	%i5,[%fp+88]
995*7c478bd9Sstevel@tonic-gate/* 0x0040	     */		or	%g0,%o1,%g5
996*7c478bd9Sstevel@tonic-gate/* 0x0044	     */		or	%g0,%i2,%o2
997*7c478bd9Sstevel@tonic-gate/* 0x0048	 196 */		ldd	[%g3],%f0
998*7c478bd9Sstevel@tonic-gate/* 0x004c	     */		or	%g0,%o0,%g1
999*7c478bd9Sstevel@tonic-gate
1000*7c478bd9Sstevel@tonic-gate!  198		      ! if (nlen!=16)
1001*7c478bd9Sstevel@tonic-gate
1002*7c478bd9Sstevel@tonic-gate/* 0x0050	 198 */		cmp	%o0,16
1003*7c478bd9Sstevel@tonic-gate/* 0x0054	     */		be,pn	%icc,.L77000289
1004*7c478bd9Sstevel@tonic-gate/* 0x0058	     */		std	%f0,[%o2+%g2]
1005*7c478bd9Sstevel@tonic-gate
1006*7c478bd9Sstevel@tonic-gate!  199		      !   {
1007*7c478bd9Sstevel@tonic-gate!  200		      !     for(i=0;i<4*nlen+2;i++) dt[i]=Zero;
1008*7c478bd9Sstevel@tonic-gate
1009*7c478bd9Sstevel@tonic-gate/* 0x005c	 200 */		sll	%o0,2,%g2
1010*7c478bd9Sstevel@tonic-gate/* 0x0060	 187 */		or	%g0,%i4,%i0
1011*7c478bd9Sstevel@tonic-gate/* 0x0064	 196 */		sll	%o0,1,%o7
1012*7c478bd9Sstevel@tonic-gate/* 0x0068	 200 */		add	%g2,2,%o2
1013*7c478bd9Sstevel@tonic-gate/* 0x006c	     */		cmp	%o2,0
1014*7c478bd9Sstevel@tonic-gate/* 0x0070	 196 */		or	%g0,%i2,%i1
1015*7c478bd9Sstevel@tonic-gate/* 0x0074	 200 */		ble,a,pt	%icc,.L900000658
1016*7c478bd9Sstevel@tonic-gate/* 0x0078	     */		ldd	[%g4],%f0
1017*7c478bd9Sstevel@tonic-gate
1018*7c478bd9Sstevel@tonic-gate!  202		      !     a=dt[0]=pdm1[0]*pdm2[0];
1019*7c478bd9Sstevel@tonic-gate!  203		      !     digit=mod(lower32(a,Zero)*dn0,TwoToMinus16,TwoTo16);
1020*7c478bd9Sstevel@tonic-gate!  205		      !     pdtj=&(dt[0]);
1021*7c478bd9Sstevel@tonic-gate!  206		      !     for(j=jj=0;j<2*nlen;j++,jj++,pdtj++)
1022*7c478bd9Sstevel@tonic-gate!  207		      !       {
1023*7c478bd9Sstevel@tonic-gate!  208		      !	 m2j=pdm2[j];
1024*7c478bd9Sstevel@tonic-gate!  209		      !	 a=pdtj[0]+pdn[0]*digit;
1025*7c478bd9Sstevel@tonic-gate!  210		      !	 b=pdtj[1]+pdm1[0]*pdm2[j+1]+a*TwoToMinus16;
1026*7c478bd9Sstevel@tonic-gate!  211		      !	 pdtj[1]=b;
1027*7c478bd9Sstevel@tonic-gate!  213		      !#pragma pipeloop(0)
1028*7c478bd9Sstevel@tonic-gate!  214		      !	 for(i=1;i<nlen;i++)
1029*7c478bd9Sstevel@tonic-gate!  215		      !	   {
1030*7c478bd9Sstevel@tonic-gate!  216		      !	     pdtj[2*i]+=pdm1[i]*m2j+pdn[i]*digit;
1031*7c478bd9Sstevel@tonic-gate!  217		      !	   }
1032*7c478bd9Sstevel@tonic-gate!  218		      ! 	 if((jj==30)) {cleanup(dt,j/2+1,2*nlen+1); jj=0;}
1033*7c478bd9Sstevel@tonic-gate!  219		      !
1034*7c478bd9Sstevel@tonic-gate!  220		      !	 digit=mod(lower32(b,Zero)*dn0,TwoToMinus16,TwoTo16);
1035*7c478bd9Sstevel@tonic-gate!  221		      !       }
1036*7c478bd9Sstevel@tonic-gate!  222		      !   }
1037*7c478bd9Sstevel@tonic-gate!  223		      ! else
1038*7c478bd9Sstevel@tonic-gate!  224		      !   {
1039*7c478bd9Sstevel@tonic-gate!  225		      !     a=dt[0]=pdm1[0]*pdm2[0];
1040*7c478bd9Sstevel@tonic-gate!  227		      !     dt[65]=     dt[64]=     dt[63]=     dt[62]=     dt[61]=     dt[60]=
1041*7c478bd9Sstevel@tonic-gate!  228		      !     dt[59]=     dt[58]=     dt[57]=     dt[56]=     dt[55]=     dt[54]=
1042*7c478bd9Sstevel@tonic-gate!  229		      !     dt[53]=     dt[52]=     dt[51]=     dt[50]=     dt[49]=     dt[48]=
1043*7c478bd9Sstevel@tonic-gate!  230		      !     dt[47]=     dt[46]=     dt[45]=     dt[44]=     dt[43]=     dt[42]=
1044*7c478bd9Sstevel@tonic-gate!  231		      !     dt[41]=     dt[40]=     dt[39]=     dt[38]=     dt[37]=     dt[36]=
1045*7c478bd9Sstevel@tonic-gate!  232		      !     dt[35]=     dt[34]=     dt[33]=     dt[32]=     dt[31]=     dt[30]=
1046*7c478bd9Sstevel@tonic-gate!  233		      !     dt[29]=     dt[28]=     dt[27]=     dt[26]=     dt[25]=     dt[24]=
1047*7c478bd9Sstevel@tonic-gate!  234		      !     dt[23]=     dt[22]=     dt[21]=     dt[20]=     dt[19]=     dt[18]=
1048*7c478bd9Sstevel@tonic-gate!  235		      !     dt[17]=     dt[16]=     dt[15]=     dt[14]=     dt[13]=     dt[12]=
1049*7c478bd9Sstevel@tonic-gate!  236		      !     dt[11]=     dt[10]=     dt[ 9]=     dt[ 8]=     dt[ 7]=     dt[ 6]=
1050*7c478bd9Sstevel@tonic-gate!  237		      !     dt[ 5]=     dt[ 4]=     dt[ 3]=     dt[ 2]=     dt[ 1]=Zero;
1051*7c478bd9Sstevel@tonic-gate!  239		      !     pdn_0=pdn[0];
1052*7c478bd9Sstevel@tonic-gate!  240		      !     pdm1_0=pdm1[0];
1053*7c478bd9Sstevel@tonic-gate!  242		      !     digit=mod(lower32(a,Zero)*dn0,TwoToMinus16,TwoTo16);
1054*7c478bd9Sstevel@tonic-gate!  243		      !     pdtj=&(dt[0]);
1055*7c478bd9Sstevel@tonic-gate!  245		      !     for(j=0;j<32;j++,pdtj++)
1056*7c478bd9Sstevel@tonic-gate!  246		      !       {
1057*7c478bd9Sstevel@tonic-gate!  248		      !	 m2j=pdm2[j];
1058*7c478bd9Sstevel@tonic-gate!  249		      !	 a=pdtj[0]+pdn_0*digit;
1059*7c478bd9Sstevel@tonic-gate!  250		      !	 b=pdtj[1]+pdm1_0*pdm2[j+1]+a*TwoToMinus16;
1060*7c478bd9Sstevel@tonic-gate!  251		      !	 pdtj[1]=b;
1061*7c478bd9Sstevel@tonic-gate!  253		      !	 /**** this loop will be fully unrolled:
1062*7c478bd9Sstevel@tonic-gate!  254		      !	 for(i=1;i<16;i++)
1063*7c478bd9Sstevel@tonic-gate!  255		      !	   {
1064*7c478bd9Sstevel@tonic-gate!  256		      !	     pdtj[2*i]+=pdm1[i]*m2j+pdn[i]*digit;
1065*7c478bd9Sstevel@tonic-gate!  257		      !	   }
1066*7c478bd9Sstevel@tonic-gate!  258		      !	 *************************************/
1067*7c478bd9Sstevel@tonic-gate!  259		      !	     pdtj[2]+=pdm1[1]*m2j+pdn[1]*digit;
1068*7c478bd9Sstevel@tonic-gate!  260		      !	     pdtj[4]+=pdm1[2]*m2j+pdn[2]*digit;
1069*7c478bd9Sstevel@tonic-gate!  261		      !	     pdtj[6]+=pdm1[3]*m2j+pdn[3]*digit;
1070*7c478bd9Sstevel@tonic-gate!  262		      !	     pdtj[8]+=pdm1[4]*m2j+pdn[4]*digit;
1071*7c478bd9Sstevel@tonic-gate!  263		      !	     pdtj[10]+=pdm1[5]*m2j+pdn[5]*digit;
1072*7c478bd9Sstevel@tonic-gate!  264		      !	     pdtj[12]+=pdm1[6]*m2j+pdn[6]*digit;
1073*7c478bd9Sstevel@tonic-gate!  265		      !	     pdtj[14]+=pdm1[7]*m2j+pdn[7]*digit;
1074*7c478bd9Sstevel@tonic-gate!  266		      !	     pdtj[16]+=pdm1[8]*m2j+pdn[8]*digit;
1075*7c478bd9Sstevel@tonic-gate!  267		      !	     pdtj[18]+=pdm1[9]*m2j+pdn[9]*digit;
1076*7c478bd9Sstevel@tonic-gate!  268		      !	     pdtj[20]+=pdm1[10]*m2j+pdn[10]*digit;
1077*7c478bd9Sstevel@tonic-gate!  269		      !	     pdtj[22]+=pdm1[11]*m2j+pdn[11]*digit;
1078*7c478bd9Sstevel@tonic-gate!  270		      !	     pdtj[24]+=pdm1[12]*m2j+pdn[12]*digit;
1079*7c478bd9Sstevel@tonic-gate!  271		      !	     pdtj[26]+=pdm1[13]*m2j+pdn[13]*digit;
1080*7c478bd9Sstevel@tonic-gate!  272		      !	     pdtj[28]+=pdm1[14]*m2j+pdn[14]*digit;
1081*7c478bd9Sstevel@tonic-gate!  273		      !	     pdtj[30]+=pdm1[15]*m2j+pdn[15]*digit;
1082*7c478bd9Sstevel@tonic-gate!  274		      !	 /* no need for cleenup, cannot overflow */
1083*7c478bd9Sstevel@tonic-gate!  275		      !	 digit=mod(lower32(b,Zero)*dn0,TwoToMinus16,TwoTo16);
1084*7c478bd9Sstevel@tonic-gate!  276		      !       }
1085*7c478bd9Sstevel@tonic-gate!  277		      !   }
1086*7c478bd9Sstevel@tonic-gate!  279		      ! conv_d16_to_i32(result,dt+2*nlen,(long long *)dt,nlen+1);
1087*7c478bd9Sstevel@tonic-gate!  281		      ! adjust_montf_result(result,nint,nlen);
1088*7c478bd9Sstevel@tonic-gate
1089*7c478bd9Sstevel@tonic-gate/* 0x007c	 281 */		add	%g2,2,%o0
1090*7c478bd9Sstevel@tonic-gate/* 0x0080	 200 */		add	%g2,1,%o2
1091*7c478bd9Sstevel@tonic-gate/* 0x0084	 281 */		cmp	%o0,3
1092*7c478bd9Sstevel@tonic-gate/* 0x0088	     */		bl,pn	%icc,.L77000279
1093*7c478bd9Sstevel@tonic-gate/* 0x008c	     */		or	%g0,1,%o0
1094*7c478bd9Sstevel@tonic-gate/* 0x0090	     */		add	%o1,8,%o1
1095*7c478bd9Sstevel@tonic-gate/* 0x0094	     */		or	%g0,1,%o3
1096*7c478bd9Sstevel@tonic-gate/* 0x0098	     */		std	%f0,[%g5]
1097*7c478bd9Sstevel@tonic-gate                       .L900000628:
1098*7c478bd9Sstevel@tonic-gate/* 0x009c	     */		std	%f0,[%o1]
1099*7c478bd9Sstevel@tonic-gate/* 0x00a0	     */		add	%o3,2,%o3
1100*7c478bd9Sstevel@tonic-gate/* 0x00a4	     */		add	%o1,16,%o1
1101*7c478bd9Sstevel@tonic-gate/* 0x00a8	     */		cmp	%o3,%g2
1102*7c478bd9Sstevel@tonic-gate/* 0x00ac	     */		ble,pt	%icc,.L900000628
1103*7c478bd9Sstevel@tonic-gate/* 0x00b0	     */		std	%f0,[%o1-8]
1104*7c478bd9Sstevel@tonic-gate                       .L900000631:
1105*7c478bd9Sstevel@tonic-gate/* 0x00b4	     */		cmp	%o3,%o2
1106*7c478bd9Sstevel@tonic-gate/* 0x00b8	     */		bg,pn	%icc,.L77000284
1107*7c478bd9Sstevel@tonic-gate/* 0x00bc	     */		add	%o3,1,%o0
1108*7c478bd9Sstevel@tonic-gate                       .L77000279:
1109*7c478bd9Sstevel@tonic-gate/* 0x00c0	     */		std	%f0,[%o1]
1110*7c478bd9Sstevel@tonic-gate                       .L900000657:
1111*7c478bd9Sstevel@tonic-gate/* 0x00c4	     */		ldd	[%g3],%f0
1112*7c478bd9Sstevel@tonic-gate/* 0x00c8	     */		cmp	%o0,%o2
1113*7c478bd9Sstevel@tonic-gate/* 0x00cc	     */		add	%o1,8,%o1
1114*7c478bd9Sstevel@tonic-gate/* 0x00d0	     */		add	%o0,1,%o0
1115*7c478bd9Sstevel@tonic-gate/* 0x00d4	     */		ble,a,pt	%icc,.L900000657
1116*7c478bd9Sstevel@tonic-gate/* 0x00d8	     */		std	%f0,[%o1]
1117*7c478bd9Sstevel@tonic-gate                       .L77000284:
1118*7c478bd9Sstevel@tonic-gate/* 0x00dc	 202 */		ldd	[%g4],%f0
1119*7c478bd9Sstevel@tonic-gate                       .L900000658:
1120*7c478bd9Sstevel@tonic-gate/* 0x00e0	 202 */		ldd	[%i2],%f2
1121*7c478bd9Sstevel@tonic-gate/* 0x00e4	     */		add	%o7,1,%o2
1122*7c478bd9Sstevel@tonic-gate/* 0x00e8	 206 */		cmp	%o7,0
1123*7c478bd9Sstevel@tonic-gate/* 0x00ec	     */		sll	%o2,1,%o0
1124*7c478bd9Sstevel@tonic-gate/* 0x00f0	     */		sub	%o7,1,%o1
1125*7c478bd9Sstevel@tonic-gate/* 0x00f4	 202 */		fmuld	%f0,%f2,%f0
1126*7c478bd9Sstevel@tonic-gate/* 0x00f8	     */		std	%f0,[%g5]
1127*7c478bd9Sstevel@tonic-gate/* 0x00fc	     */		sub	%g1,1,%o7
1128*7c478bd9Sstevel@tonic-gate/* 0x0100	     */		ldd	[%g3],%f6
1129*7c478bd9Sstevel@tonic-gate/* 0x0104	   0 */		or	%g0,%o7,%i2
1130*7c478bd9Sstevel@tonic-gate/* 0x0108	     */		or	%g0,0,%l0
1131*7c478bd9Sstevel@tonic-gate/* 0x010c	     */		ldd	[%g3-8],%f2
1132*7c478bd9Sstevel@tonic-gate/* 0x0110	     */		or	%g0,0,%i5
1133*7c478bd9Sstevel@tonic-gate/* 0x0114	     */		or	%g0,%o1,%o5
1134*7c478bd9Sstevel@tonic-gate/* 0x0118	     */		fdtox	%f0,%f0
1135*7c478bd9Sstevel@tonic-gate/* 0x011c	     */		ldd	[%g3-16],%f4
1136*7c478bd9Sstevel@tonic-gate/* 0x0120	     */		or	%g0,%o0,%o3
1137*7c478bd9Sstevel@tonic-gate/* 0x0124	 210 */		add	%i1,8,%o4
1138*7c478bd9Sstevel@tonic-gate/* 0x0128	     */		or	%g0,0,%i4
1139*7c478bd9Sstevel@tonic-gate/* 0x012c	     */		fmovs	%f6,%f0
1140*7c478bd9Sstevel@tonic-gate/* 0x0130	     */		fxtod	%f0,%f0
1141*7c478bd9Sstevel@tonic-gate/* 0x0134	 203 */		fmuld	%f0,%f16,%f0
1142*7c478bd9Sstevel@tonic-gate/* 0x0138	     */		fmuld	%f0,%f2,%f2
1143*7c478bd9Sstevel@tonic-gate/* 0x013c	     */		fdtox	%f2,%f2
1144*7c478bd9Sstevel@tonic-gate/* 0x0140	     */		fxtod	%f2,%f2
1145*7c478bd9Sstevel@tonic-gate/* 0x0144	     */		fmuld	%f2,%f4,%f2
1146*7c478bd9Sstevel@tonic-gate/* 0x0148	     */		fsubd	%f0,%f2,%f22
1147*7c478bd9Sstevel@tonic-gate/* 0x014c	 206 */		ble,pt	%icc,.L900000651
1148*7c478bd9Sstevel@tonic-gate/* 0x0150	     */		sll	%g1,4,%g2
1149*7c478bd9Sstevel@tonic-gate/* 0x0154	 210 */		ldd	[%i0],%f0
1150*7c478bd9Sstevel@tonic-gate                       .L900000652:
1151*7c478bd9Sstevel@tonic-gate/* 0x0158	 210 */		fmuld	%f0,%f22,%f8
1152*7c478bd9Sstevel@tonic-gate/* 0x015c	     */		ldd	[%g4],%f0
1153*7c478bd9Sstevel@tonic-gate/* 0x0160	 214 */		cmp	%g1,1
1154*7c478bd9Sstevel@tonic-gate/* 0x0164	 210 */		ldd	[%o4+%i4],%f6
1155*7c478bd9Sstevel@tonic-gate/* 0x0168	     */		add	%g4,8,%o0
1156*7c478bd9Sstevel@tonic-gate/* 0x016c	 214 */		or	%g0,1,%o1
1157*7c478bd9Sstevel@tonic-gate/* 0x0170	 210 */		ldd	[%i3],%f2
1158*7c478bd9Sstevel@tonic-gate/* 0x0174	     */		add	%i3,16,%l1
1159*7c478bd9Sstevel@tonic-gate/* 0x0178	     */		fmuld	%f0,%f6,%f6
1160*7c478bd9Sstevel@tonic-gate/* 0x017c	     */		ldd	[%g3-8],%f4
1161*7c478bd9Sstevel@tonic-gate/* 0x0180	     */		faddd	%f2,%f8,%f2
1162*7c478bd9Sstevel@tonic-gate/* 0x0184	     */		ldd	[%i3+8],%f0
1163*7c478bd9Sstevel@tonic-gate/* 0x0188	 208 */		ldd	[%i1+%i4],%f20
1164*7c478bd9Sstevel@tonic-gate/* 0x018c	 210 */		faddd	%f0,%f6,%f0
1165*7c478bd9Sstevel@tonic-gate/* 0x0190	     */		fmuld	%f2,%f4,%f2
1166*7c478bd9Sstevel@tonic-gate/* 0x0194	     */		faddd	%f0,%f2,%f18
1167*7c478bd9Sstevel@tonic-gate/* 0x0198	 211 */		std	%f18,[%i3+8]
1168*7c478bd9Sstevel@tonic-gate/* 0x019c	 214 */		ble,pt	%icc,.L900000656
1169*7c478bd9Sstevel@tonic-gate/* 0x01a0	     */		srl	%i5,31,%g2
1170*7c478bd9Sstevel@tonic-gate/* 0x01a4	     */		cmp	%i2,7
1171*7c478bd9Sstevel@tonic-gate/* 0x01a8	 210 */		add	%i0,8,%g2
1172*7c478bd9Sstevel@tonic-gate/* 0x01ac	 214 */		bl,pn	%icc,.L77000281
1173*7c478bd9Sstevel@tonic-gate/* 0x01b0	     */		add	%g2,24,%o2
1174*7c478bd9Sstevel@tonic-gate/* 0x01b4	 216 */		ldd	[%g4+8],%f2
1175*7c478bd9Sstevel@tonic-gate/* 0x01b8	     */		add	%g4,40,%o0
1176*7c478bd9Sstevel@tonic-gate/* 0x01bc	     */		ldd	[%g4+16],%f6
1177*7c478bd9Sstevel@tonic-gate/* 0x01c0	   0 */		or	%g0,%o2,%g2
1178*7c478bd9Sstevel@tonic-gate/* 0x01c4	 216 */		add	%i3,48,%l1
1179*7c478bd9Sstevel@tonic-gate/* 0x01c8	     */		ldd	[%g2-24],%f0
1180*7c478bd9Sstevel@tonic-gate/* 0x01cc	     */		fmuld	%f2,%f20,%f2
1181*7c478bd9Sstevel@tonic-gate/* 0x01d0	 214 */		sub	%i2,2,%o2
1182*7c478bd9Sstevel@tonic-gate/* 0x01d4	 216 */		ldd	[%g2-16],%f8
1183*7c478bd9Sstevel@tonic-gate/* 0x01d8	     */		fmuld	%f6,%f20,%f10
1184*7c478bd9Sstevel@tonic-gate/* 0x01dc	     */		or	%g0,5,%o1
1185*7c478bd9Sstevel@tonic-gate/* 0x01e0	     */		ldd	[%g4+24],%f14
1186*7c478bd9Sstevel@tonic-gate/* 0x01e4	     */		fmuld	%f0,%f22,%f4
1187*7c478bd9Sstevel@tonic-gate/* 0x01e8	     */		ldd	[%i3+16],%f0
1188*7c478bd9Sstevel@tonic-gate/* 0x01ec	     */		ldd	[%g2-8],%f6
1189*7c478bd9Sstevel@tonic-gate/* 0x01f0	     */		ldd	[%g4+32],%f12
1190*7c478bd9Sstevel@tonic-gate/* 0x01f4	     */		faddd	%f2,%f4,%f4
1191*7c478bd9Sstevel@tonic-gate/* 0x01f8	     */		ldd	[%i3+32],%f2
1192*7c478bd9Sstevel@tonic-gate                       .L900000640:
1193*7c478bd9Sstevel@tonic-gate/* 0x01fc	 216 */		ldd	[%g2],%f24
1194*7c478bd9Sstevel@tonic-gate/* 0x0200	     */		add	%o1,3,%o1
1195*7c478bd9Sstevel@tonic-gate/* 0x0204	     */		add	%g2,24,%g2
1196*7c478bd9Sstevel@tonic-gate/* 0x0208	     */		fmuld	%f8,%f22,%f8
1197*7c478bd9Sstevel@tonic-gate/* 0x020c	     */		ldd	[%l1],%f28
1198*7c478bd9Sstevel@tonic-gate/* 0x0210	     */		cmp	%o1,%o2
1199*7c478bd9Sstevel@tonic-gate/* 0x0214	     */		add	%o0,24,%o0
1200*7c478bd9Sstevel@tonic-gate/* 0x0218	     */		ldd	[%o0-24],%f26
1201*7c478bd9Sstevel@tonic-gate/* 0x021c	     */		faddd	%f0,%f4,%f0
1202*7c478bd9Sstevel@tonic-gate/* 0x0220	     */		add	%l1,48,%l1
1203*7c478bd9Sstevel@tonic-gate/* 0x0224	     */		faddd	%f10,%f8,%f10
1204*7c478bd9Sstevel@tonic-gate/* 0x0228	     */		fmuld	%f14,%f20,%f4
1205*7c478bd9Sstevel@tonic-gate/* 0x022c	     */		std	%f0,[%l1-80]
1206*7c478bd9Sstevel@tonic-gate/* 0x0230	     */		ldd	[%g2-16],%f8
1207*7c478bd9Sstevel@tonic-gate/* 0x0234	     */		fmuld	%f6,%f22,%f6
1208*7c478bd9Sstevel@tonic-gate/* 0x0238	     */		ldd	[%l1-32],%f0
1209*7c478bd9Sstevel@tonic-gate/* 0x023c	     */		ldd	[%o0-16],%f14
1210*7c478bd9Sstevel@tonic-gate/* 0x0240	     */		faddd	%f2,%f10,%f2
1211*7c478bd9Sstevel@tonic-gate/* 0x0244	     */		faddd	%f4,%f6,%f10
1212*7c478bd9Sstevel@tonic-gate/* 0x0248	     */		fmuld	%f12,%f20,%f4
1213*7c478bd9Sstevel@tonic-gate/* 0x024c	     */		std	%f2,[%l1-64]
1214*7c478bd9Sstevel@tonic-gate/* 0x0250	     */		ldd	[%g2-8],%f6
1215*7c478bd9Sstevel@tonic-gate/* 0x0254	     */		fmuld	%f24,%f22,%f24
1216*7c478bd9Sstevel@tonic-gate/* 0x0258	     */		ldd	[%l1-16],%f2
1217*7c478bd9Sstevel@tonic-gate/* 0x025c	     */		ldd	[%o0-8],%f12
1218*7c478bd9Sstevel@tonic-gate/* 0x0260	     */		faddd	%f28,%f10,%f10
1219*7c478bd9Sstevel@tonic-gate/* 0x0264	     */		std	%f10,[%l1-48]
1220*7c478bd9Sstevel@tonic-gate/* 0x0268	     */		fmuld	%f26,%f20,%f10
1221*7c478bd9Sstevel@tonic-gate/* 0x026c	     */		ble,pt	%icc,.L900000640
1222*7c478bd9Sstevel@tonic-gate/* 0x0270	     */		faddd	%f4,%f24,%f4
1223*7c478bd9Sstevel@tonic-gate                       .L900000643:
1224*7c478bd9Sstevel@tonic-gate/* 0x0274	 216 */		fmuld	%f8,%f22,%f28
1225*7c478bd9Sstevel@tonic-gate/* 0x0278	     */		ldd	[%g2],%f24
1226*7c478bd9Sstevel@tonic-gate/* 0x027c	     */		faddd	%f0,%f4,%f26
1227*7c478bd9Sstevel@tonic-gate/* 0x0280	     */		fmuld	%f12,%f20,%f8
1228*7c478bd9Sstevel@tonic-gate/* 0x0284	     */		add	%l1,32,%l1
1229*7c478bd9Sstevel@tonic-gate/* 0x0288	     */		cmp	%o1,%i2
1230*7c478bd9Sstevel@tonic-gate/* 0x028c	     */		fmuld	%f14,%f20,%f14
1231*7c478bd9Sstevel@tonic-gate/* 0x0290	     */		ldd	[%l1-32],%f4
1232*7c478bd9Sstevel@tonic-gate/* 0x0294	     */		add	%g2,8,%g2
1233*7c478bd9Sstevel@tonic-gate/* 0x0298	     */		faddd	%f10,%f28,%f12
1234*7c478bd9Sstevel@tonic-gate/* 0x029c	     */		fmuld	%f6,%f22,%f6
1235*7c478bd9Sstevel@tonic-gate/* 0x02a0	     */		ldd	[%l1-16],%f0
1236*7c478bd9Sstevel@tonic-gate/* 0x02a4	     */		fmuld	%f24,%f22,%f10
1237*7c478bd9Sstevel@tonic-gate/* 0x02a8	     */		std	%f26,[%l1-64]
1238*7c478bd9Sstevel@tonic-gate/* 0x02ac	     */		faddd	%f2,%f12,%f2
1239*7c478bd9Sstevel@tonic-gate/* 0x02b0	     */		std	%f2,[%l1-48]
1240*7c478bd9Sstevel@tonic-gate/* 0x02b4	     */		faddd	%f14,%f6,%f6
1241*7c478bd9Sstevel@tonic-gate/* 0x02b8	     */		faddd	%f8,%f10,%f2
1242*7c478bd9Sstevel@tonic-gate/* 0x02bc	     */		faddd	%f4,%f6,%f4
1243*7c478bd9Sstevel@tonic-gate/* 0x02c0	     */		std	%f4,[%l1-32]
1244*7c478bd9Sstevel@tonic-gate/* 0x02c4	     */		faddd	%f0,%f2,%f0
1245*7c478bd9Sstevel@tonic-gate/* 0x02c8	     */		bg,pn	%icc,.L77000213
1246*7c478bd9Sstevel@tonic-gate/* 0x02cc	     */		std	%f0,[%l1-16]
1247*7c478bd9Sstevel@tonic-gate                       .L77000281:
1248*7c478bd9Sstevel@tonic-gate/* 0x02d0	 216 */		ldd	[%o0],%f0
1249*7c478bd9Sstevel@tonic-gate                       .L900000655:
1250*7c478bd9Sstevel@tonic-gate/* 0x02d4	 216 */		ldd	[%g2],%f4
1251*7c478bd9Sstevel@tonic-gate/* 0x02d8	     */		fmuld	%f0,%f20,%f2
1252*7c478bd9Sstevel@tonic-gate/* 0x02dc	     */		add	%o1,1,%o1
1253*7c478bd9Sstevel@tonic-gate/* 0x02e0	     */		ldd	[%l1],%f0
1254*7c478bd9Sstevel@tonic-gate/* 0x02e4	     */		add	%o0,8,%o0
1255*7c478bd9Sstevel@tonic-gate/* 0x02e8	     */		add	%g2,8,%g2
1256*7c478bd9Sstevel@tonic-gate/* 0x02ec	     */		fmuld	%f4,%f22,%f4
1257*7c478bd9Sstevel@tonic-gate/* 0x02f0	     */		cmp	%o1,%i2
1258*7c478bd9Sstevel@tonic-gate/* 0x02f4	     */		faddd	%f2,%f4,%f2
1259*7c478bd9Sstevel@tonic-gate/* 0x02f8	     */		faddd	%f0,%f2,%f0
1260*7c478bd9Sstevel@tonic-gate/* 0x02fc	     */		std	%f0,[%l1]
1261*7c478bd9Sstevel@tonic-gate/* 0x0300	     */		add	%l1,16,%l1
1262*7c478bd9Sstevel@tonic-gate/* 0x0304	     */		ble,a,pt	%icc,.L900000655
1263*7c478bd9Sstevel@tonic-gate/* 0x0308	     */		ldd	[%o0],%f0
1264*7c478bd9Sstevel@tonic-gate                       .L77000213:
1265*7c478bd9Sstevel@tonic-gate/* 0x030c	     */		srl	%i5,31,%g2
1266*7c478bd9Sstevel@tonic-gate                       .L900000656:
1267*7c478bd9Sstevel@tonic-gate/* 0x0310	 218 */		cmp	%l0,30
1268*7c478bd9Sstevel@tonic-gate/* 0x0314	     */		bne,a,pt	%icc,.L900000654
1269*7c478bd9Sstevel@tonic-gate/* 0x0318	     */		fdtox	%f18,%f0
1270*7c478bd9Sstevel@tonic-gate/* 0x031c	     */		add	%i5,%g2,%g2
1271*7c478bd9Sstevel@tonic-gate/* 0x0320	     */		sub	%o3,1,%o2
1272*7c478bd9Sstevel@tonic-gate/* 0x0324	     */		sra	%g2,1,%o0
1273*7c478bd9Sstevel@tonic-gate/* 0x0328	 216 */		ldd	[%g3],%f0
1274*7c478bd9Sstevel@tonic-gate/* 0x032c	     */		add	%o0,1,%g2
1275*7c478bd9Sstevel@tonic-gate/* 0x0330	     */		sll	%g2,1,%o0
1276*7c478bd9Sstevel@tonic-gate/* 0x0334	     */		fmovd	%f0,%f2
1277*7c478bd9Sstevel@tonic-gate/* 0x0338	     */		sll	%g2,4,%o1
1278*7c478bd9Sstevel@tonic-gate/* 0x033c	     */		cmp	%o0,%o3
1279*7c478bd9Sstevel@tonic-gate/* 0x0340	     */		bge,pt	%icc,.L77000215
1280*7c478bd9Sstevel@tonic-gate/* 0x0344	     */		or	%g0,0,%l0
1281*7c478bd9Sstevel@tonic-gate/* 0x0348	 218 */		add	%g5,%o1,%o1
1282*7c478bd9Sstevel@tonic-gate/* 0x034c	 216 */		ldd	[%o1],%f6
1283*7c478bd9Sstevel@tonic-gate                       .L900000653:
1284*7c478bd9Sstevel@tonic-gate/* 0x0350	     */		fdtox	%f6,%f10
1285*7c478bd9Sstevel@tonic-gate/* 0x0354	     */		ldd	[%o1+8],%f4
1286*7c478bd9Sstevel@tonic-gate/* 0x0358	     */		add	%o0,2,%o0
1287*7c478bd9Sstevel@tonic-gate/* 0x035c	     */		ldd	[%g3],%f12
1288*7c478bd9Sstevel@tonic-gate/* 0x0360	     */		fdtox	%f6,%f6
1289*7c478bd9Sstevel@tonic-gate/* 0x0364	     */		cmp	%o0,%o2
1290*7c478bd9Sstevel@tonic-gate/* 0x0368	     */		fdtox	%f4,%f8
1291*7c478bd9Sstevel@tonic-gate/* 0x036c	     */		fdtox	%f4,%f4
1292*7c478bd9Sstevel@tonic-gate/* 0x0370	     */		fmovs	%f12,%f10
1293*7c478bd9Sstevel@tonic-gate/* 0x0374	     */		fmovs	%f12,%f8
1294*7c478bd9Sstevel@tonic-gate/* 0x0378	     */		fxtod	%f10,%f10
1295*7c478bd9Sstevel@tonic-gate/* 0x037c	     */		fxtod	%f8,%f8
1296*7c478bd9Sstevel@tonic-gate/* 0x0380	     */		faddd	%f10,%f2,%f2
1297*7c478bd9Sstevel@tonic-gate/* 0x0384	     */		std	%f2,[%o1]
1298*7c478bd9Sstevel@tonic-gate/* 0x0388	     */		faddd	%f8,%f0,%f0
1299*7c478bd9Sstevel@tonic-gate/* 0x038c	     */		std	%f0,[%o1+8]
1300*7c478bd9Sstevel@tonic-gate/* 0x0390	     */		add	%o1,16,%o1
1301*7c478bd9Sstevel@tonic-gate/* 0x0394	     */		fitod	%f6,%f2
1302*7c478bd9Sstevel@tonic-gate/* 0x0398	     */		fitod	%f4,%f0
1303*7c478bd9Sstevel@tonic-gate/* 0x039c	     */		ble,a,pt	%icc,.L900000653
1304*7c478bd9Sstevel@tonic-gate/* 0x03a0	     */		ldd	[%o1],%f6
1305*7c478bd9Sstevel@tonic-gate                       .L77000233:
1306*7c478bd9Sstevel@tonic-gate/* 0x03a4	     */		or	%g0,0,%l0
1307*7c478bd9Sstevel@tonic-gate                       .L77000215:
1308*7c478bd9Sstevel@tonic-gate/* 0x03a8	     */		fdtox	%f18,%f0
1309*7c478bd9Sstevel@tonic-gate                       .L900000654:
1310*7c478bd9Sstevel@tonic-gate/* 0x03ac	     */		ldd	[%g3],%f6
1311*7c478bd9Sstevel@tonic-gate/* 0x03b0	 220 */		add	%i5,1,%i5
1312*7c478bd9Sstevel@tonic-gate/* 0x03b4	     */		add	%i4,8,%i4
1313*7c478bd9Sstevel@tonic-gate/* 0x03b8	     */		ldd	[%g3-8],%f2
1314*7c478bd9Sstevel@tonic-gate/* 0x03bc	     */		add	%l0,1,%l0
1315*7c478bd9Sstevel@tonic-gate/* 0x03c0	     */		add	%i3,8,%i3
1316*7c478bd9Sstevel@tonic-gate/* 0x03c4	     */		fmovs	%f6,%f0
1317*7c478bd9Sstevel@tonic-gate/* 0x03c8	     */		ldd	[%g3-16],%f4
1318*7c478bd9Sstevel@tonic-gate/* 0x03cc	     */		cmp	%i5,%o5
1319*7c478bd9Sstevel@tonic-gate/* 0x03d0	     */		fxtod	%f0,%f0
1320*7c478bd9Sstevel@tonic-gate/* 0x03d4	     */		fmuld	%f0,%f16,%f0
1321*7c478bd9Sstevel@tonic-gate/* 0x03d8	     */		fmuld	%f0,%f2,%f2
1322*7c478bd9Sstevel@tonic-gate/* 0x03dc	     */		fdtox	%f2,%f2
1323*7c478bd9Sstevel@tonic-gate/* 0x03e0	     */		fxtod	%f2,%f2
1324*7c478bd9Sstevel@tonic-gate/* 0x03e4	     */		fmuld	%f2,%f4,%f2
1325*7c478bd9Sstevel@tonic-gate/* 0x03e8	     */		fsubd	%f0,%f2,%f22
1326*7c478bd9Sstevel@tonic-gate/* 0x03ec	     */		ble,a,pt	%icc,.L900000652
1327*7c478bd9Sstevel@tonic-gate/* 0x03f0	     */		ldd	[%i0],%f0
1328*7c478bd9Sstevel@tonic-gate                       .L900000627:
1329*7c478bd9Sstevel@tonic-gate/* 0x03f4	 220 */		ba	.L900000651
1330*7c478bd9Sstevel@tonic-gate/* 0x03f8	     */		sll	%g1,4,%g2
1331*7c478bd9Sstevel@tonic-gate                       .L77000289:
1332*7c478bd9Sstevel@tonic-gate/* 0x03fc	 225 */		ldd	[%o2],%f6
1333*7c478bd9Sstevel@tonic-gate/* 0x0400	 243 */		or	%g0,%o1,%o4
1334*7c478bd9Sstevel@tonic-gate/* 0x0404	 245 */		or	%g0,0,%o3
1335*7c478bd9Sstevel@tonic-gate/* 0x0408	 225 */		ldd	[%g4],%f4
1336*7c478bd9Sstevel@tonic-gate/* 0x040c	 237 */		std	%f0,[%o1+8]
1337*7c478bd9Sstevel@tonic-gate/* 0x0410	     */		std	%f0,[%o1+16]
1338*7c478bd9Sstevel@tonic-gate/* 0x0414	 225 */		fmuld	%f4,%f6,%f4
1339*7c478bd9Sstevel@tonic-gate/* 0x0418	     */		std	%f4,[%o1]
1340*7c478bd9Sstevel@tonic-gate/* 0x041c	 237 */		std	%f0,[%o1+24]
1341*7c478bd9Sstevel@tonic-gate/* 0x0420	     */		std	%f0,[%o1+32]
1342*7c478bd9Sstevel@tonic-gate/* 0x0424	     */		fdtox	%f4,%f4
1343*7c478bd9Sstevel@tonic-gate/* 0x0428	     */		std	%f0,[%o1+40]
1344*7c478bd9Sstevel@tonic-gate/* 0x042c	     */		std	%f0,[%o1+48]
1345*7c478bd9Sstevel@tonic-gate/* 0x0430	     */		std	%f0,[%o1+56]
1346*7c478bd9Sstevel@tonic-gate/* 0x0434	     */		std	%f0,[%o1+64]
1347*7c478bd9Sstevel@tonic-gate/* 0x0438	     */		std	%f0,[%o1+72]
1348*7c478bd9Sstevel@tonic-gate/* 0x043c	     */		std	%f0,[%o1+80]
1349*7c478bd9Sstevel@tonic-gate/* 0x0440	     */		std	%f0,[%o1+88]
1350*7c478bd9Sstevel@tonic-gate/* 0x0444	     */		std	%f0,[%o1+96]
1351*7c478bd9Sstevel@tonic-gate/* 0x0448	     */		std	%f0,[%o1+104]
1352*7c478bd9Sstevel@tonic-gate/* 0x044c	     */		std	%f0,[%o1+112]
1353*7c478bd9Sstevel@tonic-gate/* 0x0450	     */		std	%f0,[%o1+120]
1354*7c478bd9Sstevel@tonic-gate/* 0x0454	     */		std	%f0,[%o1+128]
1355*7c478bd9Sstevel@tonic-gate/* 0x0458	     */		std	%f0,[%o1+136]
1356*7c478bd9Sstevel@tonic-gate/* 0x045c	     */		std	%f0,[%o1+144]
1357*7c478bd9Sstevel@tonic-gate/* 0x0460	     */		std	%f0,[%o1+152]
1358*7c478bd9Sstevel@tonic-gate/* 0x0464	     */		std	%f0,[%o1+160]
1359*7c478bd9Sstevel@tonic-gate/* 0x0468	     */		std	%f0,[%o1+168]
1360*7c478bd9Sstevel@tonic-gate/* 0x046c	     */		fmovs	%f0,%f4
1361*7c478bd9Sstevel@tonic-gate/* 0x0470	     */		std	%f0,[%o1+176]
1362*7c478bd9Sstevel@tonic-gate/* 0x0474	 245 */		or	%g0,0,%o0
1363*7c478bd9Sstevel@tonic-gate/* 0x0478	 237 */		std	%f0,[%o1+184]
1364*7c478bd9Sstevel@tonic-gate/* 0x047c	     */		fxtod	%f4,%f4
1365*7c478bd9Sstevel@tonic-gate/* 0x0480	     */		std	%f0,[%o1+192]
1366*7c478bd9Sstevel@tonic-gate/* 0x0484	     */		std	%f0,[%o1+200]
1367*7c478bd9Sstevel@tonic-gate/* 0x0488	     */		std	%f0,[%o1+208]
1368*7c478bd9Sstevel@tonic-gate/* 0x048c	 242 */		fmuld	%f4,%f2,%f2
1369*7c478bd9Sstevel@tonic-gate/* 0x0490	 237 */		std	%f0,[%o1+216]
1370*7c478bd9Sstevel@tonic-gate/* 0x0494	     */		std	%f0,[%o1+224]
1371*7c478bd9Sstevel@tonic-gate/* 0x0498	     */		std	%f0,[%o1+232]
1372*7c478bd9Sstevel@tonic-gate/* 0x049c	     */		std	%f0,[%o1+240]
1373*7c478bd9Sstevel@tonic-gate/* 0x04a0	     */		std	%f0,[%o1+248]
1374*7c478bd9Sstevel@tonic-gate/* 0x04a4	     */		std	%f0,[%o1+256]
1375*7c478bd9Sstevel@tonic-gate/* 0x04a8	     */		std	%f0,[%o1+264]
1376*7c478bd9Sstevel@tonic-gate/* 0x04ac	     */		std	%f0,[%o1+272]
1377*7c478bd9Sstevel@tonic-gate/* 0x04b0	     */		std	%f0,[%o1+280]
1378*7c478bd9Sstevel@tonic-gate/* 0x04b4	     */		std	%f0,[%o1+288]
1379*7c478bd9Sstevel@tonic-gate/* 0x04b8	     */		std	%f0,[%o1+296]
1380*7c478bd9Sstevel@tonic-gate/* 0x04bc	     */		std	%f0,[%o1+304]
1381*7c478bd9Sstevel@tonic-gate/* 0x04c0	     */		std	%f0,[%o1+312]
1382*7c478bd9Sstevel@tonic-gate/* 0x04c4	     */		std	%f0,[%o1+320]
1383*7c478bd9Sstevel@tonic-gate/* 0x04c8	     */		std	%f0,[%o1+328]
1384*7c478bd9Sstevel@tonic-gate/* 0x04cc	     */		std	%f0,[%o1+336]
1385*7c478bd9Sstevel@tonic-gate/* 0x04d0	     */		std	%f0,[%o1+344]
1386*7c478bd9Sstevel@tonic-gate/* 0x04d4	     */		std	%f0,[%o1+352]
1387*7c478bd9Sstevel@tonic-gate/* 0x04d8	     */		std	%f0,[%o1+360]
1388*7c478bd9Sstevel@tonic-gate/* 0x04dc	     */		std	%f0,[%o1+368]
1389*7c478bd9Sstevel@tonic-gate/* 0x04e0	     */		std	%f0,[%o1+376]
1390*7c478bd9Sstevel@tonic-gate/* 0x04e4	     */		std	%f0,[%o1+384]
1391*7c478bd9Sstevel@tonic-gate/* 0x04e8	     */		std	%f0,[%o1+392]
1392*7c478bd9Sstevel@tonic-gate/* 0x04ec	     */		std	%f0,[%o1+400]
1393*7c478bd9Sstevel@tonic-gate/* 0x04f0	     */		std	%f0,[%o1+408]
1394*7c478bd9Sstevel@tonic-gate/* 0x04f4	     */		std	%f0,[%o1+416]
1395*7c478bd9Sstevel@tonic-gate/* 0x04f8	     */		std	%f0,[%o1+424]
1396*7c478bd9Sstevel@tonic-gate/* 0x04fc	     */		std	%f0,[%o1+432]
1397*7c478bd9Sstevel@tonic-gate/* 0x0500	     */		std	%f0,[%o1+440]
1398*7c478bd9Sstevel@tonic-gate/* 0x0504	     */		std	%f0,[%o1+448]
1399*7c478bd9Sstevel@tonic-gate/* 0x0508	     */		std	%f0,[%o1+456]
1400*7c478bd9Sstevel@tonic-gate/* 0x050c	     */		std	%f0,[%o1+464]
1401*7c478bd9Sstevel@tonic-gate/* 0x0510	     */		std	%f0,[%o1+472]
1402*7c478bd9Sstevel@tonic-gate/* 0x0514	     */		std	%f0,[%o1+480]
1403*7c478bd9Sstevel@tonic-gate/* 0x0518	     */		std	%f0,[%o1+488]
1404*7c478bd9Sstevel@tonic-gate/* 0x051c	     */		std	%f0,[%o1+496]
1405*7c478bd9Sstevel@tonic-gate/* 0x0520	     */		std	%f0,[%o1+504]
1406*7c478bd9Sstevel@tonic-gate/* 0x0524	     */		std	%f0,[%o1+512]
1407*7c478bd9Sstevel@tonic-gate/* 0x0528	     */		std	%f0,[%o1+520]
1408*7c478bd9Sstevel@tonic-gate/* 0x052c	     */		ldd	[%g3-8],%f0
1409*7c478bd9Sstevel@tonic-gate/* 0x0530	     */		ldd	[%g3-16],%f8
1410*7c478bd9Sstevel@tonic-gate/* 0x0534	     */		fmuld	%f2,%f0,%f6
1411*7c478bd9Sstevel@tonic-gate/* 0x0538	 239 */		ldd	[%i4],%f4
1412*7c478bd9Sstevel@tonic-gate/* 0x053c	 240 */		ldd	[%g4],%f0
1413*7c478bd9Sstevel@tonic-gate/* 0x0540	     */		fdtox	%f6,%f6
1414*7c478bd9Sstevel@tonic-gate/* 0x0544	     */		fxtod	%f6,%f6
1415*7c478bd9Sstevel@tonic-gate/* 0x0548	     */		fmuld	%f6,%f8,%f6
1416*7c478bd9Sstevel@tonic-gate/* 0x054c	     */		fsubd	%f2,%f6,%f2
1417*7c478bd9Sstevel@tonic-gate/* 0x0550	 250 */		fmuld	%f4,%f2,%f12
1418*7c478bd9Sstevel@tonic-gate                       .L900000650:
1419*7c478bd9Sstevel@tonic-gate
1420*7c478bd9Sstevel@tonic-gate
1421*7c478bd9Sstevel@tonic-gate	fmovd %f2,%f0
1422*7c478bd9Sstevel@tonic-gate	fmovd %f16,%f18
1423*7c478bd9Sstevel@tonic-gate	ldd [%i4],%f2
1424*7c478bd9Sstevel@tonic-gate	ldd [%o4],%f8
1425*7c478bd9Sstevel@tonic-gate	ldd [%g4],%f10
1426*7c478bd9Sstevel@tonic-gate	ldd [%g3-8],%f14
1427*7c478bd9Sstevel@tonic-gate	ldd [%g3-16],%f16
1428*7c478bd9Sstevel@tonic-gate	ldd [%i2],%f24
1429*7c478bd9Sstevel@tonic-gate
1430*7c478bd9Sstevel@tonic-gate	ldd [%g4+8],%f26
1431*7c478bd9Sstevel@tonic-gate	ldd [%g4+16],%f40
1432*7c478bd9Sstevel@tonic-gate	ldd [%g4+48],%f46
1433*7c478bd9Sstevel@tonic-gate	ldd [%g4+56],%f30
1434*7c478bd9Sstevel@tonic-gate	ldd [%g4+64],%f54
1435*7c478bd9Sstevel@tonic-gate	ldd [%g4+104],%f34
1436*7c478bd9Sstevel@tonic-gate	ldd [%g4+112],%f58
1437*7c478bd9Sstevel@tonic-gate
1438*7c478bd9Sstevel@tonic-gate	ldd [%i4+8],%f28
1439*7c478bd9Sstevel@tonic-gate	ldd [%i4+104],%f38
1440*7c478bd9Sstevel@tonic-gate	ldd [%i4+112],%f60
1441*7c478bd9Sstevel@tonic-gate
1442*7c478bd9Sstevel@tonic-gate
1443*7c478bd9Sstevel@tonic-gate	.L99999999:
1444*7c478bd9Sstevel@tonic-gate!1
1445*7c478bd9Sstevel@tonic-gate	ldd	[%g4+24],%f32
1446*7c478bd9Sstevel@tonic-gate	fmuld	%f0,%f2,%f4
1447*7c478bd9Sstevel@tonic-gate!2
1448*7c478bd9Sstevel@tonic-gate	ldd	[%i4+24],%f36
1449*7c478bd9Sstevel@tonic-gate	fmuld	%f26,%f24,%f20
1450*7c478bd9Sstevel@tonic-gate!3
1451*7c478bd9Sstevel@tonic-gate	ldd	[%g4+40],%f42
1452*7c478bd9Sstevel@tonic-gate	fmuld	%f28,%f0,%f22
1453*7c478bd9Sstevel@tonic-gate!4
1454*7c478bd9Sstevel@tonic-gate	ldd	[%i4+40],%f44
1455*7c478bd9Sstevel@tonic-gate	fmuld	%f32,%f24,%f32
1456*7c478bd9Sstevel@tonic-gate!5
1457*7c478bd9Sstevel@tonic-gate	ldd	[%i2+8],%f6
1458*7c478bd9Sstevel@tonic-gate	faddd	%f4,%f8,%f4
1459*7c478bd9Sstevel@tonic-gate	fmuld	%f36,%f0,%f36
1460*7c478bd9Sstevel@tonic-gate!6
1461*7c478bd9Sstevel@tonic-gate	add	%i2,8,%i2
1462*7c478bd9Sstevel@tonic-gate	ldd	[%i4+56],%f50
1463*7c478bd9Sstevel@tonic-gate	fmuld	%f42,%f24,%f42
1464*7c478bd9Sstevel@tonic-gate!7
1465*7c478bd9Sstevel@tonic-gate	ldd	[%g4+72],%f52
1466*7c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
1467*7c478bd9Sstevel@tonic-gate	fmuld	%f44,%f0,%f44
1468*7c478bd9Sstevel@tonic-gate!8
1469*7c478bd9Sstevel@tonic-gate	ldd	[%o4+16],%f22
1470*7c478bd9Sstevel@tonic-gate	fmuld	%f10,%f6,%f12
1471*7c478bd9Sstevel@tonic-gate!9
1472*7c478bd9Sstevel@tonic-gate	ldd	[%i4+72],%f56
1473*7c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
1474*7c478bd9Sstevel@tonic-gate	fmuld	%f14,%f4,%f4
1475*7c478bd9Sstevel@tonic-gate!10
1476*7c478bd9Sstevel@tonic-gate	ldd	[%o4+48],%f36
1477*7c478bd9Sstevel@tonic-gate	fmuld	%f30,%f24,%f48
1478*7c478bd9Sstevel@tonic-gate!11
1479*7c478bd9Sstevel@tonic-gate	ldd	[%o4+8],%f8
1480*7c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
1481*7c478bd9Sstevel@tonic-gate	fmuld	%f50,%f0,%f50
1482*7c478bd9Sstevel@tonic-gate!12
1483*7c478bd9Sstevel@tonic-gate	std	%f20,[%o4+16]
1484*7c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
1485*7c478bd9Sstevel@tonic-gate	fmuld	%f52,%f24,%f52
1486*7c478bd9Sstevel@tonic-gate!13
1487*7c478bd9Sstevel@tonic-gate	ldd	[%o4+80],%f44
1488*7c478bd9Sstevel@tonic-gate	faddd	%f4,%f12,%f4
1489*7c478bd9Sstevel@tonic-gate	fmuld	%f56,%f0,%f56
1490*7c478bd9Sstevel@tonic-gate!14
1491*7c478bd9Sstevel@tonic-gate	ldd	[%g4+88],%f20
1492*7c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
1493*7c478bd9Sstevel@tonic-gate!15
1494*7c478bd9Sstevel@tonic-gate	ldd	[%i4+88],%f22
1495*7c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
1496*7c478bd9Sstevel@tonic-gate!16
1497*7c478bd9Sstevel@tonic-gate	ldd	[%o4+112],%f50
1498*7c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f52
1499*7c478bd9Sstevel@tonic-gate!17
1500*7c478bd9Sstevel@tonic-gate	ldd	[%o4+144],%f56
1501*7c478bd9Sstevel@tonic-gate	faddd	%f4,%f8,%f8
1502*7c478bd9Sstevel@tonic-gate	fmuld	%f20,%f24,%f20
1503*7c478bd9Sstevel@tonic-gate!18
1504*7c478bd9Sstevel@tonic-gate	std	%f32,[%o4+48]
1505*7c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
1506*7c478bd9Sstevel@tonic-gate	fmuld	%f22,%f0,%f22
1507*7c478bd9Sstevel@tonic-gate!19
1508*7c478bd9Sstevel@tonic-gate	std	%f42,[%o4+80]
1509*7c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
1510*7c478bd9Sstevel@tonic-gate	fmuld	%f34,%f24,%f32
1511*7c478bd9Sstevel@tonic-gate!20
1512*7c478bd9Sstevel@tonic-gate	std	%f48,[%o4+112]
1513*7c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f52
1514*7c478bd9Sstevel@tonic-gate	fmuld	%f38,%f0,%f36
1515*7c478bd9Sstevel@tonic-gate!21
1516*7c478bd9Sstevel@tonic-gate	ldd	[%g4+120],%f42
1517*7c478bd9Sstevel@tonic-gate	fdtox	%f8,%f4
1518*7c478bd9Sstevel@tonic-gate!22
1519*7c478bd9Sstevel@tonic-gate	std	%f52,[%o4+144]
1520*7c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
1521*7c478bd9Sstevel@tonic-gate!23
1522*7c478bd9Sstevel@tonic-gate	ldd	[%i4+120],%f44
1523*7c478bd9Sstevel@tonic-gate!24
1524*7c478bd9Sstevel@tonic-gate	ldd	[%o4+176],%f22
1525*7c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
1526*7c478bd9Sstevel@tonic-gate	fmuld	%f42,%f24,%f42
1527*7c478bd9Sstevel@tonic-gate!25
1528*7c478bd9Sstevel@tonic-gate	ldd	[%i4+16],%f50
1529*7c478bd9Sstevel@tonic-gate	fmovs	%f17,%f4
1530*7c478bd9Sstevel@tonic-gate!26
1531*7c478bd9Sstevel@tonic-gate	ldd	[%g4+32],%f52
1532*7c478bd9Sstevel@tonic-gate	fmuld	%f44,%f0,%f44
1533*7c478bd9Sstevel@tonic-gate!27
1534*7c478bd9Sstevel@tonic-gate	ldd	[%i4+32],%f56
1535*7c478bd9Sstevel@tonic-gate	fmuld	%f40,%f24,%f48
1536*7c478bd9Sstevel@tonic-gate!28
1537*7c478bd9Sstevel@tonic-gate	ldd	[%o4+208],%f36
1538*7c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
1539*7c478bd9Sstevel@tonic-gate	fmuld	%f50,%f0,%f50
1540*7c478bd9Sstevel@tonic-gate!29
1541*7c478bd9Sstevel@tonic-gate	std	%f20,[%o4+176]
1542*7c478bd9Sstevel@tonic-gate	fxtod	%f4,%f4
1543*7c478bd9Sstevel@tonic-gate	fmuld	%f52,%f24,%f52
1544*7c478bd9Sstevel@tonic-gate!30
1545*7c478bd9Sstevel@tonic-gate	ldd	[%i4+48],%f22
1546*7c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
1547*7c478bd9Sstevel@tonic-gate	fmuld	%f56,%f0,%f56
1548*7c478bd9Sstevel@tonic-gate!31
1549*7c478bd9Sstevel@tonic-gate	ldd	[%o4+240],%f44
1550*7c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
1551*7c478bd9Sstevel@tonic-gate!32
1552*7c478bd9Sstevel@tonic-gate	std	%f32,[%o4+208]
1553*7c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
1554*7c478bd9Sstevel@tonic-gate	fmuld	%f46,%f24,%f20
1555*7c478bd9Sstevel@tonic-gate!33
1556*7c478bd9Sstevel@tonic-gate	ldd	[%o4+32],%f50
1557*7c478bd9Sstevel@tonic-gate	fmuld	%f4,%f18,%f12
1558*7c478bd9Sstevel@tonic-gate!34
1559*7c478bd9Sstevel@tonic-gate	ldd	[%i4+64],%f36
1560*7c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f52
1561*7c478bd9Sstevel@tonic-gate	fmuld	%f22,%f0,%f22
1562*7c478bd9Sstevel@tonic-gate!35
1563*7c478bd9Sstevel@tonic-gate	ldd	[%o4+64],%f56
1564*7c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
1565*7c478bd9Sstevel@tonic-gate!36
1566*7c478bd9Sstevel@tonic-gate	std	%f42,[%o4+240]
1567*7c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
1568*7c478bd9Sstevel@tonic-gate	fmuld	%f54,%f24,%f32
1569*7c478bd9Sstevel@tonic-gate!37
1570*7c478bd9Sstevel@tonic-gate	std	%f48,[%o4+32]
1571*7c478bd9Sstevel@tonic-gate	fmuld	%f12,%f14,%f4
1572*7c478bd9Sstevel@tonic-gate!38
1573*7c478bd9Sstevel@tonic-gate	ldd	[%g4+80],%f42
1574*7c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f56	! yes, tmp52!
1575*7c478bd9Sstevel@tonic-gate	fmuld	%f36,%f0,%f36
1576*7c478bd9Sstevel@tonic-gate!39
1577*7c478bd9Sstevel@tonic-gate	ldd	[%i4+80],%f44
1578*7c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
1579*7c478bd9Sstevel@tonic-gate!40
1580*7c478bd9Sstevel@tonic-gate	ldd	[%g4+96],%f48
1581*7c478bd9Sstevel@tonic-gate	fmuld	%f58,%f24,%f52
1582*7c478bd9Sstevel@tonic-gate!41
1583*7c478bd9Sstevel@tonic-gate	ldd	[%i4+96],%f50
1584*7c478bd9Sstevel@tonic-gate	fdtox	%f4,%f4
1585*7c478bd9Sstevel@tonic-gate	fmuld	%f42,%f24,%f42
1586*7c478bd9Sstevel@tonic-gate!42
1587*7c478bd9Sstevel@tonic-gate	std	%f56,[%o4+64]	! yes, tmp52!
1588*7c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
1589*7c478bd9Sstevel@tonic-gate	fmuld	%f44,%f0,%f44
1590*7c478bd9Sstevel@tonic-gate!43
1591*7c478bd9Sstevel@tonic-gate	ldd	[%o4+96],%f22
1592*7c478bd9Sstevel@tonic-gate	fmuld	%f48,%f24,%f48
1593*7c478bd9Sstevel@tonic-gate!44
1594*7c478bd9Sstevel@tonic-gate	ldd	[%o4+128],%f36
1595*7c478bd9Sstevel@tonic-gate	fmovd	%f6,%f24
1596*7c478bd9Sstevel@tonic-gate	fmuld	%f50,%f0,%f50
1597*7c478bd9Sstevel@tonic-gate!45
1598*7c478bd9Sstevel@tonic-gate	fxtod	%f4,%f4
1599*7c478bd9Sstevel@tonic-gate	fmuld	%f60,%f0,%f56
1600*7c478bd9Sstevel@tonic-gate!46
1601*7c478bd9Sstevel@tonic-gate	add	%o4,8,%o4
1602*7c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
1603*7c478bd9Sstevel@tonic-gate!47
1604*7c478bd9Sstevel@tonic-gate	ldd	[%o4+160-8],%f44
1605*7c478bd9Sstevel@tonic-gate	faddd	%f20,%f22,%f20
1606*7c478bd9Sstevel@tonic-gate!48
1607*7c478bd9Sstevel@tonic-gate	std	%f20,[%o4+96-8]
1608*7c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
1609*7c478bd9Sstevel@tonic-gate!49
1610*7c478bd9Sstevel@tonic-gate	ldd	[%o4+192-8],%f50
1611*7c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f52
1612*7c478bd9Sstevel@tonic-gate	fmuld	%f4,%f16,%f4
1613*7c478bd9Sstevel@tonic-gate!50
1614*7c478bd9Sstevel@tonic-gate	ldd	[%o4+224-8],%f56
1615*7c478bd9Sstevel@tonic-gate	faddd	%f32,%f36,%f32
1616*7c478bd9Sstevel@tonic-gate!51
1617*7c478bd9Sstevel@tonic-gate	std	%f32,[%o4+128-8]
1618*7c478bd9Sstevel@tonic-gate	faddd	%f42,%f44,%f42
1619*7c478bd9Sstevel@tonic-gate!52
1620*7c478bd9Sstevel@tonic-gate	add	%o3,1,%o3
1621*7c478bd9Sstevel@tonic-gate	std	%f42,[%o4+160-8]
1622*7c478bd9Sstevel@tonic-gate	faddd	%f48,%f50,%f48
1623*7c478bd9Sstevel@tonic-gate!53
1624*7c478bd9Sstevel@tonic-gate	cmp	%o3,31
1625*7c478bd9Sstevel@tonic-gate	std	%f48,[%o4+192-8]
1626*7c478bd9Sstevel@tonic-gate	fsubd	%f12,%f4,%f0
1627*7c478bd9Sstevel@tonic-gate!54
1628*7c478bd9Sstevel@tonic-gate	faddd	%f52,%f56,%f52
1629*7c478bd9Sstevel@tonic-gate	ble,pt	%icc,.L99999999
1630*7c478bd9Sstevel@tonic-gate	std	%f52,[%o4+224-8]
1631*7c478bd9Sstevel@tonic-gate!55
1632*7c478bd9Sstevel@tonic-gate	std %f8,[%o4]
1633*7c478bd9Sstevel@tonic-gate
1634*7c478bd9Sstevel@tonic-gate
1635*7c478bd9Sstevel@tonic-gate	                       .L77000285:
1636*7c478bd9Sstevel@tonic-gate/* 0x07a8	 279 */		sll	%g1,4,%g2
1637*7c478bd9Sstevel@tonic-gate                       .L900000651:
1638*7c478bd9Sstevel@tonic-gate/* 0x07ac	 279 */		ldd	[%g5+%g2],%f0
1639*7c478bd9Sstevel@tonic-gate/* 0x07b0	     */		add	%g5,%g2,%i1
1640*7c478bd9Sstevel@tonic-gate/* 0x07b4	     */		or	%g0,0,%o4
1641*7c478bd9Sstevel@tonic-gate/* 0x07b8	 206 */		ld	[%fp+68],%o0
1642*7c478bd9Sstevel@tonic-gate/* 0x07bc	 279 */		or	%g0,0,%i0
1643*7c478bd9Sstevel@tonic-gate/* 0x07c0	     */		cmp	%g1,0
1644*7c478bd9Sstevel@tonic-gate/* 0x07c4	     */		fdtox	%f0,%f0
1645*7c478bd9Sstevel@tonic-gate/* 0x07c8	     */		std	%f0,[%sp+120]
1646*7c478bd9Sstevel@tonic-gate/* 0x07cc	 275 */		sethi	%hi(0xfc00),%o1
1647*7c478bd9Sstevel@tonic-gate/* 0x07d0	 206 */		or	%g0,%o0,%o3
1648*7c478bd9Sstevel@tonic-gate/* 0x07d4	 275 */		sub	%g1,1,%g4
1649*7c478bd9Sstevel@tonic-gate/* 0x07d8	 279 */		ldd	[%i1+8],%f0
1650*7c478bd9Sstevel@tonic-gate/* 0x07dc	     */		or	%g0,%o0,%g5
1651*7c478bd9Sstevel@tonic-gate/* 0x07e0	     */		add	%o1,1023,%o1
1652*7c478bd9Sstevel@tonic-gate/* 0x07e4	     */		fdtox	%f0,%f0
1653*7c478bd9Sstevel@tonic-gate/* 0x07e8	     */		std	%f0,[%sp+112]
1654*7c478bd9Sstevel@tonic-gate/* 0x07ec	     */		ldx	[%sp+112],%o5
1655*7c478bd9Sstevel@tonic-gate/* 0x07f0	     */		ldx	[%sp+120],%o7
1656*7c478bd9Sstevel@tonic-gate/* 0x07f4	     */		ble,pt	%icc,.L900000649
1657*7c478bd9Sstevel@tonic-gate/* 0x07f8	     */		sethi	%hi(0xfc00),%g2
1658*7c478bd9Sstevel@tonic-gate/* 0x07fc	 275 */		or	%g0,-1,%g2
1659*7c478bd9Sstevel@tonic-gate/* 0x0800	 279 */		cmp	%g1,3
1660*7c478bd9Sstevel@tonic-gate/* 0x0804	 275 */		srl	%g2,0,%o2
1661*7c478bd9Sstevel@tonic-gate/* 0x0808	 279 */		bl,pn	%icc,.L77000286
1662*7c478bd9Sstevel@tonic-gate/* 0x080c	     */		or	%g0,%i1,%g2
1663*7c478bd9Sstevel@tonic-gate/* 0x0810	     */		ldd	[%i1+16],%f0
1664*7c478bd9Sstevel@tonic-gate/* 0x0814	     */		and	%o5,%o1,%o0
1665*7c478bd9Sstevel@tonic-gate/* 0x0818	     */		add	%i1,16,%g2
1666*7c478bd9Sstevel@tonic-gate/* 0x081c	     */		sllx	%o0,16,%g3
1667*7c478bd9Sstevel@tonic-gate/* 0x0820	     */		and	%o7,%o2,%o0
1668*7c478bd9Sstevel@tonic-gate/* 0x0824	     */		fdtox	%f0,%f0
1669*7c478bd9Sstevel@tonic-gate/* 0x0828	     */		std	%f0,[%sp+104]
1670*7c478bd9Sstevel@tonic-gate/* 0x082c	     */		add	%o0,%g3,%o4
1671*7c478bd9Sstevel@tonic-gate/* 0x0830	     */		ldd	[%i1+24],%f2
1672*7c478bd9Sstevel@tonic-gate/* 0x0834	     */		srax	%o5,16,%o0
1673*7c478bd9Sstevel@tonic-gate/* 0x0838	     */		add	%o3,4,%g5
1674*7c478bd9Sstevel@tonic-gate/* 0x083c	     */		stx	%o0,[%sp+128]
1675*7c478bd9Sstevel@tonic-gate/* 0x0840	     */		and	%o4,%o2,%o0
1676*7c478bd9Sstevel@tonic-gate/* 0x0844	     */		or	%g0,1,%i0
1677*7c478bd9Sstevel@tonic-gate/* 0x0848	     */		stx	%o0,[%sp+112]
1678*7c478bd9Sstevel@tonic-gate/* 0x084c	     */		srax	%o4,32,%o0
1679*7c478bd9Sstevel@tonic-gate/* 0x0850	     */		fdtox	%f2,%f0
1680*7c478bd9Sstevel@tonic-gate/* 0x0854	     */		stx	%o0,[%sp+136]
1681*7c478bd9Sstevel@tonic-gate/* 0x0858	     */		srax	%o7,32,%o4
1682*7c478bd9Sstevel@tonic-gate/* 0x085c	     */		std	%f0,[%sp+96]
1683*7c478bd9Sstevel@tonic-gate/* 0x0860	     */		ldx	[%sp+136],%o7
1684*7c478bd9Sstevel@tonic-gate/* 0x0864	     */		ldx	[%sp+128],%o0
1685*7c478bd9Sstevel@tonic-gate/* 0x0868	     */		ldx	[%sp+104],%g3
1686*7c478bd9Sstevel@tonic-gate/* 0x086c	     */		add	%o0,%o7,%o0
1687*7c478bd9Sstevel@tonic-gate/* 0x0870	     */		ldx	[%sp+112],%o7
1688*7c478bd9Sstevel@tonic-gate/* 0x0874	     */		add	%o4,%o0,%o4
1689*7c478bd9Sstevel@tonic-gate/* 0x0878	     */		ldx	[%sp+96],%o5
1690*7c478bd9Sstevel@tonic-gate/* 0x087c	     */		st	%o7,[%o3]
1691*7c478bd9Sstevel@tonic-gate/* 0x0880	     */		or	%g0,%g3,%o7
1692*7c478bd9Sstevel@tonic-gate                       .L900000632:
1693*7c478bd9Sstevel@tonic-gate/* 0x0884	     */		ldd	[%g2+16],%f0
1694*7c478bd9Sstevel@tonic-gate/* 0x0888	     */		add	%i0,1,%i0
1695*7c478bd9Sstevel@tonic-gate/* 0x088c	     */		add	%g5,4,%g5
1696*7c478bd9Sstevel@tonic-gate/* 0x0890	     */		cmp	%i0,%g4
1697*7c478bd9Sstevel@tonic-gate/* 0x0894	     */		add	%g2,16,%g2
1698*7c478bd9Sstevel@tonic-gate/* 0x0898	     */		fdtox	%f0,%f0
1699*7c478bd9Sstevel@tonic-gate/* 0x089c	     */		std	%f0,[%sp+104]
1700*7c478bd9Sstevel@tonic-gate/* 0x08a0	     */		ldd	[%g2+8],%f0
1701*7c478bd9Sstevel@tonic-gate/* 0x08a4	     */		fdtox	%f0,%f0
1702*7c478bd9Sstevel@tonic-gate/* 0x08a8	     */		std	%f0,[%sp+96]
1703*7c478bd9Sstevel@tonic-gate/* 0x08ac	     */		and	%o5,%o1,%g3
1704*7c478bd9Sstevel@tonic-gate/* 0x08b0	     */		sllx	%g3,16,%g3
1705*7c478bd9Sstevel@tonic-gate/* 0x08b4	     */		stx	%g3,[%sp+120]
1706*7c478bd9Sstevel@tonic-gate/* 0x08b8	     */		and	%o7,%o2,%g3
1707*7c478bd9Sstevel@tonic-gate/* 0x08bc	     */		stx	%o7,[%sp+128]
1708*7c478bd9Sstevel@tonic-gate/* 0x08c0	     */		ldx	[%sp+120],%o7
1709*7c478bd9Sstevel@tonic-gate/* 0x08c4	     */		add	%g3,%o7,%g3
1710*7c478bd9Sstevel@tonic-gate/* 0x08c8	     */		ldx	[%sp+128],%o7
1711*7c478bd9Sstevel@tonic-gate/* 0x08cc	     */		srax	%o5,16,%o5
1712*7c478bd9Sstevel@tonic-gate/* 0x08d0	     */		add	%g3,%o4,%g3
1713*7c478bd9Sstevel@tonic-gate/* 0x08d4	     */		srax	%g3,32,%o4
1714*7c478bd9Sstevel@tonic-gate/* 0x08d8	     */		stx	%o4,[%sp+112]
1715*7c478bd9Sstevel@tonic-gate/* 0x08dc	     */		srax	%o7,32,%o4
1716*7c478bd9Sstevel@tonic-gate/* 0x08e0	     */		ldx	[%sp+112],%o7
1717*7c478bd9Sstevel@tonic-gate/* 0x08e4	     */		add	%o5,%o7,%o7
1718*7c478bd9Sstevel@tonic-gate/* 0x08e8	     */		ldx	[%sp+96],%o5
1719*7c478bd9Sstevel@tonic-gate/* 0x08ec	     */		add	%o4,%o7,%o4
1720*7c478bd9Sstevel@tonic-gate/* 0x08f0	     */		and	%g3,%o2,%g3
1721*7c478bd9Sstevel@tonic-gate/* 0x08f4	     */		ldx	[%sp+104],%o7
1722*7c478bd9Sstevel@tonic-gate/* 0x08f8	     */		ble,pt	%icc,.L900000632
1723*7c478bd9Sstevel@tonic-gate/* 0x08fc	     */		st	%g3,[%g5-4]
1724*7c478bd9Sstevel@tonic-gate                       .L900000635:
1725*7c478bd9Sstevel@tonic-gate/* 0x0900	     */		ba	.L900000649
1726*7c478bd9Sstevel@tonic-gate/* 0x0904	     */		sethi	%hi(0xfc00),%g2
1727*7c478bd9Sstevel@tonic-gate                       .L77000286:
1728*7c478bd9Sstevel@tonic-gate/* 0x0908	     */		ldd	[%g2+16],%f0
1729*7c478bd9Sstevel@tonic-gate                       .L900000648:
1730*7c478bd9Sstevel@tonic-gate/* 0x090c	     */		and	%o7,%o2,%o0
1731*7c478bd9Sstevel@tonic-gate/* 0x0910	     */		and	%o5,%o1,%g3
1732*7c478bd9Sstevel@tonic-gate/* 0x0914	     */		fdtox	%f0,%f0
1733*7c478bd9Sstevel@tonic-gate/* 0x0918	     */		add	%o4,%o0,%o0
1734*7c478bd9Sstevel@tonic-gate/* 0x091c	     */		std	%f0,[%sp+104]
1735*7c478bd9Sstevel@tonic-gate/* 0x0920	     */		add	%i0,1,%i0
1736*7c478bd9Sstevel@tonic-gate/* 0x0924	     */		sllx	%g3,16,%o4
1737*7c478bd9Sstevel@tonic-gate/* 0x0928	     */		ldd	[%g2+24],%f2
1738*7c478bd9Sstevel@tonic-gate/* 0x092c	     */		add	%g2,16,%g2
1739*7c478bd9Sstevel@tonic-gate/* 0x0930	     */		add	%o0,%o4,%o4
1740*7c478bd9Sstevel@tonic-gate/* 0x0934	     */		cmp	%i0,%g4
1741*7c478bd9Sstevel@tonic-gate/* 0x0938	     */		srax	%o5,16,%o0
1742*7c478bd9Sstevel@tonic-gate/* 0x093c	     */		stx	%o0,[%sp+112]
1743*7c478bd9Sstevel@tonic-gate/* 0x0940	     */		and	%o4,%o2,%g3
1744*7c478bd9Sstevel@tonic-gate/* 0x0944	     */		srax	%o4,32,%o5
1745*7c478bd9Sstevel@tonic-gate/* 0x0948	     */		fdtox	%f2,%f0
1746*7c478bd9Sstevel@tonic-gate/* 0x094c	     */		std	%f0,[%sp+96]
1747*7c478bd9Sstevel@tonic-gate/* 0x0950	     */		srax	%o7,32,%o4
1748*7c478bd9Sstevel@tonic-gate/* 0x0954	     */		ldx	[%sp+112],%o7
1749*7c478bd9Sstevel@tonic-gate/* 0x0958	     */		add	%o7,%o5,%o7
1750*7c478bd9Sstevel@tonic-gate/* 0x095c	     */		ldx	[%sp+104],%o5
1751*7c478bd9Sstevel@tonic-gate/* 0x0960	     */		add	%o4,%o7,%o4
1752*7c478bd9Sstevel@tonic-gate/* 0x0964	     */		ldx	[%sp+96],%o0
1753*7c478bd9Sstevel@tonic-gate/* 0x0968	     */		st	%g3,[%g5]
1754*7c478bd9Sstevel@tonic-gate/* 0x096c	     */		or	%g0,%o5,%o7
1755*7c478bd9Sstevel@tonic-gate/* 0x0970	     */		add	%g5,4,%g5
1756*7c478bd9Sstevel@tonic-gate/* 0x0974	     */		or	%g0,%o0,%o5
1757*7c478bd9Sstevel@tonic-gate/* 0x0978	     */		ble,a,pt	%icc,.L900000648
1758*7c478bd9Sstevel@tonic-gate/* 0x097c	     */		ldd	[%g2+16],%f0
1759*7c478bd9Sstevel@tonic-gate                       .L77000236:
1760*7c478bd9Sstevel@tonic-gate/* 0x0980	     */		sethi	%hi(0xfc00),%g2
1761*7c478bd9Sstevel@tonic-gate                       .L900000649:
1762*7c478bd9Sstevel@tonic-gate/* 0x0984	     */		or	%g0,-1,%o0
1763*7c478bd9Sstevel@tonic-gate/* 0x0988	     */		add	%g2,1023,%g2
1764*7c478bd9Sstevel@tonic-gate/* 0x098c	     */		ld	[%fp+88],%o1
1765*7c478bd9Sstevel@tonic-gate/* 0x0990	     */		srl	%o0,0,%g3
1766*7c478bd9Sstevel@tonic-gate/* 0x0994	     */		and	%o5,%g2,%g2
1767*7c478bd9Sstevel@tonic-gate/* 0x0998	     */		and	%o7,%g3,%g4
1768*7c478bd9Sstevel@tonic-gate/* 0x099c	     */		sllx	%g2,16,%g2
1769*7c478bd9Sstevel@tonic-gate/* 0x09a0	     */		add	%o4,%g4,%g4
1770*7c478bd9Sstevel@tonic-gate/* 0x09a4	     */		add	%g4,%g2,%g2
1771*7c478bd9Sstevel@tonic-gate/* 0x09a8	     */		sll	%i0,2,%g4
1772*7c478bd9Sstevel@tonic-gate/* 0x09ac	     */		and	%g2,%g3,%g2
1773*7c478bd9Sstevel@tonic-gate/* 0x09b0	     */		st	%g2,[%o3+%g4]
1774*7c478bd9Sstevel@tonic-gate/* 0x09b4	 281 */		sll	%g1,2,%g2
1775*7c478bd9Sstevel@tonic-gate/* 0x09b8	     */		ld	[%o3+%g2],%g2
1776*7c478bd9Sstevel@tonic-gate/* 0x09bc	     */		cmp	%g2,0
1777*7c478bd9Sstevel@tonic-gate/* 0x09c0	     */		bleu,pn	%icc,.L77000241
1778*7c478bd9Sstevel@tonic-gate/* 0x09c4	     */		or	%g0,-1,%o5
1779*7c478bd9Sstevel@tonic-gate/* 0x09c8	     */		ba	.L900000647
1780*7c478bd9Sstevel@tonic-gate/* 0x09cc	     */		cmp	%o5,0
1781*7c478bd9Sstevel@tonic-gate                       .L77000241:
1782*7c478bd9Sstevel@tonic-gate/* 0x09d0	     */		subcc	%g1,1,%o5
1783*7c478bd9Sstevel@tonic-gate/* 0x09d4	     */		bneg,pt	%icc,.L900000647
1784*7c478bd9Sstevel@tonic-gate/* 0x09d8	     */		cmp	%o5,0
1785*7c478bd9Sstevel@tonic-gate/* 0x09dc	     */		sll	%o5,2,%g2
1786*7c478bd9Sstevel@tonic-gate/* 0x09e0	     */		add	%o1,%g2,%o0
1787*7c478bd9Sstevel@tonic-gate/* 0x09e4	     */		add	%o3,%g2,%o4
1788*7c478bd9Sstevel@tonic-gate/* 0x09e8	     */		ld	[%o0],%g2
1789*7c478bd9Sstevel@tonic-gate                       .L900000646:
1790*7c478bd9Sstevel@tonic-gate/* 0x09ec	     */		ld	[%o4],%g3
1791*7c478bd9Sstevel@tonic-gate/* 0x09f0	     */		sub	%o0,4,%o0
1792*7c478bd9Sstevel@tonic-gate/* 0x09f4	     */		sub	%o4,4,%o4
1793*7c478bd9Sstevel@tonic-gate/* 0x09f8	     */		cmp	%g3,%g2
1794*7c478bd9Sstevel@tonic-gate/* 0x09fc	     */		bne,pn	%icc,.L77000244
1795*7c478bd9Sstevel@tonic-gate/* 0x0a00	     */		nop
1796*7c478bd9Sstevel@tonic-gate/* 0x0a04	     */		subcc	%o5,1,%o5
1797*7c478bd9Sstevel@tonic-gate/* 0x0a08	     */		bpos,a,pt	%icc,.L900000646
1798*7c478bd9Sstevel@tonic-gate/* 0x0a0c	     */		ld	[%o0],%g2
1799*7c478bd9Sstevel@tonic-gate                       .L77000244:
1800*7c478bd9Sstevel@tonic-gate/* 0x0a10	     */		cmp	%o5,0
1801*7c478bd9Sstevel@tonic-gate                       .L900000647:
1802*7c478bd9Sstevel@tonic-gate/* 0x0a14	     */		bl,pn	%icc,.L77000287
1803*7c478bd9Sstevel@tonic-gate/* 0x0a18	     */		sll	%o5,2,%g2
1804*7c478bd9Sstevel@tonic-gate/* 0x0a1c	     */		ld	[%o1+%g2],%g3
1805*7c478bd9Sstevel@tonic-gate/* 0x0a20	     */		ld	[%o3+%g2],%g2
1806*7c478bd9Sstevel@tonic-gate/* 0x0a24	     */		cmp	%g2,%g3
1807*7c478bd9Sstevel@tonic-gate/* 0x0a28	     */		bleu,pt	%icc,.L77000224
1808*7c478bd9Sstevel@tonic-gate/* 0x0a2c	     */		nop
1809*7c478bd9Sstevel@tonic-gate                       .L77000287:
1810*7c478bd9Sstevel@tonic-gate/* 0x0a30	     */		cmp	%g1,0
1811*7c478bd9Sstevel@tonic-gate/* 0x0a34	     */		ble,pt	%icc,.L77000224
1812*7c478bd9Sstevel@tonic-gate/* 0x0a38	     */		nop
1813*7c478bd9Sstevel@tonic-gate/* 0x0a3c	 281 */		sub	%g1,1,%o7
1814*7c478bd9Sstevel@tonic-gate/* 0x0a40	     */		or	%g0,-1,%g2
1815*7c478bd9Sstevel@tonic-gate/* 0x0a44	     */		srl	%g2,0,%o4
1816*7c478bd9Sstevel@tonic-gate/* 0x0a48	     */		add	%o7,1,%o0
1817*7c478bd9Sstevel@tonic-gate/* 0x0a4c	     */		or	%g0,%o1,%o2
1818*7c478bd9Sstevel@tonic-gate/* 0x0a50	 279 */		or	%g0,0,%o5
1819*7c478bd9Sstevel@tonic-gate/* 0x0a54	     */		or	%g0,0,%g1
1820*7c478bd9Sstevel@tonic-gate/* 0x0a58	     */		cmp	%o0,3
1821*7c478bd9Sstevel@tonic-gate/* 0x0a5c	     */		add	%o1,4,%o0
1822*7c478bd9Sstevel@tonic-gate/* 0x0a60	     */		bl,pn	%icc,.L77000288
1823*7c478bd9Sstevel@tonic-gate/* 0x0a64	     */		add	%o3,8,%o1
1824*7c478bd9Sstevel@tonic-gate/* 0x0a68	     */		ld	[%o0-4],%g3
1825*7c478bd9Sstevel@tonic-gate/* 0x0a6c	   0 */		or	%g0,%o1,%o3
1826*7c478bd9Sstevel@tonic-gate/* 0x0a70	     */		or	%g0,%o0,%o2
1827*7c478bd9Sstevel@tonic-gate/* 0x0a74	 279 */		ld	[%o1-8],%g2
1828*7c478bd9Sstevel@tonic-gate/* 0x0a78	     */		or	%g0,2,%g1
1829*7c478bd9Sstevel@tonic-gate/* 0x0a7c	     */		ld	[%o3-4],%o0
1830*7c478bd9Sstevel@tonic-gate/* 0x0a80	     */		sub	%g2,%g3,%g2
1831*7c478bd9Sstevel@tonic-gate/* 0x0a84	     */		or	%g0,%g2,%o5
1832*7c478bd9Sstevel@tonic-gate/* 0x0a88	     */		and	%g2,%o4,%g2
1833*7c478bd9Sstevel@tonic-gate/* 0x0a8c	     */		st	%g2,[%o3-8]
1834*7c478bd9Sstevel@tonic-gate/* 0x0a90	     */		srax	%o5,32,%o5
1835*7c478bd9Sstevel@tonic-gate                       .L900000636:
1836*7c478bd9Sstevel@tonic-gate/* 0x0a94	     */		ld	[%o2],%g2
1837*7c478bd9Sstevel@tonic-gate/* 0x0a98	     */		add	%g1,1,%g1
1838*7c478bd9Sstevel@tonic-gate/* 0x0a9c	     */		add	%o2,4,%o2
1839*7c478bd9Sstevel@tonic-gate/* 0x0aa0	     */		cmp	%g1,%o7
1840*7c478bd9Sstevel@tonic-gate/* 0x0aa4	     */		add	%o3,4,%o3
1841*7c478bd9Sstevel@tonic-gate/* 0x0aa8	     */		sub	%o0,%g2,%o0
1842*7c478bd9Sstevel@tonic-gate/* 0x0aac	     */		add	%o0,%o5,%o5
1843*7c478bd9Sstevel@tonic-gate/* 0x0ab0	     */		and	%o5,%o4,%g2
1844*7c478bd9Sstevel@tonic-gate/* 0x0ab4	     */		ld	[%o3-4],%o0
1845*7c478bd9Sstevel@tonic-gate/* 0x0ab8	     */		st	%g2,[%o3-8]
1846*7c478bd9Sstevel@tonic-gate/* 0x0abc	     */		ble,pt	%icc,.L900000636
1847*7c478bd9Sstevel@tonic-gate/* 0x0ac0	     */		srax	%o5,32,%o5
1848*7c478bd9Sstevel@tonic-gate                       .L900000639:
1849*7c478bd9Sstevel@tonic-gate/* 0x0ac4	     */		ld	[%o2],%o1
1850*7c478bd9Sstevel@tonic-gate/* 0x0ac8	     */		sub	%o0,%o1,%o0
1851*7c478bd9Sstevel@tonic-gate/* 0x0acc	     */		add	%o0,%o5,%o0
1852*7c478bd9Sstevel@tonic-gate/* 0x0ad0	     */		and	%o0,%o4,%o1
1853*7c478bd9Sstevel@tonic-gate/* 0x0ad4	     */		st	%o1,[%o3-4]
1854*7c478bd9Sstevel@tonic-gate/* 0x0ad8	     */		ret	! Result =
1855*7c478bd9Sstevel@tonic-gate/* 0x0adc	     */		restore	%g0,%g0,%g0
1856*7c478bd9Sstevel@tonic-gate                       .L77000288:
1857*7c478bd9Sstevel@tonic-gate/* 0x0ae0	     */		ld	[%o3],%o0
1858*7c478bd9Sstevel@tonic-gate                       .L900000645:
1859*7c478bd9Sstevel@tonic-gate/* 0x0ae4	     */		ld	[%o2],%o1
1860*7c478bd9Sstevel@tonic-gate/* 0x0ae8	     */		add	%o5,%o0,%o0
1861*7c478bd9Sstevel@tonic-gate/* 0x0aec	     */		add	%g1,1,%g1
1862*7c478bd9Sstevel@tonic-gate/* 0x0af0	     */		add	%o2,4,%o2
1863*7c478bd9Sstevel@tonic-gate/* 0x0af4	     */		cmp	%g1,%o7
1864*7c478bd9Sstevel@tonic-gate/* 0x0af8	     */		sub	%o0,%o1,%o0
1865*7c478bd9Sstevel@tonic-gate/* 0x0afc	     */		and	%o0,%o4,%o1
1866*7c478bd9Sstevel@tonic-gate/* 0x0b00	     */		st	%o1,[%o3]
1867*7c478bd9Sstevel@tonic-gate/* 0x0b04	     */		add	%o3,4,%o3
1868*7c478bd9Sstevel@tonic-gate/* 0x0b08	     */		srax	%o0,32,%o5
1869*7c478bd9Sstevel@tonic-gate/* 0x0b0c	     */		ble,a,pt	%icc,.L900000645
1870*7c478bd9Sstevel@tonic-gate/* 0x0b10	     */		ld	[%o3],%o0
1871*7c478bd9Sstevel@tonic-gate                       .L77000224:
1872*7c478bd9Sstevel@tonic-gate/* 0x0b14	     */		ret	! Result =
1873*7c478bd9Sstevel@tonic-gate/* 0x0b18	     */		restore	%g0,%g0,%g0
1874*7c478bd9Sstevel@tonic-gate/* 0x0b1c	   0 */		.type	mont_mulf_noconv,2
1875*7c478bd9Sstevel@tonic-gate/* 0x0b1c	     */		.size	mont_mulf_noconv,(.-mont_mulf_noconv)
1876*7c478bd9Sstevel@tonic-gate
1877*7c478bd9Sstevel@tonic-gate! Begin Disassembling Stabs
1878*7c478bd9Sstevel@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)
1879*7c478bd9Sstevel@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)
1880*7c478bd9Sstevel@tonic-gate! End Disassembling Stabs
1881*7c478bd9Sstevel@tonic-gate
1882*7c478bd9Sstevel@tonic-gate! Begin Disassembling Ident
1883*7c478bd9Sstevel@tonic-gate	.ident	"cg: WorkShop Compilers 5.0 99/04/15 Compiler Common 5.0 Patch 107357-02"	! (NO SOURCE LINE)
1884*7c478bd9Sstevel@tonic-gate	.ident	"acomp: WorkShop Compilers 5.0 99/02/25 C 5.0 patch 107289-01"	! (/tmp/acompAAAhNaOly:31)
1885*7c478bd9Sstevel@tonic-gate! End Disassembling Ident
1886