[SCM] The rsync repository. - branch master updated

Rsync CVS commit messages rsync-cvs at lists.samba.org
Sat May 23 05:49:49 UTC 2020


The branch, master has been updated
       via  68516f91 Add "input" handling for cmd_txt_*() pkglib.py.
       via  531ffa81 Optimized assembler version of md5_process() for x86-64
      from  d7212df0 A little more safety in negotiate_checksum().

https://git.samba.org/?p=rsync.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 68516f91be8591b3a2d9fc4c9ed5a904e7282265
Author: Wayne Davison <wayne at opencoder.net>
Date:   Fri May 22 22:40:54 2020 -0700

    Add "input" handling for cmd_txt_*() pkglib.py.

commit 531ffa8104fa26e58ed487c340ed64af5d456fb2
Author: Jorrit Jongma <git at jongma.org>
Date:   Fri May 22 19:38:37 2020 +0200

    Optimized assembler version of md5_process() for x86-64
    
    Originally created by Marc Bevand and placed in the public domain.
    Enable/disabled via the same --enable-simd configure switch as
    the rolling checksum optimizations.

-----------------------------------------------------------------------

Summary of changes:
 Makefile.in          |   5 +-
 lib/md5-asm-x86_64.s | 693 +++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/md5.c            |  13 +
 packaging/pkglib.py  |   5 +-
 4 files changed, 714 insertions(+), 2 deletions(-)
 create mode 100644 lib/md5-asm-x86_64.s


Changeset truncated at 500 lines:

diff --git a/Makefile.in b/Makefile.in
index 0e18e96e..13cba5d9 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -31,7 +31,7 @@ VERSION=@RSYNC_VERSION@
 .SUFFIXES:
 .SUFFIXES: .c .o
 
-SIMD_x86_64=simd-checksum-x86_64.o
+SIMD_x86_64=simd-checksum-x86_64.o lib/md5-asm-x86_64.o
 
 GENFILES=configure.sh aclocal.m4 config.h.in proto.h proto.h-tstamp rsync.1 rsync-ssl.1 rsyncd.conf.5
 HEADERS=byteorder.h config.h errcode.h proto.h rsync.h ifuncs.h itypes.h inums.h \
@@ -122,6 +122,9 @@ rounding.h: rounding.c rsync.h proto.h
 simd-checksum-x86_64.o: simd-checksum-x86_64.cpp
 	$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
 
+lib/md5-asm-x86_64.o: lib/md5-asm-x86_64.s
+	$(CC) -c -o $@ $<
+
 tls$(EXEEXT): $(TLS_OBJ)
 	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(TLS_OBJ) $(LIBS)
 
