From 5474ea4d7b6fba0072e0da03e91e51b7c7dd7ff8 Mon Sep 17 00:00:00 2001 From: "G.E." Date: Thu, 25 Jul 2024 21:31:47 +0300 Subject: [PATCH 1/4] first cut at fixing a crc32 issue reported by a user --- CMakeLists.txt | 16 ++++++++-------- cmake/simde.cmake | 4 ++-- src/util/arch/x86/crc32.h | 4 ++++ src/util/simd_types.h | 3 +++ 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 928b6cb1..afa0dddb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -952,15 +952,15 @@ else () set (DISPATCHER_DEFINE "${DISPATCHER_DEFINE} -DDISABLE_AVX512VBMI_DISPATCH") endif (NOT BUILD_AVX512VBMI) if(BUILD_SSE2_SIMDE) - set (DISPATCHER_DEFINE "${DISPATCHER_DEFINE} -DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2") + set (DISPATCHER_DEFINE "${DISPATCHER_DEFINE} -DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2") endif(BUILD_SSE2_SIMDE) set_source_files_properties(src/dispatcher.c PROPERTIES COMPILE_FLAGS "-Wno-unused-parameter -Wno-unused-function ${DISPATCHER_DEFINE}") if(BUILD_SSE2_SIMDE AND NOT BUILD_AVX2 AND NOT BUILD_AVX512 AND NOT BUILD_AVX512VBMI) set_source_files_properties(src/crc32.c PROPERTIES - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2") + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2") set_source_files_properties(src/hs.cpp PROPERTIES - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2") + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2") string(REGEX REPLACE "-msse4.2" "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") @@ -981,7 +981,7 @@ else () set_target_properties(hs_exec_core2 PROPERTIES string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2" RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 ${CMAKE_MODULE_PATH}/keep.syms.in" ) else() @@ -1049,12 +1049,12 @@ else () set_target_properties(hs_compile PROPERTIES string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2" ) set_target_properties(hs PROPERTIES string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2" ) endif (BUILD_SSE2_SIMDE) @@ -1078,14 +1078,14 @@ else () set_target_properties(hs_exec_shared_core2 PROPERTIES string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2" POSITION_INDEPENDENT_CODE TRUE RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 ${CMAKE_MODULE_PATH}/keep.syms.in" ) set_target_properties(hs_compile_shared PROPERTIES string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2" ) else() add_library(hs_exec_shared_core2 OBJECT ${hs_exec_SRCS}) diff --git a/cmake/simde.cmake b/cmake/simde.cmake index 9b15e177..998e858f 100644 --- a/cmake/simde.cmake +++ b/cmake/simde.cmake @@ -26,8 +26,8 @@ if (SIMDE_SSE42_H_FOUND) set(ARCH_C_FLAGS "-msse2") set(ARCH_CXX_FLAGS "-msse2") set(X86_ARCH "x86-64") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DVS_SIMDE_NATIVE -DVS_SIMDE_BACKEND") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVS_SIMDE_NATIVE -DVS_SIMDE_BACKEND") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DVS_SIMDE_NATIVE -DVS_SIMDE_BACKEND -DSIMDE_ENABLE_NATIVE_ALIASES") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVS_SIMDE_NATIVE -DVS_SIMDE_BACKEND -DSIMDE_ENABLE_NATIVE_ALIASES") endif() if (SIMDE_NATIVE AND NOT BUILD_SSE2_SIMDE) diff --git a/src/util/arch/x86/crc32.h b/src/util/arch/x86/crc32.h index 61bdbf6f..158bf43b 100644 --- a/src/util/arch/x86/crc32.h +++ b/src/util/arch/x86/crc32.h @@ -30,8 +30,12 @@ #ifndef UTIL_ARCH_X86_CRC32_H_ #define UTIL_ARCH_X86_CRC32_H_ +#if defined(VS_SIMDE_BACKEN) +#include "util/simd_types.h" +#else #include "util/arch/x86/x86.h" #include "util/intrinsics.h" +#endif #ifdef ARCH_64_BIT #define CRC_WORD 8 diff --git a/src/util/simd_types.h b/src/util/simd_types.h index 5290680f..5f7a35e2 100644 --- a/src/util/simd_types.h +++ b/src/util/simd_types.h @@ -39,7 +39,10 @@ #ifndef VECTORSIZE #define VECTORSIZE 16 #endif + +#ifndef SIMDE_ENABLE_NATIVE_ALIASES #define SIMDE_ENABLE_NATIVE_ALIASES +#endif #if !defined(VS_SIMDE_NATIVE) #define SIMDE_NO_NATIVE #endif From d24a2a6bfb270a8ccc2bfe5d28a4baf6787f4d60 Mon Sep 17 00:00:00 2001 From: "G.E." Date: Thu, 25 Jul 2024 22:22:43 +0300 Subject: [PATCH 2/4] typo --- src/util/arch/x86/crc32.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/util/arch/x86/crc32.h b/src/util/arch/x86/crc32.h index 158bf43b..0e4b4dae 100644 --- a/src/util/arch/x86/crc32.h +++ b/src/util/arch/x86/crc32.h @@ -30,7 +30,7 @@ #ifndef UTIL_ARCH_X86_CRC32_H_ #define UTIL_ARCH_X86_CRC32_H_ -#if defined(VS_SIMDE_BACKEN) +#if defined(VS_SIMDE_BACKEND) #include "util/simd_types.h" #else #include "util/arch/x86/x86.h" From bf14820ba135ac99f13365394c2380ef53ace4fa Mon Sep 17 00:00:00 2001 From: "G.E." Date: Fri, 26 Jul 2024 02:55:33 +0300 Subject: [PATCH 3/4] force the alternate crc32 function --- src/crc32.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/crc32.c b/src/crc32.c index ca5b5fed..1d6d09fc 100644 --- a/src/crc32.c +++ b/src/crc32.c @@ -31,7 +31,7 @@ #include "ue2common.h" #include "util/arch.h" -#if !defined(HAVE_SSE42) +#if (!defined(HAVE_SSE42)) || defined(VS_SIMDE_BACKEND) /*** *** What follows is derived from Intel's Slicing-by-8 CRC32 impl, which is BSD @@ -586,7 +586,7 @@ u32 crc32c_sb8_64_bit(u32 running_crc, const unsigned char* p_buf, // Externally visible function u32 Crc32c_ComputeBuf(u32 inCrc32, const void *buf, size_t bufLen) { -#if defined(HAVE_SSE42) +#if defined(HAVE_SSE42) && (!defined(VS_SIMDE_BACKEND)) u32 crc = crc32c_sse42(inCrc32, (const unsigned char *)buf, bufLen); #else u32 crc = crc32c_sb8_64_bit(inCrc32, (const unsigned char *)buf, bufLen); From d538fddd9aa9f815a04234c1115bd34b2876b402 Mon Sep 17 00:00:00 2001 From: "G.E." Date: Fri, 26 Jul 2024 09:37:26 +0300 Subject: [PATCH 4/4] cleaning up some unneccessary bits --- CMakeLists.txt | 16 ++++++++-------- cmake/simde.cmake | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index afa0dddb..928b6cb1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -952,15 +952,15 @@ else () set (DISPATCHER_DEFINE "${DISPATCHER_DEFINE} -DDISABLE_AVX512VBMI_DISPATCH") endif (NOT BUILD_AVX512VBMI) if(BUILD_SSE2_SIMDE) - set (DISPATCHER_DEFINE "${DISPATCHER_DEFINE} -DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2") + set (DISPATCHER_DEFINE "${DISPATCHER_DEFINE} -DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2") endif(BUILD_SSE2_SIMDE) set_source_files_properties(src/dispatcher.c PROPERTIES COMPILE_FLAGS "-Wno-unused-parameter -Wno-unused-function ${DISPATCHER_DEFINE}") if(BUILD_SSE2_SIMDE AND NOT BUILD_AVX2 AND NOT BUILD_AVX512 AND NOT BUILD_AVX512VBMI) set_source_files_properties(src/crc32.c PROPERTIES - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2") + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2") set_source_files_properties(src/hs.cpp PROPERTIES - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2") + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2") string(REGEX REPLACE "-msse4.2" "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") @@ -981,7 +981,7 @@ else () set_target_properties(hs_exec_core2 PROPERTIES string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2" + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 ${CMAKE_MODULE_PATH}/keep.syms.in" ) else() @@ -1049,12 +1049,12 @@ else () set_target_properties(hs_compile PROPERTIES string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2" + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" ) set_target_properties(hs PROPERTIES string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2" + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" ) endif (BUILD_SSE2_SIMDE) @@ -1078,14 +1078,14 @@ else () set_target_properties(hs_exec_shared_core2 PROPERTIES string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2" + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" POSITION_INDEPENDENT_CODE TRUE RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 ${CMAKE_MODULE_PATH}/keep.syms.in" ) set_target_properties(hs_compile_shared PROPERTIES string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") string(REGEX REPLACE "-msse4.2" "-msse2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -DSIMDE_ENABLE_NATIVE_ALIASES -march=core2 -msse2" + COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2" ) else() add_library(hs_exec_shared_core2 OBJECT ${hs_exec_SRCS}) diff --git a/cmake/simde.cmake b/cmake/simde.cmake index 998e858f..9b15e177 100644 --- a/cmake/simde.cmake +++ b/cmake/simde.cmake @@ -26,8 +26,8 @@ if (SIMDE_SSE42_H_FOUND) set(ARCH_C_FLAGS "-msse2") set(ARCH_CXX_FLAGS "-msse2") set(X86_ARCH "x86-64") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DVS_SIMDE_NATIVE -DVS_SIMDE_BACKEND -DSIMDE_ENABLE_NATIVE_ALIASES") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVS_SIMDE_NATIVE -DVS_SIMDE_BACKEND -DSIMDE_ENABLE_NATIVE_ALIASES") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DVS_SIMDE_NATIVE -DVS_SIMDE_BACKEND") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVS_SIMDE_NATIVE -DVS_SIMDE_BACKEND") endif() if (SIMDE_NATIVE AND NOT BUILD_SSE2_SIMDE)