mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-06-28 16:41:01 +03:00
Revert cmake_minimum_required and PCRE_REQUIRED_MINOR_VERSION change.
Move ARCH_C_FLAGS and ARCH_CXX_FLAGS to LoongArch respective cmake file. Move vpmax_loongarch to loongarch64/simd_utils.h.
This commit is contained in:
parent
6255055df5
commit
5ae6ca7275
@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required (VERSION 3.13.4)
|
cmake_minimum_required (VERSION 3.18.4)
|
||||||
|
|
||||||
project (vectorscan C CXX)
|
project (vectorscan C CXX)
|
||||||
|
|
||||||
@ -162,11 +162,6 @@ foreach (CONFIG ${CMAKE_BUILD_TYPE} ${CMAKE_CONFIGURATION_TYPES})
|
|||||||
string(REGEX REPLACE "-O[^ ]*" "" CMAKE_CXX_FLAGS_${CONFIG} "${CMAKE_CXX_FLAGS_${CONFIG}}")
|
string(REGEX REPLACE "-O[^ ]*" "" CMAKE_CXX_FLAGS_${CONFIG} "${CMAKE_CXX_FLAGS_${CONFIG}}")
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
||||||
if (ARCH_LOONGARCH64)
|
|
||||||
set(ARCH_C_FLAGS "-mlsx")
|
|
||||||
set(ARCH_CXX_FLAGS "-mlsx")
|
|
||||||
endif(ARCH_LOONGARCH64)
|
|
||||||
|
|
||||||
message(STATUS "ARCH_C_FLAGS : ${ARCH_C_FLAGS}")
|
message(STATUS "ARCH_C_FLAGS : ${ARCH_C_FLAGS}")
|
||||||
message(STATUS "ARCH_CXX_FLAGS : ${ARCH_CXX_FLAGS}")
|
message(STATUS "ARCH_CXX_FLAGS : ${ARCH_CXX_FLAGS}")
|
||||||
|
|
||||||
@ -193,7 +188,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARCH_CXX_FLAGS}")
|
|||||||
# PCRE check, we have a fixed requirement for PCRE to use Chimera
|
# PCRE check, we have a fixed requirement for PCRE to use Chimera
|
||||||
# and hscollider
|
# and hscollider
|
||||||
set(PCRE_REQUIRED_MAJOR_VERSION 8)
|
set(PCRE_REQUIRED_MAJOR_VERSION 8)
|
||||||
set(PCRE_REQUIRED_MINOR_VERSION 39)
|
set(PCRE_REQUIRED_MINOR_VERSION 41)
|
||||||
set(PCRE_REQUIRED_VERSION ${PCRE_REQUIRED_MAJOR_VERSION}.${PCRE_REQUIRED_MINOR_VERSION})
|
set(PCRE_REQUIRED_VERSION ${PCRE_REQUIRED_MAJOR_VERSION}.${PCRE_REQUIRED_MINOR_VERSION})
|
||||||
include (${CMAKE_MODULE_PATH}/pcre.cmake)
|
include (${CMAKE_MODULE_PATH}/pcre.cmake)
|
||||||
if (NOT CORRECT_PCRE_VERSION)
|
if (NOT CORRECT_PCRE_VERSION)
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
CHECK_INCLUDE_FILE_CXX(lsxintrin.h HAVE_C_LOONGARCH64_LSXINTRIN_H)
|
CHECK_INCLUDE_FILE_CXX(lsxintrin.h HAVE_C_LOONGARCH64_LSXINTRIN_H)
|
||||||
|
|
||||||
if (HAVE_C_LOONGARCH64_LSXINTRIN_H)
|
if (HAVE_C_LOONGARCH64_LSXINTRIN_H)
|
||||||
@ -7,7 +6,10 @@ else()
|
|||||||
message (FATAL_ERROR "No intrinsics header found for LSX")
|
message (FATAL_ERROR "No intrinsics header found for LSX")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(CMAKE_REQUIRED_FLAGS "-mlsx")
|
set(ARCH_C_FLAGS "-mlsx")
|
||||||
|
set(ARCH_CXX_FLAGS "-mlsx")
|
||||||
|
|
||||||
|
set(CMAKE_REQUIRED_FLAGS "${ARCH_C_FLAGS}")
|
||||||
CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H}>
|
CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H}>
|
||||||
int main() {
|
int main() {
|
||||||
__m128i a = __lsx_vreplgr2vr_w(1);
|
__m128i a = __lsx_vreplgr2vr_w(1);
|
||||||
|
@ -28,24 +28,6 @@
|
|||||||
* POSSIBILITY OF SUCH DAMAGE.
|
* POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static really_inline m128 vpmax_loongarch(v4u32 a, v4u32 b) {
|
|
||||||
u32 result[4];
|
|
||||||
u32 tmp1 = __lsx_vpickve2gr_wu(a, 0);
|
|
||||||
u32 tmp2 = __lsx_vpickve2gr_wu(a, 1);
|
|
||||||
result[0] = (tmp1 >= tmp2) ? tmp1 : tmp2;
|
|
||||||
tmp1 = __lsx_vpickve2gr_wu(a, 2);
|
|
||||||
tmp2 = __lsx_vpickve2gr_wu(a, 3);
|
|
||||||
result[1] = (tmp1 >= tmp2) ? tmp1 : tmp2;
|
|
||||||
tmp1 = __lsx_vpickve2gr_wu(b, 0);
|
|
||||||
tmp2 = __lsx_vpickve2gr_wu(b, 1);
|
|
||||||
result[2] = (tmp1 >= tmp2) ? tmp1 : tmp2;
|
|
||||||
tmp1 = __lsx_vpickve2gr_wu(b, 2);
|
|
||||||
tmp2 = __lsx_vpickve2gr_wu(b, 3);
|
|
||||||
result[3] = (tmp1 >= tmp2) ? tmp1 : tmp2;
|
|
||||||
v4u32 res = __lsx_vld((uint32_t *)result, 0);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
really_really_inline
|
really_really_inline
|
||||||
const u8 *first_non_zero_match<16>(const u8 *buf, SuperVector<16> mask, u16 const UNUSED len) {
|
const u8 *first_non_zero_match<16>(const u8 *buf, SuperVector<16> mask, u16 const UNUSED len) {
|
||||||
|
@ -45,6 +45,24 @@
|
|||||||
|
|
||||||
#include <string.h> // for memcpy
|
#include <string.h> // for memcpy
|
||||||
|
|
||||||
|
static really_inline m128 vpmax_loongarch(v4u32 a, v4u32 b) {
|
||||||
|
u32 result[4];
|
||||||
|
u32 tmp1 = __lsx_vpickve2gr_wu(a, 0);
|
||||||
|
u32 tmp2 = __lsx_vpickve2gr_wu(a, 1);
|
||||||
|
result[0] = (tmp1 >= tmp2) ? tmp1 : tmp2;
|
||||||
|
tmp1 = __lsx_vpickve2gr_wu(a, 2);
|
||||||
|
tmp2 = __lsx_vpickve2gr_wu(a, 3);
|
||||||
|
result[1] = (tmp1 >= tmp2) ? tmp1 : tmp2;
|
||||||
|
tmp1 = __lsx_vpickve2gr_wu(b, 0);
|
||||||
|
tmp2 = __lsx_vpickve2gr_wu(b, 1);
|
||||||
|
result[2] = (tmp1 >= tmp2) ? tmp1 : tmp2;
|
||||||
|
tmp1 = __lsx_vpickve2gr_wu(b, 2);
|
||||||
|
tmp2 = __lsx_vpickve2gr_wu(b, 3);
|
||||||
|
result[3] = (tmp1 >= tmp2) ? tmp1 : tmp2;
|
||||||
|
v4u32 res = __lsx_vld((uint32_t *)result, 0);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
static really_inline m128 ones128(void) {
|
static really_inline m128 ones128(void) {
|
||||||
return __lsx_vreplgr2vr_b(0xFF);
|
return __lsx_vreplgr2vr_b(0xFF);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user