@@ -41,11 +41,16 @@ set(FAISS_SIMD_SVE_SRC
4141 impl/pq_code_distance/pq_code_distance-sve.cpp
4242 utils/simd_impl/distances_arm_sve.cpp
4343)
44+ set (FAISS_SIMD_RVV_SRC
45+ impl/scalar_quantizer/sq-rvv.cpp
46+ )
4447# Select SIMD sources based on target architecture
4548if (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|amd64|AMD64)" )
4649 set (FAISS_SIMD_SRC ${FAISS_SIMD_AVX2_SRC} ${FAISS_SIMD_AVX512_SRC} )
4750elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64|ARM64)" )
4851 set (FAISS_SIMD_SRC ${FAISS_SIMD_NEON_SRC} ${FAISS_SIMD_SVE_SRC} )
52+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "(riscv64|riscv)" )
53+ set (FAISS_SIMD_SRC ${FAISS_SIMD_RVV_SRC} )
4954else ()
5055 set (FAISS_SIMD_SRC "" )
5156endif ()
@@ -477,6 +482,14 @@ if(FAISS_OPT_LEVEL STREQUAL "dd")
477482 TARGET_DIRECTORY faiss
478483 PROPERTIES COMPILE_OPTIONS "-march=armv8.2-a+sve"
479484 )
485+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "(riscv64|riscv)" )
486+ target_compile_definitions (faiss PRIVATE COMPILE_SIMD_RISCV_RVV )
487+ if (FAISS_SIMD_RVV_SRC)
488+ set_source_files_properties (${FAISS_SIMD_RVV_SRC}
489+ TARGET_DIRECTORY faiss
490+ PROPERTIES COMPILE_OPTIONS "-march=rv64gcv_zvfhmin;-mabi=lp64d"
491+ )
492+ endif ()
480493 endif ()
481494 endif ()
482495endif ()
@@ -489,6 +502,19 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "(aarch64|arm64|ARM64)")
489502 target_sources (faiss PRIVATE ${FAISS_SIMD_NEON_SRC} )
490503endif ()
491504
505+ # RVV is the baseline SIMD on rv64 builds compiled with rv64gcv. Compile RVV
506+ # sources into the main faiss target, mirroring the ARM NEON story on aarch64.
507+ if (CMAKE_SYSTEM_PROCESSOR MATCHES "(riscv64|riscv)" )
508+ target_compile_definitions (faiss PRIVATE COMPILE_SIMD_RISCV_RVV )
509+ target_sources (faiss PRIVATE ${FAISS_SIMD_RVV_SRC} )
510+ if (NOT WIN32 AND FAISS_SIMD_RVV_SRC)
511+ set_source_files_properties (${FAISS_SIMD_RVV_SRC}
512+ TARGET_DIRECTORY faiss
513+ PROPERTIES COMPILE_OPTIONS "-march=rv64gcv_zvfhmin;-mabi=lp64d"
514+ )
515+ endif ()
516+ endif ()
517+
492518if (FAISS_ENABLE_SVS)
493519 find_package (svs_runtime REQUIRED )
494520
0 commit comments