openvm_native_compiler/asm/
utils.rs1use 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) => {
15 IndexTriple::Const(*index, F::from_usize(self.offset), F::from_usize(self.size))
16 }
17 RVar::Val(index) => IndexTriple::Var(
18 index.fp(),
19 F::from_usize(self.offset),
20 F::from_usize(self.size),
21 ),
22 }
23 }
24}
25
26pub enum ValueOrConst<F, EF> {
28 Val(i32),
29 ExtVal(i32),
30 Const(F),
31 ExtConst(EF),
32}