native 0.0.1
Vectors, masks and wide register packs for C++26
Loading...
Searching...
No Matches
RDM
Collaboration diagram for RDM:

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.

Detailed Description

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.