Struct cranelift_codegen::ir::instructions::OpcodeConstraints [−][src]
pub struct OpcodeConstraints { /* fields omitted */ }Value type constraints for a given opcode.
The InstructionFormat determines the constraints on most operands, but Value operands and
results are not determined by the format. Every Opcode has an associated
OpcodeConstraints object that provides the missing details.
Methods
impl OpcodeConstraints[src]
impl OpcodeConstraintspub fn use_typevar_operand(self) -> bool[src]
pub fn use_typevar_operand(self) -> boolCan the controlling type variable for this opcode be inferred from the designated value input operand? This also implies that this opcode is polymorphic.
pub fn requires_typevar_operand(self) -> bool[src]
pub fn requires_typevar_operand(self) -> boolIs it necessary to look at the designated value input operand in order to determine the controlling type variable, or is it good enough to use the first return type?
Most polymorphic instructions produce a single result with the type of the controlling type
variable. A few polymorphic instructions either don't produce any results, or produce
results with a fixed type. These instructions return true.
pub fn fixed_results(self) -> usize[src]
pub fn fixed_results(self) -> usizeGet the number of fixed result values produced by this opcode.
This does not include variable_args produced by calls.
pub fn fixed_value_arguments(self) -> usize[src]
pub fn fixed_value_arguments(self) -> usizeGet the number of fixed input values required by this opcode.
This does not include variable_args arguments on call and branch instructions.
The number of fixed input values is usually implied by the instruction format, but
instruction formats that use a ValueList put both fixed and variable arguments in the
list. This method returns the minimum number of values required in the value list.
pub fn result_type(self, n: usize, ctrl_type: Type) -> Type[src]
pub fn result_type(self, n: usize, ctrl_type: Type) -> TypeGet the value type of result number n, having resolved the controlling type variable to
ctrl_type.
pub fn value_argument_constraint(
self,
n: usize,
ctrl_type: Type
) -> ResolvedConstraint[src]
pub fn value_argument_constraint(
self,
n: usize,
ctrl_type: Type
) -> ResolvedConstraintGet the value type of input value number n, having resolved the controlling type variable
to ctrl_type.
Unlike results, it is possible for some input values to vary freely within a specific
ValueTypeSet. This is represented with the ArgumentConstraint::Free variant.
pub fn ctrl_typeset(self) -> Option<ValueTypeSet>[src]
pub fn ctrl_typeset(self) -> Option<ValueTypeSet>Get the typeset of allowed types for the controlling type variable in a polymorphic instruction.
pub fn is_polymorphic(self) -> bool[src]
pub fn is_polymorphic(self) -> boolIs this instruction polymorphic?
Trait Implementations
impl Clone for OpcodeConstraints[src]
impl Clone for OpcodeConstraintsfn clone(&self) -> OpcodeConstraints[src]
fn clone(&self) -> OpcodeConstraintsReturns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0[src]
fn clone_from(&mut self, source: &Self)Performs copy-assignment from source. Read more
impl Copy for OpcodeConstraints[src]
impl Copy for OpcodeConstraintsAuto Trait Implementations
impl Send for OpcodeConstraints
impl Send for OpcodeConstraintsimpl Sync for OpcodeConstraints
impl Sync for OpcodeConstraints