@@ -9,7 +9,7 @@ use openvm_circuit::{
99use openvm_instructions:: { instruction:: Instruction , program:: DEFAULT_PC_STEP , LocalOpcode } ;
1010use 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} ;
1515use 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 }
0 commit comments