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

Exported Modules

module  native.arm.features
module  native.simd

Functions

template<isa< arm > Arch = NATIVE_BASELINE>
requires (Arch.has(arm_feature::pmull))
constexpr simd< std::uint64_t, 2, Arch > native::pmull (std::uint64_t a, std::uint64_t b) noexcept
template<isa< arm > Arch = NATIVE_BASELINE>
requires (!Arch.has(arm_feature::pmull) && requires { sizeof(simd<std::uint64_t,2,Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::pmull (std::uint64_t a, std::uint64_t b) noexcept
 Evaluate a 64-bit polynomial product at compile time using an available SIMD storage shape.
template<isa< arm > Arch>
requires (Arch.has(arm_feature::pmull))
constexpr simd< std::uint64_t, 2, Arch > native::pmull2 (simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Multiply the high 64-bit polynomial lane of each operand; lower lanes are ignored.
template<isa< arm > Arch>
requires (!Arch.has(arm_feature::pmull) && requires { sizeof(simd<std::uint64_t, 2, Arch>); })
consteval simd< std::uint64_t, 2, Arch > native::pmull2 (simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b) noexcept
 Evaluate constant operands without the instruction feature.
template<isa< arm > Arch>
requires (Arch.has(arm_feature::neon))
constexpr simd< std::uint16_t, 8, Arch > native::pmull (simd< std::uint8_t, 8, Arch > a, simd< std::uint8_t, 8, Arch > b) noexcept
 Multiply eight pairs of byte polynomials into 16-bit products; requires only NEON.
template<isa< arm > Arch>
requires (Arch.has(arm_feature::neon))
constexpr simd< std::uint16_t, 8, Arch > native::pmull2 (simd< std::uint8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b) noexcept
 Multiply the high eight byte polynomials into 16-bit products; requires only NEON.
template<isa< arm > Arch = NATIVE_BASELINE, class... T>
void native::pmull (T...)=delete
 Reject unsupported argument shapes or unavailable instruction features.
template<isa< arm > Arch, class... T>
void native::pmull2 (T...)=delete
 Reject unsupported argument shapes or unavailable instruction features.

Files

file  src/native.arm.pmull.ccm