~ubuntu-branches/ubuntu/lucid/openssl/lucid-proposed

« back to all changes in this revision

Viewing changes to crypto/md5/asm/md5-sparcv9.S

  • Committer: Bazaar Package Importer
  • Author(s): Kurt Roeckx
  • Date: 2009-06-13 18:15:46 UTC
  • mto: (11.1.5 squeeze)
  • mto: This revision was merged to the branch mainline in revision 34.
  • Revision ID: james.westby@ubuntu.com-20090613181546-vbfntai3b009dl1u
Tags: upstream-0.9.8k
ImportĀ upstreamĀ versionĀ 0.9.8k

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
.ident  "md5-sparcv9.S, Version 1.0"
2
 
.ident  "SPARC V9 ISA artwork by Andy Polyakov <appro@fy.chalmers.se>"
3
 
.file   "md5-sparcv9.S"
4
 
 
5
 
/*
6
 
 * ====================================================================
7
 
 * Copyright (c) 1999 Andy Polyakov <appro@fy.chalmers.se>.
8
 
 *
9
 
 * Rights for redistribution and usage in source and binary forms are
10
 
 * granted as long as above copyright notices are retained. Warranty
11
 
 * of any kind is (of course:-) disclaimed.
12
 
 * ====================================================================
13
 
 */
14
 
 
15
 
/*
16
 
 * This is my modest contribution to OpenSSL project (see
17
 
 * http://www.openssl.org/ for more information about it) and is an
18
 
 * assembler implementation of MD5 block hash function. I've hand-coded
19
 
 * this for the sole reason to reach UltraSPARC-specific "load in
20
 
 * little-endian byte order" instruction. This gives up to 15%
21
 
 * performance improvement for cases when input message is aligned at
22
 
 * 32 bits boundary. The module was tested under both 32 *and* 64 bit
23
 
 * kernels. For updates see http://fy.chalmers.se/~appro/hpe/.
24
 
 *
25
 
 * To compile with SC4.x/SC5.x:
26
 
 *
27
 
 *      cc -xarch=v[9|8plus] -DOPENSSL_SYSNAME_ULTRASPARC -DMD5_BLOCK_DATA_ORDER \
28
 
 *              -c md5-sparcv9.S
29
 
 *
30
 
 * and with gcc:
31
 
 *
32
 
 *      gcc -mcpu=ultrasparc -DOPENSSL_SYSNAME_ULTRASPARC -DMD5_BLOCK_DATA_ORDER \
33
 
 *              -c md5-sparcv9.S
34
 
 *
35
 
 * or if above fails (it does if you have gas):
36
 
 *
37
 
 *      gcc -E -DOPENSSL_SYSNAMEULTRASPARC -DMD5_BLOCK_DATA_ORDER md5_block.sparc.S | \
38
 
 *              as -xarch=v8plus /dev/fd/0 -o md5-sparcv9.o
39
 
 */
40
 
 
41
 
#include <openssl/e_os2.h>
42
 
 
43
 
#define A       %o0
44
 
#define B       %o1
45
 
#define C       %o2
46
 
#define D       %o3
47
 
#define T1      %o4
48
 
#define T2      %o5
49
 
 
50
 
#define R0      %l0
51
 
#define R1      %l1
52
 
#define R2      %l2
53
 
#define R3      %l3
54
 
#define R4      %l4
55
 
#define R5      %l5
56
 
#define R6      %l6
57
 
#define R7      %l7
58
 
#define R8      %i3
59
 
#define R9      %i4
60
 
#define R10     %i5
61
 
#define R11     %g1
62
 
#define R12     %g2
63
 
#define R13     %g3
64
 
#define RX      %g4
65
 
 
66
 
#define Aptr    %i0+0
67
 
#define Bptr    %i0+4
68
 
#define Cptr    %i0+8
69
 
#define Dptr    %i0+12
70
 
 
71
 
#define Aval    R5      /* those not used at the end of the last round */
72
 
#define Bval    R6
73
 
#define Cval    R7
74
 
#define Dval    R8
75
 
 
76
 
#if defined(MD5_BLOCK_DATA_ORDER)
77
 
# if defined(OPENSSL_SYSNAME_ULTRASPARC)
78
 
#  define       LOAD                    lda
79
 
#  define       X(i)                    [%i1+i*4]%asi
80
 
#  define       md5_block               md5_block_asm_data_order_aligned
81
 
#  define       ASI_PRIMARY_LITTLE      0x88
82
 
# else
83
 
#  error "MD5_BLOCK_DATA_ORDER is supported only on UltraSPARC!"
84
 
# endif
85
 
#else
86
 
# define        LOAD                    ld
87
 
# define        X(i)                    [%i1+i*4]
88
 
# define        md5_block               md5_block_asm_host_order
89
 
#endif
90
 
 
91
 
.section        ".text",#alloc,#execinstr
92
 
 
93
 
#if defined(__SUNPRO_C) && defined(__sparcv9)
94
 
  /* They've said -xarch=v9 at command line */
95
 
  .register     %g2,#scratch
96
 
  .register     %g3,#scratch
97
 
# define        FRAME   -192
98
 
#elif defined(__GNUC__) && defined(__arch64__)
99
 
  /* They've said -m64 at command line */
100
 
  .register     %g2,#scratch
101
 
  .register     %g3,#scratch
102
 
# define        FRAME   -192
103
 
#else
104
 
# define        FRAME   -96
105
 
#endif
106
 
 
107
 
.align  32
108
 
 
109
 
.global md5_block
110
 
md5_block:
111
 
        save    %sp,FRAME,%sp
