pub struct Value(_);
Expand description

An opaque reference to an SSA value.

You can get a constant Value from the following InstBuilder instructions:

  • iconst for integer constants
  • f32const for 32-bit float constants
  • f64const for 64-bit float constants
  • vconst for vector constants
  • null for null reference constants

Any InstBuilder instruction that has an output will also return a Value.

While the order is stable, it is arbitrary.

Implementations§

Create a new instance from a u32.

Return the underlying index value as a u32.

Return the raw bit encoding for this instance.

Examples found in repository?
src/ir/dfg.rs (line 546)
537
538
539
540
541
542
543
544
545
546
547
548
549
    fn from(data: ValueData) -> Self {
        match data {
            ValueData::Inst { ty, num, inst } => {
                Self::make(Self::TAG_INST, ty, num, inst.as_bits())
            }
            ValueData::Param { ty, num, block } => {
                Self::make(Self::TAG_PARAM, ty, num, block.as_bits())
            }
            ValueData::Alias { ty, original } => {
                Self::make(Self::TAG_ALIAS, ty, 0, original.as_bits())
            }
        }
    }

Create a new instance from the raw bit encoding.

Examples found in repository?
src/ir/dfg.rs (line 573)
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
    fn from(data: ValueDataPacked) -> Self {
        let tag = data.field(ValueDataPacked::TAG_SHIFT, ValueDataPacked::TAG_BITS);
        let ty = data.field(ValueDataPacked::TYPE_SHIFT, ValueDataPacked::TYPE_BITS) as u16;
        let num = data.field(ValueDataPacked::NUM_SHIFT, ValueDataPacked::NUM_BITS) as u16;
        let index = data.field(ValueDataPacked::INDEX_SHIFT, ValueDataPacked::INDEX_BITS) as u32;

        let ty = Type::from_repr(ty);
        match tag {
            ValueDataPacked::TAG_INST => ValueData::Inst {
                ty,
                num,
                inst: Inst::from_bits(index),
            },
            ValueDataPacked::TAG_PARAM => ValueData::Param {
                ty,
                num,
                block: Block::from_bits(index),
            },
            ValueDataPacked::TAG_ALIAS => ValueData::Alias {
                ty,
                original: Value::from_bits(index),
            },
            _ => panic!("Invalid tag {} in ValueDataPacked 0x{:x}", tag, data.0),
        }
    }

Create a value from its number representation. This is the number in the vNN notation.

This method is for use by the parser.

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more
Create a new entity reference from a small integer. This should crash if the requested index is not representable.
Get the index that was used to create this entity reference.
Converts to this type from the input type.
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Create an instance of the reserved value.
Checks whether value is the reserved one.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Compare self to key and return true if they are equal.

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Get the key of this sparse map value. This key is not allowed to change while the value is a member of the map.
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.