#[non_exhaustive]
pub enum Instruction<'a> {
Show 460 variants Unreachable, Nop, Block(BlockType), Loop(BlockType), If(BlockType), Else, Try(BlockType), Delegate(u32), Catch(u32), CatchAll, End, Br(u32), BrIf(u32), BrTable(Cow<'a, [u32]>, u32), Return, Call(u32), CallIndirect { ty: u32, table: u32, }, Throw(u32), Rethrow(u32), Drop, Select, LocalGet(u32), LocalSet(u32), LocalTee(u32), GlobalGet(u32), GlobalSet(u32), I32Load(MemArg), I64Load(MemArg), F32Load(MemArg), F64Load(MemArg), I32Load8_S(MemArg), I32Load8_U(MemArg), I32Load16_S(MemArg), I32Load16_U(MemArg), I64Load8_S(MemArg), I64Load8_U(MemArg), I64Load16_S(MemArg), I64Load16_U(MemArg), I64Load32_S(MemArg), I64Load32_U(MemArg), I32Store(MemArg), I64Store(MemArg), F32Store(MemArg), F64Store(MemArg), I32Store8(MemArg), I32Store16(MemArg), I64Store8(MemArg), I64Store16(MemArg), I64Store32(MemArg), MemorySize(u32), MemoryGrow(u32), MemoryInit { mem: u32, data: u32, }, DataDrop(u32), MemoryCopy { src: u32, dst: u32, }, MemoryFill(u32), I32Const(i32), I64Const(i64), F32Const(f32), F64Const(f64), I32Eqz, I32Eq, I32Ne, I32LtS, I32LtU, I32GtS, I32GtU, I32LeS, I32LeU, I32GeS, I32GeU, I64Eqz, I64Eq, I64Ne, I64LtS, I64LtU, I64GtS, I64GtU, I64LeS, I64LeU, I64GeS, I64GeU, F32Eq, F32Ne, F32Lt, F32Gt, F32Le, F32Ge, F64Eq, F64Ne, F64Lt, F64Gt, F64Le, F64Ge, I32Clz, I32Ctz, I32Popcnt, I32Add, I32Sub, I32Mul, I32DivS, I32DivU, I32RemS, I32RemU, I32And, I32Or, I32Xor, I32Shl, I32ShrS, I32ShrU, I32Rotl, I32Rotr, I64Clz, I64Ctz, I64Popcnt, I64Add, I64Sub, I64Mul, I64DivS, I64DivU, I64RemS, I64RemU, I64And, I64Or, I64Xor, I64Shl, I64ShrS, I64ShrU, I64Rotl, I64Rotr, F32Abs, F32Neg, F32Ceil, F32Floor, F32Trunc, F32Nearest, F32Sqrt, F32Add, F32Sub, F32Mul, F32Div, F32Min, F32Max, F32Copysign, F64Abs, F64Neg, F64Ceil, F64Floor, F64Trunc, F64Nearest, F64Sqrt, F64Add, F64Sub, F64Mul, F64Div, F64Min, F64Max, F64Copysign, I32WrapI64, I32TruncF32S, I32TruncF32U, I32TruncF64S, I32TruncF64U, I64ExtendI32S, I64ExtendI32U, I64TruncF32S, I64TruncF32U, I64TruncF64S, I64TruncF64U, F32ConvertI32S, F32ConvertI32U, F32ConvertI64S, F32ConvertI64U, F32DemoteF64, F64ConvertI32S, F64ConvertI32U, F64ConvertI64S, F64ConvertI64U, F64PromoteF32, I32ReinterpretF32, I64ReinterpretF64, F32ReinterpretI32, F64ReinterpretI64, I32Extend8S, I32Extend16S, I64Extend8S, I64Extend16S, I64Extend32S, I32TruncSatF32S, I32TruncSatF32U, I32TruncSatF64S, I32TruncSatF64U, I64TruncSatF32S, I64TruncSatF32U, I64TruncSatF64S, I64TruncSatF64U, TypedSelect(ValType), RefNull(ValType), RefIsNull, RefFunc(u32), TableInit { segment: u32, table: u32, }, ElemDrop { segment: u32, }, TableFill { table: u32, }, TableSet { table: u32, }, TableGet { table: u32, }, TableGrow { table: u32, }, TableSize { table: u32, }, TableCopy { src: u32, dst: u32, }, V128Load { memarg: MemArg, }, V128Load8x8S { memarg: MemArg, }, V128Load8x8U { memarg: MemArg, }, V128Load16x4S { memarg: MemArg, }, V128Load16x4U { memarg: MemArg, }, V128Load32x2S { memarg: MemArg, }, V128Load32x2U { memarg: MemArg, }, V128Load8Splat { memarg: MemArg, }, V128Load16Splat { memarg: MemArg, }, V128Load32Splat { memarg: MemArg, }, V128Load64Splat { memarg: MemArg, }, V128Load32Zero { memarg: MemArg, }, V128Load64Zero { memarg: MemArg, }, V128Store { memarg: MemArg, }, V128Load8Lane { memarg: MemArg, lane: Lane, }, V128Load16Lane { memarg: MemArg, lane: Lane, }, V128Load32Lane { memarg: MemArg, lane: Lane, }, V128Load64Lane { memarg: MemArg, lane: Lane, }, V128Store8Lane { memarg: MemArg, lane: Lane, }, V128Store16Lane { memarg: MemArg, lane: Lane, }, V128Store32Lane { memarg: MemArg, lane: Lane, }, V128Store64Lane { memarg: MemArg, lane: Lane, }, V128Const(i128), I8x16Shuffle { lanes: [Lane; 16], }, I8x16ExtractLaneS { lane: Lane, }, I8x16ExtractLaneU { lane: Lane, }, I8x16ReplaceLane { lane: Lane, }, I16x8ExtractLaneS { lane: Lane, }, I16x8ExtractLaneU { lane: Lane, }, I16x8ReplaceLane { lane: Lane, }, I32x4ExtractLane { lane: Lane, }, I32x4ReplaceLane { lane: Lane, }, I64x2ExtractLane { lane: Lane, }, I64x2ReplaceLane { lane: Lane, }, F32x4ExtractLane { lane: Lane, }, F32x4ReplaceLane { lane: Lane, }, F64x2ExtractLane { lane: Lane, }, F64x2ReplaceLane { lane: Lane, }, I8x16Swizzle, I8x16Splat, I16x8Splat, I32x4Splat, I64x2Splat, F32x4Splat, F64x2Splat, I8x16Eq, I8x16Ne, I8x16LtS, I8x16LtU, I8x16GtS, I8x16GtU, I8x16LeS, I8x16LeU, I8x16GeS, I8x16GeU, I16x8Eq, I16x8Ne, I16x8LtS, I16x8LtU, I16x8GtS, I16x8GtU, I16x8LeS, I16x8LeU, I16x8GeS, I16x8GeU, I32x4Eq, I32x4Ne, I32x4LtS, I32x4LtU, I32x4GtS, I32x4GtU, I32x4LeS, I32x4LeU, I32x4GeS, I32x4GeU, I64x2Eq, I64x2Ne, I64x2LtS, I64x2GtS, I64x2LeS, I64x2GeS, F32x4Eq, F32x4Ne, F32x4Lt, F32x4Gt, F32x4Le, F32x4Ge, F64x2Eq, F64x2Ne, F64x2Lt, F64x2Gt, F64x2Le, F64x2Ge, V128Not, V128And, V128AndNot, V128Or, V128Xor, V128Bitselect, V128AnyTrue, I8x16Abs, I8x16Neg, I8x16Popcnt, I8x16AllTrue, I8x16Bitmask, I8x16NarrowI16x8S, I8x16NarrowI16x8U, I8x16Shl, I8x16ShrS, I8x16ShrU, I8x16Add, I8x16AddSatS, I8x16AddSatU, I8x16Sub, I8x16SubSatS, I8x16SubSatU, I8x16MinS, I8x16MinU, I8x16MaxS, I8x16MaxU, I8x16RoundingAverageU, I16x8ExtAddPairwiseI8x16S, I16x8ExtAddPairwiseI8x16U, I16x8Abs, I16x8Neg, I16x8Q15MulrSatS, I16x8AllTrue, I16x8Bitmask, I16x8NarrowI32x4S, I16x8NarrowI32x4U, I16x8ExtendLowI8x16S, I16x8ExtendHighI8x16S, I16x8ExtendLowI8x16U, I16x8ExtendHighI8x16U, I16x8Shl, I16x8ShrS, I16x8ShrU, I16x8Add, I16x8AddSatS, I16x8AddSatU, I16x8Sub, I16x8SubSatS, I16x8SubSatU, I16x8Mul, I16x8MinS, I16x8MinU, I16x8MaxS, I16x8MaxU, I16x8RoundingAverageU, I16x8ExtMulLowI8x16S, I16x8ExtMulHighI8x16S, I16x8ExtMulLowI8x16U, I16x8ExtMulHighI8x16U, I32x4ExtAddPairwiseI16x8S, I32x4ExtAddPairwiseI16x8U, I32x4Abs, I32x4Neg, I32x4AllTrue, I32x4Bitmask, I32x4ExtendLowI16x8S, I32x4ExtendHighI16x8S, I32x4ExtendLowI16x8U, I32x4ExtendHighI16x8U, I32x4Shl, I32x4ShrS, I32x4ShrU, I32x4Add, I32x4Sub, I32x4Mul, I32x4MinS, I32x4MinU, I32x4MaxS, I32x4MaxU, I32x4DotI16x8S, I32x4ExtMulLowI16x8S, I32x4ExtMulHighI16x8S, I32x4ExtMulLowI16x8U, I32x4ExtMulHighI16x8U, I64x2Abs, I64x2Neg, I64x2AllTrue, I64x2Bitmask, I64x2ExtendLowI32x4S, I64x2ExtendHighI32x4S, I64x2ExtendLowI32x4U, I64x2ExtendHighI32x4U, I64x2Shl, I64x2ShrS, I64x2ShrU, I64x2Add, I64x2Sub, I64x2Mul, I64x2ExtMulLowI32x4S, I64x2ExtMulHighI32x4S, I64x2ExtMulLowI32x4U, I64x2ExtMulHighI32x4U, F32x4Ceil, F32x4Floor, F32x4Trunc, F32x4Nearest, F32x4Abs, F32x4Neg, F32x4Sqrt, F32x4Add, F32x4Sub, F32x4Mul, F32x4Div, F32x4Min, F32x4Max, F32x4PMin, F32x4PMax, F64x2Ceil, F64x2Floor, F64x2Trunc, F64x2Nearest, F64x2Abs, F64x2Neg, F64x2Sqrt, F64x2Add, F64x2Sub, F64x2Mul, F64x2Div, F64x2Min, F64x2Max, F64x2PMin, F64x2PMax, I32x4TruncSatF32x4S, I32x4TruncSatF32x4U, F32x4ConvertI32x4S, F32x4ConvertI32x4U, I32x4TruncSatF64x2SZero, I32x4TruncSatF64x2UZero, F64x2ConvertLowI32x4S, F64x2ConvertLowI32x4U, F32x4DemoteF64x2Zero, F64x2PromoteLowF32x4, I8x16RelaxedSwizzle, I32x4RelaxedTruncSatF32x4S, I32x4RelaxedTruncSatF32x4U, I32x4RelaxedTruncSatF64x2SZero, I32x4RelaxedTruncSatF64x2UZero, F32x4Fma, F32x4Fms, F64x2Fma, F64x2Fms, I8x16LaneSelect, I16x8LaneSelect, I32x4LaneSelect, I64x2LaneSelect, F32x4RelaxedMin, F32x4RelaxedMax, F64x2RelaxedMin, F64x2RelaxedMax,
}
Expand description

