gcn_assembler/instructions/
mod.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
5pub enum GcnReg {
6 VGPR(u8),
7 SGPR(u8),
8 AGPR(u8),
9}
10
11impl std::fmt::Display for GcnReg {
12 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
13 match self {
14 GcnReg::VGPR(n) => write!(f, "v{}", n),
15 GcnReg::SGPR(n) => write!(f, "s{}", n),
16 GcnReg::AGPR(n) => write!(f, "a{}", n),
17 }
18 }
19}
20
21#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
23pub enum GcnInstruction {
24 VAddF32 { dst: GcnReg, src0: GcnReg, src1: GcnReg },
26 VMulF32 { dst: GcnReg, src0: GcnReg, src1: GcnReg },
28 VDot2F32F16 { dst: GcnReg, src0: GcnReg, src1: GcnReg },
30 GlobalLoadDword { dst: GcnReg, addr: GcnReg, offset: u16 },
32 GlobalStoreDword { addr: GcnReg, src: GcnReg, offset: u16 },
34 SEndPgm,
36 SNop(u16),
38}