@@ -461,6 +461,13 @@ endif()
461
461
# TODO: probably these flags need to be tweaked on some architectures
462
462
# feel free to update the Makefile for your architecture and send a pull request or issue
463
463
message (STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR} " )
464
+ if (MSVC )
465
+ string (TOLOWER "${CMAKE_GENERATOR_PLATFORM} " CMAKE_GENERATOR_PLATFORM_LWR)
466
+ message (STATUS "CMAKE_GENERATOR_PLATFORM: ${CMAKE_GENERATOR_PLATFORM} " )
467
+ else ()
468
+ set (CMAKE_GENERATOR_PLATFORM_LWR "" )
469
+ endif ()
470
+
464
471
if (NOT MSVC )
465
472
if (LLAMA_STATIC)
466
473
add_link_options (-static )
@@ -476,10 +483,14 @@ if (NOT MSVC)
476
483
endif ()
477
484
endif ()
478
485
479
- if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" ) OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64" ))
486
+ if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" ) OR (${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64" ) OR ( " ${CMAKE_GENERATOR_PLATFORM_LWR} " MATCHES "arm64" ) )
480
487
message (STATUS "ARM detected" )
481
488
if (MSVC )
482
- # TODO: arm msvc?
489
+ add_compile_definitions (__ARM_NEON)
490
+ add_compile_definitions (__ARM_FEATURE_FMA)
491
+ add_compile_definitions (__ARM_FEATURE_DOTPROD)
492
+ # add_compile_definitions(__ARM_FEATURE_FP16_VECTOR_ARITHMETIC) # MSVC doesn't support vdupq_n_f16, vld1q_f16, vst1q_f16
493
+ add_compile_definitions (__aarch64__) # MSVC defines _M_ARM64 instead
483
494
else ()
484
495
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "armv6" )
485
496
# Raspberry Pi 1, Zero
@@ -494,7 +505,7 @@ if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") OR (${CMAKE_SYSTEM_PROCESSOR} MATC
494
505
add_compile_options (-mfp16-format=ieee -mno-unaligned-access)
495
506
endif ()
496
507
endif ()
497
- elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" )
508
+ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR " ${CMAKE_GENERATOR_PLATFORM_LWR} " MATCHES "^(x86_64|i686|amd64|x64)$" )
498
509
message (STATUS "x86 detected" )
499
510
if (MSVC )
500
511
if (LLAMA_AVX512)
0 commit comments