This commit is contained in:
Daniel Lubarov 2022-07-18 12:21:00 -07:00
parent 3d83d63f0b
commit 49a785f2bd
2 changed files with 10 additions and 10 deletions

View File

@ -6,7 +6,7 @@ use std::fmt::Debug;
use std::mem::{size_of, transmute, transmute_copy, ManuallyDrop};
use std::ops::{Index, IndexMut};
use crate::cpu::columns::shared::CpuSharedColumnsView;
use crate::cpu::columns::shared::CpuGeneralColumnsView;
use crate::memory;
mod shared;
@ -141,7 +141,7 @@ pub struct CpuColumnsView<T: Copy> {
/// Filter. 1 iff a Keccak permutation is computed on this row.
pub is_keccak: T,
pub(crate) general: CpuSharedColumnsView<T>,
pub(crate) general: CpuGeneralColumnsView<T>,
pub simple_logic_diff: T,
pub simple_logic_diff_inv: T,

View File

@ -4,13 +4,13 @@ use std::mem::{size_of, transmute};
/// General purpose columns, which can have different meanings depending on what CTL or other
/// operation is occurring at this row.
pub(crate) union CpuSharedColumnsView<T: Copy> {
pub(crate) union CpuGeneralColumnsView<T: Copy> {
keccak: CpuKeccakView<T>,
arithmetic: CpuArithmeticView<T>,
logic: CpuLogicView<T>,
}
impl<T: Copy> CpuSharedColumnsView<T> {
impl<T: Copy> CpuGeneralColumnsView<T> {
// SAFETY: Each view is a valid interpretation of the underlying array.
pub(crate) fn keccak(&self) -> &CpuKeccakView<T> {
unsafe { &self.keccak }
@ -42,7 +42,7 @@ impl<T: Copy> CpuSharedColumnsView<T> {
}
}
impl<T: Copy + PartialEq> PartialEq<Self> for CpuSharedColumnsView<T> {
impl<T: Copy + PartialEq> PartialEq<Self> for CpuGeneralColumnsView<T> {
fn eq(&self, other: &Self) -> bool {
let self_arr: &[T; NUM_SHARED_COLUMNS] = self.borrow();
let other_arr: &[T; NUM_SHARED_COLUMNS] = other.borrow();
@ -50,22 +50,22 @@ impl<T: Copy + PartialEq> PartialEq<Self> for CpuSharedColumnsView<T> {
}
}
impl<T: Copy + Eq> Eq for CpuSharedColumnsView<T> {}
impl<T: Copy + Eq> Eq for CpuGeneralColumnsView<T> {}
impl<T: Copy + Debug> Debug for CpuSharedColumnsView<T> {
impl<T: Copy + Debug> Debug for CpuGeneralColumnsView<T> {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let self_arr: &[T; NUM_SHARED_COLUMNS] = self.borrow();
Debug::fmt(self_arr, f)
}
}
impl<T: Copy> Borrow<[T; NUM_SHARED_COLUMNS]> for CpuSharedColumnsView<T> {
impl<T: Copy> Borrow<[T; NUM_SHARED_COLUMNS]> for CpuGeneralColumnsView<T> {
fn borrow(&self) -> &[T; NUM_SHARED_COLUMNS] {
unsafe { transmute(self) }
}
}
impl<T: Copy> BorrowMut<[T; NUM_SHARED_COLUMNS]> for CpuSharedColumnsView<T> {
impl<T: Copy> BorrowMut<[T; NUM_SHARED_COLUMNS]> for CpuGeneralColumnsView<T> {
fn borrow_mut(&mut self) -> &mut [T; NUM_SHARED_COLUMNS] {
unsafe { transmute(self) }
}
@ -92,4 +92,4 @@ pub(crate) struct CpuLogicView<T: Copy> {
}
// `u8` is guaranteed to have a `size_of` of 1.
pub const NUM_SHARED_COLUMNS: usize = size_of::<CpuSharedColumnsView<u8>>();
pub const NUM_SHARED_COLUMNS: usize = size_of::<CpuGeneralColumnsView<u8>>();