use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum SassReg {
R(u8),
UR(u8),
PR(u8),
}
impl std::fmt::Display for SassReg {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
SassReg::R(n) => write!(f, "R{}", n),
SassReg::UR(n) => write!(f, "UR{}", n),
SassReg::PR(n) => write!(f, "P{}", n),
}
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum SassInstruction {
FAdd { dst: SassReg, src0: SassReg, src1: SassReg },
FMul { dst: SassReg, src0: SassReg, src1: SassReg },
Imma { dst: SassReg, src0: SassReg, src1: SassReg, src2: SassReg },
Ldg { dst: SassReg, addr: SassReg },
Stg { addr: SassReg, src: SassReg },
Exit,
Nop,
}