@@ -287,17 +287,25 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
287
287
endif ()
288
288
endif ()
289
289
endif ()
290
- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64 " )
290
+ elseif (" ${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64le " OR " ${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "powerpc " )
291
291
message (STATUS "PowerPC detected" )
292
- execute_process (COMMAND bash -c "grep POWER /proc/cpuinfo | head -n 1" OUTPUT_VARIABLE POWER_M)
293
- if (${POWER_M} MATCHES "POWER10" )
294
- list (APPEND ARCH_FLAGS -mcpu=power10)
295
- elseif (${POWER_M} MATCHES "POWER9" )
296
- list (APPEND ARCH_FLAGS -mcpu=power9)
292
+ if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64" )
293
+ file (READ "/proc/cpuinfo" POWER10_M)
294
+ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "powerpc" )
295
+ execute_process (COMMAND bash -c "prtconf |grep 'Implementation' | head -n 1" OUTPUT_VARIABLE POWER10_M)
296
+ endif ()
297
+
298
+ string (REGEX MATCHALL "POWER *([0-9]+)" MATCHED_STRING "${POWER10_M} " )
299
+ string (REGEX REPLACE "POWER *([0-9]+)" "\\ 1" EXTRACTED_NUMBER "${MATCHED_STRING} " )
300
+
301
+ if (EXTRACTED_NUMBER GREATER_EQUAL 10)
302
+ list (APPEND ARCH_FLAGS -mcpu=power10 -mpowerpc64)
303
+ elseif (EXTRACTED_NUMBER EQUAL 9)
304
+ list (APPEND ARCH_FLAGS -mcpu=power9 -mpowerpc64)
297
305
elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64le" )
298
306
list (APPEND ARCH_FLAGS -mcpu=powerpc64le -mtune=native)
299
307
else ()
300
- list (APPEND ARCH_FLAGS -mcpu=powerpc64 -mtune=native)
308
+ list (APPEND ARCH_FLAGS -mcpu=native -mtune=native -mpowerpc64 )
301
309
endif ()
302
310
elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "loongarch64" )
303
311
message (STATUS "loongarch64 detected" )
0 commit comments