Enum golem_wasm_ast::core::Instr
source · pub enum Instr {
Show 187 variants
I32Const(i32),
I64Const(i64),
F32Const(f32),
F64Const(f64),
IEqz(IntWidth),
IEq(IntWidth),
INe(IntWidth),
ILt(IntWidth, Signedness),
IGt(IntWidth, Signedness),
ILe(IntWidth, Signedness),
IGe(IntWidth, Signedness),
FEq(FloatWidth),
FNe(FloatWidth),
FLt(FloatWidth),
FGt(FloatWidth),
FLe(FloatWidth),
FGe(FloatWidth),
IClz(IntWidth),
ICtz(IntWidth),
IPopCnt(IntWidth),
IAdd(IntWidth),
ISub(IntWidth),
IMul(IntWidth),
IDiv(IntWidth, Signedness),
IRem(IntWidth, Signedness),
IAnd(IntWidth),
IOr(IntWidth),
IXor(IntWidth),
IShl(IntWidth),
IShr(IntWidth, Signedness),
IRotL(IntWidth),
IRotR(IntWidth),
FAbs(FloatWidth),
FNeg(FloatWidth),
FCeil(FloatWidth),
FFloor(FloatWidth),
FTrunc(FloatWidth),
FNearest(FloatWidth),
FSqrt(FloatWidth),
FAdd(FloatWidth),
FSub(FloatWidth),
FMul(FloatWidth),
FDiv(FloatWidth),
FMin(FloatWidth),
FMax(FloatWidth),
FCopySign(FloatWidth),
I32WrapI64,
ITruncF(IntWidth, FloatWidth, Signedness),
I64ExtendI32(Signedness),
I64Extend32S,
IExtend8S(IntWidth),
IExtend16S(IntWidth),
FConvertI(FloatWidth, IntWidth, Signedness),
F32DemoteF64,
F64PromoteF32,
IReinterpretF(IntWidth),
FReinterpretI(FloatWidth),
ITruncSatF(IntWidth, FloatWidth, Signedness),
V128Const(i128),
V128Not,
V128And,
V128AndNot,
V128Or,
V128XOr,
V128BitSelect,
V128AnyTrue,
VI8x16Shuffle([LaneIdx; 16]),
VI18x16Swizzle,
VSplat(Shape),
VI8x16ExtractLane(Signedness, LaneIdx),
VI16x8ExtractLane(Signedness, LaneIdx),
VI32x4ExtractLane(LaneIdx),
VI64x2ExtractLane(LaneIdx),
VFExtractLane(FShape, LaneIdx),
VReplaceLane(Shape, LaneIdx),
VIEq(IShape),
VINe(IShape),
VILt(IShape, Signedness),
VIGt(IShape, Signedness),
VILe(IShape, Signedness),
VIGe(IShape, Signedness),
VI64x2Lt,
VI64x2Gt,
VI64x2Le,
VI64x2Ge,
VFEq(FShape),
VFNe(FShape),
VFLt(FShape),
VFGt(FShape),
VFLe(FShape),
VFGe(FShape),
VIAbs(IShape),
VINeg(IShape),
VI8x16PopCnt,
VI16x8Q15MulrSat,
VI32x4DotI16x8,
VFAbs(FShape),
VFNeg(FShape),
VFSqrt(FShape),
VFCeil(FShape),
VFFloor(FShape),
VFTrunc(FShape),
VFNearest(FShape),
VIAllTrue(IShape),
VIBitMask(IShape),
VI8x16NarrowI16x8(Signedness),
VI16x8NarrowI32x4(Signedness),
VI16x8ExtendI8x16(Half, Signedness),
VI32x4ExtendI16x8(Half, Signedness),
VI64x2ExtendI32x4(Half, Signedness),
VIShl(IShape),
VIShr(IShape, Signedness),
VIAdd(IShape),
VISub(IShape),
VIMin(IShape, Signedness),
VIMax(IShape, Signedness),
VIAddSat(IShape, Signedness),
VISubSat(IShape, Signedness),
VIMul(IShape),
VIAvgr(IShape),
VIExtMul(IShape, Half, Signedness),
VIExtAddPairwise(IShape, Signedness),
VFAdd(FShape),
VFSub(FShape),
VFMul(FShape),
VFDiv(FShape),
VFMin(FShape),
VFMax(FShape),
VFPMin(FShape),
VFPMax(FShape),
VI32x4TruncSatF32x4(Signedness),
VI32x4TruncSatF64x2Zero(Signedness),
VI32x4ConvertI32x4(Signedness),
VF32x4DemoteF64x2Zero,
VF64x2ConvertLowI32x4(Signedness),
VF64x2PromoteLowI32x4,
RefNull(RefType),
RefIsNull,
RefFunc(FuncIdx),
Drop,
Select(Option<Vec<ValType>>),
LocalGet(LocalIdx),
LocalSet(LocalIdx),
LocalTee(LocalIdx),
GlobalGet(GlobalIdx),
GlobalSet(GlobalIdx),
TableGet(TableIdx),
TableSet(TableIdx),
TableSize(TableIdx),
TableGrow(TableIdx),
TableFill(TableIdx),
TableCopy {
source: TableIdx,
destination: TableIdx,
},
TableInit(TableIdx, ElemIdx),
ElemDrop(ElemIdx),
Load(NumOrVecType, MemArg),
Store(NumOrVecType, MemArg),
Load8(NumType, Signedness, MemArg),
Load16(NumType, Signedness, MemArg),
Load32(Signedness, MemArg),
Store8(NumType, MemArg),
Store16(NumType, MemArg),
Store32(MemArg),
V128Load8x8(Signedness, MemArg),
V128Load16x4(Signedness, MemArg),
V128Load32x2(Signedness, MemArg),
V128Load32Zero(MemArg),
V128Load64Zero(MemArg),
V128LoadSplat(VectorLoadShape, MemArg),
V128LoadLane(VectorLoadShape, MemArg, LaneIdx),
V128StoreLane(VectorLoadShape, MemArg, LaneIdx),
MemorySize,
MemoryGrow,
MemoryFill,
MemoryCopy,
MemoryInit(DataIdx),
DataDrop(DataIdx),
Nop,
Unreachable,
Block(BlockType, Vec<Instr>),
Loop(BlockType, Vec<Instr>),
If(BlockType, Vec<Instr>, Vec<Instr>),
Br(LabelIdx),
BrIf(LabelIdx),
BrTable(Vec<LabelIdx>, LabelIdx),
Return,
Call(FuncIdx),
CallIndirect(TableIdx, TypeIdx),
}
Variants§
I32Const(i32)
I64Const(i64)
F32Const(f32)
F64Const(f64)
IEqz(IntWidth)
IEq(IntWidth)
INe(IntWidth)
ILt(IntWidth, Signedness)
IGt(IntWidth, Signedness)
ILe(IntWidth, Signedness)
IGe(IntWidth, Signedness)
FEq(FloatWidth)
FNe(FloatWidth)
FLt(FloatWidth)
FGt(FloatWidth)
FLe(FloatWidth)
FGe(FloatWidth)
IClz(IntWidth)
ICtz(IntWidth)
IPopCnt(IntWidth)
IAdd(IntWidth)
ISub(IntWidth)
IMul(IntWidth)
IDiv(IntWidth, Signedness)
IRem(IntWidth, Signedness)
IAnd(IntWidth)
IOr(IntWidth)
IXor(IntWidth)
IShl(IntWidth)
IShr(IntWidth, Signedness)
IRotL(IntWidth)
IRotR(IntWidth)
FAbs(FloatWidth)
FNeg(FloatWidth)
FCeil(FloatWidth)
FFloor(FloatWidth)
FTrunc(FloatWidth)
FNearest(FloatWidth)
FSqrt(FloatWidth)
FAdd(FloatWidth)
FSub(FloatWidth)
FMul(FloatWidth)
FDiv(FloatWidth)
FMin(FloatWidth)
FMax(FloatWidth)
FCopySign(FloatWidth)
I32WrapI64
ITruncF(IntWidth, FloatWidth, Signedness)
I64ExtendI32(Signedness)
I64Extend32S
IExtend8S(IntWidth)
IExtend16S(IntWidth)
FConvertI(FloatWidth, IntWidth, Signedness)
F32DemoteF64
F64PromoteF32
IReinterpretF(IntWidth)
FReinterpretI(FloatWidth)
ITruncSatF(IntWidth, FloatWidth, Signedness)
V128Const(i128)
V128Not
V128And
V128AndNot
V128Or
V128XOr
V128BitSelect
V128AnyTrue
VI8x16Shuffle([LaneIdx; 16])
VI18x16Swizzle
VSplat(Shape)
VI8x16ExtractLane(Signedness, LaneIdx)
VI16x8ExtractLane(Signedness, LaneIdx)
VI32x4ExtractLane(LaneIdx)
VI64x2ExtractLane(LaneIdx)
VFExtractLane(FShape, LaneIdx)
VReplaceLane(Shape, LaneIdx)
VIEq(IShape)
VINe(IShape)
VILt(IShape, Signedness)
VIGt(IShape, Signedness)
VILe(IShape, Signedness)
VIGe(IShape, Signedness)
VI64x2Lt
VI64x2Gt
VI64x2Le
VI64x2Ge
VFEq(FShape)
VFNe(FShape)
VFLt(FShape)
VFGt(FShape)
VFLe(FShape)
VFGe(FShape)
VIAbs(IShape)
VINeg(IShape)
VI8x16PopCnt
VI16x8Q15MulrSat
VI32x4DotI16x8
VFAbs(FShape)
VFNeg(FShape)
VFSqrt(FShape)
VFCeil(FShape)
VFFloor(FShape)
VFTrunc(FShape)
VFNearest(FShape)
VIAllTrue(IShape)
VIBitMask(IShape)
VI8x16NarrowI16x8(Signedness)
VI16x8NarrowI32x4(Signedness)
VI16x8ExtendI8x16(Half, Signedness)
VI32x4ExtendI16x8(Half, Signedness)
VI64x2ExtendI32x4(Half, Signedness)
VIShl(IShape)
VIShr(IShape, Signedness)
VIAdd(IShape)
VISub(IShape)
VIMin(IShape, Signedness)
VIMax(IShape, Signedness)
VIAddSat(IShape, Signedness)
VISubSat(IShape, Signedness)
VIMul(IShape)
VIAvgr(IShape)
VIExtMul(IShape, Half, Signedness)
VIExtAddPairwise(IShape, Signedness)
VFAdd(FShape)
VFSub(FShape)
VFMul(FShape)
VFDiv(FShape)
VFMin(FShape)
VFMax(FShape)
VFPMin(FShape)
VFPMax(FShape)
VI32x4TruncSatF32x4(Signedness)
VI32x4TruncSatF64x2Zero(Signedness)
VI32x4ConvertI32x4(Signedness)
VF32x4DemoteF64x2Zero
VF64x2ConvertLowI32x4(Signedness)
VF64x2PromoteLowI32x4
RefNull(RefType)
RefIsNull
RefFunc(FuncIdx)
Drop
Select(Option<Vec<ValType>>)
LocalGet(LocalIdx)
LocalSet(LocalIdx)
LocalTee(LocalIdx)
GlobalGet(GlobalIdx)
GlobalSet(GlobalIdx)
TableGet(TableIdx)
TableSet(TableIdx)
TableSize(TableIdx)
TableGrow(TableIdx)
TableFill(TableIdx)
TableCopy
TableInit(TableIdx, ElemIdx)
ElemDrop(ElemIdx)
Load(NumOrVecType, MemArg)
Store(NumOrVecType, MemArg)
Load8(NumType, Signedness, MemArg)
Load16(NumType, Signedness, MemArg)
Load32(Signedness, MemArg)
Store8(NumType, MemArg)
Store16(NumType, MemArg)
Store32(MemArg)
V128Load8x8(Signedness, MemArg)
V128Load16x4(Signedness, MemArg)
V128Load32x2(Signedness, MemArg)
V128Load32Zero(MemArg)
V128Load64Zero(MemArg)
V128LoadSplat(VectorLoadShape, MemArg)
V128LoadLane(VectorLoadShape, MemArg, LaneIdx)
V128StoreLane(VectorLoadShape, MemArg, LaneIdx)
MemorySize
MemoryGrow
MemoryFill
MemoryCopy
MemoryInit(DataIdx)
DataDrop(DataIdx)
Nop
Unreachable
Block(BlockType, Vec<Instr>)
Loop(BlockType, Vec<Instr>)
If(BlockType, Vec<Instr>, Vec<Instr>)
Br(LabelIdx)
BrIf(LabelIdx)
BrTable(Vec<LabelIdx>, LabelIdx)
Return
Call(FuncIdx)
CallIndirect(TableIdx, TypeIdx)
Trait Implementations§
source§impl PartialEq for Instr
impl PartialEq for Instr
impl StructuralPartialEq for Instr
Auto Trait Implementations§
impl Freeze for Instr
impl RefUnwindSafe for Instr
impl Send for Instr
impl Sync for Instr
impl Unpin for Instr
impl UnwindSafe for Instr
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)