|
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::rdm)) | |
| constexpr int16_t | native::sqrdmlah (int16_t accumulator, int16_t lhs, int16_t rhs) noexcept |
| SQRDMLAH: signed 16-bit rounding saturating add. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr int16_t | native::sqrdmlah_lane (int16_t accumulator, int16_t lhs, simd< std::int16_t, 4, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 8) | |
| constexpr int16_t | native::sqrdmlah_lane (int16_t accumulator, int16_t lhs, simd< std::int16_t, 8, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::rdm)) | |
| constexpr simd< std::int16_t, 4, Arch > | native::sqrdmlah (simd< std::int16_t, 4, Arch > accumulator, simd< std::int16_t, 4, Arch > lhs, simd< std::int16_t, 4, Arch > rhs) noexcept |
| SQRDMLAH: signed 16-bit rounding saturating add. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::int16_t, 4, Arch > | native::sqrdmlah_lane (simd< std::int16_t, 4, Arch > accumulator, simd< std::int16_t, 4, Arch > lhs, simd< std::int16_t, 4, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 8) | |
| constexpr simd< std::int16_t, 4, Arch > | native::sqrdmlah_lane (simd< std::int16_t, 4, Arch > accumulator, simd< std::int16_t, 4, Arch > lhs, simd< std::int16_t, 8, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::rdm)) | |
| constexpr simd< std::int16_t, 8, Arch > | native::sqrdmlah (simd< std::int16_t, 8, Arch > accumulator, simd< std::int16_t, 8, Arch > lhs, simd< std::int16_t, 8, Arch > rhs) noexcept |
| SQRDMLAH: signed 16-bit rounding saturating add. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::int16_t, 8, Arch > | native::sqrdmlah_lane (simd< std::int16_t, 8, Arch > accumulator, simd< std::int16_t, 8, Arch > lhs, simd< std::int16_t, 4, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 8) | |
| constexpr simd< std::int16_t, 8, Arch > | native::sqrdmlah_lane (simd< std::int16_t, 8, Arch > accumulator, simd< std::int16_t, 8, Arch > lhs, simd< std::int16_t, 8, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch = NATIVE_BASELINE> requires (Arch.has(arm_feature::rdm)) | |
| constexpr int32_t | native::sqrdmlah (int32_t accumulator, int32_t lhs, int32_t rhs) noexcept |
| SQRDMLAH: signed 32-bit rounding saturating add. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 2) | |
| constexpr int32_t | native::sqrdmlah_lane (int32_t accumulator, int32_t lhs, simd< std::int32_t, 2, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr int32_t | native::sqrdmlah_lane (int32_t accumulator, int32_t lhs, simd< std::int32_t, 4, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::rdm)) | |
| constexpr simd< std::int32_t, 2, Arch > | native::sqrdmlah (simd< std::int32_t, 2, Arch > accumulator, simd< std::int32_t, 2, Arch > lhs, simd< std::int32_t, 2, Arch > rhs) noexcept |
| SQRDMLAH: signed 32-bit rounding saturating add. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 2) | |
| constexpr simd< std::int32_t, 2, Arch > | native::sqrdmlah_lane (simd< std::int32_t, 2, Arch > accumulator, simd< std::int32_t, 2, Arch > lhs, simd< std::int32_t, 2, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::int32_t, 2, Arch > | native::sqrdmlah_lane (simd< std::int32_t, 2, Arch > accumulator, simd< std::int32_t, 2, Arch > lhs, simd< std::int32_t, 4, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::rdm)) | |
| constexpr simd< std::int32_t, 4, Arch > | native::sqrdmlah (simd< std::int32_t, 4, Arch > accumulator, simd< std::int32_t, 4, Arch > lhs, simd< std::int32_t, 4, Arch > rhs) noexcept |
| SQRDMLAH: signed 32-bit rounding saturating add. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 2) | |
| constexpr simd< std::int32_t, 4, Arch > | native::sqrdmlah_lane (simd< std::int32_t, 4, Arch > accumulator, simd< std::int32_t, 4, Arch > lhs, simd< std::int32_t, 2, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::int32_t, 4, Arch > | native::sqrdmlah_lane (simd< std::int32_t, 4, Arch > accumulator, simd< std::int32_t, 4, Arch > lhs, simd< std::int32_t, 4, Arch > rhs) noexcept |
| SQRDMLAH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch = NATIVE_BASELINE> requires (Arch.has(arm_feature::rdm)) | |
| constexpr int16_t | native::sqrdmlsh (int16_t accumulator, int16_t lhs, int16_t rhs) noexcept |
| SQRDMLSH: signed 16-bit rounding saturating subtract. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr int16_t | native::sqrdmlsh_lane (int16_t accumulator, int16_t lhs, simd< std::int16_t, 4, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 8) | |
| constexpr int16_t | native::sqrdmlsh_lane (int16_t accumulator, int16_t lhs, simd< std::int16_t, 8, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::rdm)) | |
| constexpr simd< std::int16_t, 4, Arch > | native::sqrdmlsh (simd< std::int16_t, 4, Arch > accumulator, simd< std::int16_t, 4, Arch > lhs, simd< std::int16_t, 4, Arch > rhs) noexcept |
| SQRDMLSH: signed 16-bit rounding saturating subtract. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::int16_t, 4, Arch > | native::sqrdmlsh_lane (simd< std::int16_t, 4, Arch > accumulator, simd< std::int16_t, 4, Arch > lhs, simd< std::int16_t, 4, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 8) | |
| constexpr simd< std::int16_t, 4, Arch > | native::sqrdmlsh_lane (simd< std::int16_t, 4, Arch > accumulator, simd< std::int16_t, 4, Arch > lhs, simd< std::int16_t, 8, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::rdm)) | |
| constexpr simd< std::int16_t, 8, Arch > | native::sqrdmlsh (simd< std::int16_t, 8, Arch > accumulator, simd< std::int16_t, 8, Arch > lhs, simd< std::int16_t, 8, Arch > rhs) noexcept |
| SQRDMLSH: signed 16-bit rounding saturating subtract. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::int16_t, 8, Arch > | native::sqrdmlsh_lane (simd< std::int16_t, 8, Arch > accumulator, simd< std::int16_t, 8, Arch > lhs, simd< std::int16_t, 4, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 8) | |
| constexpr simd< std::int16_t, 8, Arch > | native::sqrdmlsh_lane (simd< std::int16_t, 8, Arch > accumulator, simd< std::int16_t, 8, Arch > lhs, simd< std::int16_t, 8, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch = NATIVE_BASELINE> requires (Arch.has(arm_feature::rdm)) | |
| constexpr int32_t | native::sqrdmlsh (int32_t accumulator, int32_t lhs, int32_t rhs) noexcept |
| SQRDMLSH: signed 32-bit rounding saturating subtract. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 2) | |
| constexpr int32_t | native::sqrdmlsh_lane (int32_t accumulator, int32_t lhs, simd< std::int32_t, 2, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr int32_t | native::sqrdmlsh_lane (int32_t accumulator, int32_t lhs, simd< std::int32_t, 4, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::rdm)) | |
| constexpr simd< std::int32_t, 2, Arch > | native::sqrdmlsh (simd< std::int32_t, 2, Arch > accumulator, simd< std::int32_t, 2, Arch > lhs, simd< std::int32_t, 2, Arch > rhs) noexcept |
| SQRDMLSH: signed 32-bit rounding saturating subtract. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 2) | |
| constexpr simd< std::int32_t, 2, Arch > | native::sqrdmlsh_lane (simd< std::int32_t, 2, Arch > accumulator, simd< std::int32_t, 2, Arch > lhs, simd< std::int32_t, 2, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::int32_t, 2, Arch > | native::sqrdmlsh_lane (simd< std::int32_t, 2, Arch > accumulator, simd< std::int32_t, 2, Arch > lhs, simd< std::int32_t, 4, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch> requires (Arch.has(arm_feature::rdm)) | |
| constexpr simd< std::int32_t, 4, Arch > | native::sqrdmlsh (simd< std::int32_t, 4, Arch > accumulator, simd< std::int32_t, 4, Arch > lhs, simd< std::int32_t, 4, Arch > rhs) noexcept |
| SQRDMLSH: signed 32-bit rounding saturating subtract. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 2) | |
| constexpr simd< std::int32_t, 4, Arch > | native::sqrdmlsh_lane (simd< std::int32_t, 4, Arch > accumulator, simd< std::int32_t, 4, Arch > lhs, simd< std::int32_t, 2, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
|
template<isa< arm > Arch, int Lane> requires (Arch.has(arm_feature::rdm) && Lane >= 0 && Lane < 4) | |
| constexpr simd< std::int32_t, 4, Arch > | native::sqrdmlsh_lane (simd< std::int32_t, 4, Arch > accumulator, simd< std::int32_t, 4, Arch > lhs, simd< std::int32_t, 4, Arch > rhs) noexcept |
| SQRDMLSH by element: broadcast rhs[Lane] before rounding and saturation. | |
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. SQRDMLAH and SQRDMLSH round and saturate once after accumulation. Exact inline instructions avoid Clang's broader v8.1a builtin requirement. Scalar calls without an ISA argument use the owning module's baseline. Runtime saturation can set sticky FPSR.QC; no const/pure promise is made. Constant evaluation computes values only and cannot observe or modify FPSR.