|
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::sm4) && Arch.has(x86_feature::avx)) | |
| constexpr simd< std::uint32_t, 4, Arch > | native::sm4rnds4 (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept |
| Four SM4 data rounds independently within each 128-bit block; a is state, b is keys. | |
|
template<isa< x86 > Arch> requires (!(Arch.has(x86_feature::sm4) && Arch.has(x86_feature::avx)) && requires { sizeof(simd<std::uint32_t, 4, Arch>); }) | |
| consteval simd< std::uint32_t, 4, Arch > | native::sm4rnds4 (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept |
| Evaluate constant operands without SM4. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::sm4) && Arch.has(x86_feature::avx)) | |
| constexpr simd< std::uint32_t, 4, Arch > | native::sm4key4 (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept |
| Four SM4 key-schedule rounds independently within each 128-bit block; a is state, b is constants. | |
|
template<isa< x86 > Arch> requires (!(Arch.has(x86_feature::sm4) && Arch.has(x86_feature::avx)) && requires { sizeof(simd<std::uint32_t, 4, Arch>); }) | |
| consteval simd< std::uint32_t, 4, Arch > | native::sm4key4 (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b) noexcept |
| Evaluate constant operands without SM4. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::sm4) && Arch.has(x86_feature::avx)) | |
| constexpr simd< std::uint32_t, 8, Arch > | native::sm4rnds4 (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept |
| Four SM4 data rounds independently within each 128-bit block; a is state, b is keys. | |
|
template<isa< x86 > Arch> requires (!(Arch.has(x86_feature::sm4) && Arch.has(x86_feature::avx)) && requires { sizeof(simd<std::uint32_t, 8, Arch>); }) | |
| consteval simd< std::uint32_t, 8, Arch > | native::sm4rnds4 (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept |
| Evaluate constant operands without SM4. | |
|
template<isa< x86 > Arch> requires (Arch.has(x86_feature::sm4) && Arch.has(x86_feature::avx)) | |
| constexpr simd< std::uint32_t, 8, Arch > | native::sm4key4 (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept |
| Four SM4 key-schedule rounds independently within each 128-bit block; a is state, b is constants. | |
|
template<isa< x86 > Arch> requires (!(Arch.has(x86_feature::sm4) && Arch.has(x86_feature::avx)) && requires { sizeof(simd<std::uint32_t, 8, Arch>); }) | |
| consteval simd< std::uint32_t, 8, Arch > | native::sm4key4 (simd< std::uint32_t, 8, Arch > a, simd< std::uint32_t, 8, Arch > b) noexcept |
| Evaluate constant operands without SM4. | |
| template<isa< x86 > Arch, class... Args> | |
| void | native::sm4rnds4 (Args...)=delete |
| Reject raw registers, mixed requirements and unsupported shapes. | |
| template<isa< x86 > Arch, class... Args> | |
| void | native::sm4key4 (Args...)=delete |
| Reject raw registers, mixed requirements and unsupported shapes. | |
Files | |
| file | src/native.x86.sm4.ccm |