Skip to content

evmmax: Poseidon hash amd Falcon primitive nttfw implementation in EVMMAX [DO NOT MERGE] #1126

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 13 commits into
base: master
Choose a base branch
from

Conversation

rodiazet
Copy link
Contributor

@rodiazet rodiazet commented Feb 7, 2025

This PR implements Poseidon hash and Falcon signature primitive nttfw using EVMMAX opcodes. This is a PoC PR which is not going to be merged.

Depends on: #1120

Poseidon

There are 4 different versions of poseidon hash function implemented basing on Poseidon.sol

  1. poseidon Legacy non-vectorised, constants are initialised via stack.
    1. bytecode size 19kb
    2. Total gas cost 4 683 gas (Constants initialization cost 1 763 gas)
  2. poseidon_datacopy EOF non-vectorised, constants are initialised via datacopy from data section.
    1. bytecode size 18kb
    2. Total gas cost 4 287 gas (Constants initialization cost 1377 gas)
  3. poseidon_vec Legacy vectorised, constants are initialised via stack.
    1. bytecode size 15kb
    2. Total gas cost 4 683 gas (Constants initialization cost 1763 gas)
  4. poseidon_vec_datacopy EOF vectorised, constants are initialised via datacopy from data section.
    1. bytecode size 14kb
    2. Total gas cost 4 287 gas (Constants initialization cost 1377 gas)

Falcon signature

There is also nttfw function implementation in EVMMAX with direct bytecode generation.

Total gas usage 5135 Gas. Bytecode size 11 846. Code is bigger than expected b/c we do not use callf and code sections ATM. This will allow code reusing and consequently smaller code size.

Important comments:

  • This PR also changes PUSH opcodes gas cost to 1 (previously 3). Following the discussion on EMV Gas Repricing WG. This change doesn't influence the total gas cost result so much especially for datacopy cases. On the other hand this change significantly decreased constants initialization costs for "via stack" cases.
  • EVMMAX gas model is simple and it charges 1gas for one pair addition and 2gas for one pair multiplication.
  • There is also an implementation of poseidon hash in solidity using PoC of EVMMAX opcodes support in yul and solidity inline assembly. Can be found here
  • Montgomery form is used only for values bigger than 32bits.
  • The EVMMAX gas model needs update to properly reflect cost for small numbers
    • It's updated for values of 16bit or smaller to 5/100 and 6/100 gas average per operation for addmodx and mulmodx accordingly. Benchmark results below.

Benchmarks:
Poseidon:

rodia@MacBook-Pro-2 evmone % build/bin/evmone-bench test/evmmax-precompiles/ --benchmark_filter=baseline/execute/poseidon --benchmark_repetitions=10
Unable to determine clock rate from sysctl: hw.cpufrequency: No such file or directory
This does not affect benchmark measurements, only the metadata output.
***WARNING*** Failed to set thread affinity. Estimated CPU frequency may be incorrect.
2025-02-13T11:44:19+01:00
Running build/bin/evmone-bench
Run on (12 X 24 MHz CPU s)
CPU Caches:
  L1 Data 64 KiB
  L1 Instruction 128 KiB
  L2 Unified 4096 KiB (x12)
