|
native 0.0.1
Vectors, masks and wide register packs for C++26
|
Exported Modules | |
| module | native.x86.features |
| module | native.simd |
Functions | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq)) | |
| constexpr simd< std::uint32_t, 16, Arch > | native::vpopcntd (simd< std::uint32_t, 16, Arch > value) noexcept |
| Count set bits in each of the 16 32-bit lanes; results are in [0, 32]. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq)) | |
| constexpr simd< std::uint32_t, 16, Arch > | native::mask_vpopcntd (simd< std::uint32_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > value) noexcept |
| Inactive lanes retain source; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq)) | |
| constexpr simd< std::uint32_t, 16, Arch > | native::maskz_vpopcntd (predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > value) noexcept |
| Inactive lanes become zero; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq)) | |
| constexpr simd< std::uint64_t, 8, Arch > | native::vpopcntq (simd< std::uint64_t, 8, Arch > value) noexcept |
| Count set bits in each of the 8 64-bit lanes; results are in [0, 64]. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq)) | |
| constexpr simd< std::uint64_t, 8, Arch > | native::mask_vpopcntq (simd< std::uint64_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > value) noexcept |
| Inactive lanes retain source; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq)) | |
| constexpr simd< std::uint64_t, 8, Arch > | native::maskz_vpopcntq (predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > value) noexcept |
| Inactive lanes become zero; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint32_t, 4, Arch > | native::vpopcntd (simd< std::uint32_t, 4, Arch > value) noexcept |
| Count set bits in each of the 4 32-bit lanes; results are in [0, 32]. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint32_t, 4, Arch > | native::mask_vpopcntd (simd< std::uint32_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > value) noexcept |
| Inactive lanes retain source; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint32_t, 4, Arch > | native::maskz_vpopcntd (predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > value) noexcept |
| Inactive lanes become zero; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint64_t, 2, Arch > | native::vpopcntq (simd< std::uint64_t, 2, Arch > value) noexcept |
| Count set bits in each of the 2 64-bit lanes; results are in [0, 64]. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint64_t, 2, Arch > | native::mask_vpopcntq (simd< std::uint64_t, 2, Arch > source, predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > value) noexcept |
| Inactive lanes retain source; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint64_t, 2, Arch > | native::maskz_vpopcntq (predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > value) noexcept |
| Inactive lanes become zero; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint32_t, 8, Arch > | native::vpopcntd (simd< std::uint32_t, 8, Arch > value) noexcept |
| Count set bits in each of the 8 32-bit lanes; results are in [0, 32]. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint32_t, 8, Arch > | native::mask_vpopcntd (simd< std::uint32_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > value) noexcept |
| Inactive lanes retain source; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint32_t, 8, Arch > | native::maskz_vpopcntd (predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > value) noexcept |
| Inactive lanes become zero; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint64_t, 4, Arch > | native::vpopcntq (simd< std::uint64_t, 4, Arch > value) noexcept |
| Count set bits in each of the 4 64-bit lanes; results are in [0, 64]. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint64_t, 4, Arch > | native::mask_vpopcntq (simd< std::uint64_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > value) noexcept |
| Inactive lanes retain source; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl)) | |
| constexpr simd< std::uint64_t, 4, Arch > | native::maskz_vpopcntq (predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > value) noexcept |
| Inactive lanes become zero; mask bits above the lane count are ignored. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq))) && requires { sizeof(simd<std::uint32_t, 16, Arch>); }) | |
| consteval simd< std::uint32_t, 16, Arch > | native::vpopcntd (simd< std::uint32_t, 16, Arch > value) noexcept |
| Evaluate vpopcntd at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq))) && requires { sizeof(simd<std::uint32_t, 16, Arch>); }) | |
| consteval simd< std::uint32_t, 16, Arch > | native::mask_vpopcntd (simd< std::uint32_t, 16, Arch > source, predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > value) noexcept |
| Evaluate mask_vpopcntd at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq))) && requires { sizeof(simd<std::uint32_t, 16, Arch>); }) | |
| consteval simd< std::uint32_t, 16, Arch > | native::maskz_vpopcntd (predicate< 16, Arch > maskmask, simd< std::uint32_t, 16, Arch > value) noexcept |
| Evaluate maskz_vpopcntd at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq))) && requires { sizeof(simd<std::uint64_t, 8, Arch>); }) | |
| consteval simd< std::uint64_t, 8, Arch > | native::vpopcntq (simd< std::uint64_t, 8, Arch > value) noexcept |
| Evaluate vpopcntq at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq))) && requires { sizeof(simd<std::uint64_t, 8, Arch>); }) | |
| consteval simd< std::uint64_t, 8, Arch > | native::mask_vpopcntq (simd< std::uint64_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > value) noexcept |
| Evaluate mask_vpopcntq at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq))) && requires { sizeof(simd<std::uint64_t, 8, Arch>); }) | |
| consteval simd< std::uint64_t, 8, Arch > | native::maskz_vpopcntq (predicate< 8, Arch > maskmask, simd< std::uint64_t, 8, Arch > value) noexcept |
| Evaluate maskz_vpopcntq at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint32_t, 4, Arch>); }) | |
| consteval simd< std::uint32_t, 4, Arch > | native::vpopcntd (simd< std::uint32_t, 4, Arch > value) noexcept |
| Evaluate vpopcntd at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint32_t, 4, Arch>); }) | |
| consteval simd< std::uint32_t, 4, Arch > | native::mask_vpopcntd (simd< std::uint32_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > value) noexcept |
| Evaluate mask_vpopcntd at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint32_t, 4, Arch>); }) | |
| consteval simd< std::uint32_t, 4, Arch > | native::maskz_vpopcntd (predicate< 4, Arch > maskmask, simd< std::uint32_t, 4, Arch > value) noexcept |
| Evaluate maskz_vpopcntd at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint64_t, 2, Arch>); }) | |
| consteval simd< std::uint64_t, 2, Arch > | native::vpopcntq (simd< std::uint64_t, 2, Arch > value) noexcept |
| Evaluate vpopcntq at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint64_t, 2, Arch>); }) | |
| consteval simd< std::uint64_t, 2, Arch > | native::mask_vpopcntq (simd< std::uint64_t, 2, Arch > source, predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > value) noexcept |
| Evaluate mask_vpopcntq at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint64_t, 2, Arch>); }) | |
| consteval simd< std::uint64_t, 2, Arch > | native::maskz_vpopcntq (predicate< 2, Arch > maskmask, simd< std::uint64_t, 2, Arch > value) noexcept |
| Evaluate maskz_vpopcntq at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint32_t, 8, Arch>); }) | |
| consteval simd< std::uint32_t, 8, Arch > | native::vpopcntd (simd< std::uint32_t, 8, Arch > value) noexcept |
| Evaluate vpopcntd at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint32_t, 8, Arch>); }) | |
| consteval simd< std::uint32_t, 8, Arch > | native::mask_vpopcntd (simd< std::uint32_t, 8, Arch > source, predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > value) noexcept |
| Evaluate mask_vpopcntd at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint32_t, 8, Arch>); }) | |
| consteval simd< std::uint32_t, 8, Arch > | native::maskz_vpopcntd (predicate< 8, Arch > maskmask, simd< std::uint32_t, 8, Arch > value) noexcept |
| Evaluate maskz_vpopcntd at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint64_t, 4, Arch>); }) | |
| consteval simd< std::uint64_t, 4, Arch > | native::vpopcntq (simd< std::uint64_t, 4, Arch > value) noexcept |
| Evaluate vpopcntq at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint64_t, 4, Arch>); }) | |
| consteval simd< std::uint64_t, 4, Arch > | native::mask_vpopcntq (simd< std::uint64_t, 4, Arch > source, predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > value) noexcept |
| Evaluate mask_vpopcntq at compile time when its register storage is available. | |
|
template<isa< x86 > Arch> requires (!((Arch.has(x86_feature::avx512f) && Arch.has(x86_feature::avx512vpopcntdq) && Arch.has(x86_feature::avx512vl))) && requires { sizeof(simd<std::uint64_t, 4, Arch>); }) | |
| consteval simd< std::uint64_t, 4, Arch > | native::maskz_vpopcntq (predicate< 4, Arch > maskmask, simd< std::uint64_t, 4, Arch > value) noexcept |
| Evaluate maskz_vpopcntq at compile time when its register storage is available. | |
| template<isa< x86 > Arch, class... Args> | |
| void | native::vpopcntd (Args...)=delete |
| Reject unsupported signatures, including implicit raw-register conversions. | |
| template<isa< x86 > Arch, class... Args> | |
| void | native::mask_vpopcntd (Args...)=delete |
| Reject unsupported signatures, including implicit raw-register conversions. | |
| template<isa< x86 > Arch, class... Args> | |
| void | native::maskz_vpopcntd (Args...)=delete |
| Reject unsupported signatures, including implicit raw-register conversions. | |
| template<isa< x86 > Arch, class... Args> | |
| void | native::vpopcntq (Args...)=delete |
| Reject unsupported signatures, including implicit raw-register conversions. | |
| template<isa< x86 > Arch, class... Args> | |
| void | native::mask_vpopcntq (Args...)=delete |
| Reject unsupported signatures, including implicit raw-register conversions. | |
| template<isa< x86 > Arch, class... Args> | |
| void | native::maskz_vpopcntq (Args...)=delete |
| Reject unsupported signatures, including implicit raw-register conversions. | |
Files | |
| file | src/native.x86.vpopcntdq.ccm |