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