cbtop/grammar/
transform.rs1use super::workload::Operation;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub enum QuantScheme {
8 Symmetric,
10 Asymmetric,
12 BlockWise { block_size: usize },
14}
15
16#[derive(Debug, Clone, PartialEq, Default)]
18pub enum DataTransform {
19 #[default]
21 Identity,
22 Quantize { bits: u8, scheme: QuantScheme },
24 Tile { tile_size: usize },
26 Transpose { order: Vec<usize> },
28 Pad { alignment: usize },
30 Fuse { ops: Vec<Operation> },
32}
33
34impl DataTransform {
35 pub fn identity() -> Self {
37 DataTransform::Identity
38 }
39
40 pub fn tile(size: usize) -> Self {
42 DataTransform::Tile { tile_size: size }
43 }
44
45 pub fn quantize(bits: u8) -> Self {
47 DataTransform::Quantize {
48 bits,
49 scheme: QuantScheme::Symmetric,
50 }
51 }
52
53 pub fn pad(alignment: usize) -> Self {
55 DataTransform::Pad { alignment }
56 }
57}