diff options
-rw-r--r-- | src/cmake/cpu.cmake | 10 | ||||
-rw-r--r-- | src/vppinfra/cpu.h | 19 |
2 files changed, 28 insertions, 1 deletions
diff --git a/src/cmake/cpu.cmake b/src/cmake/cpu.cmake index 7fb7b591851..c10158b4ab9 100644 --- a/src/cmake/cpu.cmake +++ b/src/cmake/cpu.cmake @@ -126,6 +126,11 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") OFF ) + add_vpp_march_variant(adl + FLAGS -march=alderlake -mtune=alderlake -mprefer-vector-width=256 + OFF + ) + if (GNU_ASSEMBLER_AVX512_BUG) message(WARNING "AVX-512 multiarch variant(s) disabled due to GNU Assembler bug") else() @@ -136,6 +141,11 @@ elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") add_vpp_march_variant(icl FLAGS -march=icelake-client -mtune=icelake-client -mprefer-vector-width=512 ) + + add_vpp_march_variant(spr + FLAGS -march=sapphirerapids -mtune=sapphirerapids -mprefer-vector-width=512 + OFF + ) endif() elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)") set(VPP_DEFAULT_MARCH_FLAGS -march=armv8-a+crc) diff --git a/src/vppinfra/cpu.h b/src/vppinfra/cpu.h index 769bdb56e82..efa85ad1af1 100644 --- a/src/vppinfra/cpu.h +++ b/src/vppinfra/cpu.h @@ -138,6 +138,7 @@ _CLIB_MARCH_FN_REGISTRATION(fn) _ (avx512_vpopcntdq, 7, ecx, 14) \ _ (movdiri, 7, ecx, 27) \ _ (movdir64b, 7, ecx, 28) \ + _ (enqcmd, 7, ecx, 29) \ _ (avx512_fp16, 7, edx, 23) \ _ (invariant_tsc, 0x80000007, edx, 8) @@ -239,6 +240,14 @@ clib_cpu_supports_aes () } static inline int +clib_cpu_march_priority_spr () +{ + if (clib_cpu_supports_enqcmd ()) + return 300; + return -1; +} + +static inline int clib_cpu_march_priority_icl () { if (clib_cpu_supports_avx512_bitalg ()) @@ -247,6 +256,14 @@ clib_cpu_march_priority_icl () } static inline int +clib_cpu_march_priority_adl () +{ + if (clib_cpu_supports_movdiri () && clib_cpu_supports_avx2 ()) + return 150; + return -1; +} + +static inline int clib_cpu_march_priority_skx () { if (clib_cpu_supports_avx512f ()) @@ -258,7 +275,7 @@ static inline int clib_cpu_march_priority_trm () { if (clib_cpu_supports_movdiri ()) - return 60; + return 40; return -1; } |