openvm_native_compiler/asm/
utils.rs
1use openvm_stark_backend::p3_field::PrimeField32;
2
3use crate::prelude::{MemIndex, RVar};
4
5pub enum IndexTriple<F> {
7 Var(i32, F, F),
8 Const(F, F, F),
9}
10
11impl<F: PrimeField32> MemIndex<F> {
12 pub fn fp(&self) -> IndexTriple<F> {
13 match &self.index {
14 RVar::Const(index) => IndexTriple::Const(
15 *index,
16 F::from_canonical_usize(self.offset),
17 F::from_canonical_usize(self.size),
18 ),
19 RVar::Val(index) => IndexTriple::Var(
20 index.fp(),
21 F::from_canonical_usize(self.offset),
22 F::from_canonical_usize(self.size),
23 ),
24 }
25 }
26}
27
28pub enum ValueOrConst<F, EF> {
30 Val(i32),
31 ExtVal(i32),
32 Const(F),
33 ExtConst(EF),
34}