Trait core::simd::SimdUint

source ·
pub trait SimdUint: Copy + Sealed {
    type Scalar;

    fn saturating_add(self, second: Self) -> Self;
    fn saturating_sub(self, second: Self) -> Self;
    fn reduce_sum(self) -> Self::Scalar;
    fn reduce_product(self) -> Self::Scalar;
    fn reduce_max(self) -> Self::Scalar;
    fn reduce_min(self) -> Self::Scalar;
    fn reduce_and(self) -> Self::Scalar;
    fn reduce_or(self) -> Self::Scalar;
    fn reduce_xor(self) -> Self::Scalar;
}
🔬This is a nightly-only experimental API. (portable_simd #86656)
Expand description

Operations on SIMD vectors of unsigned integers.

Required Associated Types§

🔬This is a nightly-only experimental API. (portable_simd #86656)

Scalar type contained by this SIMD vector type.

Required Methods§

🔬This is a nightly-only experimental API. (portable_simd #86656)

Lanewise saturating add.

Examples
use core::u32::MAX;
let x = Simd::from_array([2, 1, 0, MAX]);
let max = Simd::splat(MAX);
let unsat = x + max;
let sat = x.saturating_add(max);
assert_eq!(unsat, Simd::from_array([1, 0, MAX, MAX - 1]));
assert_eq!(sat, max);
Run
🔬This is a nightly-only experimental API. (portable_simd #86656)

Lanewise saturating subtract.

Examples
use core::u32::MAX;
let x = Simd::from_array([2, 1, 0, MAX]);
let max = Simd::splat(MAX);
let unsat = x - max;
let sat = x.saturating_sub(max);
assert_eq!(unsat, Simd::from_array([3, 2, 1, 0]));
assert_eq!(sat, Simd::splat(0));
Run
🔬This is a nightly-only experimental API. (portable_simd #86656)

Returns the sum of the lanes of the vector, with wrapping addition.

🔬This is a nightly-only experimental API. (portable_simd #86656)

Returns the product of the lanes of the vector, with wrapping multiplication.

🔬This is a nightly-only experimental API. (portable_simd #86656)

Returns the maximum lane in the vector.

🔬This is a nightly-only experimental API. (portable_simd #86656)

Returns the minimum lane in the vector.

🔬This is a nightly-only experimental API. (portable_simd #86656)

Returns the cumulative bitwise “and” across the lanes of the vector.

🔬This is a nightly-only experimental API. (portable_simd #86656)

Returns the cumulative bitwise “or” across the lanes of the vector.

🔬This is a nightly-only experimental API. (portable_simd #86656)

Returns the cumulative bitwise “xor” across the lanes of the vector.

Implementors§