Skip to main content

Operation

Enum Operation 

Source
pub enum Operation {
Show 73 variants Iadd { rd: u8, rs1: u8, rs2: u8, }, Isub { rd: u8, rs1: u8, rs2: u8, }, Imul { rd: u8, rs1: u8, rs2: u8, }, ImulHi { rd: u8, rs1: u8, rs2: u8, }, Imad { rd: u8, rs1: u8, rs2: u8, rs3: u8, }, Idiv { rd: u8, rs1: u8, rs2: u8, }, Imod { rd: u8, rs1: u8, rs2: u8, }, Ineg { rd: u8, rs1: u8, }, Iabs { rd: u8, rs1: u8, }, Imin { rd: u8, rs1: u8, rs2: u8, }, Imax { rd: u8, rs1: u8, rs2: u8, }, Iclamp { rd: u8, rs1: u8, rs2: u8, rs3: u8, }, Fadd { rd: u8, rs1: u8, rs2: u8, }, Fsub { rd: u8, rs1: u8, rs2: u8, }, Fmul { rd: u8, rs1: u8, rs2: u8, }, Fma { rd: u8, rs1: u8, rs2: u8, rs3: u8, }, Fdiv { rd: u8, rs1: u8, rs2: u8, }, Fneg { rd: u8, rs1: u8, }, Fabs { rd: u8, rs1: u8, }, Fmin { rd: u8, rs1: u8, rs2: u8, }, Fmax { rd: u8, rs1: u8, rs2: u8, }, Fclamp { rd: u8, rs1: u8, rs2: u8, rs3: u8, }, Fsqrt { rd: u8, rs1: u8, }, FUnary { op: FUnaryOp, rd: u8, rs1: u8, }, F16 { op: F16Op, rd: u8, rs1: u8, rs2: u8, rs3: Option<u8>, }, F16Packed { op: F16PackedOp, rd: u8, rs1: u8, rs2: u8, rs3: Option<u8>, }, F64 { op: F64Op, rd: u8, rs1: u8, rs2: u8, rs3: Option<u8>, }, F64DivSqrt { op: F64DivSqrtOp, rd: u8, rs1: u8, rs2: Option<u8>, }, And { rd: u8, rs1: u8, rs2: u8, }, Or { rd: u8, rs1: u8, rs2: u8, }, Xor { rd: u8, rs1: u8, rs2: u8, }, Not { rd: u8, rs1: u8, }, Shl { rd: u8, rs1: u8, rs2: u8, }, Shr { rd: u8, rs1: u8, rs2: u8, }, Sar { rd: u8, rs1: u8, rs2: u8, }, BitOp { op: BitOpType, rd: u8, rs1: u8, rs2: Option<u8>, rs3: Option<u8>, rs4: Option<u8>, }, Icmp { op: CmpOp, pd: u8, rs1: u8, rs2: u8, }, Ucmp { op: CmpOp, pd: u8, rs1: u8, rs2: u8, }, Fcmp { op: CmpOp, pd: u8, rs1: u8, rs2: u8, }, Select { rd: u8, ps: u8, rs1: u8, rs2: u8, }, Cvt { cvt_type: CvtType, rd: u8, rs1: u8, }, LocalLoad { width: MemWidth, rd: u8, addr: u8, }, LocalStore { width: MemWidth, addr: u8, value: u8, }, DeviceLoad { width: MemWidth, rd: u8, addr: u8, }, DeviceStore { width: MemWidth, addr: u8, value: u8, }, LocalAtomic { op: AtomicOp, rd: Option<u8>, addr: u8, value: u8, }, LocalAtomicCas { rd: Option<u8>, addr: u8, expected: u8, desired: u8, }, DeviceAtomic { op: AtomicOp, rd: Option<u8>, addr: u8, value: u8, scope: Scope, }, DeviceAtomicCas { rd: Option<u8>, addr: u8, expected: u8, desired: u8, scope: Scope, }, WaveOp { op: WaveOpType, rd: u8, rs1: u8, rs2: Option<u8>, }, WaveReduce { op: WaveReduceType, rd: u8, rs1: u8, }, WaveBallot { rd: u8, ps: u8, }, WaveVote { op: WaveOpType, pd: u8, ps: u8, }, If { ps: u8, }, Else, Endif, Loop, Break { ps: u8, }, Continue { ps: u8, }, Endloop, Call { target: u32, }, Return, Halt, Barrier, FenceAcquire { scope: Scope, }, FenceRelease { scope: Scope, }, FenceAcqRel { scope: Scope, }, Wait, Nop, Mov { rd: u8, rs1: u8, }, MovImm { rd: u8, imm: u32, }, MovSr { rd: u8, sr_index: u8, }, Unknown { opcode: u8, word0: u32, word1: Option<u32>, },
}
Expand description

