🔬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 ⚠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 lhsbyrhselementwise.
- 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_extract_ ⚠dyn Experimental 
- Extracts an element from a vector.
- simd_fabs ⚠Experimental 
- Returns absolute value of a vector, elementwise.
- simd_fcos ⚠Experimental 
- Tmust be a vector of floats.
- simd_fexp ⚠Experimental 
- Tmust be a vector of floats.
- simd_fexp2 ⚠Experimental 
- Tmust be a vector of floats.
- simd_flog ⚠Experimental 
- Tmust be a vector of floats.
- simd_flog2 ⚠Experimental 
- Tmust be a vector of floats.
- simd_flog10 ⚠Experimental 
- Tmust 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) + zfor 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 
- Tmust 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 xis greater than or equal toy, elementwise.
- simd_gt⚠Experimental 
- Tests if xis greater thany, elementwise.
- simd_insert ⚠Experimental 
- Inserts an element into a vector, returning the updated vector.
- simd_insert_ ⚠dyn Experimental 
- Inserts an element into a vector, returning the updated vector.
- simd_le⚠Experimental 
- Tests if xis less than or equal toy, elementwise.
- simd_lt⚠Experimental 
- Tests if xis less thany, 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) + zfor 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 rhsfromlhselementwise.
- 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.