use crate::instructions::GcnInstruction;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GcnProgram {
pub name: String,
pub kernels: Vec<GcnKernel>,
}
impl GcnProgram {
pub fn new(name: String) -> Self {
Self { name, kernels: Vec::new() }
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GcnKernel {
pub name: String,
pub instructions: Vec<GcnInstruction>,
pub args: Vec<GcnKernelArg>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GcnKernelArg {
pub name: String,
pub size: usize,
pub offset: usize,
}