Package: sleef
Version: 3.6.1
Severity: wishlist
Tags: patch
User: [email protected]
Usertags: loong64
Dear maintainer,
I applied the upstream patch and verified it locally. I know this is not
the complete patch to add loong64 architecture support, but it is the
first step to add loong64 architecture support. Couldyou consider
applying it in debian?
The attachment is a patch I made locally, which has been verified and
can be used for reference.
Upstream PR link:https://github.com/shibatch/sleef/pull/672/files
If you have any questions or suggestions, you can contact me at any time.
thanks,
Xiaojuan Zhai
Description: add loong64 initial support
--- sleef-3.6.1.orig/Configure.cmake
+++ sleef-3.6.1/Configure.cmake
@@ -137,6 +137,8 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "s
set(CLANG_FLAGS_ENABLE_PURECFMA_SCALAR "-march=z14;-mzvector")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64")
set(SLEEF_ARCH_RISCV64 ON CACHE INTERNAL "True for RISCV64 architecture.")
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
+ set(SLEEF_ARCH_LOONGARCH64 ON CACHE INTERNAL "True for LoongArch64 architecture.")
endif()
set(COMPILER_SUPPORTS_PUREC_SCALAR 1)
--- sleef-3.6.1.orig/src/arch/helperpurec_scalar.h
+++ sleef-3.6.1/src/arch/helperpurec_scalar.h
@@ -54,7 +54,7 @@
#define ENABLE_FMA_SP
//@#define ENABLE_FMA_SP
-#if defined(__AVX2__) || defined(__aarch64__) || defined(__arm__) || defined(__powerpc64__) || defined(__zarch__) || defined(__riscv) || CONFIG == 3
+#if defined(__AVX2__) || defined(__aarch64__) || defined(__arm__) || defined(__powerpc64__) || defined(__zarch__) || defined(__riscv) || defined(__loongarch64) || CONFIG == 3
#ifndef FP_FAST_FMA
//@#ifndef FP_FAST_FMA
#define FP_FAST_FMA
--- sleef-3.6.1.orig/src/libm-tester/CMakeLists.txt
+++ sleef-3.6.1/src/libm-tester/CMakeLists.txt
@@ -55,6 +55,9 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "s
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64")
set(TEST3_CINZ purec_scalar rvvm1nofma rvvm2nofma)
set(TEST3_FINZ purecfma_scalar rvvm1 rvvm2)
+elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64")
+ set(TEST3_CINZ purec_scalar)
+ set(TEST3_FINZ purecfma_scalar)
endif()
#
--- sleef-3.6.1.orig/src/libm/CMakeLists.txt
+++ sleef-3.6.1/src/libm/CMakeLists.txt
@@ -69,6 +69,12 @@ elseif(SLEEF_ARCH_RISCV64)
PUREC_SCALAR
PURECFMA_SCALAR
)
+elseif(SLEEF_ARCH_LOONGARCH64)
+ set(SLEEF_HEADER_LIST
+ PUREC_SCALAR
+ PURECFMA_SCALAR
+ DSP_SCALAR
+ )
endif()
# HEADER_PARAMS
--- sleef-3.6.1.orig/src/libm/sleeflibm_header.h.org.in
+++ sleef-3.6.1/src/libm/sleeflibm_header.h.org.in
@@ -21,7 +21,7 @@
#define SLEEF_INLINE __forceinline
#endif
-#if defined(__AVX2__) || defined(__aarch64__) || defined(__arm__) || defined(__powerpc64__) || defined(__zarch__)
+#if defined(__AVX2__) || defined(__aarch64__) || defined(__arm__) || defined(__powerpc64__) || defined(__zarch__) || defined(__loongarch64)
#ifndef FP_FAST_FMA
#define FP_FAST_FMA
#endif
--- sleef-3.6.1.orig/src/quad/CMakeLists.txt
+++ sleef-3.6.1/src/quad/CMakeLists.txt
@@ -93,6 +93,12 @@ elseif(SLEEF_ARCH_RISCV64)
PURECFMA_SCALAR
DSPSCALAR
)
+elseif(SLEEF_ARCH_LOONGARCH64)
+ set(SLEEF_HEADER_LIST
+ PUREC_SCALAR
+ PURECFMA_SCALAR
+ DSPSCALAR
+ )
endif()
#