Load Average: 2.68, 1.99, 2.24
--------------------------------------------------------------------------------------------------------------
Benchmark                                                    Time             CPU   Iterations UserCounters...
--------------------------------------------------------------------------------------------------------------
baseline/execute/poseidon/empty                           25.5 us         25.5 us        27572 gas_rate=183.666M/s gas_used=4.683k
baseline/execute/poseidon/empty                           25.5 us         25.5 us        27572 gas_rate=183.656M/s gas_used=4.683k
baseline/execute/poseidon/empty                           25.5 us         25.5 us        27572 gas_rate=183.705M/s gas_used=4.683k
baseline/execute/poseidon/empty                           25.4 us         25.4 us        27572 gas_rate=184.472M/s gas_used=4.683k
baseline/execute/poseidon/empty                           25.4 us         25.4 us        27572 gas_rate=184.573M/s gas_used=4.683k
baseline/execute/poseidon/empty                           25.4 us         25.3 us        27572 gas_rate=184.779M/s gas_used=4.683k
baseline/execute/poseidon/empty                           25.4 us         25.4 us        27572 gas_rate=184.16M/s gas_used=4.683k
baseline/execute/poseidon/empty                           24.9 us         24.9 us        27572 gas_rate=187.918M/s gas_used=4.683k
baseline/execute/poseidon/empty                           24.9 us         24.9 us        27572 gas_rate=188.351M/s gas_used=4.683k
baseline/execute/poseidon/empty                           24.9 us         24.9 us        27572 gas_rate=188.122M/s gas_used=4.683k
baseline/execute/poseidon/empty_mean                      25.3 us         25.3 us           10 gas_rate=185.34M/s gas_used=4.683k
baseline/execute/poseidon/empty_median                    25.4 us         25.4 us           10 gas_rate=184.523M/s gas_used=4.683k
baseline/execute/poseidon/empty_stddev                   0.269 us        0.266 us           10 gas_rate=1.96657M/s gas_used=0
baseline/execute/poseidon/empty_cv                        1.06 %          1.05 %            10 gas_rate=1.06% gas_used=0.00%
baseline/execute/poseidon_datacopy/empty                  23.9 us         23.9 us        29437 gas_rate=179.65M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty                  23.8 us         23.8 us        29437 gas_rate=180.013M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty                  23.8 us         23.8 us        29437 gas_rate=180.197M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty                  23.8 us         23.8 us        29437 gas_rate=180.018M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty                  23.9 us         23.8 us        29437 gas_rate=179.808M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty                  23.9 us         23.8 us        29437 gas_rate=180.004M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty                  23.9 us         23.8 us        29437 gas_rate=179.901M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty                  23.8 us         23.8 us        29437 gas_rate=180.248M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty                  23.8 us         23.8 us        29437 gas_rate=180.139M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty                  23.8 us         23.8 us        29437 gas_rate=180.005M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty_mean             23.8 us         23.8 us           10 gas_rate=179.998M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty_median           23.8 us         23.8 us           10 gas_rate=180.009M/s gas_used=4.287k
baseline/execute/poseidon_datacopy/empty_stddev          0.029 us        0.024 us           10 gas_rate=179.318k/s gas_used=0
baseline/execute/poseidon_datacopy/empty_cv               0.12 %          0.10 %            10 gas_rate=0.10% gas_used=0.00%
baseline/execute/poseidon_vec/empty                       22.9 us         22.9 us        30497 gas_rate=204.729M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty                       22.9 us         22.9 us        30497 gas_rate=204.671M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty                       22.9 us         22.8 us        30497 gas_rate=204.946M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty                       23.3 us         23.2 us        30497 gas_rate=201.554M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty                       24.0 us         23.8 us        30497 gas_rate=196.878M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty                       22.9 us         22.9 us        30497 gas_rate=204.721M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty                       22.9 us         22.9 us        30497 gas_rate=204.744M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty                       22.9 us         22.9 us        30497 gas_rate=204.808M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty                       22.9 us         22.9 us        30497 gas_rate=204.75M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty                       22.9 us         22.9 us        30497 gas_rate=204.81M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty_mean                  23.0 us         23.0 us           10 gas_rate=203.661M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty_median                22.9 us         22.9 us           10 gas_rate=204.737M/s gas_used=4.683k
baseline/execute/poseidon_vec/empty_stddev               0.368 us        0.300 us           10 gas_rate=2.59016M/s gas_used=0
baseline/execute/poseidon_vec/empty_cv                    1.60 %          1.30 %            10 gas_rate=1.27% gas_used=0.00%
baseline/execute/poseidon_vec_datacopy/empty              21.3 us         21.3 us        32305 gas_rate=201.713M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty              21.3 us         21.3 us        32305 gas_rate=201.451M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty              21.3 us         21.3 us        32305 gas_rate=201.354M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty              21.3 us         21.3 us        32305 gas_rate=201.264M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty              21.3 us         21.3 us        32305 gas_rate=201.062M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty              21.3 us         21.3 us        32305 gas_rate=201.222M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty              22.3 us         22.2 us        32305 gas_rate=193.035M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty              22.3 us         22.1 us        32305 gas_rate=194.032M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty              21.8 us         21.8 us        32305 gas_rate=197.004M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty              21.8 us         21.7 us        32305 gas_rate=197.196M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty_mean         21.6 us         21.6 us           10 gas_rate=198.933M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty_median       21.3 us         21.3 us           10 gas_rate=201.142M/s gas_used=4.287k
baseline/execute/poseidon_vec_datacopy/empty_stddev      0.417 us        0.367 us           10 gas_rate=3.34476M/s gas_used=0
baseline/execute/poseidon_vec_datacopy/empty_cv           1.93 %          1.70 %            10 gas_rate=1.68% gas_used=0.00%

