Enum spirt::qptr::QPtrAttr

source ·
pub enum QPtrAttr {
    ToSpvPtrInput {
        input_idx: u32,
        pointee: OrdAssertEq<Type>,
    },
    FromSpvPtrOutput {
        addr_space: OrdAssertEq<AddrSpace>,
        pointee: OrdAssertEq<Type>,
    },
    Usage(OrdAssertEq<QPtrUsage>),
}
Expand description

QPtr-specific attributes ([Attr::QPtr]).

Variants§

§

ToSpvPtrInput

Fields

§input_idx: u32

When applied to a DataInst with a QPtr-typed inputs[input_idx], this describes the original OpTypePointer consumed by an unknown SPIR-V instruction (which may, or may not, access memory, at all).

Assumes the original SPIR-V StorageClass is redundant (i.e. can be deduced from the pointer’s provenance), and that any accesses performed through the pointer (or any pointers derived from it) stay within bounds (i.e. logical pointer semantics, unsuited for e.g. OpPtrAccessChain).

§

FromSpvPtrOutput

Fields

When applied to a DataInst with a QPtr-typed output value, this describes the original OpTypePointer produced by an unknown SPIR-V instruction (likely creating it, without deriving from an input).

Assumes the original SPIR-V StorageClass is significant (e.g. fresh provenance being created on the fly via OpConvertUToPtr, or derived internally by the implementation via OpImageTexelPointer).

§

Usage(OrdAssertEq<QPtrUsage>)

When applied to a QPtr-typed GlobalVar, DataInst, ControlRegionInputDecl or ControlNodeOutputDecl, this tracks all the ways in which the pointer may be used (see QPtrUsage).

Trait Implementations§

source§

impl Clone for QPtrAttr

source§

fn clone(&self) -> QPtrAttr

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl From<QPtrAttr> for Attr

source§

fn from(original: QPtrAttr) -> Attr

Converts to this type from the input type.
source§

impl Hash for QPtrAttr

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for QPtrAttr

source§

fn cmp(&self, other: &QPtrAttr) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for QPtrAttr

source§

fn eq(&self, other: &QPtrAttr) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for QPtrAttr

source§

fn partial_cmp(&self, other: &QPtrAttr) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Eq for QPtrAttr

source§

impl StructuralPartialEq for QPtrAttr

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.