🔬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 Divideslhsbyrhselementwise.
- 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 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 ifxis greater than or equal toy, elementwise.
- simd_gt⚠Experimental Tests ifxis greater thany, elementwise.
- simd_insert ⚠Experimental Inserts an element into a vector, returning the updated vector.
- simd_le⚠Experimental Tests ifxis less than or equal toy, elementwise.
- simd_lt⚠Experimental Tests ifxis 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_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 Subtractsrhsfromlhselementwise.
- 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.