From ce13301f7b2e67e0c91a213751107a4beb021b96 Mon Sep 17 00:00:00 2001 From: Verney7 Date: Tue, 15 Jul 2025 15:44:03 +0800 Subject: [PATCH] add sw_64 support --- 0001-oneDNN-2.2.2-add-sw_64-support.patch | 82 +++++++++++++++++++++++ onednn.spec | 9 ++- 2 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 0001-oneDNN-2.2.2-add-sw_64-support.patch diff --git a/0001-oneDNN-2.2.2-add-sw_64-support.patch b/0001-oneDNN-2.2.2-add-sw_64-support.patch new file mode 100644 index 0000000..e7ce9c6 --- /dev/null +++ b/0001-oneDNN-2.2.2-add-sw_64-support.patch @@ -0,0 +1,82 @@ +diff -Nuar oneDNN-2.2/cmake/platform.cmake oneDNN-2.2.sw/cmake/platform.cmake +--- oneDNN-2.2/cmake/platform.cmake 2021-03-31 08:23:06.000000000 +0800 ++++ oneDNN-2.2.sw/cmake/platform.cmake 2025-07-15 14:44:18.813617402 +0800 +@@ -147,6 +147,14 @@ + if (CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) + append(DEF_ARCH_OPT_FLAGS "-march=native") + endif() ++ elseif(DNNL_TARGET_ARCH STREQUAL "SW64") ++ if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") ++ set(DEF_ARCH_OPT_FLAGS "-O3") ++ endif() ++ # For native compilation tune for the host processor ++ if (CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) ++ append(DEF_ARCH_OPT_FLAGS "-march=sw_64") ++ endif() + elseif(DNNL_TARGET_ARCH STREQUAL "X64") + set(DEF_ARCH_OPT_FLAGS "-msse4.1") + endif() +diff -Nuar oneDNN-2.2/CMakeLists.txt oneDNN-2.2.sw/CMakeLists.txt +--- oneDNN-2.2/CMakeLists.txt 2021-03-31 08:23:06.000000000 +0800 ++++ oneDNN-2.2.sw/CMakeLists.txt 2025-07-15 14:46:11.124566785 +0800 +@@ -95,6 +95,8 @@ + set(DNNL_TARGET_ARCH "PPC64") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(s390x.*|S390X.*)") + set(DNNL_TARGET_ARCH "S390X") ++elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(sw_64.*|SW_64.*)") ++ set(DNNL_TARGET_ARCH "SW64") + else() + set(DNNL_TARGET_ARCH "X64") + endif() +diff -Nuar oneDNN-2.2/src/cpu/platform.hpp oneDNN-2.2.sw/src/cpu/platform.hpp +--- oneDNN-2.2/src/cpu/platform.hpp 2021-03-31 08:23:06.000000000 +0800 ++++ oneDNN-2.2.sw/src/cpu/platform.hpp 2025-07-15 14:41:44.752315096 +0800 +@@ -28,11 +28,12 @@ + // - DNNL_AARCH64 + // - DNNL_PPC64 + // - DNNL_S390X ++// - DNNL_SW64 + // - DNNL_ARCH_GENERIC + // Target architecture macro is set to 1, others to 0. All macros are defined. + + #if defined(DNNL_X64) + defined(DNNL_AARCH64) + defined(DNNL_PPC64) \ +- + defined(DNNL_S390X) + defined(DNNL_ARCH_GENERIC) \ ++ + defined(DNNL_S390X) + defined(DNNL_SW64) + defined(DNNL_ARCH_GENERIC) \ + == 0 + #if defined(__x86_64__) || defined(_M_X64) + #define DNNL_X64 1 +@@ -42,13 +43,15 @@ + #define DNNL_PPC64 1 + #elif defined(__s390x__) + #define DNNL_S390X 1 ++#elif defined(__sw_64__) ++#define DNNL_SW64 1 + #else + #define DNNL_ARCH_GENERIC 1 + #endif + #endif // defined(DNNL_X64) + ... == 0 + + #if defined(DNNL_X64) + defined(DNNL_AARCH64) + defined(DNNL_PPC64) \ +- + defined(DNNL_S390X) + defined(DNNL_ARCH_GENERIC) \ ++ + defined(DNNL_S390X) + defined(DNNL_SW64) + defined(DNNL_ARCH_GENERIC) \ + != 1 + #error One and only one architecture should be defined at a time + #endif +@@ -65,6 +68,9 @@ + #if !defined(DNNL_S390X) + #define DNNL_S390X 0 + #endif ++#if !defined(DNNL_SW64) ++#define DNNL_SW64 0 ++#endif + #if !defined(DNNL_ARCH_GENERIC) + #define DNNL_ARCH_GENERIC 0 + #endif +@@ -74,6 +80,7 @@ + #define DNNL_X64_ONLY(...) Z_CONDITIONAL_DO(DNNL_X64, __VA_ARGS__) + #define DNNL_PPC64_ONLY(...) Z_CONDITIONAL_DO(DNNL_PPC64_ONLY, __VA_ARGS__) + #define DNNL_S390X_ONLY(...) Z_CONDITIONAL_DO(DNNL_S390X_ONLY, __VA_ARGS__) ++#define DNNL_SW64_ONLY(...) Z_CONDITIONAL_DO(DNNL_SW64_ONLY, __VA_ARGS__) + #define DNNL_AARCH64_ONLY(...) Z_CONDITIONAL_DO(DNNL_AARCH64, __VA_ARGS__) + + // Using Arm Compute Library kernels is optional for AArch64 builds diff --git a/onednn.spec b/onednn.spec index ee8ffb9..1fb64aa 100644 --- a/onednn.spec +++ b/onednn.spec @@ -2,15 +2,16 @@ Name: onednn Version: 2.2 -Release: 1 +Release: 2 Summary: Deep Neural Network Library License: ASL 2.0 and BSD and Boost and MIT URL: https://github.com/oneapi-src/oneDNN/ Source0: %{url}/archive/v%{version}/onednn-%{version}.tar.gz +Patch0: 0001-oneDNN-2.2.2-add-sw_64-support.patch # This package only work in few arches for now -ExclusiveArch: x86_64 aarch64 ppc64le +ExclusiveArch: x86_64 aarch64 ppc64le sw_64 BuildRequires: make BuildRequires: cmake @@ -97,5 +98,9 @@ rm -rf %{buildroot}%{_docdir}/dnnl %changelog +* Tue Jul 15 2025 Verney7 - 2.2-2 +- Add sw_64 support. + * Tue Sep 20 2022 baihuawei - 2.2-1 - Update version. + -- Gitee