Module redox::intrinsics
[−]
[src]
core_intrinsics
): intrinsics are unlikely to ever be stabilized, instead they should be used through stabilized interfaces in the rest of the standard library
rustc compiler intrinsics.
The corresponding definitions are in librustc_trans/trans/intrinsic.rs.
Volatiles
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].
Atomics
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:
- Acquire - a barrier for acquiring a lock. Subsequent reads and writes take place after the barrier.
- Release - a barrier for releasing a lock. Preceding reads and writes take place before the barrier.
- Sequentially consistent - sequentially consistent operations are
guaranteed to happen in order. This is the standard mode for working
with atomic types and is equivalent to Java's
volatile
.
Functions
copy |
Copies |
copy_nonoverlapping |
Copies |
transmute |
Unsafely transforms a value of one type into a value of another type. |
write_bytes |
Invokes memset on the specified pointer, setting |
abort |
[Unstable] Aborts the execution of the process. |
arith_offset |
[Unstable] Calculates the offset from a pointer, potentially wrapping. |
assume |
[Unstable] Informs the optimizer that a condition is always true. If the condition is false, the behavior is undefined. |
atomic_and | [Unstable] |
atomic_and_acq | [Unstable] |
atomic_and_acqrel | [Unstable] |
atomic_and_rel | [Unstable] |
atomic_and_relaxed | [Unstable] |
atomic_cxchg | [Unstable] |
atomic_cxchg_acq | [Unstable] |
atomic_cxchg_acqrel | [Unstable] |
atomic_cxchg_rel | [Unstable] |
atomic_cxchg_relaxed | [Unstable] |
atomic_fence | [Unstable] |
atomic_fence_acq | [Unstable] |
atomic_fence_acqrel | [Unstable] |
atomic_fence_rel | [Unstable] |
atomic_load | [Unstable] |
atomic_load_acq | [Unstable] |
atomic_load_relaxed | [Unstable] |
atomic_load_unordered | [Unstable] |
atomic_max | [Unstable] |
atomic_max_acq | [Unstable] |
atomic_max_acqrel | [Unstable] |
atomic_max_rel | [Unstable] |
atomic_max_relaxed | [Unstable] |
atomic_min | [Unstable] |
atomic_min_acq | [Unstable] |
atomic_min_acqrel | [Unstable] |
atomic_min_rel | [Unstable] |
atomic_min_relaxed | [Unstable] |
atomic_nand | [Unstable] |
atomic_nand_acq | [Unstable] |
atomic_nand_acqrel | [Unstable] |
atomic_nand_rel | [Unstable] |
atomic_nand_relaxed | [Unstable] |
atomic_or | [Unstable] |
atomic_or_acq | [Unstable] |
atomic_or_acqrel | [Unstable] |
atomic_or_rel | [Unstable] |
atomic_or_relaxed | [Unstable] |
atomic_singlethreadfence |
[Unstable] A compiler-only memory barrier. |
atomic_singlethreadfence_acq | [Unstable] |
atomic_singlethreadfence_acqrel | [Unstable] |
atomic_singlethreadfence_rel | [Unstable] |
atomic_store | [Unstable] |
atomic_store_rel | [Unstable] |
atomic_store_relaxed | [Unstable] |
atomic_store_unordered | [Unstable] |
atomic_umax | [Unstable] |
atomic_umax_acq | [Unstable] |
atomic_umax_acqrel | [Unstable] |
atomic_umax_rel | [Unstable] |
atomic_umax_relaxed | [Unstable] |
atomic_umin | [Unstable] |
atomic_umin_acq | [Unstable] |
atomic_umin_acqrel | [Unstable] |
atomic_umin_rel | [Unstable] |
atomic_umin_relaxed | [Unstable] |
atomic_xadd | [Unstable] |
atomic_xadd_acq | [Unstable] |
atomic_xadd_acqrel | [Unstable] |
atomic_xadd_rel | [Unstable] |
atomic_xadd_relaxed | [Unstable] |
atomic_xchg | [Unstable] |
atomic_xchg_acq | [Unstable] |
atomic_xchg_acqrel | [Unstable] |
atomic_xchg_rel | [Unstable] |
atomic_xchg_relaxed | [Unstable] |
atomic_xor | [Unstable] |
atomic_xor_acq | [Unstable] |
atomic_xor_acqrel | [Unstable] |
atomic_xor_rel | [Unstable] |
atomic_xor_relaxed | [Unstable] |
atomic_xsub | [Unstable] |
atomic_xsub_acq | [Unstable] |
atomic_xsub_acqrel | [Unstable] |
atomic_xsub_rel | [Unstable] |
atomic_xsub_relaxed | [Unstable] |
breakpoint |
[Unstable] Executes a breakpoint trap, for inspection by a debugger. |
bswap16 |
[Unstable] Reverses the bytes in a |
bswap32 |
[Unstable] Reverses the bytes in a |
bswap64 |
[Unstable] Reverses the bytes in a |
ceilf32 |
[Unstable] Returns the smallest integer greater than or equal to an |
ceilf64 |
[Unstable] Returns the smallest integer greater than or equal to an |
copysignf32 |
[Unstable] Copies the sign from |
copysignf64 |
[Unstable] Copies the sign from |
cosf32 |
[Unstable] Returns the cosine of an |
cosf64 |
[Unstable] Returns the cosine of an |
ctlz16 |
[Unstable] Returns the number of leading bits unset in a |
ctlz32 |
[Unstable] Returns the number of leading bits unset in a |
ctlz64 |
[Unstable] Returns the number of leading bits unset in a |
ctlz8 |
[Unstable] Returns the number of leading bits unset in a |
ctpop16 |
[Unstable] Returns the number of bits set in a |
ctpop32 |
[Unstable] Returns the number of bits set in a |
ctpop64 |
[Unstable] Returns the number of bits set in a |
ctpop8 |
[Unstable] Returns the number of bits set in a |
cttz16 |
[Unstable] Returns the number of trailing bits unset in a |
cttz32 |
[Unstable] Returns the number of trailing bits unset in a |
cttz64 |
[Unstable] Returns the number of trailing bits unset in a |
cttz8 |
[Unstable] Returns the number of trailing bits unset in a |
discriminant_value |
[Unstable] Returns the value of the discriminant for the variant in 'v',
cast to a |
drop_in_place | [Unstable] |
exp2f32 |
[Unstable] Returns 2 raised to the power of an |
exp2f64 |
[Unstable] Returns 2 raised to the power of an |
expf32 |
[Unstable] Returns the exponential of an |
expf64 |
[Unstable] Returns the exponential of an |
fabsf32 |
[Unstable] Returns the absolute value of an |
fabsf64 |
[Unstable] Returns the absolute value of an |
floorf32 |
[Unstable] Returns the largest integer less than or equal to an |
floorf64 |
[Unstable] Returns the largest integer less than or equal to an |
fmaf32 |
[Unstable] Returns |
fmaf64 |
[Unstable] Returns |
forget |
[Unstable] Moves a value out of scope without running drop glue. |
i16_add_with_overflow |
[Unstable] Performs checked |
i16_mul_with_overflow |
[Unstable] Performs checked |
i16_sub_with_overflow |
[Unstable] Performs checked |
i32_add_with_overflow |
[Unstable] Performs checked |
i32_mul_with_overflow |
[Unstable] Performs checked |
i32_sub_with_overflow |
[Unstable] Performs checked |
i64_add_with_overflow |
[Unstable] Performs checked |
i64_mul_with_overflow |
[Unstable] Performs checked |
i64_sub_with_overflow |
[Unstable] Performs checked |
i8_add_with_overflow |
[Unstable] Performs checked |
i8_mul_with_overflow |
[Unstable] Performs checked |
i8_sub_with_overflow |
[Unstable] Performs checked |
init |
[Unstable] Creates a value initialized to zero. |
init_dropped |
[Unstable] Creates a value initialized to so that its drop flag, if any, says that it has been dropped. |
log10f32 |
[Unstable] Returns the base 10 logarithm of an |
log10f64 |
[Unstable] Returns the base 10 logarithm of an |
log2f32 |
[Unstable] Returns the base 2 logarithm of an |
log2f64 |
[Unstable] Returns the base 2 logarithm of an |
logf32 |
[Unstable] Returns the natural logarithm of an |
logf64 |
[Unstable] Returns the natural logarithm of an |
min_align_of | [Unstable] |
min_align_of_val | [Unstable] |
move_val_init |
[Unstable] Moves a value to an uninitialized memory location. |
nearbyintf32 |
[Unstable] Returns the nearest integer to an |
nearbyintf64 |
[Unstable] Returns the nearest integer to an |
needs_drop |
[Unstable] Returns |
offset |
[Unstable] Calculates the offset from a pointer. |
overflowing_add |
[Unstable] Returns (a + b) mod 2N, where N is the width of N in bits. |
overflowing_mul |
[Unstable] Returns (a * b) mod 2N, where N is the width of N in bits. |
overflowing_sub |
[Unstable] Returns (a - b) mod 2N, where N is the width of N in bits. |
powf32 |
[Unstable] Raises an |
powf64 |
[Unstable] Raises an |
powif32 |
[Unstable] Raises an |
powif64 |
[Unstable] Raises an |
pref_align_of | [Unstable] |
return_address |
[Unstable] Gives the address for the return value of the enclosing function. |
rintf32 |
[Unstable] Returns the nearest integer to an |
rintf64 |
[Unstable] Returns the nearest integer to an |
roundf32 |
[Unstable] Returns the nearest integer to an |
roundf64 |
[Unstable] Returns the nearest integer to an |
sinf32 |
[Unstable] Returns the sine of an |
sinf64 |
[Unstable] Returns the sine of an |
size_of |
[Unstable] The size of a type in bytes. |
size_of_val | [Unstable] |
sqrtf32 |
[Unstable] Returns the square root of an |
sqrtf64 |
[Unstable] Returns the square root of an |
truncf32 |
[Unstable] Returns the integer part of an |
truncf64 |
[Unstable] Returns the integer part of an |
try |
[Unstable] Rust's "try catch" construct which invokes the function pointer |
type_id |
[Unstable] 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 |
[Unstable] Gets a static string slice containing the name of a type. |
u16_add_with_overflow |
[Unstable] Performs checked |
u16_mul_with_overflow |
[Unstable] Performs checked |
u16_sub_with_overflow |
[Unstable] Performs checked |
u32_add_with_overflow |
[Unstable] Performs checked |
u32_mul_with_overflow |
[Unstable] Performs checked |
u32_sub_with_overflow |
[Unstable] Performs checked |
u64_add_with_overflow |
[Unstable] Performs checked |
u64_mul_with_overflow |
[Unstable] Performs checked |
u64_sub_with_overflow |
[Unstable] Performs checked |
u8_add_with_overflow |
[Unstable] Performs checked |
u8_mul_with_overflow |
[Unstable] Performs checked |
u8_sub_with_overflow |
[Unstable] Performs checked |
unchecked_sdiv |
[Unstable] Performs an unchecked signed division, which results in undefined behavior, in cases where y == 0, or x == isize::MIN and y == -1 |
unchecked_srem |
[Unstable] Returns the remainder of an unchecked signed division, which results in undefined behavior, in cases where y == 0, or x == isize::MIN and y == -1 |
unchecked_udiv |
[Unstable] Performs an unchecked unsigned division, which results in undefined behavior, in cases where y == 0 |
unchecked_urem |
[Unstable] Returns the remainder of an unchecked unsigned division, which results in undefined behavior, in cases where y == 0 |
uninit |
[Unstable] Creates an uninitialized value. |
unreachable |
[Unstable] Tells LLVM that this point in the code is not reachable, enabling further optimizations. |
volatile_copy_memory |
[Unstable] Equivalent to the appropriate |
volatile_copy_nonoverlapping_memory |
[Unstable] Equivalent to the appropriate |
volatile_load |
[Unstable] Perform a volatile load from the |
volatile_set_memory |
[Unstable] Equivalent to the appropriate |
volatile_store |
[Unstable] Perform a volatile store to the |