commit 9026da7: [Rework] Use libsodium instead of hand crafted crypto implementations

Vsevolod Stakhov vsevolod at highsecure.ru
Mon Jul 8 16:49:05 UTC 2019


Author: Vsevolod Stakhov
Date: 2019-07-08 17:41:31 +0100
URL: https://github.com/rspamd/rspamd/commit/9026da71bb262886a275a3e24b1db51ab3395240

[Rework] Use libsodium instead of hand crafted crypto implementations

---
 CMakeLists.txt                                     |   11 +-
 contrib/librdns/curve.c                            |    5 +
 src/libcryptobox/CMakeLists.txt                    |   43 +-
 src/libcryptobox/blake2/avx.S                      |  689 -----
 src/libcryptobox/blake2/blake2-internal.h          |   29 -
 src/libcryptobox/blake2/blake2.c                   |  297 --
 src/libcryptobox/blake2/blake2.h                   |   65 -
 src/libcryptobox/blake2/constants.S                |   30 -
 src/libcryptobox/blake2/ref.c                      |  185 --
 src/libcryptobox/blake2/x86-32.S                   | 1080 -------
 src/libcryptobox/blake2/x86-64.S                   | 1754 -----------
 src/libcryptobox/catena/catena.c                   |   67 +-
 src/libcryptobox/cryptobox.c                       |  236 +-
 src/libcryptobox/cryptobox.h                       |   21 +-
 src/libcryptobox/curve25519/LICENSE.md             |   49 -
 src/libcryptobox/curve25519/avx.S                  | 3245 --------------------
 src/libcryptobox/curve25519/avx.c                  |  246 --
 src/libcryptobox/curve25519/base_constants.h       | 1346 --------
 src/libcryptobox/curve25519/base_constants2.h      |   42 -
 src/libcryptobox/curve25519/constants.S            |   20 -
 src/libcryptobox/curve25519/curve25519-donna-c64.c |  505 ---
 src/libcryptobox/curve25519/curve25519-donna.c     |  919 ------
 src/libcryptobox/curve25519/curve25519.c           |  148 -
 src/libcryptobox/curve25519/curve25519.h           |   23 -
 src/libcryptobox/curve25519/fe.h                   |  159 -
 src/libcryptobox/curve25519/ref.c                  | 2916 ------------------
 src/libcryptobox/ed25519/ed25519.c                 |  298 --
 src/libcryptobox/ed25519/ed25519.h                 |   46 -
 src/libcryptobox/ed25519/ref.c                     |  152 -
 src/libcryptobox/poly1305/avx.S                    |  877 ------
 src/libcryptobox/poly1305/avx2.S                   | 1095 -------
 src/libcryptobox/poly1305/constants.S              |   21 -
 src/libcryptobox/poly1305/poly1305.c               |  224 --
 src/libcryptobox/poly1305/poly1305.h               |   38 -
 src/libcryptobox/poly1305/poly1305_internal.h      |   19 -
 src/libcryptobox/poly1305/ref-32.c                 |  238 --
 src/libcryptobox/poly1305/ref-64.c                 |  213 --
 src/libcryptobox/poly1305/sse2.S                   |  969 ------
 src/libcryptobox/siphash/avx2.S                    |  206 --
 src/libcryptobox/siphash/constants.S               |   43 -
 src/libcryptobox/siphash/ref.c                     |  144 -
 src/libcryptobox/siphash/siphash.c                 |  227 --
 src/libcryptobox/siphash/siphash.h                 |   34 -
 src/libcryptobox/siphash/sse41.S                   |  188 --
 src/libserver/dkim.c                               |    3 +-
 src/libserver/re_cache.c                           |    7 +-
 src/libutil/multipattern.c                         |   18 +-
 src/lua/lua_cryptobox.c                            |   23 +-
 src/rspamd.c                                       |    8 +-
 49 files changed, 204 insertions(+), 19017 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2f455d941..0b872a18a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -674,6 +674,9 @@ ProcessPackage(MAGIC LIBRARY magic INCLUDE magic.h INCLUDE_SUFFIXES include/libm
 	ROOT ${LIBMAGIC_ROOT_DIR} MODULES magic)
 ProcessPackage(LIBZ LIBRARY z INCLUDE zlib.h INCLUDE_SUFFIXES include/zlib
 		ROOT ${LIBZ_ROOT_DIR} MODULES z)
