Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion celt/float_cast.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ static OPUS_INLINE opus_int32 float2int(float x) {return _mm_cvt_ss2si(_mm_set_s

#elif (defined(_MSC_VER) && _MSC_VER >= 1400) && (defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1))

#include <xmmintrin.h>
#include <intrin.h>
static OPUS_INLINE opus_int32 float2int(float value)
{
/* _mm_load_ss will generate same code as _mm_set_ss
Expand Down
21 changes: 16 additions & 5 deletions cmake/OpusConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,21 @@ check_symbol_exists(lrint "math.h" HAVE_LRINT)
check_symbol_exists(elf_aux_info "sys/auxv.h" HAVE_ELF_AUX_INFO)
cmake_pop_check_state()

if(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[0-9]86|x86|X86|amd64|AMD64|x86_64)")
message(STATUS "Check CPU arch: CMAKE_GENERATOR_PLATFORM=${CMAKE_GENERATOR_PLATFORM} CMAKE_SYSTEM_PROCESSOR=${CMAKE_SYSTEM_PROCESSOR}")

if(CMAKE_GENERATOR_PLATFORM MATCHES "(arm64|ARM64|arm64ec|ARM64EC)")
# Microsoft ARM mode, override other checks
# CMake still doesn't recognize it, CMAKE_SYSTEM_PROCESSOR is AMD64
set(OPUS_CPU_ARM_MS)
set(OPUS_CPU_ARM 1)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(arm|aarch64|ARM)")
set(OPUS_CPU_ARM 1)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(i[0-9]86|x86|X86|amd64|AMD64|x86_64)")
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(OPUS_CPU_X64 1)
else()
set(OPUS_CPU_X86 1)
endif()
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "(arm|aarch64|ARM)")
set(OPUS_CPU_ARM 1)
endif()

if(NOT OPUS_DISABLE_INTRINSICS)
Expand All @@ -68,12 +75,16 @@ endif()
if(OPUS_CPU_X86 OR OPUS_CPU_X64 AND NOT OPUS_DISABLE_INTRINSICS)
opus_detect_sse(COMPILER_SUPPORT_SIMD)
elseif(OPUS_CPU_ARM AND NOT OPUS_DISABLE_INTRINSICS)
opus_detect_neon(COMPILER_SUPPORT_NEON)
if (OPUS_CPU_ARM_MS)
set(COMPILER_SUPPORT_NEON 1)
else()
opus_detect_neon(COMPILER_SUPPORT_NEON)
endif()
if(COMPILER_SUPPORT_NEON)
option(OPUS_USE_NEON "Option to enable NEON" ON)
option(OPUS_MAY_HAVE_NEON "Does runtime check for neon support" ON)
option(OPUS_PRESUME_NEON "Assume target CPU has NEON support" OFF)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
if(OPUS_CPU_ARM_MS OR CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
set(OPUS_PRESUME_NEON ON)
elseif(CMAKE_SYSTEM_NAME MATCHES "iOS")
set(OPUS_PRESUME_NEON ON)
Expand Down
Loading