From 392c29f41216eee628a467f58dd5194a8c1fce76 Mon Sep 17 00:00:00 2001 From: Dmitry Vagner Date: Tue, 21 Mar 2023 21:16:19 -0700 Subject: [PATCH] compiles --- evm/src/generation/prover_input.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/evm/src/generation/prover_input.rs b/evm/src/generation/prover_input.rs index 69e2f63d..e25d11b4 100644 --- a/evm/src/generation/prover_input.rs +++ b/evm/src/generation/prover_input.rs @@ -60,19 +60,25 @@ impl GenerationState { /// Special finite field operations. fn run_sf(&self, input_fn: &ProverInputFn) -> U256 { let field = EvmField::from_str(input_fn.0[1].as_str()).unwrap(); - let op = FieldOp::from_str(input_fn.0[2].as_str()).unwrap(); - let ptr = stack_peek(self, 11 - n).expect("Empty stack").as_usize(); - let xs: [U256; 4] = match field { + let inputs: [U256; 4] = match field { Bn254Base => { - let mut xs: [U256; 4] = [U256::zero(); 4]; + let mut inputs: [U256; 4] = [U256::zero(); 4]; for i in 0..4 { - xs[i] = kernel_peek(self, BnPairing, ptr + i); + inputs[i] = stack_peek(self, i).expect("Empty stack"); } - xs + inputs } _ => todo!(), }; - field.op(op, xs) + match input_fn.0[2].as_str() { + "add_lo" => field.add_lo(inputs), + "add_hi" => field.add_hi(inputs), + "mul_lo" => field.mul_lo(inputs), + "mul_hi" => field.mul_hi(inputs), + "sub_lo" => field.sub_lo(inputs), + "sub_hi" => field.sub_hi(inputs), + _ => todo!(), + } } /// Finite field extension operations.