~ubuntu-branches/ubuntu/precise/nss/precise-security

« back to all changes in this revision

Viewing changes to nss/lib/freebl/mpi/montmulfv9.s

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers
  • Date: 2013-11-14 14:58:07 UTC
  • mfrom: (1.1.19)
  • Revision ID: package-import@ubuntu.com-20131114145807-ay302kimn72ovt88
Tags: 3.15.3-0ubuntu0.12.04.1
* SECURITY UPDATE: New upstream release to fix multiple security issues
  and add TLSv1.2 support.
  - CVE-2013-1739
  - CVE-2013-1741
  - CVE-2013-5605
  - CVE-2013-5606
* Adjusted packaging for 3.15.3:
  - debian/patches/*: refreshed.
  - debian/patches/lower-dhe-priority.patch: removed, no longer needed,
    was a workaround for an old version of firefox.
  - debian/libnss3.symbols: added new symbols.
  - debian/rules: updated for new source layout.

Show diffs side-by-side

added added

removed removed

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