native 0.0.1
Vectors, masks and wide register packs for C++26
Loading...
Searching...
No Matches
native.x86.vnni Module Reference

Exported Modules

module  native.x86.features
module  native.simd

Functions

template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnni))
constexpr simd< std::int32_t, 4, Arch > native::dpbusd (simd< std::int32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and signed bytes from b, modulo 2^32. Uses AVX-VNNI.
template<isa< x86 > Arch>
requires (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::dpbusd (simd< std::int32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and signed bytes from b, modulo 2^32. Uses AVX512VNNI.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::mask_dpbusd (simd< std::int32_t, 4, Arch > accumulator, predicate< 4, Arch > maskmask, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 dpbusd in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::maskz_dpbusd (predicate< 4, Arch > maskmask, simd< std::int32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 dpbusd in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnni))
constexpr simd< std::int32_t, 4, Arch > native::dpbusds (simd< std::int32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and signed bytes from b, with signed 32-bit saturation. Uses AVX-VNNI.
template<isa< x86 > Arch>
requires (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::dpbusds (simd< std::int32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and signed bytes from b, with signed 32-bit saturation. Uses AVX512VNNI.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::mask_dpbusds (simd< std::int32_t, 4, Arch > accumulator, predicate< 4, Arch > maskmask, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 dpbusds in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::maskz_dpbusds (predicate< 4, Arch > maskmask, simd< std::int32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 dpbusds in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnni))
constexpr simd< std::int32_t, 4, Arch > native::dpwssd (simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Accumulate products of two signed words from a and b, modulo 2^32. Uses AVX-VNNI.
template<isa< x86 > Arch>
requires (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::dpwssd (simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Accumulate products of two signed words from a and b, modulo 2^32. Uses AVX512VNNI.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::mask_dpwssd (simd< std::int32_t, 4, Arch > accumulator, predicate< 4, Arch > maskmask, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 dpwssd in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::maskz_dpwssd (predicate< 4, Arch > maskmask, simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 dpwssd in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnni))
constexpr simd< std::int32_t, 4, Arch > native::dpwssds (simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Accumulate products of two signed words from a and b, with signed 32-bit saturation. Uses AVX-VNNI.
template<isa< x86 > Arch>
requires (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::dpwssds (simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Accumulate products of two signed words from a and b, with signed 32-bit saturation. Uses AVX512VNNI.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::mask_dpwssds (simd< std::int32_t, 4, Arch > accumulator, predicate< 4, Arch > maskmask, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 dpwssds in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 4, Arch > native::maskz_dpwssds (predicate< 4, Arch > maskmask, simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 dpwssds in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnni))
constexpr simd< std::int32_t, 8, Arch > native::dpbusd (simd< std::int32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and signed bytes from b, modulo 2^32. Uses AVX-VNNI.
template<isa< x86 > Arch>
requires (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::dpbusd (simd< std::int32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and signed bytes from b, modulo 2^32. Uses AVX512VNNI.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::mask_dpbusd (simd< std::int32_t, 8, Arch > accumulator, predicate< 8, Arch > maskmask, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 dpbusd in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::maskz_dpbusd (predicate< 8, Arch > maskmask, simd< std::int32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 dpbusd in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnni))
constexpr simd< std::int32_t, 8, Arch > native::dpbusds (simd< std::int32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and signed bytes from b, with signed 32-bit saturation. Uses AVX-VNNI.
template<isa< x86 > Arch>
requires (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::dpbusds (simd< std::int32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and signed bytes from b, with signed 32-bit saturation. Uses AVX512VNNI.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::mask_dpbusds (simd< std::int32_t, 8, Arch > accumulator, predicate< 8, Arch > maskmask, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 dpbusds in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::maskz_dpbusds (predicate< 8, Arch > maskmask, simd< std::int32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 dpbusds in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnni))
constexpr simd< std::int32_t, 8, Arch > native::dpwssd (simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Accumulate products of two signed words from a and b, modulo 2^32. Uses AVX-VNNI.
template<isa< x86 > Arch>
requires (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::dpwssd (simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Accumulate products of two signed words from a and b, modulo 2^32. Uses AVX512VNNI.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::mask_dpwssd (simd< std::int32_t, 8, Arch > accumulator, predicate< 8, Arch > maskmask, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 dpwssd in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::maskz_dpwssd (predicate< 8, Arch > maskmask, simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 dpwssd in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnni))
constexpr simd< std::int32_t, 8, Arch > native::dpwssds (simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Accumulate products of two signed words from a and b, with signed 32-bit saturation. Uses AVX-VNNI.
template<isa< x86 > Arch>
requires (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::dpwssds (simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Accumulate products of two signed words from a and b, with signed 32-bit saturation. Uses AVX512VNNI.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::mask_dpwssds (simd< std::int32_t, 8, Arch > accumulator, predicate< 8, Arch > maskmask, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 dpwssds in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::int32_t, 8, Arch > native::maskz_dpwssds (predicate< 8, Arch > maskmask, simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 dpwssds in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::dpbusd (simd< std::int32_t, 16, Arch > accumulator, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and signed bytes from b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::mask_dpbusd (simd< std::int32_t, 16, Arch > accumulator, predicate< 16, Arch > maskmask, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 dpbusd in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::maskz_dpbusd (predicate< 16, Arch > maskmask, simd< std::int32_t, 16, Arch > accumulator, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 dpbusd in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::dpbusds (simd< std::int32_t, 16, Arch > accumulator, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and signed bytes from b, with signed 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::mask_dpbusds (simd< std::int32_t, 16, Arch > accumulator, predicate< 16, Arch > maskmask, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 dpbusds in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::maskz_dpbusds (predicate< 16, Arch > maskmask, simd< std::int32_t, 16, Arch > accumulator, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 dpbusds in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::dpwssd (simd< std::int32_t, 16, Arch > accumulator, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 Accumulate products of two signed words from a and b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::mask_dpwssd (simd< std::int32_t, 16, Arch > accumulator, predicate< 16, Arch > maskmask, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 dpwssd in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::maskz_dpwssd (predicate< 16, Arch > maskmask, simd< std::int32_t, 16, Arch > accumulator, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 dpwssd in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::dpwssds (simd< std::int32_t, 16, Arch > accumulator, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 Accumulate products of two signed words from a and b, with signed 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::mask_dpwssds (simd< std::int32_t, 16, Arch > accumulator, predicate< 16, Arch > maskmask, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 dpwssds in active lanes; inactive lanes retain accumulator.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))
constexpr simd< std::int32_t, 16, Arch > native::maskz_dpwssds (predicate< 16, Arch > maskmask, simd< std::int32_t, 16, Arch > accumulator, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 dpwssds in active lanes; inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::int32_t, 4, Arch > native::dpbssd (simd< std::int32_t, 4, Arch > accumulator, simd< std::int8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Accumulate products of four signed bytes from a and b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::int32_t, 8, Arch > native::dpbssd (simd< std::int32_t, 8, Arch > accumulator, simd< std::int8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Accumulate products of four signed bytes from a and b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::int32_t, 4, Arch > native::dpbssds (simd< std::int32_t, 4, Arch > accumulator, simd< std::int8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Accumulate products of four signed bytes from a and b, with signed 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::int32_t, 8, Arch > native::dpbssds (simd< std::int32_t, 8, Arch > accumulator, simd< std::int8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Accumulate products of four signed bytes from a and b, with signed 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::int32_t, 4, Arch > native::dpbsud (simd< std::int32_t, 4, Arch > accumulator, simd< std::int8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b) noexcept
 Accumulate products of four signed bytes from a and unsigned bytes from b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::int32_t, 8, Arch > native::dpbsud (simd< std::int32_t, 8, Arch > accumulator, simd< std::int8_t, 32, Arch > a, simd< std::uint8_t, 32, Arch > b) noexcept
 Accumulate products of four signed bytes from a and unsigned bytes from b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::int32_t, 4, Arch > native::dpbsuds (simd< std::int32_t, 4, Arch > accumulator, simd< std::int8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b) noexcept
 Accumulate products of four signed bytes from a and unsigned bytes from b, with signed 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::int32_t, 8, Arch > native::dpbsuds (simd< std::int32_t, 8, Arch > accumulator, simd< std::int8_t, 32, Arch > a, simd< std::uint8_t, 32, Arch > b) noexcept
 Accumulate products of four signed bytes from a and unsigned bytes from b, with signed 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::uint32_t, 4, Arch > native::dpbuud (simd< std::uint32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::uint32_t, 8, Arch > native::dpbuud (simd< std::uint32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::uint8_t, 32, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::uint32_t, 4, Arch > native::dpbuuds (simd< std::uint32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and b, with unsigned 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint8))
constexpr simd< std::uint32_t, 8, Arch > native::dpbuuds (simd< std::uint32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::uint8_t, 32, Arch > b) noexcept
 Accumulate products of four unsigned bytes from a and b, with unsigned 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::int32_t, 4, Arch > native::dpwsud (simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Accumulate products of two signed words from a and unsigned words from b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::int32_t, 8, Arch > native::dpwsud (simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Accumulate products of two signed words from a and unsigned words from b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::int32_t, 4, Arch > native::dpwsuds (simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Accumulate products of two signed words from a and unsigned words from b, with signed 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::int32_t, 8, Arch > native::dpwsuds (simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Accumulate products of two signed words from a and unsigned words from b, with signed 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::int32_t, 4, Arch > native::dpwusd (simd< std::int32_t, 4, Arch > accumulator, simd< std::uint16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Accumulate products of two unsigned words from a and signed words from b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::int32_t, 8, Arch > native::dpwusd (simd< std::int32_t, 8, Arch > accumulator, simd< std::uint16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Accumulate products of two unsigned words from a and signed words from b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::int32_t, 4, Arch > native::dpwusds (simd< std::int32_t, 4, Arch > accumulator, simd< std::uint16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Accumulate products of two unsigned words from a and signed words from b, with signed 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::int32_t, 8, Arch > native::dpwusds (simd< std::int32_t, 8, Arch > accumulator, simd< std::uint16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Accumulate products of two unsigned words from a and signed words from b, with signed 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::uint32_t, 4, Arch > native::dpwuud (simd< std::uint32_t, 4, Arch > accumulator, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Accumulate products of two unsigned words from a and b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::uint32_t, 8, Arch > native::dpwuud (simd< std::uint32_t, 8, Arch > accumulator, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Accumulate products of two unsigned words from a and b, modulo 2^32.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::uint32_t, 4, Arch > native::dpwuuds (simd< std::uint32_t, 4, Arch > accumulator, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Accumulate products of two unsigned words from a and b, with unsigned 32-bit saturation.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avxvnniint16))
constexpr simd< std::uint32_t, 8, Arch > native::dpwuuds (simd< std::uint32_t, 8, Arch > accumulator, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Accumulate products of two unsigned words from a and b, with unsigned 32-bit saturation.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnni)) || (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) &&
Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::uint8_t, 16, Arch>
); sizeof(simd<std::int8_t, 16, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpbusd (simd< std::int32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Evaluate dpbusd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::uint8_t, 16, Arch>); sizeof(simd<std::int8_t, 16, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::mask_dpbusd (simd< std::int32_t, 4, Arch > accumulator, predicate< 4, Arch > maskmask, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Evaluate mask_dpbusd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::uint8_t, 16, Arch>); sizeof(simd<std::int8_t, 16, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::maskz_dpbusd (predicate< 4, Arch > maskmask, simd< std::int32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Evaluate maskz_dpbusd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnni)) || (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) &&
Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::uint8_t, 16, Arch>
); sizeof(simd<std::int8_t, 16, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpbusds (simd< std::int32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Evaluate dpbusds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::uint8_t, 16, Arch>); sizeof(simd<std::int8_t, 16, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::mask_dpbusds (simd< std::int32_t, 4, Arch > accumulator, predicate< 4, Arch > maskmask, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Evaluate mask_dpbusds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::uint8_t, 16, Arch>); sizeof(simd<std::int8_t, 16, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::maskz_dpbusds (predicate< 4, Arch > maskmask, simd< std::int32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Evaluate maskz_dpbusds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnni)) || (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) &&
Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int16_t, 8, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpwssd (simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Evaluate dpwssd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int16_t, 8, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::mask_dpwssd (simd< std::int32_t, 4, Arch > accumulator, predicate< 4, Arch > maskmask, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Evaluate mask_dpwssd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int16_t, 8, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::maskz_dpwssd (predicate< 4, Arch > maskmask, simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Evaluate maskz_dpwssd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnni)) || (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) &&
Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int16_t, 8, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpwssds (simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Evaluate dpwssds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int16_t, 8, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::mask_dpwssds (simd< std::int32_t, 4, Arch > accumulator, predicate< 4, Arch > maskmask, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Evaluate mask_dpwssds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int16_t, 8, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::maskz_dpwssds (predicate< 4, Arch > maskmask, simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Evaluate maskz_dpwssds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnni)) || (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) &&
Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::uint8_t, 32, Arch>
); sizeof(simd<std::int8_t, 32, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpbusd (simd< std::int32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Evaluate dpbusd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::uint8_t, 32, Arch>); sizeof(simd<std::int8_t, 32, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::mask_dpbusd (simd< std::int32_t, 8, Arch > accumulator, predicate< 8, Arch > maskmask, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Evaluate mask_dpbusd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::uint8_t, 32, Arch>); sizeof(simd<std::int8_t, 32, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::maskz_dpbusd (predicate< 8, Arch > maskmask, simd< std::int32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Evaluate maskz_dpbusd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnni)) || (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) &&
Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::uint8_t, 32, Arch>
); sizeof(simd<std::int8_t, 32, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpbusds (simd< std::int32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Evaluate dpbusds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::uint8_t, 32, Arch>); sizeof(simd<std::int8_t, 32, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::mask_dpbusds (simd< std::int32_t, 8, Arch > accumulator, predicate< 8, Arch > maskmask, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Evaluate mask_dpbusds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::uint8_t, 32, Arch>); sizeof(simd<std::int8_t, 32, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::maskz_dpbusds (predicate< 8, Arch > maskmask, simd< std::int32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Evaluate maskz_dpbusds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnni)) || (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) &&
Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int16_t, 16, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpwssd (simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Evaluate dpwssd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int16_t, 16, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::mask_dpwssd (simd< std::int32_t, 8, Arch > accumulator, predicate< 8, Arch > maskmask, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Evaluate mask_dpwssd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int16_t, 16, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::maskz_dpwssd (predicate< 8, Arch > maskmask, simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Evaluate maskz_dpwssd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnni)) || (!Arch.has(x86_feature::avxvnni) && Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) &&
Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int16_t, 16, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpwssds (simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Evaluate dpwssds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int16_t, 16, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::mask_dpwssds (simd< std::int32_t, 8, Arch > accumulator, predicate< 8, Arch > maskmask, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Evaluate mask_dpwssds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni) && Arch.has(x86_feature::avx512vl))) && requires
{ sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int16_t, 16, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::maskz_dpwssds (predicate< 8, Arch > maskmask, simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Evaluate maskz_dpwssds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::uint8_t, 64, Arch>); sizeof(simd<std::int8_t, 64, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::dpbusd (simd< std::int32_t, 16, Arch > accumulator, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 Evaluate dpbusd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::uint8_t, 64, Arch>); sizeof(simd<std::int8_t, 64, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::mask_dpbusd (simd< std::int32_t, 16, Arch > accumulator, predicate< 16, Arch > maskmask, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 Evaluate mask_dpbusd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::uint8_t, 64, Arch>); sizeof(simd<std::int8_t, 64, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::maskz_dpbusd (predicate< 16, Arch > maskmask, simd< std::int32_t, 16, Arch > accumulator, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 Evaluate maskz_dpbusd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::uint8_t, 64, Arch>); sizeof(simd<std::int8_t, 64, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::dpbusds (simd< std::int32_t, 16, Arch > accumulator, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 Evaluate dpbusds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::uint8_t, 64, Arch>); sizeof(simd<std::int8_t, 64, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::mask_dpbusds (simd< std::int32_t, 16, Arch > accumulator, predicate< 16, Arch > maskmask, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 Evaluate mask_dpbusds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::uint8_t, 64, Arch>); sizeof(simd<std::int8_t, 64, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::maskz_dpbusds (predicate< 16, Arch > maskmask, simd< std::int32_t, 16, Arch > accumulator, simd< std::uint8_t, 64, Arch > a, simd< std::int8_t, 64, Arch > b) noexcept
 Evaluate maskz_dpbusds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::int16_t, 32, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::dpwssd (simd< std::int32_t, 16, Arch > accumulator, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 Evaluate dpwssd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::int16_t, 32, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::mask_dpwssd (simd< std::int32_t, 16, Arch > accumulator, predicate< 16, Arch > maskmask, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 Evaluate mask_dpwssd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::int16_t, 32, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::maskz_dpwssd (predicate< 16, Arch > maskmask, simd< std::int32_t, 16, Arch > accumulator, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 Evaluate maskz_dpwssd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::int16_t, 32, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::dpwssds (simd< std::int32_t, 16, Arch > accumulator, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 Evaluate dpwssds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::int16_t, 32, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::mask_dpwssds (simd< std::int32_t, 16, Arch > accumulator, predicate< 16, Arch > maskmask, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 Evaluate mask_dpwssds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vnni))) && requires { sizeof(simd<std::int32_t,
16, Arch>); sizeof(simd<std::int16_t, 32, Arch>); })
consteval simd< std::int32_t, 16, Arch > native::maskz_dpwssds (predicate< 16, Arch > maskmask, simd< std::int32_t, 16, Arch > accumulator, simd< std::int16_t, 32, Arch > a, simd< std::int16_t, 32, Arch > b) noexcept
 Evaluate maskz_dpwssds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int8_t,
16, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpbssd (simd< std::int32_t, 4, Arch > accumulator, simd< std::int8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Evaluate dpbssd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int8_t,
32, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpbssd (simd< std::int32_t, 8, Arch > accumulator, simd< std::int8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Evaluate dpbssd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int8_t,
16, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpbssds (simd< std::int32_t, 4, Arch > accumulator, simd< std::int8_t, 16, Arch > a, simd< std::int8_t, 16, Arch > b) noexcept
 Evaluate dpbssds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int8_t,
32, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpbssds (simd< std::int32_t, 8, Arch > accumulator, simd< std::int8_t, 32, Arch > a, simd< std::int8_t, 32, Arch > b) noexcept
 Evaluate dpbssds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int8_t,
16, Arch>); sizeof(simd<std::uint8_t, 16, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpbsud (simd< std::int32_t, 4, Arch > accumulator, simd< std::int8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b) noexcept
 Evaluate dpbsud at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int8_t,
32, Arch>); sizeof(simd<std::uint8_t, 32, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpbsud (simd< std::int32_t, 8, Arch > accumulator, simd< std::int8_t, 32, Arch > a, simd< std::uint8_t, 32, Arch > b) noexcept
 Evaluate dpbsud at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int8_t,
16, Arch>); sizeof(simd<std::uint8_t, 16, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpbsuds (simd< std::int32_t, 4, Arch > accumulator, simd< std::int8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b) noexcept
 Evaluate dpbsuds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int8_t,
32, Arch>); sizeof(simd<std::uint8_t, 32, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpbsuds (simd< std::int32_t, 8, Arch > accumulator, simd< std::int8_t, 32, Arch > a, simd< std::uint8_t, 32, Arch > b) noexcept
 Evaluate dpbsuds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::uint32_t, 4, Arch>); sizeof(simd<std::uint8_t,
16, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::dpbuud (simd< std::uint32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b) noexcept
 Evaluate dpbuud at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::uint32_t, 8, Arch>); sizeof(simd<std::uint8_t,
32, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::dpbuud (simd< std::uint32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::uint8_t, 32, Arch > b) noexcept
 Evaluate dpbuud at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::uint32_t, 4, Arch>); sizeof(simd<std::uint8_t,
16, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::dpbuuds (simd< std::uint32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b) noexcept
 Evaluate dpbuuds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint8))) && requires { sizeof(simd<std::uint32_t, 8, Arch>); sizeof(simd<std::uint8_t,
32, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::dpbuuds (simd< std::uint32_t, 8, Arch > accumulator, simd< std::uint8_t, 32, Arch > a, simd< std::uint8_t, 32, Arch > b) noexcept
 Evaluate dpbuuds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int16_t,
8, Arch>); sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpwsud (simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Evaluate dpwsud at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int16_t,
16, Arch>); sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpwsud (simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Evaluate dpwsud at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::int16_t,
8, Arch>); sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpwsuds (simd< std::int32_t, 4, Arch > accumulator, simd< std::int16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Evaluate dpwsuds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::int16_t,
16, Arch>); sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpwsuds (simd< std::int32_t, 8, Arch > accumulator, simd< std::int16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Evaluate dpwsuds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::uint16_t,
8, Arch>); sizeof(simd<std::int16_t, 8, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpwusd (simd< std::int32_t, 4, Arch > accumulator, simd< std::uint16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Evaluate dpwusd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::uint16_t,
16, Arch>); sizeof(simd<std::int16_t, 16, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpwusd (simd< std::int32_t, 8, Arch > accumulator, simd< std::uint16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Evaluate dpwusd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::int32_t, 4, Arch>); sizeof(simd<std::uint16_t,
8, Arch>); sizeof(simd<std::int16_t, 8, Arch>); })
consteval simd< std::int32_t, 4, Arch > native::dpwusds (simd< std::int32_t, 4, Arch > accumulator, simd< std::uint16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept
 Evaluate dpwusds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::int32_t, 8, Arch>); sizeof(simd<std::uint16_t,
16, Arch>); sizeof(simd<std::int16_t, 16, Arch>); })
consteval simd< std::int32_t, 8, Arch > native::dpwusds (simd< std::int32_t, 8, Arch > accumulator, simd< std::uint16_t, 16, Arch > a, simd< std::int16_t, 16, Arch > b) noexcept
 Evaluate dpwusds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::uint32_t, 4, Arch>); sizeof(simd<std::uint16_t,
8, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::dpwuud (simd< std::uint32_t, 4, Arch > accumulator, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Evaluate dpwuud at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::uint32_t, 8, Arch>); sizeof(simd<std::uint16_t,
16, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::dpwuud (simd< std::uint32_t, 8, Arch > accumulator, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Evaluate dpwuud at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::uint32_t, 4, Arch>); sizeof(simd<std::uint16_t,
8, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::dpwuuds (simd< std::uint32_t, 4, Arch > accumulator, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Evaluate dpwuuds at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!((Arch.has(x86_feature::avxvnniint16))) && requires { sizeof(simd<std::uint32_t, 8, Arch>); sizeof(simd<std::uint16_t,
16, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::dpwuuds (simd< std::uint32_t, 8, Arch > accumulator, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Evaluate dpwuuds at compile time when its register storage is available.
template<isa< x86 > Arch, class... Args>
void native::dpbusd (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::mask_dpbusd (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::maskz_dpbusd (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpbusds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::mask_dpbusds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::maskz_dpbusds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpwssd (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::mask_dpwssd (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::maskz_dpwssd (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpwssds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::mask_dpwssds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::maskz_dpwssds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpbssd (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpbssds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpbsud (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpbsuds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpbuud (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpbuuds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpwsud (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpwsuds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpwusd (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpwusds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpwuud (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.
template<isa< x86 > Arch, class... Args>
void native::dpwuuds (Args...)=delete
 Reject unsupported signatures, including implicit raw-register conversions.

Files

file  src/native.x86.vnni.ccm