Histograms:

  1. poseidon
--- # HISTOGRAM depth=0
opcode,count
CALLDATACOPY,1
MSTORE,205
PUSH1,153
PUSH2,264
PUSH32,205
SETUPX,1
LOADX,1
STOREX,67
ADDMODX,585
MULMODX,828
RETURN,1
  1. poseidon_vec
--- # HISTOGRAM depth=0
opcode,count
CALLDATACOPY,1
MSTORE,1
PUSH1,148
PUSH2,71
PUSH32,1
SETUPX,1
LOADX,1
STOREX,67
ADDMODX,585
MULMODX,828
DATACOPY,2
RETURN,1
  1. poseidon_dataload
--- # HISTOGRAM depth=0
opcode,count
CALLDATACOPY,1
MSTORE,205
PUSH1,153
PUSH2,264
PUSH32,205
SETUPX,1
LOADX,1
STOREX,67
ADDMODX,455
MULMODX,438
RETURN,1
  1. poseidon_vec_dataload
--- # HISTOGRAM depth=0
opcode,count
CALLDATACOPY,1
MSTORE,1
PUSH1,148
PUSH2,71
PUSH32,1
SETUPX,1
LOADX,1
STOREX,67
ADDMODX,455
MULMODX,438
DATACOPY,2
RETURN,1

Falcon nttfw with fastmod lib:

rodia@MacBook-Pro-2 evmone % build/bin/evmone-bench test/evmmax-precompiles/ --benchmark_filter=baseline/execute/nttfw --benchmark_repetitions=10 
Unable to determine clock rate from sysctl: hw.cpufrequency: No such file or directory
This does not affect benchmark measurements, only the metadata output.
***WARNING*** Failed to set thread affinity. Estimated CPU frequency may be incorrect.
2025-04-02T15:37:12+02:00
Running build/bin/evmone-bench
Run on (12 X 24 MHz CPU s)
CPU Caches:
  L1 Data 64 KiB
  L1 Instruction 128 KiB
  L2 Unified 4096 KiB (x12)
Load Average: 2.31, 2.21, 2.14
----------------------------------------------------------------------------------------------
Benchmark                                    Time             CPU   Iterations UserCounters...
----------------------------------------------------------------------------------------------
baseline/execute/nttfw/empty              28.7 us         28.6 us        24375 gas_rate=179.426M/s gas_used=5.135k
baseline/execute/nttfw/empty              28.6 us         28.5 us        24375 gas_rate=179.985M/s gas_used=5.135k
baseline/execute/nttfw/empty              28.5 us         28.5 us        24375 gas_rate=180.398M/s gas_used=5.135k
baseline/execute/nttfw/empty              28.5 us         28.5 us        24375 gas_rate=180.353M/s gas_used=5.135k
baseline/execute/nttfw/empty              28.5 us         28.5 us        24375 gas_rate=180.455M/s gas_used=5.135k
baseline/execute/nttfw/empty              28.7 us         28.6 us        24375 gas_rate=179.542M/s gas_used=5.135k
baseline/execute/nttfw/empty              28.6 us         28.5 us        24375 gas_rate=179.871M/s gas_used=5.135k
baseline/execute/nttfw/empty              28.7 us         28.6 us        24375 gas_rate=179.358M/s gas_used=5.135k
baseline/execute/nttfw/empty              28.7 us         28.6 us        24375 gas_rate=179.476M/s gas_used=5.135k
baseline/execute/nttfw/empty              28.6 us         28.5 us        24375 gas_rate=179.913M/s gas_used=5.135k
baseline/execute/nttfw/empty_mean         28.6 us         28.5 us           10 gas_rate=179.878M/s gas_used=5.135k
baseline/execute/nttfw/empty_median       28.6 us         28.5 us           10 gas_rate=179.892M/s gas_used=5.135k
baseline/execute/nttfw/empty_stddev      0.063 us        0.067 us           10 gas_rate=420.377k/s gas_used=0
baseline/execute/nttfw/empty_cv           0.22 %          0.23 %            10 gas_rate=0.23% gas_used=0.00%

