Compiler intrinsics.
The corresponding definitions are in librustc_codegen_llvm/intrinsic.rs
.
The volatile intrinsics provide operations intended to act on I/O memory, which are guaranteed to not be reordered by the compiler across other volatile intrinsics. See the LLVM documentation on [volatile].
The atomic intrinsics provide common atomic operations on machine words, with multiple possible memory orderings. They obey the same semantics as C++11. See the LLVM documentation on [atomics].
A quick refresher on memory ordering:
volatile
.copyâš |
Copies |
copy_nonoverlappingâš |
Copies |
drop_in_placeâš |
Executes the destructor (if any) of the pointed-to value. |
transmuteâš |
Reinterprets the bits of a value of one type as another type. |
write_bytesâš |
Sets |
abortâš |
Experimental Aborts the execution of the process. |
add_with_overflow |
Experimental Performs checked integer addition. The stabilized versions of this intrinsic are available on the integer primitives via the |
arith_offsetâš |
Experimental Calculates the offset from a pointer, potentially wrapping. |
assumeâš |
Experimental Informs the optimizer that a condition is always true. If the condition is false, the behavior is undefined. |
atomic_andâš |
Experimental Bitwise and with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_and_acqâš |
Experimental Bitwise and with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_and_acqrelâš |
Experimental Bitwise and with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_and_relâš |
Experimental Bitwise and with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_and_relaxedâš |
Experimental Bitwise and with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_cxchgâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchg_acqâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchg_acq_failrelaxedâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchg_acqrelâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchg_acqrel_failrelaxedâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchg_failacqâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchg_failrelaxedâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchg_relâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchg_relaxedâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchgweakâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchgweak_acqâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchgweak_acq_failrelaxedâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchgweak_acqrelâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchgweak_acqrel_failrelaxedâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchgweak_failacqâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchgweak_failrelaxedâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchgweak_relâš |
Experimental Stores a value if the current value is the same as the |
atomic_cxchgweak_relaxedâš |
Experimental Stores a value if the current value is the same as the |
atomic_fenceâš | Experimental |
atomic_fence_acqâš | Experimental |
atomic_fence_acqrelâš | Experimental |
atomic_fence_relâš | Experimental |
atomic_loadâš |
Experimental Loads the current value of the pointer. The stabilized version of this intrinsic is available on the |
atomic_load_acqâš |
Experimental Loads the current value of the pointer. The stabilized version of this intrinsic is available on the |
atomic_load_relaxedâš |
Experimental Loads the current value of the pointer. The stabilized version of this intrinsic is available on the |
atomic_load_unorderedâš | Experimental |
atomic_maxâš | Experimental |
atomic_max_acqâš | Experimental |
atomic_max_acqrelâš | Experimental |
atomic_max_relâš | Experimental |
atomic_max_relaxedâš | Experimental |
atomic_minâš | Experimental |
atomic_min_acqâš | Experimental |
atomic_min_acqrelâš | Experimental |
atomic_min_relâš | Experimental |
atomic_min_relaxedâš | Experimental |
atomic_nandâš |
Experimental Bitwise nand with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_nand_acqâš |
Experimental Bitwise nand with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_nand_acqrelâš |
Experimental Bitwise nand with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_nand_relâš |
Experimental Bitwise nand with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_nand_relaxedâš |
Experimental Bitwise nand with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_orâš |
Experimental Bitwise or with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_or_acqâš |
Experimental Bitwise or with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_or_acqrelâš |
Experimental Bitwise or with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_or_relâš |
Experimental Bitwise or with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_or_relaxedâš |
Experimental Bitwise or with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_singlethreadfenceâš |
Experimental A compiler-only memory barrier. |
atomic_singlethreadfence_acqâš | Experimental |
atomic_singlethreadfence_acqrelâš | Experimental |
atomic_singlethreadfence_relâš | Experimental |
atomic_storeâš |
Experimental Stores the value at the specified memory location. The stabilized version of this intrinsic is available on the |
atomic_store_relâš |
Experimental Stores the value at the specified memory location. The stabilized version of this intrinsic is available on the |
atomic_store_relaxedâš |
Experimental Stores the value at the specified memory location. The stabilized version of this intrinsic is available on the |
atomic_store_unorderedâš | Experimental |
atomic_umaxâš | Experimental |
atomic_umax_acqâš | Experimental |
atomic_umax_acqrelâš | Experimental |
atomic_umax_relâš | Experimental |
atomic_umax_relaxedâš | Experimental |
atomic_uminâš | Experimental |
atomic_umin_acqâš | Experimental |
atomic_umin_acqrelâš | Experimental |
atomic_umin_relâš | Experimental |
atomic_umin_relaxedâš | Experimental |
atomic_xaddâš |
Experimental Adds to the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xadd_acqâš |
Experimental Adds to the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xadd_acqrelâš |
Experimental Adds to the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xadd_relâš |
Experimental Adds to the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xadd_relaxedâš |
Experimental Adds to the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xchgâš |
Experimental Stores the value at the specified memory location, returning the old value. The stabilized version of this intrinsic is available on the |
atomic_xchg_acqâš |
Experimental Stores the value at the specified memory location, returning the old value. The stabilized version of this intrinsic is available on the |
atomic_xchg_acqrelâš |
Experimental Stores the value at the specified memory location, returning the old value. The stabilized version of this intrinsic is available on the |
atomic_xchg_relâš |
Experimental Stores the value at the specified memory location, returning the old value. The stabilized version of this intrinsic is available on the |
atomic_xchg_relaxedâš |
Experimental Stores the value at the specified memory location, returning the old value. The stabilized version of this intrinsic is available on the |
atomic_xorâš |
Experimental Bitwise xor with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xor_acqâš |
Experimental Bitwise xor with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xor_acqrelâš |
Experimental Bitwise xor with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xor_relâš |
Experimental Bitwise xor with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xor_relaxedâš |
Experimental Bitwise xor with the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xsubâš |
Experimental Subtract from the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xsub_acqâš |
Experimental Subtract from the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xsub_acqrelâš |
Experimental Subtract from the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xsub_relâš |
Experimental Subtract from the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xsub_relaxedâš |
Experimental Subtract from the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
bitreverse |
Experimental Reverses the bits in an integer type |
breakpointâš |
Experimental Executes a breakpoint trap, for inspection by a debugger. |
bswap |
Experimental Reverses the bytes in an integer type |
ceilf32âš |
Experimental Returns the smallest integer greater than or equal to an |
ceilf64âš |
Experimental Returns the smallest integer greater than or equal to an |
copysignf32âš |
Experimental Copies the sign from |
copysignf64âš |
Experimental Copies the sign from |
cosf32âš |
Experimental Returns the cosine of an |
cosf64âš |
Experimental Returns the cosine of an |
ctlz |
Experimental Returns the number of leading unset bits (zeroes) in an integer type |
ctlz_nonzeroâš |
Experimental Like |
ctpop |
Experimental Returns the number of bits set in an integer type |
cttz |
Experimental Returns the number of trailing unset bits (zeroes) in an integer type |
cttz_nonzeroâš |
Experimental Like |
discriminant_valueâš |
Experimental Returns the value of the discriminant for the variant in 'v', cast to a |
exact_divâš |
Experimental Performs an exact division, resulting in undefined behavior where |
exp2f32âš |
Experimental Returns 2 raised to the power of an |
exp2f64âš |
Experimental Returns 2 raised to the power of an |
expf32âš |
Experimental Returns the exponential of an |
expf64âš |
Experimental Returns the exponential of an |
fabsf32âš |
Experimental Returns the absolute value of an |
fabsf64âš |
Experimental Returns the absolute value of an |
fadd_fastâš |
Experimental Float addition that allows optimizations based on algebraic rules. May assume inputs are finite. |
fdiv_fastâš |
Experimental Float division that allows optimizations based on algebraic rules. May assume inputs are finite. |
floorf32âš |
Experimental Returns the largest integer less than or equal to an |
floorf64âš |
Experimental Returns the largest integer less than or equal to an |
fmaf32âš |
Experimental Returns |
fmaf64âš |
Experimental Returns |
fmul_fastâš |
Experimental Float multiplication that allows optimizations based on algebraic rules. May assume inputs are finite. |
forgetâš |
Experimental Moves a value out of scope without running drop glue. |
frem_fastâš |
Experimental Float remainder that allows optimizations based on algebraic rules. May assume inputs are finite. |
fsub_fastâš |
Experimental Float subtraction that allows optimizations based on algebraic rules. May assume inputs are finite. |
initâš |
Experimental Creates a value initialized to zero. |
likelyâš |
Experimental Hints to the compiler that branch condition is likely to be true. Returns the value passed to it. |
log10f32âš |
Experimental Returns the base 10 logarithm of an |
log10f64âš |
Experimental Returns the base 10 logarithm of an |
log2f32âš |
Experimental Returns the base 2 logarithm of an |
log2f64âš |
Experimental Returns the base 2 logarithm of an |
logf32âš |
Experimental Returns the natural logarithm of an |
logf64âš |
Experimental Returns the natural logarithm of an |
maxnumf32 |
Experimental Returns the maximum of two |
maxnumf64 |
Experimental Returns the maximum of two |
min_align_of | Experimental |
min_align_of_valâš | Experimental |
minnumf32 |
Experimental Returns the minimum of two |
minnumf64 |
Experimental Returns the minimum of two |
move_val_initâš |
Experimental Moves a value to an uninitialized memory location. |
mul_with_overflow |
Experimental Performs checked integer multiplication The stabilized versions of this intrinsic are available on the integer primitives via the |
nearbyintf32âš |
Experimental Returns the nearest integer to an |
nearbyintf64âš |
Experimental Returns the nearest integer to an |
needs_drop |
Experimental Returns |
nontemporal_storeâš |
Experimental Emits a |
offsetâš |
Experimental Calculates the offset from a pointer. |
overflowing_add |
Experimental Returns (a + b) mod 2N, where N is the width of T in bits. The stabilized versions of this intrinsic are available on the integer primitives via the |
overflowing_mul |
Experimental Returns (a * b) mod 2N, where N is the width of T in bits. The stabilized versions of this intrinsic are available on the integer primitives via the |
overflowing_sub |
Experimental Returns (a - b) mod 2N, where N is the width of T in bits. The stabilized versions of this intrinsic are available on the integer primitives via the |
panic_if_uninhabitedâš |
Experimental A guard for unsafe functions that cannot ever be executed if |
powf32âš |
Experimental Raises an |
powf64âš |
Experimental Raises an |
powif32âš |
Experimental Raises an |
powif64âš |
Experimental Raises an |
pref_align_ofâš | Experimental |
prefetch_read_dataâš |
Experimental The |
prefetch_read_instructionâš |
Experimental The |
prefetch_write_dataâš |
Experimental The |
prefetch_write_instructionâš |
Experimental The |
rintf32âš |
Experimental Returns the nearest integer to an |
rintf64âš |
Experimental Returns the nearest integer to an |
rotate_left |
Experimental Performs rotate left. The stabilized versions of this intrinsic are available on the integer primitives via the |
rotate_right |
Experimental Performs rotate right. The stabilized versions of this intrinsic are available on the integer primitives via the |
roundf32âš |
Experimental Returns the nearest integer to an |
roundf64âš |
Experimental Returns the nearest integer to an |
rustc_peekâš |
Experimental Magic intrinsic that derives its meaning from attributes attached to the function. |
saturating_add |
Experimental Computes |
saturating_sub |
Experimental Computes |
sinf32âš |
Experimental Returns the sine of an |
sinf64âš |
Experimental Returns the sine of an |
size_of |
Experimental The size of a type in bytes. |
size_of_valâš |
Experimental The size of the referenced value in bytes. |
sqrtf32âš |
Experimental Returns the square root of an |
sqrtf64âš |
Experimental Returns the square root of an |
sub_with_overflow |
Experimental Performs checked integer subtraction The stabilized versions of this intrinsic are available on the integer primitives via the |
truncf32âš |
Experimental Returns the integer part of an |
truncf64âš |
Experimental Returns the integer part of an |
tryâš |
Experimental Rust's "try catch" construct which invokes the function pointer |
type_idâš |
Experimental Gets an identifier which is globally unique to the specified type. This function will return the same value for a type regardless of whichever crate it is invoked in. |
type_nameâš |
Experimental Gets a static string slice containing the name of a type. |
unaligned_volatile_loadâš |
Experimental Performs a volatile load from the |
unaligned_volatile_storeâš |
Experimental Performs a volatile store to the |
unchecked_addâš |
Experimental Returns the result of an unchecked addition, resulting in undefined behavior when |
unchecked_divâš |
Experimental Performs an unchecked division, resulting in undefined behavior where y = 0 or x = |
unchecked_mulâš |
Experimental Returns the result of an unchecked multiplication, resulting in undefined behavior when |
unchecked_remâš |
Experimental Returns the remainder of an unchecked division, resulting in undefined behavior where y = 0 or x = |
unchecked_shlâš |
Experimental Performs an unchecked left shift, resulting in undefined behavior when y < 0 or y >= N, where N is the width of T in bits. |
unchecked_shrâš |
Experimental Performs an unchecked right shift, resulting in undefined behavior when y < 0 or y >= N, where N is the width of T in bits. |
unchecked_subâš |
Experimental Returns the result of an unchecked substraction, resulting in undefined behavior when |
uninitâš |
Experimental Creates an uninitialized value. |
unlikelyâš |
Experimental Hints to the compiler that branch condition is likely to be false. Returns the value passed to it. |
unreachableâš |
Experimental Tells LLVM that this point in the code is not reachable, enabling further optimizations. |
volatile_copy_memoryâš |
Experimental Equivalent to the appropriate |
volatile_copy_nonoverlapping_memoryâš |
Experimental Equivalent to the appropriate |
volatile_loadâš |
Experimental Performs a volatile load from the |
volatile_set_memoryâš |
Experimental Equivalent to the appropriate |
volatile_storeâš |
Experimental Performs a volatile store to the |
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/intrinsics/index.html