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