--- # HISTOGRAM depth=0
opcode,count
CALLDATACOPY,1
MSTORE8,2
PUSH1,1554
PUSH2,568
PUSH32,2
SETUPX,1
LOADX,280
STOREX,423
ADDMODX,228
SUBMODX,149
MULMODX,148
DATACOPY,1
CALLF,1
RETF,1
RETURN,1

More benchmarks

addmodx-single
addmodx-vec
mulmodx-single
mulmodx-vec
submodx-single
submodx-single

rodia@MacBook-Pro-2 evmone % build/bin/evmone-bench test/evmmax-precompiles/ --benchmark_filter=baseline/execute/evmmax --benchmark_repetitions=10
Unable to determine clock rate from sysctl: hw.cpufrequency: No such file or directory
This does not affect benchmark measurements, only the metadata output.
***WARNING*** Failed to set thread affinity. Estimated CPU frequency may be incorrect.
2025-04-02T15:36:19+02:00
Running build/bin/evmone-bench
Run on (12 X 24 MHz CPU s)
CPU Caches:
  L1 Data 64 KiB
  L1 Instruction 128 KiB
  L2 Unified 4096 KiB (x12)
Load Average: 2.41, 2.20, 2.13
--------------------------------------------------------------------------------------------------------------------
Benchmark                                                          Time             CPU   Iterations UserCounters...
--------------------------------------------------------------------------------------------------------------------
baseline/execute/evmmax-addmodx-bench-single/empty              10.7 us         10.7 us        65208 gas_rate=288.799M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty              10.8 us         10.7 us        65208 gas_rate=288.617M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty              10.8 us         10.7 us        65208 gas_rate=288.54M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty              10.7 us         10.7 us        65208 gas_rate=288.749M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty              10.8 us         10.7 us        65208 gas_rate=288.702M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty              10.8 us         10.7 us        65208 gas_rate=288.691M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty              10.8 us         10.7 us        65208 gas_rate=288.695M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty              10.7 us         10.7 us        65208 gas_rate=288.767M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty              10.7 us         10.7 us        65208 gas_rate=288.686M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty              10.7 us         10.7 us        65208 gas_rate=288.711M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty_mean         10.7 us         10.7 us           10 gas_rate=288.696M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty_median       10.7 us         10.7 us           10 gas_rate=288.698M/s gas_used=3.098k
baseline/execute/evmmax-addmodx-bench-single/empty_stddev      0.003 us        0.003 us           10 gas_rate=73.9311k/s gas_used=0
baseline/execute/evmmax-addmodx-bench-single/empty_cv           0.03 %          0.03 %            10 gas_rate=0.03% gas_used=0.00%
baseline/execute/evmmax-addmodx-bench-vec/empty                 32.2 us         32.2 us        21660 gas_rate=124.933M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty                 32.2 us         32.2 us        21660 gas_rate=125.013M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty                 32.2 us         32.2 us        21660 gas_rate=124.962M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty                 32.2 us         32.1 us        21660 gas_rate=125.089M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty                 32.2 us         32.1 us        21660 gas_rate=125.23M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty                 32.1 us         32.1 us        21660 gas_rate=125.312M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty                 32.1 us         32.1 us        21660 gas_rate=125.42M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty                 32.1 us         32.1 us        21660 gas_rate=125.389M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty                 32.1 us         32.1 us        21660 gas_rate=125.405M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty                 32.1 us         32.1 us        21660 gas_rate=125.438M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty_mean            32.2 us         32.1 us           10 gas_rate=125.219M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty_median          32.2 us         32.1 us           10 gas_rate=125.271M/s gas_used=4.021k
baseline/execute/evmmax-addmodx-bench-vec/empty_stddev         0.053 us        0.052 us           10 gas_rate=202.167k/s gas_used=0
baseline/execute/evmmax-addmodx-bench-vec/empty_cv              0.16 %          0.16 %            10 gas_rate=0.16% gas_used=0.00%
baseline/execute/evmmax-mulmodx-bench-single/empty              10.8 us         10.7 us        60865 gas_rate=288.329M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty              10.8 us         10.7 us        60865 gas_rate=288.538M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty              10.8 us         10.7 us        60865 gas_rate=288.639M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty              10.7 us         10.7 us        60865 gas_rate=288.744M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty              10.7 us         10.7 us        60865 gas_rate=288.734M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty              10.8 us         10.7 us        60865 gas_rate=288.746M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty              10.7 us         10.7 us        60865 gas_rate=288.739M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty              10.8 us         10.7 us        60865 gas_rate=288.186M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty              10.8 us         10.7 us        60865 gas_rate=288.413M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty              10.7 us         10.7 us        60865 gas_rate=288.773M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty_mean         10.8 us         10.7 us           10 gas_rate=288.584M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty_median       10.8 us         10.7 us           10 gas_rate=288.687M/s gas_used=3.098k
baseline/execute/evmmax-mulmodx-bench-single/empty_stddev      0.007 us        0.008 us           10 gas_rate=208.616k/s gas_used=0
baseline/execute/evmmax-mulmodx-bench-single/empty_cv           0.07 %          0.07 %            10 gas_rate=0.07% gas_used=0.00%
baseline/execute/evmmax-mulmodx-bench-vec/empty                 36.0 us         36.0 us        19417 gas_rate=122.75M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty                 35.9 us         35.9 us        19417 gas_rate=123.038M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty                 35.9 us         35.8 us        19417 gas_rate=123.23M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty                 35.8 us         35.8 us        19417 gas_rate=123.426M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty                 35.8 us         35.7 us        19417 gas_rate=123.505M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty                 35.8 us         35.8 us        19417 gas_rate=123.462M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty                 35.8 us         35.7 us        19417 gas_rate=123.567M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty                 35.7 us         35.6 us        19417 gas_rate=124.124M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty                 35.2 us         35.1 us        19417 gas_rate=125.632M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty                 35.2 us         35.2 us        19417 gas_rate=125.585M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty_mean            35.7 us         35.7 us           10 gas_rate=123.832M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty_median          35.8 us         35.8 us           10 gas_rate=123.484M/s gas_used=4.415k
baseline/execute/evmmax-mulmodx-bench-vec/empty_stddev         0.283 us        0.286 us           10 gas_rate=1.00214M/s gas_used=0
baseline/execute/evmmax-mulmodx-bench-vec/empty_cv              0.79 %          0.80 %            10 gas_rate=0.81% gas_used=0.00%
baseline/execute/evmmax-submodx-bench-single/empty              8.98 us         8.97 us        77844 gas_rate=345.547M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty              8.99 us         8.97 us        77844 gas_rate=345.263M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty              8.98 us         8.97 us        77844 gas_rate=345.465M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty              8.98 us         8.96 us        77844 gas_rate=345.629M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty              8.98 us         8.96 us        77844 gas_rate=345.629M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty              8.98 us         8.96 us        77844 gas_rate=345.645M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty              8.98 us         8.96 us        77844 gas_rate=345.657M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty              8.98 us         8.96 us        77844 gas_rate=345.628M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty              8.98 us         8.96 us        77844 gas_rate=345.653M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty              8.98 us         8.96 us        77844 gas_rate=345.567M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty_mean         8.98 us         8.96 us           10 gas_rate=345.568M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty_median       8.98 us         8.96 us           10 gas_rate=345.628M/s gas_used=3.098k
baseline/execute/evmmax-submodx-bench-single/empty_stddev      0.003 us        0.003 us           10 gas_rate=123.139k/s gas_used=0
baseline/execute/evmmax-submodx-bench-single/empty_cv           0.03 %          0.04 %            10 gas_rate=0.04% gas_used=0.00%
baseline/execute/evmmax-submodx-bench-vec/empty                 27.5 us         27.5 us        25407 gas_rate=147.59M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty                 27.5 us         27.4 us        25407 gas_rate=147.794M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty                 27.4 us         27.4 us        25407 gas_rate=147.969M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty                 27.4 us         27.4 us        25407 gas_rate=148.027M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty                 27.5 us         27.4 us        25407 gas_rate=147.933M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty                 27.4 us         27.3 us        25407 gas_rate=148.301M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty                 27.4 us         27.4 us        25407 gas_rate=148.172M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty                 27.3 us         27.3 us        25407 gas_rate=148.459M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty                 27.3 us         27.3 us        25407 gas_rate=148.636M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty                 27.3 us         27.3 us        25407 gas_rate=148.611M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty_mean            27.4 us         27.4 us           10 gas_rate=148.149M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty_median          27.4 us         27.4 us           10 gas_rate=148.099M/s gas_used=4.054k
baseline/execute/evmmax-submodx-bench-vec/empty_stddev         0.069 us        0.065 us           10 gas_rate=350.089k/s gas_used=0
baseline/execute/evmmax-submodx-bench-vec/empty_cv              0.25 %          0.24 %            10 gas_rate=0.24% gas_used=0.00%

