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