use serde::Deserialize;
use serde::Serialize;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum JitType {
I8,
I16,
I32,
I64,
F32,
F64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Instruction {
ImmI(i64),
ImmF(f64),
Load(JitType),
Store(JitType),
Add(JitType),
Sub(JitType),
Mul(JitType),
Div(JitType),
And,
Or,
Xor,
Not,
Eq(JitType),
Ne(JitType),
Lt(JitType),
Gt(JitType),
Le(JitType),
Ge(JitType),
Label(u32),
Jump(u32),
BranchIfTrue(u32),
BranchIfFalse(u32),
Dup,
Swap,
Drop,
Call(usize),
Return,
Custom {
opcode: u32,
payload: Vec<u64>,
},
}