Skip to main content

gcn_assembler/program/
mod.rs

1use crate::instructions::GcnInstruction;
2use serde::{Deserialize, Serialize};
3
4/// GCN 程序 (HSACO/ELF 包装)
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct GcnProgram {
7    pub name: String,
8    pub kernels: Vec<GcnKernel>,
9}
10
11impl GcnProgram {
12    pub fn new(name: String) -> Self {
13        Self { name, kernels: Vec::new() }
14    }
15}
16
17/// GCN Kernel 定义
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct GcnKernel {
20    pub name: String,
21    pub instructions: Vec<GcnInstruction>,
22    pub args: Vec<GcnKernelArg>,
23}
24
25/// GCN Kernel 参数
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct GcnKernelArg {
28    pub name: String,
29    pub size: usize,
30    pub offset: usize,
31}