diff --git a/extensions/native/circuit/src/sumcheck/execution.rs b/extensions/native/circuit/src/sumcheck/execution.rs index 92bd3ed1aa..a311e634b8 100644 --- a/extensions/native/circuit/src/sumcheck/execution.rs +++ b/extensions/native/circuit/src/sumcheck/execution.rs @@ -247,15 +247,19 @@ unsafe fn execute_e12_impl( ); if round < max_round - 1 { - let ps: &[F] = if is_hint_space_ids > 0 { - &prod_evals[(start as usize)..(start as usize) + EXT_DEG * 2] + let ps: [F; EXT_DEG * 2] = if is_hint_space_ids > 0 { + prod_evals[(start as usize)..(start as usize) + EXT_DEG * 2].try_into().unwrap() } else { - &exec_state.vm_read::<_, { EXT_DEG * 2 }>(NATIVE_AS, prod_evals_ptr + start) + exec_state.vm_read::<_, { EXT_DEG * 2 }>(NATIVE_AS, prod_evals_ptr + start).try_into().unwrap() }; let p1: [F; EXT_DEG] = ps[0..EXT_DEG].try_into().unwrap(); let p2: [F; EXT_DEG] = ps[EXT_DEG..EXT_DEG * 2].try_into().unwrap(); + if is_hint_space_ids > 0 { + exec_state.vm_write(NATIVE_AS, prod_evals_ptr + start, &ps); + } + let eval = match mode { CURRENT_LAYER_MODE => FieldExtension::multiply(p1, p2), NEXT_LAYER_MODE => FieldExtension::add( @@ -293,16 +297,20 @@ unsafe fn execute_e12_impl( if round < max_round - 1 { // read logup_evals - let pqs: &[F] = if is_hint_space_ids > 0 { - &logup_evals[(start as usize)..(start as usize) + EXT_DEG * 4] + let pqs: [F; EXT_DEG * 4] = if is_hint_space_ids > 0 { + logup_evals[(start as usize)..(start as usize) + EXT_DEG * 4].try_into().unwrap() } else { - &exec_state.vm_read::<_, { EXT_DEG * 4 }>(NATIVE_AS, logup_evals_ptr + start) + exec_state.vm_read::<_, { EXT_DEG * 4 }>(NATIVE_AS, logup_evals_ptr + start).try_into().unwrap() }; let p1: [F; EXT_DEG] = pqs[0..EXT_DEG].try_into().unwrap(); let p2: [F; EXT_DEG] = pqs[EXT_DEG..EXT_DEG * 2].try_into().unwrap(); let q1: [F; EXT_DEG] = pqs[EXT_DEG * 2..EXT_DEG * 3].try_into().unwrap(); let q2: [F; EXT_DEG] = pqs[EXT_DEG * 3..EXT_DEG * 4].try_into().unwrap(); + if is_hint_space_ids > 0 { + exec_state.vm_write(NATIVE_AS, logup_evals_ptr + start, &pqs); + } + // compute p_eval and q_eval let p_eval = match mode { CURRENT_LAYER_MODE => FieldExtension::add(