ref: 4410517b44fd2610abe0dcd1349bb3e6b3c5ddb8
dir: /sys/src/ape/lib/openssl/crypto/md5/asm/md5-sparcv9.S/
.ident "md5-sparcv9.S, Version 1.0" .ident "SPARC V9 ISA artwork by Andy Polyakov <[email protected]>" .file "md5-sparcv9.S" /* * ==================================================================== * Copyright (c) 1999 Andy Polyakov <[email protected]>. * * Rights for redistribution and usage in source and binary forms are * granted as long as above copyright notices are retained. Warranty * of any kind is (of course:-) disclaimed. * ==================================================================== */ /* * This is my modest contribution to OpenSSL project (see * http://www.openssl.org/ for more information about it) and is an * assembler implementation of MD5 block hash function. I've hand-coded * this for the sole reason to reach UltraSPARC-specific "load in * little-endian byte order" instruction. This gives up to 15% * performance improvement for cases when input message is aligned at * 32 bits boundary. The module was tested under both 32 *and* 64 bit * kernels. For updates see http://fy.chalmers.se/~appro/hpe/. * * To compile with SC4.x/SC5.x: * * cc -xarch=v[9|8plus] -DOPENSSL_SYSNAME_ULTRASPARC -DMD5_BLOCK_DATA_ORDER \ * -c md5-sparcv9.S * * and with gcc: * * gcc -mcpu=ultrasparc -DOPENSSL_SYSNAME_ULTRASPARC -DMD5_BLOCK_DATA_ORDER \ * -c md5-sparcv9.S * * or if above fails (it does if you have gas): * * gcc -E -DOPENSSL_SYSNAMEULTRASPARC -DMD5_BLOCK_DATA_ORDER md5_block.sparc.S | \ * as -xarch=v8plus /dev/fd/0 -o md5-sparcv9.o */ #include <openssl/e_os2.h> #define A %o0 #define B %o1 #define C %o2 #define D %o3 #define T1 %o4 #define T2 %o5 #define R0 %l0 #define R1 %l1 #define R2 %l2 #define R3 %l3 #define R4 %l4 #define R5 %l5 #define R6 %l6 #define R7 %l7 #define R8 %i3 #define R9 %i4 #define R10 %i5 #define R11 %g1 #define R12 %g2 #define R13 %g3 #define RX %g4 #define Aptr %i0+0 #define Bptr %i0+4 #define Cptr %i0+8 #define Dptr %i0+12 #define Aval R5 /* those not used at the end of the last round */ #define Bval R6 #define Cval R7 #define Dval R8 #if defined(MD5_BLOCK_DATA_ORDER) # if defined(OPENSSL_SYSNAME_ULTRASPARC) # define LOAD lda # define X(i) [%i1+i*4]%asi # define md5_block md5_block_asm_data_order_aligned # define ASI_PRIMARY_LITTLE 0x88 # else # error "MD5_BLOCK_DATA_ORDER is supported only on UltraSPARC!" # endif #else # define LOAD ld # define X(i) [%i1+i*4] # define md5_block md5_block_asm_host_order #endif .section ".text",#alloc,#execinstr #if defined(__SUNPRO_C) && defined(__sparcv9) /* They've said -xarch=v9 at command line */ .register %g2,#scratch .register %g3,#scratch # define FRAME -192 #elif defined(__GNUC__) && defined(__arch64__) /* They've said -m64 at command line */ .register %g2,#scratch .register %g3,#scratch # define FRAME -192 #else # define FRAME -96 #endif .align 32 .global md5_block md5_block: save %sp,FRAME,%sp ld [Dptr],D ld [Cptr],C ld [Bptr],B ld [Aptr],A #ifdef ASI_PRIMARY_LITTLE rd %asi,%o7 ! How dare I? Well, I just do:-) wr %g0,ASI_PRIMARY_LITTLE,%asi #endif LOAD X(0),R0 .Lmd5_block_loop: !!!!!!!!Round 0 xor C,D,T1 sethi %hi(0xd76aa478),T2 and T1,B,T1 or T2,%lo(0xd76aa478),T2 != xor T1,D,T1 add T1,R0,T1 LOAD X(1),R1 add T1,T2,T1 != add A,T1,A sll A,7,T2 srl A,32-7,A or A,T2,A != xor B,C,T1 add A,B,A sethi %hi(0xe8c7b756),T2 and T1,A,T1 != or T2,%lo(0xe8c7b756),T2 xor T1,C,T1 LOAD X(2),R2 add T1,R1,T1 != add T1,T2,T1 add D,T1,D sll D,12,T2 srl D,32-12,D != or D,T2,D xor A,B,T1 add D,A,D sethi %hi(0x242070db),T2 != and T1,D,T1 or T2,%lo(0x242070db),T2 xor T1,B,T1 add T1,R2,T1 != LOAD X(3),R3 add T1,T2,T1 add C,T1,C sll C,17,T2 != srl C,32-17,C or C,T2,C xor D,A,T1 add C,D,C != sethi %hi(0xc1bdceee),T2 and T1,C,T1 or T2,%lo(0xc1bdceee),T2 xor T1,A,T1 != add T1,R3,T1 LOAD X(4),R4 add T1,T2,T1 add B,T1,B != sll B,22,T2 srl B,32-22,B or B,T2,B xor C,D,T1 != add B,C,B sethi %hi(0xf57c0faf),T2 and T1,B,T1 or T2,%lo(0xf57c0faf),T2 != xor T1,D,T1 add T1,R4,T1 LOAD X(5),R5 add T1,T2,T1 != add A,T1,A sll A,7,T2 srl A,32-7,A or A,T2,A != xor B,C,T1 add A,B,A sethi %hi(0x4787c62a),T2 and T1,A,T1 != or T2,%lo(0x4787c62a),T2 xor T1,C,T1 LOAD X(6),R6 add T1,R5,T1 != add T1,T2,T1 add D,T1,D sll D,12,T2 srl D,32-12,D != or D,T2,D xor A,B,T1 add D,A,D sethi %hi(0xa8304613),T2 != and T1,D,T1 or T2,%lo(0xa8304613),T2 xor T1,B,T1 add T1,R6,T1 != LOAD X(7),R7 add T1,T2,T1 add C,T1,C sll C,17,T2 != srl C,32-17,C or C,T2,C xor D,A,T1 add C,D,C != sethi %hi(0xfd469501),T2 and T1,C,T1 or T2,%lo(0xfd469501),T2 xor T1,A,T1 != add T1,R7,T1 LOAD X(8),R8 add T1,T2,T1 add B,T1,B != sll B,22,T2 srl B,32-22,B or B,T2,B xor C,D,T1 != add B,C,B sethi %hi(0x698098d8),T2 and T1,B,T1 or T2,%lo(0x698098d8),T2 != xor T1,D,T1 add T1,R8,T1 LOAD X(9),R9 add T1,T2,T1 != add A,T1,A sll A,7,T2 srl A,32-7,A or A,T2,A != xor B,C,T1 add A,B,A sethi %hi(0x8b44f7af),T2 and T1,A,T1 != or T2,%lo(0x8b44f7af),T2 xor T1,C,T1 LOAD X(10),R10 add T1,R9,T1 != add T1,T2,T1 add D,T1,D sll D,12,T2 srl D,32-12,D != or D,T2,D xor A,B,T1 add D,A,D sethi %hi(0xffff5bb1),T2 != and T1,D,T1 or T2,%lo(0xffff5bb1),T2 xor T1,B,T1 add T1,R10,T1 != LOAD X(11),R11 add T1,T2,T1 add C,T1,C sll C,17,T2 != srl C,32-17,C or C,T2,C xor D,A,T1 add C,D,C != sethi %hi(0x895cd7be),T2 and T1,C,T1 or T2,%lo(0x895cd7be),T2 xor T1,A,T1 != add T1,R11,T1 LOAD X(12),R12 add T1,T2,T1 add B,T1,B != sll B,22,T2 srl B,32-22,B or B,T2,B xor C,D,T1 != add B,C,B sethi %hi(0x6b901122),T2 and T1,B,T1 or T2,%lo(0x6b901122),T2 != xor T1,D,T1 add T1,R12,T1 LOAD X(13),R13 add T1,T2,T1 != add A,T1,A sll A,7,T2 srl A,32-7,A or A,T2,A != xor B,C,T1 add A,B,A sethi %hi(0xfd987193),T2 and T1,A,T1 != or T2,%lo(0xfd987193),T2 xor T1,C,T1 LOAD X(14),RX add T1,R13,T1 != add T1,T2,T1 add D,T1,D sll D,12,T2 srl D,32-12,D != or D,T2,D xor A,B,T1 add D,A,D sethi %hi(0xa679438e),T2 != and T1,D,T1 or T2,%lo(0xa679438e),T2 xor T1,B,T1 add T1,RX,T1 != LOAD X(15),RX add T1,T2,T1 add C,T1,C sll C,17,T2 != srl C,32-17,C or C,T2,C xor D,A,T1 add C,D,C != sethi %hi(0x49b40821),T2 and T1,C,T1 or T2,%lo(0x49b40821),T2 xor T1,A,T1 != add T1,RX,T1 !pre-LOADed X(1),R1 add T1,T2,T1 add B,T1,B sll B,22,T2 != srl B,32-22,B or B,T2,B add B,C,B !!!!!!!!Round 1 xor B,C,T1 != sethi %hi(0xf61e2562),T2 and T1,D,T1 or T2,%lo(0xf61e2562),T2 xor T1,C,T1 != add T1,R1,T1 !pre-LOADed X(6),R6 add T1,T2,T1 add A,T1,A sll A,5,T2 != srl A,32-5,A or A,T2,A add A,B,A xor A,B,T1 != sethi %hi(0xc040b340),T2 and T1,C,T1 or T2,%lo(0xc040b340),T2 xor T1,B,T1 != add T1,R6,T1 !pre-LOADed X(11),R11 add T1,T2,T1 add D,T1,D sll D,9,T2 != srl D,32-9,D or D,T2,D add D,A,D xor D,A,T1 != sethi %hi(0x265e5a51),T2 and T1,B,T1 or T2,%lo(0x265e5a51),T2 xor T1,A,T1 != add T1,R11,T1 !pre-LOADed X(0),R0 add T1,T2,T1 add C,T1,C sll C,14,T2 != srl C,32-14,C or C,T2,C add C,D,C xor C,D,T1 != sethi %hi(0xe9b6c7aa),T2 and T1,A,T1 or T2,%lo(0xe9b6c7aa),T2 xor T1,D,T1 != add T1,R0,T1 !pre-LOADed X(5),R5 add T1,T2,T1 add B,T1,B sll B,20,T2 != srl B,32-20,B or B,T2,B add B,C,B xor B,C,T1 != sethi %hi(0xd62f105d),T2 and T1,D,T1 or T2,%lo(0xd62f105d),T2 xor T1,C,T1 != add T1,R5,T1 !pre-LOADed X(10),R10 add T1,T2,T1 add A,T1,A sll A,5,T2 != srl A,32-5,A or A,T2,A add A,B,A xor A,B,T1 != sethi %hi(0x02441453),T2 and T1,C,T1 or T2,%lo(0x02441453),T2 xor T1,B,T1 != add T1,R10,T1 LOAD X(15),RX add T1,T2,T1 add D,T1,D != sll D,9,T2 srl D,32-9,D or D,T2,D add D,A,D != xor D,A,T1 sethi %hi(0xd8a1e681),T2 and T1,B,T1 or T2,%lo(0xd8a1e681),T2 != xor T1,A,T1 add T1,RX,T1 !pre-LOADed X(4),R4 add T1,T2,T1 add C,T1,C != sll C,14,T2 srl C,32-14,C or C,T2,C add C,D,C != xor C,D,T1 sethi %hi(0xe7d3fbc8),T2 and T1,A,T1 or T2,%lo(0xe7d3fbc8),T2 != xor T1,D,T1 add T1,R4,T1 !pre-LOADed X(9),R9 add T1,T2,T1 add B,T1,B != sll B,20,T2 srl B,32-20,B or B,T2,B add B,C,B != xor B,C,T1 sethi %hi(0x21e1cde6),T2 and T1,D,T1 or T2,%lo(0x21e1cde6),T2 != xor T1,C,T1 add T1,R9,T1 LOAD X(14),RX add T1,T2,T1 != add A,T1,A sll A,5,T2 srl A,32-5,A or A,T2,A != add A,B,A xor A,B,T1 sethi %hi(0xc33707d6),T2 and T1,C,T1 != or T2,%lo(0xc33707d6),T2 xor T1,B,T1 add T1,RX,T1 !pre-LOADed X(3),R3 add T1,T2,T1 != add D,T1,D sll D,9,T2 srl D,32-9,D or D,T2,D != add D,A,D xor D,A,T1 sethi %hi(0xf4d50d87),T2 and T1,B,T1 != or T2,%lo(0xf4d50d87),T2 xor T1,A,T1 add T1,R3,T1 !pre-LOADed X(8),R8 add T1,T2,T1 != add C,T1,C sll C,14,T2 srl C,32-14,C or C,T2,C != add C,D,C xor C,D,T1 sethi %hi(0x455a14ed),T2 and T1,A,T1 != or T2,%lo(0x455a14ed),T2 xor T1,D,T1 add T1,R8,T1 !pre-LOADed X(13),R13 add T1,T2,T1 != add B,T1,B sll B,20,T2 srl B,32-20,B or B,T2,B != add B,C,B xor B,C,T1 sethi %hi(0xa9e3e905),T2 and T1,D,T1 != or T2,%lo(0xa9e3e905),T2 xor T1,C,T1 add T1,R13,T1 !pre-LOADed X(2),R2 add T1,T2,T1 != add A,T1,A sll A,5,T2 srl A,32-5,A or A,T2,A != add A,B,A xor A,B,T1 sethi %hi(0xfcefa3f8),T2 and T1,C,T1 != or T2,%lo(0xfcefa3f8),T2 xor T1,B,T1 add T1,R2,T1 !pre-LOADed X(7),R7 add T1,T2,T1 != add D,T1,D sll D,9,T2 srl D,32-9,D or D,T2,D != add D,A,D xor D,A,T1 sethi %hi(0x676f02d9),T2 and T1,B,T1 != or T2,%lo(0x676f02d9),T2 xor T1,A,T1 add T1,R7,T1 !pre-LOADed X(12),R12 add T1,T2,T1 != add C,T1,C sll C,14,T2 srl C,32-14,C or C,T2,C != add C,D,C xor C,D,T1 sethi %hi(0x8d2a4c8a),T2 and T1,A,T1 != or T2,%lo(0x8d2a4c8a),T2 xor T1,D,T1 add T1,R12,T1 !pre-LOADed X(5),R5 add T1,T2,T1 != add B,T1,B sll B,20,T2 srl B,32-20,B or B,T2,B != add B,C,B !!!!!!!!Round 2 xor B,C,T1 sethi %hi(0xfffa3942),T2 xor T1,D,T1 != or T2,%lo(0xfffa3942),T2 add T1,R5,T1 !pre-LOADed X(8),R8 add T1,T2,T1 add A,T1,A != sll A,4,T2 srl A,32-4,A or A,T2,A add A,B,A != xor A,B,T1 sethi %hi(0x8771f681),T2 xor T1,C,T1 or T2,%lo(0x8771f681),T2 != add T1,R8,T1 !pre-LOADed X(11),R11 add T1,T2,T1 add D,T1,D sll D,11,T2 != srl D,32-11,D or D,T2,D add D,A,D xor D,A,T1 != sethi %hi(0x6d9d6122),T2 xor T1,B,T1 or T2,%lo(0x6d9d6122),T2 add T1,R11,T1 != LOAD X(14),RX add T1,T2,T1 add C,T1,C sll C,16,T2 != srl C,32-16,C or C,T2,C add C,D,C xor C,D,T1 != sethi %hi(0xfde5380c),T2 xor T1,A,T1 or T2,%lo(0xfde5380c),T2 add T1,RX,T1 != !pre-LOADed X(1),R1 add T1,T2,T1 add B,T1,B sll B,23,T2 srl B,32-23,B != or B,T2,B add B,C,B xor B,C,T1 sethi %hi(0xa4beea44),T2 != xor T1,D,T1 or T2,%lo(0xa4beea44),T2 add T1,R1,T1 !pre-LOADed X(4),R4 add T1,T2,T1 != add A,T1,A sll A,4,T2 srl A,32-4,A or A,T2,A != add A,B,A xor A,B,T1 sethi %hi(0x4bdecfa9),T2 xor T1,C,T1 != or T2,%lo(0x4bdecfa9),T2 add T1,R4,T1 !pre-LOADed X(7),R7 add T1,T2,T1 add D,T1,D != sll D,11,T2 srl D,32-11,D or D,T2,D add D,A,D != xor D,A,T1 sethi %hi(0xf6bb4b60),T2 xor T1,B,T1 or T2,%lo(0xf6bb4b60),T2 != add T1,R7,T1 !pre-LOADed X(10),R10 add T1,T2,T1 add C,T1,C sll C,16,T2 != srl C,32-16,C or C,T2,C add C,D,C xor C,D,T1 != sethi %hi(0xbebfbc70),T2 xor T1,A,T1 or T2,%lo(0xbebfbc70),T2 add T1,R10,T1 != !pre-LOADed X(13),R13 add T1,T2,T1 add B,T1,B sll B,23,T2 srl B,32-23,B != or B,T2,B add B,C,B xor B,C,T1 sethi %hi(0x289b7ec6),T2 != xor T1,D,T1 or T2,%lo(0x289b7ec6),T2 add T1,R13,T1 !pre-LOADed X(0),R0 add T1,T2,T1 != add A,T1,A sll A,4,T2 srl A,32-4,A or A,T2,A != add A,B,A xor A,B,T1 sethi %hi(0xeaa127fa),T2 xor T1,C,T1 != or T2,%lo(0xeaa127fa),T2 add T1,R0,T1 !pre-LOADed X(3),R3 add T1,T2,T1 add D,T1,D != sll D,11,T2 srl D,32-11,D or D,T2,D add D,A,D != xor D,A,T1 sethi %hi(0xd4ef3085),T2 xor T1,B,T1 or T2,%lo(0xd4ef3085),T2 != add T1,R3,T1 !pre-LOADed X(6),R6 add T1,T2,T1 add C,T1,C sll C,16,T2 != srl C,32-16,C or C,T2,C add C,D,C xor C,D,T1 != sethi %hi(0x04881d05),T2 xor T1,A,T1 or T2,%lo(0x04881d05),T2 add T1,R6,T1 != !pre-LOADed X(9),R9 add T1,T2,T1 add B,T1,B sll B,23,T2 srl B,32-23,B != or B,T2,B add B,C,B xor B,C,T1 sethi %hi(0xd9d4d039),T2 != xor T1,D,T1 or T2,%lo(0xd9d4d039),T2 add T1,R9,T1 !pre-LOADed X(12),R12 add T1,T2,T1 != add A,T1,A sll A,4,T2 srl A,32-4,A or A,T2,A != add A,B,A xor A,B,T1 sethi %hi(0xe6db99e5),T2 xor T1,C,T1 != or T2,%lo(0xe6db99e5),T2 add T1,R12,T1 LOAD X(15),RX add T1,T2,T1 != add D,T1,D sll D,11,T2 srl D,32-11,D or D,T2,D != add D,A,D xor D,A,T1 sethi %hi(0x1fa27cf8),T2 xor T1,B,T1 != or T2,%lo(0x1fa27cf8),T2 add T1,RX,T1 !pre-LOADed X(2),R2 add T1,T2,T1 add C,T1,C != sll C,16,T2 srl C,32-16,C or C,T2,C add C,D,C != xor C,D,T1 sethi %hi(0xc4ac5665),T2 xor T1,A,T1 or T2,%lo(0xc4ac5665),T2 != add T1,R2,T1 !pre-LOADed X(0),R0 add T1,T2,T1 add B,T1,B sll B,23,T2 != srl B,32-23,B or B,T2,B add B,C,B !!!!!!!!Round 3 orn B,D,T1 != sethi %hi(0xf4292244),T2 xor T1,C,T1 or T2,%lo(0xf4292244),T2 add T1,R0,T1 != !pre-LOADed X(7),R7 add T1,T2,T1 add A,T1,A sll A,6,T2 srl A,32-6,A != or A,T2,A add A,B,A orn A,C,T1 sethi %hi(0x432aff97),T2 != xor T1,B,T1 or T2,%lo(0x432aff97),T2 LOAD X(14),RX add T1,R7,T1 != add T1,T2,T1 add D,T1,D sll D,10,T2 srl D,32-10,D != or D,T2,D add D,A,D orn D,B,T1 sethi %hi(0xab9423a7),T2 != xor T1,A,T1 or T2,%lo(0xab9423a7),T2 add T1,RX,T1 !pre-LOADed X(5),R5 add T1,T2,T1 != add C,T1,C sll C,15,T2 srl C,32-15,C or C,T2,C != add C,D,C orn C,A,T1 sethi %hi(0xfc93a039),T2 xor T1,D,T1 != or T2,%lo(0xfc93a039),T2 add T1,R5,T1 !pre-LOADed X(12),R12 add T1,T2,T1 add B,T1,B != sll B,21,T2 srl B,32-21,B or B,T2,B add B,C,B != orn B,D,T1 sethi %hi(0x655b59c3),T2 xor T1,C,T1 or T2,%lo(0x655b59c3),T2 != add T1,R12,T1 !pre-LOADed X(3),R3 add T1,T2,T1 add A,T1,A sll A,6,T2 != srl A,32-6,A or A,T2,A add A,B,A orn A,C,T1 != sethi %hi(0x8f0ccc92),T2 xor T1,B,T1 or T2,%lo(0x8f0ccc92),T2 add T1,R3,T1 != !pre-LOADed X(10),R10 add T1,T2,T1 add D,T1,D sll D,10,T2 srl D,32-10,D != or D,T2,D add D,A,D orn D,B,T1 sethi %hi(0xffeff47d),T2 != xor T1,A,T1 or T2,%lo(0xffeff47d),T2 add T1,R10,T1 !pre-LOADed X(1),R1 add T1,T2,T1 != add C,T1,C sll C,15,T2 srl C,32-15,C or C,T2,C != add C,D,C orn C,A,T1 sethi %hi(0x85845dd1),T2 xor T1,D,T1 != or T2,%lo(0x85845dd1),T2 add T1,R1,T1 !pre-LOADed X(8),R8 add T1,T2,T1 add B,T1,B != sll B,21,T2 srl B,32-21,B or B,T2,B add B,C,B != orn B,D,T1 sethi %hi(0x6fa87e4f),T2 xor T1,C,T1 or T2,%lo(0x6fa87e4f),T2 != add T1,R8,T1 LOAD X(15),RX add T1,T2,T1 add A,T1,A != sll A,6,T2 srl A,32-6,A or A,T2,A add A,B,A != orn A,C,T1 sethi %hi(0xfe2ce6e0),T2 xor T1,B,T1 or T2,%lo(0xfe2ce6e0),T2 != add T1,RX,T1 !pre-LOADed X(6),R6 add T1,T2,T1 add D,T1,D sll D,10,T2 != srl D,32-10,D or D,T2,D add D,A,D orn D,B,T1 != sethi %hi(0xa3014314),T2 xor T1,A,T1 or T2,%lo(0xa3014314),T2 add T1,R6,T1 != !pre-LOADed X(13),R13 add T1,T2,T1 add C,T1,C sll C,15,T2 srl C,32-15,C != or C,T2,C add C,D,C orn C,A,T1 sethi %hi(0x4e0811a1),T2 != xor T1,D,T1 or T2,%lo(0x4e0811a1),T2 !pre-LOADed X(4),R4 ld [Aptr],Aval add T1,R13,T1 != add T1,T2,T1 add B,T1,B sll B,21,T2 srl B,32-21,B != or B,T2,B add B,C,B orn B,D,T1 sethi %hi(0xf7537e82),T2 != xor T1,C,T1 or T2,%lo(0xf7537e82),T2 !pre-LOADed X(11),R11 ld [Dptr],Dval add T1,R4,T1 != add T1,T2,T1 add A,T1,A sll A,6,T2 srl A,32-6,A != or A,T2,A add A,B,A orn A,C,T1 sethi %hi(0xbd3af235),T2 != xor T1,B,T1 or T2,%lo(0xbd3af235),T2 !pre-LOADed X(2),R2 ld [Cptr],Cval add T1,R11,T1 != add T1,T2,T1 add D,T1,D sll D,10,T2 srl D,32-10,D != or D,T2,D add D,A,D orn D,B,T1 sethi %hi(0x2ad7d2bb),T2 != xor T1,A,T1 or T2,%lo(0x2ad7d2bb),T2 !pre-LOADed X(9),R9 ld [Bptr],Bval add T1,R2,T1 != add Aval,A,Aval add T1,T2,T1 st Aval,[Aptr] add C,T1,C != sll C,15,T2 add Dval,D,Dval srl C,32-15,C or C,T2,C != st Dval,[Dptr] add C,D,C orn C,A,T1 sethi %hi(0xeb86d391),T2 != xor T1,D,T1 or T2,%lo(0xeb86d391),T2 add T1,R9,T1 !pre-LOADed X(0),R0 mov Aval,A != add T1,T2,T1 mov Dval,D add B,T1,B sll B,21,T2 != add Cval,C,Cval srl B,32-21,B st Cval,[Cptr] or B,T2,B != add B,C,B deccc %i2 mov Cval,C add B,Bval,B != inc 64,%i1 nop st B,[Bptr] nop != #ifdef OPENSSL_SYSNAME_ULTRASPARC bg,a,pt %icc,.Lmd5_block_loop #else bg,a .Lmd5_block_loop #endif LOAD X(0),R0 #ifdef ASI_PRIMARY_LITTLE wr %g0,%o7,%asi #endif ret restore %g0,0,%o0 .type md5_block,#function .size md5_block,(.-md5_block)