std::intrinsics::simd - Rust (original) (raw)
🔬This is a nightly-only experimental API. (core_intrinsics
)
Expand description
SIMD compiler intrinsics.
In this module, a “vector” is any repr(simd)
type.
simd_add⚠Experimental
Adds two simd vectors elementwise.
simd_and⚠Experimental
“Ands” vectors elementwise.
simd_arith_offset⚠Experimental
Calculates the offset from a pointer vector elementwise, potentially wrapping.
simd_as⚠Experimental
Numerically casts a vector, elementwise.
simd_bitmask⚠Experimental
Truncates an integer vector to a bitmask.
simd_bitreverse⚠Experimental
Reverses bits of each element.
simd_bswap⚠Experimental
Swaps bytes of each element.
simd_cast⚠Experimental
Numerically casts a vector, elementwise.
simd_cast_ptr⚠Experimental
Casts a vector of pointers.
simd_ceil⚠Experimental
Rounds up each element to the next highest integer-valued float.
simd_ctlz⚠Experimental
Counts the leading zeros of each element.
simd_ctpop⚠Experimental
Counts the number of ones in each element.
simd_cttz⚠Experimental
Counts the trailing zeros of each element.
simd_div⚠Experimental
Divides lhs
by rhs
elementwise.
simd_eq⚠Experimental
Tests elementwise equality of two vectors.
simd_expose_provenance⚠Experimental
Exposes a vector of pointers as a vector of addresses.
simd_extract⚠Experimental
Extracts an element from a vector.
simd_fabs⚠Experimental
Returns absolute value of a vector, elementwise.
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⚠Experimental
Rounds down each element to the next lowest integer-valued float.
simd_fma⚠Experimental
Computes (x*y) + z
for each element, but without any intermediate rounding.
simd_fmax⚠Experimental
Returns the maximum of two vectors, elementwise.
simd_fmin⚠Experimental
Returns the minimum of two vectors, elementwise.
simd_fsin⚠Experimental
T
must be a vector of floats.
simd_fsqrt⚠Experimental
Takes the square root of each element.
simd_gather⚠Experimental
Reads a vector of pointers.
simd_ge⚠Experimental
Tests if x
is greater than or equal to y
, elementwise.
simd_gt⚠Experimental
Tests if x
is greater than y
, elementwise.
simd_insert⚠Experimental
Inserts an element into a vector, returning the updated vector.
simd_le⚠Experimental
Tests if x
is less than or equal to y
, elementwise.
simd_lt⚠Experimental
Tests if x
is less than y
, elementwise.
simd_masked_load⚠Experimental
Reads a vector of pointers.
simd_masked_store⚠Experimental
Writes to a vector of pointers.
simd_mul⚠Experimental
Multiplies two simd vectors elementwise.
simd_ne⚠Experimental
Tests elementwise inequality equality of two vectors.
simd_neg⚠Experimental
Negates a vector elementwise.
simd_or⚠Experimental
“Ors” vectors elementwise.
simd_reduce_add_ordered⚠Experimental
Adds elements within a vector from left to right.
simd_reduce_add_unordered⚠Experimental
Adds elements within a vector in arbitrary order. May also be re-associated with unordered additions on the inputs/outputs.
simd_reduce_all⚠Experimental
Checks if all mask values are true.
simd_reduce_and⚠Experimental
Logical “ands” all elements together.
simd_reduce_any⚠Experimental
Checks if any mask value is true.
simd_reduce_max⚠Experimental
Returns the maximum element of a vector.
simd_reduce_min⚠Experimental
Returns the minimum element of a vector.
simd_reduce_mul_ordered⚠Experimental
Multiplies elements within a vector from left to right.
simd_reduce_mul_unordered⚠Experimental
Multiplies elements within a vector in arbitrary order. May also be re-associated with unordered additions on the inputs/outputs.
simd_reduce_or⚠Experimental
Logical “ors” all elements together.
simd_reduce_xor⚠Experimental
Logical “exclusive ors” all elements together.
simd_relaxed_fma⚠Experimental
Computes (x*y) + z
for each element, non-deterministically executing either a fused multiply-add or two operations with rounding of the intermediate result.
simd_rem⚠Experimental
Returns remainder of two vectors elementwise.
simd_round⚠Experimental
Rounds each element to the closest integer-valued float. Ties are resolved by rounding away from 0.
simd_saturating_add⚠Experimental
Adds two simd vectors elementwise, with saturation.
simd_saturating_sub⚠Experimental
Subtracts two simd vectors elementwise, with saturation.
simd_scatter⚠Experimental
Writes to a vector of pointers.
simd_select⚠Experimental
Selects elements from a mask.
simd_select_bitmask⚠Experimental
Selects elements from a bitmask.
simd_shl⚠Experimental
Shifts vector left elementwise, with UB on overflow.
simd_shr⚠Experimental
Shifts vector right elementwise, with UB on overflow.
simd_shuffle⚠Experimental
Shuffles two vectors by const indices.
simd_sub⚠Experimental
Subtracts rhs
from lhs
elementwise.
simd_trunc⚠Experimental
Returns the integer part of each element as an integer-valued float. In other words, non-integer values are truncated towards zero.
simd_with_exposed_provenance⚠Experimental
Creates a vector of pointers from a vector of addresses.
simd_xor⚠Experimental
“Exclusive ors” vectors elementwise.