@@ -135,6 +135,7 @@ set(CMAKE_C_STANDARD 11)
135
135
set (CMAKE_C_STANDARD_REQUIRED true )
136
136
set (THREADS_PREFER_PTHREAD_FLAG ON )
137
137
find_package (Threads REQUIRED)
138
+ include (CheckCXXCompilerFlag)
138
139
139
140
if (NOT MSVC )
140
141
if (LLAMA_SANITIZE_THREAD)
@@ -491,17 +492,21 @@ if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") OR (${CMAKE_SYSTEM_PROCESSOR} MATC
491
492
# add_compile_definitions(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) # MSVC doesn't support vdupq_n_f16, vld1q_f16, vst1q_f16
492
493
add_compile_definitions (__aarch64__) # MSVC defines _M_ARM64 instead
493
494
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 ()
494
499
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv6" )
495
500
# 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)
497
502
endif ()
498
503
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv7" )
499
504
# 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)
501
506
endif ()
502
507
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv8" )
503
508
# 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)
505
510
endif ()
506
511
endif ()
507
512
elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GENERATOR_PLATFORM_LWR} " MATCHES "^(x86_64|i686|amd64|x64)$" )
0 commit comments