|
native 0.0.1
Vectors, masks and wide register packs for C++26
|
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> 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::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. | |
Bit i is the coefficient of x^i. Products use XOR, without carry or reduction by a modulus. Byte products need NEON; runtime 64-bit products need FEAT_PMULL. The latter use the compiler "aes" target, whose full target_features<arm>("aes") set must be admitted before entering the leaf. These integer operations do not read or modify FPCR, FPSR or NZCV. Constant evaluation computes the same integer values. Feature-absent calls are immediate-only and still require complete SIMD storage for their Arch.
|
inlineconstexprexportnoexcept |
Multiply two degree-at-most-63 polynomials over GF(2), returning all 128 coefficients. Arch defaults to the owning module's baseline, and is preserved in the result. Constant evaluation performs polynomial arithmetic; runtime evaluation uses PMULL.
Definition at line 39 of file native.arm.pmull.ccm.