Skip to main content

sass_assembler/instructions/
mod.rs

1use serde::{Deserialize, Serialize};
2
3/// SASS 寄存器
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
5pub enum SassReg {
6    R(u8),
7    UR(u8),
8    PR(u8),
9}
10
11impl std::fmt::Display for SassReg {
12    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
13        match self {
14            SassReg::R(n) => write!(f, "R{}", n),
15            SassReg::UR(n) => write!(f, "UR{}", n),
16            SassReg::PR(n) => write!(f, "P{}", n),
17        }
18    }
19}
20
21/// SASS 指令集 (Maxwell/Pascal/Ampere/Hopper 基础)
22#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
23pub enum SassInstruction {
24    /// 浮点加法: FADD dst, src0, src1
25    FAdd { dst: SassReg, src0: SassReg, src1: SassReg },
26    /// 浮点乘法: FMUL dst, src0, src1
27    FMul { dst: SassReg, src0: SassReg, src1: SassReg },
28    /// 张量核乘累加: IMMA dst, src0, src1, src2
29    Imma { dst: SassReg, src0: SassReg, src1: SassReg, src2: SassReg },
30    /// 内存加载: LDG.E dst, [addr]
31    Ldg { dst: SassReg, addr: SassReg },
32    /// 内存存储: STG.E [addr], src
33    Stg { addr: SassReg, src: SassReg },
34    /// 控制流: EXIT
35    Exit,
36    /// 控制流: NOP
37    Nop,
38}