[−][src]Struct cranelift_codegen_meta::cdsl::formats::InstructionFormat
Every instruction opcode has a corresponding instruction format which determines the number of operands and their kinds. Instruction formats are identified structurally, i.e., the format of an instruction is derived from the kinds of operands used in its declaration.
The instruction format stores two separate lists of operands: Immediates and values. Immediate
operands (including entity references) are represented as explicit members in the
InstructionData
variants. The value operands are stored differently, depending on how many
there are. Beyond a certain point, instruction formats switch to an external value list for
storing value arguments. Value lists can hold an arbitrary number of values.
All instruction formats must be predefined in the meta shared/formats.rs module.
Fields
name: &'static str
Instruction format name in CamelCase. This is used as a Rust variant name in both the
InstructionData
and InstructionFormat
enums.
num_value_operands: usize
has_value_list: bool
imm_fields: Vec<FormatField>
typevar_operand: Option<usize>
Index of the value input operand that is used to infer the controlling type variable. By
default, this is 0
, the first value
operand. The index is relative to the values only,
ignoring immediate operands.
Methods
impl InstructionFormat
[src]
pub fn imm_by_name(&self, name: &'static str) -> &FormatField
[src]
pub fn structure(&self) -> FormatStructure
[src]
Returns a tuple that uniquely identifies the structure.
Trait Implementations
impl Debug for InstructionFormat
[src]
impl Display for InstructionFormat
[src]
Auto Trait Implementations
impl !RefUnwindSafe for InstructionFormat
impl !Send for InstructionFormat
impl !Sync for InstructionFormat
impl Unpin for InstructionFormat
impl !UnwindSafe for InstructionFormat
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,