Struct spirt::spv::lift::Terminator
source · struct Terminator<'a> {
attrs: AttrSet,
kind: Cow<'a, ControlInstKind>,
inputs: SmallVec<[Value; 2]>,
targets: SmallVec<[CfgPoint; 4]>,
target_phi_values: IndexMap<CfgPoint, &'a [Value], BuildHasherDefault<FxHasher>>,
merge: Option<Merge<CfgPoint>>,
}
Expand description
Similar to cfg::ControlInst
, except:
targets
useCfgPoint
s instead ofControlRegion
s, to be able to reach any of the SPIR-V blocks being created during lifting- φ (“phi”) values can be provided for targets regardless of “which side” of the structured control-flow they are for (“region input” vs “node output”)
- optional
merge
(forOpSelectionMerge
/OpLoopMerge
) - existing data is borrowed (from the
FuncDefBody
), wherever possible
Fields§
§attrs: AttrSet
§kind: Cow<'a, ControlInstKind>
§inputs: SmallVec<[Value; 2]>
§targets: SmallVec<[CfgPoint; 4]>
§target_phi_values: IndexMap<CfgPoint, &'a [Value], BuildHasherDefault<FxHasher>>
§merge: Option<Merge<CfgPoint>>
Auto Trait Implementations§
impl<'a> RefUnwindSafe for Terminator<'a>
impl<'a> Send for Terminator<'a>
impl<'a> Sync for Terminator<'a>
impl<'a> Unpin for Terminator<'a>
impl<'a> UnwindSafe for Terminator<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more