1use crate::{
2 alu::{AddSubCols, BitwiseCols, LtCols, MulCols, ShiftLeftCols, ShiftRightCols},
3 memory::{MemoryInitCols, SingleMemoryLocal},
4 syscall::chip::SyscallCols,
5};
6use p3_baby_bear::BabyBear;
7
8use sp1_core_executor::events::{
9 AluEvent, MemoryInitializeFinalizeEvent, MemoryLocalEvent, MemoryReadRecord, MemoryRecordEnum,
10 MemoryWriteRecord, SyscallEvent,
11};
12
13#[link(name = "sp1-core-machine-sys", kind = "static")]
14extern "C-unwind" {
15 pub fn add_sub_event_to_row_babybear(event: &AluEvent, cols: &mut AddSubCols<BabyBear>);
16 pub fn mul_event_to_row_babybear(event: &AluEvent, cols: &mut MulCols<BabyBear>);
17 pub fn bitwise_event_to_row_babybear(event: &AluEvent, cols: &mut BitwiseCols<BabyBear>);
18 pub fn lt_event_to_row_babybear(event: &AluEvent, cols: &mut LtCols<BabyBear>);
19 pub fn sll_event_to_row_babybear(event: &AluEvent, cols: &mut ShiftLeftCols<BabyBear>);
20 pub fn sr_event_to_row_babybear(event: &AluEvent, cols: &mut ShiftRightCols<BabyBear>);
21 pub fn memory_local_event_to_row_babybear(
22 event: &MemoryLocalEvent,
23 cols: &mut SingleMemoryLocal<BabyBear>,
24 );
25 pub fn memory_global_event_to_row_babybear(
26 event: &MemoryInitializeFinalizeEvent,
27 is_receive: bool,
28 cols: &mut MemoryInitCols<BabyBear>,
29 );
30 pub fn syscall_event_to_row_babybear(
31 event: &SyscallEvent,
32 is_receive: bool,
33 cols: &mut SyscallCols<BabyBear>,
34 );
35}
36
37#[derive(Debug, Copy, Clone)]
41#[repr(C)]
42pub enum OptionMemoryRecordEnum {
43 Read(MemoryReadRecord),
45 Write(MemoryWriteRecord),
47 None,
48}
49
50impl From<Option<MemoryRecordEnum>> for OptionMemoryRecordEnum {
51 fn from(value: Option<MemoryRecordEnum>) -> Self {
52 match value {
53 Some(MemoryRecordEnum::Read(r)) => Self::Read(r),
54 Some(MemoryRecordEnum::Write(r)) => Self::Write(r),
55 None => Self::None,
56 }
57 }
58}
59
60impl From<OptionMemoryRecordEnum> for Option<MemoryRecordEnum> {
61 fn from(value: OptionMemoryRecordEnum) -> Self {
62 match value {
63 OptionMemoryRecordEnum::Read(r) => Some(MemoryRecordEnum::Read(r)),
64 OptionMemoryRecordEnum::Write(r) => Some(MemoryRecordEnum::Write(r)),
65 OptionMemoryRecordEnum::None => None,
66 }
67 }
68}