mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-11-15 17:02:14 +03:00
build/run on machines that only have SSE2 with SIMDE (#303)
This allows the use of SIMDE library to emulate SSSE3/SSE4.2 instructions on SSE2-only (x86-64-v2) hardware. --------- Co-authored-by: G.E <gregory.economou@vectorcamp.gr> Co-authored-by: Konstantinos Margaritis <konstantinos@vectorcamp.gr>
This commit is contained in:
@@ -129,6 +129,10 @@ include (${CMAKE_MODULE_PATH}/platform.cmake)
|
||||
# Detect OS and if Fat Runtime is available
|
||||
include (${CMAKE_MODULE_PATH}/osdetection.cmake)
|
||||
|
||||
if(ARCH_X86_64 AND BUILD_SSE2_SIMDE AND NOT FAT_RUNTIME)
|
||||
set(SIMDE_BACKEND True)
|
||||
endif()
|
||||
|
||||
if(SIMDE_BACKEND)
|
||||
include (${CMAKE_MODULE_PATH}/simde.cmake)
|
||||
elseif (ARCH_IA32 OR ARCH_X86_64)
|
||||
@@ -947,16 +951,36 @@ else ()
|
||||
if (NOT BUILD_AVX512VBMI)
|
||||
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")
|
||||
endif(BUILD_SSE2_SIMDE)
|
||||
set_source_files_properties(src/dispatcher.c PROPERTIES
|
||||
COMPILE_FLAGS "-Wno-unused-parameter -Wno-unused-function ${DISPATCHER_DEFINE}")
|
||||
|
||||
if (BUILD_STATIC_LIBS)
|
||||
add_library(hs_exec_core2 OBJECT ${hs_exec_SRCS})
|
||||
list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_core2>)
|
||||
set_target_properties(hs_exec_core2 PROPERTIES
|
||||
COMPILE_FLAGS "-march=core2 -msse4.2"
|
||||
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 ${CMAKE_MODULE_PATH}/keep.syms.in"
|
||||
)
|
||||
|
||||
if (BUILD_SSE2_SIMDE)
|
||||
add_library(hs_exec_core2 OBJECT ${hs_exec_SRCS})
|
||||
list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_core2>)
|
||||
message("Building SIMDE SSE2 version..")
|
||||
include_directories(${PROJECT_SOURCE_DIR}/simde)
|
||||
if (CMAKE_COMPILER_IS_CLANG)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSIMDE_NO_CHECK_IMMEDIATE_CONSTANT")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSIMDE_NO_CHECK_IMMEDIATE_CONSTANT")
|
||||
endif()
|
||||
|
||||
set_target_properties(hs_exec_core2 PROPERTIES
|
||||
COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2"
|
||||
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 ${CMAKE_MODULE_PATH}/keep.syms.in"
|
||||
)
|
||||
else()
|
||||
add_library(hs_exec_core2 OBJECT ${hs_exec_SRCS})
|
||||
list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_core2>)
|
||||
set_target_properties(hs_exec_core2 PROPERTIES
|
||||
COMPILE_FLAGS "-march=core2 -msse4.2"
|
||||
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 ${CMAKE_MODULE_PATH}/keep.syms.in"
|
||||
)
|
||||
endif(BUILD_SSE2_SIMDE)
|
||||
|
||||
add_library(hs_exec_corei7 OBJECT ${hs_exec_SRCS})
|
||||
list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_corei7>)
|
||||
@@ -1015,13 +1039,32 @@ else ()
|
||||
# build shared libs
|
||||
add_library(hs_compile_shared OBJECT ${hs_compile_SRCS})
|
||||
set_target_properties(hs_compile_shared PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
add_library(hs_exec_shared_core2 OBJECT ${hs_exec_SRCS})
|
||||
list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_core2>)
|
||||
set_target_properties(hs_exec_shared_core2 PROPERTIES
|
||||
COMPILE_FLAGS "-march=core2 -msse4.2"
|
||||
POSITION_INDEPENDENT_CODE TRUE
|
||||
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 ${CMAKE_MODULE_PATH}/keep.syms.in"
|
||||
)
|
||||
|
||||
if (BUILD_SSE2_SIMDE)
|
||||
message("Building SIMDE SSE2 version..")
|
||||
add_library(hs_exec_shared_core2 OBJECT ${hs_exec_SRCS})
|
||||
list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_core2>)
|
||||
|
||||
include_directories(${PROJECT_SOURCE_DIR}/simde)
|
||||
if (CMAKE_COMPILER_IS_CLANG)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSIMDE_NO_CHECK_IMMEDIATE_CONSTANT")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSIMDE_NO_CHECK_IMMEDIATE_CONSTANT")
|
||||
endif()
|
||||
set_target_properties(hs_exec_shared_core2 PROPERTIES
|
||||
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"
|
||||
)
|
||||
else()
|
||||
add_library(hs_exec_shared_core2 OBJECT ${hs_exec_SRCS})
|
||||
list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_core2>)
|
||||
set_target_properties(hs_exec_shared_core2 PROPERTIES
|
||||
COMPILE_FLAGS "-march=core2 -msse4.2"
|
||||
POSITION_INDEPENDENT_CODE TRUE
|
||||
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} core2 ${CMAKE_MODULE_PATH}/keep.syms.in"
|
||||
)
|
||||
endif (BUILD_SSE2_SIMDE)
|
||||
|
||||
add_library(hs_exec_shared_corei7 OBJECT ${hs_exec_SRCS})
|
||||
list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_corei7>)
|
||||
set_target_properties(hs_exec_shared_corei7 PROPERTIES
|
||||
|
||||
Reference in New Issue
Block a user