set(NERVE_SIMD_PRIMITIVE_SOURCES
    ${CMAKE_CURRENT_SOURCE_DIR}/simd_base.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/simd_scalar.cpp
)

if(NERVE_CAN_USE_X86_SIMD_FLAGS OR NERVE_SIMD STREQUAL "sse41")
    list(APPEND NERVE_SIMD_PRIMITIVE_SOURCES
        ${CMAKE_CURRENT_SOURCE_DIR}/simd_sse.cpp
    )
endif()

if(NERVE_CAN_USE_X86_SIMD_FLAGS OR NERVE_SIMD MATCHES "avx2|avx512")
    list(APPEND NERVE_SIMD_PRIMITIVE_SOURCES
        ${CMAKE_CURRENT_SOURCE_DIR}/simd_avx2.cpp
    )
endif()

if(NERVE_HAS_AVX512 AND (NERVE_SIMD STREQUAL "avx512" OR NERVE_SIMD STREQUAL "auto"))
    list(APPEND NERVE_SIMD_PRIMITIVE_SOURCES
        ${CMAKE_CURRENT_SOURCE_DIR}/simd_avx512.cpp
    )
endif()

if(NERVE_HAS_NEON)
    list(APPEND NERVE_SIMD_PRIMITIVE_SOURCES
        ${CMAKE_CURRENT_SOURCE_DIR}/simd_neon.cpp
    )
endif()

if(NERVE_HAS_SVE)
    list(APPEND NERVE_SIMD_PRIMITIVE_SOURCES
        ${CMAKE_CURRENT_SOURCE_DIR}/simd_sve.cpp
    )
endif()

set(NERVE_SIMD_PRIMITIVE_SOURCES ${NERVE_SIMD_PRIMITIVE_SOURCES} PARENT_SCOPE)
