sp1_recursion_core/air/
range_check.rs1use p3_field::Field;
2use serde::{Deserialize, Serialize};
3
4pub const NUM_RANGE_CHECK_OPS: usize = 2;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
9pub enum RangeCheckOpcode {
10 U12 = 0,
12
13 U16 = 1,
15}
16
17impl RangeCheckOpcode {
18 pub fn all() -> Vec<Self> {
20 let opcodes = vec![RangeCheckOpcode::U12, RangeCheckOpcode::U16];
21 assert_eq!(opcodes.len(), NUM_RANGE_CHECK_OPS);
22 opcodes
23 }
24
25 pub fn as_field<F: Field>(self) -> F {
27 F::from_canonical_u8(self as u8)
28 }
29}