Struct cranelift_codegen::ir::instructions::OpcodeConstraints [−][src]
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.
Implementations
impl OpcodeConstraints
[src]
pub fn use_typevar_operand(self) -> bool
[src]
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]
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 num_fixed_results(self) -> usize
[src]
Get the number of fixed result values produced by this opcode.
This does not include variable_args
produced by calls.
pub fn num_fixed_value_arguments(self) -> usize
[src]
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]
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]
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]
Get the typeset of allowed types for the controlling type variable in a polymorphic instruction.
pub fn is_polymorphic(self) -> bool
[src]
Is this instruction polymorphic?
Trait Implementations
impl Clone for OpcodeConstraints
[src]
fn clone(&self) -> OpcodeConstraints
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Copy for OpcodeConstraints
[src]
Auto Trait Implementations
impl RefUnwindSafe for OpcodeConstraints
impl Send for OpcodeConstraints
impl Sync for OpcodeConstraints
impl Unpin for OpcodeConstraints
impl UnwindSafe for OpcodeConstraints
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,
pub 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> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
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.
pub 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>,