use prelude::{Vec, String};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum Opcode {
Drop,
Select,
GetLocal(u32),
SetLocal(u32),
TeeLocal(u32),
GetGlobal(u32),
SetGlobal(u32),
CurrentMemory,
GrowMemory,
Nop,
Unreachable,
Return,
Call(u32),
CallIndirect(u32),
I32Const(i32),
I32Clz,
I32Ctz,
I32Popcnt,
I32Add,
I32Sub,
I32Mul,
I32DivU,
I32DivS,
I32RemU,
I32RemS,
I32And,
I32Or,
I32Xor,
I32Shl,
I32ShrU,
I32ShrS,
I32Rotl,
I32Rotr,
I32Eqz,
I32Eq,
I32Ne,
I32LtU,
I32LtS,
I32LeU,
I32LeS,
I32GtU,
I32GtS,
I32GeU,
I32GeS,
I32WrapI64,
I32Load(Memarg),
I32Store(Memarg),
I32Load8U(Memarg),
I32Load8S(Memarg),
I32Load16U(Memarg),
I32Load16S(Memarg),
I32Store8(Memarg),
I32Store16(Memarg),
I64Const(i64),
I64Clz,
I64Ctz,
I64Popcnt,
I64Add,
I64Sub,
I64Mul,
I64DivU,
I64DivS,
I64RemU,
I64RemS,
I64And,
I64Or,
I64Xor,
I64Shl,
I64ShrU,
I64ShrS,
I64Rotl,
I64Rotr,
I64Eqz,
I64Eq,
I64Ne,
I64LtU,
I64LtS,
I64LeU,
I64LeS,
I64GtU,
I64GtS,
I64GeU,
I64GeS,
I64ExtendI32U,
I64ExtendI32S,
I64Load(Memarg),
I64Store(Memarg),
I64Load8U(Memarg),
I64Load8S(Memarg),
I64Load16U(Memarg),
I64Load16S(Memarg),
I64Load32U(Memarg),
I64Load32S(Memarg),
I64Store8(Memarg),
I64Store16(Memarg),
I64Store32(Memarg),
F32Const(u32),
F64Const(u64),
F32ReinterpretI32,
F64ReinterpretI64,
I32ReinterpretF32,
I64ReinterpretF64,
I32TruncSF32,
I32TruncUF32,
I32TruncSF64,
I32TruncUF64,
I64TruncSF32,
I64TruncUF32,
I64TruncSF64,
I64TruncUF64,
F32ConvertSI32,
F32ConvertUI32,
F32ConvertSI64,
F32ConvertUI64,
F64ConvertSI32,
F64ConvertUI32,
F64ConvertSI64,
F64ConvertUI64,
F32DemoteF64,
F64PromoteF32,
F32Abs,
F32Neg,
F32Ceil,
F32Floor,
F32Trunc,
F32Nearest,
F32Sqrt,
F32Add,
F32Sub,
F32Mul,
F32Div,
F32Min,
F32Max,
F32Copysign,
F32Eq,
F32Ne,
F32Lt,
F32Gt,
F32Le,
F32Ge,
F64Abs,
F64Neg,
F64Ceil,
F64Floor,
F64Trunc,
F64Nearest,
F64Sqrt,
F64Add,
F64Sub,
F64Mul,
F64Div,
F64Min,
F64Max,
F64Copysign,
F64Eq,
F64Ne,
F64Lt,
F64Gt,
F64Le,
F64Ge,
Jmp(u32),
JmpIf(u32),
JmpEither(u32, u32),
JmpTable(Vec<u32>, u32),
NativeInvoke(u32),
Memcpy,
NotImplemented(String)
}
#[derive(Copy, Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
pub struct Memarg {
pub offset: u32,
pub align: u32
}