Enum rustc_target::abi::call::aarch64::ParamExtension
source · pub enum ParamExtension {
ExtendTo32Bits,
NoExtension,
}
Expand description
Given integer-types M and register width N (e.g. M=u16 and N=32 bits), the
ParamExtension
policy specifies how a uM value should be treated when
passed via register or stack-slot of width N. See also rust-lang/rust#97463.
Variants
ExtendTo32Bits
Indicates that when passing an i8/i16, either as a function argument or as a return value, it must be sign-extended to 32 bits, and likewise a u8/u16 must be zero-extended to 32-bits. (This variant is here to accommodate Apple’s deviation from the usual AArch64 ABI as defined by ARM.)
NoExtension
Indicates that no sign- nor zero-extension is performed: if a value of type with bitwidth M is passed as function argument or return value, then M bits are copied into the least significant M bits, and the remaining bits of the register (or word of memory) are untouched.
Trait Implementations
sourceimpl Clone for ParamExtension
impl Clone for ParamExtension
sourcefn clone(&self) -> ParamExtension
fn clone(&self) -> ParamExtension
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresourceimpl PartialEq<ParamExtension> for ParamExtension
impl PartialEq<ParamExtension> for ParamExtension
sourcefn eq(&self, other: &ParamExtension) -> bool
fn eq(&self, other: &ParamExtension) -> bool
impl Copy for ParamExtension
impl StructuralPartialEq for ParamExtension
Auto Trait Implementations
impl RefUnwindSafe for ParamExtension
impl Send for ParamExtension
impl Sync for ParamExtension
impl Unpin for ParamExtension
impl UnwindSafe for ParamExtension
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
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:
ExtendTo32Bits
: 0 bytesNoExtension
: 0 bytes