@@ -42,6 +42,9 @@ if (DEFINED BINARY AND DEFINED TARGET AND BINARY EQUAL 32)
42
42
if (${TARGET} STREQUAL "ARMV8" OR ${TARGET} STREQUAL "CORTEXA57" OR ${TARGET} STREQUAL "CORTEXA53" OR ${TARGET} STREQUAL "CORTEXA55" )
43
43
set (TARGET "ARMV7" )
44
44
endif ()
45
+ if (${TARGET} STREQUAL "POWER8" OR ${TARGET} STREQUAL "POWER9" OR ${TARGET} STREQUAL "POWER10" )
46
+ set (TARGET "POWER6" )
47
+ endif ()
45
48
endif ()
46
49
47
50
@@ -102,6 +105,12 @@ if (CMAKE_C_COMPILER STREQUAL loongcc)
102
105
set (GETARCH_FLAGS "${GETARCH_FLAGS} -static" )
103
106
endif ()
104
107
108
+ if (POWER )
109
+ set (NO_WARMUP 1 )
110
+ execute_process (COMMAND bash -c "as -v < /dev/null 2>&1 | grep GNU 2>&1 >/dev/null" RESULT_VARIABLE HAVE_GAS )
111
+ set (GETARCH_FLAGS "${GETARCH_FLAGS} -DHAVE_GAS=${HAVE_GAS} " )
112
+ endif ()
113
+
105
114
#if don't use Fortran, it will only compile CBLAS.
106
115
if (ONLY_CBLAS )
107
116
set (NO_LAPACK 1 )
@@ -222,6 +231,27 @@ if (DEFINED TARGET)
222
231
if (DEFINED HAVE_SSE4_1 )
223
232
set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -msse4.1" )
224
233
endif ()
234
+
235
+ if (${TARGET} STREQUAL POWER10 )
236
+ execute_process (COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION )
237
+ if (${GCC_VERSION} VERSION_GREATER 10.2 OR ${GCC_VERSION} VERSION_EQUAL 10.2 )
238
+ set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mcpu=power10 -mtune=power10 -mvsx -fno-fast-math" )
239
+ else ()
240
+ message (FATAL_ERROR "Compiler GCC.${GCC_VERSION} does not support Power10." )
241
+ endif ()
242
+ endif ()
243
+ if (${TARGET} STREQUAL POWER9 )
244
+ execute_process (COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION )
245
+ if (${GCC_VERSION} VERSION_GREATER 5.0 OR ${GCC_VERSION} VERSION_EQUAL 5.0 )
246
+ set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mcpu=power9 -mtune=power9 -mvsx -fno-fast-math" )
247
+ else ()
248
+ set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math" )
249
+ message (WARNING "Compiler GCC.${GCC_VERSION} does not support fully Power9." )
250
+ endif ()
251
+ endif ()
252
+ if (${TARGET} STREQUAL POWER8 )
253
+ set (KERNEL_DEFINITIONS "${KERNEL_DEFINITIONS} -mcpu=power8 -mtune=power8 -mvsx -fno-fast-math" )
254
+ endif ()
225
255
endif ()
226
256
if (DEFINED BINARY )
227
257
message (STATUS "Compiling a ${BINARY} -bit binary." )
@@ -279,15 +309,15 @@ if (NEED_PIC)
279
309
endif ()
280
310
endif ()
281
311
282
- if (X86_64 )
312
+ if (X86_64 OR ${CORE} STREQUAL POWER10 )
283
313
set (SMALL_MATRIX_OPT TRUE )
284
314
endif ()
285
315
if (SMALL_MATRIX_OPT )
286
316
set (CCOMMON_OPT "${CCOMMON_OPT} -DSMALL_MATRIX_OPT" )
287
317
endif ()
288
318
289
319
if (DYNAMIC_ARCH )
290
- if (X86 OR X86_64 OR ARM64 OR PPC )
320
+ if (X86 OR X86_64 OR ARM64 OR POWER )
291
321
set (CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_ARCH" )
292
322
if (DYNAMIC_OLDER )
293
323
set (CCOMMON_OPT "${CCOMMON_OPT} -DDYNAMIC_OLDER" )
0 commit comments