@@ -296,12 +296,13 @@ set(FAISS_HEADERS
296296 utils/rabitq_simd.h
297297 utils/random.h
298298 utils/sorting.h
299- utils/simdlib.h
300- utils/simdlib_avx2.h
301- utils/simdlib_avx512.h
302- utils/simdlib_emulated.h
303- utils/simdlib_neon.h
304- utils/simdlib_ppc64.h
299+ impl/simdlib/simdlib.h
300+ impl/simdlib/simdlib_dispatch.h
301+ impl/simdlib/simdlib_avx2.h
302+ impl/simdlib/simdlib_avx512.h
303+ impl/simdlib/simdlib_emulated.h
304+ impl/simdlib/simdlib_neon.h
305+ impl/simdlib/simdlib_ppc64.h
305306 utils/utils.h
306307 utils/simd_levels.h
307308 utils/distances_fused/avx512.h
@@ -321,6 +322,7 @@ set(FAISS_HEADERS
321322 utils/hamming_distance/avx2-inl.h
322323 utils/hamming_distance/avx512-inl.h
323324 utils/simd_impl/distances_autovec-inl.h
325+ utils/simd_impl/distances_simdlib256.h
324326 utils/simd_impl/distances_sse-inl.h
325327)
326328
@@ -459,6 +461,14 @@ if(FAISS_OPT_LEVEL STREQUAL "dd")
459461 endif ()
460462endif ()
461463
464+ # NEON is mandatory on ARM64 — ensure COMPILE_SIMD_ARM_NEON is always defined
465+ # and NEON source files are always compiled into the main faiss target.
466+ # (On x86, AVX2/AVX512 are optional and only compiled per opt_level above.)
467+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64|ARM64)" )
468+ target_compile_definitions (faiss PRIVATE COMPILE_SIMD_ARM_NEON )
469+ target_sources (faiss PRIVATE ${FAISS_SIMD_NEON_SRC} )
470+ endif ()
471+
462472if (FAISS_ENABLE_SVS)
463473 find_package (svs_runtime 0.2.0 REQUIRED )
464474
0 commit comments