112
 
 
113
 
        ld      [Dptr],D
114
 
        ld      [Cptr],C
115
 
        ld      [Bptr],B
116
 
        ld      [Aptr],A
117
 
#ifdef ASI_PRIMARY_LITTLE
118
 
        rd      %asi,%o7        ! How dare I? Well, I just do:-)
119
 
        wr      %g0,ASI_PRIMARY_LITTLE,%asi
120
 
#endif
121
 
        LOAD    X(0),R0
122
 
 
123
 
.Lmd5_block_loop:
124
 
 
125
 
!!!!!!!!Round 0
126
 
 
127
 
        xor     C,D,T1
128
 
        sethi   %hi(0xd76aa478),T2
129
 
        and     T1,B,T1
130
 
        or      T2,%lo(0xd76aa478),T2   !=
131
 
        xor     T1,D,T1
132
 
        add     T1,R0,T1
133
 
        LOAD    X(1),R1
134
 
        add     T1,T2,T1                !=
135
 
        add     A,T1,A
136
 
        sll     A,7,T2
137
 
        srl     A,32-7,A
138
 
        or      A,T2,A                  !=
139
 
         xor     B,C,T1
140
 
        add     A,B,A
141
 
 
142
 
        sethi   %hi(0xe8c7b756),T2
143
 
        and     T1,A,T1                 !=
144
 
        or      T2,%lo(0xe8c7b756),T2
145
 
        xor     T1,C,T1
146
 
        LOAD    X(2),R2
147
 
        add     T1,R1,T1                !=
148
 
        add     T1,T2,T1
149
 
        add     D,T1,D
150
 
        sll     D,12,T2
151
 
        srl     D,32-12,D               !=
152
 
        or      D,T2,D
153
 
         xor     A,B,T1
154
 
        add     D,A,D
155
 
 
156
 
        sethi   %hi(0x242070db),T2      !=
157
 
        and     T1,D,T1
158
 
        or      T2,%lo(0x242070db),T2
159
 
        xor     T1,B,T1
160
 
        add     T1,R2,T1                !=
161
 
        LOAD    X(3),R3
162
 
        add     T1,T2,T1
163
 
        add     C,T1,C
164
 
        sll     C,17,T2                 !=
165
 
        srl     C,32-17,C
166
 
        or      C,T2,C
167
 
         xor     D,A,T1
168
 
        add     C,D,C                   !=
169
 
 
170
 
        sethi   %hi(0xc1bdceee),T2
171
 
        and     T1,C,T1
172
 
        or      T2,%lo(0xc1bdceee),T2
173
 
        xor     T1,A,T1                 !=
174
 
        add     T1,R3,T1
175
 
        LOAD    X(4),R4
176
 
        add     T1,T2,T1
177
 
        add     B,T1,B                  !=
178
 
        sll     B,22,T2
179
 
        srl     B,32-22,B
180
 
        or      B,T2,B
181
 
         xor     C,D,T1                 !=
182
 
        add     B,C,B
183
 
 
184
 
        sethi   %hi(0xf57c0faf),T2
185
 
        and     T1,B,T1
186
 
        or      T2,%lo(0xf57c0faf),T2   !=
187
 
        xor     T1,D,T1
188
 
        add     T1,R4,T1
189
 
        LOAD    X(5),R5
190
 
        add     T1,T2,T1                !=
191
 
        add     A,T1,A
192
 
        sll     A,7,T2
193
 
        srl     A,32-7,A
194
 
        or      A,T2,A                  !=
195
 
         xor     B,C,T1
196
 
        add     A,B,A
197
 
 
198
 
        sethi   %hi(0x4787c62a),T2
199
 
        and     T1,A,T1                 !=
200
 
        or      T2,%lo(0x4787c62a),T2
201
 
        xor     T1,C,T1
202
 
        LOAD    X(6),R6
203
 
        add     T1,R5,T1                !=
204
 
        add     T1,T2,T1
205
 
        add     D,T1,D
206
 
        sll     D,12,T2
207
 
        srl     D,32-12,D               !=
208
 
        or      D,T2,D
209
 
         xor     A,B,T1
210
 
        add     D,A,D
211
 
 
212
 
        sethi   %hi(0xa8304613),T2      !=
213
 
        and     T1,D,T1
214
 
        or      T2,%lo(0xa8304613),T2
215
 
        xor     T1,B,T1
216
 
        add     T1,R6,T1                !=
217
 
        LOAD    X(7),R7
218
 
        add     T1,T2,T1
219
 
        add     C,T1,C
220
 
        sll     C,17,T2                 !=
221
 
        srl     C,32-17,C
222
 
        or      C,T2,C
223
 
         xor     D,A,T1
224
 
        add     C,D,C                   !=
225
 
 
226
 
        sethi   %hi(0xfd469501),T2
227
 
        and     T1,C,T1
228
 
        or      T2,%lo(0xfd469501),T2
229
 
        xor     T1,A,T1                 !=
230
 
        add     T1,R7,T1
231
 
        LOAD    X(8),R8
232
 
        add     T1,T2,T1
233
 
        add     B,T1,B                  !=
234
 
        sll     B,22,T2
235
 
        srl     B,32-22,B
236
 
        or      B,T2,B
237
 
         xor     C,D,T1                 !=
238
 
        add     B,C,B
239
 
 
240
 
        sethi   %hi(0x698098d8),T2
241
 
        and     T1,B,T1
242
 
        or      T2,%lo(0x698098d8),T2   !=
243
 
        xor     T1,D,T1
244
 
        add     T1,R8,T1
