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

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