loongarch: add lsx simd opt

This commit is contained in:
yuanhecai
2025-08-26 14:21:45 +08:00
parent 9feadb98a9
commit c94458d8f2
11 changed files with 135 additions and 7 deletions

View File

@@ -72,6 +72,11 @@ ifneq ($(MAKECMDGOALS),clean)
ifeq ($(_UNAME_ARCH),x86_64)
CANDIDATE_LIBDIR_NAME = lib64
endif
ifeq ($(_UNAME_ARCH),loongarch64)
CANDIDATE_LIBDIR_NAME = lib64
HAVE_LSX=lsx
export HAVE_LSX
endif
endif
endif
@@ -127,7 +132,11 @@ ifeq "$(KISSFFT_DATATYPE)" "int32_t"
else ifeq "$(KISSFFT_DATATYPE)" "int16_t"
TYPEFLAGS += -DFIXED_POINT=16
else ifeq "$(KISSFFT_DATATYPE)" "simd"
ifeq "$(HAVE_LSX)" "lsx"
TYPEFLAGS += -DUSE_SIMD=1 -DHAVE_LSX=1 -mlsx
else
TYPEFLAGS += -DUSE_SIMD=1 -msse
endif
else ifeq "$(KISSFFT_DATATYPE)" "float"
TYPEFLAGS += -Dkiss_fft_scalar=$(KISSFFT_DATATYPE)
else ifeq "$(KISSFFT_DATATYPE)" "double"
@@ -273,21 +282,33 @@ testall:
$(MAKE) KISSFFT_DATATYPE=int16_t testsingle
# The simd and int32_t types may or may not work on your machine
$(MAKE) KISSFFT_DATATYPE=int32_t testsingle
$(MAKE) KISSFFT_DATATYPE=simd testsingle
@if [ "$(HAVE_LSX)" = "lsx" ]; then \
$(MAKE) KISSFFT_DATATYPE=simd HAVE_LSX=lsx testsingle; \
else \
$(MAKE) KISSFFT_DATATYPE=simd testsingle; \
fi
# Static libraries
$(MAKE) KISSFFT_DATATYPE=double KISSFFT_STATIC=1 testsingle
$(MAKE) KISSFFT_DATATYPE=float KISSFFT_STATIC=1 testsingle
$(MAKE) KISSFFT_DATATYPE=int16_t KISSFFT_STATIC=1 testsingle
# The simd and int32_t types may or may not work on your machine
$(MAKE) KISSFFT_DATATYPE=int32_t KISSFFT_STATIC=1 testsingle
$(MAKE) KISSFFT_DATATYPE=simd KISSFFT_STATIC=1 testsingle
@if [ "$(HAVE_LSX)" = "lsx" ]; then \
$(MAKE) KISSFFT_DATATYPE=simd HAVE_LSX=lsx KISSFFT_STATIC=1 testsingle; \
else \
$(MAKE) KISSFFT_DATATYPE=simd KISSFFT_STATIC=1 testsingle; \
fi
# OpenMP libraries
$(MAKE) KISSFFT_DATATYPE=double KISSFFT_OPENMP=1 testsingle
$(MAKE) KISSFFT_DATATYPE=float KISSFFT_OPENMP=1 testsingle
$(MAKE) KISSFFT_DATATYPE=int16_t KISSFFT_OPENMP=1 testsingle
# The simd and int32_t types may or may not work on your machine
$(MAKE) KISSFFT_DATATYPE=int32_t KISSFFT_OPENMP=1 testsingle
$(MAKE) KISSFFT_DATATYPE=simd KISSFFT_OPENMP=1 testsingle
@if [ "$(HAVE_LSX)" = "lsx" ]; then \
$(MAKE) KISSFFT_DATATYPE=simd HAVE_LSX=lsx KISSFFT_OPENMP=1 testsingle; \
else \
$(MAKE) KISSFFT_DATATYPE=simd KISSFFT_OPENMP=1 testsingle; \
fi
$(warning All tests passed!)
#