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