|
native 0.0.1
Vectors, masks and wide register packs for C++26
|
Functions | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::dotprod)) | |
| constexpr simd< std::int32_t, 2, Arch > | native::sdot (simd< std::int32_t, 2, Arch > accumulator, simd< std::int8_t, 8, Arch > lhs, simd< std::int8_t, 8, Arch > rhs) noexcept |
| SDOT: four byte products per accumulator lane, modulo 2^32. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::dotprod) && Lane >= 0 && Lane < 2) | |
| constexpr simd< std::int32_t, 2, Arch > | native::sdot_lane (simd< std::int32_t, 2, Arch > accumulator, simd< std::int8_t, 8, Arch > lhs, simd< std::int8_t, 8, Arch > rhs) noexcept |
| SDOT by element: broadcast rhs byte group Lane to every accumulator lane. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::dotprod) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::int32_t, 2, Arch > | native::sdot_lane (simd< std::int32_t, 2, Arch > accumulator, simd< std::int8_t, 8, Arch > lhs, simd< std::int8_t, 16, Arch > rhs) noexcept |
| SDOT by element: broadcast rhs byte group Lane to every accumulator lane. | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::dotprod)) | |
| constexpr simd< std::int32_t, 4, Arch > | native::sdot (simd< std::int32_t, 4, Arch > accumulator, simd< std::int8_t, 16, Arch > lhs, simd< std::int8_t, 16, Arch > rhs) noexcept |
| SDOT: four byte products per accumulator lane, modulo 2^32. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::dotprod) && Lane >= 0 && Lane < 2) | |
| constexpr simd< std::int32_t, 4, Arch > | native::sdot_lane (simd< std::int32_t, 4, Arch > accumulator, simd< std::int8_t, 16, Arch > lhs, simd< std::int8_t, 8, Arch > rhs) noexcept |
| SDOT by element: broadcast rhs byte group Lane to every accumulator lane. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::dotprod) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::int32_t, 4, Arch > | native::sdot_lane (simd< std::int32_t, 4, Arch > accumulator, simd< std::int8_t, 16, Arch > lhs, simd< std::int8_t, 16, Arch > rhs) noexcept |
| SDOT by element: broadcast rhs byte group Lane to every accumulator lane. | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::dotprod)) | |
| constexpr simd< std::uint32_t, 2, Arch > | native::udot (simd< std::uint32_t, 2, Arch > accumulator, simd< std::uint8_t, 8, Arch > lhs, simd< std::uint8_t, 8, Arch > rhs) noexcept |
| UDOT: four byte products per accumulator lane, modulo 2^32. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::dotprod) && Lane >= 0 && Lane < 2) | |
| constexpr simd< std::uint32_t, 2, Arch > | native::udot_lane (simd< std::uint32_t, 2, Arch > accumulator, simd< std::uint8_t, 8, Arch > lhs, simd< std::uint8_t, 8, Arch > rhs) noexcept |
| UDOT by element: broadcast rhs byte group Lane to every accumulator lane. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::dotprod) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::uint32_t, 2, Arch > | native::udot_lane (simd< std::uint32_t, 2, Arch > accumulator, simd< std::uint8_t, 8, Arch > lhs, simd< std::uint8_t, 16, Arch > rhs) noexcept |
| UDOT by element: broadcast rhs byte group Lane to every accumulator lane. | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::dotprod)) | |
| constexpr simd< std::uint32_t, 4, Arch > | native::udot (simd< std::uint32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > lhs, simd< std::uint8_t, 16, Arch > rhs) noexcept |
| UDOT: four byte products per accumulator lane, modulo 2^32. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::dotprod) && Lane >= 0 && Lane < 2) | |
| constexpr simd< std::uint32_t, 4, Arch > | native::udot_lane (simd< std::uint32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > lhs, simd< std::uint8_t, 8, Arch > rhs) noexcept |
| UDOT by element: broadcast rhs byte group Lane to every accumulator lane. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::dotprod) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::uint32_t, 4, Arch > | native::udot_lane (simd< std::uint32_t, 4, Arch > accumulator, simd< std::uint8_t, 16, Arch > lhs, simd< std::uint8_t, 16, Arch > rhs) noexcept |
| UDOT by element: broadcast rhs byte group Lane to every accumulator lane. | |
Explicit ISA-gated AArch64 instructions. Admit the feature before entering a matching target scope; runtime calls provide no software fallback. Constant operands use exact integer semantics; feature-absent overloads are immediate-only and preserve the available SIMD storage shape. SDOT and UDOT accumulate modulo 2^32, including signed overflow.