All WAVE operations

Variants§

§

Iadd

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Isub

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Imul

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

ImulHi

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Imad

Fields

§rd: u8
§rs1: u8
§rs2: u8
§rs3: u8
§

Idiv

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Imod

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Ineg

Fields

§rd: u8
§rs1: u8
§

Iabs

Fields

§rd: u8
§rs1: u8
§

Imin

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Imax

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Iclamp

Fields

§rd: u8
§rs1: u8
§rs2: u8
§rs3: u8
§

Fadd

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Fsub

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Fmul

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Fma

Fields

§rd: u8
§rs1: u8
§rs2: u8
§rs3: u8
§

Fdiv

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Fneg

Fields

§rd: u8
§rs1: u8
§

Fabs

Fields

§rd: u8
§rs1: u8
§

Fmin

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Fmax

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Fclamp

Fields

§rd: u8
§rs1: u8
§rs2: u8
§rs3: u8
§

Fsqrt

Fields

§rd: u8
§rs1: u8
§

FUnary

Fields

§rd: u8
§rs1: u8
§

F16

Fields

§rd: u8
§rs1: u8
§rs2: u8
§rs3: Option<u8>
§

F16Packed

Fields

§rd: u8
§rs1: u8
§rs2: u8
§rs3: Option<u8>
§

F64

Fields

§rd: u8
§rs1: u8
§rs2: u8
§rs3: Option<u8>
§

F64DivSqrt

Fields

§rd: u8
§rs1: u8
§rs2: Option<u8>
§

And

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Or

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Xor

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Not

Fields

§rd: u8
§rs1: u8
§

Shl

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Shr

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

Sar

Fields

§rd: u8
§rs1: u8
§rs2: u8
§

BitOp

Fields

§rd: u8
§rs1: u8
§rs2: Option<u8>
§rs3: Option<u8>
§rs4: Option<u8>
§

Icmp

Fields

§pd: u8
§rs1: u8
§rs2: u8
§

Ucmp

Fields

§pd: u8
§rs1: u8
§rs2: u8
§

Fcmp

Fields

§pd: u8
§rs1: u8
§rs2: u8
§

Select

Fields

§rd: u8
§ps: u8
§rs1: u8
§rs2: u8
§

Cvt

Fields

§cvt_type: CvtType
§rd: u8
§rs1: u8
§

LocalLoad

Fields

§width: MemWidth
§rd: u8
§addr: u8
§

LocalStore

Fields

§width: MemWidth
§addr: u8
§value: u8
§

DeviceLoad

Fields

§width: MemWidth
§rd: u8
§addr: u8
§

DeviceStore

Fields

§width: MemWidth
§addr: u8
§value: u8
§

LocalAtomic

Fields

§addr: u8
§value: u8
§

LocalAtomicCas

Fields

§addr: u8
§expected: u8
§desired: u8
§

DeviceAtomic

Fields

§addr: u8
§value: u8
§scope: Scope
§

DeviceAtomicCas

Fields

§addr: u8
§expected: u8
§desired: u8
§scope: Scope
§

WaveOp

Fields

§rd: u8
§rs1: u8
§rs2: Option<u8>
§

WaveReduce

Fields

§rd: u8
§rs1: u8
§

WaveBallot

Fields

§rd: u8
§ps: u8
§

WaveVote

Fields

§pd: u8
§ps: u8
§

If

Fields

§ps: u8
§

Else

§

Endif

§

Loop

§

Break

Fields

§ps: u8
§

Continue

Fields

§ps: u8
§

Endloop

§

Call

Fields

§target: u32
§

Return

§

Halt

§

Barrier

§

FenceAcquire

Fields

§scope: Scope
§

FenceRelease

Fields

§scope: Scope
§

FenceAcqRel

Fields

§scope: Scope
§

Wait

§

Nop

§

Mov

Fields

§rd: u8
§rs1: u8
§

MovImm

Fields

§rd: u8
§imm: u32
§

MovSr

Fields

§rd: u8
§sr_index: u8
§

Unknown

Fields

§opcode: u8
§word0: u32
§word1: Option<u32>

Trait Implementations§

Source§

impl Clone for Operation

Source§

fn clone(&self) -> Operation

Returns a duplicate 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 Debug for Operation

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Operation

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Operation

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
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,

Source§

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>,

Source§

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>,

Source§

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.