Test reference: operation ↔ benchmark
How each compute operation maps to the benchmark that prices it. For every preset in
evm-gasfit declared in
fit.yaml: the target opcode, the EEST test that stresses it,
the fixture parameters the model varies over, the fixture filter applied,
and the gas parameter(s) the fit produces. Precompiles are invoked behind a call, so their
count is read from the wrapping STATICCALL.
| Target op | Category | Test | Fixture params | Fixture filter | Gas params |
|---|---|---|---|---|---|
ADD |
Arithmetic | test_arithmetic |
— | opcode_ADD- |
OPCODE_ADD |
ADDMOD |
Arithmetic | test_arithmetic |
— | opcode_ADDMOD |
OPCODE_ADDMOD |
ADDMOD |
Arithmetic | test_mod_arithmetic |
mod_bits |
opcode_ADDMOD |
OPCODE_ADDMOD |
DIV |
Arithmetic | test_arithmetic |
— | opcode_DIV |
OPCODE_DIV |
EXP |
Arithmetic | test_arithmetic |
— | opcode_EXP |
OPCODE_EXP_BASE |
MOD |
Arithmetic | test_arithmetic |
— | opcode_MOD |
OPCODE_MOD |
MOD |
Arithmetic | test_mod |
mod_bits |
opcode_MOD |
OPCODE_MOD |
MUL |
Arithmetic | test_arithmetic |
— | opcode_MUL- |
OPCODE_MUL |
MULMOD |
Arithmetic | test_arithmetic |
— | opcode_MULMOD |
OPCODE_MULMOD |
MULMOD |
Arithmetic | test_mod_arithmetic |
mod_bits |
opcode_MULMOD |
OPCODE_MULMOD |
SDIV |
Arithmetic | test_arithmetic |
— | opcode_SDIV |
OPCODE_SDIV |
SIGNEXTEND |
Arithmetic | test_arithmetic |
— | opcode_SIGNEXTEND |
OPCODE_SIGNEXTEND |
SMOD |
Arithmetic | test_arithmetic |
— | opcode_SMOD |
OPCODE_SMOD |
SMOD |
Arithmetic | test_mod |
mod_bits |
opcode_SMOD |
OPCODE_SMOD |
SUB |
Arithmetic | test_arithmetic |
— | opcode_SUB |
OPCODE_SUB |
BLS12_G1ADD via STATICCALL |
BLS12-381 | test_bls12_381 |
— | bls12_g1add |
PRECOMPILE_BLS_G1ADD |
BLS12_G1MSM via STATICCALL |
BLS12-381 | test_bls12_g1_msm |
k |
bls12_g1msm |
PRECOMPILE_BLS_G1MUL |
BLS12_G2ADD via STATICCALL |
BLS12-381 | test_bls12_381 |
— | bls12_g2add |
PRECOMPILE_BLS_G2ADD |
BLS12_G2MSM via STATICCALL |
BLS12-381 | test_bls12_g2_msm |
k |
bls12_g2msm |
PRECOMPILE_BLS_G2MUL |
BLS12_MAP_FP_TO_G1 via STATICCALL |
BLS12-381 | test_bls12_381 |
— | bls12_fp_to_g1 |
PRECOMPILE_BLS_G1MAP |
BLS12_MAP_FP_TO_G2 via STATICCALL |
BLS12-381 | test_bls12_381 |
— | bls12_fp_to_g2 |
PRECOMPILE_BLS_G2MAP |
AND |
Bitwise | test_bitwise |
— | opcode_AND |
OPCODE_AND |
BYTE |
Bitwise | test_bitwise |
— | opcode_BYTE |
OPCODE_BYTE |
CLZ |
Bitwise | test_clz_same |
— | — | OPCODE_CLZ |
NOT |
Bitwise | test_not_op |
— | — | OPCODE_NOT |
OR |
Bitwise | test_bitwise |
— | opcode_OR |
OPCODE_OR |
SAR |
Bitwise | test_bitwise |
— | opcode_SAR |
OPCODE_SAR |
SHL |
Bitwise | test_bitwise |
— | opcode_SHL |
OPCODE_SHL |
SHR |
Bitwise | test_bitwise |
— | opcode_SHR |
OPCODE_SHR |
XOR |
Bitwise | test_bitwise |
— | opcode_XOR |
OPCODE_XOR |
BASEFEE |
Block/tx | test_block_context_ops |
— | opcode_BASEFEE |
OPCODE_BASEFEE |
BLOBBASEFEE |
Block/tx | test_block_context_ops |
— | opcode_BLOBBASEFEE |
OPCODE_BLOBBASEFEE |
CHAINID |
Block/tx | test_block_context_ops |
— | opcode_CHAINID |
OPCODE_CHAINID |
COINBASE |
Block/tx | test_block_context_ops |
— | opcode_COINBASE |
OPCODE_COINBASE |
GASLIMIT |
Block/tx | test_block_context_ops |
— | opcode_GASLIMIT |
OPCODE_GASLIMIT |
GASPRICE |
Block/tx | test_call_frame_context_ops |
— | opcode_GASPRICE |
OPCODE_GASPRICE |
NUMBER |
Block/tx | test_block_context_ops |
— | opcode_NUMBER |
OPCODE_NUMBER |
ORIGIN |
Block/tx | test_call_frame_context_ops |
— | opcode_ORIGIN |
OPCODE_ORIGIN |
PREVRANDAO |
Block/tx | test_block_context_ops |
— | opcode_PREVRANDAO |
OPCODE_PREVRANDAO |
TIMESTAMP |
Block/tx | test_block_context_ops |
— | opcode_TIMESTAMP |
OPCODE_TIMESTAMP |
ADDRESS |
Call context | test_call_frame_context_ops |
— | opcode_ADDRESS |
OPCODE_ADDRESS |
CALLDATACOPY |
Call context | test_calldatacopy_from_origin |
calldata_size, mem_size |
— | OPCODE_CALLDATACOPY_BASE OPCODE_CALLDATACOPY_PER_WORD |
CALLDATALOAD |
Call context | test_calldataload |
calldata_size |
— | OPCODE_CALLDATALOAD |
CALLDATASIZE |
Call context | test_calldatasize |
calldata_size |
— | OPCODE_CALLDATASIZE |
CALLER |
Call context | test_call_frame_context_ops |
— | opcode_CALLER |
OPCODE_CALLER |
CALLVALUE |
Call context | test_callvalue_from_origin |
— | — | OPCODE_CALLVALUE |
RETURNDATACOPY |
Call context | test_returndatacopy |
return_size, mem_size |
— | OPCODE_RETURNDATACOPY_BASE OPCODE_RETURNDATACOPY_PER_WORD |
RETURNDATASIZE |
Call context | test_returndatasize_nonzero |
returned_size |
— | OPCODE_RETURNDATASIZE |
EQ |
Comparison | test_comparison |
— | opcode_EQ |
OPCODE_EQ |
GT |
Comparison | test_comparison |
— | opcode_GT |
OPCODE_GT |
ISZERO |
Comparison | test_iszero |
— | — | OPCODE_ISZERO |
LT |
Comparison | test_comparison |
— | opcode_LT |
OPCODE_LT |
SGT |
Comparison | test_comparison |
— | opcode_SGT |
OPCODE_SGT |
SLT |
Comparison | test_comparison |
— | opcode_SLT |
OPCODE_SLT |
GAS |
Control flow | test_gas_op |
— | — | OPCODE_GAS |
JUMP |
Control flow | test_jump_benchmark |
— | — | OPCODE_JUMP |
JUMPDEST |
Control flow | test_jumpdests |
— | — | OPCODE_JUMPDEST |
JUMPI |
Control flow | test_jumpi_fallthrough |
— | — | OPCODE_JUMPI |
PC |
Control flow | test_pc_op |
— | — | OPCODE_PC |
KECCAK256 |
Hashing | test_keccak_diff_mem_msg_sizes |
mem_size |
— | OPCODE_KECCAK256_BASE OPCODE_KECCAK256_PER_WORD |
MCOPY |
Memory | test_mcopy |
copy_size, mem_size |
— | OPCODE_MCOPY_BASE OPCODE_MCOPY_PER_WORD |
MLOAD |
Memory | test_memory_access |
mem_size |
opcode_MLOAD |
OPCODE_MLOAD_BASE |
MSIZE |
Memory | test_msize |
— | — | OPCODE_MSIZE |
MSTORE |
Memory | test_memory_access |
mem_size |
opcode_MSTORE- |
OPCODE_MSTORE_BASE |
MSTORE8 |
Memory | test_memory_access |
mem_size |
opcode_MSTORE8 |
OPCODE_MSTORE8_BASE |
BLAKE2F via STATICCALL |
Precompile | test_blake2f_benchmark |
— | blake2f |
PRECOMPILE_BLAKE2F_BASE PRECOMPILE_BLAKE2F_PER_ROUND |
BLAKE2F via STATICCALL |
Precompile | test_blake2f_uncachable |
— | blake2f |
PRECOMPILE_BLAKE2F_BASE PRECOMPILE_BLAKE2F_PER_ROUND |
ECADD via STATICCALL |
Precompile | test_alt_bn128 |
bn128 |
bn128_, !bn128_mul |
PRECOMPILE_ECADD |
ECADD via STATICCALL |
Precompile | test_alt_bn128_uncachable |
— | ec_add |
PRECOMPILE_ECADD |
ECMUL via STATICCALL |
Precompile | test_alt_bn128 |
— | bn128_mul_ |
PRECOMPILE_ECMUL |
ECMUL via STATICCALL |
Precompile | test_alt_bn128_uncachable |
— | ec_mul_ |
PRECOMPILE_ECMUL |
ECPAIRING via STATICCALL |
Precompile | test_alt_bn128_benchmark |
— | num_pairs |
PRECOMPILE_ECPAIRING_BASE PRECOMPILE_ECPAIRING_PER_POINT |
ECPAIRING via STATICCALL |
Precompile | test_ec_pairing |
— | — | PRECOMPILE_ECPAIRING_BASE PRECOMPILE_ECPAIRING_PER_POINT |
ECRECOVER via STATICCALL |
Precompile | test_ecrecover |
— | ecrecover |
PRECOMPILE_ECRECOVER |
IDENTITY via STATICCALL |
Precompile | test_identity_fixed_size |
— | identity |
PRECOMPILE_IDENTITY_BASE PRECOMPILE_IDENTITY_PER_WORD |
IDENTITY via STATICCALL |
Precompile | test_identity_uncachable |
— | identity |
PRECOMPILE_IDENTITY_BASE PRECOMPILE_IDENTITY_PER_WORD |
P256VERIFY via STATICCALL |
Precompile | test_p256verify |
— | p256verify |
PRECOMPILE_P256VERIFY |
P256VERIFY via STATICCALL |
Precompile | test_p256verify_uncachable |
— | p256verify |
PRECOMPILE_P256VERIFY |
POINT_EVALUATION via STATICCALL |
Precompile | test_point_evaluation |
— | point_evaluation |
PRECOMPILE_POINT_EVALUATION |
POINT_EVALUATION via STATICCALL |
Precompile | test_point_evaluation_uncachable |
— | point_evaluation |
PRECOMPILE_POINT_EVALUATION |
RIPEMD160 via STATICCALL |
Precompile | test_ripemd160_fixed_size |
— | ripemd160 |
PRECOMPILE_RIPEMD160_BASE PRECOMPILE_RIPEMD160_PER_WORD |
RIPEMD160 via STATICCALL |
Precompile | test_ripemd160_uncachable |
— | ripemd160 |
PRECOMPILE_RIPEMD160_BASE PRECOMPILE_RIPEMD160_PER_WORD |
SHA256 via STATICCALL |
Precompile | test_sha256_fixed_size |
— | sha256 |
PRECOMPILE_SHA256_BASE PRECOMPILE_SHA256_PER_WORD |
SHA256 via STATICCALL |
Precompile | test_sha256_uncachable |
— | sha256 |
PRECOMPILE_SHA256_BASE PRECOMPILE_SHA256_PER_WORD |
DUP* (per opcode) |
Stack | test_dup |
opcode |
— | OPCODE_DUP |
PUSH* (per opcode) |
Stack | test_push |
opcode |
opcode_PUSH |
OPCODE_PUSH |
PUSH0 |
Stack | test_push |
— | opcode_PUSH0- |
OPCODE_PUSH0 |
SWAP* (per opcode) |
Stack | test_swap |
opcode |
— | OPCODE_SWAP |