@@ -59,10 +59,13 @@ option(WHISPER_BUILD_EXAMPLES "whisper: build examples" ${WHISPER_STANDA
59
59
60
60
option (WHISPER_SDL2 "whisper: support for libSDL2" OFF )
61
61
62
- option (WHISPER_NO_AVX "whisper: disable AVX" OFF )
63
- option (WHISPER_NO_AVX2 "whisper: disable AVX2" OFF )
64
- option (WHISPER_NO_FMA "whisper: disable FMA" OFF )
65
- option (WHISPER_NO_F16C "whisper: disable F16c" OFF )
62
+ option (WHISPER_NO_AVX "whisper: disable AVX" OFF )
63
+ option (WHISPER_NO_AVX2 "whisper: disable AVX2" OFF )
64
+ option (WHISPER_NO_AVX512 "whisper: disable AVX512" ON )
65
+ option (WHISPER_NO_AVX512_VBMI "whisper: disable AVX512-VBMI" ON )
66
+ option (WHISPER_NO_AVX512_VNNI "whisper: disable AVX512-VNNI" ON )
67
+ option (WHISPER_NO_FMA "whisper: disable FMA" OFF )
68
+ option (WHISPER_NO_F16C "whisper: disable F16c" OFF )
66
69
67
70
option (WHISPER_OPENVINO "whisper: support for OpenVINO" OFF )
68
71
@@ -464,16 +467,30 @@ else()
464
467
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8" )
465
468
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /utf-8" )
466
469
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8" )
467
- if (NOT WHISPER_NO_AVX2 )
470
+ if (NOT WHISPER_NO_AVX512 )
471
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX512" )
472
+ set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /arch:AVX512" )
473
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:AVX512" )
474
+ # MSVC has no compile-time flags enabling specific
475
+ # AVX512 extensions, neither it defines the
476
+ # macros corresponding to the extensions.
477
+ # Do it manually.
478
+ if (NOT WHISPER_NO_AVX512_VBMI )
479
+ add_compile_definitions ($< $< COMPILE_LANGUAGE:C> :__AVX512VBMI__> )
480
+ add_compile_definitions ($< $< COMPILE_LANGUAGE:CXX> :__AVX512VBMI__> )
481
+ endif ()
482
+ if (NOT WHISPER_NO_AVX512_VNNI )
483
+ add_compile_definitions ($< $< COMPILE_LANGUAGE:C> :__AVX512VNNI__> )
484
+ add_compile_definitions ($< $< COMPILE_LANGUAGE:CXX> :__AVX512VNNI__> )
485
+ endif ()
486
+ elseif (NOT WHISPER_NO_AVX2 )
468
487
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2" )
469
488
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /arch:AVX2" )
470
489
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:AVX2" )
471
- else ()
472
- if (NOT WHISPER_NO_AVX )
473
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX" )
474
- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /arch:AVX" )
475
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:AVX" )
476
- endif ()
490
+ elseif (NOT WHISPER_NO_AVX )
491
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX" )
492
+ set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /arch:AVX" )
493
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:AVX" )
477
494
endif ()
478
495
else ()
479
496
if (EMSCRIPTEN )
@@ -486,6 +503,15 @@ else()
486
503
if (NOT WHISPER_NO_AVX2 )
487
504
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx2" )
488
505
endif ()
506
+ if (NOT WHISPER_NO_AVX512 )
507
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx512f -mavx512cd -mavx512vl -mavx512dq -mavx512bw" )
508
+ endif ()
509
+ if (NOT WHISPER_NO_AVX512_VBMI )
510
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx512vbmi" )
511
+ endif ()
512
+ if (NOT WHISPER_NO_AVX512_VNNI )
513
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx512vnni" )
514
+ endif ()
489
515
if (NOT WHISPER_NO_FMA )
490
516
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfma" )
491
517
endif ()
0 commit comments