Skip to content

Commit 2fee943

Browse files
authored
Add CMake build support for IBM Z (#5440)
* Add ZARCH support, including DYNAMIC_ARCH
1 parent 90f6dd4 commit 2fee943

File tree

6 files changed

+31
-2
lines changed

6 files changed

+31
-2
lines changed

Jenkinsfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,10 @@ pipeline {
1010
sh 'make clean && make'
1111
}
1212
}
13+
stage('CMakeBuild') {
14+
steps {
15+
sh 'sudo apt update && sudo apt install cmake -y && make clean && rm -rf build && mkdir build && cd build && cmake -DDYNAMIC_ARCH=1 .. && make'
16+
}
17+
}
1318
}
1419
}

cmake/arch.cmake

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,13 @@ if (DYNAMIC_ARCH)
9494
set(DYNAMIC_CORE PRESCOTT ${DYNAMIC_LIST})
9595
endif ()
9696
endif ()
97-
97+
98+
if (ZARCH)
99+
set(DYNAMIC_CORE Z13 Z14 ZARCH_GENERIC)
100+
set(DYN_Z13 1)
101+
set(DYN_Z14 1)
102+
endif ()
103+
98104
if (LOONGARCH64)
99105
set(DYNAMIC_CORE LA64_GENERIC LA264 LA464)
100106
endif ()

cmake/cc.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "LS
8686
set(BINARY_DEFINED 1)
8787
endif ()
8888

89+
if (ZARCH)
90+
set (BINARY_DEFINED 1)
91+
endif ()
92+
8993
if (CMAKE_SYSTEM_NAME STREQUAL "AIX")
9094
set(BINARY_DEFINED 1)
9195
endif ()

cmake/system.cmake

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,13 @@ if (DEFINED TARGET)
316316
set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math")
317317
endif()
318318

319+
if (${TARGET} STREQUAL Z13)
320+
set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=z13 -mzvector")
321+
endif()
322+
if (${TARGET} STREQUAL Z14)
323+
set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -march=z14 -mzvector")
324+
endif()
325+
319326
if (${TARGET} STREQUAL NEOVERSEV1)
320327
if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI" AND NOT NO_SVE)
321328
set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -Msve_intrinsics -march=armv8.4-a+sve+bf16 -mtune=neoverse-v1")
@@ -485,7 +492,7 @@ if (SMALL_MATRIX_OPT)
485492
endif ()
486493

487494
if (DYNAMIC_ARCH)
488-
if (X86 OR X86_64 OR ARM64 OR POWER OR RISCV64 OR LOONGARCH64)
495+
if (X86 OR X86_64 OR ARM64 OR POWER OR RISCV64 OR LOONGARCH64 OR ZARCH)
489496
set(CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_ARCH")
490497
if (DYNAMIC_OLDER)
491498
set(CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_OLDER")

cmake/system_check.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64.*")
5050
set(LOONGARCH64 1)
5151
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64.*")
5252
set(RISCV64 1)
53+
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "s390.*")
54+
set(ZARCH 1)
55+
set(BINARY 64)
5356
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*" OR (CMAKE_SYSTEM_NAME MATCHES "Darwin" AND CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*"))
5457
if (NOT BINARY)
5558
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
@@ -100,6 +103,8 @@ elseif(X86)
100103
set(ARCH "x86")
101104
elseif(POWER)
102105
set(ARCH "power")
106+
elseif(ZARCH)
107+
set(ARCH "zarch")
103108
elseif(MIPS32)
104109
set(ARCH "mips")
105110
elseif(MIPS64)

driver/others/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ if (DYNAMIC_ARCH)
5252
list(APPEND COMMON_SOURCES dynamic_arm64.c)
5353
elseif (POWER)
5454
list(APPEND COMMON_SOURCES dynamic_power.c)
55+
elseif (ZARCH)
56+
list(APPEND COMMON_SOURCES dynamic_zarch.c)
5557
elseif (RISCV64)
5658
list(APPEND COMMON_SOURCES dynamic_riscv64.c detect_riscv64.c)
5759
elseif (LOONGARCH64)

0 commit comments

Comments
 (0)