pub trait TargetIsa:
Display
+ Send
+ Sync {
Show 21 methods
// Required methods
fn name(&self) -> &'static str;
fn triple(&self) -> &Triple;
fn flags(&self) -> &Flags;
fn isa_flags(&self) -> Vec<Value>;
fn dynamic_vector_bytes(&self, dynamic_ty: Type) -> u32;
fn compile_function(
&self,
func: &Function,
domtree: &DominatorTree,
want_disasm: bool,
ctrl_plane: &mut ControlPlane,
) -> CodegenResult<CompiledCodeBase<Stencil>>;
fn emit_unwind_info(
&self,
result: &CompiledCode,
kind: UnwindInfoKind,
) -> CodegenResult<Option<UnwindInfo>>;
fn text_section_builder(
&self,
num_labeled_funcs: usize,
) -> Box<dyn TextSectionBuilder>;
fn function_alignment(&self) -> FunctionAlignment;
fn page_size_align_log2(&self) -> u8;
fn pretty_print_reg(&self, reg: Reg, size: u8) -> String;
fn has_native_fma(&self) -> bool;
fn has_x86_blendv_lowering(&self, ty: Type) -> bool;
fn has_x86_pshufb_lowering(&self) -> bool;
fn has_x86_pmulhrsw_lowering(&self) -> bool;
fn has_x86_pmaddubsw_lowering(&self) -> bool;
fn default_argument_extension(&self) -> ArgumentExtension;
// Provided methods
fn is_branch_protection_enabled(&self) -> bool { ... }
fn map_regalloc_reg_to_dwarf(
&self,
_: Reg,
) -> Result<u16, RegisterMappingError> { ... }
fn create_systemv_cie(&self) -> Option<CommonInformationEntry> { ... }
fn wrapped(self) -> OwnedTargetIsa
where Self: Sized + 'static { ... }
}
Expand description
Methods that are specialized to a target ISA.
Implies a Display trait that shows the shared flags, as well as any ISA-specific flags.
Required Methods§
Sourcefn flags(&self) -> &Flags
fn flags(&self) -> &Flags
Get the ISA-independent flags that were used to make this trait object.
Sourcefn isa_flags(&self) -> Vec<Value>
fn isa_flags(&self) -> Vec<Value>
Get the ISA-dependent flag values that were used to make this trait object.
Sourcefn dynamic_vector_bytes(&self, dynamic_ty: Type) -> u32
fn dynamic_vector_bytes(&self, dynamic_ty: Type) -> u32
Get the ISA-dependent maximum vector register size, in bytes.
Sourcefn compile_function(
&self,
func: &Function,
domtree: &DominatorTree,
want_disasm: bool,
ctrl_plane: &mut ControlPlane,
) -> CodegenResult<CompiledCodeBase<Stencil>>
fn compile_function( &self, func: &Function, domtree: &DominatorTree, want_disasm: bool, ctrl_plane: &mut ControlPlane, ) -> CodegenResult<CompiledCodeBase<Stencil>>
Compile the given function.
Sourcefn emit_unwind_info(
&self,
result: &CompiledCode,
kind: UnwindInfoKind,
) -> CodegenResult<Option<UnwindInfo>>
Available on crate feature unwind
only.
fn emit_unwind_info( &self, result: &CompiledCode, kind: UnwindInfoKind, ) -> CodegenResult<Option<UnwindInfo>>
unwind
only.Creates unwind information for the function.
Returns None
if there is no unwind information for the function.
Sourcefn text_section_builder(
&self,
num_labeled_funcs: usize,
) -> Box<dyn TextSectionBuilder>
fn text_section_builder( &self, num_labeled_funcs: usize, ) -> Box<dyn TextSectionBuilder>
Returns an object that can be used to build the text section of an executable.
This object will internally attempt to handle as many relocations as possible using relative calls/jumps/etc between functions.
The num_labeled_funcs
argument here is the number of functions which
will be “labeled” or might have calls between them, typically the number
of defined functions in the object file.
Sourcefn function_alignment(&self) -> FunctionAlignment
fn function_alignment(&self) -> FunctionAlignment
Returns the minimum function alignment and the preferred function alignment, for performance, required by this ISA.
Sourcefn page_size_align_log2(&self) -> u8
fn page_size_align_log2(&self) -> u8
The log2 of the target’s page size and alignment.
Note that this may be an upper-bound that is larger than necessary for some platforms since it may depend on runtime configuration.
Sourcefn pretty_print_reg(&self, reg: Reg, size: u8) -> String
fn pretty_print_reg(&self, reg: Reg, size: u8) -> String
Return the string representation of “reg” accessed as “size” bytes. The returned string will match the usual disassemly view of “reg”.
Sourcefn has_native_fma(&self) -> bool
fn has_native_fma(&self) -> bool
Returns whether this ISA has a native fused-multiply-and-add instruction for floats.
Currently this only returns false on x86 when some native features are not detected.
Sourcefn has_x86_blendv_lowering(&self, ty: Type) -> bool
fn has_x86_blendv_lowering(&self, ty: Type) -> bool
Returns whether the CLIF x86_blendv
instruction is implemented for
this ISA for the specified type.
Sourcefn has_x86_pshufb_lowering(&self) -> bool
fn has_x86_pshufb_lowering(&self) -> bool
Returns whether the CLIF x86_pshufb
instruction is implemented for
this ISA.
Sourcefn has_x86_pmulhrsw_lowering(&self) -> bool
fn has_x86_pmulhrsw_lowering(&self) -> bool
Returns whether the CLIF x86_pmulhrsw
instruction is implemented for
this ISA.
Sourcefn has_x86_pmaddubsw_lowering(&self) -> bool
fn has_x86_pmaddubsw_lowering(&self) -> bool
Returns whether the CLIF x86_pmaddubsw
instruction is implemented for
this ISA.
Sourcefn default_argument_extension(&self) -> ArgumentExtension
fn default_argument_extension(&self) -> ArgumentExtension
Returns the mode of extension used for integer arguments smaller than the pointer width in function signatures.
Some platform ABIs require that smaller-than-pointer-width values are
either zero or sign-extended to the full register width. This value is
propagated to the AbiParam
value created for signatures. Note that not
all ABIs for all platforms require extension of any form, so this is
generally only necessary for the default_call_conv
.
Provided Methods§
Sourcefn is_branch_protection_enabled(&self) -> bool
fn is_branch_protection_enabled(&self) -> bool
Get a flag indicating whether branch protection is enabled.
Sourcefn map_regalloc_reg_to_dwarf(&self, _: Reg) -> Result<u16, RegisterMappingError>
Available on crate feature unwind
only.
fn map_regalloc_reg_to_dwarf(&self, _: Reg) -> Result<u16, RegisterMappingError>
unwind
only.Map a regalloc::Reg to its corresponding DWARF register.
Sourcefn create_systemv_cie(&self) -> Option<CommonInformationEntry>
Available on crate feature unwind
only.
fn create_systemv_cie(&self) -> Option<CommonInformationEntry>
unwind
only.Creates a new System V Common Information Entry for the ISA.
Returns None
if the ISA does not support System V unwind information.
Sourcefn wrapped(self) -> OwnedTargetIsawhere
Self: Sized + 'static,
fn wrapped(self) -> OwnedTargetIsawhere
Self: Sized + 'static,
Create a polymorphic TargetIsa from this specific implementation.
Implementations§
Source§impl<'a> dyn TargetIsa + 'a
Methods implemented for free for target ISA!
impl<'a> dyn TargetIsa + 'a
Methods implemented for free for target ISA!
Sourcepub fn default_call_conv(&self) -> CallConv
pub fn default_call_conv(&self) -> CallConv
Get the default calling convention of this target.
Sourcepub fn endianness(&self) -> Endianness
pub fn endianness(&self) -> Endianness
Get the endianness of this ISA.
Sourcepub fn symbol_alignment(&self) -> u64
pub fn symbol_alignment(&self) -> u64
Returns the minimum symbol alignment for this ISA.
Sourcepub fn pointer_type(&self) -> Type
pub fn pointer_type(&self) -> Type
Get the pointer type of this ISA.
Sourcepub fn pointer_bits(&self) -> u8
pub fn pointer_bits(&self) -> u8
Get the width of pointers on this ISA, in units of bits.
Sourcepub fn pointer_bytes(&self) -> u8
pub fn pointer_bytes(&self) -> u8
Get the width of pointers on this ISA, in units of bytes.
Sourcepub fn frontend_config(&self) -> TargetFrontendConfig
pub fn frontend_config(&self) -> TargetFrontendConfig
Get the information needed by frontends producing Cranelift IR.
Trait Implementations§
Source§impl<'a> From<&'a dyn TargetIsa> for FlagsOrIsa<'a>
impl<'a> From<&'a dyn TargetIsa> for FlagsOrIsa<'a>
Source§fn from(isa: &'a dyn TargetIsa) -> FlagsOrIsa<'a>
fn from(isa: &'a dyn TargetIsa) -> FlagsOrIsa<'a>
Implementors§
impl TargetIsa for AArch64Backend
arm64
only.impl TargetIsa for Riscv64Backend
riscv64
only.