pub enum IndirectMode {
Pointer,
OnStack,
AmdgpuKernelArg,
}Expand description
Different modes in which indirect arguments can be passed.
Variants§
Pointer
Passed as a normal pointer, nothing special.
OnStack
The value should be passed at a fixed stack offset in accordance to
the ABI rather than passed using a pointer. This corresponds to the byval LLVM argument
attribute. The byval argument will use a byte array with the same size as the Rust type
(which ensures that padding is preserved and that we do not rely on LLVM’s struct layout),
and will use the alignment specified in attrs.pointee_align (if Some) or the type’s
alignment (if None). This means that the alignment will not always
match the Rust type’s alignment; see documentation of pass_by_stack_offset for more info.
AmdgpuKernelArg
AmdgpuKernelArg behaves similar to OnStack except that the pointer does not necessarily
point to the stack, no extra copy is made, and the passed argument should not be modified.
This corresponds to the byref LLVM argument attribute.
Trait Implementations§
Source§impl Clone for IndirectMode
impl Clone for IndirectMode
impl Copy for IndirectMode
Source§impl Debug for IndirectMode
impl Debug for IndirectMode
impl Eq for IndirectMode
Source§impl Hash for IndirectMode
impl Hash for IndirectMode
Source§impl PartialEq for IndirectMode
impl PartialEq for IndirectMode
Source§impl StableHash for IndirectMode
impl StableHash for IndirectMode
fn stable_hash<__Hcx: StableHashCtxt>( &self, __hcx: &mut __Hcx, __hasher: &mut StableHasher, )
impl StructuralPartialEq for IndirectMode
Auto Trait Implementations§
impl DynSend for IndirectMode
impl DynSync for IndirectMode
impl Freeze for IndirectMode
impl RefUnwindSafe for IndirectMode
impl Send for IndirectMode
impl Sync for IndirectMode
impl Unpin for IndirectMode
impl UnsafeUnpin for IndirectMode
impl UnwindSafe for IndirectMode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
Source§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 1 byte
Size for each variant:
Pointer: 0 bytesOnStack: 0 bytesAmdgpuKernelArg: 0 bytes