Skip to content

Commit b6d2fcf

Browse files
committed
Remove multi observe logic from poseidon2 chip
1 parent 704de9d commit b6d2fcf

File tree

2 files changed

+2
-40
lines changed

2 files changed

+2
-40
lines changed

extensions/native/circuit/src/poseidon2/chip.rs

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use openvm_circuit::{
99
use openvm_instructions::{instruction::Instruction, program::DEFAULT_PC_STEP, LocalOpcode};
1010
use openvm_native_compiler::{
1111
conversion::AS,
12-
Poseidon2Opcode::{COMP_POS2, PERM_POS2, MULTI_OBSERVE},
12+
Poseidon2Opcode::{COMP_POS2, PERM_POS2},
1313
VerifyBatchOpcode::VERIFY_BATCH,
1414
};
1515
use openvm_poseidon2_air::{Poseidon2Config, Poseidon2SubAir, Poseidon2SubChip};
@@ -485,43 +485,6 @@ impl<F: PrimeField32, const SBOX_REGISTERS: usize> InstructionExecutor<F>
485485
initial_log_height: initial_log_height as usize,
486486
top_level,
487487
});
488-
} else if instruction.opcode == MULTI_OBSERVE.global_opcode() {
489-
let &Instruction {
490-
a: output_register,
491-
b: input_register_1,
492-
c: input_register_2,
493-
d: data_address_space,
494-
e: register_address_space,
495-
f: input_register_3,
496-
..
497-
} = instruction;
498-
499-
let (_, sponge_ptr) = memory.read_cell(register_address_space, output_register);
500-
let (_, arr_ptr) = memory.read_cell(register_address_space, input_register_2);
501-
502-
let init_pos_read = memory.read_cell(register_address_space, input_register_1);
503-
let mut pos = init_pos_read.1.as_canonical_u32() as usize;
504-
505-
let len_read = memory.read_cell(register_address_space, input_register_3);
506-
let len = len_read.1.as_canonical_u32() as usize;
507-
508-
for i in 0..len {
509-
let mod_pos = pos % CHUNK;
510-
let n_read = memory.read_cell(data_address_space, arr_ptr + F::from_canonical_usize(i));
511-
let n_f = n_read.1;
512-
513-
memory.write_cell(data_address_space, sponge_ptr + F::from_canonical_usize(mod_pos), n_f);
514-
pos += 1;
515-
516-
if pos % CHUNK == 0 {
517-
let (_, sponge_state) = memory.read::<{CHUNK * 2}>(data_address_space, sponge_ptr);
518-
let output = self.subchip.permute(sponge_state);
519-
memory.write::<{CHUNK * 2}>(data_address_space, sponge_ptr, std::array::from_fn(|i| output[i]));
520-
}
521-
}
522-
523-
let mod_pos = pos % CHUNK;
524-
memory.write_cell(register_address_space, input_register_1, F::from_canonical_usize(mod_pos));
525488
} else {
526489
unreachable!()
527490
}
@@ -538,8 +501,6 @@ impl<F: PrimeField32, const SBOX_REGISTERS: usize> InstructionExecutor<F>
538501
String::from("PERM_POS2")
539502
} else if opcode == COMP_POS2.global_opcode().as_usize() {
540503
String::from("COMP_POS2")
541-
} else if opcode == MULTI_OBSERVE.global_opcode().as_usize() {
542-
String::from("MULTI_OBSERVE")
543504
} else {
544505
unreachable!("unsupported opcode: {}", opcode)
545506
}

vm_run_output.log

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
error: package ID specification `ceno-recursion-verifier` did not match any packages

0 commit comments

Comments
 (0)