sp1_core_machine/control_flow/jump/
columns.rs

1use sp1_derive::AlignedBorrow;
2use sp1_stark::Word;
3use std::mem::size_of;
4
5use crate::operations::BabyBearWordRangeChecker;
6
7pub const NUM_JUMP_COLS: usize = size_of::<JumpColumns<u8>>();
8
9#[derive(AlignedBorrow, Default, Debug, Clone, Copy)]
10#[repr(C)]
11pub struct JumpColumns<T> {
12    /// The current program counter.
13    pub pc: Word<T>,
14    pub pc_range_checker: BabyBearWordRangeChecker<T>,
15
16    /// The next program counter.
17    pub next_pc: Word<T>,
18    pub next_pc_range_checker: BabyBearWordRangeChecker<T>,
19
20    /// The value of the first operand.
21    pub op_a_value: Word<T>,
22    /// The value of the second operand.
23    pub op_b_value: Word<T>,
24    /// The value of the third operand.
25    pub op_c_value: Word<T>,
26
27    /// Whether the first operand is register 0.
28    pub op_a_0: T,
29
30    /// Jump Instructions.
31    pub is_jal: T,
32    pub is_jalr: T,
33
34    // A range checker for `op_a` which may contain `pc + 4`.
35    pub op_a_range_checker: BabyBearWordRangeChecker<T>,
36}