mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
Merge pull request #5 from VectorCamp/bugfix/fix-ia32-build
fix IA32 build, as we need minimum SSSE3 support for compilation to s…
This commit is contained in:
commit
644aac5e1b
@ -30,7 +30,7 @@ else()
|
|||||||
message(STATUS "Build type ${CMAKE_BUILD_TYPE}")
|
message(STATUS "Build type ${CMAKE_BUILD_TYPE}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE MATCHES RELEASE|RELWITHDEBINFO|MINSIZEREL)
|
if(CMAKE_BUILD_TYPE MATCHES NONE|RELEASE|RELWITHDEBINFO|MINSIZEREL)
|
||||||
message(STATUS "using release build")
|
message(STATUS "using release build")
|
||||||
set(RELEASE_BUILD TRUE)
|
set(RELEASE_BUILD TRUE)
|
||||||
else()
|
else()
|
||||||
@ -1193,6 +1193,9 @@ if (NOT FAT_RUNTIME)
|
|||||||
set_target_properties(hs_runtime PROPERTIES LINKER_LANGUAGE C)
|
set_target_properties(hs_runtime PROPERTIES LINKER_LANGUAGE C)
|
||||||
|
|
||||||
add_library(hs_compile OBJECT ${hs_compile_SRCS})
|
add_library(hs_compile OBJECT ${hs_compile_SRCS})
|
||||||
|
if (ARCH_IA32)
|
||||||
|
set_target_properties(hs_compile PROPERTIES COMPILE_FLAGS "-mssse3")
|
||||||
|
endif (ARCH_IA32)
|
||||||
|
|
||||||
add_library(hs STATIC
|
add_library(hs STATIC
|
||||||
src/hs_version.c
|
src/hs_version.c
|
||||||
@ -1259,7 +1262,11 @@ else (FAT_RUNTIME)
|
|||||||
$<TARGET_OBJECTS:hs_exec_common>
|
$<TARGET_OBJECTS:hs_exec_common>
|
||||||
${RUNTIME_LIBS})
|
${RUNTIME_LIBS})
|
||||||
set_target_properties(hs_runtime PROPERTIES LINKER_LANGUAGE C)
|
set_target_properties(hs_runtime PROPERTIES LINKER_LANGUAGE C)
|
||||||
add_library(hs_compile OBJECT ${hs_compile_SRCS})
|
add_library(hs_compile OBJECT ${hs_compile_SRCS})
|
||||||
|
if (ARCH_IA32)
|
||||||
|
set_target_properties(hs_exec_common PROPERTIES COMPILE_FLAGS "-mssse3")
|
||||||
|
set_target_properties(hs_compile PROPERTIES COMPILE_FLAGS "-mssse3")
|
||||||
|
endif (ARCH_IA32)
|
||||||
|
|
||||||
# we want the static lib for testing
|
# we want the static lib for testing
|
||||||
add_library(hs STATIC src/hs_version.c src/hs_valid_platform.c
|
add_library(hs STATIC src/hs_version.c src/hs_valid_platform.c
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
#include "hs_common.h"
|
#include "hs_common.h"
|
||||||
#include "hs_runtime.h"
|
#include "hs_runtime.h"
|
||||||
#include "ue2common.h"
|
#include "ue2common.h"
|
||||||
#if defined(ARCH_X86_64)
|
#if defined(ARCH_IA32) || defined(ARCH_X86_64)
|
||||||
#include "util/arch/x86/cpuid_inline.h"
|
#include "util/arch/x86/cpuid_inline.h"
|
||||||
#endif
|
#endif
|
||||||
#include "util/join.h"
|
#include "util/join.h"
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
#include "parser/unsupported.h"
|
#include "parser/unsupported.h"
|
||||||
#include "util/compile_error.h"
|
#include "util/compile_error.h"
|
||||||
#include "util/arch/common/cpuid_flags.h"
|
#include "util/arch/common/cpuid_flags.h"
|
||||||
#if defined(ARCH_X86_64)
|
#if defined(ARCH_IA32) || defined(ARCH_X86_64)
|
||||||
#include "util/arch/x86/cpuid_inline.h"
|
#include "util/arch/x86/cpuid_inline.h"
|
||||||
#elif defined(ARCH_ARM32) || defined(ARCH_AARCH64)
|
#elif defined(ARCH_ARM32) || defined(ARCH_AARCH64)
|
||||||
#endif
|
#endif
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "hs_common.h"
|
#include "hs_common.h"
|
||||||
#include "ue2common.h"
|
#include "ue2common.h"
|
||||||
#if defined(ARCH_X86_64)
|
#if defined(ARCH_IA32) || defined(ARCH_X86_64)
|
||||||
#include "util/arch/x86/cpuid_inline.h"
|
#include "util/arch/x86/cpuid_inline.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
static really_inline m128 ones128(void) {
|
static really_inline m128 ones128(void) {
|
||||||
#if defined(__GNUC__) || defined(__INTEL_COMPILER)
|
#if defined(__GNUC__) || defined(__INTEL_COMPILER)
|
||||||
/* gcc gets this right */
|
/* gcc gets this right */
|
||||||
return _mm_set1_epi8(0xFF);
|
return (m128) _mm_set1_epi8(0xFF);
|
||||||
#else
|
#else
|
||||||
/* trick from Intel's optimization guide to generate all-ones.
|
/* trick from Intel's optimization guide to generate all-ones.
|
||||||
* ICC converts this to the single cmpeq instruction */
|
* ICC converts this to the single cmpeq instruction */
|
||||||
@ -53,12 +53,12 @@ static really_inline m128 ones128(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static really_inline m128 zeroes128(void) {
|
static really_inline m128 zeroes128(void) {
|
||||||
return _mm_setzero_si128();
|
return (m128) _mm_setzero_si128();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \brief Bitwise not for m128*/
|
/** \brief Bitwise not for m128*/
|
||||||
static really_inline m128 not128(m128 a) {
|
static really_inline m128 not128(m128 a) {
|
||||||
return _mm_xor_si128(a, ones128());
|
return (m128) _mm_xor_si128(a, ones128());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \brief Return 1 if a and b are different otherwise 0 */
|
/** \brief Return 1 if a and b are different otherwise 0 */
|
||||||
@ -125,7 +125,13 @@ static really_inline u32 movd(const m128 in) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static really_inline u64a movq(const m128 in) {
|
static really_inline u64a movq(const m128 in) {
|
||||||
|
#if defined(ARCH_X86_64)
|
||||||
return _mm_cvtsi128_si64(in);
|
return _mm_cvtsi128_si64(in);
|
||||||
|
#else // 32-bit - this is horrific
|
||||||
|
u32 lo = movd(in);
|
||||||
|
u32 hi = movd(_mm_srli_epi64(in, 32));
|
||||||
|
return (u64a)hi << 32 | lo;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* another form of movq */
|
/* another form of movq */
|
||||||
|
@ -33,6 +33,9 @@ SET(corpusomatic_SRCS
|
|||||||
ng_find_matches.cpp
|
ng_find_matches.cpp
|
||||||
)
|
)
|
||||||
add_library(corpusomatic STATIC ${corpusomatic_SRCS})
|
add_library(corpusomatic STATIC ${corpusomatic_SRCS})
|
||||||
|
if (ARCH_IA32)
|
||||||
|
set_target_properties(corpusomatic PROPERTIES COMPILE_FLAGS "-mssse3")
|
||||||
|
endif (ARCH_IA32)
|
||||||
|
|
||||||
set(databaseutil_SRCS
|
set(databaseutil_SRCS
|
||||||
database_util.cpp
|
database_util.cpp
|
||||||
|
Loading…
x
Reference in New Issue
Block a user