@@ -355,36 +355,50 @@ set_source_files_properties(${CPP_FILES} PROPERTIES LANGUAGE CXX)
355355add_library (bitsandbytes SHARED ${SRC_FILES} )
356356target_compile_features (bitsandbytes PUBLIC cxx_std_17 )
357357target_include_directories (bitsandbytes PUBLIC csrc )
358+ set_target_properties (bitsandbytes PROPERTIES VISIBILITY_INLINES_HIDDEN ON )
358359
359360if (BUILD_CPU)
361+ include (CheckIPOSupported )
362+ check_ipo_supported (RESULT ipo_supported OUTPUT ipo_output )
363+ if (ipo_supported)
364+ set_property (TARGET bitsandbytes PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE )
365+ endif ()
366+
360367 if (OpenMP_CXX_FOUND)
361368 target_link_libraries (bitsandbytes PRIVATE OpenMP::OpenMP_CXX )
362369 add_definitions (-DHAS_OPENMP )
363370 endif ()
364371
365- if ((HOST_ARCH MATCHES "x86_64|amd64" ) AND (NOT MSVC ))
366- include (CheckCXXCompilerFlag )
367- check_cxx_compiler_flag (-mavx512f HAS_AVX512F_FLAG )
368- check_cxx_compiler_flag (-mavx512bf16 HAS_AVX512BF16_FLAG )
369- if (HAS_AVX512F_FLAG)
370- target_compile_options (bitsandbytes PRIVATE -mavx512f )
371- target_compile_options (bitsandbytes PRIVATE -mavx512dq )
372- target_compile_options (bitsandbytes PRIVATE -mavx512bw )
373- target_compile_options (bitsandbytes PRIVATE -mavx512vl )
374- endif ()
375- if (HAS_AVX512BF16_FLAG)
376- target_compile_options (bitsandbytes PRIVATE -mavx512bf16 )
372+ if (NOT MSVC )
373+ target_compile_options (bitsandbytes PRIVATE -fno-semantic-interposition )
374+
375+ if (HOST_ARCH MATCHES "x86_64|amd64" )
376+ include (CheckCXXCompilerFlag )
377+ check_cxx_compiler_flag (-mavx512f HAS_AVX512F_FLAG )
378+ check_cxx_compiler_flag (-mavx512bf16 HAS_AVX512BF16_FLAG )
379+ if (HAS_AVX512F_FLAG)
380+ target_compile_options (
381+ bitsandbytes PRIVATE
382+ -mavx512f
383+ -mavx512dw
384+ -mavx512bw
385+ -mavx512vl
386+ )
387+ endif ()
388+ if (HAS_AVX512BF16_FLAG)
389+ target_compile_options (bitsandbytes PRIVATE -mavx512bf16 )
390+ endif ()
391+ target_compile_options (
392+ bitsandbytes PRIVATE
393+ -mprefer-vector-width=256
394+ -mfma
395+ -mavx2
396+ -mf16c
397+ -mlzcnt
398+ -mbmi
399+ -mbmi2
400+ )
377401 endif ()
378- target_compile_options (
379- bitsandbytes PRIVATE
380- -mprefer-vector-width=256
381- -mfma
382- -mavx2
383- -mf16c
384- -mlzcnt
385- -mbmi
386- -mbmi2
387- )
388402 endif ()
389403endif ()
390404
0 commit comments