From 86a797b1db1fd2ed18147c17f50518ee1a9cbfdf Mon Sep 17 00:00:00 2001 From: Daniel Lubarov Date: Sat, 30 Jul 2022 22:24:11 -0700 Subject: [PATCH 1/4] Add a asm/curve/ directory --- evm/src/cpu/kernel/aggregator.rs | 20 +++++++++---------- .../asm/{ => curve/bn254}/curve_add.asm | 0 .../asm/{ => curve/bn254}/curve_mul.asm | 13 ------------ .../kernel/asm/{ => curve/bn254}/moddiv.asm | 0 evm/src/cpu/kernel/asm/curve/common.asm | 12 +++++++++++ .../asm/{ => curve}/secp256k1/curve_add.asm | 0 .../asm/{ => curve}/secp256k1/curve_mul.asm | 0 .../{ => curve}/secp256k1/inverse_scalar.asm | 0 .../asm/{ => curve}/secp256k1/lift_x.asm | 0 .../asm/{ => curve}/secp256k1/moddiv.asm | 0 10 files changed, 22 insertions(+), 23 deletions(-) rename evm/src/cpu/kernel/asm/{ => curve/bn254}/curve_add.asm (100%) rename evm/src/cpu/kernel/asm/{ => curve/bn254}/curve_mul.asm (92%) rename evm/src/cpu/kernel/asm/{ => curve/bn254}/moddiv.asm (100%) create mode 100644 evm/src/cpu/kernel/asm/curve/common.asm rename evm/src/cpu/kernel/asm/{ => curve}/secp256k1/curve_add.asm (100%) rename evm/src/cpu/kernel/asm/{ => curve}/secp256k1/curve_mul.asm (100%) rename evm/src/cpu/kernel/asm/{ => curve}/secp256k1/inverse_scalar.asm (100%) rename evm/src/cpu/kernel/asm/{ => curve}/secp256k1/lift_x.asm (100%) rename evm/src/cpu/kernel/asm/{ => curve}/secp256k1/moddiv.asm (100%) diff --git a/evm/src/cpu/kernel/aggregator.rs b/evm/src/cpu/kernel/aggregator.rs index 75e7e0ac..e1efeaa1 100644 --- a/evm/src/cpu/kernel/aggregator.rs +++ b/evm/src/cpu/kernel/aggregator.rs @@ -48,17 +48,18 @@ pub(crate) fn combined_kernel() -> Kernel { let files = vec![ include_str!("asm/assertions.asm"), include_str!("asm/basic_macros.asm"), + include_str!("asm/curve/bn254/curve_mul.asm"), + include_str!("asm/curve/bn254/curve_add.asm"), + include_str!("asm/curve/bn254/moddiv.asm"), + include_str!("asm/curve/common.asm"), + include_str!("asm/curve/secp256k1/curve_mul.asm"), + include_str!("asm/curve/secp256k1/curve_add.asm"), + include_str!("asm/curve/secp256k1/moddiv.asm"), + include_str!("asm/curve/secp256k1/lift_x.asm"), + include_str!("asm/curve/secp256k1/inverse_scalar.asm"), include_str!("asm/exp.asm"), - include_str!("asm/curve_mul.asm"), - include_str!("asm/curve_add.asm"), include_str!("asm/halt.asm"), include_str!("asm/memory.asm"), - include_str!("asm/moddiv.asm"), - include_str!("asm/secp256k1/curve_mul.asm"), - include_str!("asm/secp256k1/curve_add.asm"), - include_str!("asm/secp256k1/moddiv.asm"), - include_str!("asm/secp256k1/lift_x.asm"), - include_str!("asm/secp256k1/inverse_scalar.asm"), include_str!("asm/ecrecover.asm"), include_str!("asm/rlp/encode.asm"), include_str!("asm/rlp/decode.asm"), @@ -90,7 +91,6 @@ mod tests { // Make sure we can parse and assemble the entire kernel. let kernel = combined_kernel(); - debug!("Total kernel size: {} bytes", kernel.code.len()); - dbg!("Total kernel size: {} bytes", kernel.code.len()); + info!("Total kernel size: {} bytes", kernel.code.len()); } } diff --git a/evm/src/cpu/kernel/asm/curve_add.asm b/evm/src/cpu/kernel/asm/curve/bn254/curve_add.asm similarity index 100% rename from evm/src/cpu/kernel/asm/curve_add.asm rename to evm/src/cpu/kernel/asm/curve/bn254/curve_add.asm diff --git a/evm/src/cpu/kernel/asm/curve_mul.asm b/evm/src/cpu/kernel/asm/curve/bn254/curve_mul.asm similarity index 92% rename from evm/src/cpu/kernel/asm/curve_mul.asm rename to evm/src/cpu/kernel/asm/curve/bn254/curve_mul.asm index d976d9d5..62cf2235 100644 --- a/evm/src/cpu/kernel/asm/curve_mul.asm +++ b/evm/src/cpu/kernel/asm/curve/bn254/curve_mul.asm @@ -99,16 +99,3 @@ odd_scalar: JUMPDEST // stack: x', y', x, y, retdest %jump(ec_add_valid_points) - -global ret_zero_ec_mul: - JUMPDEST - // stack: x, y, s, retdest - %pop3 - // stack: retdest - PUSH 0 - // stack: 0, retdest - PUSH 0 - // stack: 0, 0, retdest - SWAP2 - // stack: retdest, 0, 0 - JUMP diff --git a/evm/src/cpu/kernel/asm/moddiv.asm b/evm/src/cpu/kernel/asm/curve/bn254/moddiv.asm similarity index 100% rename from evm/src/cpu/kernel/asm/moddiv.asm rename to evm/src/cpu/kernel/asm/curve/bn254/moddiv.asm diff --git a/evm/src/cpu/kernel/asm/curve/common.asm b/evm/src/cpu/kernel/asm/curve/common.asm new file mode 100644 index 00000000..107dc63c --- /dev/null +++ b/evm/src/cpu/kernel/asm/curve/common.asm @@ -0,0 +1,12 @@ +global ret_zero_ec_mul: + JUMPDEST + // stack: x, y, s, retdest + %pop3 + // stack: retdest + PUSH 0 + // stack: 0, retdest + PUSH 0 + // stack: 0, 0, retdest + SWAP2 + // stack: retdest, 0, 0 + JUMP diff --git a/evm/src/cpu/kernel/asm/secp256k1/curve_add.asm b/evm/src/cpu/kernel/asm/curve/secp256k1/curve_add.asm similarity index 100% rename from evm/src/cpu/kernel/asm/secp256k1/curve_add.asm rename to evm/src/cpu/kernel/asm/curve/secp256k1/curve_add.asm diff --git a/evm/src/cpu/kernel/asm/secp256k1/curve_mul.asm b/evm/src/cpu/kernel/asm/curve/secp256k1/curve_mul.asm similarity index 100% rename from evm/src/cpu/kernel/asm/secp256k1/curve_mul.asm rename to evm/src/cpu/kernel/asm/curve/secp256k1/curve_mul.asm diff --git a/evm/src/cpu/kernel/asm/secp256k1/inverse_scalar.asm b/evm/src/cpu/kernel/asm/curve/secp256k1/inverse_scalar.asm similarity index 100% rename from evm/src/cpu/kernel/asm/secp256k1/inverse_scalar.asm rename to evm/src/cpu/kernel/asm/curve/secp256k1/inverse_scalar.asm diff --git a/evm/src/cpu/kernel/asm/secp256k1/lift_x.asm b/evm/src/cpu/kernel/asm/curve/secp256k1/lift_x.asm similarity index 100% rename from evm/src/cpu/kernel/asm/secp256k1/lift_x.asm rename to evm/src/cpu/kernel/asm/curve/secp256k1/lift_x.asm diff --git a/evm/src/cpu/kernel/asm/secp256k1/moddiv.asm b/evm/src/cpu/kernel/asm/curve/secp256k1/moddiv.asm similarity index 100% rename from evm/src/cpu/kernel/asm/secp256k1/moddiv.asm rename to evm/src/cpu/kernel/asm/curve/secp256k1/moddiv.asm From f49170a8b8c3c0b87080fb4a8d851aa0833f4f4e Mon Sep 17 00:00:00 2001 From: Daniel Lubarov Date: Sat, 30 Jul 2022 22:31:07 -0700 Subject: [PATCH 2/4] fix --- evm/src/cpu/kernel/aggregator.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/evm/src/cpu/kernel/aggregator.rs b/evm/src/cpu/kernel/aggregator.rs index e1efeaa1..960ac371 100644 --- a/evm/src/cpu/kernel/aggregator.rs +++ b/evm/src/cpu/kernel/aggregator.rs @@ -85,12 +85,12 @@ mod tests { #[test] fn make_kernel() { - let _ = env_logger::Builder::from_default_env() - .format_timestamp(None) - .try_init(); + env_logger::init_from_env( + env_logger::Env::default().filter_or(env_logger::DEFAULT_FILTER_ENV, "debug"), + ); // Make sure we can parse and assemble the entire kernel. let kernel = combined_kernel(); - info!("Total kernel size: {} bytes", kernel.code.len()); + debug!("Total kernel size: {} bytes", kernel.code.len()); } } From 56d814e467f51b4b6da3e5c5339aed82db54b5eb Mon Sep 17 00:00:00 2001 From: Daniel Lubarov Date: Sun, 31 Jul 2022 09:22:13 -0700 Subject: [PATCH 3/4] fix --- evm/src/cpu/kernel/aggregator.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/evm/src/cpu/kernel/aggregator.rs b/evm/src/cpu/kernel/aggregator.rs index 960ac371..7f45b272 100644 --- a/evm/src/cpu/kernel/aggregator.rs +++ b/evm/src/cpu/kernel/aggregator.rs @@ -79,15 +79,14 @@ pub(crate) fn combined_kernel() -> Kernel { #[cfg(test)] mod tests { + use env_logger::{try_init_from_env, Env, DEFAULT_FILTER_ENV}; use log::debug; use crate::cpu::kernel::aggregator::combined_kernel; #[test] fn make_kernel() { - env_logger::init_from_env( - env_logger::Env::default().filter_or(env_logger::DEFAULT_FILTER_ENV, "debug"), - ); + let _ = try_init_from_env(Env::default().filter_or(DEFAULT_FILTER_ENV, "debug")); // Make sure we can parse and assemble the entire kernel. let kernel = combined_kernel(); From 718b3c0961279c9e244712addcba8a86eb5a7b2e Mon Sep 17 00:00:00 2001 From: Daniel Lubarov Date: Sun, 31 Jul 2022 09:24:04 -0700 Subject: [PATCH 4/4] Move ecrecover --- evm/src/cpu/kernel/aggregator.rs | 8 ++++---- .../cpu/kernel/asm/{ => curve/secp256k1}/ecrecover.asm | 0 2 files changed, 4 insertions(+), 4 deletions(-) rename evm/src/cpu/kernel/asm/{ => curve/secp256k1}/ecrecover.asm (100%) diff --git a/evm/src/cpu/kernel/aggregator.rs b/evm/src/cpu/kernel/aggregator.rs index 7f45b272..196341f9 100644 --- a/evm/src/cpu/kernel/aggregator.rs +++ b/evm/src/cpu/kernel/aggregator.rs @@ -48,19 +48,19 @@ pub(crate) fn combined_kernel() -> Kernel { let files = vec![ include_str!("asm/assertions.asm"), include_str!("asm/basic_macros.asm"), - include_str!("asm/curve/bn254/curve_mul.asm"), include_str!("asm/curve/bn254/curve_add.asm"), + include_str!("asm/curve/bn254/curve_mul.asm"), include_str!("asm/curve/bn254/moddiv.asm"), include_str!("asm/curve/common.asm"), include_str!("asm/curve/secp256k1/curve_mul.asm"), include_str!("asm/curve/secp256k1/curve_add.asm"), - include_str!("asm/curve/secp256k1/moddiv.asm"), - include_str!("asm/curve/secp256k1/lift_x.asm"), + include_str!("asm/curve/secp256k1/ecrecover.asm"), include_str!("asm/curve/secp256k1/inverse_scalar.asm"), + include_str!("asm/curve/secp256k1/lift_x.asm"), + include_str!("asm/curve/secp256k1/moddiv.asm"), include_str!("asm/exp.asm"), include_str!("asm/halt.asm"), include_str!("asm/memory.asm"), - include_str!("asm/ecrecover.asm"), include_str!("asm/rlp/encode.asm"), include_str!("asm/rlp/decode.asm"), include_str!("asm/rlp/read_to_memory.asm"), diff --git a/evm/src/cpu/kernel/asm/ecrecover.asm b/evm/src/cpu/kernel/asm/curve/secp256k1/ecrecover.asm similarity index 100% rename from evm/src/cpu/kernel/asm/ecrecover.asm rename to evm/src/cpu/kernel/asm/curve/secp256k1/ecrecover.asm