+ProcessPackage(SODIUM LIBRARY sodium INCLUDE sodium.h
+		INCLUDE_SUFFIXES include/libsodium include/sodium
+		ROOT ${LIBSODIUM_ROOT_DIR} MODULES libsodium>=1.0.0)
 
 IF(ENABLE_HYPERSCAN MATCHES "ON")
 	ProcessPackage(HYPERSCAN LIBRARY hs INCLUDE hs.h INCLUDE_SUFFIXES
@@ -897,14 +900,6 @@ CHECK_FUNCTION_EXISTS(mkstemp HAVE_MKSTEMP)
 CHECK_FUNCTION_EXISTS(setitimer HAVE_SETITIMER)
 CHECK_FUNCTION_EXISTS(inet_pton HAVE_INET_PTON)
 CHECK_FUNCTION_EXISTS(clock_gettime HAVE_CLOCK_GETTIME)
-CHECK_FUNCTION_EXISTS(memset_s HAVE_MEMSET_S)
-CHECK_FUNCTION_EXISTS(explicit_bzero HAVE_EXPLICIT_BZERO)
-CHECK_C_SOURCE_COMPILES(
-	"#include <stddef.h>
-	void cmkcheckweak() __attribute__((weak));
-	int main(int argc, char** argv) {
-  		return cmkcheckweak == NULL;
-	}" HAVE_WEAK_SYMBOLS)
 CHECK_C_SOURCE_COMPILES(
 		"#include <time.h>
 		extern char *tzname[2];
diff --git a/contrib/librdns/curve.c b/contrib/librdns/curve.c
index f53d078b2..c6479c31e 100644
--- a/contrib/librdns/curve.c
+++ b/contrib/librdns/curve.c
@@ -446,8 +446,13 @@ rdns_curve_dtor (struct rdns_resolver *resolver, void *plugin_data)
 
 #include "cryptobox.h"
 
+
+#ifndef crypto_box_ZEROBYTES
 #define crypto_box_ZEROBYTES 32
+#endif
+#ifndef crypto_box_BOXZEROBYTES
 #define crypto_box_BOXZEROBYTES 16
+#endif
 
 ssize_t rdns_curve_send (struct rdns_request *req, void *plugin_data,
 						 struct sockaddr *saddr, socklen_t slen);
diff --git a/src/libcryptobox/CMakeLists.txt b/src/libcryptobox/CMakeLists.txt
index 82a477a8a..8ab390fa1 100644
--- a/src/libcryptobox/CMakeLists.txt
+++ b/src/libcryptobox/CMakeLists.txt
@@ -4,17 +4,7 @@ TARGET_ARCHITECTURE(ARCH)
 
 SET(CHACHASRC ${CMAKE_CURRENT_SOURCE_DIR}/chacha20/chacha.c
 	${CMAKE_CURRENT_SOURCE_DIR}/chacha20/ref.c)
-SET(POLYSRC ${CMAKE_CURRENT_SOURCE_DIR}/poly1305/poly1305.c)
-SET(SIPHASHSRC ${CMAKE_CURRENT_SOURCE_DIR}/siphash/siphash.c
-	${CMAKE_CURRENT_SOURCE_DIR}/siphash/ref.c)
-SET(BLAKE2SRC ${CMAKE_CURRENT_SOURCE_DIR}/blake2/blake2.c
-		${CMAKE_CURRENT_SOURCE_DIR}/blake2/ref.c)
 
-SET(CURVESRC ${CMAKE_CURRENT_SOURCE_DIR}/curve25519/ref.c
-		${CMAKE_CURRENT_SOURCE_DIR}/curve25519/curve25519.c)
-
-SET(EDSRC ${CMAKE_CURRENT_SOURCE_DIR}/ed25519/ref.c
-		${CMAKE_CURRENT_SOURCE_DIR}/ed25519/ed25519.c)
 SET(BASE64SRC ${CMAKE_CURRENT_SOURCE_DIR}/base64/ref.c
 		${CMAKE_CURRENT_SOURCE_DIR}/base64/base64.c)
 
@@ -105,51 +95,21 @@ int main(int argc, char** argv) {
 	ASM_OP(HAVE_SSE41 "sse41")
 	SET(ASM_CODE "crc32 %eax, %eax")
 	ASM_OP(HAVE_SSE42 "sse42")
-
-	if ("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
-		SET(POLYSRC ${POLYSRC} ${CMAKE_CURRENT_SOURCE_DIR}/poly1305/ref-64.c)
-		SET(CURVESRC ${CURVESRC} ${CMAKE_CURRENT_SOURCE_DIR}/curve25519/curve25519-donna-c64.c)
-	else()
-		SET(POLYSRC ${POLYSRC} ${CMAKE_CURRENT_SOURCE_DIR}/poly1305/ref-32.c)
-		SET(CURVESRC ${CURVESRC} ${CMAKE_CURRENT_SOURCE_DIR}/curve25519/curve25519-donna.c)
-	endif()
-
-	SET(BLAKE2SRC ${BLAKE2SRC} ${CMAKE_CURRENT_SOURCE_DIR}/blake2/x86-64.S)
-ELSEIF("${ARCH}" STREQUAL "i386")
-	IF(NOT HAVE_SLASHMACRO AND NOT HAVE_DOLLARMACRO)
-		MESSAGE(FATAL_ERROR "Your assembler cannot compile macros, please check your CMakeFiles/CMakeError.log")
-	ENDIF()
-	SET(POLYSRC ${POLYSRC} ${CMAKE_CURRENT_SOURCE_DIR}/poly1305/ref-32.c)
-	SET(CURVESRC ${CURVESRC} ${CMAKE_CURRENT_SOURCE_DIR}/curve25519/curve25519-donna.c)
-	SET(BLAKE2SRC ${BLAKE2SRC} ${CMAKE_CURRENT_SOURCE_DIR}/blake2/x86-32.S)
-ELSE()
-	SET(POLYSRC ${POLYSRC} ${CMAKE_CURRENT_SOURCE_DIR}/poly1305/ref-32.c)
 ENDIF()
 
 IF(HAVE_AVX2)
 	SET(CHACHASRC ${CHACHASRC} ${CMAKE_CURRENT_SOURCE_DIR}/chacha20/avx2.S)
-	SET(POLYSRC ${POLYSRC} ${CMAKE_CURRENT_SOURCE_DIR}/poly1305/avx2.S)
-	SET(SIPHASHSRC ${SIPHASHSRC} ${CMAKE_CURRENT_SOURCE_DIR}/siphash/avx2.S)
 	SET(BASE64SRC ${BASE64SRC} ${CMAKE_CURRENT_SOURCE_DIR}/base64/avx2.c)
 	MESSAGE(STATUS "AVX2 support is added")
 ENDIF(HAVE_AVX2)
 IF(HAVE_AVX)
 	SET(CHACHASRC ${CHACHASRC} ${CMAKE_CURRENT_SOURCE_DIR}/chacha20/avx.S)
-	SET(POLYSRC ${POLYSRC} ${CMAKE_CURRENT_SOURCE_DIR}/poly1305/avx.S)
-	SET(CURVESRC ${CURVESRC} ${CMAKE_CURRENT_SOURCE_DIR}/curve25519/avx.S
-			${CMAKE_CURRENT_SOURCE_DIR}/curve25519/avx.c)
-	SET(BLAKE2SRC ${BLAKE2SRC} ${CMAKE_CURRENT_SOURCE_DIR}/blake2/avx.S)
 	MESSAGE(STATUS "AVX support is added")
 ENDIF(HAVE_AVX)
 IF(HAVE_SSE2)
 	SET(CHACHASRC ${CHACHASRC} ${CMAKE_CURRENT_SOURCE_DIR}/chacha20/sse2.S)
-	SET(POLYSRC ${POLYSRC} ${CMAKE_CURRENT_SOURCE_DIR}/poly1305/sse2.S)
 	MESSAGE(STATUS "SSE2 support is added")
 ENDIF(HAVE_SSE2)
-IF(HAVE_SSE41)
-	SET(SIPHASHSRC ${SIPHASHSRC} ${CMAKE_CURRENT_SOURCE_DIR}/siphash/sse41.S)
-	MESSAGE(STATUS "SSE41 support is added")
-ENDIF(HAVE_SSE41)
 IF(HAVE_SSE42)
 	SET(BASE64SRC ${BASE64SRC} ${CMAKE_CURRENT_SOURCE_DIR}/base64/sse42.c)
 	MESSAGE(STATUS "SSE42 support is added")
@@ -162,5 +122,4 @@ SET(LIBCRYPTOBOXSRC	${CMAKE_CURRENT_SOURCE_DIR}/cryptobox.c
 					${CMAKE_CURRENT_SOURCE_DIR}/keypairs_cache.c
 					${CMAKE_CURRENT_SOURCE_DIR}/catena/catena.c)
 
-SET(RSPAMD_CRYPTOBOX ${LIBCRYPTOBOXSRC} ${CHACHASRC} ${POLYSRC} ${SIPHASHSRC}
-	${CURVESRC} ${BLAKE2SRC} ${EDSRC} ${BASE64SRC} PARENT_SCOPE)
+SET(RSPAMD_CRYPTOBOX ${LIBCRYPTOBOXSRC} ${CHACHASRC} ${BASE64SRC} PARENT_SCOPE)
diff --git a/src/libcryptobox/blake2/avx.S b/src/libcryptobox/blake2/avx.S
deleted file mode 100644
index e569f0ba7..000000000
--- a/src/libcryptobox/blake2/avx.S
+++ /dev/null
@@ -1,689 +0,0 @@
-#include "../macro.S"
-#include "constants.S"
-
-SECTION_TEXT
-
-GLOBAL_HIDDEN_FN_EXT blake2b_blocks_avx, 4, 16
-pushq %rbp
-movq %rsp, %rbp
-andq $-64, %rsp
-pushq %r12
-pushq %r13
-pushq %r14
-pushq %r15
-pushq %rbx
-subq $344, %rsp
-LOAD_VAR_PIC 48+blake2b_constants, %r9
-LOAD_VAR_PIC blake2b_constants_ssse3, %rax
-leaq 16(%rax), %r8
-vmovdqu 80(%rdi), %xmm0
-cmpq $128, %rdx
-vpxor (%r9), %xmm0, %xmm0
-movl $128, %r9d
-vmovdqu (%rax), %xmm12
-cmovbe %rdx, %r9
-vmovdqu (%r8), %xmm1
-movq 64(%rdi), %r8
-movq 72(%rdi), %rax
-cmpq $0, 80(%rdi)
-je blake2b_blocks_avx_L21
-blake2b_blocks_avx_L2:
-cmpq $128, %rdx
-je blake2b_blocks_avx_L21
-blake2b_blocks_avx_L3:
-lea (%rsp), %r10
-testq $64, %rdx
-je blake2b_blocks_avx_L5
-blake2b_blocks_avx_L4:
-vmovdqu (%rsi), %xmm2
-vmovdqu %xmm2, (%rsp)
-lea 64(%rsp), %r10
-vmovdqu 16(%rsi), %xmm3
-vmovdqu %xmm3, 16(%rsp)
-vpxor %xmm2, %xmm2, %xmm2
-vmovdqu 32(%rsi), %xmm4
-vmovdqu %xmm4, 32(%rsp)
-vmovdqu 48(%rsi), %xmm5
-vmovdqu %xmm5, 48(%rsp)
-addq $64, %rsi
-jmp blake2b_blocks_avx_L6
-blake2b_blocks_avx_L5:
-vpxor %xmm2, %xmm2, %xmm2
-vmovdqu %xmm2, 64(%rsp)
-vmovdqu %xmm2, 80(%rsp)
-vmovdqu %xmm2, 96(%rsp)
-vmovdqu %xmm2, 112(%rsp)
-blake2b_blocks_avx_L6:
-vmovdqu %xmm2, (%r10)
-vmovdqu %xmm2, 16(%r10)
-vmovdqu %xmm2, 32(%r10)
-vmovdqu %xmm2, 48(%r10)
-testq $32, %rdx
-je blake2b_blocks_avx_L8
-blake2b_blocks_avx_L7:
-vmovdqu (%rsi), %xmm2
-vmovdqu %xmm2, (%r10)
-vmovdqu 16(%rsi), %xmm3
-vmovdqu %xmm3, 16(%r10)
-addq $32, %rsi
-addq $32, %r10
-blake2b_blocks_avx_L8:
-testq $16, %rdx
-je blake2b_blocks_avx_L10
-blake2b_blocks_avx_L9:
-vmovdqu (%rsi), %xmm2
-vmovdqu %xmm2, (%r10)
-addq $16, %rsi
-addq $16, %r10
-blake2b_blocks_avx_L10:
-testq $8, %rdx
-je blake2b_blocks_avx_L12
-blake2b_blocks_avx_L11:
-movq (%rsi), %r11
-addq $8, %rsi
-movq %r11, (%r10)
-addq $8, %r10
-blake2b_blocks_avx_L12:
-testq $4, %rdx
-je blake2b_blocks_avx_L14
-blake2b_blocks_avx_L13:
-movl (%rsi), %r11d
-addq $4, %rsi
-movl %r11d, (%r10)
-addq $4, %r10
-blake2b_blocks_avx_L14:
-testq $2, %rdx
-je blake2b_blocks_avx_L16
-blake2b_blocks_avx_L15:
-movzwl (%rsi), %r11d
-addq $2, %rsi
-movw %r11w, (%r10)
-addq $2, %r10
-blake2b_blocks_avx_L16:
-testq $1, %rdx
-je blake2b_blocks_avx_L18
-blake2b_blocks_avx_L17:
-movb (%rsi), %sil
-movb %sil, (%r10)
-blake2b_blocks_avx_L18:
-lea (%rsp), %rsi
-blake2b_blocks_avx_L21:
-LOAD_VAR_PIC 32+blake2b_constants, %r10
-LOAD_VAR_PIC blake2b_constants, %r11
-vmovdqu (%rdi), %xmm5
-vmovdqu 16(%rdi), %xmm6
-vmovdqu 32(%rdi), %xmm7
-vmovdqu (%r10), %xmm4
-LOAD_VAR_PIC 16+blake2b_constants, %r10
-vmovdqu 48(%rdi), %xmm8
-vmovdqu (%r11), %xmm3
-vmovdqu %xmm3, 176(%rsp)
-vmovdqu (%r10), %xmm2
-vmovdqu %xmm2, 160(%rsp)
-vmovdqu %xmm4, 144(%rsp)
-vmovdqu %xmm8, 240(%rsp)
-vmovdqu %xmm7, 256(%rsp)
-vmovdqu %xmm6, 224(%rsp)
-vmovdqu %xmm5, 208(%rsp)
-vmovdqu %xmm0, 192(%rsp)
-movq %r9, 272(%rsp)
-movq %rdi, 128(%rsp)
-movq %rcx, 136(%rsp)
-jmp blake2b_blocks_avx_L22
-# align to 31 mod 64
-.p2align 6
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-blake2b_blocks_avx_L25:
-addq 136(%rsp), %rsi
-addq $-128, %rdx
-blake2b_blocks_avx_L22:
-movq 272(%rsp), %rcx
-addq %rcx, %r8
-cmpq %rcx, %r8
-lea 1(%rax), %rbx
-vmovdqu (%rsi), %xmm15
-vmovdqu 16(%rsi), %xmm5
-vmovdqu 32(%rsi), %xmm3
-vmovdqu 48(%rsi), %xmm6
-cmovb %rbx, %rax
-vmovd %r8, %xmm7
-vpunpcklqdq %xmm5, %xmm15, %xmm2
-LOAD_VAR_PIC 96+blake2b_constants, %rcx
-vpunpcklqdq %xmm6, %xmm3, %xmm8
-LOAD_VAR_PIC 224+blake2b_constants, %rbx
-vpaddq 208(%rsp), %xmm2, %xmm0
-vpaddq 224(%rsp), %xmm8, %xmm10
-vmovd %rax, %xmm14
-vmovdqu 256(%rsp), %xmm4
-vmovdqu 240(%rsp), %xmm11
-vpunpcklqdq %xmm14, %xmm7, %xmm9
-vpaddq %xmm4, %xmm0, %xmm13
-vpaddq %xmm11, %xmm10, %xmm2
-vpxor 144(%rsp), %xmm9, %xmm0
-vpxor 192(%rsp), %xmm2, %xmm10
-vpxor %xmm13, %xmm0, %xmm8
-vpshufd $177, %xmm8, %xmm8
-vpshufd $177, %xmm10, %xmm7
-vpaddq 176(%rsp), %xmm8, %xmm14
-vpaddq 160(%rsp), %xmm7, %xmm9
-vpxor %xmm14, %xmm4, %xmm4
-vpxor %xmm9, %xmm11, %xmm11
-vpshufb %xmm1, %xmm4, %xmm4
-vpshufb %xmm1, %xmm11, %xmm0
-vpunpckhqdq %xmm5, %xmm15, %xmm15
-vpunpckhqdq %xmm6, %xmm3, %xmm6
-vpaddq %xmm15, %xmm13, %xmm13
-vpaddq %xmm6, %xmm2, %xmm6
-vpaddq %xmm4, %xmm13, %xmm10
-vpaddq %xmm0, %xmm6, %xmm15
-vpxor %xmm10, %xmm8, %xmm2
-vpxor %xmm15, %xmm7, %xmm8
-vpshufb %xmm12, %xmm2, %xmm5
-vpshufb %xmm12, %xmm8, %xmm2
-vpaddq %xmm5, %xmm14, %xmm6
-vpaddq %xmm2, %xmm9, %xmm7
-vpxor %xmm6, %xmm4, %xmm4
-vpxor %xmm7, %xmm0, %xmm9
-vpaddq %xmm4, %xmm4, %xmm14
-vpaddq %xmm9, %xmm9, %xmm13
-vpsrlq $63, %xmm4, %xmm0
-vpsrlq $63, %xmm9, %xmm11
-vpor %xmm14, %xmm0, %xmm8
-vpor %xmm13, %xmm11, %xmm4
-vpalignr $8, %xmm8, %xmm4, %xmm0
-vpalignr $8, %xmm4, %xmm8, %xmm14
-vmovdqu 64(%rsi), %xmm9
-vmovdqu 80(%rsi), %xmm8
-vmovdqu 96(%rsi), %xmm4
-vpunpcklqdq %xmm8, %xmm9, %xmm11
-vpaddq %xmm11, %xmm10, %xmm10
-vmovdqu 112(%rsi), %xmm11
-vpaddq %xmm0, %xmm10, %xmm13
-vpunpcklqdq %xmm11, %xmm4, %xmm10
-vpaddq %xmm10, %xmm15, %xmm15
-vpaddq %xmm14, %xmm15, %xmm15
-vpalignr $8, %xmm2, %xmm5, %xmm10
-vpalignr $8, %xmm5, %xmm2, %xmm5
-vpxor %xmm13, %xmm10, %xmm10
-vpxor %xmm15, %xmm5, %xmm2
-vpshufd $177, %xmm10, %xmm10
-vpshufd $177, %xmm2, %xmm2
-vpaddq %xmm10, %xmm7, %xmm7
-vpaddq %xmm2, %xmm6, %xmm5
-vpxor %xmm7, %xmm0, %xmm6
-vpxor %xmm5, %xmm14, %xmm14
-vpshufb %xmm1, %xmm6, %xmm0
-vpshufb %xmm1, %xmm14, %xmm6
-vpunpckhqdq %xmm8, %xmm9, %xmm14
-vpaddq %xmm14, %xmm13, %xmm13
-vpaddq %xmm0, %xmm13, %xmm14
-vpunpckhqdq %xmm11, %xmm4, %xmm13
-vpxor %xmm14, %xmm10, %xmm10
-vpaddq %xmm13, %xmm15, %xmm15
-vpshufb %xmm12, %xmm10, %xmm13
-vpaddq %xmm6, %xmm15, %xmm15
-vpaddq %xmm13, %xmm7, %xmm10
-vpxor %xmm15, %xmm2, %xmm2
-vpxor %xmm10, %xmm0, %xmm0
-vpshufb %xmm12, %xmm2, %xmm2
-vpaddq %xmm2, %xmm5, %xmm5
-vpxor %xmm5, %xmm6, %xmm7
-vpsrlq $63, %xmm0, %xmm6
-vpaddq %xmm0, %xmm0, %xmm0
-vpor %xmm0, %xmm6, %xmm6
-vpsrlq $63, %xmm7, %xmm0
-vpaddq %xmm7, %xmm7, %xmm7
-vpor %xmm7, %xmm0, %xmm0
-vpalignr $8, %xmm0, %xmm6, %xmm7
-vpalignr $8, %xmm6, %xmm0, %xmm6
-vpunpcklqdq %xmm3, %xmm11, %xmm0
-vpaddq %xmm0, %xmm14, %xmm14
-vpaddq %xmm7, %xmm14, %xmm0
-vpunpckhqdq %xmm4, %xmm9, %xmm14
-vpaddq %xmm14, %xmm15, %xmm15
-vpaddq %xmm6, %xmm15, %xmm14
-vpalignr $8, %xmm13, %xmm2, %xmm15
-vpxor %xmm0, %xmm15, %xmm15
-vpshufd $177, %xmm15, %xmm15
-vpalignr $8, %xmm2, %xmm13, %xmm2
-vpxor %xmm14, %xmm2, %xmm13
-vpaddq %xmm15, %xmm5, %xmm2
-vpshufd $177, %xmm13, %xmm13
-vpxor %xmm2, %xmm7, %xmm5
-vpunpcklqdq %xmm9, %xmm8, %xmm7
-vpaddq %xmm13, %xmm10, %xmm10
-vpaddq %xmm7, %xmm0, %xmm9
-vmovdqu 48(%rsi), %xmm0
-vpshufb %xmm1, %xmm5, %xmm5
-vpxor %xmm10, %xmm6, %xmm6
-vpshufb %xmm1, %xmm6, %xmm6
-vpaddq %xmm5, %xmm9, %xmm9
-vpalignr $8, %xmm11, %xmm0, %xmm11
-vpxor %xmm9, %xmm15, %xmm15
-vpaddq %xmm11, %xmm14, %xmm7
-vpshufb %xmm12, %xmm15, %xmm11
-vpaddq %xmm6, %xmm7, %xmm14
-vpaddq %xmm11, %xmm2, %xmm2
-vpxor %xmm14, %xmm13, %xmm13
-vpxor %xmm2, %xmm5, %xmm5
-vpshufb %xmm12, %xmm13, %xmm13
-vpaddq %xmm13, %xmm10, %xmm10
-vpxor %xmm10, %xmm6, %xmm15
-vpsrlq $63, %xmm5, %xmm6
-vpaddq %xmm5, %xmm5, %xmm5
-vpsrlq $63, %xmm15, %xmm7
-vpor %xmm5, %xmm6, %xmm6
-vpaddq %xmm15, %xmm15, %xmm15
-vpor %xmm15, %xmm7, %xmm5
-vpalignr $8, %xmm6, %xmm5, %xmm15
-vpalignr $8, %xmm5, %xmm6, %xmm5
-vpshufd $78, (%rsi), %xmm6
-vpaddq %xmm6, %xmm9, %xmm9
-vpunpckhqdq %xmm3, %xmm8, %xmm3
-vpaddq %xmm3, %xmm14, %xmm6
-vpaddq %xmm15, %xmm9, %xmm9
-vpaddq %xmm5, %xmm6, %xmm8
-vpalignr $8, %xmm13, %xmm11, %xmm3
-vpalignr $8, %xmm11, %xmm13, %xmm11
-vpxor %xmm9, %xmm3, %xmm7
-vpshufd $177, %xmm7, %xmm14
-vpxor %xmm8, %xmm11, %xmm13
-vpshufd $177, %xmm13, %xmm3
-vpaddq %xmm14, %xmm10, %xmm6
-vpaddq %xmm3, %xmm2, %xmm10
-vpxor %xmm6, %xmm15, %xmm2
-vmovdqu 16(%rsi), %xmm15
-vpshufb %xmm1, %xmm2, %xmm7
-vpxor %xmm10, %xmm5, %xmm2
-vpshufb %xmm1, %xmm2, %xmm5
-vpunpcklqdq %xmm15, %xmm4, %xmm4
-vpunpckhqdq %xmm15, %xmm0, %xmm0
-vpaddq %xmm4, %xmm9, %xmm2
-vpaddq %xmm0, %xmm8, %xmm8
-vpaddq %xmm7, %xmm2, %xmm2
-vpaddq %xmm5, %xmm8, %xmm0
-vpxor %xmm2, %xmm14, %xmm15
-vpxor %xmm0, %xmm3, %xmm9
-vpshufb %xmm12, %xmm15, %xmm15
-vpshufb %xmm12, %xmm9, %xmm3
-vpaddq %xmm15, %xmm6, %xmm8
-vpaddq %xmm3, %xmm10, %xmm6
-vpxor %xmm8, %xmm7, %xmm10
-vpxor %xmm6, %xmm5, %xmm5
-vpaddq %xmm5, %xmm5, %xmm9
-vpsrlq $63, %xmm10, %xmm4
-vpsrlq $63, %xmm5, %xmm7
-vpaddq %xmm10, %xmm10, %xmm10
-vpor %xmm10, %xmm4, %xmm13
-vpor %xmm9, %xmm7, %xmm11
-vpalignr $8, %xmm11, %xmm13, %xmm4
-vpalignr $8, %xmm13, %xmm11, %xmm7
-vpalignr $8, %xmm15, %xmm3, %xmm9
-vpalignr $8, %xmm3, %xmm15, %xmm10
-blake2b_blocks_avx_L23:
-movzbl (%rcx), %edi
-movzbl 2(%rcx), %r9d
-movzbl 4(%rcx), %r10d
-movzbl 6(%rcx), %r11d
-vmovq (%rdi,%rsi), %xmm5
-vpinsrq $1, (%r9,%rsi), %xmm5, %xmm14
-vmovq (%r10,%rsi), %xmm3
-vpinsrq $1, (%r11,%rsi), %xmm3, %xmm15
-vpaddq %xmm14, %xmm2, %xmm2
-vpaddq %xmm15, %xmm0, %xmm0
-vpaddq %xmm4, %xmm2, %xmm2
-vpaddq %xmm7, %xmm0, %xmm0
-vpxor %xmm2, %xmm9, %xmm11
-vpxor %xmm0, %xmm10, %xmm10
-vpshufd $177, %xmm11, %xmm3
-movzbl 1(%rcx), %r12d
-movzbl 5(%rcx), %r14d
-vpshufd $177, %xmm10, %xmm5
-vpaddq %xmm3, %xmm6, %xmm6
-vpaddq %xmm5, %xmm8, %xmm9
-movzbl 3(%rcx), %r13d
-vpxor %xmm6, %xmm4, %xmm14
-movzbl 7(%rcx), %r15d
-vpxor %xmm9, %xmm7, %xmm15
-vmovq (%r12,%rsi), %xmm4
-vmovq (%r14,%rsi), %xmm11
-vpinsrq $1, (%r13,%rsi), %xmm4, %xmm7
-vpinsrq $1, (%r15,%rsi), %xmm11, %xmm13
-vpshufb %xmm1, %xmm14, %xmm8
-vpshufb %xmm1, %xmm15, %xmm14
-vpaddq %xmm7, %xmm2, %xmm2
-vpaddq %xmm13, %xmm0, %xmm0
-vpaddq %xmm8, %xmm2, %xmm4
-vpaddq %xmm14, %xmm0, %xmm7
-vpxor %xmm4, %xmm3, %xmm10
-vpxor %xmm7, %xmm5, %xmm3
-vpshufb %xmm12, %xmm10, %xmm11
-vpshufb %xmm12, %xmm3, %xmm10
-vpaddq %xmm11, %xmm6, %xmm13
-vpaddq %xmm10, %xmm9, %xmm9
-movzbl 8(%rcx), %edi
-vpxor %xmm13, %xmm8, %xmm8
-movzbl 12(%rcx), %r10d
-vpxor %xmm9, %xmm14, %xmm2
-movzbl 10(%rcx), %r9d
-vpsrlq $63, %xmm8, %xmm6
-movzbl 14(%rcx), %r11d
-vpsrlq $63, %xmm2, %xmm0
-vpaddq %xmm8, %xmm8, %xmm5
-vpaddq %xmm2, %xmm2, %xmm14
-vmovq (%rdi,%rsi), %xmm15
-vpor %xmm5, %xmm6, %xmm8
-vmovq (%r10,%rsi), %xmm3
-vpor %xmm14, %xmm0, %xmm6
-vpinsrq $1, (%r9,%rsi), %xmm15, %xmm5
-vpinsrq $1, (%r11,%rsi), %xmm3, %xmm0
-vpalignr $8, %xmm8, %xmm6, %xmm2
-vpalignr $8, %xmm6, %xmm8, %xmm14
-vpalignr $8, %xmm10, %xmm11, %xmm8
-vpalignr $8, %xmm11, %xmm10, %xmm11
-vpaddq %xmm5, %xmm4, %xmm4
-vpaddq %xmm0, %xmm7, %xmm7
-vpaddq %xmm2, %xmm4, %xmm15
-vpaddq %xmm14, %xmm7, %xmm0
-vpxor %xmm15, %xmm8, %xmm6
-vpxor %xmm0, %xmm11, %xmm10
-vpshufd $177, %xmm6, %xmm6
-vpshufd $177, %xmm10, %xmm8
-movzbl 9(%rcx), %r12d
-movzbl 13(%rcx), %r14d
-vpaddq %xmm6, %xmm9, %xmm4
-vpaddq %xmm8, %xmm13, %xmm7
-movzbl 11(%rcx), %r13d
-vpxor %xmm4, %xmm2, %xmm9
-movzbl 15(%rcx), %r15d
-vpxor %xmm7, %xmm14, %xmm2
-vmovq (%r12,%rsi), %xmm14
-addq $16, %rcx
-vmovq (%r14,%rsi), %xmm3
-vpshufb %xmm1, %xmm9, %xmm13
-vpinsrq $1, (%r13,%rsi), %xmm14, %xmm5
-vpinsrq $1, (%r15,%rsi), %xmm3, %xmm9
-vpshufb %xmm1, %xmm2, %xmm11
-vpaddq %xmm5, %xmm15, %xmm15
-vpaddq %xmm9, %xmm0, %xmm0
-vpaddq %xmm13, %xmm15, %xmm2
-vpaddq %xmm11, %xmm0, %xmm0
-vpxor %xmm2, %xmm6, %xmm6
-vpxor %xmm0, %xmm8, %xmm8
-vpshufb %xmm12, %xmm6, %xmm14
-vpshufb %xmm12, %xmm8, %xmm15
-vpaddq %xmm14, %xmm4, %xmm8
-vpaddq %xmm15, %xmm7, %xmm6
-vpxor %xmm8, %xmm13, %xmm4
-vpxor %xmm6, %xmm11, %xmm11
-vpaddq %xmm4, %xmm4, %xmm10
-vpsrlq $63, %xmm4, %xmm7
-vpsrlq $63, %xmm11, %xmm13
-vpaddq %xmm11, %xmm11, %xmm4
-vpor %xmm10, %xmm7, %xmm3
-vpor %xmm4, %xmm13, %xmm11
-vpalignr $8, %xmm11, %xmm3, %xmm4
-vpalignr $8, %xmm3, %xmm11, %xmm7
-vpalignr $8, %xmm15, %xmm14, %xmm10
-vpalignr $8, %xmm14, %xmm15, %xmm9
-cmpq %rbx, %rcx
-jb blake2b_blocks_avx_L23
-blake2b_blocks_avx_L24:
-movq 32(%rsi), %r13
-movq (%rsi), %r10
-movq 48(%rsi), %r9
-vmovd %r13, %xmm13
-vpinsrq $1, %r9, %xmm13, %xmm14
-vmovd %r10, %xmm3
-movq 16(%rsi), %rbx
-vpinsrq $1, %rbx, %xmm3, %xmm15
-vpaddq %xmm14, %xmm0, %xmm0
-vpaddq %xmm7, %xmm0, %xmm3
-vpxor %xmm3, %xmm10, %xmm10
-vpaddq %xmm15, %xmm2, %xmm2
-vpaddq %xmm4, %xmm2, %xmm5
-vpshufd $177, %xmm10, %xmm15
-vpxor %xmm5, %xmm9, %xmm9
-vpshufd $177, %xmm9, %xmm9
-vpaddq %xmm15, %xmm8, %xmm14
-vpaddq %xmm9, %xmm6, %xmm0
-vpxor %xmm14, %xmm7, %xmm7
-vpxor %xmm0, %xmm4, %xmm8
-vpshufb %xmm1, %xmm7, %xmm4
-vpshufb %xmm1, %xmm8, %xmm2
-vmovq 8(%rsi), %xmm7
-movq %r8, 288(%rsp)
-movq 24(%rsi), %r8
-vpinsrq $1, %r8, %xmm7, %xmm6
-vpinsrq $1, %r10, %xmm7, %xmm7
-vpaddq %xmm6, %xmm5, %xmm13
-movq 40(%rsi), %rcx
-movq 56(%rsi), %rdi
-vpaddq %xmm2, %xmm13, %xmm13
-vmovd %rcx, %xmm5
-vpxor %xmm13, %xmm9, %xmm9
-vpinsrq $1, %rdi, %xmm5, %xmm10
-vpshufb %xmm12, %xmm9, %xmm5
-vpaddq %xmm10, %xmm3, %xmm3
-vpaddq %xmm4, %xmm3, %xmm11
-vpaddq %xmm5, %xmm0, %xmm3
-vpxor %xmm11, %xmm15, %xmm8
-vpshufb %xmm12, %xmm8, %xmm10
-vpaddq %xmm10, %xmm14, %xmm8
-vpxor %xmm3, %xmm2, %xmm14
-vpxor %xmm8, %xmm4, %xmm9
-vpsrlq $63, %xmm14, %xmm4
-vpsrlq $63, %xmm9, %xmm0
-vpaddq %xmm14, %xmm14, %xmm14
-movq 64(%rsi), %r15
*** OUTPUT TRUNCATED, 19374 LINES SKIPPED ***


More information about the Commits mailing list