Copy link

codecov bot commented Feb 7, 2025

Codecov Report

Attention: Patch coverage is 2.00000% with 686 lines in your changes missing coverage. Please review.

Project coverage is 29.78%. Comparing base (0175a1f) to head (55a677b).

Files with missing lines Patch % Lines
test/evmmax-precompiles/poseidon.cpp 0.00% 274 Missing ⚠️
lib/evmmax/evmmax.cpp 3.40% 142 Missing ⚠️
test/unittests/evmmax_test.cpp 3.15% 92 Missing ⚠️
lib/evmone/instructions.hpp 0.00% 81 Missing ⚠️
test/unittests/evmmax_instructions_test.cpp 5.47% 69 Missing ⚠️
test/utils/bytecode.hpp 0.00% 23 Missing ⚠️
lib/evmone/baseline_execution.cpp 0.00% 2 Missing ⚠️
test/unittests/eof_validation_test.cpp 0.00% 2 Missing ⚠️
test/unittests/instructions_test.cpp 0.00% 1 Missing ⚠️

❗ There is a different number of reports uploaded between BASE (0175a1f) and HEAD (55a677b). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (0175a1f) HEAD (55a677b)
unittests 1 0
Additional details and impacted files
@@             Coverage Diff             @@
##           master    #1126       +/-   ##
===========================================
- Coverage   94.37%   29.78%   -64.60%     
===========================================
  Files         162      165        +3     
  Lines       17687    18386      +699     
