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

Exported Modules

module  native.x86.features
module  native.simd

Functions

template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint8_t, 16, Arch > native::mask_vpcompressb (simd< std::uint8_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint8_t, 16, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint8_t, 16, Arch > native::maskz_vpcompressb (predicate< 16, Arch > maskmask, simd< std::uint8_t, 16, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Remaining result lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr void native::mask_vpcompressb (std::uint8_t *destination, predicate< 16, Arch > maskmask, simd< std::uint8_t, 16, Arch > value) noexcept
 Store selected lanes in order; destination has popcount(mask) writable elements, or may be null if empty.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint8_t, 16, Arch > native::mask_vpexpandb (simd< std::uint8_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint8_t, 16, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint8_t, 16, Arch > native::maskz_vpexpandb (predicate< 16, Arch > maskmask, simd< std::uint8_t, 16, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Remaining result lanes become zero.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>))
constexpr simd< std::uint8_t, 16, Arch > native::mask_vpexpandb (simd< std::uint8_t, 16, Arch > source, predicate< 16, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>))
constexpr simd< std::uint8_t, 16, Arch > native::maskz_vpexpandb (predicate< 16, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 8, Arch > native::mask_vpcompressw (simd< std::uint16_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 8, Arch > native::maskz_vpcompressw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Remaining result lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr void native::mask_vpcompressw (std::uint16_t *destination, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > value) noexcept
 Store selected lanes in order; destination has popcount(mask) writable elements, or may be null if empty.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 8, Arch > native::mask_vpexpandw (simd< std::uint16_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 8, Arch > native::maskz_vpexpandw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Remaining result lanes become zero.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>))
constexpr simd< std::uint16_t, 8, Arch > native::mask_vpexpandw (simd< std::uint16_t, 8, Arch > source, predicate< 8, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>))
constexpr simd< std::uint16_t, 8, Arch > native::maskz_vpexpandw (predicate< 8, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 8, Arch > native::vpshldw (simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Shift concatenated lanes left using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 8, Arch > native::mask_vpshldw (simd< std::uint16_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 8, Arch > native::maskz_vpshldw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 8, Arch > native::vpshldvw (simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 8, Arch > native::mask_vpshldvw (simd< std::uint16_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 8, Arch > native::maskz_vpshldvw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 8, Arch > native::vpshrdw (simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Shift concatenated lanes right using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 8, Arch > native::mask_vpshrdw (simd< std::uint16_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 8, Arch > native::maskz_vpshrdw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 8, Arch > native::vpshrdvw (simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 8, Arch > native::mask_vpshrdvw (simd< std::uint16_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 8, Arch > native::maskz_vpshrdvw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 4, Arch > native::vpshldd (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Shift concatenated lanes left using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 4, Arch > native::mask_vpshldd (simd< std::uint32_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 4, Arch > native::maskz_vpshldd (predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 4, Arch > native::vpshldvd (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 4, Arch > native::mask_vpshldvd (simd< std::uint32_t, 4, Arch > a, predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 4, Arch > native::maskz_vpshldvd (predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 4, Arch > native::vpshrdd (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Shift concatenated lanes right using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 4, Arch > native::mask_vpshrdd (simd< std::uint32_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 4, Arch > native::maskz_vpshrdd (predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 4, Arch > native::vpshrdvd (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 4, Arch > native::mask_vpshrdvd (simd< std::uint32_t, 4, Arch > a, predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 4, Arch > native::maskz_vpshrdvd (predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 2, Arch > native::vpshldq (simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Shift concatenated lanes left using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 2, Arch > native::mask_vpshldq (simd< std::uint64_t, 2, Arch > source, predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 2, Arch > native::maskz_vpshldq (predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 2, Arch > native::vpshldvq (simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 2, Arch > native::mask_vpshldvq (simd< std::uint64_t, 2, Arch > a, predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 2, Arch > native::maskz_vpshldvq (predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 2, Arch > native::vpshrdq (simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Shift concatenated lanes right using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 2, Arch > native::mask_vpshrdq (simd< std::uint64_t, 2, Arch > source, predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 2, Arch > native::maskz_vpshrdq (predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 2, Arch > native::vpshrdvq (simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 2, Arch > native::mask_vpshrdvq (simd< std::uint64_t, 2, Arch > a, predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 2, Arch > native::maskz_vpshrdvq (predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint8_t, 32, Arch > native::mask_vpcompressb (simd< std::uint8_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint8_t, 32, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint8_t, 32, Arch > native::maskz_vpcompressb (predicate< 32, Arch > maskmask, simd< std::uint8_t, 32, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Remaining result lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr void native::mask_vpcompressb (std::uint8_t *destination, predicate< 32, Arch > maskmask, simd< std::uint8_t, 32, Arch > value) noexcept
 Store selected lanes in order; destination has popcount(mask) writable elements, or may be null if empty.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint8_t, 32, Arch > native::mask_vpexpandb (simd< std::uint8_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint8_t, 32, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint8_t, 32, Arch > native::maskz_vpexpandb (predicate< 32, Arch > maskmask, simd< std::uint8_t, 32, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Remaining result lanes become zero.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>))
constexpr simd< std::uint8_t, 32, Arch > native::mask_vpexpandb (simd< std::uint8_t, 32, Arch > source, predicate< 32, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>))
constexpr simd< std::uint8_t, 32, Arch > native::maskz_vpexpandb (predicate< 32, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 16, Arch > native::mask_vpcompressw (simd< std::uint16_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 16, Arch > native::maskz_vpcompressw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Remaining result lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr void native::mask_vpcompressw (std::uint16_t *destination, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > value) noexcept
 Store selected lanes in order; destination has popcount(mask) writable elements, or may be null if empty.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 16, Arch > native::mask_vpexpandw (simd< std::uint16_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 16, Arch > native::maskz_vpexpandw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Remaining result lanes become zero.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>))
constexpr simd< std::uint16_t, 16, Arch > native::mask_vpexpandw (simd< std::uint16_t, 16, Arch > source, predicate< 16, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>))
constexpr simd< std::uint16_t, 16, Arch > native::maskz_vpexpandw (predicate< 16, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 16, Arch > native::vpshldw (simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Shift concatenated lanes left using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 16, Arch > native::mask_vpshldw (simd< std::uint16_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 16, Arch > native::maskz_vpshldw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 16, Arch > native::vpshldvw (simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 16, Arch > native::mask_vpshldvw (simd< std::uint16_t, 16, Arch > a, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 16, Arch > native::maskz_vpshldvw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 16, Arch > native::vpshrdw (simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Shift concatenated lanes right using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 16, Arch > native::mask_vpshrdw (simd< std::uint16_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint16_t, 16, Arch > native::maskz_vpshrdw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 16, Arch > native::vpshrdvw (simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 16, Arch > native::mask_vpshrdvw (simd< std::uint16_t, 16, Arch > a, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint16_t, 16, Arch > native::maskz_vpshrdvw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 8, Arch > native::vpshldd (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Shift concatenated lanes left using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 8, Arch > native::mask_vpshldd (simd< std::uint32_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 8, Arch > native::maskz_vpshldd (predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 8, Arch > native::vpshldvd (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 8, Arch > native::mask_vpshldvd (simd< std::uint32_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 8, Arch > native::maskz_vpshldvd (predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 8, Arch > native::vpshrdd (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Shift concatenated lanes right using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 8, Arch > native::mask_vpshrdd (simd< std::uint32_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint32_t, 8, Arch > native::maskz_vpshrdd (predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 8, Arch > native::vpshrdvd (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 8, Arch > native::mask_vpshrdvd (simd< std::uint32_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint32_t, 8, Arch > native::maskz_vpshrdvd (predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 4, Arch > native::vpshldq (simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Shift concatenated lanes left using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 4, Arch > native::mask_vpshldq (simd< std::uint64_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 4, Arch > native::maskz_vpshldq (predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 4, Arch > native::vpshldvq (simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 4, Arch > native::mask_vpshldvq (simd< std::uint64_t, 4, Arch > a, predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 4, Arch > native::maskz_vpshldvq (predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 4, Arch > native::vpshrdq (simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Shift concatenated lanes right using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 4, Arch > native::mask_vpshrdq (simd< std::uint64_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl) &&
Imm8 <= 255)
constexpr simd< std::uint64_t, 4, Arch > native::maskz_vpshrdq (predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 4, Arch > native::vpshrdvq (simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 4, Arch > native::mask_vpshrdvq (simd< std::uint64_t, 4, Arch > a, predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl))
constexpr simd< std::uint64_t, 4, Arch > native::maskz_vpshrdvq (predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint8_t, 64, Arch > native::mask_vpcompressb (simd< std::uint8_t, 64, Arch > source, predicate< 64, Arch > maskmask, simd< std::uint8_t, 64, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint8_t, 64, Arch > native::maskz_vpcompressb (predicate< 64, Arch > maskmask, simd< std::uint8_t, 64, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Remaining result lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr void native::mask_vpcompressb (std::uint8_t *destination, predicate< 64, Arch > maskmask, simd< std::uint8_t, 64, Arch > value) noexcept
 Store selected lanes in order; destination has popcount(mask) writable elements, or may be null if empty.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint8_t, 64, Arch > native::mask_vpexpandb (simd< std::uint8_t, 64, Arch > source, predicate< 64, Arch > maskmask, simd< std::uint8_t, 64, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint8_t, 64, Arch > native::maskz_vpexpandb (predicate< 64, Arch > maskmask, simd< std::uint8_t, 64, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Remaining result lanes become zero.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>))
constexpr simd< std::uint8_t, 64, Arch > native::mask_vpexpandb (simd< std::uint8_t, 64, Arch > source, predicate< 64, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>))
constexpr simd< std::uint8_t, 64, Arch > native::maskz_vpexpandb (predicate< 64, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint16_t, 32, Arch > native::mask_vpcompressw (simd< std::uint16_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint16_t, 32, Arch > native::maskz_vpcompressw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > value) noexcept
 Pack selected lanes in order into the low result lanes. Remaining result lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr void native::mask_vpcompressw (std::uint16_t *destination, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > value) noexcept
 Store selected lanes in order; destination has popcount(mask) writable elements, or may be null if empty.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint16_t, 32, Arch > native::mask_vpexpandw (simd< std::uint16_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Inactive result lanes retain source.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint16_t, 32, Arch > native::maskz_vpexpandw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > value) noexcept
 Expand the packed prefix into selected lanes. Remaining result lanes become zero.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>))
constexpr simd< std::uint16_t, 32, Arch > native::mask_vpexpandw (simd< std::uint16_t, 32, Arch > source, predicate< 32, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch, class T>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>))
constexpr simd< std::uint16_t, 32, Arch > native::maskz_vpexpandw (predicate< 32, Arch > maskmask, T *memory) noexcept
 Expand popcount(mask) readable elements; memory may be null if the logical mask is empty.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint16_t, 32, Arch > native::vpshldw (simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Shift concatenated lanes left using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint16_t, 32, Arch > native::mask_vpshldw (simd< std::uint16_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint16_t, 32, Arch > native::maskz_vpshldw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint16_t, 32, Arch > native::vpshldvw (simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint16_t, 32, Arch > native::mask_vpshldvw (simd< std::uint16_t, 32, Arch > a, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint16_t, 32, Arch > native::maskz_vpshldvw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint16_t, 32, Arch > native::vpshrdw (simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Shift concatenated lanes right using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint16_t, 32, Arch > native::mask_vpshrdw (simd< std::uint16_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint16_t, 32, Arch > native::maskz_vpshrdw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint16_t, 32, Arch > native::vpshrdvw (simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint16_t, 32, Arch > native::mask_vpshrdvw (simd< std::uint16_t, 32, Arch > a, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint16_t, 32, Arch > native::maskz_vpshrdvw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint32_t, 16, Arch > native::vpshldd (simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Shift concatenated lanes left using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint32_t, 16, Arch > native::mask_vpshldd (simd< std::uint32_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint32_t, 16, Arch > native::maskz_vpshldd (predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint32_t, 16, Arch > native::vpshldvd (simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint32_t, 16, Arch > native::mask_vpshldvd (simd< std::uint32_t, 16, Arch > a, predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint32_t, 16, Arch > native::maskz_vpshldvd (predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint32_t, 16, Arch > native::vpshrdd (simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Shift concatenated lanes right using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint32_t, 16, Arch > native::mask_vpshrdd (simd< std::uint32_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint32_t, 16, Arch > native::maskz_vpshrdd (predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint32_t, 16, Arch > native::vpshrdvd (simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint32_t, 16, Arch > native::mask_vpshrdvd (simd< std::uint32_t, 16, Arch > a, predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint32_t, 16, Arch > native::maskz_vpshrdvd (predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint64_t, 8, Arch > native::vpshldq (simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Shift concatenated lanes left using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint64_t, 8, Arch > native::mask_vpshldq (simd< std::uint64_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint64_t, 8, Arch > native::maskz_vpshldq (predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Shift concatenated lanes left using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint64_t, 8, Arch > native::vpshldvq (simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint64_t, 8, Arch > native::mask_vpshldvq (simd< std::uint64_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint64_t, 8, Arch > native::maskz_vpshldvq (predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Shift concatenated lanes left using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint64_t, 8, Arch > native::vpshrdq (simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Shift concatenated lanes right using Imm8.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint64_t, 8, Arch > native::mask_vpshrdq (simd< std::uint64_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes retain source.
template<isa< x86 > Arch, unsigned Imm8>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Imm8 <= 255)
constexpr simd< std::uint64_t, 8, Arch > native::maskz_vpshrdq (predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Shift concatenated lanes right using Imm8. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint64_t, 8, Arch > native::vpshrdvq (simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint64_t, 8, Arch > native::mask_vpshrdvq (simd< std::uint64_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes retain a.
template<isa< x86 > Arch>
requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2))
constexpr simd< std::uint64_t, 8, Arch > native::maskz_vpshrdvq (predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Shift concatenated lanes right using per-lane counts. Inactive lanes become zero.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint8_t, 16, Arch>); })
consteval simd< std::uint8_t, 16, Arch > native::mask_vpcompressb (simd< std::uint8_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint8_t, 16, Arch > value) noexcept
 Evaluate mask_vpcompressb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint8_t, 16, Arch>); })
consteval simd< std::uint8_t, 16, Arch > native::maskz_vpcompressb (predicate< 16, Arch > maskmask, simd< std::uint8_t, 16, Arch > value) noexcept
 Evaluate maskz_vpcompressb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint8_t, 16, Arch>); })
consteval void native::mask_vpcompressb (std::uint8_t *destination, predicate< 16, Arch > maskmask, simd< std::uint8_t, 16, Arch > value) noexcept
 Evaluate mask_vpcompressb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint8_t, 16, Arch>); })
consteval simd< std::uint8_t, 16, Arch > native::mask_vpexpandb (simd< std::uint8_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint8_t, 16, Arch > value) noexcept
 Evaluate mask_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint8_t, 16, Arch>); })
consteval simd< std::uint8_t, 16, Arch > native::maskz_vpexpandb (predicate< 16, Arch > maskmask, simd< std::uint8_t, 16, Arch > value) noexcept
 Evaluate maskz_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>) && requires { sizeof(simd<std::uint8_t, 16, Arch>); })
consteval simd< std::uint8_t, 16, Arch > native::mask_vpexpandb (simd< std::uint8_t, 16, Arch > source, predicate< 16, Arch > maskmask, T *memory) noexcept
 Evaluate mask_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>) && requires { sizeof(simd<std::uint8_t, 16, Arch>); })
consteval simd< std::uint8_t, 16, Arch > native::maskz_vpexpandb (predicate< 16, Arch > maskmask, T *memory) noexcept
 Evaluate maskz_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::mask_vpcompressw (simd< std::uint16_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > value) noexcept
 Evaluate mask_vpcompressw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::maskz_vpcompressw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > value) noexcept
 Evaluate maskz_vpcompressw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval void native::mask_vpcompressw (std::uint16_t *destination, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > value) noexcept
 Evaluate mask_vpcompressw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::mask_vpexpandw (simd< std::uint16_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > value) noexcept
 Evaluate mask_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::maskz_vpexpandw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > value) noexcept
 Evaluate maskz_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>) && requires { sizeof(simd<std::uint16_t,
8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::mask_vpexpandw (simd< std::uint16_t, 8, Arch > source, predicate< 8, Arch > maskmask, T *memory) noexcept
 Evaluate mask_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>) && requires { sizeof(simd<std::uint16_t,
8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::maskz_vpexpandw (predicate< 8, Arch > maskmask, T *memory) noexcept
 Evaluate maskz_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::vpshldw (simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Evaluate vpshldw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::mask_vpshldw (simd< std::uint16_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Evaluate mask_vpshldw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::maskz_vpshldw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Evaluate maskz_vpshldw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::vpshldvw (simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Evaluate vpshldvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::mask_vpshldvw (simd< std::uint16_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Evaluate mask_vpshldvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::maskz_vpshldvw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Evaluate maskz_vpshldvw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::vpshrdw (simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Evaluate vpshrdw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::mask_vpshrdw (simd< std::uint16_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Evaluate mask_vpshrdw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::maskz_vpshrdw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b) noexcept
 Evaluate maskz_vpshrdw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::vpshrdvw (simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Evaluate vpshrdvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::mask_vpshrdvw (simd< std::uint16_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Evaluate mask_vpshrdvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 8, Arch>); })
consteval simd< std::uint16_t, 8, Arch > native::maskz_vpshrdvw (predicate< 8, Arch > maskmask, simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > counts) noexcept
 Evaluate maskz_vpshrdvw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::vpshldd (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Evaluate vpshldd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::mask_vpshldd (simd< std::uint32_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Evaluate mask_vpshldd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::maskz_vpshldd (predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Evaluate maskz_vpshldd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::vpshldvd (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Evaluate vpshldvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::mask_vpshldvd (simd< std::uint32_t, 4, Arch > a, predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Evaluate mask_vpshldvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::maskz_vpshldvd (predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Evaluate maskz_vpshldvd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::vpshrdd (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Evaluate vpshrdd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::mask_vpshrdd (simd< std::uint32_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Evaluate mask_vpshrdd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::maskz_vpshrdd (predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept
 Evaluate maskz_vpshrdd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::vpshrdvd (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Evaluate vpshrdvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::mask_vpshrdvd (simd< std::uint32_t, 4, Arch > a, predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Evaluate mask_vpshrdvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 4, Arch>); })
consteval simd< std::uint32_t, 4, Arch > native::maskz_vpshrdvd (predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > counts) noexcept
 Evaluate maskz_vpshrdvd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::vpshldq (simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Evaluate vpshldq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::mask_vpshldq (simd< std::uint64_t, 2, Arch > source, predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Evaluate mask_vpshldq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::maskz_vpshldq (predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Evaluate maskz_vpshldq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::vpshldvq (simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Evaluate vpshldvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::mask_vpshldvq (simd< std::uint64_t, 2, Arch > a, predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Evaluate mask_vpshldvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::maskz_vpshldvq (predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Evaluate maskz_vpshldvq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::vpshrdq (simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Evaluate vpshrdq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::mask_vpshrdq (simd< std::uint64_t, 2, Arch > source, predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Evaluate mask_vpshrdq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::maskz_vpshrdq (predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Evaluate maskz_vpshrdq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::vpshrdvq (simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Evaluate vpshrdvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::mask_vpshrdvq (simd< std::uint64_t, 2, Arch > a, predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Evaluate mask_vpshrdvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::maskz_vpshrdvq (predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > counts) noexcept
 Evaluate maskz_vpshrdvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint8_t, 32, Arch>); })
consteval simd< std::uint8_t, 32, Arch > native::mask_vpcompressb (simd< std::uint8_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint8_t, 32, Arch > value) noexcept
 Evaluate mask_vpcompressb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint8_t, 32, Arch>); })
consteval simd< std::uint8_t, 32, Arch > native::maskz_vpcompressb (predicate< 32, Arch > maskmask, simd< std::uint8_t, 32, Arch > value) noexcept
 Evaluate maskz_vpcompressb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint8_t, 32, Arch>); })
consteval void native::mask_vpcompressb (std::uint8_t *destination, predicate< 32, Arch > maskmask, simd< std::uint8_t, 32, Arch > value) noexcept
 Evaluate mask_vpcompressb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint8_t, 32, Arch>); })
consteval simd< std::uint8_t, 32, Arch > native::mask_vpexpandb (simd< std::uint8_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint8_t, 32, Arch > value) noexcept
 Evaluate mask_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint8_t, 32, Arch>); })
consteval simd< std::uint8_t, 32, Arch > native::maskz_vpexpandb (predicate< 32, Arch > maskmask, simd< std::uint8_t, 32, Arch > value) noexcept
 Evaluate maskz_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>) && requires { sizeof(simd<std::uint8_t, 32, Arch>); })
consteval simd< std::uint8_t, 32, Arch > native::mask_vpexpandb (simd< std::uint8_t, 32, Arch > source, predicate< 32, Arch > maskmask, T *memory) noexcept
 Evaluate mask_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>) && requires { sizeof(simd<std::uint8_t, 32, Arch>); })
consteval simd< std::uint8_t, 32, Arch > native::maskz_vpexpandb (predicate< 32, Arch > maskmask, T *memory) noexcept
 Evaluate maskz_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::mask_vpcompressw (simd< std::uint16_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > value) noexcept
 Evaluate mask_vpcompressw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::maskz_vpcompressw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > value) noexcept
 Evaluate maskz_vpcompressw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval void native::mask_vpcompressw (std::uint16_t *destination, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > value) noexcept
 Evaluate mask_vpcompressw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::mask_vpexpandw (simd< std::uint16_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > value) noexcept
 Evaluate mask_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::maskz_vpexpandw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > value) noexcept
 Evaluate maskz_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>) && requires { sizeof(simd<std::uint16_t,
16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::mask_vpexpandw (simd< std::uint16_t, 16, Arch > source, predicate< 16, Arch > maskmask, T *memory) noexcept
 Evaluate mask_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>) && requires { sizeof(simd<std::uint16_t,
16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::maskz_vpexpandw (predicate< 16, Arch > maskmask, T *memory) noexcept
 Evaluate maskz_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::vpshldw (simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Evaluate vpshldw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::mask_vpshldw (simd< std::uint16_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Evaluate mask_vpshldw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::maskz_vpshldw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Evaluate maskz_vpshldw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::vpshldvw (simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Evaluate vpshldvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::mask_vpshldvw (simd< std::uint16_t, 16, Arch > a, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Evaluate mask_vpshldvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::maskz_vpshldvw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Evaluate maskz_vpshldvw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::vpshrdw (simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Evaluate vpshrdw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::mask_vpshrdw (simd< std::uint16_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Evaluate mask_vpshrdw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::maskz_vpshrdw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b) noexcept
 Evaluate maskz_vpshrdw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::vpshrdvw (simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Evaluate vpshrdvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::mask_vpshrdvw (simd< std::uint16_t, 16, Arch > a, predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Evaluate mask_vpshrdvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint16_t, 16, Arch>); })
consteval simd< std::uint16_t, 16, Arch > native::maskz_vpshrdvw (predicate< 16, Arch > maskmask, simd< std::uint16_t, 16, Arch > a, simd< std::uint16_t, 16, Arch > b, simd< std::uint16_t, 16, Arch > counts) noexcept
 Evaluate maskz_vpshrdvw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::vpshldd (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Evaluate vpshldd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::mask_vpshldd (simd< std::uint32_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Evaluate mask_vpshldd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::maskz_vpshldd (predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Evaluate maskz_vpshldd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::vpshldvd (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Evaluate vpshldvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::mask_vpshldvd (simd< std::uint32_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Evaluate mask_vpshldvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::maskz_vpshldvd (predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Evaluate maskz_vpshldvd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::vpshrdd (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Evaluate vpshrdd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::mask_vpshrdd (simd< std::uint32_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Evaluate mask_vpshrdd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::maskz_vpshrdd (predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept
 Evaluate maskz_vpshrdd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::vpshrdvd (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Evaluate vpshrdvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::mask_vpshrdvd (simd< std::uint32_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Evaluate mask_vpshrdvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint32_t, 8, Arch>); })
consteval simd< std::uint32_t, 8, Arch > native::maskz_vpshrdvd (predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b, simd< std::uint32_t, 8, Arch > counts) noexcept
 Evaluate maskz_vpshrdvd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::vpshldq (simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Evaluate vpshldq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::mask_vpshldq (simd< std::uint64_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Evaluate mask_vpshldq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::maskz_vpshldq (predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Evaluate maskz_vpshldq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::vpshldvq (simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Evaluate vpshldvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::mask_vpshldvq (simd< std::uint64_t, 4, Arch > a, predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Evaluate mask_vpshldvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::maskz_vpshldvq (predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Evaluate maskz_vpshldvq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::vpshrdq (simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Evaluate vpshrdq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::mask_vpshrdq (simd< std::uint64_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Evaluate mask_vpshrdq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
Imm8 <= 255 && requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::maskz_vpshrdq (predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b) noexcept
 Evaluate maskz_vpshrdq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::vpshrdvq (simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Evaluate vpshrdvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::mask_vpshrdvq (simd< std::uint64_t, 4, Arch > a, predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Evaluate mask_vpshrdvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2) && Arch.has(x86_feature::avx512vl)) &&
requires { sizeof(simd<std::uint64_t, 4, Arch>); })
consteval simd< std::uint64_t, 4, Arch > native::maskz_vpshrdvq (predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > a, simd< std::uint64_t, 4, Arch > b, simd< std::uint64_t, 4, Arch > counts) noexcept
 Evaluate maskz_vpshrdvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint8_t, 64, Arch>); })
consteval simd< std::uint8_t, 64, Arch > native::mask_vpcompressb (simd< std::uint8_t, 64, Arch > source, predicate< 64, Arch > maskmask, simd< std::uint8_t, 64, Arch > value) noexcept
 Evaluate mask_vpcompressb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint8_t, 64, Arch>); })
consteval simd< std::uint8_t, 64, Arch > native::maskz_vpcompressb (predicate< 64, Arch > maskmask, simd< std::uint8_t, 64, Arch > value) noexcept
 Evaluate maskz_vpcompressb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint8_t, 64, Arch>); })
consteval void native::mask_vpcompressb (std::uint8_t *destination, predicate< 64, Arch > maskmask, simd< std::uint8_t, 64, Arch > value) noexcept
 Evaluate mask_vpcompressb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint8_t, 64, Arch>); })
consteval simd< std::uint8_t, 64, Arch > native::mask_vpexpandb (simd< std::uint8_t, 64, Arch > source, predicate< 64, Arch > maskmask, simd< std::uint8_t, 64, Arch > value) noexcept
 Evaluate mask_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint8_t, 64, Arch>); })
consteval simd< std::uint8_t, 64, Arch > native::maskz_vpexpandb (predicate< 64, Arch > maskmask, simd< std::uint8_t, 64, Arch > value) noexcept
 Evaluate maskz_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>) && requires { sizeof(simd<std::uint8_t, 64, Arch>); })
consteval simd< std::uint8_t, 64, Arch > native::mask_vpexpandb (simd< std::uint8_t, 64, Arch > source, predicate< 64, Arch > maskmask, T *memory) noexcept
 Evaluate mask_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) &&
(std::same_as<T, std::uint8_t> || std::same_as<T, std::uint8_t const>) && requires { sizeof(simd<std::uint8_t, 64, Arch>); })
consteval simd< std::uint8_t, 64, Arch > native::maskz_vpexpandb (predicate< 64, Arch > maskmask, T *memory) noexcept
 Evaluate maskz_vpexpandb at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::mask_vpcompressw (simd< std::uint16_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > value) noexcept
 Evaluate mask_vpcompressw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::maskz_vpcompressw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > value) noexcept
 Evaluate maskz_vpcompressw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint16_t, 32, Arch>); })
consteval void native::mask_vpcompressw (std::uint16_t *destination, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > value) noexcept
 Evaluate mask_vpcompressw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::mask_vpexpandw (simd< std::uint16_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > value) noexcept
 Evaluate mask_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::maskz_vpexpandw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > value) noexcept
 Evaluate maskz_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>) && requires { sizeof(simd<std::uint16_t,
32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::mask_vpexpandw (simd< std::uint16_t, 32, Arch > source, predicate< 32, Arch > maskmask, T *memory) noexcept
 Evaluate mask_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch, class T>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) &&
(std::same_as<T, std::uint16_t> || std::same_as<T, std::uint16_t const>) && requires { sizeof(simd<std::uint16_t,
32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::maskz_vpexpandw (predicate< 32, Arch > maskmask, T *memory) noexcept
 Evaluate maskz_vpexpandw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::vpshldw (simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Evaluate vpshldw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::mask_vpshldw (simd< std::uint16_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Evaluate mask_vpshldw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::maskz_vpshldw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Evaluate maskz_vpshldw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::vpshldvw (simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Evaluate vpshldvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::mask_vpshldvw (simd< std::uint16_t, 32, Arch > a, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Evaluate mask_vpshldvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::maskz_vpshldvw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Evaluate maskz_vpshldvw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::vpshrdw (simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Evaluate vpshrdw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::mask_vpshrdw (simd< std::uint16_t, 32, Arch > source, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Evaluate mask_vpshrdw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::maskz_vpshrdw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b) noexcept
 Evaluate maskz_vpshrdw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::vpshrdvw (simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Evaluate vpshrdvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::mask_vpshrdvw (simd< std::uint16_t, 32, Arch > a, predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Evaluate mask_vpshrdvw at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint16_t, 32, Arch>); })
consteval simd< std::uint16_t, 32, Arch > native::maskz_vpshrdvw (predicate< 32, Arch > maskmask, simd< std::uint16_t, 32, Arch > a, simd< std::uint16_t, 32, Arch > b, simd< std::uint16_t, 32, Arch > counts) noexcept
 Evaluate maskz_vpshrdvw at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::vpshldd (simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Evaluate vpshldd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::mask_vpshldd (simd< std::uint32_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Evaluate mask_vpshldd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::maskz_vpshldd (predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Evaluate maskz_vpshldd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::vpshldvd (simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Evaluate vpshldvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::mask_vpshldvd (simd< std::uint32_t, 16, Arch > a, predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Evaluate mask_vpshldvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::maskz_vpshldvd (predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Evaluate maskz_vpshldvd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::vpshrdd (simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Evaluate vpshrdd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::mask_vpshrdd (simd< std::uint32_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Evaluate mask_vpshrdd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::maskz_vpshrdd (predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b) noexcept
 Evaluate maskz_vpshrdd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::vpshrdvd (simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Evaluate vpshrdvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::mask_vpshrdvd (simd< std::uint32_t, 16, Arch > a, predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Evaluate mask_vpshrdvd at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint32_t, 16, Arch>); })
consteval simd< std::uint32_t, 16, Arch > native::maskz_vpshrdvd (predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > a, simd< std::uint32_t, 16, Arch > b, simd< std::uint32_t, 16, Arch > counts) noexcept
 Evaluate maskz_vpshrdvd at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::vpshldq (simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Evaluate vpshldq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::mask_vpshldq (simd< std::uint64_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Evaluate mask_vpshldq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::maskz_vpshldq (predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Evaluate maskz_vpshldq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::vpshldvq (simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Evaluate vpshldvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::mask_vpshldvq (simd< std::uint64_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Evaluate mask_vpshldvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::maskz_vpshldvq (predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Evaluate maskz_vpshldvq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::vpshrdq (simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Evaluate vpshrdq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::mask_vpshrdq (simd< std::uint64_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Evaluate mask_vpshrdq at compile time when its register storage is available.
template<isa< x86 > Arch, unsigned Imm8>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && Imm8
<= 255 && requires { sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::maskz_vpshrdq (predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b) noexcept
 Evaluate maskz_vpshrdq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::vpshrdvq (simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Evaluate vpshrdvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::mask_vpshrdvq (simd< std::uint64_t, 8, Arch > a, predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Evaluate mask_vpshrdvq at compile time when its register storage is available.
template<isa< x86 > Arch>
requires (!(Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512bw) && Arch.has(x86_feature::avx512vbmi2)) && requires
{ sizeof(simd<std::uint64_t, 8, Arch>); })
consteval simd< std::uint64_t, 8, Arch > native::maskz_vpshrdvq (predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > a, simd< std::uint64_t, 8, Arch > b, simd< std::uint64_t, 8, Arch > counts) noexcept
 Evaluate maskz_vpshrdvq at compile time when its register storage is available.
template<isa< x86 > Arch, class... Args>
void native::mask_vpcompressb (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::maskz_vpcompressb (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::mask_vpexpandb (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::maskz_vpexpandb (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::mask_vpcompressw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::maskz_vpcompressw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::mask_vpexpandw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::maskz_vpexpandw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::vpshldw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::mask_vpshldw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::maskz_vpshldw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::vpshldvw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::mask_vpshldvw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::maskz_vpshldvw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::vpshrdw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::mask_vpshrdw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::maskz_vpshrdw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::vpshrdvw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::mask_vpshrdvw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::maskz_vpshrdvw (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::vpshldd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::mask_vpshldd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::maskz_vpshldd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::vpshldvd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::mask_vpshldvd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::maskz_vpshldvd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::vpshrdd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::mask_vpshrdd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::maskz_vpshrdd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::vpshrdvd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::mask_vpshrdvd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::maskz_vpshrdvd (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::vpshldq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::mask_vpshldq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::maskz_vpshldq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::vpshldvq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::mask_vpshldvq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::maskz_vpshldvq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::vpshrdq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::mask_vpshrdq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, unsigned Imm8, class... Args>
void native::maskz_vpshrdq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::vpshrdvq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::mask_vpshrdvq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.
template<isa< x86 > Arch, class... Args>
void native::maskz_vpshrdvq (Args...)=delete
 Reject unsupported shapes, element types, masks and pointer arguments.

Files

file  src/native.x86.vbmi2.ccm