use sp1_derive::AlignedBorrow;
use std::mem::size_of;
use super::{NUM_BYTE_LOOKUP_CHANNELS, NUM_BYTE_OPS};
pub const NUM_BYTE_PREPROCESSED_COLS: usize = size_of::<BytePreprocessedCols<u8>>();
pub const NUM_BYTE_MULT_COLS: usize = size_of::<ByteMultCols<u8>>();
#[derive(Debug, Clone, Copy, AlignedBorrow)]
#[repr(C)]
pub struct BytePreprocessedCols<T> {
pub b: T,
pub c: T,
pub and: T,
pub or: T,
pub xor: T,
pub sll: T,
pub shr: T,
pub shr_carry: T,
pub ltu: T,
pub msb: T,
pub value_u16: T,
}
#[derive(Debug, Clone, Copy, AlignedBorrow)]
#[repr(C)]
pub struct MultiplicitiesCols<T> {
pub multiplicities: [T; NUM_BYTE_OPS],
}
#[derive(Debug, Clone, Copy, AlignedBorrow)]
#[repr(C)]
pub struct ByteMultCols<T> {
pub shard: T,
pub mult_channels: [MultiplicitiesCols<T>; NUM_BYTE_LOOKUP_CHANNELS as usize],
}