|
native 0.0.1
Vectors, masks and wide register packs for C++26
|
Functions | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::uint8_t, 16, Arch > | native::i8x16_relaxed_swizzle (simd< std::uint8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b) noexcept |
| Select bytes; out-of-range indices have relaxed semantics. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::int32_t, 4, Arch > | native::i32x4_relaxed_trunc_f32x4 (simd< float, 4, Arch > a) noexcept |
| Truncate toward zero; invalid lanes may differ from saturation. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::uint32_t, 4, Arch > | native::u32x4_relaxed_trunc_f32x4 (simd< float, 4, Arch > a) noexcept |
| Truncate toward zero; invalid lanes may differ from saturation. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::int32_t, 4, Arch > | native::i32x4_relaxed_trunc_f64x2_zero (simd< double, 2, Arch > a) noexcept |
| Truncate toward zero; invalid lanes may differ from saturation. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::uint32_t, 4, Arch > | native::u32x4_relaxed_trunc_f64x2_zero (simd< double, 2, Arch > a) noexcept |
| Truncate toward zero; invalid lanes may differ from saturation. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< float, 4, Arch > | native::f32x4_relaxed_madd (simd< float, 4, Arch > a, simd< float, 4, Arch > b, simd< float, 4, Arch > c) noexcept |
| Compute a * b + c with fused or separate rounding. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< float, 4, Arch > | native::f32x4_relaxed_nmadd (simd< float, 4, Arch > a, simd< float, 4, Arch > b, simd< float, 4, Arch > c) noexcept |
| Compute -(a * b) + c with fused or separate rounding. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< double, 2, Arch > | native::f64x2_relaxed_madd (simd< double, 2, Arch > a, simd< double, 2, Arch > b, simd< double, 2, Arch > c) noexcept |
| Compute a * b + c with fused or separate rounding. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< double, 2, Arch > | native::f64x2_relaxed_nmadd (simd< double, 2, Arch > a, simd< double, 2, Arch > b, simd< double, 2, Arch > c) noexcept |
| Compute -(a * b) + c with fused or separate rounding. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::uint8_t, 16, Arch > | native::i8x16_relaxed_laneselect (simd< std::uint8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b, simd< std::uint8_t, 16, Arch > c) noexcept |
| Select with mask c; partial masks permit bit or sign-bit lane selection. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::uint16_t, 8, Arch > | native::i16x8_relaxed_laneselect (simd< std::uint16_t, 8, Arch > a, simd< std::uint16_t, 8, Arch > b, simd< std::uint16_t, 8, Arch > c) noexcept |
| Select with mask c; partial masks permit bit or sign-bit lane selection. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::uint32_t, 4, Arch > | native::i32x4_relaxed_laneselect (simd< std::uint32_t, 4, Arch > a, simd< std::uint32_t, 4, Arch > b, simd< std::uint32_t, 4, Arch > c) noexcept |
| Select with mask c; partial masks permit bit or sign-bit lane selection. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::uint64_t, 2, Arch > | native::i64x2_relaxed_laneselect (simd< std::uint64_t, 2, Arch > a, simd< std::uint64_t, 2, Arch > b, simd< std::uint64_t, 2, Arch > c) noexcept |
| Select with mask c; partial masks permit bit or sign-bit lane selection. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< float, 4, Arch > | native::f32x4_relaxed_min (simd< float, 4, Arch > a, simd< float, 4, Arch > b) noexcept |
| Minimum with relaxed NaN and signed-zero selection. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< float, 4, Arch > | native::f32x4_relaxed_max (simd< float, 4, Arch > a, simd< float, 4, Arch > b) noexcept |
| Maximum with relaxed NaN and signed-zero selection. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< double, 2, Arch > | native::f64x2_relaxed_min (simd< double, 2, Arch > a, simd< double, 2, Arch > b) noexcept |
| Minimum with relaxed NaN and signed-zero selection. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< double, 2, Arch > | native::f64x2_relaxed_max (simd< double, 2, Arch > a, simd< double, 2, Arch > b) noexcept |
| Maximum with relaxed NaN and signed-zero selection. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::int16_t, 8, Arch > | native::i16x8_relaxed_q15mulr (simd< std::int16_t, 8, Arch > a, simd< std::int16_t, 8, Arch > b) noexcept |
| Rounded Q15 product; the overflowing -32768 squared case is relaxed. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::int16_t, 8, Arch > | native::i16x8_relaxed_dot_i8x16_i7x16 (simd< std::int8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b) noexcept |
| Pairwise signed-byte dot product; high bits of b have relaxed semantics. | |
|
template<isa< wasm > Arch> requires (Arch.has(wasm_feature::relaxed_simd)) | |
| constexpr simd< std::int32_t, 4, Arch > | native::i32x4_relaxed_dot_i8x16_i7x16_add (simd< std::int8_t, 16, Arch > a, simd< std::uint8_t, 16, Arch > b, simd< std::int32_t, 4, Arch > c) noexcept |
| Accumulate two adjacent relaxed dot pairs into c modulo 32 bits. | |
Runtime calls require relaxed_simd in Arch and in the caller target. Constant evaluation chooses one valid result and does not promise engine agreement. Feature-absent tags are consteval-only and require SIMD128 storage.