mirror of
https://github.com/mborgerding/kissfft.git
synced 2026-05-25 13:08:42 -04:00
loongarch: add lsx simd opt
This commit is contained in:
@@ -109,6 +109,21 @@ if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU)$" AND NOT CMAKE_CROSSCOMPILI
|
||||
include(GNUInstallDirs)
|
||||
endif()
|
||||
|
||||
include(CheckCXXSourceCompiles)
|
||||
|
||||
if (CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch32|loongarch64")
|
||||
set (CMAKE_REQUIRED_FLAGS -mlsx)
|
||||
check_cxx_source_compiles(
|
||||
"int main() {
|
||||
#if !defined(__loongarch_sx)
|
||||
static_assert(false, \"__loongarch_sx is not defined\");
|
||||
#endif
|
||||
return 0;
|
||||
}"
|
||||
COMPILER_SUPPORT_LSX_FLAG
|
||||
)
|
||||
endif()
|
||||
|
||||
#
|
||||
# Declare PKGINCLUDEDIR for kissfft include path
|
||||
#
|
||||
@@ -167,7 +182,10 @@ else()
|
||||
|
||||
if(KISSFFT_DATATYPE MATCHES "^simd$")
|
||||
list(APPEND KISSFFT_COMPILE_DEFINITIONS USE_SIMD)
|
||||
if (NOT MSVC)
|
||||
if(COMPILER_SUPPORT_LSX_FLAG)
|
||||
list(APPEND KISSFFT_COMPILE_DEFINITIONS HAVE_LSX)
|
||||
target_compile_options(kissfft PRIVATE -mlsx)
|
||||
elseif(NOT MSVC)
|
||||
target_compile_options(kissfft PRIVATE -msse)
|
||||
else()
|
||||
target_compile_options(kissfft PRIVATE "/arch:SSE")
|
||||
@@ -262,6 +280,10 @@ function(add_kissfft_executable NAME)
|
||||
target_link_libraries(${NAME} PRIVATE m)
|
||||
endif()
|
||||
|
||||
if(COMPILER_SUPPORT_LSX_FLAG)
|
||||
target_compile_options(${NAME} PRIVATE -mlsx)
|
||||
endif()
|
||||
|
||||
if (NOT KISSFFT_OPENMP)
|
||||
set_target_properties(${NAME} PROPERTIES
|
||||
OUTPUT_NAME "${NAME}-${KISSFFT_DATATYPE}")
|
||||
@@ -329,7 +351,9 @@ if (KISSFFT_PKGCONFIG)
|
||||
join_paths(PKGCONFIG_KISSFFT_INCLUDEDIR "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
if(KISSFFT_DATATYPE MATCHES "^simd$")
|
||||
list(APPEND KISSFFT_COMPILE_DEFINITIONS USE_SIMD)
|
||||
if (NOT MSVC)
|
||||
if(COMPILER_SUPPORT_LSX_FLAG)
|
||||
set(PKG_KISSFFT_DEFS "${PKG_KISSFFT_DEFS} -mlsx")
|
||||
elseif(NOT MSVC)
|
||||
set(PKG_KISSFFT_DEFS "${PKG_KISSFFT_DEFS} -msse")
|
||||
else()
|
||||
set(PKG_KISSFFT_DEFS "${PKG_KISSFFT_DEFS} /ARCH:SSE")
|
||||
|
||||
Reference in New Issue
Block a user