Module std::intrinsics::simd
source · 🔬This is a nightly-only experimental API. (
core_intrinsics
)Expand description
SIMD compiler intrinsics.
In this module, a “vector” is any repr(simd)
type.
Functions§
- simd_add⚠ExperimentalAdd two simd vectors elementwise.
- simd_and⚠ExperimentalElementwise vector “and”.
- simd_arith_offset⚠ExperimentalElementwise calculates the offset from a pointer vector, potentially wrapping.
- simd_as⚠ExperimentalNumerically cast a vector, elementwise.
- simd_bitmask⚠ExperimentalTruncate an integer vector to a bitmask.
- simd_bitreverse⚠ExperimentalReverse bits of each element.
- simd_bswap⚠ExperimentalSwap bytes of each element.
- simd_cast⚠ExperimentalNumerically cast a vector, elementwise.
- simd_cast_ptr⚠ExperimentalCast a vector of pointers.
- simd_ceil⚠ExperimentalRound up each element to the next highest integer-valued float.
- simd_ctlz⚠ExperimentalCount the leading zeros of each element.
- simd_cttz⚠ExperimentalCount the trailing zeros of each element.
- simd_div⚠ExperimentalDivide
lhs
byrhs
elementwise. - simd_eq⚠ExperimentalTests elementwise equality of two vectors.
- simd_expose_addr⚠ExperimentalExpose a vector of pointers as a vector of addresses.
- simd_extract⚠ExperimentalExtract an element from a vector.
- simd_fabs⚠ExperimentalElementwise absolute value of a vector.
- simd_fcos⚠Experimental
T
must be a vector of floats. - simd_fexp⚠Experimental
T
must be a vector of floats. - simd_fexp2⚠Experimental
T
must be a vector of floats. - simd_flog⚠Experimental
T
must be a vector of floats. - simd_flog2⚠Experimental
T
must be a vector of floats. - simd_flog10⚠Experimental
T
must be a vector of floats. - simd_floor⚠ExperimentalRound down each element to the next lowest integer-valued float.
- simd_fma⚠ExperimentalComputes
(x*y) + z
for each element, but without any intermediate rounding. - simd_fmax⚠ExperimentalElementwise maximum of a vector.
- simd_fmin⚠ExperimentalElementwise minimum of a vector.
- simd_from_exposed_addr⚠ExperimentalCreate a vector of pointers from a vector of addresses.
- simd_fsin⚠Experimental
T
must be a vector of floats. - simd_fsqrt⚠ExperimentalTakes the square root of each element.
- simd_gather⚠ExperimentalRead a vector of pointers.
- simd_ge⚠ExperimentalTests if
x
is greater than or equal toy
, elementwise. - simd_gt⚠ExperimentalTests if
x
is greater thany
, elementwise. - simd_insert⚠ExperimentalInsert an element into a vector, returning the updated vector.
- simd_le⚠ExperimentalTests if
x
is less than or equal toy
, elementwise. - simd_lt⚠ExperimentalTests if
x
is less thany
, elementwise. - simd_masked_load⚠ExperimentalRead a vector of pointers.
- simd_masked_store⚠ExperimentalWrite to a vector of pointers.
- simd_mul⚠ExperimentalMultiply two simd vectors elementwise.
- simd_ne⚠ExperimentalTests elementwise inequality equality of two vectors.
- simd_neg⚠ExperimentalElementwise negation of a vector.
- simd_or⚠ExperimentalElementwise vector “or”.
- simd_reduce_add_ordered⚠ExperimentalAdd elements within a vector from left to right.
- simd_reduce_add_unordered⚠ExperimentalAdd elements within a vector in arbitrary order. May also be re-associated with unordered additions on the inputs/outputs.
- simd_reduce_all⚠ExperimentalCheck if all mask values are true.
- simd_reduce_and⚠ExperimentalLogical “and” all elements together.
- simd_reduce_any⚠ExperimentalCheck if all mask values are true.
- simd_reduce_max⚠ExperimentalReturn the maximum element of a vector.
- simd_reduce_min⚠ExperimentalReturn the minimum element of a vector.
- simd_reduce_mul_ordered⚠ExperimentalMultiply elements within a vector from left to right.
- simd_reduce_mul_unordered⚠ExperimentalAdd elements within a vector in arbitrary order. May also be re-associated with unordered additions on the inputs/outputs.
- simd_reduce_or⚠ExperimentalLogical “or” all elements together.
- simd_reduce_xor⚠ExperimentalLogical “exclusive or” all elements together.
- simd_rem⚠ExperimentalRemainder of two vectors elementwise
- simd_round⚠ExperimentalRound each element to the closest integer-valued float. Ties are resolved by rounding away from 0.
- simd_saturating_add⚠ExperimentalAdd two simd vectors elementwise, with saturation.
- simd_saturating_sub⚠ExperimentalSubtract two simd vectors elementwise, with saturation.
- simd_scatter⚠ExperimentalWrite to a vector of pointers.
- simd_select⚠ExperimentalSelect elements from a mask.
- simd_select_bitmask⚠ExperimentalSelect elements from a bitmask.
- simd_shl⚠ExperimentalElementwise vector left shift, with UB on overflow.
- simd_shr⚠ExperimentalElementwise vector right shift, with UB on overflow.
- simd_shuffle⚠ExperimentalShuffle two vectors by const indices.
- simd_shuffle_generic⚠ExperimentalShuffle two vectors by const indices.
- simd_sub⚠ExperimentalSubtract
rhs
fromlhs
elementwise. - simd_trunc⚠ExperimentalReturn the integer part of each element as an integer-valued float. In other words, non-integer values are truncated towards zero.
- simd_xor⚠ExperimentalElementwise vector “exclusive or”.