245
 
        LOAD    X(9),R9
246
 
        add     T1,T2,T1                !=
247
 
        add     A,T1,A
248
 
        sll     A,7,T2
249
 
        srl     A,32-7,A
250
 
        or      A,T2,A                  !=
251
 
         xor     B,C,T1
252
 
        add     A,B,A
253
 
 
254
 
        sethi   %hi(0x8b44f7af),T2
255
 
        and     T1,A,T1                 !=
256
 
        or      T2,%lo(0x8b44f7af),T2
257
 
        xor     T1,C,T1
258
 
        LOAD    X(10),R10
259
 
        add     T1,R9,T1                !=
260
 
        add     T1,T2,T1
261
 
        add     D,T1,D
262
 
        sll     D,12,T2
263
 
        srl     D,32-12,D               !=
264
 
        or      D,T2,D
265
 
         xor     A,B,T1
266
 
        add     D,A,D
267
 
 
268
 
        sethi   %hi(0xffff5bb1),T2      !=
269
 
        and     T1,D,T1
270
 
        or      T2,%lo(0xffff5bb1),T2
271
 
        xor     T1,B,T1
272
 
        add     T1,R10,T1               !=
273
 
        LOAD    X(11),R11
274
 
        add     T1,T2,T1
275
 
        add     C,T1,C
276
 
        sll     C,17,T2                 !=
277
 
        srl     C,32-17,C
278
 
        or      C,T2,C
279
 
         xor     D,A,T1
280
 
        add     C,D,C                   !=
281
 
 
282
 
        sethi   %hi(0x895cd7be),T2
283
 
        and     T1,C,T1
284
 
        or      T2,%lo(0x895cd7be),T2
285
 
        xor     T1,A,T1                 !=
286
 
        add     T1,R11,T1
287
 
        LOAD    X(12),R12
288
 
        add     T1,T2,T1
289
 
        add     B,T1,B                  !=
290
 
        sll     B,22,T2
291
 
        srl     B,32-22,B
292
 
        or      B,T2,B
293
 
         xor     C,D,T1                 !=
294
 
        add     B,C,B
295
 
 
296
 
        sethi   %hi(0x6b901122),T2
297
 
        and     T1,B,T1
298
 
        or      T2,%lo(0x6b901122),T2   !=
299
 
        xor     T1,D,T1
300
 
        add     T1,R12,T1
301
 
        LOAD    X(13),R13
302
 
        add     T1,T2,T1                !=
303
 
        add     A,T1,A
304
 
        sll     A,7,T2
305
 
        srl     A,32-7,A
306
 
        or      A,T2,A                  !=
307
 
         xor     B,C,T1
308
 
        add     A,B,A
309
 
 
310
 
        sethi   %hi(0xfd987193),T2
311
 
        and     T1,A,T1                 !=
312
 
        or      T2,%lo(0xfd987193),T2
313
 
        xor     T1,C,T1
314
 
        LOAD    X(14),RX
315
 
        add     T1,R13,T1               !=
316
 
        add     T1,T2,T1
317
 
        add     D,T1,D
318
 
        sll     D,12,T2
319
 
        srl     D,32-12,D               !=
320
 
        or      D,T2,D
321
 
         xor     A,B,T1
322
 
        add     D,A,D
323
 
 
324
 
        sethi   %hi(0xa679438e),T2      !=
325
 
        and     T1,D,T1
326
 
        or      T2,%lo(0xa679438e),T2
327
 
        xor     T1,B,T1
328
 
        add     T1,RX,T1                !=
329
 
        LOAD    X(15),RX
330
 
        add     T1,T2,T1
331
 
        add     C,T1,C
332
 
        sll     C,17,T2                 !=
333
 
        srl     C,32-17,C
334
 
        or      C,T2,C
335
 
         xor     D,A,T1
336
 
        add     C,D,C                   !=
337
 
 
338
 
        sethi   %hi(0x49b40821),T2
339
 
        and     T1,C,T1
340
 
        or      T2,%lo(0x49b40821),T2
341
 
        xor     T1,A,T1                 !=
342
 
        add     T1,RX,T1
343
 
        !pre-LOADed     X(1),R1
344
 
        add     T1,T2,T1
345
 
        add     B,T1,B
346
 
        sll     B,22,T2                 !=
347
 
        srl     B,32-22,B
348
 
        or      B,T2,B
349
 
        add     B,C,B
350
 
 
351
 
!!!!!!!!Round 1
352
 
 
353
 
        xor     B,C,T1                  !=
354
 
        sethi   %hi(0xf61e2562),T2
355
 
        and     T1,D,T1
356
 
        or      T2,%lo(0xf61e2562),T2
357
 
        xor     T1,C,T1                 !=
358
 
        add     T1,R1,T1
359
 
        !pre-LOADed     X(6),R6
360
 
        add     T1,T2,T1
361
 
        add     A,T1,A
362
 
        sll     A,5,T2                  !=
363
 
        srl     A,32-5,A
364
 
        or      A,T2,A
365
 
        add     A,B,A
366
 
 
367
 
        xor     A,B,T1                  !=
368
 
        sethi   %hi(0xc040b340),T2
369
 
        and     T1,C,T1
370
 
        or      T2,%lo(0xc040b340),T2
371
 
        xor     T1,B,T1                 !=
372
 
        add     T1,R6,T1
373
 
        !pre-LOADed     X(11),R11
374
 
        add     T1,T2,T1
375
 
        add     D,T1,D
376
 
        sll     D,9,T2                  !=
377
 
        srl     D,32-9,D
