🔬This is a nightly-only experimental API. (
core_intrinsics)Expand description
SIMD compiler intrinsics.
In this module, a “vector” is any repr(simd) type.
Enums§
- Simd
Align Experimental - A type for alignment options for SIMD masked load/store intrinsics.
Functions§
- simd_
add ⚠Experimental validated - Adds two simd vectors elementwise.
- simd_
and ⚠Experimental validated - “And“s vectors elementwise.
- simd_
arith_ ⚠offset Experimental validated - Calculates the offset from a pointer vector elementwise, potentially wrapping.
- simd_as⚠
Experimental validated - Numerically casts a vector, elementwise.
- simd_
bitmask ⚠Experimental validated - Truncates an integer vector to a bitmask.
- simd_
bitreverse ⚠Experimental validated - Reverses bits of each element.
- simd_
bswap ⚠Experimental validated - Swaps bytes of each element.
- simd_
carryless_ ⚠mul Experimental validated - Compute the carry-less product.
- simd_
cast ⚠Experimental validated - Numerically casts a vector, elementwise.
- simd_
cast_ ⚠ptr Experimental validated - Casts a vector of pointers.
- simd_
ceil ⚠Experimental validated - Rounds up each element to the next highest integer-valued float.
- simd_
ctlz ⚠Experimental validated - Counts the leading zeros of each element.
- simd_
ctpop ⚠Experimental validated - Counts the number of ones in each element.
- simd_
cttz ⚠Experimental validated - Counts the trailing zeros of each element.
- simd_
div ⚠Experimental validated - Divides
lhsbyrhselementwise. - simd_eq⚠
Experimental validated - Tests elementwise equality of two vectors.
- simd_
expose_ ⚠provenance Experimental validated - Exposes a vector of pointers as a vector of addresses.
- simd_
extract ⚠Experimental validated - Extracts an element from a vector.
- simd_
extract_ ⚠dyn Experimental validated - Extracts an element from a vector.
- simd_
fabs ⚠Experimental validated - Returns absolute value of a vector, elementwise.
- simd_
fcos ⚠Experimental validated Tmust be a vector of floats.- simd_
fexp ⚠Experimental validated Tmust be a vector of floats.- simd_
fexp2 ⚠Experimental validated Tmust be a vector of floats.- simd_
flog ⚠Experimental validated Tmust be a vector of floats.- simd_
flog2 ⚠Experimental validated Tmust be a vector of floats.- simd_
flog10 ⚠Experimental validated Tmust be a vector of floats.- simd_
floor ⚠Experimental validated - Rounds down each element to the next lowest integer-valued float.
- simd_
fma ⚠Experimental validated - Computes
(x*y) + zfor each element, but without any intermediate rounding. - simd_
fsin ⚠Experimental validated Tmust be a vector of floats.- simd_
fsqrt ⚠Experimental validated - Takes the square root of each element.
- simd_
funnel_ ⚠shl Experimental validated - Funnel Shifts vector left elementwise, with UB on overflow.
- simd_
funnel_ ⚠shr Experimental validated - Funnel Shifts vector right elementwise, with UB on overflow.
- simd_
gather ⚠Experimental validated - Reads a vector of pointers.
- simd_ge⚠
Experimental validated - Tests if
xis greater than or equal toy, elementwise. - simd_gt⚠
Experimental validated - Tests if
xis greater thany, elementwise. - simd_
insert ⚠Experimental validated - Inserts an element into a vector, returning the updated vector.
- simd_
insert_ ⚠dyn Experimental validated - Inserts an element into a vector, returning the updated vector.
- simd_le⚠
Experimental validated - Tests if
xis less than or equal toy, elementwise. - simd_lt⚠
Experimental validated - Tests if
xis less thany, elementwise. - simd_
masked_ ⚠load Experimental validated - Reads a vector of pointers.
- simd_
masked_ ⚠store Experimental validated - Writes to a vector of pointers.
- simd_
maximum_ ⚠number_ nsz Experimental validated - Returns the maximum of two vectors, elementwise.
- simd_
minimum_ ⚠number_ nsz Experimental validated - Returns the minimum of two vectors, elementwise.
- simd_
mul ⚠Experimental validated - Multiplies two simd vectors elementwise.
- simd_ne⚠
Experimental validated - Tests elementwise inequality equality of two vectors.
- simd_
neg ⚠Experimental validated - Negates a vector elementwise.
- simd_or⚠
Experimental validated - “Ors” vectors elementwise.
- simd_
reduce_ ⚠add_ ordered Experimental validated - Adds elements within a vector from left to right.
- simd_
reduce_ ⚠add_ unordered Experimental validated - Adds elements within a vector in arbitrary order. May also be re-associated with unordered additions on the inputs/outputs.
- simd_
reduce_ ⚠all Experimental validated - Checks if all mask values are true.
- simd_
reduce_ ⚠and Experimental validated - Logical “and“s all elements together.
- simd_
reduce_ ⚠any Experimental validated - Checks if any mask value is true.
- simd_
reduce_ ⚠max Experimental validated - Returns the maximum element of a vector.
- simd_
reduce_ ⚠min Experimental validated - Returns the minimum element of a vector.
- simd_
reduce_ ⚠mul_ ordered Experimental validated - Multiplies elements within a vector from left to right.
- simd_
reduce_ ⚠mul_ unordered Experimental validated - Multiplies elements within a vector in arbitrary order. May also be re-associated with unordered additions on the inputs/outputs.
- simd_
reduce_ ⚠or Experimental validated - Logical “ors” all elements together.
- simd_
reduce_ ⚠xor Experimental validated - Logical “exclusive ors” all elements together.
- simd_
relaxed_ ⚠fma Experimental validated - 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 validated - Returns remainder of two vectors elementwise.
- simd_
round ⚠Experimental validated - Rounds each element to the closest integer-valued float. Ties are resolved by rounding away from 0.
- simd_
round_ ⚠ties_ even Experimental validated - Rounds each element to the closest integer-valued float. Ties are resolved by rounding to the number with an even least significant digit
- simd_
saturating_ ⚠add Experimental validated - Adds two simd vectors elementwise, with saturation.
- simd_
saturating_ ⚠sub Experimental validated - Subtracts two simd vectors elementwise, with saturation.
- simd_
scatter ⚠Experimental validated - Writes to a vector of pointers.
- simd_
select ⚠Experimental validated - Selects elements from a mask.
- simd_
select_ ⚠bitmask Experimental validated - Selects elements from a bitmask.
- simd_
shl ⚠Experimental validated - Shifts vector left elementwise, with UB on overflow.
- simd_
shr ⚠Experimental validated - Shifts vector right elementwise, with UB on overflow.
- simd_
shuffle ⚠Experimental validated - Shuffles two vectors by const indices.
- simd_
splat ⚠Experimental validated - Creates a vector where every lane has the provided value.
- simd_
sub ⚠Experimental validated - Subtracts
rhsfromlhselementwise. - simd_
trunc ⚠Experimental validated - 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 validated - Creates a vector of pointers from a vector of addresses.
- simd_
xor ⚠Experimental validated - “Exclusive ors” vectors elementwise.