openvm_algebra_circuit/modular_chip/
mod.rs1use openvm_circuit::arch::{VmAirWrapper, VmChipWrapper};
2use openvm_circuit_derive::PreflightExecutor;
3use openvm_instructions::riscv::{RV32_CELL_BITS, RV32_REGISTER_NUM_LIMBS};
4use openvm_mod_circuit_builder::{FieldExpressionCoreAir, FieldExpressionFiller};
5use openvm_rv32_adapters::{
6 Rv32IsEqualModAdapterAir, Rv32IsEqualModAdapterExecutor, Rv32IsEqualModAdapterFiller,
7 Rv32VecHeapAdapterAir, Rv32VecHeapAdapterFiller,
8};
9
10use crate::FieldExprVecHeapExecutor;
11
12mod is_eq;
13pub use is_eq::*;
14mod addsub;
15pub use addsub::*;
16mod muldiv;
17pub use muldiv::*;
18
19#[cfg(test)]
20mod tests;
21
22pub type ModularAir<const BLOCKS: usize, const BLOCK_SIZE: usize> = VmAirWrapper<
23 Rv32VecHeapAdapterAir<2, BLOCKS, BLOCKS, BLOCK_SIZE, BLOCK_SIZE>,
24 FieldExpressionCoreAir,
25>;
26
27pub type ModularExecutor<const BLOCKS: usize, const BLOCK_SIZE: usize> =
28 FieldExprVecHeapExecutor<BLOCKS, BLOCK_SIZE, false>;
29
30pub type ModularChip<F, const BLOCKS: usize, const BLOCK_SIZE: usize> = VmChipWrapper<
31 F,
32 FieldExpressionFiller<Rv32VecHeapAdapterFiller<2, BLOCKS, BLOCKS, BLOCK_SIZE, BLOCK_SIZE>>,
33>;
34
35pub type ModularIsEqualAir<
37 const NUM_LANES: usize,
38 const LANE_SIZE: usize,
39 const TOTAL_LIMBS: usize,
40> = VmAirWrapper<
41 Rv32IsEqualModAdapterAir<2, NUM_LANES, LANE_SIZE, TOTAL_LIMBS>,
42 ModularIsEqualCoreAir<TOTAL_LIMBS, RV32_REGISTER_NUM_LIMBS, RV32_CELL_BITS>,
43>;
44
45#[derive(Clone, PreflightExecutor)]
46pub struct VmModularIsEqualExecutor<
47 const NUM_LANES: usize,
48 const LANE_SIZE: usize,
49 const TOTAL_LIMBS: usize,
50>(
51 ModularIsEqualExecutor<
52 Rv32IsEqualModAdapterExecutor<2, NUM_LANES, LANE_SIZE, TOTAL_LIMBS>,
53 TOTAL_LIMBS,
54 RV32_REGISTER_NUM_LIMBS,
55 RV32_CELL_BITS,
56 >,
57);
58
59pub type ModularIsEqualChip<
60 F,
61 const NUM_LANES: usize,
62 const LANE_SIZE: usize,
63 const TOTAL_LIMBS: usize,
64> = VmChipWrapper<
65 F,
66 ModularIsEqualFiller<
67 Rv32IsEqualModAdapterFiller<2, NUM_LANES, LANE_SIZE, TOTAL_LIMBS>,
68 TOTAL_LIMBS,
69 RV32_REGISTER_NUM_LIMBS,
70 RV32_CELL_BITS,
71 >,
72>;