@@ -42,6 +42,9 @@ if (DEFINED BINARY AND DEFINED TARGET AND BINARY EQUAL 32)
4242 if (${TARGET} STREQUAL "ARMV8" OR ${TARGET} STREQUAL "CORTEXA57" OR ${TARGET} STREQUAL "CORTEXA53" OR ${TARGET} STREQUAL "CORTEXA55" )
4343 set (TARGET "ARMV7" )
4444 endif ()
45+ if (${TARGET} STREQUAL "POWER8" OR ${TARGET} STREQUAL "POWER9" OR ${TARGET} STREQUAL "POWER10" )
46+ set (TARGET "POWER6" )
47+ endif ()
4548endif ()
4649
4750
@@ -102,6 +105,18 @@ if (CMAKE_C_COMPILER STREQUAL loongcc)
102105 set (GETARCH_FLAGS "${GETARCH_FLAGS} -static" )
103106endif ()
104107
108+ if (POWER)
109+ set (NO_WARMUP 1)
110+ set (HAVE_GAS 1)
111+ if (CMAKE_ASM_COMPILER_ID STREQUAL "GNU" )
112+ set (HAVE_GAS 0)
113+ elseif (CMAKE_ASM_COMPILER_ID STREQUAL "Clang" )
114+ set (CCOMMON_OPT "${CCOMMON_OPT} -fno-integrated-as" )
115+ set (HAVE_GAS 0)
116+ endif ()
117+ set (GETARCH_FLAGS "${GETARCH_FLAGS} -DHAVE_GAS=${HAVE_GAS} " )
118+ endif ()
119+
105120#if don't use Fortran, it will only compile CBLAS.
106121if (ONLY_CBLAS)
107122 set (NO_LAPACK 1)
@@ -222,6 +237,27 @@ if (DEFINED TARGET)
222237 if (DEFINED HAVE_SSE4_1)
223238 set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -msse4.1" )
224239 endif ()
240+
241+ if (${TARGET} STREQUAL POWER10)
242+ execute_process (COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION )
243+ if (${GCC_VERSION} VERSION_GREATER 10.2 OR ${GCC_VERSION} VERSION_EQUAL 10.2)
244+ set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mcpu=power10 -mtune=power10 -mvsx -fno-fast-math" )
245+ else ()
246+ message (FATAL_ERROR "Compiler GCC.${GCC_VERSION} does not support Power10." )
247+ endif ()
248+ endif ()
249+ if (${TARGET} STREQUAL POWER9)
250+ execute_process (COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION )
251+ if (${GCC_VERSION} VERSION_GREATER 5.0 OR ${GCC_VERSION} VERSION_EQUAL 5.0)
252+ set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mcpu=power9 -mtune=power9 -mvsx -fno-fast-math" )
253+ else ()
254+ set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math" )
255+ message (WARNING "Compiler GCC.${GCC_VERSION} does not support fully Power9." )
256+ endif ()
257+ endif ()
258+ if (${TARGET} STREQUAL POWER8)
259+ set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math" )
260+ endif ()
225261endif ()
226262if (DEFINED BINARY)
227263 message (STATUS "Compiling a ${BINARY} -bit binary." )
@@ -279,15 +315,15 @@ if (NEED_PIC)
279315 endif ()
280316endif ()
281317
282- if (X86_64)
318+ if (X86_64 OR ${CORE} STREQUAL POWER10 )
283319 set (SMALL_MATRIX_OPT TRUE )
284320endif ()
285321if (SMALL_MATRIX_OPT)
286322 set (CCOMMON_OPT "${CCOMMON_OPT} -DSMALL_MATRIX_OPT" )
287323endif ()
288324
289325if (DYNAMIC_ARCH)
290- if (X86 OR X86_64 OR ARM64 OR PPC )
326+ if (X86 OR X86_64 OR ARM64 OR POWER )
291327 set (CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_ARCH" )
292328 if (DYNAMIC_OLDER)
293329 set (CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_OLDER" )
0 commit comments