===========================================
- Hits        16692     5476    -11216     
- Misses        995    12910    +11915     
Flag Coverage Δ
eof_execution_spec_tests 15.26% <1.86%> (-0.53%) ⬇️
ethereum_tests 25.59% <1.86%> (-0.94%) ⬇️
ethereum_tests_silkpre 18.22% <2.60%> (-0.50%) ⬇️
execution_spec_tests 21.27% <1.86%> (-0.77%) ⬇️
unittests ?

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
include/evmmax/evmmax.hpp 100.00% <100.00%> (ø)
lib/evmone/advanced_instructions.cpp 2.17% <ø> (-97.83%) ⬇️
lib/evmone/execution_state.hpp 87.93% <100.00%> (-6.81%) ⬇️
lib/evmone/tracing.cpp 8.33% <ø> (-91.67%) ⬇️
test/bench/helpers.hpp 0.00% <ø> (ø)
test/unittests/instructions_test.cpp 0.00% <0.00%> (-89.59%) ⬇️
lib/evmone/baseline_execution.cpp 79.13% <0.00%> (-20.87%) ⬇️
test/unittests/eof_validation_test.cpp 0.00% <0.00%> (-99.42%) ⬇️
test/utils/bytecode.hpp 12.00% <0.00%> (-85.36%) ⬇️
test/unittests/evmmax_instructions_test.cpp 5.47% <5.47%> (ø)
... and 4 more

... and 99 files with indirect coverage changes

@rodiazet rodiazet added EVMMAX has_dependencies PR depends on not merged yet PR labels Feb 7, 2025
@rodiazet rodiazet force-pushed the evmmax-poseidon branch 6 times, most recently from 4bef708 to ebb6ea9 Compare February 13, 2025 12:03
@rodiazet rodiazet changed the title evmmax: Poseidon hash implementation in EVMMAX evmmax: Poseidon hash implementation in EVMMAX [DO NOT MERGE] Feb 13, 2025
test: Omit new opcodes with immediate params in unit tests
@rodiazet rodiazet force-pushed the evmmax-poseidon branch 2 times, most recently from d633143 to 79115fe Compare April 1, 2025 12:13
@rodiazet rodiazet changed the title evmmax: Poseidon hash implementation in EVMMAX [DO NOT MERGE] evmmax: Poseidon hash amd Falcon primitive nttfw implementation in EVMMAX [DO NOT MERGE] Apr 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
EVMMAX has_dependencies PR depends on not merged yet PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant