pub enum Instruction<D: Dialect> {
Show 95 variants
Metadata {
info_offset: Variable<D>,
split_meta: bool,
out: Variable<D>,
},
ExtendedMetadata {
info_offset: Variable<D>,
dim: Variable<D>,
split_meta: bool,
static_offset: u32,
out: Variable<D>,
},
ConstLength {
length: u32,
out: Variable<D>,
},
SliceLength {
input: Variable<D>,
out: Variable<D>,
},
DeclareVariable {
var: Variable<D>,
},
Modulo(BinaryInstruction<D>),
Remainder(BinaryInstruction<D>),
Add(BinaryInstruction<D>),
Fma {
a: Variable<D>,
b: Variable<D>,
c: Variable<D>,
out: Variable<D>,
},
Div(BinaryInstruction<D>),
Mul(BinaryInstruction<D>),
Sub(BinaryInstruction<D>),
HiMul(BinaryInstruction<D>),
Index(BinaryInstruction<D>),
IndexAssign(BinaryInstruction<D>),
Assign(UnaryInstruction<D>),
RangeLoop {
i: Variable<D>,
start: Variable<D>,
end: Variable<D>,
step: Option<Variable<D>>,
inclusive: bool,
instructions: Vec<Self>,
},
VecInit {
inputs: Vec<Variable<D>>,
out: Variable<D>,
},
Loop {
instructions: Vec<Self>,
},
If {
cond: Variable<D>,
instructions: Vec<Self>,
},
IfElse {
cond: Variable<D>,
instructions_if: Vec<Self>,
instructions_else: Vec<Self>,
},
Select {
cond: Variable<D>,
then: Variable<D>,
or_else: Variable<D>,
out: Variable<D>,
},
Switch {
value: Variable<D>,
instructions_default: Vec<Self>,
instructions_cases: Vec<(Variable<D>, Vec<Self>)>,
},
Slice {
input: Variable<D>,
start: Variable<D>,
end: Variable<D>,
out: Variable<D>,
},
CheckedSlice {
input: Variable<D>,
start: Variable<D>,
end: Variable<D>,
out: Variable<D>,
len: Variable<D>,
},
ReinterpretSlice {
input: Variable<D>,
line_size: u32,
out: Variable<D>,
},
Return,
Break,
Equal(BinaryInstruction<D>),
NotEqual(BinaryInstruction<D>),
Lower(BinaryInstruction<D>),
Greater(BinaryInstruction<D>),
LowerEqual(BinaryInstruction<D>),
GreaterEqual(BinaryInstruction<D>),
Erf(UnaryInstruction<D>),
BitwiseOr(BinaryInstruction<D>),
BitwiseAnd(BinaryInstruction<D>),
BitwiseXor(BinaryInstruction<D>),
CountBits(UnaryInstruction<D>),
ReverseBits(UnaryInstruction<D>),
ShiftLeft(BinaryInstruction<D>),
ShiftRight(BinaryInstruction<D>),
BitwiseNot(UnaryInstruction<D>),
LeadingZeros(UnaryInstruction<D>),
FindFirstSet(UnaryInstruction<D>),
Abs(UnaryInstruction<D>),
Exp(UnaryInstruction<D>),
Log(UnaryInstruction<D>),
Log1p(UnaryInstruction<D>),
Cos(UnaryInstruction<D>),
Sin(UnaryInstruction<D>),
Tanh(UnaryInstruction<D>),
Powf(BinaryInstruction<D>),
Sqrt(UnaryInstruction<D>),
Min(BinaryInstruction<D>),
Max(BinaryInstruction<D>),
Not(UnaryInstruction<D>),
Or(BinaryInstruction<D>),
And(BinaryInstruction<D>),
Clamp {
input: Variable<D>,
min_value: Variable<D>,
max_value: Variable<D>,
out: Variable<D>,
},
SyncThreads,
ThreadFence,
ProxySharedFence,
BulkCommitGroup,
BulkWaitGroup {
max_pending: u32,
},
BulkWaitGroupRead {
max_pending: u32,
},
Round(UnaryInstruction<D>),
Ceil(UnaryInstruction<D>),
Floor(UnaryInstruction<D>),
Warp(WarpInstruction<D>),
Wmma(WmmaInstruction<D>),
Bitcast(UnaryInstruction<D>),
AtomicLoad(UnaryInstruction<D>),
AtomicStore(UnaryInstruction<D>),
AtomicSwap(BinaryInstruction<D>),
AtomicAdd(BinaryInstruction<D>),
AtomicSub(BinaryInstruction<D>),
AtomicMax(BinaryInstruction<D>),
AtomicMin(BinaryInstruction<D>),
AtomicAnd(BinaryInstruction<D>),
AtomicOr(BinaryInstruction<D>),
AtomicXor(BinaryInstruction<D>),
AtomicCAS {
input: Variable<D>,
cmp: Variable<D>,
val: Variable<D>,
out: Variable<D>,
},
Neg(UnaryInstruction<D>),
Magnitude(UnaryInstruction<D>),
Normalize(UnaryInstruction<D>),
Dot(BinaryInstruction<D>),
Copy {
input: Variable<D>,
in_index: Variable<D>,
out: Variable<D>,
out_index: Variable<D>,
},
CopyBulk {
input: Variable<D>,
in_index: Variable<D>,
out: Variable<D>,
out_index: Variable<D>,
len: u32,
},
Printf {
format_string: String,
args: Vec<Variable<D>>,
},
Comment {
content: String,
},
Pipeline(PipelineOps<D>),
Barrier(BarrierOps<D>),
MemCopyAsyncTensorSharedToGlobal {
smem_buffer: Variable<D>,
tensor_map: Variable<D>,
indices: Vec<Variable<D>>,
},
Line {
file: Cow<'static, str>,
line: u32,
},
}
Variants§
Metadata
ExtendedMetadata
Fields
ConstLength
SliceLength
DeclareVariable
Modulo(BinaryInstruction<D>)
Remainder(BinaryInstruction<D>)
Add(BinaryInstruction<D>)
Fma
Div(BinaryInstruction<D>)
Mul(BinaryInstruction<D>)
Sub(BinaryInstruction<D>)
HiMul(BinaryInstruction<D>)
Index(BinaryInstruction<D>)
IndexAssign(BinaryInstruction<D>)
Assign(UnaryInstruction<D>)
RangeLoop
Fields
VecInit
Loop
If
IfElse
Select
Switch
Fields
Slice
CheckedSlice
ReinterpretSlice
Return
Break
Equal(BinaryInstruction<D>)
NotEqual(BinaryInstruction<D>)
Lower(BinaryInstruction<D>)
Greater(BinaryInstruction<D>)
LowerEqual(BinaryInstruction<D>)
GreaterEqual(BinaryInstruction<D>)
Erf(UnaryInstruction<D>)
BitwiseOr(BinaryInstruction<D>)
BitwiseAnd(BinaryInstruction<D>)
BitwiseXor(BinaryInstruction<D>)
CountBits(UnaryInstruction<D>)
ReverseBits(UnaryInstruction<D>)
ShiftLeft(BinaryInstruction<D>)
ShiftRight(BinaryInstruction<D>)
BitwiseNot(UnaryInstruction<D>)
LeadingZeros(UnaryInstruction<D>)
FindFirstSet(UnaryInstruction<D>)
Abs(UnaryInstruction<D>)
Exp(UnaryInstruction<D>)
Log(UnaryInstruction<D>)
Log1p(UnaryInstruction<D>)
Cos(UnaryInstruction<D>)
Sin(UnaryInstruction<D>)
Tanh(UnaryInstruction<D>)
Powf(BinaryInstruction<D>)
Sqrt(UnaryInstruction<D>)
Min(BinaryInstruction<D>)
Max(BinaryInstruction<D>)
Not(UnaryInstruction<D>)
Or(BinaryInstruction<D>)
And(BinaryInstruction<D>)
Clamp
SyncThreads
ThreadFence
BulkCommitGroup
BulkWaitGroup
BulkWaitGroupRead
Round(UnaryInstruction<D>)
Ceil(UnaryInstruction<D>)
Floor(UnaryInstruction<D>)
Warp(WarpInstruction<D>)
Wmma(WmmaInstruction<D>)
Bitcast(UnaryInstruction<D>)
AtomicLoad(UnaryInstruction<D>)
AtomicStore(UnaryInstruction<D>)
AtomicSwap(BinaryInstruction<D>)
AtomicAdd(BinaryInstruction<D>)
AtomicSub(BinaryInstruction<D>)
AtomicMax(BinaryInstruction<D>)
AtomicMin(BinaryInstruction<D>)
AtomicAnd(BinaryInstruction<D>)
AtomicOr(BinaryInstruction<D>)
AtomicXor(BinaryInstruction<D>)
AtomicCAS
Neg(UnaryInstruction<D>)
Magnitude(UnaryInstruction<D>)
Normalize(UnaryInstruction<D>)
Dot(BinaryInstruction<D>)
Copy
CopyBulk
Printf
Comment
Pipeline(PipelineOps<D>)
Barrier(BarrierOps<D>)
Line
Trait Implementations§
Source§impl<D: Clone + Dialect> Clone for Instruction<D>
impl<D: Clone + Dialect> Clone for Instruction<D>
Source§fn clone(&self) -> Instruction<D>
fn clone(&self) -> Instruction<D>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl<D> Freeze for Instruction<D>
impl<D> RefUnwindSafe for Instruction<D>where
D: RefUnwindSafe,
impl<D> Send for Instruction<D>
impl<D> Sync for Instruction<D>
impl<D> Unpin for Instruction<D>where
D: Unpin,
impl<D> UnwindSafe for Instruction<D>where
D: UnwindSafe,
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