378
 
        or      D,T2,D
379
 
        add     D,A,D
380
 
 
381
 
        xor     D,A,T1                  !=
382
 
        sethi   %hi(0x265e5a51),T2
383
 
        and     T1,B,T1
384
 
        or      T2,%lo(0x265e5a51),T2
385
 
        xor     T1,A,T1                 !=
386
 
        add     T1,R11,T1
387
 
        !pre-LOADed     X(0),R0
388
 
        add     T1,T2,T1
389
 
        add     C,T1,C
390
 
        sll     C,14,T2                 !=
391
 
        srl     C,32-14,C
392
 
        or      C,T2,C
393
 
        add     C,D,C
394
 
 
395
 
        xor     C,D,T1                  !=
396
 
        sethi   %hi(0xe9b6c7aa),T2
397
 
        and     T1,A,T1
398
 
        or      T2,%lo(0xe9b6c7aa),T2
399
 
        xor     T1,D,T1                 !=
400
 
        add     T1,R0,T1
401
 
        !pre-LOADed     X(5),R5
402
 
        add     T1,T2,T1
403
 
        add     B,T1,B
404
 
        sll     B,20,T2                 !=
405
 
        srl     B,32-20,B
406
 
        or      B,T2,B
407
 
        add     B,C,B
408
 
 
409
 
        xor     B,C,T1                  !=
410
 
        sethi   %hi(0xd62f105d),T2
411
 
        and     T1,D,T1
412
 
        or      T2,%lo(0xd62f105d),T2
413
 
        xor     T1,C,T1                 !=
414
 
        add     T1,R5,T1
415
 
        !pre-LOADed     X(10),R10
416
 
        add     T1,T2,T1
417
 
        add     A,T1,A
418
 
        sll     A,5,T2                  !=
419
 
        srl     A,32-5,A
420
 
        or      A,T2,A
421
 
        add     A,B,A
422
 
 
423
 
        xor     A,B,T1                  !=
424
 
        sethi   %hi(0x02441453),T2
425
 
        and     T1,C,T1
426
 
        or      T2,%lo(0x02441453),T2
427
 
        xor     T1,B,T1                 !=
428
 
        add     T1,R10,T1
429
 
        LOAD    X(15),RX
430
 
        add     T1,T2,T1
431
 
        add     D,T1,D                  !=
432
 
        sll     D,9,T2
433
 
        srl     D,32-9,D
434
 
        or      D,T2,D
435
 
        add     D,A,D                   !=
436
 
 
437
 
        xor     D,A,T1
438
 
        sethi   %hi(0xd8a1e681),T2
439
 
        and     T1,B,T1
440
 
        or      T2,%lo(0xd8a1e681),T2   !=
441
 
        xor     T1,A,T1
442
 
        add     T1,RX,T1
443
 
        !pre-LOADed     X(4),R4
444
 
        add     T1,T2,T1
445
 
        add     C,T1,C                  !=
446
 
        sll     C,14,T2
447
 
        srl     C,32-14,C
448
 
        or      C,T2,C
449
 
        add     C,D,C                   !=
450
 
 
451
 
        xor     C,D,T1
452
 
        sethi   %hi(0xe7d3fbc8),T2
453
 
        and     T1,A,T1
454
 
        or      T2,%lo(0xe7d3fbc8),T2   !=
455
 
        xor     T1,D,T1
456
 
        add     T1,R4,T1
457
 
        !pre-LOADed     X(9),R9
458
 
        add     T1,T2,T1
459
 
        add     B,T1,B                  !=
460
 
        sll     B,20,T2
461
 
        srl     B,32-20,B
462
 
        or      B,T2,B
463
 
        add     B,C,B                   !=
464
 
 
465
 
        xor     B,C,T1
466
 
        sethi   %hi(0x21e1cde6),T2
467
 
        and     T1,D,T1
468
 
        or      T2,%lo(0x21e1cde6),T2   !=
469
 
        xor     T1,C,T1
470
 
        add     T1,R9,T1
471
 
        LOAD    X(14),RX
472
 
        add     T1,T2,T1                !=
473
 
        add     A,T1,A
474
 
        sll     A,5,T2
475
 
        srl     A,32-5,A
476
 
        or      A,T2,A                  !=
477
 
        add     A,B,A
478
 
 
479
 
        xor     A,B,T1
480
 
        sethi   %hi(0xc33707d6),T2
481
 
        and     T1,C,T1                 !=
482
 
        or      T2,%lo(0xc33707d6),T2
483
 
        xor     T1,B,T1
484
 
        add     T1,RX,T1
485
 
        !pre-LOADed     X(3),R3
486
 
        add     T1,T2,T1                !=
487
 
        add     D,T1,D
488
 
        sll     D,9,T2
489
 
        srl     D,32-9,D
490
 
        or      D,T2,D                  !=
491
 
        add     D,A,D
492
 
 
493
 
        xor     D,A,T1
494
 
        sethi   %hi(0xf4d50d87),T2
495
 
        and     T1,B,T1                 !=
496
 
        or      T2,%lo(0xf4d50d87),T2
497
 
        xor     T1,A,T1
498
 
        add     T1,R3,T1
499
 
        !pre-LOADed     X(8),R8
500
 
        add     T1,T2,T1                !=
501
 
        add     C,T1,C
502
 
        sll     C,14,T2
503
 
        srl     C,32-14,C
504
 
        or      C,T2,C                  !=
505
 
        add     C,D,C
506
 
 
507
 
        xor     C,D,T1
508
 
        sethi   %hi(0x455a14ed),T2