WebAssembly instructions.

Variants (Non-exhaustive)

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.

Unreachable

Nop

Block(BlockType)

Loop(BlockType)

If(BlockType)

Else

Try(BlockType)

Delegate(u32)

Catch(u32)

CatchAll

End

Br(u32)

BrIf(u32)

BrTable(Cow<'a, [u32]>, u32)

Return

Call(u32)

CallIndirect

Fields

ty: u32
table: u32

Throw(u32)

Rethrow(u32)

Drop

Select

LocalGet(u32)

LocalSet(u32)

LocalTee(u32)

GlobalGet(u32)

GlobalSet(u32)

I32Load(MemArg)

I64Load(MemArg)

F32Load(MemArg)

F64Load(MemArg)

I32Load8_S(MemArg)

I32Load8_U(MemArg)

I32Load16_S(MemArg)

I32Load16_U(MemArg)

I64Load8_S(MemArg)

I64Load8_U(MemArg)

I64Load16_S(MemArg)

I64Load16_U(MemArg)

I64Load32_S(MemArg)

I64Load32_U(MemArg)

I32Store(MemArg)

I64Store(MemArg)

F32Store(MemArg)

F64Store(MemArg)

I32Store8(MemArg)

I32Store16(MemArg)

I64Store8(MemArg)

I64Store16(MemArg)

I64Store32(MemArg)

MemorySize(u32)

MemoryGrow(u32)

MemoryInit

Fields

mem: u32
data: u32

DataDrop(u32)

MemoryCopy

Fields

src: u32
dst: u32

MemoryFill(u32)

I32Const(i32)

I64Const(i64)

F32Const(f32)

F64Const(f64)

I32Eqz

I32Eq

I32Ne

I32LtS

I32LtU

I32GtS

I32GtU

I32LeS

I32LeU

I32GeS

I32GeU

I64Eqz

I64Eq

I64Ne

I64LtS

I64LtU

I64GtS

I64GtU

I64LeS

I64LeU

I64GeS

I64GeU

F32Eq

F32Ne

F32Lt

F32Gt

F32Le

F32Ge

F64Eq

F64Ne

F64Lt

F64Gt

F64Le

F64Ge

I32Clz

I32Ctz

I32Popcnt

I32Add

I32Sub

I32Mul

I32DivS

I32DivU

I32RemS

I32RemU

I32And

I32Or

I32Xor

I32Shl

I32ShrS

I32ShrU

I32Rotl

I32Rotr

I64Clz

I64Ctz

I64Popcnt

I64Add

I64Sub

I64Mul

I64DivS

I64DivU

I64RemS

I64RemU

I64And

I64Or

I64Xor

I64Shl

I64ShrS

I64ShrU

I64Rotl

I64Rotr

F32Abs

F32Neg

F32Ceil

F32Floor

F32Trunc

F32Nearest

F32Sqrt

F32Add

F32Sub

F32Mul

F32Div

F32Min

F32Max

F32Copysign

F64Abs

F64Neg

F64Ceil

F64Floor

F64Trunc

F64Nearest

F64Sqrt

F64Add

F64Sub

F64Mul

F64Div

F64Min

F64Max

F64Copysign

I32WrapI64

I32TruncF32S

I32TruncF32U

I32TruncF64S

I32TruncF64U

I64ExtendI32S

I64ExtendI32U

I64TruncF32S

I64TruncF32U

I64TruncF64S

I64TruncF64U

F32ConvertI32S

F32ConvertI32U

F32ConvertI64S

F32ConvertI64U

F32DemoteF64

F64ConvertI32S

F64ConvertI32U

F64ConvertI64S

F64ConvertI64U

F64PromoteF32

I32ReinterpretF32

I64ReinterpretF64

F32ReinterpretI32

F64ReinterpretI64

I32Extend8S

I32Extend16S

I64Extend8S

I64Extend16S

I64Extend32S

I32TruncSatF32S

I32TruncSatF32U

I32TruncSatF64S

I32TruncSatF64U

I64TruncSatF32S

I64TruncSatF32U

I64TruncSatF64S

I64TruncSatF64U

TypedSelect(ValType)

RefNull(ValType)

RefIsNull

RefFunc(u32)

TableInit

Fields

segment: u32
table: u32

ElemDrop

Fields

segment: u32

TableFill

Fields

table: u32

TableSet

Fields

table: u32

TableGet

Fields

table: u32

TableGrow

Fields

table: u32

TableSize

Fields

table: u32

TableCopy

Fields

src: u32
dst: u32

V128Load

Fields

memarg: MemArg

V128Load8x8S

Fields

memarg: MemArg

V128Load8x8U

Fields

memarg: MemArg

V128Load16x4S

Fields

memarg: MemArg

V128Load16x4U

Fields

memarg: MemArg

V128Load32x2S

Fields

memarg: MemArg

V128Load32x2U

Fields

memarg: MemArg

V128Load8Splat

Fields

memarg: MemArg

V128Load16Splat

Fields

memarg: MemArg

V128Load32Splat

Fields

memarg: MemArg

V128Load64Splat

Fields

memarg: MemArg

V128Load32Zero

Fields

memarg: MemArg

V128Load64Zero

Fields

memarg: MemArg

V128Store

Fields

memarg: MemArg

V128Load8Lane

Fields

memarg: MemArg
lane: Lane

V128Load16Lane

Fields

memarg: MemArg
lane: Lane

V128Load32Lane

Fields

memarg: MemArg
lane: Lane

V128Load64Lane

Fields

memarg: MemArg
lane: Lane

V128Store8Lane

Fields

memarg: MemArg
lane: Lane

V128Store16Lane

Fields

memarg: MemArg
lane: Lane

V128Store32Lane

Fields

memarg: MemArg
lane: Lane

V128Store64Lane

Fields

memarg: MemArg
lane: Lane

V128Const(i128)

I8x16Shuffle

Fields

lanes: [Lane; 16]

I8x16ExtractLaneS

Fields

lane: Lane

I8x16ExtractLaneU

Fields

lane: Lane

I8x16ReplaceLane

Fields

lane: Lane

I16x8ExtractLaneS

Fields

lane: Lane

I16x8ExtractLaneU

Fields

lane: Lane

I16x8ReplaceLane

Fields

lane: Lane

I32x4ExtractLane

Fields

lane: Lane

I32x4ReplaceLane

Fields

lane: Lane

I64x2ExtractLane

Fields

lane: Lane

I64x2ReplaceLane

Fields

lane: Lane

F32x4ExtractLane

Fields

lane: Lane

F32x4ReplaceLane

Fields

lane: Lane

F64x2ExtractLane

Fields

lane: Lane

F64x2ReplaceLane

Fields

lane: Lane

I8x16Swizzle

I8x16Splat

I16x8Splat

I32x4Splat

I64x2Splat

F32x4Splat

F64x2Splat

I8x16Eq

I8x16Ne

I8x16LtS

I8x16LtU

I8x16GtS

I8x16GtU

I8x16LeS

I8x16LeU

I8x16GeS

I8x16GeU

I16x8Eq

I16x8Ne

I16x8LtS

I16x8LtU

I16x8GtS

I16x8GtU

I16x8LeS

I16x8LeU

I16x8GeS

I16x8GeU

I32x4Eq

I32x4Ne

I32x4LtS

I32x4LtU

I32x4GtS

I32x4GtU

I32x4LeS

I32x4LeU

I32x4GeS

I32x4GeU

I64x2Eq

I64x2Ne

I64x2LtS

I64x2GtS

I64x2LeS

I64x2GeS

F32x4Eq

F32x4Ne

F32x4Lt

F32x4Gt

F32x4Le

F32x4Ge

F64x2Eq

F64x2Ne

F64x2Lt

F64x2Gt

F64x2Le

F64x2Ge

V128Not

V128And

V128AndNot

V128Or

V128Xor

V128Bitselect

V128AnyTrue

I8x16Abs

I8x16Neg

I8x16Popcnt

I8x16AllTrue

I8x16Bitmask

I8x16NarrowI16x8S

I8x16NarrowI16x8U

I8x16Shl

I8x16ShrS

I8x16ShrU

I8x16Add

I8x16AddSatS

I8x16AddSatU

I8x16Sub

I8x16SubSatS

I8x16SubSatU

I8x16MinS

I8x16MinU

I8x16MaxS

I8x16MaxU

I8x16RoundingAverageU

I16x8ExtAddPairwiseI8x16S

I16x8ExtAddPairwiseI8x16U

I16x8Abs

I16x8Neg

I16x8Q15MulrSatS

I16x8AllTrue

I16x8Bitmask

I16x8NarrowI32x4S

I16x8NarrowI32x4U

I16x8ExtendLowI8x16S

I16x8ExtendHighI8x16S

I16x8ExtendLowI8x16U

I16x8ExtendHighI8x16U

I16x8Shl

I16x8ShrS

I16x8ShrU

I16x8Add

I16x8AddSatS

I16x8AddSatU

I16x8Sub

I16x8SubSatS

I16x8SubSatU

I16x8Mul

I16x8MinS

I16x8MinU

I16x8MaxS

I16x8MaxU

I16x8RoundingAverageU

I16x8ExtMulLowI8x16S

I16x8ExtMulHighI8x16S

I16x8ExtMulLowI8x16U

I16x8ExtMulHighI8x16U

I32x4ExtAddPairwiseI16x8S

I32x4ExtAddPairwiseI16x8U

I32x4Abs

I32x4Neg

I32x4AllTrue

I32x4Bitmask

I32x4ExtendLowI16x8S

I32x4ExtendHighI16x8S

I32x4ExtendLowI16x8U

I32x4ExtendHighI16x8U

I32x4Shl

I32x4ShrS

I32x4ShrU

I32x4Add

I32x4Sub

I32x4Mul

I32x4MinS

I32x4MinU

I32x4MaxS

I32x4MaxU

I32x4DotI16x8S

I32x4ExtMulLowI16x8S

I32x4ExtMulHighI16x8S

I32x4ExtMulLowI16x8U

I32x4ExtMulHighI16x8U

I64x2Abs

I64x2Neg

I64x2AllTrue

I64x2Bitmask

I64x2ExtendLowI32x4S

I64x2ExtendHighI32x4S

I64x2ExtendLowI32x4U

I64x2ExtendHighI32x4U

I64x2Shl

I64x2ShrS

I64x2ShrU

I64x2Add

I64x2Sub

I64x2Mul

I64x2ExtMulLowI32x4S

I64x2ExtMulHighI32x4S

I64x2ExtMulLowI32x4U

I64x2ExtMulHighI32x4U

F32x4Ceil

F32x4Floor

F32x4Trunc

F32x4Nearest

F32x4Abs

F32x4Neg

F32x4Sqrt

F32x4Add

F32x4Sub

F32x4Mul

F32x4Div

F32x4Min

F32x4Max

F32x4PMin

F32x4PMax

F64x2Ceil

F64x2Floor

F64x2Trunc

F64x2Nearest

F64x2Abs

F64x2Neg

F64x2Sqrt

F64x2Add

F64x2Sub

F64x2Mul

F64x2Div

F64x2Min

F64x2Max

F64x2PMin

F64x2PMax

I32x4TruncSatF32x4S

I32x4TruncSatF32x4U

F32x4ConvertI32x4S

F32x4ConvertI32x4U

I32x4TruncSatF64x2SZero

I32x4TruncSatF64x2UZero

F64x2ConvertLowI32x4S

F64x2ConvertLowI32x4U

F32x4DemoteF64x2Zero

F64x2PromoteLowF32x4

I8x16RelaxedSwizzle

I32x4RelaxedTruncSatF32x4S

I32x4RelaxedTruncSatF32x4U

I32x4RelaxedTruncSatF64x2SZero

I32x4RelaxedTruncSatF64x2UZero

F32x4Fma

F32x4Fms

F64x2Fma

F64x2Fms

I8x16LaneSelect

I16x8LaneSelect

I32x4LaneSelect

I64x2LaneSelect

F32x4RelaxedMin

F32x4RelaxedMax

F64x2RelaxedMin

F64x2RelaxedMax

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Encode the type into the given byte sink.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

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

The resulting type after obtaining ownership.

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

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

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.