Skip to content

Commit f5073dd

Browse files
RossComputerGuypkrmf
authored andcommitted
cmake : add a compiler flag check for FP16 format (ggml-org#3086)
1 parent f04c30d commit f5073dd

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

CMakeLists.txt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ set(CMAKE_C_STANDARD 11)
135135
set(CMAKE_C_STANDARD_REQUIRED true)
136136
set(THREADS_PREFER_PTHREAD_FLAG ON)
137137
find_package(Threads REQUIRED)
138+
include(CheckCXXCompilerFlag)
138139

139140
if (NOT MSVC)
140141
if (LLAMA_SANITIZE_THREAD)
@@ -491,17 +492,21 @@ if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") OR (${CMAKE_SYSTEM_PROCESSOR} MATC
491492
# add_compile_definitions(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) # MSVC doesn't support vdupq_n_f16, vld1q_f16, vst1q_f16
492493
add_compile_definitions(__aarch64__) # MSVC defines _M_ARM64 instead
493494
else()
495+
check_cxx_compiler_flag(-mfp16-format=ieee COMPILER_SUPPORTS_FP16_FORMAT_I3E)
496+
if (NOT "${COMPILER_SUPPORTS_FP16_FORMAT_I3E}" STREQUAL "")
497+
add_compile_options(-mfp16-format=ieee)
498+
endif()
494499
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv6")
495500
# Raspberry Pi 1, Zero
496-
add_compile_options(-mfpu=neon-fp-armv8 -mfp16-format=ieee -mno-unaligned-access)
501+
add_compile_options(-mfpu=neon-fp-armv8 -mno-unaligned-access)
497502
endif()
498503
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7")
499504
# Raspberry Pi 2
500-
add_compile_options(-mfpu=neon-fp-armv8 -mfp16-format=ieee -mno-unaligned-access -funsafe-math-optimizations)
505+
add_compile_options(-mfpu=neon-fp-armv8 -mno-unaligned-access -funsafe-math-optimizations)
501506
endif()
502507
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv8")
503508
# Raspberry Pi 3, 4, Zero 2 (32-bit)
504-
add_compile_options(-mfp16-format=ieee -mno-unaligned-access)
509+
add_compile_options(-mno-unaligned-access)
505510
endif()
506511
endif()
507512
elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GENERATOR_PLATFORM_LWR}" MATCHES "^(x86_64|i686|amd64|x64)$" )

0 commit comments

Comments
 (0)