rustc compiler intrinsics.
The corresponding definitions are in librustc_trans/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âš | Invokes memset on the specified pointer, setting |
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 ] Add to the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xadd_acqâš | [ Experimental ] Add to the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xadd_acqrelâš | [ Experimental ] Add to the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xadd_relâš | [ Experimental ] Add to the current value, returning the previous value. The stabilized version of this intrinsic is available on the |
atomic_xadd_relaxedâš | [ Experimental ] Add 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 |
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 |
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 |
discriminant_valueâš | [ Experimental ] Returns the value of the discriminant for the variant in 'v', cast to a |
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 |
min_align_ofâš | [ Experimental ] |
min_align_of_valâš | [ Experimental ] |
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 |
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 |
powf32âš | [ Experimental ] Raises an |
powf64âš | [ Experimental ] Raises an |
powif32âš | [ Experimental ] Raises an |
powif64âš | [ Experimental ] Raises an |
pref_align_ofâš | [ Experimental ] |
rintf32âš | [ Experimental ] Returns the nearest integer to an |
rintf64âš | [ Experimental ] Returns the nearest integer to an |
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. |
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 ] |
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. |
unchecked_divâš | [ Experimental ] Performs an unchecked division, resulting in undefined behavior where y = 0 or x = |
unchecked_remâš | [ Experimental ] Returns the remainder of an unchecked division, resulting in undefined behavior where y = 0 or x = |
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 ] Perform a volatile load from the |
volatile_set_memoryâš | [ Experimental ] Equivalent to the appropriate |
volatile_storeâš | [ Experimental ] Perform 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