aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcryptobox
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2019-11-15 12:20:46 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2019-11-15 12:20:46 +0000
commit177d37b1abe692ebb5d0284d7b6fd49cab3b0ad2 (patch)
tree1e99c9fa3a9e594c8a1c3b0fffe0ad9d006c992f /src/libcryptobox
parentc15ca59b25403a3d6a3d9383f2dabf4b8d419876 (diff)
downloadrspamd-177d37b1abe692ebb5d0284d7b6fd49cab3b0ad2.tar.gz
rspamd-177d37b1abe692ebb5d0284d7b6fd49cab3b0ad2.zip
[Minor] Move CPU detection out of the cryptobox module
Diffstat (limited to 'src/libcryptobox')
-rw-r--r--src/libcryptobox/CMakeLists.txt93
1 files changed, 0 insertions, 93 deletions
diff --git a/src/libcryptobox/CMakeLists.txt b/src/libcryptobox/CMakeLists.txt
index beeeb1eec..86e44e83c 100644
--- a/src/libcryptobox/CMakeLists.txt
+++ b/src/libcryptobox/CMakeLists.txt
@@ -1,102 +1,9 @@
-INCLUDE(AsmOp)
-
-TARGET_ARCHITECTURE(ARCH)
-
SET(CHACHASRC ${CMAKE_CURRENT_SOURCE_DIR}/chacha20/chacha.c
${CMAKE_CURRENT_SOURCE_DIR}/chacha20/ref.c)
SET(BASE64SRC ${CMAKE_CURRENT_SOURCE_DIR}/base64/ref.c
${CMAKE_CURRENT_SOURCE_DIR}/base64/base64.c)
-SET(ASM_CODE "
- .macro TEST1 op
- \\op %eax, %eax
- .endm
- TEST1 xorl
- ")
-ASM_OP(HAVE_SLASHMACRO "slash macro convention")
-
-SET(ASM_CODE "
- .macro TEST1 op
- $0 %eax, %eax
- .endm
- TEST1 xorl
- ")
-ASM_OP(HAVE_DOLLARMACRO "dollar macro convention")
-
-# For now we support only x86_64 architecture with optimizations
-IF("${ARCH}" STREQUAL "x86_64")
- IF(NOT HAVE_SLASHMACRO AND NOT HAVE_DOLLARMACRO)
- MESSAGE(FATAL_ERROR "Your assembler cannot compile macros, please check your CMakeFiles/CMakeError.log")
- ENDIF()
-
- SET(ASM_CODE "vpaddq %ymm0, %ymm0, %ymm0")
- ASM_OP(HAVE_AVX2 "avx2")
- # Handle broken compilers, sigh...
- IF(HAVE_AVX2)
- CHECK_C_SOURCE_COMPILES(
-"
-#include <stddef.h>
-#pragma GCC push_options
-#pragma GCC target(\"avx2\")
-#ifndef __SSE2__
-#define __SSE2__
-#endif
-#ifndef __SSE__
-#define __SSE__
-#endif
-#ifndef __SSE4_2__
-#define __SSE4_2__
-#endif
-#ifndef __SSE4_1__
-#define __SSE4_1__
-#endif
-#ifndef __SSEE3__
-#define __SSEE3__
-#endif
-#ifndef __AVX__
-#define __AVX__
-#endif
-#ifndef __AVX2__
-#define __AVX2__
-#endif
-
-#ifndef __clang__
-#if __GNUC__ < 6
-#error Broken due to compiler bug
-#endif
-#endif
-
-#include <immintrin.h>
-static void foo(const char* a) __attribute__((__target__(\"avx2\")));
-static void foo(const char* a)
-{
- __m256i str = _mm256_loadu_si256((__m256i *)a);
- __m256i t = _mm256_loadu_si256((__m256i *)a + 1);
- _mm256_add_epi8(str, t);
-}
-int main(int argc, char** argv) {
- foo(argv[0]);
-}" HAVE_AVX2_C_COMPILER)
- IF(NOT HAVE_AVX2_C_COMPILER)
- MESSAGE(STATUS "Your compiler has broken AVX2 support")
- UNSET(HAVE_AVX2 CACHE)
- ENDIF()
- ENDIF()
- SET(ASM_CODE "vpaddq %xmm0, %xmm0, %xmm0")
- ASM_OP(HAVE_AVX "avx")
- SET(ASM_CODE "pmuludq %xmm0, %xmm0")
- ASM_OP(HAVE_SSE2 "sse2")
- SET(ASM_CODE "lddqu 0(%esi), %xmm0")
- ASM_OP(HAVE_SSE3 "sse3")
- SET(ASM_CODE "pshufb %xmm0, %xmm0")
- ASM_OP(HAVE_SSSE3 "ssse3")
- SET(ASM_CODE "pblendw \$0, %xmm0, %xmm0")
- ASM_OP(HAVE_SSE41 "sse41")
- SET(ASM_CODE "crc32 %eax, %eax")
- ASM_OP(HAVE_SSE42 "sse42")
-ENDIF()
-
IF(HAVE_AVX2)
SET(CHACHASRC ${CHACHASRC} ${CMAKE_CURRENT_SOURCE_DIR}/chacha20/avx2.S)
SET(BASE64SRC ${BASE64SRC} ${CMAKE_CURRENT_SOURCE_DIR}/base64/avx2.c)