diff --git a/lib/md5-asm-x86_64.s b/lib/md5-asm-x86_64.s
new file mode 100644
index 00000000..a3126151
--- /dev/null
+++ b/lib/md5-asm-x86_64.s
@@ -0,0 +1,693 @@
+/*
+ * x86-64 optimized assembler MD5 implementation
+ *
+ * Author: Marc Bevand, 2004
+ *
+ * This code was placed in the public domain by the author. The original
+ * publication can be found at:
+ *
+ * https://www.zorinaq.com/papers/md5-amd64.html
+ */
+/*
+ * No modifications were made aside from changing the function and file names.
+ * The MD5_CTX structure as expected here (from OpenSSL) is binary compatible
+ * with the md_context used by rsync, for the fields accessed.
+ *
+ * Benchmarks (in MB/s)            C     ASM
+ * - Intel Atom D2700            302     334
+ * - Intel i7-7700hq             351     376
+ * - AMD ThreadRipper 2950x      728     784
+ *
+ * The original code was also incorporated into OpenSSL. It has since been
+ * modified there. Those changes have not been made here due to licensing
+ * incompatibilities. Benchmarks of those changes on the above CPUs did not
+ * show any significant difference in performance, though.
+ */
+
+.text
+.align 16
+
+.globl md5_process_asm
+.type md5_process_asm, at function
+md5_process_asm:
+	push	%rbp
+	push	%rbx
+	push	%r12
+	push	%r13			# not really useful (r13 is unused)
+	push	%r14
+	push	%r15
+
+	# rdi = arg #1 (ctx, MD5_CTX pointer)
+	# rsi = arg #2 (ptr, data pointer)
+	# rdx = arg #3 (nbr, number of 16-word blocks to process)
+	mov	%rdi,		%rbp	# rbp = ctx
+	shl	$6,		%rdx	# rdx = nbr in bytes
+	lea	(%rsi,%rdx),	%rdi	# rdi = end
+	mov	0*4(%rbp),	%eax	# eax = ctx->A
+	mov	1*4(%rbp),	%ebx	# ebx = ctx->B
+	mov	2*4(%rbp),	%ecx	# ecx = ctx->C
+	mov	3*4(%rbp),	%edx	# edx = ctx->D
+	# end is 'rdi'
+	# ptr is 'rsi'
+	# A is 'eax'
+	# B is 'ebx'
+	# C is 'ecx'
+	# D is 'edx'
+
+	cmp	%rdi,		%rsi		# cmp end with ptr
+	je	1f				# jmp if ptr == end
+
+	# BEGIN of loop over 16-word blocks
+2:	# save old values of A, B, C, D
+	mov	%eax,		%r8d
+	mov	%ebx,		%r9d
+	mov	%ecx,		%r14d
+	mov	%edx,		%r15d
+ mov	0*4(%rsi),	%r10d		/* (NEXT STEP) X[0] */
+ mov	%edx,		%r11d		/* (NEXT STEP) z' = %edx */
+	xor	%ecx,		%r11d		/* y ^ ... */
+	lea	-680876936(%eax,%r10d),%eax		/* Const + dst + ... */
+	and	%ebx,		%r11d		/* x & ... */
+	xor	%edx,		%r11d		/* z ^ ... */
+	mov	1*4(%rsi),%r10d		/* (NEXT STEP) X[1] */
+	add	%r11d,		%eax		/* dst += ... */
+	rol	$7,		%eax		/* dst <<< s */
+	mov	%ecx,		%r11d		/* (NEXT STEP) z' = %ecx */
+	add	%ebx,		%eax		/* dst += x */
+	xor	%ebx,		%r11d		/* y ^ ... */
+	lea	-389564586(%edx,%r10d),%edx		/* Const + dst + ... */
+	and	%eax,		%r11d		/* x & ... */
+	xor	%ecx,		%r11d		/* z ^ ... */
+	mov	2*4(%rsi),%r10d		/* (NEXT STEP) X[2] */
+	add	%r11d,		%edx		/* dst += ... */
+	rol	$12,		%edx		/* dst <<< s */
+	mov	%ebx,		%r11d		/* (NEXT STEP) z' = %ebx */
+	add	%eax,		%edx		/* dst += x */
+	xor	%eax,		%r11d		/* y ^ ... */
+	lea	606105819(%ecx,%r10d),%ecx		/* Const + dst + ... */
+	and	%edx,		%r11d		/* x & ... */
+	xor	%ebx,		%r11d		/* z ^ ... */
+	mov	3*4(%rsi),%r10d		/* (NEXT STEP) X[3] */
+	add	%r11d,		%ecx		/* dst += ... */
+	rol	$17,		%ecx		/* dst <<< s */
+	mov	%eax,		%r11d		/* (NEXT STEP) z' = %eax */
+	add	%edx,		%ecx		/* dst += x */
+	xor	%edx,		%r11d		/* y ^ ... */
+	lea	-1044525330(%ebx,%r10d),%ebx		/* Const + dst + ... */
+	and	%ecx,		%r11d		/* x & ... */
+	xor	%eax,		%r11d		/* z ^ ... */
+	mov	4*4(%rsi),%r10d		/* (NEXT STEP) X[4] */
+	add	%r11d,		%ebx		/* dst += ... */
+	rol	$22,		%ebx		/* dst <<< s */
+	mov	%edx,		%r11d		/* (NEXT STEP) z' = %edx */
+	add	%ecx,		%ebx		/* dst += x */
+	xor	%ecx,		%r11d		/* y ^ ... */
+	lea	-176418897(%eax,%r10d),%eax		/* Const + dst + ... */
+	and	%ebx,		%r11d		/* x & ... */
+	xor	%edx,		%r11d		/* z ^ ... */
+	mov	5*4(%rsi),%r10d		/* (NEXT STEP) X[5] */
+	add	%r11d,		%eax		/* dst += ... */
+	rol	$7,		%eax		/* dst <<< s */
+	mov	%ecx,		%r11d		/* (NEXT STEP) z' = %ecx */
+	add	%ebx,		%eax		/* dst += x */
+	xor	%ebx,		%r11d		/* y ^ ... */
+	lea	1200080426(%edx,%r10d),%edx		/* Const + dst + ... */
+	and	%eax,		%r11d		/* x & ... */
+	xor	%ecx,		%r11d		/* z ^ ... */
+	mov	6*4(%rsi),%r10d		/* (NEXT STEP) X[6] */
+	add	%r11d,		%edx		/* dst += ... */
+	rol	$12,		%edx		/* dst <<< s */
+	mov	%ebx,		%r11d		/* (NEXT STEP) z' = %ebx */
+	add	%eax,		%edx		/* dst += x */
+	xor	%eax,		%r11d		/* y ^ ... */
+	lea	-1473231341(%ecx,%r10d),%ecx		/* Const + dst + ... */
+	and	%edx,		%r11d		/* x & ... */
+	xor	%ebx,		%r11d		/* z ^ ... */
+	mov	7*4(%rsi),%r10d		/* (NEXT STEP) X[7] */
+	add	%r11d,		%ecx		/* dst += ... */
+	rol	$17,		%ecx		/* dst <<< s */
+	mov	%eax,		%r11d		/* (NEXT STEP) z' = %eax */
+	add	%edx,		%ecx		/* dst += x */
+	xor	%edx,		%r11d		/* y ^ ... */
+	lea	-45705983(%ebx,%r10d),%ebx		/* Const + dst + ... */
+	and	%ecx,		%r11d		/* x & ... */
+	xor	%eax,		%r11d		/* z ^ ... */
+	mov	8*4(%rsi),%r10d		/* (NEXT STEP) X[8] */
+	add	%r11d,		%ebx		/* dst += ... */
+	rol	$22,		%ebx		/* dst <<< s */
+	mov	%edx,		%r11d		/* (NEXT STEP) z' = %edx */
+	add	%ecx,		%ebx		/* dst += x */
+	xor	%ecx,		%r11d		/* y ^ ... */
+	lea	1770035416(%eax,%r10d),%eax		/* Const + dst + ... */
+	and	%ebx,		%r11d		/* x & ... */
+	xor	%edx,		%r11d		/* z ^ ... */
+	mov	9*4(%rsi),%r10d		/* (NEXT STEP) X[9] */
+	add	%r11d,		%eax		/* dst += ... */
+	rol	$7,		%eax		/* dst <<< s */
+	mov	%ecx,		%r11d		/* (NEXT STEP) z' = %ecx */
+	add	%ebx,		%eax		/* dst += x */
+	xor	%ebx,		%r11d		/* y ^ ... */
+	lea	-1958414417(%edx,%r10d),%edx		/* Const + dst + ... */
+	and	%eax,		%r11d		/* x & ... */
+	xor	%ecx,		%r11d		/* z ^ ... */
+	mov	10*4(%rsi),%r10d		/* (NEXT STEP) X[10] */
+	add	%r11d,		%edx		/* dst += ... */
+	rol	$12,		%edx		/* dst <<< s */
+	mov	%ebx,		%r11d		/* (NEXT STEP) z' = %ebx */
+	add	%eax,		%edx		/* dst += x */
+	xor	%eax,		%r11d		/* y ^ ... */
+	lea	-42063(%ecx,%r10d),%ecx		/* Const + dst + ... */
+	and	%edx,		%r11d		/* x & ... */
+	xor	%ebx,		%r11d		/* z ^ ... */
+	mov	11*4(%rsi),%r10d		/* (NEXT STEP) X[11] */
+	add	%r11d,		%ecx		/* dst += ... */
+	rol	$17,		%ecx		/* dst <<< s */
+	mov	%eax,		%r11d		/* (NEXT STEP) z' = %eax */
+	add	%edx,		%ecx		/* dst += x */
+	xor	%edx,		%r11d		/* y ^ ... */
+	lea	-1990404162(%ebx,%r10d),%ebx		/* Const + dst + ... */
+	and	%ecx,		%r11d		/* x & ... */
+	xor	%eax,		%r11d		/* z ^ ... */
+	mov	12*4(%rsi),%r10d		/* (NEXT STEP) X[12] */
+	add	%r11d,		%ebx		/* dst += ... */
+	rol	$22,		%ebx		/* dst <<< s */
+	mov	%edx,		%r11d		/* (NEXT STEP) z' = %edx */
+	add	%ecx,		%ebx		/* dst += x */
+	xor	%ecx,		%r11d		/* y ^ ... */
+	lea	1804603682(%eax,%r10d),%eax		/* Const + dst + ... */
+	and	%ebx,		%r11d		/* x & ... */
+	xor	%edx,		%r11d		/* z ^ ... */
+	mov	13*4(%rsi),%r10d		/* (NEXT STEP) X[13] */
+	add	%r11d,		%eax		/* dst += ... */
+	rol	$7,		%eax		/* dst <<< s */
+	mov	%ecx,		%r11d		/* (NEXT STEP) z' = %ecx */
+	add	%ebx,		%eax		/* dst += x */
+	xor	%ebx,		%r11d		/* y ^ ... */
+	lea	-40341101(%edx,%r10d),%edx		/* Const + dst + ... */
+	and	%eax,		%r11d		/* x & ... */
+	xor	%ecx,		%r11d		/* z ^ ... */
+	mov	14*4(%rsi),%r10d		/* (NEXT STEP) X[14] */
+	add	%r11d,		%edx		/* dst += ... */
+	rol	$12,		%edx		/* dst <<< s */
+	mov	%ebx,		%r11d		/* (NEXT STEP) z' = %ebx */
+	add	%eax,		%edx		/* dst += x */
+	xor	%eax,		%r11d		/* y ^ ... */
+	lea	-1502002290(%ecx,%r10d),%ecx		/* Const + dst + ... */
+	and	%edx,		%r11d		/* x & ... */
+	xor	%ebx,		%r11d		/* z ^ ... */
+	mov	15*4(%rsi),%r10d		/* (NEXT STEP) X[15] */
+	add	%r11d,		%ecx		/* dst += ... */
+	rol	$17,		%ecx		/* dst <<< s */
+	mov	%eax,		%r11d		/* (NEXT STEP) z' = %eax */
+	add	%edx,		%ecx		/* dst += x */
+	xor	%edx,		%r11d		/* y ^ ... */
+	lea	1236535329(%ebx,%r10d),%ebx		/* Const + dst + ... */
+	and	%ecx,		%r11d		/* x & ... */
+	xor	%eax,		%r11d		/* z ^ ... */
+	mov	0*4(%rsi),%r10d		/* (NEXT STEP) X[0] */
+	add	%r11d,		%ebx		/* dst += ... */
+	rol	$22,		%ebx		/* dst <<< s */
+	mov	%edx,		%r11d		/* (NEXT STEP) z' = %edx */
+	add	%ecx,		%ebx		/* dst += x */
+ mov	1*4(%rsi),	%r10d		/* (NEXT STEP) X[1] */
+ mov	%edx,		%r11d		/* (NEXT STEP) z' = %edx */
+ mov	%edx,		%r12d		/* (NEXT STEP) z' = %edx */
+	not	%r11d				/* not z */
+	lea	-165796510(%eax,%r10d),%eax		/* Const + dst + ... */
+	and	%ebx,		%r12d		/* x & z */
+	and	%ecx,		%r11d		/* y & (not z) */
+	mov	6*4(%rsi),%r10d		/* (NEXT STEP) X[6] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%ecx,		%r11d		/* (NEXT STEP) z' = %ecx */
+	add	%r12d,		%eax		/* dst += ... */
+	mov	%ecx,		%r12d		/* (NEXT STEP) z' = %ecx */
+	rol	$5,		%eax		/* dst <<< s */
+	add	%ebx,		%eax		/* dst += x */
+	not	%r11d				/* not z */
+	lea	-1069501632(%edx,%r10d),%edx		/* Const + dst + ... */
+	and	%eax,		%r12d		/* x & z */
+	and	%ebx,		%r11d		/* y & (not z) */
+	mov	11*4(%rsi),%r10d		/* (NEXT STEP) X[11] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%ebx,		%r11d		/* (NEXT STEP) z' = %ebx */
+	add	%r12d,		%edx		/* dst += ... */
+	mov	%ebx,		%r12d		/* (NEXT STEP) z' = %ebx */
+	rol	$9,		%edx		/* dst <<< s */
+	add	%eax,		%edx		/* dst += x */
+	not	%r11d				/* not z */
+	lea	643717713(%ecx,%r10d),%ecx		/* Const + dst + ... */
+	and	%edx,		%r12d		/* x & z */
+	and	%eax,		%r11d		/* y & (not z) */
+	mov	0*4(%rsi),%r10d		/* (NEXT STEP) X[0] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%eax,		%r11d		/* (NEXT STEP) z' = %eax */
+	add	%r12d,		%ecx		/* dst += ... */
+	mov	%eax,		%r12d		/* (NEXT STEP) z' = %eax */
+	rol	$14,		%ecx		/* dst <<< s */
+	add	%edx,		%ecx		/* dst += x */
+	not	%r11d				/* not z */
+	lea	-373897302(%ebx,%r10d),%ebx		/* Const + dst + ... */
+	and	%ecx,		%r12d		/* x & z */
+	and	%edx,		%r11d		/* y & (not z) */
+	mov	5*4(%rsi),%r10d		/* (NEXT STEP) X[5] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%edx,		%r11d		/* (NEXT STEP) z' = %edx */
+	add	%r12d,		%ebx		/* dst += ... */
+	mov	%edx,		%r12d		/* (NEXT STEP) z' = %edx */
+	rol	$20,		%ebx		/* dst <<< s */
+	add	%ecx,		%ebx		/* dst += x */
+	not	%r11d				/* not z */
+	lea	-701558691(%eax,%r10d),%eax		/* Const + dst + ... */
+	and	%ebx,		%r12d		/* x & z */
+	and	%ecx,		%r11d		/* y & (not z) */
+	mov	10*4(%rsi),%r10d		/* (NEXT STEP) X[10] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%ecx,		%r11d		/* (NEXT STEP) z' = %ecx */
+	add	%r12d,		%eax		/* dst += ... */
+	mov	%ecx,		%r12d		/* (NEXT STEP) z' = %ecx */
+	rol	$5,		%eax		/* dst <<< s */
+	add	%ebx,		%eax		/* dst += x */
+	not	%r11d				/* not z */
+	lea	38016083(%edx,%r10d),%edx		/* Const + dst + ... */
+	and	%eax,		%r12d		/* x & z */
+	and	%ebx,		%r11d		/* y & (not z) */
+	mov	15*4(%rsi),%r10d		/* (NEXT STEP) X[15] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%ebx,		%r11d		/* (NEXT STEP) z' = %ebx */
+	add	%r12d,		%edx		/* dst += ... */
+	mov	%ebx,		%r12d		/* (NEXT STEP) z' = %ebx */
+	rol	$9,		%edx		/* dst <<< s */
+	add	%eax,		%edx		/* dst += x */
+	not	%r11d				/* not z */
+	lea	-660478335(%ecx,%r10d),%ecx		/* Const + dst + ... */
+	and	%edx,		%r12d		/* x & z */
+	and	%eax,		%r11d		/* y & (not z) */
+	mov	4*4(%rsi),%r10d		/* (NEXT STEP) X[4] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%eax,		%r11d		/* (NEXT STEP) z' = %eax */
+	add	%r12d,		%ecx		/* dst += ... */
+	mov	%eax,		%r12d		/* (NEXT STEP) z' = %eax */
+	rol	$14,		%ecx		/* dst <<< s */
+	add	%edx,		%ecx		/* dst += x */
+	not	%r11d				/* not z */
+	lea	-405537848(%ebx,%r10d),%ebx		/* Const + dst + ... */
+	and	%ecx,		%r12d		/* x & z */
+	and	%edx,		%r11d		/* y & (not z) */
+	mov	9*4(%rsi),%r10d		/* (NEXT STEP) X[9] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%edx,		%r11d		/* (NEXT STEP) z' = %edx */
+	add	%r12d,		%ebx		/* dst += ... */
+	mov	%edx,		%r12d		/* (NEXT STEP) z' = %edx */
+	rol	$20,		%ebx		/* dst <<< s */
+	add	%ecx,		%ebx		/* dst += x */
+	not	%r11d				/* not z */
+	lea	568446438(%eax,%r10d),%eax		/* Const + dst + ... */
+	and	%ebx,		%r12d		/* x & z */
+	and	%ecx,		%r11d		/* y & (not z) */
+	mov	14*4(%rsi),%r10d		/* (NEXT STEP) X[14] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%ecx,		%r11d		/* (NEXT STEP) z' = %ecx */
+	add	%r12d,		%eax		/* dst += ... */
+	mov	%ecx,		%r12d		/* (NEXT STEP) z' = %ecx */
+	rol	$5,		%eax		/* dst <<< s */
+	add	%ebx,		%eax		/* dst += x */
+	not	%r11d				/* not z */
+	lea	-1019803690(%edx,%r10d),%edx		/* Const + dst + ... */
+	and	%eax,		%r12d		/* x & z */
+	and	%ebx,		%r11d		/* y & (not z) */
+	mov	3*4(%rsi),%r10d		/* (NEXT STEP) X[3] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%ebx,		%r11d		/* (NEXT STEP) z' = %ebx */
+	add	%r12d,		%edx		/* dst += ... */
+	mov	%ebx,		%r12d		/* (NEXT STEP) z' = %ebx */
+	rol	$9,		%edx		/* dst <<< s */
+	add	%eax,		%edx		/* dst += x */
+	not	%r11d				/* not z */
+	lea	-187363961(%ecx,%r10d),%ecx		/* Const + dst + ... */
+	and	%edx,		%r12d		/* x & z */
+	and	%eax,		%r11d		/* y & (not z) */
+	mov	8*4(%rsi),%r10d		/* (NEXT STEP) X[8] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%eax,		%r11d		/* (NEXT STEP) z' = %eax */
+	add	%r12d,		%ecx		/* dst += ... */
+	mov	%eax,		%r12d		/* (NEXT STEP) z' = %eax */
+	rol	$14,		%ecx		/* dst <<< s */
+	add	%edx,		%ecx		/* dst += x */
+	not	%r11d				/* not z */
+	lea	1163531501(%ebx,%r10d),%ebx		/* Const + dst + ... */
+	and	%ecx,		%r12d		/* x & z */
+	and	%edx,		%r11d		/* y & (not z) */
+	mov	13*4(%rsi),%r10d		/* (NEXT STEP) X[13] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%edx,		%r11d		/* (NEXT STEP) z' = %edx */
+	add	%r12d,		%ebx		/* dst += ... */
+	mov	%edx,		%r12d		/* (NEXT STEP) z' = %edx */
+	rol	$20,		%ebx		/* dst <<< s */
+	add	%ecx,		%ebx		/* dst += x */
+	not	%r11d				/* not z */
+	lea	-1444681467(%eax,%r10d),%eax		/* Const + dst + ... */
+	and	%ebx,		%r12d		/* x & z */
+	and	%ecx,		%r11d		/* y & (not z) */
+	mov	2*4(%rsi),%r10d		/* (NEXT STEP) X[2] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%ecx,		%r11d		/* (NEXT STEP) z' = %ecx */
+	add	%r12d,		%eax		/* dst += ... */
+	mov	%ecx,		%r12d		/* (NEXT STEP) z' = %ecx */
+	rol	$5,		%eax		/* dst <<< s */
+	add	%ebx,		%eax		/* dst += x */
+	not	%r11d				/* not z */
+	lea	-51403784(%edx,%r10d),%edx		/* Const + dst + ... */
+	and	%eax,		%r12d		/* x & z */
+	and	%ebx,		%r11d		/* y & (not z) */
+	mov	7*4(%rsi),%r10d		/* (NEXT STEP) X[7] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%ebx,		%r11d		/* (NEXT STEP) z' = %ebx */
+	add	%r12d,		%edx		/* dst += ... */
+	mov	%ebx,		%r12d		/* (NEXT STEP) z' = %ebx */
+	rol	$9,		%edx		/* dst <<< s */
+	add	%eax,		%edx		/* dst += x */
+	not	%r11d				/* not z */
+	lea	1735328473(%ecx,%r10d),%ecx		/* Const + dst + ... */
+	and	%edx,		%r12d		/* x & z */
+	and	%eax,		%r11d		/* y & (not z) */
+	mov	12*4(%rsi),%r10d		/* (NEXT STEP) X[12] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%eax,		%r11d		/* (NEXT STEP) z' = %eax */
+	add	%r12d,		%ecx		/* dst += ... */
+	mov	%eax,		%r12d		/* (NEXT STEP) z' = %eax */
+	rol	$14,		%ecx		/* dst <<< s */
+	add	%edx,		%ecx		/* dst += x */
+	not	%r11d				/* not z */
+	lea	-1926607734(%ebx,%r10d),%ebx		/* Const + dst + ... */
+	and	%ecx,		%r12d		/* x & z */
+	and	%edx,		%r11d		/* y & (not z) */
+	mov	0*4(%rsi),%r10d		/* (NEXT STEP) X[0] */
+	or	%r11d,		%r12d		/* (y & (not z)) | (x & z) */
+	mov	%edx,		%r11d		/* (NEXT STEP) z' = %edx */
+	add	%r12d,		%ebx		/* dst += ... */
+	mov	%edx,		%r12d		/* (NEXT STEP) z' = %edx */
+	rol	$20,		%ebx		/* dst <<< s */
+	add	%ecx,		%ebx		/* dst += x */
+ mov	5*4(%rsi),	%r10d		/* (NEXT STEP) X[5] */
+ mov	%ecx,		%r11d		/* (NEXT STEP) y' = %ecx */
+	lea	-378558(%eax,%r10d),%eax		/* Const + dst + ... */
+	mov	8*4(%rsi),%r10d		/* (NEXT STEP) X[8] */
+	xor	%edx,		%r11d		/* z ^ ... */
+	xor	%ebx,		%r11d		/* x ^ ... */
+	add	%r11d,		%eax		/* dst += ... */
+	rol	$4,		%eax		/* dst <<< s */
+	mov	%ebx,		%r11d		/* (NEXT STEP) y' = %ebx */
+	add	%ebx,		%eax		/* dst += x */
+	lea	-2022574463(%edx,%r10d),%edx		/* Const + dst + ... */
+	mov	11*4(%rsi),%r10d		/* (NEXT STEP) X[11] */
+	xor	%ecx,		%r11d		/* z ^ ... */
+	xor	%eax,		%r11d		/* x ^ ... */
+	add	%r11d,		%edx		/* dst += ... */
+	rol	$11,		%edx		/* dst <<< s */
+	mov	%eax,		%r11d		/* (NEXT STEP) y' = %eax */
+	add	%eax,		%edx		/* dst += x */
+	lea	1839030562(%ecx,%r10d),%ecx		/* Const + dst + ... */
+	mov	14*4(%rsi),%r10d		/* (NEXT STEP) X[14] */
+	xor	%ebx,		%r11d		/* z ^ ... */
+	xor	%edx,		%r11d		/* x ^ ... */
+	add	%r11d,		%ecx		/* dst += ... */
+	rol	$16,		%ecx		/* dst <<< s */
+	mov	%edx,		%r11d		/* (NEXT STEP) y' = %edx */
+	add	%edx,		%ecx		/* dst += x */
+	lea	-35309556(%ebx,%r10d),%ebx		/* Const + dst + ... */
+	mov	1*4(%rsi),%r10d		/* (NEXT STEP) X[1] */
+	xor	%eax,		%r11d		/* z ^ ... */
+	xor	%ecx,		%r11d		/* x ^ ... */
+	add	%r11d,		%ebx		/* dst += ... */
+	rol	$23,		%ebx		/* dst <<< s */
+	mov	%ecx,		%r11d		/* (NEXT STEP) y' = %ecx */
+	add	%ecx,		%ebx		/* dst += x */
+	lea	-1530992060(%eax,%r10d),%eax		/* Const + dst + ... */
+	mov	4*4(%rsi),%r10d		/* (NEXT STEP) X[4] */
+	xor	%edx,		%r11d		/* z ^ ... */
+	xor	%ebx,		%r11d		/* x ^ ... */
+	add	%r11d,		%eax		/* dst += ... */
+	rol	$4,		%eax		/* dst <<< s */
+	mov	%ebx,		%r11d		/* (NEXT STEP) y' = %ebx */
+	add	%ebx,		%eax		/* dst += x */
+	lea	1272893353(%edx,%r10d),%edx		/* Const + dst + ... */
+	mov	7*4(%rsi),%r10d		/* (NEXT STEP) X[7] */
+	xor	%ecx,		%r11d		/* z ^ ... */
+	xor	%eax,		%r11d		/* x ^ ... */
+	add	%r11d,		%edx		/* dst += ... */
+	rol	$11,		%edx		/* dst <<< s */
+	mov	%eax,		%r11d		/* (NEXT STEP) y' = %eax */
+	add	%eax,		%edx		/* dst += x */
+	lea	-155497632(%ecx,%r10d),%ecx		/* Const + dst + ... */
+	mov	10*4(%rsi),%r10d		/* (NEXT STEP) X[10] */
+	xor	%ebx,		%r11d		/* z ^ ... */
+	xor	%edx,		%r11d		/* x ^ ... */
+	add	%r11d,		%ecx		/* dst += ... */
+	rol	$16,		%ecx		/* dst <<< s */
+	mov	%edx,		%r11d		/* (NEXT STEP) y' = %edx */
+	add	%edx,		%ecx		/* dst += x */
+	lea	-1094730640(%ebx,%r10d),%ebx		/* Const + dst + ... */
+	mov	13*4(%rsi),%r10d		/* (NEXT STEP) X[13] */
+	xor	%eax,		%r11d		/* z ^ ... */
+	xor	%ecx,		%r11d		/* x ^ ... */
+	add	%r11d,		%ebx		/* dst += ... */
+	rol	$23,		%ebx		/* dst <<< s */
+	mov	%ecx,		%r11d		/* (NEXT STEP) y' = %ecx */
+	add	%ecx,		%ebx		/* dst += x */
+	lea	681279174(%eax,%r10d),%eax		/* Const + dst + ... */
+	mov	0*4(%rsi),%r10d		/* (NEXT STEP) X[0] */
+	xor	%edx,		%r11d		/* z ^ ... */
+	xor	%ebx,		%r11d		/* x ^ ... */
+	add	%r11d,		%eax		/* dst += ... */
+	rol	$4,		%eax		/* dst <<< s */
+	mov	%ebx,		%r11d		/* (NEXT STEP) y' = %ebx */
+	add	%ebx,		%eax		/* dst += x */
+	lea	-358537222(%edx,%r10d),%edx		/* Const + dst + ... */
+	mov	3*4(%rsi),%r10d		/* (NEXT STEP) X[3] */
+	xor	%ecx,		%r11d		/* z ^ ... */
+	xor	%eax,		%r11d		/* x ^ ... */
+	add	%r11d,		%edx		/* dst += ... */
+	rol	$11,		%edx		/* dst <<< s */
+	mov	%eax,		%r11d		/* (NEXT STEP) y' = %eax */


-- 
The rsync repository.



More information about the rsync-cvs mailing list