openvm_algebra_circuit/
lib.rs1#![cfg_attr(feature = "tco", allow(incomplete_features))]
2#![cfg_attr(feature = "tco", feature(explicit_tail_calls))]
3#![cfg_attr(feature = "tco", allow(internal_features))]
4#![cfg_attr(feature = "tco", feature(core_intrinsics))]
5
6use derive_more::derive::{Deref, DerefMut};
7use openvm_circuit_derive::PreflightExecutor;
8use openvm_mod_circuit_builder::FieldExpressionExecutor;
9use openvm_rv32_adapters::Rv32VecHeapAdapterExecutor;
10#[cfg(feature = "cuda")]
11use {
12 openvm_mod_circuit_builder::FieldExpressionCoreRecordMut,
13 openvm_rv32_adapters::Rv32VecHeapAdapterRecord,
14};
15
16pub mod fp2_chip;
17pub mod modular_chip;
18
19mod execution;
20mod fp2;
21pub use fp2::*;
22mod extension;
23pub use extension::*;
24pub mod fields;
25
26#[derive(Clone, PreflightExecutor, Deref, DerefMut)]
27pub struct FieldExprVecHeapExecutor<
28 const BLOCKS: usize,
29 const BLOCK_SIZE: usize,
30 const IS_FP2: bool,
31>(FieldExpressionExecutor<Rv32VecHeapAdapterExecutor<2, BLOCKS, BLOCKS, BLOCK_SIZE, BLOCK_SIZE>>);
32
33#[cfg(feature = "cuda")]
34pub(crate) type AlgebraRecord<
35 'a,
36 const NUM_READS: usize,
37 const BLOCKS: usize,
38 const BLOCK_SIZE: usize,
39> = (
40 &'a mut Rv32VecHeapAdapterRecord<NUM_READS, BLOCKS, BLOCKS, BLOCK_SIZE, BLOCK_SIZE>,
41 FieldExpressionCoreRecordMut<'a>,
42);