Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ pub const BLAKE_ROUND: QM31 = qm31!(689010793, 1714718853, 1598356108, 186208473
pub const CALL_OPCODE_REL_IMM: QM31 = qm31!(1058958974, 291699845, 1067131259, 1385778936);
pub const CALL_OPCODE_ABS: QM31 = qm31!(753588549, 110829970, 382462386, 1929508194);
pub const CUBE_252: QM31 = qm31!(2138805547, 791862161, 1496263445, 1432185054);
pub const GENERIC_OPCODE: QM31 = qm31!(1897142610, 70087557, 1948231093, 404344144);
pub const GENERIC_OPCODE: QM31 = qm31!(456602985, 2081493672, 1571225331, 1520544566);
pub const JNZ_OPCODE_TAKEN: QM31 = qm31!(863863896, 1799155008, 2087434855, 1577176263);
pub const JNZ_OPCODE_NON_TAKEN: QM31 = qm31!(527000951, 699354015, 1174877270, 2099424613);
pub const JUMP_OPCODE_DOUBLE_DEREF: QM31 = qm31!(1104346987, 1319193194, 162676979, 376017635);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// This file was created by the AIR team.

use crate::components::prelude::*;
use crate::components::subroutines::cond_decode_small_sign::CondDecodeSmallSign;
use crate::components::subroutines::cond_range_check_2::CondRangeCheck2;
use crate::components::subroutines::decode_small_sign::DecodeSmallSign;

#[derive(Copy, Clone, Serialize, Deserialize, CairoSerialize)]
pub struct CondFelt252AsRelImm {}
Expand Down Expand Up @@ -30,12 +30,7 @@ impl CondFelt252AsRelImm {
let M31_512 = E::F::from(M31::from(512));
let M31_536870912 = E::F::from(M31::from(536870912));

CondDecodeSmallSign::evaluate(
[cond_felt_252_as_rel_imm_input_limb_28.clone()],
msb_col0.clone(),
mid_limbs_set_col1.clone(),
eval,
);
DecodeSmallSign::evaluate([], msb_col0.clone(), mid_limbs_set_col1.clone(), eval);
let remainder_bits_tmp_1e9bf_3 = eval.add_intermediate(
(cond_felt_252_as_rel_imm_input_limb_3.clone()
- (mid_limbs_set_col1.clone() * M31_508.clone())),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
use crate::components::prelude::*;

#[derive(Copy, Clone, Serialize, Deserialize, CairoSerialize)]
pub struct CondDecodeSmallSign {}
pub struct DecodeSmallSign {}

impl CondDecodeSmallSign {
impl DecodeSmallSign {
#[allow(unused_parens)]
#[allow(clippy::double_parens)]
#[allow(non_snake_case)]
#[allow(clippy::unused_unit)]
#[allow(unused_variables)]
#[allow(clippy::too_many_arguments)]
pub fn evaluate<E: EvalAtRow>(
[cond_decode_small_sign_input_limb_28]: [E::F; 1],
[]: [E::F; 0],
msb_col0: E::F,
mid_limbs_set_col1: E::F,
eval: &mut E,
Expand All @@ -27,10 +27,7 @@ impl CondDecodeSmallSign {
(mid_limbs_set_col1.clone() * (mid_limbs_set_col1.clone() - M31_1.clone())),
);
// Cannot have msb equals 0 and mid_limbs_set equals 1.
eval.add_constraint(
((cond_decode_small_sign_input_limb_28.clone() * mid_limbs_set_col1.clone())
* (msb_col0.clone() - M31_1.clone())),
);
eval.add_constraint((mid_limbs_set_col1.clone() * (msb_col0.clone() - M31_1.clone())));
[]
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ pub mod bitwise_xor_num_bits_7;
pub mod bitwise_xor_num_bits_8;
pub mod bitwise_xor_num_bits_8_b;
pub mod bitwise_xor_num_bits_9;
pub mod cond_decode_small_sign;
pub mod cond_felt_252_as_addr;
pub mod cond_felt_252_as_rel_imm;
pub mod cond_range_check_2;
Expand All @@ -30,6 +29,7 @@ pub mod decode_instruction_de75a;
pub mod decode_instruction_df7a6;
pub mod decode_instruction_f1edd;
pub mod decode_instruction_fe864;
pub mod decode_small_sign;
pub mod div_252;
pub mod double_karatsuba_n_7_limb_max_bound_511;
pub mod double_karatsuba_n_8_limb_max_bound_4095;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// This file was created by the AIR team.

use crate::components::prelude::*;
use crate::components::subroutines::cond_decode_small_sign::CondDecodeSmallSign;
use crate::components::subroutines::cond_range_check_2::CondRangeCheck2;
use crate::components::subroutines::decode_small_sign::DecodeSmallSign;
use crate::components::subroutines::read_id::ReadId;

#[derive(Copy, Clone, Serialize, Deserialize, CairoSerialize)]
Expand Down Expand Up @@ -46,12 +46,7 @@ impl ReadSmall {
memory_address_to_id_lookup_elements,
eval,
);
CondDecodeSmallSign::evaluate(
[M31_1.clone()],
msb_col1.clone(),
mid_limbs_set_col2.clone(),
eval,
);
DecodeSmallSign::evaluate([], msb_col1.clone(), mid_limbs_set_col2.clone(), eval);
CondRangeCheck2::evaluate(
[remainder_bits_col6.clone(), M31_1.clone()],
partial_limb_msb_col7.clone(),
Expand Down
2 changes: 1 addition & 1 deletion stwo_cairo_prover/crates/common/casm_registry.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"air_version": "6ab85fda",
"air_version": "2712d9bf",
"air_fns": {
"memory_address_to_id": {
"trace_type": "Memory",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -282,16 +282,17 @@ fn write_trace_simd(
let memory_id_to_big_value_tmp_c921e_9 =
memory_id_to_big_state.deduce_output(op1_id_col7);

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_c921e_10 = memory_id_to_big_value_tmp_c921e_9.get_m31(27).eq(M31_256);
let msb_col8 = msb_tmp_c921e_10.as_m31();
*row[8] = msb_col8;
let mid_limbs_set_tmp_c921e_11 =
memory_id_to_big_value_tmp_c921e_9.get_m31(20).eq(M31_511);
((memory_id_to_big_value_tmp_c921e_9.get_m31(20).eq(M31_511))
& (msb_tmp_c921e_10));
let mid_limbs_set_col9 = mid_limbs_set_tmp_c921e_11.as_m31();
*row[9] = mid_limbs_set_col9;
let cond_decode_small_sign_output_tmp_c921e_12 = [msb_col8, mid_limbs_set_col9];
let decode_small_sign_output_tmp_c921e_12 = [msb_col8, mid_limbs_set_col9];

let op1_limb_0_col10 = memory_id_to_big_value_tmp_c921e_9.get_m31(0);
*row[10] = op1_limb_0_col10;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1191,16 +1191,17 @@ fn write_trace_simd(
let memory_id_to_big_value_tmp_c1b19_74 =
memory_id_to_big_state.deduce_output(offsets_a_id_col84);

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_c1b19_75 = memory_id_to_big_value_tmp_c1b19_74.get_m31(27).eq(M31_256);
let msb_col85 = msb_tmp_c1b19_75.as_m31();
*row[85] = msb_col85;
let mid_limbs_set_tmp_c1b19_76 =
memory_id_to_big_value_tmp_c1b19_74.get_m31(20).eq(M31_511);
((memory_id_to_big_value_tmp_c1b19_74.get_m31(20).eq(M31_511))
& (msb_tmp_c1b19_75));
let mid_limbs_set_col86 = mid_limbs_set_tmp_c1b19_76.as_m31();
*row[86] = mid_limbs_set_col86;
let cond_decode_small_sign_output_tmp_c1b19_77 = [msb_col85, mid_limbs_set_col86];
let decode_small_sign_output_tmp_c1b19_77 = [msb_col85, mid_limbs_set_col86];

let offsets_a_limb_0_col87 = memory_id_to_big_value_tmp_c1b19_74.get_m31(0);
*row[87] = offsets_a_limb_0_col87;
Expand Down Expand Up @@ -1278,16 +1279,17 @@ fn write_trace_simd(
let memory_id_to_big_value_tmp_c1b19_84 =
memory_id_to_big_state.deduce_output(offsets_b_id_col92);

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_c1b19_85 = memory_id_to_big_value_tmp_c1b19_84.get_m31(27).eq(M31_256);
let msb_col93 = msb_tmp_c1b19_85.as_m31();
*row[93] = msb_col93;
let mid_limbs_set_tmp_c1b19_86 =
memory_id_to_big_value_tmp_c1b19_84.get_m31(20).eq(M31_511);
((memory_id_to_big_value_tmp_c1b19_84.get_m31(20).eq(M31_511))
& (msb_tmp_c1b19_85));
let mid_limbs_set_col94 = mid_limbs_set_tmp_c1b19_86.as_m31();
*row[94] = mid_limbs_set_col94;
let cond_decode_small_sign_output_tmp_c1b19_87 = [msb_col93, mid_limbs_set_col94];
let decode_small_sign_output_tmp_c1b19_87 = [msb_col93, mid_limbs_set_col94];

let offsets_b_limb_0_col95 = memory_id_to_big_value_tmp_c1b19_84.get_m31(0);
*row[95] = offsets_b_limb_0_col95;
Expand Down Expand Up @@ -1365,16 +1367,17 @@ fn write_trace_simd(
let memory_id_to_big_value_tmp_c1b19_94 =
memory_id_to_big_state.deduce_output(offsets_c_id_col100);

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_c1b19_95 = memory_id_to_big_value_tmp_c1b19_94.get_m31(27).eq(M31_256);
let msb_col101 = msb_tmp_c1b19_95.as_m31();
*row[101] = msb_col101;
let mid_limbs_set_tmp_c1b19_96 =
memory_id_to_big_value_tmp_c1b19_94.get_m31(20).eq(M31_511);
((memory_id_to_big_value_tmp_c1b19_94.get_m31(20).eq(M31_511))
& (msb_tmp_c1b19_95));
let mid_limbs_set_col102 = mid_limbs_set_tmp_c1b19_96.as_m31();
*row[102] = mid_limbs_set_col102;
let cond_decode_small_sign_output_tmp_c1b19_97 = [msb_col101, mid_limbs_set_col102];
let decode_small_sign_output_tmp_c1b19_97 = [msb_col101, mid_limbs_set_col102];

let offsets_c_limb_0_col103 = memory_id_to_big_value_tmp_c1b19_94.get_m31(0);
*row[103] = offsets_c_limb_0_col103;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -323,16 +323,17 @@ fn write_trace_simd(
let memory_id_to_big_value_tmp_756b7_14 =
memory_id_to_big_state.deduce_output(dst_id_col14);

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_756b7_15 = memory_id_to_big_value_tmp_756b7_14.get_m31(27).eq(M31_256);
let msb_col15 = msb_tmp_756b7_15.as_m31();
*row[15] = msb_col15;
let mid_limbs_set_tmp_756b7_16 =
memory_id_to_big_value_tmp_756b7_14.get_m31(20).eq(M31_511);
((memory_id_to_big_value_tmp_756b7_14.get_m31(20).eq(M31_511))
& (msb_tmp_756b7_15));
let mid_limbs_set_col16 = mid_limbs_set_tmp_756b7_16.as_m31();
*row[16] = mid_limbs_set_col16;
let cond_decode_small_sign_output_tmp_756b7_17 = [msb_col15, mid_limbs_set_col16];
let decode_small_sign_output_tmp_756b7_17 = [msb_col15, mid_limbs_set_col16];

let dst_limb_0_col17 = memory_id_to_big_value_tmp_756b7_14.get_m31(0);
*row[17] = dst_limb_0_col17;
Expand Down Expand Up @@ -414,16 +415,17 @@ fn write_trace_simd(
let memory_id_to_big_value_tmp_756b7_24 =
memory_id_to_big_state.deduce_output(op0_id_col22);

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_756b7_25 = memory_id_to_big_value_tmp_756b7_24.get_m31(27).eq(M31_256);
let msb_col23 = msb_tmp_756b7_25.as_m31();
*row[23] = msb_col23;
let mid_limbs_set_tmp_756b7_26 =
memory_id_to_big_value_tmp_756b7_24.get_m31(20).eq(M31_511);
((memory_id_to_big_value_tmp_756b7_24.get_m31(20).eq(M31_511))
& (msb_tmp_756b7_25));
let mid_limbs_set_col24 = mid_limbs_set_tmp_756b7_26.as_m31();
*row[24] = mid_limbs_set_col24;
let cond_decode_small_sign_output_tmp_756b7_27 = [msb_col23, mid_limbs_set_col24];
let decode_small_sign_output_tmp_756b7_27 = [msb_col23, mid_limbs_set_col24];

let op0_limb_0_col25 = memory_id_to_big_value_tmp_756b7_24.get_m31(0);
*row[25] = op0_limb_0_col25;
Expand Down Expand Up @@ -505,16 +507,17 @@ fn write_trace_simd(
let memory_id_to_big_value_tmp_756b7_34 =
memory_id_to_big_state.deduce_output(op1_id_col30);

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_756b7_35 = memory_id_to_big_value_tmp_756b7_34.get_m31(27).eq(M31_256);
let msb_col31 = msb_tmp_756b7_35.as_m31();
*row[31] = msb_col31;
let mid_limbs_set_tmp_756b7_36 =
memory_id_to_big_value_tmp_756b7_34.get_m31(20).eq(M31_511);
((memory_id_to_big_value_tmp_756b7_34.get_m31(20).eq(M31_511))
& (msb_tmp_756b7_35));
let mid_limbs_set_col32 = mid_limbs_set_tmp_756b7_36.as_m31();
*row[32] = mid_limbs_set_col32;
let cond_decode_small_sign_output_tmp_756b7_37 = [msb_col31, mid_limbs_set_col32];
let decode_small_sign_output_tmp_756b7_37 = [msb_col31, mid_limbs_set_col32];

let op1_limb_0_col33 = memory_id_to_big_value_tmp_756b7_34.get_m31(0);
*row[33] = op1_limb_0_col33;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -393,16 +393,17 @@ fn write_trace_simd(
let memory_id_to_big_value_tmp_9db06_19 =
memory_id_to_big_state.deduce_output(distance_to_next_pc_id_col15);

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_9db06_20 = memory_id_to_big_value_tmp_9db06_19.get_m31(27).eq(M31_256);
let msb_col16 = msb_tmp_9db06_20.as_m31();
*row[16] = msb_col16;
let mid_limbs_set_tmp_9db06_21 =
memory_id_to_big_value_tmp_9db06_19.get_m31(20).eq(M31_511);
((memory_id_to_big_value_tmp_9db06_19.get_m31(20).eq(M31_511))
& (msb_tmp_9db06_20));
let mid_limbs_set_col17 = mid_limbs_set_tmp_9db06_21.as_m31();
*row[17] = mid_limbs_set_col17;
let cond_decode_small_sign_output_tmp_9db06_22 = [msb_col16, mid_limbs_set_col17];
let decode_small_sign_output_tmp_9db06_22 = [msb_col16, mid_limbs_set_col17];

let distance_to_next_pc_limb_0_col18 =
memory_id_to_big_value_tmp_9db06_19.get_m31(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -708,11 +708,11 @@ verify_instruction_state: &verify_instruction::ClaimGenerator,

// Cond Felt 252 As Rel Imm.

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_57455_94 = res_limb_27_col224.eq(M31_256);let msb_col229 = msb_tmp_57455_94.as_m31();
*row[229] = msb_col229;let mid_limbs_set_tmp_57455_95 = res_limb_20_col217.eq(M31_511);let mid_limbs_set_col230 = mid_limbs_set_tmp_57455_95.as_m31();
*row[230] = mid_limbs_set_col230;let cond_decode_small_sign_output_tmp_57455_96 = [msb_col229, mid_limbs_set_col230];
*row[229] = msb_col229;let mid_limbs_set_tmp_57455_95 = ((res_limb_20_col217.eq(M31_511)) & (msb_tmp_57455_94));let mid_limbs_set_col230 = mid_limbs_set_tmp_57455_95.as_m31();
*row[230] = mid_limbs_set_col230;let decode_small_sign_output_tmp_57455_96 = [msb_col229, mid_limbs_set_col230];

let remainder_bits_tmp_57455_97 = ((res_limb_3_col200) - (((mid_limbs_set_col230) * (M31_508))));

Expand All @@ -730,11 +730,11 @@ verify_instruction_state: &verify_instruction::ClaimGenerator,

// Cond Felt 252 As Rel Imm.

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_57455_106 = op1_limb_27_col111.eq(M31_256);let msb_col235 = msb_tmp_57455_106.as_m31();
*row[235] = msb_col235;let mid_limbs_set_tmp_57455_107 = op1_limb_20_col104.eq(M31_511);let mid_limbs_set_col236 = mid_limbs_set_tmp_57455_107.as_m31();
*row[236] = mid_limbs_set_col236;let cond_decode_small_sign_output_tmp_57455_108 = [msb_col235, mid_limbs_set_col236];
*row[235] = msb_col235;let mid_limbs_set_tmp_57455_107 = ((op1_limb_20_col104.eq(M31_511)) & (msb_tmp_57455_106));let mid_limbs_set_col236 = mid_limbs_set_tmp_57455_107.as_m31();
*row[236] = mid_limbs_set_col236;let decode_small_sign_output_tmp_57455_108 = [msb_col235, mid_limbs_set_col236];

let remainder_bits_tmp_57455_109 = ((op1_limb_3_col87) - (((mid_limbs_set_col236) * (M31_508))));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -424,16 +424,17 @@ fn write_trace_simd(
let memory_id_to_big_value_tmp_f51a9_17 =
memory_id_to_big_state.deduce_output(next_pc_id_col38);

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_f51a9_18 = memory_id_to_big_value_tmp_f51a9_17.get_m31(27).eq(M31_256);
let msb_col39 = msb_tmp_f51a9_18.as_m31();
*row[39] = msb_col39;
let mid_limbs_set_tmp_f51a9_19 =
memory_id_to_big_value_tmp_f51a9_17.get_m31(20).eq(M31_511);
((memory_id_to_big_value_tmp_f51a9_17.get_m31(20).eq(M31_511))
& (msb_tmp_f51a9_18));
let mid_limbs_set_col40 = mid_limbs_set_tmp_f51a9_19.as_m31();
*row[40] = mid_limbs_set_col40;
let cond_decode_small_sign_output_tmp_f51a9_20 = [msb_col39, mid_limbs_set_col40];
let decode_small_sign_output_tmp_f51a9_20 = [msb_col39, mid_limbs_set_col40];

let next_pc_limb_0_col41 = memory_id_to_big_value_tmp_f51a9_17.get_m31(0);
*row[41] = next_pc_limb_0_col41;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,16 +256,17 @@ fn write_trace_simd(
let memory_id_to_big_value_tmp_62dfc_8 =
memory_id_to_big_state.deduce_output(next_pc_id_col7);

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_62dfc_9 = memory_id_to_big_value_tmp_62dfc_8.get_m31(27).eq(M31_256);
let msb_col8 = msb_tmp_62dfc_9.as_m31();
*row[8] = msb_col8;
let mid_limbs_set_tmp_62dfc_10 =
memory_id_to_big_value_tmp_62dfc_8.get_m31(20).eq(M31_511);
((memory_id_to_big_value_tmp_62dfc_8.get_m31(20).eq(M31_511))
& (msb_tmp_62dfc_9));
let mid_limbs_set_col9 = mid_limbs_set_tmp_62dfc_10.as_m31();
*row[9] = mid_limbs_set_col9;
let cond_decode_small_sign_output_tmp_62dfc_11 = [msb_col8, mid_limbs_set_col9];
let decode_small_sign_output_tmp_62dfc_11 = [msb_col8, mid_limbs_set_col9];

let next_pc_limb_0_col10 = memory_id_to_big_value_tmp_62dfc_8.get_m31(0);
*row[10] = next_pc_limb_0_col10;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -213,16 +213,17 @@ fn write_trace_simd(
let memory_id_to_big_value_tmp_81a39_6 =
memory_id_to_big_state.deduce_output(next_pc_id_col4);

// Cond Decode Small Sign.
// Decode Small Sign.

let msb_tmp_81a39_7 = memory_id_to_big_value_tmp_81a39_6.get_m31(27).eq(M31_256);
let msb_col5 = msb_tmp_81a39_7.as_m31();
*row[5] = msb_col5;
let mid_limbs_set_tmp_81a39_8 =
memory_id_to_big_value_tmp_81a39_6.get_m31(20).eq(M31_511);
((memory_id_to_big_value_tmp_81a39_6.get_m31(20).eq(M31_511))
& (msb_tmp_81a39_7));
let mid_limbs_set_col6 = mid_limbs_set_tmp_81a39_8.as_m31();
*row[6] = mid_limbs_set_col6;
let cond_decode_small_sign_output_tmp_81a39_9 = [msb_col5, mid_limbs_set_col6];
let decode_small_sign_output_tmp_81a39_9 = [msb_col5, mid_limbs_set_col6];

let next_pc_limb_0_col7 = memory_id_to_big_value_tmp_81a39_6.get_m31(0);
*row[7] = next_pc_limb_0_col7;
Expand Down
Loading
Loading