use serde::{Deserialize, Serialize};
use super::{Elem, Variable};
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)]
#[allow(missing_docs)]
pub enum MatrixIdent {
A,
B,
Accumulator,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)]
#[allow(missing_docs)]
pub enum MatrixLayout {
ColMajor,
RowMajor,
Undefined,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)]
#[allow(missing_docs)]
pub struct Matrix {
pub ident: MatrixIdent,
pub m: u8,
pub n: u8,
pub k: u8,
pub elem: Elem,
pub layout: MatrixLayout,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)]
#[allow(missing_docs)]
pub enum CoopMma {
Fill { mat: Variable, value: Variable },
Load {
mat: Variable,
value: Variable,
stride: Variable,
},
Execute {
mat_a: Variable,
mat_b: Variable,
mat_c: Variable,
mat_d: Variable,
},
Store {
output: Variable,
mat: Variable,
stride: Variable,
layout: MatrixLayout,
},
}