509
 
        and     T1,A,T1                 !=
510
 
        or      T2,%lo(0x455a14ed),T2
511
 
        xor     T1,D,T1
512
 
        add     T1,R8,T1
513
 
        !pre-LOADed     X(13),R13
514
 
        add     T1,T2,T1                !=
515
 
        add     B,T1,B
516
 
        sll     B,20,T2
517
 
        srl     B,32-20,B
518
 
        or      B,T2,B                  !=
519
 
        add     B,C,B
520
 
 
521
 
        xor     B,C,T1
522
 
        sethi   %hi(0xa9e3e905),T2
523
 
        and     T1,D,T1                 !=
524
 
        or      T2,%lo(0xa9e3e905),T2
525
 
        xor     T1,C,T1
526
 
        add     T1,R13,T1
527
 
        !pre-LOADed     X(2),R2
528
 
        add     T1,T2,T1                !=
529
 
        add     A,T1,A
530
 
        sll     A,5,T2
531
 
        srl     A,32-5,A
532
 
        or      A,T2,A                  !=
533
 
        add     A,B,A
534
 
 
535
 
        xor     A,B,T1
536
 
        sethi   %hi(0xfcefa3f8),T2
537
 
        and     T1,C,T1                 !=
538
 
        or      T2,%lo(0xfcefa3f8),T2
539
 
        xor     T1,B,T1
540
 
        add     T1,R2,T1
541
 
        !pre-LOADed     X(7),R7
542
 
        add     T1,T2,T1                !=
543
 
        add     D,T1,D
544
 
        sll     D,9,T2
545
 
        srl     D,32-9,D
546
 
        or      D,T2,D                  !=
547
 
        add     D,A,D
548
 
 
549
 
        xor     D,A,T1
550
 
        sethi   %hi(0x676f02d9),T2
551
 
        and     T1,B,T1                 !=
552
 
        or      T2,%lo(0x676f02d9),T2
553
 
        xor     T1,A,T1
554
 
        add     T1,R7,T1
555
 
        !pre-LOADed     X(12),R12
556
 
        add     T1,T2,T1                !=
557
 
        add     C,T1,C
558
 
        sll     C,14,T2
559
 
        srl     C,32-14,C
560
 
        or      C,T2,C                  !=
561
 
        add     C,D,C
562
 
 
563
 
        xor     C,D,T1
564
 
        sethi   %hi(0x8d2a4c8a),T2
565
 
        and     T1,A,T1                 !=
566
 
        or      T2,%lo(0x8d2a4c8a),T2
567
 
        xor     T1,D,T1
568
 
        add     T1,R12,T1
569
 
        !pre-LOADed     X(5),R5
570
 
        add     T1,T2,T1                !=
571
 
        add     B,T1,B
572
 
        sll     B,20,T2
573
 
        srl     B,32-20,B
574
 
        or      B,T2,B                  !=
575
 
        add     B,C,B
576
 
 
577
 
!!!!!!!!Round 2
578
 
 
579
 
        xor     B,C,T1
580
 
        sethi   %hi(0xfffa3942),T2
581
 
        xor     T1,D,T1                 !=
582
 
        or      T2,%lo(0xfffa3942),T2
583
 
        add     T1,R5,T1
584
 
        !pre-LOADed     X(8),R8
585
 
        add     T1,T2,T1
586
 
        add     A,T1,A                  !=
587
 
        sll     A,4,T2
588
 
        srl     A,32-4,A
589
 
        or      A,T2,A
590
 
        add     A,B,A                   !=
591
 
 
592
 
        xor     A,B,T1
593
 
        sethi   %hi(0x8771f681),T2
594
 
        xor     T1,C,T1
595
 
        or      T2,%lo(0x8771f681),T2   !=
596
 
        add     T1,R8,T1
597
 
        !pre-LOADed     X(11),R11
598
 
        add     T1,T2,T1
599
 
        add     D,T1,D
600
 
        sll     D,11,T2                 !=
601
 
        srl     D,32-11,D
602
 
        or      D,T2,D
603
 
        add     D,A,D
604
 
 
605
 
        xor     D,A,T1                  !=
606
 
        sethi   %hi(0x6d9d6122),T2
607
 
        xor     T1,B,T1
608
 
        or      T2,%lo(0x6d9d6122),T2
609
 
        add     T1,R11,T1               !=
610
 
        LOAD    X(14),RX
611
 
        add     T1,T2,T1
612
 
        add     C,T1,C
613
 
        sll     C,16,T2                 !=
614
 
        srl     C,32-16,C
615
 
        or      C,T2,C
616
 
        add     C,D,C
617
 
 
618
 
        xor     C,D,T1                  !=
619
 
        sethi   %hi(0xfde5380c),T2
620
 
        xor     T1,A,T1
621
 
        or      T2,%lo(0xfde5380c),T2
622
 
        add     T1,RX,T1                !=
623
 
        !pre-LOADed     X(1),R1
624
 
        add     T1,T2,T1
625
 
        add     B,T1,B
626
 
        sll     B,23,T2
627
 
        srl     B,32-23,B               !=
628
 
        or      B,T2,B
629
 
        add     B,C,B
630
 
 
631
 
        xor     B,C,T1
632
 
        sethi   %hi(0xa4beea44),T2      !=
633
 
        xor     T1,D,T1
634
 
        or      T2,%lo(0xa4beea44),T2
635
 
        add     T1,R1,T1
636
 
        !pre-LOADed     X(4),R4
637
 
        add     T1,T2,T1                !=
638
 
        add     A,T1,A
