Skip to content
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

[EVM-Equivalence-YUL] Implement lazy stack #720

Draft
wants to merge 6 commits into
base: evm-equivalence-yul
Choose a base branch
from

Conversation

0xVolosnikov
Copy link

What ❔

Why ❔

Checklist

  • PR title corresponds to the body of PR (we generate changelog entries from PRs).
  • Tests for the changes have been added / updated.
  • Documentation comments have been added / updated.

@0xVolosnikov
Copy link
Author

0xVolosnikov commented Aug 20, 2024

Benchmark results (with compiler fine-tuning for both versions)

╔═╡ Size (-%) ╞═════╡ EVMInterpreter M3B3 ╞═╗
║ Mean                                0.000 ║
║ Best                                0.000 ║
║ Worst                               0.000 ║
║ Total                                 NaN ║
╠═╡ Cycles (-%) ╞═══╡ EVMInterpreter M3B3 ╞═╣
║ Mean                               -0.113 ║
║ Best                                8.440 ║
║ Worst                              -6.391 ║
║ Total                              -2.283 ║
╠═╡ Ergs (-%) ╞═════╡ EVMInterpreter M3B3 ╞═╣
║ Mean                               -0.224 ║
║ Best                                1.759 ║
║ Worst                              -2.294 ║
║ Total                              -0.296 ║
╠═╡ Ergs/gas ╞══════╡ EVMInterpreter M3B3 ╞═╣
║ ADD                                32.083 ║
║ MUL                                20.450 ║
║ SUB                                34.083 ║
║ DIV                                22.850 ║
║ SDIV                               39.650 ║
║ MOD                                22.850 ║
║ SMOD                               37.250 ║
║ ADDMOD                             21.156 ║
║ MULMOD                             19.656 ║
║ EXP                                 7.204 ║
║ SIGNEXTEND                         22.850 ║
║ LT                                 38.083 ║
║ GT                                 38.083 ║
║ SLT                                60.083 ║
║ SGT                                60.083 ║
║ EQ                                 38.083 ║
║ ISZERO                             33.750 ║
║ AND                                34.083 ║
║ OR                                 34.083 ║
║ XOR                                34.083 ║
║ NOT                                27.750 ║
║ BYTE                               44.083 ║
║ SHL                                40.083 ║
║ SHR                                40.083 ║
║ SAR                                58.083 ║
║ SGT                                60.083 ║
║ SHA3                               26.587 ║
║ ADDRESS                            47.812 ║
║ BALANCE                            72.772 ║
║ ORIGIN                           1346.500 ║
║ CALLER                             47.812 ║
║ CALLVALUE                          47.812 ║
║ CALLDATALOAD                       30.083 ║
║ CALLDATASIZE                       48.125 ║
║ CALLDATACOPY                       73.123 ║
║ CODESIZE                           51.625 ║
║ CODECOPY                          135.349 ║
║ GASPRICE                         1352.312 ║
║ EXTCODESIZE                         5.109 ║
║ EXTCODECOPY                         5.189 ║
║ RETURNDATASIZE                     49.500 ║
║ RETURNDATACOPY                     46.556 ║
║ EXTCODEHASH                         6.185 ║
║ BLOCKHASH                         239.119 ║
║ COINBASE                         1349.500 ║
║ TIMESTAMP                        1346.500 ║
║ NUMBER                           1346.500 ║
║ PREVRANDAO                       1346.500 ║
║ GASLIMIT                         1352.500 ║
║ CHAINID                          1346.500 ║
║ SELFBALANCE                       640.925 ║
║ BASEFEE                          1346.500 ║
║ POP                                45.125 ║
║ MLOAD                              49.152 ║
║ MSTORE                             60.733 ║
║ MSTORE8                            70.363 ║
║ SLOAD                              26.532 ║
║ SSTORE                              9.082 ║
║ JUMP                               22.444 ║
║ JUMPI                              21.182 ║
║ PC                                 51.312 ║
║ MSIZE                              54.812 ║
║ GAS                                51.312 ║
║ JUMPDEST                           77.625 ║
║ PUSH0                              51.312 ║
║ PUSH1                              41.958 ║
║ PUSH2                              45.375 ║
║ PUSH4                              48.208 ║
║ PUSH5                              49.625 ║
║ PUSH6                              51.042 ║
║ PUSH7                              52.458 ║
║ PUSH8                              53.875 ║
║ PUSH9                              55.292 ║
║ PUSH10                             56.708 ║
║ PUSH11                             58.125 ║
║ PUSH12                             59.542 ║
║ PUSH13                             60.958 ║
║ PUSH14                             62.375 ║
║ PUSH15                             63.792 ║
║ PUSH16                             65.208 ║
║ PUSH17                             66.625 ║
║ PUSH18                             68.042 ║
║ PUSH19                             69.458 ║
║ PUSH20                             70.875 ║
║ PUSH21                             72.292 ║
║ PUSH22                             73.708 ║
║ PUSH23                             75.125 ║
║ PUSH24                             76.542 ║
║ PUSH25                             77.958 ║
║ PUSH26                             79.375 ║
║ PUSH27                             80.792 ║
║ PUSH28                             82.208 ║
║ PUSH29                             83.625 ║
║ PUSH30                             85.042 ║
║ PUSH31                             86.458 ║
║ PUSH32                             87.875 ║
║ DUP1                               32.083 ║
║ DUP2                               38.417 ║
║ DUP3                               38.417 ║
║ DUP4                               38.417 ║
║ DUP5                               38.417 ║
║ DUP6                               38.417 ║
║ DUP7                               38.417 ║
║ DUP8                               38.417 ║
║ DUP9                               38.417 ║
║ DUP10                              38.417 ║
║ DUP11                              38.417 ║
║ DUP12                              38.417 ║
║ DUP13                              38.417 ║
║ DUP14                              38.417 ║
║ DUP15                              38.417 ║
║ DUP16                              38.417 ║
║ SWAP1                              36.417 ║
║ SWAP2                              36.417 ║
║ SWAP3                              36.417 ║
║ SWAP4                              36.417 ║
║ SWAP5                              36.417 ║
║ SWAP6                              36.417 ║
║ SWAP7                              36.417 ║
║ SWAP8                              36.417 ║
║ SWAP9                              36.417 ║
║ SWAP10                             36.417 ║
║ SWAP11                             36.417 ║
║ SWAP12                             36.417 ║
║ SWAP13                             36.417 ║
║ SWAP14                             36.417 ║
║ SWAP15                             36.417 ║
║ SWAP16                             36.417 ║
║ CALL                               56.170 ║
║ STATICCALL                         56.150 ║
║ DELEGATECALL                       55.189 ║
║ CREATE                              5.048 ║
║ CREATE2                             7.077 ║
║ RETURN                              1.000 ║
║ REVERT                              1.000 ║
╠═╡ Ergs/gas (-%) ╞═╡ EVMInterpreter M3B3 ╞═╣
║ ADD                                21.268 ║
║ MUL                                16.360 ║
║ SUB                                16.360 ║
║ DIV                                18.538 ║
║ SDIV                                9.164 ║
║ MOD                                18.538 ║
║ SMOD                                9.697 ║
║ ADDMOD                              7.640 ║
║ MULMOD                             21.863 ║
║ EXP                                 1.817 ║
║ SIGNEXTEND                         14.898 ║
║ LT                                 14.898 ║
║ GT                                 14.898 ║
║ SLT                                 9.988 ║
║ SGT                                 9.988 ║
║ EQ                                 14.898 ║
║ ISZERO                             16.495 ║
║ AND                                16.360 ║
║ OR                                 16.360 ║
║ XOR                                16.360 ║
║ NOT                                23.799 ║
║ BYTE                               13.136 ║
║ SHL                                10.428 ║
║ SHR                                10.428 ║
║ SAR                                10.296 ║
║ SGT                                 9.988 ║
║ SHA3                                5.197 ║
║ ADDRESS                             5.904 ║
║ BALANCE                             0.601 ║
║ ORIGIN                             -0.223 ║
║ CALLER                              5.904 ║
║ CALLVALUE                           5.904 ║
║ CALLDATALOAD                       22.366 ║
║ CALLDATASIZE                        5.868 ║
║ CALLDATACOPY                       -1.365 ║
║ CODECOPY                           -2.231 ║
║ GASPRICE                           -0.222 ║
║ EXTCODESIZE                         0.330 ║
║ EXTCODECOPY                        -0.133 ║
║ RETURNDATACOPY                     -2.948 ║
║ EXTCODEHASH                         0.310 ║
║ BLOCKHASH                           0.541 ║
║ COINBASE                           -0.223 ║
║ TIMESTAMP                          -0.223 ║
║ NUMBER                             -0.223 ║
║ PREVRANDAO                         -0.223 ║
║ GASLIMIT                           -0.222 ║
║ CHAINID                            -0.223 ║
║ SELFBALANCE                        -0.188 ║
║ BASEFEE                            -0.223 ║
║ POP                                -8.408 ║
║ MLOAD                              19.069 ║
║ MSTORE                             -3.104 ║
║ MSTORE8                            -2.749 ║
║ SLOAD                               1.002 ║
║ SSTORE                             -0.337 ║
║ JUMP                               -3.061 ║
║ JUMPI                              -2.643 ║
║ MSIZE                               5.189 ║
║ GAS                                -6.210 ║
║ JUMPDEST                           -8.377 ║
║ PUSH0                              -6.210 ║
║ PUSH1                               4.550 ║
║ PUSH2                               4.222 ║
║ PUSH4                               3.983 ║
║ PUSH5                               3.874 ║
║ PUSH6                               3.771 ║
║ PUSH7                               3.673 ║
║ PUSH8                               3.579 ║
║ PUSH9                               3.491 ║
║ PUSH10                              3.407 ║
║ PUSH11                              3.326 ║
║ PUSH12                              3.250 ║
║ PUSH13                              3.177 ║
║ PUSH14                              3.107 ║
║ PUSH15                              3.040 ║
║ PUSH16                              2.976 ║
║ PUSH17                              2.914 ║
║ PUSH18                              2.855 ║
║ PUSH19                              2.799 ║
║ PUSH20                              2.744 ║
║ PUSH21                              2.692 ║
║ PUSH22                              2.642 ║
║ PUSH23                              2.593 ║
║ PUSH24                              2.546 ║
║ PUSH25                              2.501 ║
║ PUSH26                              2.458 ║
║ PUSH27                              2.416 ║
║ PUSH28                              2.375 ║
║ PUSH29                              2.336 ║
║ PUSH30                              2.298 ║
║ PUSH31                              2.261 ║
║ DUP1                                6.780 ║
║ DUP2                                4.948 ║
║ DUP3                                4.948 ║
║ DUP4                                4.948 ║
║ DUP5                                4.948 ║
║ DUP6                                4.948 ║
║ DUP7                                4.948 ║
║ DUP8                                4.948 ║
║ DUP9                                4.948 ║
║ DUP10                               4.948 ║
║ DUP11                               4.948 ║
║ DUP12                               4.948 ║
║ DUP13                               4.948 ║
║ DUP14                               4.948 ║
║ DUP15                               4.948 ║
║ DUP16                               4.948 ║
║ SWAP1                              15.474 ║
║ SWAP2                              15.474 ║
║ SWAP3                              15.474 ║
║ SWAP4                              15.474 ║
║ SWAP5                              15.474 ║
║ SWAP6                              15.474 ║
║ SWAP7                              15.474 ║
║ SWAP8                              15.474 ║
║ SWAP9                              15.474 ║
║ SWAP10                             15.474 ║
║ SWAP11                             15.474 ║
║ SWAP12                             15.474 ║
║ SWAP13                             15.474 ║
║ SWAP14                             15.474 ║
║ SWAP15                             15.474 ║
║ SWAP16                             15.474 ║
║ CALL                                0.545 ║
║ STATICCALL                          0.548 ║
║ DELEGATECALL                        0.551 ║
║ CREATE                              0.121 ║
║ CREATE2                             0.113 ║
╚═══════════════════════════════════════════╝

Thanks to @vladimirradosavljevic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant