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