639
 
        sll     A,4,T2
640
 
        srl     A,32-4,A
641
 
        or      A,T2,A                  !=
642
 
        add     A,B,A
643
 
 
644
 
        xor     A,B,T1
645
 
        sethi   %hi(0x4bdecfa9),T2
646
 
        xor     T1,C,T1                 !=
647
 
        or      T2,%lo(0x4bdecfa9),T2
648
 
        add     T1,R4,T1
649
 
        !pre-LOADed     X(7),R7
650
 
        add     T1,T2,T1
651
 
        add     D,T1,D                  !=
652
 
        sll     D,11,T2
653
 
        srl     D,32-11,D
654
 
        or      D,T2,D
655
 
        add     D,A,D                   !=
656
 
 
657
 
        xor     D,A,T1
658
 
        sethi   %hi(0xf6bb4b60),T2
659
 
        xor     T1,B,T1
660
 
        or      T2,%lo(0xf6bb4b60),T2   !=
661
 
        add     T1,R7,T1
662
 
        !pre-LOADed     X(10),R10
663
 
        add     T1,T2,T1
664
 
        add     C,T1,C
665
 
        sll     C,16,T2                 !=
666
 
        srl     C,32-16,C
667
 
        or      C,T2,C
668
 
        add     C,D,C
669
 
 
670
 
        xor     C,D,T1                  !=
671
 
        sethi   %hi(0xbebfbc70),T2
672
 
        xor     T1,A,T1
673
 
        or      T2,%lo(0xbebfbc70),T2
674
 
        add     T1,R10,T1               !=
675
 
        !pre-LOADed     X(13),R13
676
 
        add     T1,T2,T1
677
 
        add     B,T1,B
678
 
        sll     B,23,T2
679
 
        srl     B,32-23,B               !=
680
 
        or      B,T2,B
681
 
        add     B,C,B
682
 
 
683
 
        xor     B,C,T1
684
 
        sethi   %hi(0x289b7ec6),T2      !=
685
 
        xor     T1,D,T1
686
 
        or      T2,%lo(0x289b7ec6),T2
687
 
        add     T1,R13,T1
688
 
        !pre-LOADed     X(0),R0
689
 
        add     T1,T2,T1                !=
690
 
        add     A,T1,A
691
 
        sll     A,4,T2
692
 
        srl     A,32-4,A
693
 
        or      A,T2,A                  !=
694
 
        add     A,B,A
695
 
 
696
 
        xor     A,B,T1
697
 
        sethi   %hi(0xeaa127fa),T2
698
 
        xor     T1,C,T1                 !=
699
 
        or      T2,%lo(0xeaa127fa),T2
700
 
        add     T1,R0,T1
701
 
        !pre-LOADed     X(3),R3
702
 
        add     T1,T2,T1
703
 
        add     D,T1,D                  !=
704
 
        sll     D,11,T2
705
 
        srl     D,32-11,D
706
 
        or      D,T2,D
707
 
        add     D,A,D                   !=
708
 
 
709
 
        xor     D,A,T1
710
 
        sethi   %hi(0xd4ef3085),T2
711
 
        xor     T1,B,T1
712
 
        or      T2,%lo(0xd4ef3085),T2   !=
713
 
        add     T1,R3,T1
714
 
        !pre-LOADed     X(6),R6
715
 
        add     T1,T2,T1
716
 
        add     C,T1,C
717
 
        sll     C,16,T2                 !=
718
 
        srl     C,32-16,C
719
 
        or      C,T2,C
720
 
        add     C,D,C
721
 
 
722
 
        xor     C,D,T1                  !=
723
 
        sethi   %hi(0x04881d05),T2
724
 
        xor     T1,A,T1
725
 
        or      T2,%lo(0x04881d05),T2
726
 
        add     T1,R6,T1                !=
727
 
        !pre-LOADed     X(9),R9
728
 
        add     T1,T2,T1
729
 
        add     B,T1,B
730
 
        sll     B,23,T2
731
 
        srl     B,32-23,B               !=
732
 
        or      B,T2,B
733
 
        add     B,C,B
734
 
 
735
 
        xor     B,C,T1
736
 
        sethi   %hi(0xd9d4d039),T2      !=
737
 
        xor     T1,D,T1
738
 
        or      T2,%lo(0xd9d4d039),T2
739
 
        add     T1,R9,T1
740
 
        !pre-LOADed     X(12),R12
741
 
        add     T1,T2,T1                !=
742
 
        add     A,T1,A
743
 
        sll     A,4,T2
744
 
        srl     A,32-4,A
745
 
        or      A,T2,A                  !=
746
 
        add     A,B,A
747
 
 
748
 
        xor     A,B,T1
749
 
        sethi   %hi(0xe6db99e5),T2
750
 
        xor     T1,C,T1                 !=
751
 
        or      T2,%lo(0xe6db99e5),T2
752
 
        add     T1,R12,T1
753
 
        LOAD    X(15),RX
754
 
        add     T1,T2,T1                !=
755
 
        add     D,T1,D
756
 
        sll     D,11,T2
757
 
        srl     D,32-11,D
758
 
        or      D,T2,D                  !=
759
 
        add     D,A,D
760
 
 
761
 
        xor     D,A,T1
762
 
        sethi   %hi(0x1fa27cf8),T2
763
 
        xor     T1,B,T1                 !=
764
 
        or      T2,%lo(0x1fa27cf8),T2
765
 
        add     T1,RX,T1
766
 
        !pre-LOADed     X(2),R2
767
 
        add     T1,T2,T1
768
 
        add     C,T1,C                  !=
