openvm_recursion_circuit/primitives/
bus.rs

1use openvm_recursion_circuit_derive::AlignedBorrow;
2
3use crate::define_typed_lookup_bus;
4
5#[repr(C)]
6#[derive(AlignedBorrow, Debug, Clone)]
7pub struct RangeCheckerBusMessage<T> {
8    pub value: T,
9    pub max_bits: T,
10}
11
12define_typed_lookup_bus!(RangeCheckerBus, RangeCheckerBusMessage);
13
14#[repr(C)]
15#[derive(AlignedBorrow, Debug, Clone)]
16pub struct PowerCheckerBusMessage<T> {
17    pub log: T,
18    pub exp: T,
19}
20
21define_typed_lookup_bus!(PowerCheckerBus, PowerCheckerBusMessage);
22
23#[repr(C)]
24#[derive(AlignedBorrow, Debug, Clone)]
25pub struct ExpBitsLenMessage<T> {
26    pub base: T,
27    pub bit_src: T,
28    pub num_bits: T,
29    pub result: T,
30}
31
32define_typed_lookup_bus!(ExpBitsLenBus, ExpBitsLenMessage);
33
34#[repr(C)]
35#[derive(AlignedBorrow, Debug, Clone)]
36pub struct RightShiftMessage<T> {
37    pub input: T,
38    pub shift_bits: T,
39    pub result: T,
40}
41
42define_typed_lookup_bus!(RightShiftBus, RightShiftMessage);