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 OpcodeConstraints
pub fn use_typevar_operand(self) -> bool
[src]
pub fn use_typevar_operand(self) -> bool
Can 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) -> bool
Is 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) -> usize
Get 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) -> usize
Get 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) -> Type
Get 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
) -> ResolvedConstraint
Get 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) -> bool
Is this instruction polymorphic?
Trait Implementations
impl Clone for OpcodeConstraints
[src]
impl Clone for OpcodeConstraints
fn clone(&self) -> OpcodeConstraints
[src]
fn clone(&self) -> OpcodeConstraints
Returns 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 OpcodeConstraints
Auto Trait Implementations
impl Send for OpcodeConstraints
impl Send for OpcodeConstraints
impl Sync for OpcodeConstraints
impl Sync for OpcodeConstraints