769
 
        sll     C,16,T2
770
 
        srl     C,32-16,C
771
 
        or      C,T2,C
772
 
        add     C,D,C                   !=
773
 
 
774
 
        xor     C,D,T1
775
 
        sethi   %hi(0xc4ac5665),T2
776
 
        xor     T1,A,T1
777
 
        or      T2,%lo(0xc4ac5665),T2   !=
778
 
        add     T1,R2,T1
779
 
        !pre-LOADed     X(0),R0
780
 
        add     T1,T2,T1
781
 
        add     B,T1,B
782
 
        sll     B,23,T2                 !=
783
 
        srl     B,32-23,B
784
 
        or      B,T2,B
785
 
        add     B,C,B
786
 
 
787
 
!!!!!!!!Round 3
788
 
 
789
 
        orn     B,D,T1                  !=
790
 
        sethi   %hi(0xf4292244),T2
791
 
        xor     T1,C,T1
792
 
        or      T2,%lo(0xf4292244),T2
793
 
        add     T1,R0,T1                !=
794
 
        !pre-LOADed     X(7),R7
795
 
        add     T1,T2,T1
796
 
        add     A,T1,A
797
 
        sll     A,6,T2
798
 
        srl     A,32-6,A                !=
799
 
        or      A,T2,A
800
 
        add     A,B,A
801
 
 
802
 
        orn     A,C,T1
803
 
        sethi   %hi(0x432aff97),T2      !=
804
 
        xor     T1,B,T1
805
 
        or      T2,%lo(0x432aff97),T2
806
 
        LOAD    X(14),RX
807
 
        add     T1,R7,T1                !=
808
 
        add     T1,T2,T1
809
 
        add     D,T1,D
810
 
        sll     D,10,T2
811
 
        srl     D,32-10,D               !=
812
 
        or      D,T2,D
813
 
        add     D,A,D
814
 
 
815
 
        orn     D,B,T1
816
 
        sethi   %hi(0xab9423a7),T2      !=
817
 
        xor     T1,A,T1
818
 
        or      T2,%lo(0xab9423a7),T2
819
 
        add     T1,RX,T1
820
 
        !pre-LOADed     X(5),R5
821
 
        add     T1,T2,T1                !=
822
 
        add     C,T1,C
823
 
        sll     C,15,T2
824
 
        srl     C,32-15,C
825
 
        or      C,T2,C                  !=
826
 
        add     C,D,C
827
 
 
828
 
        orn     C,A,T1
829
 
        sethi   %hi(0xfc93a039),T2
830
 
        xor     T1,D,T1                 !=
831
 
        or      T2,%lo(0xfc93a039),T2
832
 
        add     T1,R5,T1
833
 
        !pre-LOADed     X(12),R12
834
 
        add     T1,T2,T1
835
 
        add     B,T1,B                  !=
836
 
        sll     B,21,T2
837
 
        srl     B,32-21,B
838
 
        or      B,T2,B
839
 
        add     B,C,B                   !=
840
 
 
841
 
        orn     B,D,T1
842
 
        sethi   %hi(0x655b59c3),T2
843
 
        xor     T1,C,T1
844
 
        or      T2,%lo(0x655b59c3),T2   !=
845
 
        add     T1,R12,T1
846
 
        !pre-LOADed     X(3),R3
847
 
        add     T1,T2,T1
848
 
        add     A,T1,A
849
 
        sll     A,6,T2                  !=
850
 
        srl     A,32-6,A
851
 
        or      A,T2,A
852
 
        add     A,B,A
853
 
 
854
 
        orn     A,C,T1                  !=
855
 
        sethi   %hi(0x8f0ccc92),T2
856
 
        xor     T1,B,T1
857
 
        or      T2,%lo(0x8f0ccc92),T2
858
 
        add     T1,R3,T1                !=
859
 
        !pre-LOADed     X(10),R10
860
 
        add     T1,T2,T1
861
 
        add     D,T1,D
862
 
        sll     D,10,T2
863
 
        srl     D,32-10,D               !=
864
 
        or      D,T2,D
865
 
        add     D,A,D
866
 
 
867
 
        orn     D,B,T1
868
 
        sethi   %hi(0xffeff47d),T2      !=
869
 
        xor     T1,A,T1
870
 
        or      T2,%lo(0xffeff47d),T2
871
 
        add     T1,R10,T1
872
 
        !pre-LOADed     X(1),R1
873
 
        add     T1,T2,T1                !=
874
 
        add     C,T1,C
875
 
        sll     C,15,T2
876
 
        srl     C,32-15,C
877
 
        or      C,T2,C                  !=
878
 
        add     C,D,C
879
 
 
880
 
        orn     C,A,T1
881
 
        sethi   %hi(0x85845dd1),T2
882
 
        xor     T1,D,T1                 !=
883
 
        or      T2,%lo(0x85845dd1),T2
884
 
        add     T1,R1,T1
885
 
        !pre-LOADed     X(8),R8
886
 
        add     T1,T2,T1
887
 
        add     B,T1,B                  !=
888
 
        sll     B,21,T2
889
 
        srl     B,32-21,B
890
 
        or      B,T2,B
891
 
        add     B,C,B                   !=
892
 
 
893
 
        orn     B,D,T1
894
 
        sethi   %hi(0x6fa87e4f),T2
895
 
        xor     T1,C,T1
896
 
        or      T2,%lo(0x6fa87e4f),T2   !=
897
 
        add     T1,R8,T1
898
 
        LOAD    X(15),RX
899
 
        add     T1,T2,T1
