Skip to main content

Module simd

Module 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.

Modules§

scalableExperimental
Scalable vector compiler intrinsics.

Enums§

SimdAlignExperimental
A type for alignment options for SIMD masked load/store intrinsics.

Functions§

simd_add⚠Experimentalvalidated
Adds two simd vectors elementwise.
simd_and⚠Experimentalvalidated
“And“s vectors elementwise.
simd_arith_offset⚠Experimentalvalidated
Calculates the offset from a pointer vector elementwise, potentially wrapping.
simd_as⚠Experimentalvalidated
Numerically casts a vector, elementwise.
simd_bitmask⚠Experimentalvalidated
Truncates an integer vector to a bitmask.
simd_bitreverse⚠Experimentalvalidated
Reverses bits of each element.
simd_bswap⚠Experimentalvalidated
Swaps bytes of each element.
simd_carryless_mul⚠Experimentalvalidated
Compute the carry-less product.
simd_cast⚠Experimentalvalidated
Numerically casts a vector, elementwise.
simd_cast_ptr⚠Experimentalvalidated
Casts a vector of pointers.
simd_ceil⚠Experimentalvalidated
Rounds up each element to the next highest integer-valued float.
simd_ctlz⚠Experimentalvalidated
Counts the leading zeros of each element.
simd_ctpop⚠Experimentalvalidated
Counts the number of ones in each element.
simd_cttz⚠Experimentalvalidated
Counts the trailing zeros of each element.
simd_div⚠Experimentalvalidated
Divides lhs by rhs elementwise.
simd_eq⚠Experimentalvalidated
Tests elementwise equality of two vectors.
simd_expose_provenance⚠Experimentalvalidated
Exposes a vector of pointers as a vector of addresses.
simd_extract⚠Experimentalvalidated
Extracts an element from a vector.
simd_extract_dyn⚠Experimentalvalidated
Extracts an element from a vector.
simd_fabs⚠Experimentalvalidated
Returns absolute value of a vector, elementwise.
simd_fcos⚠Experimentalvalidated
T must be a vector of floats.
simd_fexp⚠Experimentalvalidated
T must be a vector of floats.
simd_fexp2⚠Experimentalvalidated
T must be a vector of floats.
simd_flog⚠Experimentalvalidated
T must be a vector of floats.
simd_flog2⚠Experimentalvalidated
T must be a vector of floats.
simd_flog10⚠Experimentalvalidated
T must be a vector of floats.
simd_floor⚠Experimentalvalidated
Rounds down each element to the next lowest integer-valued float.
simd_fma⚠Experimentalvalidated
Computes (x*y) + z for each element, but without any intermediate rounding.
simd_fsin⚠Experimentalvalidated
T must be a vector of floats.
simd_fsqrt⚠Experimentalvalidated
Takes the square root of each element.
simd_funnel_shl⚠Experimentalvalidated
Funnel Shifts vector left elementwise, with UB on overflow.
simd_funnel_shr⚠Experimentalvalidated
Funnel Shifts vector right elementwise, with UB on overflow.
simd_gather⚠Experimentalvalidated
Reads a vector of pointers.
simd_ge⚠Experimentalvalidated
Tests if x is greater than or equal to y, elementwise.
simd_gt⚠Experimentalvalidated
Tests if x is greater than y, elementwise.
simd_insert⚠Experimentalvalidated
Inserts an element into a vector, returning the updated vector.
simd_insert_dyn⚠Experimentalvalidated
Inserts an element into a vector, returning the updated vector.
simd_le⚠Experimentalvalidated
Tests if x is less than or equal to y, elementwise.
simd_lt⚠Experimentalvalidated
Tests if x is less than y, elementwise.
simd_masked_load⚠Experimentalvalidated
Reads a vector of pointers.
simd_masked_store⚠Experimentalvalidated
Writes to a vector of pointers.
simd_maximum_number_nsz⚠Experimentalvalidated
Returns the maximum of two vectors, elementwise.
simd_minimum_number_nsz⚠Experimentalvalidated
Returns the minimum of two vectors, elementwise.
simd_mul⚠Experimentalvalidated
Multiplies two simd vectors elementwise.
simd_ne⚠Experimentalvalidated
Tests elementwise inequality equality of two vectors.
simd_neg⚠Experimentalvalidated
Negates a vector elementwise.
simd_or⚠Experimentalvalidated
“Ors” vectors elementwise.
simd_reduce_add_ordered⚠Experimentalvalidated
Adds elements within a vector from left to right.
simd_reduce_add_unordered⚠Experimentalvalidated
Adds elements within a vector in arbitrary order. May also be re-associated with unordered additions on the inputs/outputs.
simd_reduce_all⚠Experimentalvalidated
Checks if all mask values are true.
simd_reduce_and⚠Experimentalvalidated
Logical “and“s all elements together.
simd_reduce_any⚠Experimentalvalidated
Checks if any mask value is true.
simd_reduce_max⚠Experimentalvalidated
Returns the maximum element of a vector.
simd_reduce_min⚠Experimentalvalidated
Returns the minimum element of a vector.
simd_reduce_mul_ordered⚠Experimentalvalidated
Multiplies elements within a vector from left to right.
simd_reduce_mul_unordered⚠Experimentalvalidated
Multiplies elements within a vector in arbitrary order. May also be re-associated with unordered additions on the inputs/outputs.
simd_reduce_or⚠Experimentalvalidated
Logical “ors” all elements together.
simd_reduce_xor⚠Experimentalvalidated
Logical “exclusive ors” all elements together.
simd_relaxed_fma⚠Experimentalvalidated
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⚠Experimentalvalidated
Returns remainder of two vectors elementwise.
simd_round⚠Experimentalvalidated
Rounds each element to the closest integer-valued float. Ties are resolved by rounding away from 0.
simd_round_ties_even⚠Experimentalvalidated
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⚠Experimentalvalidated
Adds two simd vectors elementwise, with saturation.
simd_saturating_sub⚠Experimentalvalidated
Subtracts two simd vectors elementwise, with saturation.
simd_scatter⚠Experimentalvalidated
Writes to a vector of pointers.
simd_select⚠Experimentalvalidated
Selects elements from a mask.
simd_select_bitmask⚠Experimentalvalidated
Selects elements from a bitmask.
simd_shl⚠Experimentalvalidated
Shifts vector left elementwise, with UB on overflow.
simd_shr⚠Experimentalvalidated
Shifts vector right elementwise, with UB on overflow.
simd_shuffle⚠Experimentalvalidated
Shuffles two vectors by const indices.
simd_splat⚠Experimentalvalidated
Creates a vector where every lane has the provided value.
simd_sub⚠Experimentalvalidated
Subtracts rhs from lhs elementwise.
simd_trunc⚠Experimentalvalidated
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⚠Experimentalvalidated
Creates a vector of pointers from a vector of addresses.
simd_xor⚠Experimentalvalidated
“Exclusive ors” vectors elementwise.