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.

Enums§

SimdAlignExperimentalNon-ferrocene_subset
A type for alignment options for SIMD masked load/store intrinsics.

Functions§

simd_addExperimental
Adds two simd vectors elementwise.
simd_andExperimentalNon-ferrocene_subset
“And“s vectors elementwise.
simd_arith_offsetExperimentalNon-ferrocene_subset
Calculates the offset from a pointer vector elementwise, potentially wrapping.
simd_asExperimentalNon-ferrocene_subset
Numerically casts a vector, elementwise.
simd_bitmaskExperimentalNon-ferrocene_subset
Truncates an integer vector to a bitmask.
simd_bitreverseExperimentalNon-ferrocene_subset
Reverses bits of each element.
simd_bswapExperimentalNon-ferrocene_subset
Swaps bytes of each element.
simd_castExperimentalNon-ferrocene_subset
Numerically casts a vector, elementwise.
simd_cast_ptrExperimentalNon-ferrocene_subset
Casts a vector of pointers.
simd_ceilExperimentalNon-ferrocene_subset
Rounds up each element to the next highest integer-valued float.
simd_ctlzExperimentalNon-ferrocene_subset
Counts the leading zeros of each element.
simd_ctpopExperimentalNon-ferrocene_subset
Counts the number of ones in each element.
simd_cttzExperimentalNon-ferrocene_subset
Counts the trailing zeros of each element.
simd_divExperimentalNon-ferrocene_subset
Divides lhs by rhs elementwise.
simd_eqExperimentalNon-ferrocene_subset
Tests elementwise equality of two vectors.
simd_expose_provenanceExperimentalNon-ferrocene_subset
Exposes a vector of pointers as a vector of addresses.
simd_extractExperimental
Extracts an element from a vector.
simd_extract_dynExperimentalNon-ferrocene_subset
Extracts an element from a vector.
simd_fabsExperimentalNon-ferrocene_subset
Returns absolute value of a vector, elementwise.
simd_fcosExperimentalNon-ferrocene_subset
T must be a vector of floats.
simd_fexpExperimentalNon-ferrocene_subset
T must be a vector of floats.
simd_fexp2ExperimentalNon-ferrocene_subset
T must be a vector of floats.
simd_flogExperimentalNon-ferrocene_subset
T must be a vector of floats.
simd_flog2ExperimentalNon-ferrocene_subset
T must be a vector of floats.
simd_flog10ExperimentalNon-ferrocene_subset
T must be a vector of floats.
simd_floorExperimentalNon-ferrocene_subset
Rounds down each element to the next lowest integer-valued float.
simd_fmaExperimental
Computes (x*y) + z for each element, but without any intermediate rounding.
simd_fmaxExperimentalNon-ferrocene_subset
Returns the maximum of two vectors, elementwise.
simd_fminExperimentalNon-ferrocene_subset
Returns the minimum of two vectors, elementwise.
simd_fsinExperimentalNon-ferrocene_subset
T must be a vector of floats.
simd_fsqrtExperimentalNon-ferrocene_subset
Takes the square root of each element.
simd_funnel_shlExperimentalNon-ferrocene_subset
Funnel Shifts vector left elementwise, with UB on overflow.
simd_funnel_shrExperimentalNon-ferrocene_subset
Funnel Shifts vector right elementwise, with UB on overflow.
simd_gatherExperimentalNon-ferrocene_subset
Reads a vector of pointers.
simd_geExperimentalNon-ferrocene_subset
Tests if x is greater than or equal to y, elementwise.
simd_gtExperimentalNon-ferrocene_subset
Tests if x is greater than y, elementwise.
simd_insertExperimental
Inserts an element into a vector, returning the updated vector.
simd_insert_dynExperimentalNon-ferrocene_subset
Inserts an element into a vector, returning the updated vector.
simd_leExperimentalNon-ferrocene_subset
Tests if x is less than or equal to y, elementwise.
simd_ltExperimentalNon-ferrocene_subset
Tests if x is less than y, elementwise.
simd_masked_loadExperimentalNon-ferrocene_subset
Reads a vector of pointers.
simd_masked_storeExperimentalNon-ferrocene_subset
Writes to a vector of pointers.
simd_mulExperimental
Multiplies two simd vectors elementwise.
simd_neExperimentalNon-ferrocene_subset
Tests elementwise inequality equality of two vectors.
simd_negExperimental
Negates a vector elementwise.
simd_orExperimentalNon-ferrocene_subset
“Ors” vectors elementwise.
simd_reduce_add_orderedExperimentalNon-ferrocene_subset
Adds elements within a vector from left to right.
simd_reduce_add_unorderedExperimentalNon-ferrocene_subset
Adds elements within a vector in arbitrary order. May also be re-associated with unordered additions on the inputs/outputs.
simd_reduce_allExperimentalNon-ferrocene_subset
Checks if all mask values are true.
simd_reduce_andExperimentalNon-ferrocene_subset
Logical “and“s all elements together.
simd_reduce_anyExperimentalNon-ferrocene_subset
Checks if any mask value is true.
simd_reduce_maxExperimentalNon-ferrocene_subset
Returns the maximum element of a vector.
simd_reduce_minExperimentalNon-ferrocene_subset
Returns the minimum element of a vector.
simd_reduce_mul_orderedExperimentalNon-ferrocene_subset
Multiplies elements within a vector from left to right.
simd_reduce_mul_unorderedExperimentalNon-ferrocene_subset
Multiplies elements within a vector in arbitrary order. May also be re-associated with unordered additions on the inputs/outputs.
simd_reduce_orExperimentalNon-ferrocene_subset
Logical “ors” all elements together.
simd_reduce_xorExperimentalNon-ferrocene_subset
Logical “exclusive ors” all elements together.
simd_relaxed_fmaExperimentalNon-ferrocene_subset
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_remExperimentalNon-ferrocene_subset
Returns remainder of two vectors elementwise.
simd_roundExperimentalNon-ferrocene_subset
Rounds each element to the closest integer-valued float. Ties are resolved by rounding away from 0.
simd_round_ties_evenExperimentalNon-ferrocene_subset
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_addExperimentalNon-ferrocene_subset
Adds two simd vectors elementwise, with saturation.
simd_saturating_subExperimentalNon-ferrocene_subset
Subtracts two simd vectors elementwise, with saturation.
simd_scatterExperimentalNon-ferrocene_subset
Writes to a vector of pointers.
simd_selectExperimentalNon-ferrocene_subset
Selects elements from a mask.
simd_select_bitmaskExperimentalNon-ferrocene_subset
Selects elements from a bitmask.
simd_shlExperimentalNon-ferrocene_subset
Shifts vector left elementwise, with UB on overflow.
simd_shrExperimentalNon-ferrocene_subset
Shifts vector right elementwise, with UB on overflow.
simd_shuffleExperimental
Shuffles two vectors by const indices.
simd_subExperimental
Subtracts rhs from lhs elementwise.
simd_truncExperimentalNon-ferrocene_subset
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_provenanceExperimentalNon-ferrocene_subset
Creates a vector of pointers from a vector of addresses.
simd_xorExperimental
“Exclusive ors” vectors elementwise.