900
 
        add     A,T1,A                  !=
901
 
        sll     A,6,T2
902
 
        srl     A,32-6,A
903
 
        or      A,T2,A
904
 
        add     A,B,A                   !=
905
 
 
906
 
        orn     A,C,T1
907
 
        sethi   %hi(0xfe2ce6e0),T2
908
 
        xor     T1,B,T1
909
 
        or      T2,%lo(0xfe2ce6e0),T2   !=
910
 
        add     T1,RX,T1
911
 
        !pre-LOADed     X(6),R6
912
 
        add     T1,T2,T1
913
 
        add     D,T1,D
914
 
        sll     D,10,T2                 !=
915
 
        srl     D,32-10,D
916
 
        or      D,T2,D
917
 
        add     D,A,D
918
 
 
919
 
        orn     D,B,T1                  !=
920
 
        sethi   %hi(0xa3014314),T2
921
 
        xor     T1,A,T1
922
 
        or      T2,%lo(0xa3014314),T2
923
 
        add     T1,R6,T1                !=
924
 
        !pre-LOADed     X(13),R13
925
 
        add     T1,T2,T1
926
 
        add     C,T1,C
927
 
        sll     C,15,T2
928
 
        srl     C,32-15,C               !=
929
 
        or      C,T2,C
930
 
        add     C,D,C
931
 
 
932
 
        orn     C,A,T1
933
 
        sethi   %hi(0x4e0811a1),T2      !=
934
 
        xor     T1,D,T1
935
 
        or      T2,%lo(0x4e0811a1),T2
936
 
        !pre-LOADed     X(4),R4
937
 
         ld      [Aptr],Aval
938
 
        add     T1,R13,T1               !=
939
 
        add     T1,T2,T1
940
 
        add     B,T1,B
941
 
        sll     B,21,T2
942
 
        srl     B,32-21,B               !=
943
 
        or      B,T2,B
944
 
        add     B,C,B
945
 
 
946
 
        orn     B,D,T1
947
 
        sethi   %hi(0xf7537e82),T2      !=
948
 
        xor     T1,C,T1
949
 
        or      T2,%lo(0xf7537e82),T2
950
 
        !pre-LOADed     X(11),R11
951
 
         ld      [Dptr],Dval
952
 
        add     T1,R4,T1                !=
953
 
        add     T1,T2,T1
954
 
        add     A,T1,A
955
 
        sll     A,6,T2
956
 
        srl     A,32-6,A                !=
957
 
        or      A,T2,A
958
 
        add     A,B,A
959
 
 
960
 
        orn     A,C,T1
961
 
        sethi   %hi(0xbd3af235),T2      !=
962
 
        xor     T1,B,T1
963
 
        or      T2,%lo(0xbd3af235),T2
964
 
        !pre-LOADed     X(2),R2
965
 
         ld      [Cptr],Cval
966
 
        add     T1,R11,T1               !=
967
 
        add     T1,T2,T1
968
 
        add     D,T1,D
969
 
        sll     D,10,T2
970
 
        srl     D,32-10,D               !=
971
 
        or      D,T2,D
972
 
        add     D,A,D
973
 
 
974
 
        orn     D,B,T1
975
 
        sethi   %hi(0x2ad7d2bb),T2      !=
976
 
        xor     T1,A,T1
977
 
        or      T2,%lo(0x2ad7d2bb),T2
978
 
        !pre-LOADed     X(9),R9
979
 
         ld      [Bptr],Bval
980
 
        add     T1,R2,T1                !=
981
 
         add     Aval,A,Aval
982
 
        add     T1,T2,T1
983
 
         st      Aval,[Aptr]
984
 
        add     C,T1,C                  !=
985
 
        sll     C,15,T2
986
 
         add     Dval,D,Dval
987
 
        srl     C,32-15,C
988
 
        or      C,T2,C                  !=
989
 
         st      Dval,[Dptr]
990
 
        add     C,D,C
991
 
 
992
 
        orn     C,A,T1
993
 
        sethi   %hi(0xeb86d391),T2      !=
994
 
        xor     T1,D,T1
995
 
        or      T2,%lo(0xeb86d391),T2
996
 
        add     T1,R9,T1
997
 
        !pre-LOADed     X(0),R0
998
 
         mov     Aval,A                 !=
999
 
        add     T1,T2,T1
1000
 
         mov     Dval,D
1001
 
        add     B,T1,B
1002
 
        sll     B,21,T2                 !=
1003
 
         add     Cval,C,Cval
1004
 
        srl     B,32-21,B
1005
 
         st      Cval,[Cptr]
1006
 
        or      B,T2,B                  !=
1007
 
        add     B,C,B
1008
 
 
1009
 
        deccc   %i2
1010
 
        mov     Cval,C
1011
 
        add     B,Bval,B                !=
1012
 
        inc     64,%i1
1013
 
        nop
1014
 
        st      B,[Bptr]
1015
 
        nop                             !=
1016
 
 
1017
 
#ifdef  OPENSSL_SYSNAME_ULTRASPARC
1018
 
        bg,a,pt %icc,.Lmd5_block_loop
1019
 
#else
1020
 
        bg,a    .Lmd5_block_loop
1021
 
#endif
1022
 
        LOAD    X(0),R0
1023
 
 
1024
 
#ifdef ASI_PRIMARY_LITTLE
1025
 
        wr      %g0,%o7,%asi
1026
 
#endif
1027
 
        ret
1028
 
        restore %g0,0,%o0
1029
 
 
1030
 
.type   md5_block,#function
1031
 
.size   md5_block,(.-md5_block)