From 3a75f59c8683a8d093fd1855b68ec0eceed2f5d3 Mon Sep 17 00:00:00 2001 From: liangbin Date: Tue, 11 Mar 2025 14:17:06 +0800 Subject: [PATCH 1/5] Initial support for avx512vbmi --- include/xsimd/arch/xsimd_avx512vbmi2.hpp | 20 ++++++++ include/xsimd/arch/xsimd_isa.hpp | 4 ++ include/xsimd/config/xsimd_arch.hpp | 2 +- include/xsimd/config/xsimd_config.hpp | 13 ++++- include/xsimd/config/xsimd_cpuid.hpp | 2 + include/xsimd/types/xsimd_all_registers.hpp | 1 + .../types/xsimd_avx512vbmi2_register.hpp | 51 +++++++++++++++++++ 7 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 include/xsimd/arch/xsimd_avx512vbmi2.hpp create mode 100644 include/xsimd/types/xsimd_avx512vbmi2_register.hpp diff --git a/include/xsimd/arch/xsimd_avx512vbmi2.hpp b/include/xsimd/arch/xsimd_avx512vbmi2.hpp new file mode 100644 index 000000000..d44b9decc --- /dev/null +++ b/include/xsimd/arch/xsimd_avx512vbmi2.hpp @@ -0,0 +1,20 @@ +/*************************************************************************** + * Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and * + * Martin Renou * + * Copyright (c) QuantStack * + * Copyright (c) Serge Guelton * + * * + * Distributed under the terms of the BSD 3-Clause License. * + * * + * The full license is in the file LICENSE, distributed with this software. * + ****************************************************************************/ + +#ifndef XSIMD_AVX512VBMI2_HPP +#define XSIMD_AVX512VBMI2_HPP + +#include +#include + +#include "../types/xsimd_avx512vbmi2_register.hpp" + +#endif diff --git a/include/xsimd/arch/xsimd_isa.hpp b/include/xsimd/arch/xsimd_isa.hpp index 5b714b299..cd6d54d47 100644 --- a/include/xsimd/arch/xsimd_isa.hpp +++ b/include/xsimd/arch/xsimd_isa.hpp @@ -92,6 +92,10 @@ #include "./xsimd_avx512vbmi.hpp" #endif +#if XSIMD_WITH_AVX512VBMI2 +#include "./xsimd_avx512vbmi2.hpp" +#endif + #if XSIMD_WITH_AVX512VNNI_AVX512BW #include "./xsimd_avx512vnni_avx512bw.hpp" #endif diff --git a/include/xsimd/config/xsimd_arch.hpp b/include/xsimd/config/xsimd_arch.hpp index 39d0d581d..64dbc0f68 100644 --- a/include/xsimd/config/xsimd_arch.hpp +++ b/include/xsimd/config/xsimd_arch.hpp @@ -162,7 +162,7 @@ namespace xsimd } // namespace detail using all_x86_architectures = arch_list< - avx512vnni, avx512vbmi, avx512ifma, avx512pf, avx512vnni, avx512bw, avx512er, avx512dq, avx512cd, avx512f, + avx512vnni, avx512vbmi2, avx512vbmi, avx512ifma, avx512pf, avx512vnni, avx512bw, avx512er, avx512dq, avx512cd, avx512f, avxvnni, fma3, avx2, fma3, avx, fma4, fma3, sse4_2, sse4_1, /*sse4a,*/ ssse3, sse3, sse2>; diff --git a/include/xsimd/config/xsimd_config.hpp b/include/xsimd/config/xsimd_config.hpp index 985a70a9b..52e97e642 100644 --- a/include/xsimd/config/xsimd_config.hpp +++ b/include/xsimd/config/xsimd_config.hpp @@ -299,6 +299,17 @@ #define XSIMD_WITH_AVX512VBMI 0 #endif +/** + * @ingroup xsimd_config_macro + * + * Set to 1 if AVX512VBMI2 is available at compile-time, to 0 otherwise. + */ +#ifdef __AVX512VBMI2__ +#define XSIMD_WITH_AVX512VBMI2 XSIMD_WITH_AVX512F +#else +#define XSIMD_WITH_AVX512VBMI2 0 +#endif + /** * @ingroup xsimd_config_macro * @@ -455,7 +466,7 @@ #endif -#if !XSIMD_WITH_SSE2 && !XSIMD_WITH_SSE3 && !XSIMD_WITH_SSSE3 && !XSIMD_WITH_SSE4_1 && !XSIMD_WITH_SSE4_2 && !XSIMD_WITH_AVX && !XSIMD_WITH_AVX2 && !XSIMD_WITH_AVXVNNI && !XSIMD_WITH_FMA3_SSE && !XSIMD_WITH_FMA4 && !XSIMD_WITH_FMA3_AVX && !XSIMD_WITH_FMA3_AVX2 && !XSIMD_WITH_AVX512F && !XSIMD_WITH_AVX512CD && !XSIMD_WITH_AVX512DQ && !XSIMD_WITH_AVX512BW && !XSIMD_WITH_AVX512ER && !XSIMD_WITH_AVX512PF && !XSIMD_WITH_AVX512IFMA && !XSIMD_WITH_AVX512VBMI && !XSIMD_WITH_NEON && !XSIMD_WITH_NEON64 && !XSIMD_WITH_SVE && !XSIMD_WITH_RVV && !XSIMD_WITH_WASM +#if !XSIMD_WITH_SSE2 && !XSIMD_WITH_SSE3 && !XSIMD_WITH_SSSE3 && !XSIMD_WITH_SSE4_1 && !XSIMD_WITH_SSE4_2 && !XSIMD_WITH_AVX && !XSIMD_WITH_AVX2 && !XSIMD_WITH_AVXVNNI && !XSIMD_WITH_FMA3_SSE && !XSIMD_WITH_FMA4 && !XSIMD_WITH_FMA3_AVX && !XSIMD_WITH_FMA3_AVX2 && !XSIMD_WITH_AVX512F && !XSIMD_WITH_AVX512CD && !XSIMD_WITH_AVX512DQ && !XSIMD_WITH_AVX512BW && !XSIMD_WITH_AVX512ER && !XSIMD_WITH_AVX512PF && !XSIMD_WITH_AVX512IFMA && !XSIMD_WITH_AVX512VBMI && !XSIMD_WITH_AVX512VBMI2 && !XSIMD_WITH_NEON && !XSIMD_WITH_NEON64 && !XSIMD_WITH_SVE && !XSIMD_WITH_RVV && !XSIMD_WITH_WASM #define XSIMD_NO_SUPPORTED_ARCHITECTURE #endif diff --git a/include/xsimd/config/xsimd_cpuid.hpp b/include/xsimd/config/xsimd_cpuid.hpp index 8021fceb8..8c043421a 100644 --- a/include/xsimd/config/xsimd_cpuid.hpp +++ b/include/xsimd/config/xsimd_cpuid.hpp @@ -71,6 +71,7 @@ namespace xsimd ARCH_FIELD(avx512pf) ARCH_FIELD(avx512ifma) ARCH_FIELD(avx512vbmi) + ARCH_FIELD(avx512vbmi2) ARCH_FIELD_EX(avx512vnni<::xsimd::avx512bw>, avx512vnni_bw) ARCH_FIELD_EX(avx512vnni<::xsimd::avx512vbmi>, avx512vnni_vbmi) ARCH_FIELD(neon) @@ -245,6 +246,7 @@ namespace xsimd avx512pf = regs7[1] >> 26 & avx512_state_os_enabled; avx512ifma = regs7[1] >> 21 & avx512_state_os_enabled; avx512vbmi = regs7[2] >> 1 & avx512_state_os_enabled; + avx512vbmi2 = regs7[2] >> 6 & avx512_state_os_enabled; avx512vnni_bw = regs7[2] >> 11 & avx512_state_os_enabled; avx512vnni_vbmi = avx512vbmi && avx512vnni_bw; #endif diff --git a/include/xsimd/types/xsimd_all_registers.hpp b/include/xsimd/types/xsimd_all_registers.hpp index 6d024a167..efdbcad68 100644 --- a/include/xsimd/types/xsimd_all_registers.hpp +++ b/include/xsimd/types/xsimd_all_registers.hpp @@ -26,6 +26,7 @@ #include "xsimd_avx512vnni_avx512vbmi_register.hpp" #include "xsimd_avx512ifma_register.hpp" +#include "xsimd_avx512vbmi2_register.hpp" #include "xsimd_avx512vbmi_register.hpp" #include "xsimd_avx512er_register.hpp" diff --git a/include/xsimd/types/xsimd_avx512vbmi2_register.hpp b/include/xsimd/types/xsimd_avx512vbmi2_register.hpp new file mode 100644 index 000000000..c2b0f0f76 --- /dev/null +++ b/include/xsimd/types/xsimd_avx512vbmi2_register.hpp @@ -0,0 +1,51 @@ +/*************************************************************************** + * Copyright (c) Johan Mabille, Sylvain Corlay, Wolf Vollprecht and * + * Martin Renou * + * Copyright (c) QuantStack * + * Copyright (c) Serge Guelton * + * * + * Distributed under the terms of the BSD 3-Clause License. * + * * + * The full license is in the file LICENSE, distributed with this software. * + ****************************************************************************/ + +#ifndef XSIMD_AVX512VBMI2_REGISTER_HPP +#define XSIMD_AVX512VBMI2_REGISTER_HPP + +#include "./xsimd_avx512vbmi_register.hpp" + +namespace xsimd +{ + + /** + * @ingroup architectures + * + * AVX512VBMI instructions + */ + struct avx512vbmi2 : avx512vbmi + { + static constexpr bool supported() noexcept { return XSIMD_WITH_AVX512VBMI2; } + static constexpr bool available() noexcept { return true; } + static constexpr char const* name() noexcept { return "avx512vbmi2"; } + }; + +#if XSIMD_WITH_AVX512VBMI2 + +#if !XSIMD_WITH_AVX512VBMI +#error "architecture inconsistency: avx512vbmi2 requires avx512vbmi" +#endif + + namespace types + { + template + struct get_bool_simd_register + { + using type = simd_avx512_bool_register; + }; + + XSIMD_DECLARE_SIMD_REGISTER_ALIAS(avx512vbmi2, avx512vbmi); + + } +#endif +} +#endif From 83da277e0cd26df8b8d5af87822c45627b86c0d7 Mon Sep 17 00:00:00 2001 From: liangbin Date: Tue, 11 Mar 2025 14:41:49 +0800 Subject: [PATCH 2/5] Change avx512vnni_vbmi to avx512vnni_bmi2 --- include/xsimd/arch/xsimd_isa.hpp | 2 +- include/xsimd/config/xsimd_arch.hpp | 2 +- include/xsimd/config/xsimd_config.hpp | 8 +++---- include/xsimd/config/xsimd_cpuid.hpp | 4 ++-- .../xsimd_avx512vnni_avx512vbmi_register.hpp | 23 +++++++++---------- 5 files changed, 19 insertions(+), 20 deletions(-) diff --git a/include/xsimd/arch/xsimd_isa.hpp b/include/xsimd/arch/xsimd_isa.hpp index cd6d54d47..946cbd5e5 100644 --- a/include/xsimd/arch/xsimd_isa.hpp +++ b/include/xsimd/arch/xsimd_isa.hpp @@ -100,7 +100,7 @@ #include "./xsimd_avx512vnni_avx512bw.hpp" #endif -#if XSIMD_WITH_AVX512VNNI_AVX512VBMI +#if XSIMD_WITH_AVX512VNNI_AVX512VBMI2 #include "./xsimd_avx512vnni_avx512vbmi.hpp" #endif diff --git a/include/xsimd/config/xsimd_arch.hpp b/include/xsimd/config/xsimd_arch.hpp index 64dbc0f68..89fc6783d 100644 --- a/include/xsimd/config/xsimd_arch.hpp +++ b/include/xsimd/config/xsimd_arch.hpp @@ -162,7 +162,7 @@ namespace xsimd } // namespace detail using all_x86_architectures = arch_list< - avx512vnni, avx512vbmi2, avx512vbmi, avx512ifma, avx512pf, avx512vnni, avx512bw, avx512er, avx512dq, avx512cd, avx512f, + avx512vnni, avx512vbmi2, avx512vbmi, avx512ifma, avx512pf, avx512vnni, avx512bw, avx512er, avx512dq, avx512cd, avx512f, avxvnni, fma3, avx2, fma3, avx, fma4, fma3, sse4_2, sse4_1, /*sse4a,*/ ssse3, sse3, sse2>; diff --git a/include/xsimd/config/xsimd_config.hpp b/include/xsimd/config/xsimd_config.hpp index 52e97e642..2655ca936 100644 --- a/include/xsimd/config/xsimd_config.hpp +++ b/include/xsimd/config/xsimd_config.hpp @@ -317,17 +317,17 @@ */ #ifdef __AVX512VNNI__ -#if XSIMD_WITH_AVX512VBMI -#define XSIMD_WITH_AVX512VNNI_AVX512VBMI XSIMD_WITH_AVX512F +#if XSIMD_WITH_AVX512VBMI2 +#define XSIMD_WITH_AVX512VNNI_AVX512VBMI2 XSIMD_WITH_AVX512F #define XSIMD_WITH_AVX512VNNI_AVX512BW XSIMD_WITH_AVX512F #else -#define XSIMD_WITH_AVX512VNNI_AVX512VBMI 0 +#define XSIMD_WITH_AVX512VNNI_AVX512VBMI2 0 #define XSIMD_WITH_AVX512VNNI_AVX512BW XSIMD_WITH_AVX512F #endif #else -#define XSIMD_WITH_AVX512VNNI_AVX512VBMI 0 +#define XSIMD_WITH_AVX512VNNI_AVX512VBMI2 0 #define XSIMD_WITH_AVX512VNNI_AVX512BW 0 #endif diff --git a/include/xsimd/config/xsimd_cpuid.hpp b/include/xsimd/config/xsimd_cpuid.hpp index 8c043421a..7b940f655 100644 --- a/include/xsimd/config/xsimd_cpuid.hpp +++ b/include/xsimd/config/xsimd_cpuid.hpp @@ -73,7 +73,7 @@ namespace xsimd ARCH_FIELD(avx512vbmi) ARCH_FIELD(avx512vbmi2) ARCH_FIELD_EX(avx512vnni<::xsimd::avx512bw>, avx512vnni_bw) - ARCH_FIELD_EX(avx512vnni<::xsimd::avx512vbmi>, avx512vnni_vbmi) + ARCH_FIELD_EX(avx512vnni<::xsimd::avx512vbmi2>, avx512vnni_vbmi2) ARCH_FIELD(neon) ARCH_FIELD(neon64) ARCH_FIELD_EX(i8mm<::xsimd::neon64>, i8mm_neon64) @@ -248,7 +248,7 @@ namespace xsimd avx512vbmi = regs7[2] >> 1 & avx512_state_os_enabled; avx512vbmi2 = regs7[2] >> 6 & avx512_state_os_enabled; avx512vnni_bw = regs7[2] >> 11 & avx512_state_os_enabled; - avx512vnni_vbmi = avx512vbmi && avx512vnni_bw; + avx512vnni_vbmi2 = avx512vbmi2 && avx512vnni_bw; #endif } }; diff --git a/include/xsimd/types/xsimd_avx512vnni_avx512vbmi_register.hpp b/include/xsimd/types/xsimd_avx512vnni_avx512vbmi_register.hpp index adfaff5b2..114a0b8a0 100644 --- a/include/xsimd/types/xsimd_avx512vnni_avx512vbmi_register.hpp +++ b/include/xsimd/types/xsimd_avx512vnni_avx512vbmi_register.hpp @@ -9,10 +9,10 @@ * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ -#ifndef XSIMD_AVX512VNNI_AVX512VBMI_REGISTER_HPP -#define XSIMD_AVX512VNNI_AVX512VBMI_REGISTER_HPP +#ifndef XSIMD_AVX512VNNI_AVX512VBMI2_REGISTER_HPP +#define XSIMD_AVX512VNNI_AVX512VBMI2_REGISTER_HPP -#include "./xsimd_avx512vbmi_register.hpp" +#include "./xsimd_avx512vbmi2_register.hpp" namespace xsimd { @@ -25,29 +25,28 @@ namespace xsimd * AVX512VNNI instructions */ template <> - struct avx512vnni : avx512vbmi + struct avx512vnni : avx512vbmi2 { - static constexpr bool supported() noexcept { return XSIMD_WITH_AVX512VNNI_AVX512VBMI; } + static constexpr bool supported() noexcept { return XSIMD_WITH_AVX512VNNI_AVX512VBMI2; } static constexpr bool available() noexcept { return true; } - static constexpr char const* name() noexcept { return "avx512vnni+avx512vbmi"; } + static constexpr char const* name() noexcept { return "avx512vnni+avx512vbmi2"; } }; -#if XSIMD_WITH_AVX512VNNI_AVX512VBMI +#if XSIMD_WITH_AVX512VNNI_AVX512VBMI2 -#if !XSIMD_WITH_AVX512VBMI -#error "architecture inconsistency: avx512vnni+avx512vbmi requires avx512vbmi" +#if !XSIMD_WITH_AVX512VBMI2 +#error "architecture inconsistency: avx512vnni+avx512vbmi2 requires avx512vbmi2" #endif namespace types { template - struct get_bool_simd_register> + struct get_bool_simd_register> { using type = simd_avx512_bool_register; }; - XSIMD_DECLARE_SIMD_REGISTER_ALIAS(avx512vnni, avx512vbmi); - + XSIMD_DECLARE_SIMD_REGISTER_ALIAS(avx512vnni, avx512vbmi2); } #endif } From 8ede86ef0f9946e17d83ae7674aa20d5d706f5f8 Mon Sep 17 00:00:00 2001 From: liangbin Date: Tue, 11 Mar 2025 16:38:41 +0800 Subject: [PATCH 3/5] add compress&expand in avx512vbmi2 --- include/xsimd/arch/xsimd_avx512vbmi2.hpp | 53 ++++++++++++++++++++++++ test/test_shuffle.cpp | 4 +- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/include/xsimd/arch/xsimd_avx512vbmi2.hpp b/include/xsimd/arch/xsimd_avx512vbmi2.hpp index d44b9decc..4c6353c32 100644 --- a/include/xsimd/arch/xsimd_avx512vbmi2.hpp +++ b/include/xsimd/arch/xsimd_avx512vbmi2.hpp @@ -17,4 +17,57 @@ #include "../types/xsimd_avx512vbmi2_register.hpp" +namespace xsimd +{ + + namespace kernel + { + using namespace types; + + // compress + template + XSIMD_INLINE batch compress(batch const& self, batch_bool const& mask, requires_arch) noexcept + { + return _mm512_maskz_compress_epi16(mask.mask(), self); + } + template + XSIMD_INLINE batch compress(batch const& self, batch_bool const& mask, requires_arch) noexcept + { + return _mm512_maskz_compress_epi16(mask.mask(), self); + } + template + XSIMD_INLINE batch compress(batch const& self, batch_bool const& mask, requires_arch) noexcept + { + return _mm512_maskz_compress_epi8(mask.mask(), self); + } + template + XSIMD_INLINE batch compress(batch const& self, batch_bool const& mask, requires_arch) noexcept + { + return _mm512_maskz_compress_epi8(mask.mask(), self); + } + + // expand + template + XSIMD_INLINE batch expand(batch const& self, batch_bool const& mask, requires_arch) noexcept + { + return _mm512_maskz_expand_epi16(mask.mask(), self); + } + template + XSIMD_INLINE batch expand(batch const& self, batch_bool const& mask, requires_arch) noexcept + { + return _mm512_maskz_expand_epi16(mask.mask(), self); + } + template + XSIMD_INLINE batch expand(batch const& self, batch_bool const& mask, requires_arch) noexcept + { + return _mm512_maskz_expand_epi8(mask.mask(), self); + } + template + XSIMD_INLINE batch expand(batch const& self, batch_bool const& mask, requires_arch) noexcept + { + return _mm512_maskz_expand_epi8(mask.mask(), self); + } + } +} + #endif diff --git a/test/test_shuffle.cpp b/test/test_shuffle.cpp index df4bf783d..a2f66157d 100644 --- a/test/test_shuffle.cpp +++ b/test/test_shuffle.cpp @@ -347,7 +347,7 @@ struct compress_test } }; -TEST_CASE_TEMPLATE("[compress]", B, BATCH_FLOAT_TYPES, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch) +TEST_CASE_TEMPLATE("[compress]", B, BATCH_FLOAT_TYPES, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch) { compress_test Test; SUBCASE("empty") @@ -443,7 +443,7 @@ struct expand_test } }; -TEST_CASE_TEMPLATE("[expand]", B, BATCH_FLOAT_TYPES, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch) +TEST_CASE_TEMPLATE("[expand]", B, BATCH_FLOAT_TYPES, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch, xsimd::batch) { expand_test Test; SUBCASE("empty") From 85414a73863607f8163ae2ef53f6c038c21a1dd9 Mon Sep 17 00:00:00 2001 From: liangbin Date: Wed, 2 Apr 2025 14:34:43 +0800 Subject: [PATCH 4/5] Move batch swizzle to avx512vbmi with _mm512_permutexvar_epi8 --- include/xsimd/arch/xsimd_avx512bw.hpp | 24 ------------------------ include/xsimd/arch/xsimd_avx512vbmi.hpp | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/include/xsimd/arch/xsimd_avx512bw.hpp b/include/xsimd/arch/xsimd_avx512bw.hpp index 1c9416d4d..136adf1fe 100644 --- a/include/xsimd/arch/xsimd_avx512bw.hpp +++ b/include/xsimd/arch/xsimd_avx512bw.hpp @@ -684,18 +684,6 @@ namespace xsimd return bitwise_cast(swizzle(bitwise_cast(self), mask, avx512bw {})); } - template - XSIMD_INLINE batch swizzle(batch const& self, batch mask, requires_arch) noexcept - { - return _mm512_shuffle_epi8(self, mask); - } - - template - XSIMD_INLINE batch swizzle(batch const& self, batch mask, requires_arch) noexcept - { - return bitwise_cast(swizzle(bitwise_cast(self), mask, avx512bw {})); - } - // swizzle (static version) template XSIMD_INLINE batch swizzle(batch const& self, batch_constant mask, requires_arch) noexcept @@ -709,18 +697,6 @@ namespace xsimd return swizzle(self, mask.as_batch(), avx512bw {}); } - template - XSIMD_INLINE batch swizzle(batch const& self, batch_constant mask, requires_arch) noexcept - { - return swizzle(self, mask.as_batch(), avx512bw {}); - } - - template - XSIMD_INLINE batch swizzle(batch const& self, batch_constant mask, requires_arch) noexcept - { - return swizzle(self, mask.as_batch(), avx512bw {}); - } - // zip_hi template ::value, void>::type> XSIMD_INLINE batch zip_hi(batch const& self, batch const& other, requires_arch) noexcept diff --git a/include/xsimd/arch/xsimd_avx512vbmi.hpp b/include/xsimd/arch/xsimd_avx512vbmi.hpp index d17b674c7..680b23836 100644 --- a/include/xsimd/arch/xsimd_avx512vbmi.hpp +++ b/include/xsimd/arch/xsimd_avx512vbmi.hpp @@ -74,6 +74,31 @@ namespace xsimd return _mm512_maskz_permutexvar_epi8(mask, _mm512_load_epi32(slide_pattern.data()), x); } + // swizzle (dynamic version) + template + XSIMD_INLINE batch swizzle(batch const& self, batch mask, requires_arch) noexcept + { + return _mm512_permutexvar_epi8(mask, self); + } + + template + XSIMD_INLINE batch swizzle(batch const& self, batch mask, requires_arch) noexcept + { + return bitwise_cast(swizzle(bitwise_cast(self), mask, avx512vbmi {})); + } + + // swizzle (static version) + template + XSIMD_INLINE batch swizzle(batch const& self, batch_constant mask, requires_arch) noexcept + { + return swizzle(self, mask.as_batch(), avx512vbmi {}); + } + + template + XSIMD_INLINE batch swizzle(batch const& self, batch_constant mask, requires_arch) noexcept + { + return swizzle(self, mask.as_batch(), avx512vbmi {}); + } } } From 21e98dc67b7aacc2a37463c1f41d2b14789deb38 Mon Sep 17 00:00:00 2001 From: "liangbin.mj" Date: Thu, 3 Apr 2025 14:49:05 +0800 Subject: [PATCH 5/5] Renaming avx512vnni_vbmi file to avx512vnni_vbmi2, NFC --- ...vnni_avx512vbmi.hpp => xsimd_avx512vnni_avx512vbmi2.hpp} | 6 +++--- include/xsimd/arch/xsimd_isa.hpp | 2 +- include/xsimd/types/xsimd_all_registers.hpp | 2 +- ...gister.hpp => xsimd_avx512vnni_avx512vbmi2_register.hpp} | 0 4 files changed, 5 insertions(+), 5 deletions(-) rename include/xsimd/arch/{xsimd_avx512vnni_avx512vbmi.hpp => xsimd_avx512vnni_avx512vbmi2.hpp} (85%) rename include/xsimd/types/{xsimd_avx512vnni_avx512vbmi_register.hpp => xsimd_avx512vnni_avx512vbmi2_register.hpp} (100%) diff --git a/include/xsimd/arch/xsimd_avx512vnni_avx512vbmi.hpp b/include/xsimd/arch/xsimd_avx512vnni_avx512vbmi2.hpp similarity index 85% rename from include/xsimd/arch/xsimd_avx512vnni_avx512vbmi.hpp rename to include/xsimd/arch/xsimd_avx512vnni_avx512vbmi2.hpp index a70d30fad..0b4ffd2e4 100644 --- a/include/xsimd/arch/xsimd_avx512vnni_avx512vbmi.hpp +++ b/include/xsimd/arch/xsimd_avx512vnni_avx512vbmi2.hpp @@ -9,12 +9,12 @@ * The full license is in the file LICENSE, distributed with this software. * ****************************************************************************/ -#ifndef XSIMD_AVX512VNNI_AVX512VBMI_HPP -#define XSIMD_AVX512VNNI_AVX512VBMI_HPP +#ifndef XSIMD_AVX512VNNI_AVX512VBMI2_HPP +#define XSIMD_AVX512VNNI_AVX512VBMI2_HPP #include #include -#include "../types/xsimd_avx512vnni_avx512vbmi_register.hpp" +#include "../types/xsimd_avx512vnni_avx512vbmi2_register.hpp" #endif diff --git a/include/xsimd/arch/xsimd_isa.hpp b/include/xsimd/arch/xsimd_isa.hpp index 946cbd5e5..a617f836d 100644 --- a/include/xsimd/arch/xsimd_isa.hpp +++ b/include/xsimd/arch/xsimd_isa.hpp @@ -101,7 +101,7 @@ #endif #if XSIMD_WITH_AVX512VNNI_AVX512VBMI2 -#include "./xsimd_avx512vnni_avx512vbmi.hpp" +#include "./xsimd_avx512vnni_avx512vbmi2.hpp" #endif #if XSIMD_WITH_NEON diff --git a/include/xsimd/types/xsimd_all_registers.hpp b/include/xsimd/types/xsimd_all_registers.hpp index efdbcad68..a652061a8 100644 --- a/include/xsimd/types/xsimd_all_registers.hpp +++ b/include/xsimd/types/xsimd_all_registers.hpp @@ -23,7 +23,7 @@ #include "xsimd_fma3_avx_register.hpp" #include "xsimd_avx512vnni_avx512bw_register.hpp" -#include "xsimd_avx512vnni_avx512vbmi_register.hpp" +#include "xsimd_avx512vnni_avx512vbmi2_register.hpp" #include "xsimd_avx512ifma_register.hpp" #include "xsimd_avx512vbmi2_register.hpp" diff --git a/include/xsimd/types/xsimd_avx512vnni_avx512vbmi_register.hpp b/include/xsimd/types/xsimd_avx512vnni_avx512vbmi2_register.hpp similarity index 100% rename from include/xsimd/types/xsimd_avx512vnni_avx512vbmi_register.hpp rename to include/xsimd/types/xsimd_avx512vnni_avx512vbmi2_register.hpp