set(LLVM_BLAKE3_FILES
  blake3.c
  blake3_dispatch.c
  blake3_portable.c
  blake3_neon.c
)

if (LLVM_DISABLE_ASSEMBLY_FILES)
  set(CAN_USE_ASSEMBLER FALSE)
else()
  set(CAN_USE_ASSEMBLER TRUE)
endif()

macro(disable_blake3_x86_simd)
  add_compile_definitions(BLAKE3_NO_AVX512 BLAKE3_NO_AVX2 BLAKE3_NO_SSE41 BLAKE3_NO_SSE2)
endmacro()

# The BLAKE3 team recommends using the assembly versions, from the README:
#
# "For each of the x86 SIMD instruction sets, four versions are available:
# three flavors of assembly (Unix, Windows MSVC, and Windows GNU) and one
# version using C intrinsics. The assembly versions are generally
# preferred. They perform better, they perform more consistently across
# different compilers, and they build more quickly."

if (CAN_USE_ASSEMBLER)
  if (MSVC)
    check_symbol_exists(_M_X64 "" IS_X64)
    if (IS_X64)
      enable_language(ASM_MASM)
      list(APPEND LLVM_BLAKE3_FILES
        blake3_sse2_x86-64_windows_msvc.asm
        blake3_sse41_x86-64_windows_msvc.asm
        blake3_avx2_x86-64_windows_msvc.asm
        blake3_avx512_x86-64_windows_msvc.asm
      )
    else()
      disable_blake3_x86_simd()
    endif()
  elseif(WIN32 OR CYGWIN)
    check_symbol_exists(__x86_64__ "" IS_X64)
    if (IS_X64)
      list(APPEND LLVM_BLAKE3_FILES
        blake3_sse2_x86-64_windows_gnu.S
        blake3_sse41_x86-64_windows_gnu.S
        blake3_avx2_x86-64_windows_gnu.S
        blake3_avx512_x86-64_windows_gnu.S
      )
      # Clang-6 needs this flag.
      set_source_files_properties(blake3_avx512_x86-64_windows_gnu.S
        PROPERTIES COMPILE_OPTIONS "-mavx512vl")
    else()
      disable_blake3_x86_simd()
    endif()
  else()
    check_symbol_exists(__x86_64__ "" IS_X64)
    if (IS_X64 OR CMAKE_OSX_ARCHITECTURES)
      # In a macOS Universal build (setting CMAKE_OSX_ARCHITECTURES to multiple
      # values), compilation of the source files will target multiple architectures
      # (each source file is internally compiled once for each architecture).
      # To accomodate this configuration we include these assembly files without a
      # CMake check but their source is guarded with architecture "#ifdef" checks.
      list(APPEND LLVM_BLAKE3_FILES
        blake3_sse2_x86-64_unix.S
        blake3_sse41_x86-64_unix.S
        blake3_avx2_x86-64_unix.S
        blake3_avx512_x86-64_unix.S
      )
      # Clang-6 needs this flag.
      set_source_files_properties(blake3_avx512_x86-64_unix.S
        PROPERTIES COMPILE_OPTIONS "-mavx512vl")
    else()
      disable_blake3_x86_simd()
    endif()
  endif()
else()
  # CAN_USE_ASSEMBLER == FALSE
  disable_blake3_x86_simd()
endif()

add_library(LLVMSupportBlake3 OBJECT EXCLUDE_FROM_ALL ${LLVM_BLAKE3_FILES})
llvm_update_compile_flags(LLVMSupportBlake3)
