Skip to content

perf(evm): cache internal call modules#529

Open
ZR74 wants to merge 1 commit into
DTVMStack:mainfrom
ZR74:perf/evm-internal-call-module-cache
Open

perf(evm): cache internal call modules#529
ZR74 wants to merge 1 commit into
DTVMStack:mainfrom
ZR74:perf/evm-internal-call-module-cache

Conversation

@ZR74

@ZR74 ZR74 commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

  • N
  • Y

2. What is the scope of this PR (e.g. component or file name):

3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

  • Affects user behaviors
  • Contains CI/CD configuration changes
  • Contains documentation changes
  • Contains experimental features
  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Other

4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

  • N
  • Y

5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

  • Unit test
  • Integration test
  • Benchmark (add benchmark stats below)
  • Manual test (add detailed scripts or steps below)
  • Other

6. Release note

None

Copilot AI review requested due to automatic review settings June 9, 2026 02:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Introduces a transaction-local cache in ZenMockedEVMHost to reuse loaded EVMModule objects across repeated EVM CALLs, reducing module load/analyze/JIT overhead during replay/state tests.

Changes:

  • Add an internal-call module cache keyed by code identity (address/hash/fingerprint/revision/memory specialization).
  • Route internal CALL module loading through the cache and add cache management helpers.
  • Add a unit test and a changelog-style doc describing the new caching behavior.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

File Description
src/tests/evm_test_host.hpp Implements the internal CALL EVMModule cache and integrates it into CALL handling.
src/tests/evm_interp_tests.cpp Adds a test asserting cache reuse vs. reload when bytecode changes.
docs/changes/2026-06-05-evm-host-call-module-cache/README.md Documents motivation/impact and clarifies scope (CALL-only).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 176 to 180
Result.ErrorMessage = "Runtime is not attached to ZenMockedEVMHost";
return Result;
}
clearInternalCallModuleCache();
const evmc_revision ActiveRevision = Config.Revision;
Comment on lines +69 to +82
size_t operator()(const InternalCallModuleCacheKey &Key) const noexcept {
size_t H = std::hash<evmc::address>{}(Key.CodeAddress);
H ^= std::hash<evmc::bytes32>{}(Key.AccountCodeHash) +
0x9e3779b97f4a7c15ULL + (H << 6) + (H >> 2);
H ^= std::hash<uint64_t>{}(Key.CodeFingerprint) + 0x9e3779b97f4a7c15ULL +
(H << 6) + (H >> 2);
H ^= std::hash<size_t>{}(Key.CodeSize) + 0x9e3779b97f4a7c15ULL +
(H << 6) + (H >> 2);
H ^= std::hash<int>{}(static_cast<int>(Key.Revision)) +
0x9e3779b97f4a7c15ULL + (H << 6) + (H >> 2);
H ^= std::hash<uint8_t>{}(Key.MemoryKey.SkipLeadingZeroLimbStores) +
0x9e3779b97f4a7c15ULL + (H << 6) + (H >> 2);
return H;
}
Comment on lines +926 to +933
static uint64_t computeCodeFingerprint(const uint8_t *Data, size_t Size) {
uint64_t Hash = 1469598103934665603ULL;
for (size_t I = 0; I < Size; ++I) {
Hash ^= static_cast<uint64_t>(Data[I]);
Hash *= 1099511628211ULL;
}
return Hash;
}
Comment on lines +414 to +462
TEST(ZenMockedEVMHostModuleCacheTest, ReusesInternalCallModuleByCodeIdentity) {
RuntimeConfig Config;
#ifdef ZEN_ENABLE_MULTIPASS_JIT
Config.Mode = common::RunMode::MultipassMode;
#else
Config.Mode = common::RunMode::InterpMode;
#endif

auto MockedHost = std::make_unique<zen::evm::ZenMockedEVMHost>();
auto RT = Runtime::newEVMRuntime(Config, MockedHost.get());
ASSERT_TRUE(RT != nullptr) << "Failed to create runtime";
MockedHost->setRuntime(RT.get());

const evmc::address SenderAddr = evmc::literals::operator""_address(
"a94f5374fce5edbc8e2a8697c15331677e6ebf0b");
const evmc::address ContractAddr = evmc::literals::operator""_address(
"00000000000000000000000000000000000000c1");

evmc::MockedAccount SenderAccount;
SenderAccount.set_balance(1000);
MockedHost->accounts[SenderAddr] = SenderAccount;

evmc::MockedAccount ContractAccount;
ContractAccount.code = {0x60, 0x00, 0x50, 0x00}; // PUSH1 0; POP; STOP
ContractAccount.codehash.bytes[31] = 0xaa;
MockedHost->accounts[ContractAddr] = ContractAccount;

evmc_message Msg{};
Msg.kind = EVMC_CALL;
Msg.gas = 100000;
Msg.recipient = ContractAddr;
Msg.sender = SenderAddr;
Msg.code_address = ContractAddr;

evmc::Result First = MockedHost->call(Msg);
ASSERT_EQ(First.status_code, EVMC_SUCCESS);
EXPECT_EQ(MockedHost->getInternalCallModuleCacheSize(), 1U);

evmc::Result Second = MockedHost->call(Msg);
ASSERT_EQ(Second.status_code, EVMC_SUCCESS);
EXPECT_EQ(MockedHost->getInternalCallModuleCacheSize(), 1U);

// Same address and codehash but different bytecode must not reuse the cached
// module. This protects replay tests from stale code when state changes.
MockedHost->accounts[ContractAddr].code = {0x60, 0x01, 0x50, 0x00};
evmc::Result Third = MockedHost->call(Msg);
ASSERT_EQ(Third.status_code, EVMC_SUCCESS);
EXPECT_EQ(MockedHost->getInternalCallModuleCacheSize(), 2U);
}
@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown

⚡ Performance Regression Check Results

✅ Performance Check Passed (interpreter)

Performance Benchmark Results (threshold: 25%)

Benchmark Baseline (us) Current (us) Change Status
total/main/blake2b_huff/8415nulls 4.39 4.14 -5.6% PASS
total/main/blake2b_huff/empty 0.07 0.07 -5.1% PASS
total/main/blake2b_shifts/8415nulls 20.29 23.27 +14.7% PASS
total/main/sha1_divs/5311 19.80 12.51 -36.8% PASS
total/main/sha1_divs/empty 0.15 0.15 +2.0% PASS
total/main/sha1_shifts/5311 10.23 9.54 -6.8% PASS
total/main/sha1_shifts/empty 0.08 0.09 +14.0% PASS
total/main/snailtracer/benchmark 120.85 115.97 -3.1% PASS
total/main/structarray_alloc/nfts_rank 1.46 1.75 +20.2% PASS
total/main/swap_math/insufficient_liquidity 0.00 0.01 +12.3% PASS
total/main/swap_math/received 0.01 0.01 -15.4% PASS
total/main/swap_math/spent 0.01 0.01 -1.7% PASS
total/main/weierstrudel/1 0.41 0.40 -2.0% PASS
total/main/weierstrudel/15 5.81 4.73 -18.7% PASS
total/micro/JUMPDEST_n0/empty 3.04 3.02 -0.9% PASS
total/micro/jump_around/empty 0.11 0.09 -17.6% PASS
total/micro/loop_with_many_jumpdests/empty 65.34 67.28 +3.2% PASS
total/micro/memory_grow_mload/by1 0.25 0.24 -2.3% PASS
total/micro/memory_grow_mload/by16 0.27 0.28 +6.3% PASS
total/micro/memory_grow_mload/by32 0.15 0.19 +21.0% PASS
total/micro/memory_grow_mload/nogrow 0.13 0.14 +4.9% PASS
total/micro/memory_grow_mstore/by1 0.26 0.27 +5.4% PASS
total/micro/memory_grow_mstore/by16 0.15 0.18 +20.8% PASS
total/micro/memory_grow_mstore/by32 0.30 0.32 +6.1% PASS
total/micro/memory_grow_mstore/nogrow 0.26 0.27 +4.0% PASS
total/micro/signextend/one 0.27 0.27 -0.4% PASS
total/micro/signextend/zero 0.57 0.47 -16.8% PASS
total/synth/ADD/b0 3.25 3.22 -1.0% PASS
total/synth/ADD/b1 5.94 6.12 +3.1% PASS
total/synth/ADDRESS/a0 7.01 7.04 +0.5% PASS
total/synth/ADDRESS/a1 5.98 5.98 -0.1% PASS
total/synth/AND/b0 3.02 3.03 +0.1% PASS
total/synth/AND/b1 5.32 5.22 -1.9% PASS
total/synth/BYTE/b0 6.91 6.94 +0.4% PASS
total/synth/BYTE/b1 9.06 9.85 +8.7% PASS
total/synth/CALLDATASIZE/a0 5.45 5.31 -2.6% PASS
total/synth/CALLDATASIZE/a1 4.43 4.32 -2.4% PASS
total/synth/CALLER/a0 11.80 7.01 -40.6% PASS
total/synth/CALLER/a1 7.40 7.41 +0.1% PASS
total/synth/CALLVALUE/a0 4.15 3.81 -8.0% PASS
total/synth/CALLVALUE/a1 6.41 6.55 +2.1% PASS
total/synth/CODESIZE/a0 7.89 6.09 -22.8% PASS
total/synth/CODESIZE/a1 6.44 6.38 -0.9% PASS
total/synth/DUP1/d0 1.97 2.23 +13.0% PASS
total/synth/DUP1/d1 2.21 2.30 +4.2% PASS
total/synth/DUP10/d0 2.08 2.16 +4.0% PASS
total/synth/DUP10/d1 2.44 2.25 -7.6% PASS
total/synth/DUP11/d0 1.45 1.44 -0.6% PASS
total/synth/DUP11/d1 2.38 2.29 -3.8% PASS
total/synth/DUP12/d0 2.16 2.11 -2.3% PASS
total/synth/DUP12/d1 1.65 1.63 -1.2% PASS
total/synth/DUP13/d0 2.14 2.19 +2.7% PASS
total/synth/DUP13/d1 2.21 2.33 +5.3% PASS
total/synth/DUP14/d0 1.44 1.44 -0.1% PASS
total/synth/DUP14/d1 2.28 2.28 +0.1% PASS
total/synth/DUP15/d0 2.21 2.21 +0.2% PASS
total/synth/DUP15/d1 1.86 1.85 -0.4% PASS
total/synth/DUP16/d0 2.15 2.20 +2.1% PASS
total/synth/DUP16/d1 2.27 2.24 -1.4% PASS
total/synth/DUP2/d0 1.42 1.41 -0.5% PASS
total/synth/DUP2/d1 2.42 2.30 -5.0% PASS
total/synth/DUP3/d0 2.07 2.11 +2.2% PASS
total/synth/DUP3/d1 1.63 1.63 -0.2% PASS
total/synth/DUP4/d0 2.02 2.13 +5.6% PASS
total/synth/DUP4/d1 2.28 2.16 -5.1% PASS
total/synth/DUP5/d0 1.44 1.44 -0.1% PASS
total/synth/DUP5/d1 2.17 2.25 +6.4% PASS
total/synth/DUP6/d0 2.13 2.19 +3.0% PASS
total/synth/DUP6/d1 1.86 1.85 -0.4% PASS
total/synth/DUP7/d0 2.14 2.12 -0.6% PASS
total/synth/DUP7/d1 2.30 2.20 -4.0% PASS
total/synth/DUP8/d0 1.44 1.44 +0.2% PASS
total/synth/DUP8/d1 2.27 2.26 -0.3% PASS
total/synth/DUP9/d0 6.55 2.12 -67.6% PASS
total/synth/DUP9/d1 1.86 1.86 -0.1% PASS
total/synth/EQ/b0 6.85 6.76 -1.3% PASS
total/synth/EQ/b1 7.19 7.26 +0.9% PASS
total/synth/GAS/a0 4.12 4.08 -1.0% PASS
total/synth/GAS/a1 8.71 7.01 -19.6% PASS
total/synth/GT/b0 7.19 7.13 -1.0% PASS
total/synth/GT/b1 7.34 7.23 -1.5% PASS
total/synth/ISZERO/u0 11.49 11.40 -0.8% PASS
total/synth/JUMPDEST/n0 3.04 3.01 -0.9% PASS
total/synth/LT/b0 7.01 7.07 +0.8% PASS
total/synth/LT/b1 6.22 6.24 +0.3% PASS
total/synth/MSIZE/a0 9.20 6.43 -30.1% PASS
total/synth/MSIZE/a1 6.71 6.86 +2.3% PASS
total/synth/MUL/b0 8.89 8.72 -1.9% PASS
total/synth/MUL/b1 6.74 6.77 +0.4% PASS
total/synth/NOT/u0 7.06 6.99 -1.0% PASS
total/synth/OR/b0 5.23 5.03 -3.9% PASS
total/synth/OR/b1 3.60 3.46 -4.0% PASS
total/synth/PC/a0 5.16 5.33 +3.3% PASS
total/synth/PC/a1 4.51 4.33 -4.0% PASS
total/synth/PUSH1/p0 2.47 2.37 -4.3% PASS
total/synth/PUSH1/p1 1.99 1.97 -0.8% PASS
total/synth/PUSH10/p0 2.40 2.48 +3.4% PASS
total/synth/PUSH10/p1 1.98 1.75 -11.6% PASS
total/synth/PUSH11/p0 2.27 2.46 +8.4% PASS
total/synth/PUSH11/p1 2.53 2.39 -5.3% PASS
total/synth/PUSH12/p0 1.51 1.52 +0.7% PASS
total/synth/PUSH12/p1 2.52 2.42 -4.1% PASS
total/synth/PUSH13/p0 2.39 2.43 +1.7% PASS
total/synth/PUSH13/p1 1.98 1.76 -11.2% PASS
total/synth/PUSH14/p0 2.55 2.52 -1.2% PASS
total/synth/PUSH14/p1 2.46 2.36 -3.9% PASS
total/synth/PUSH15/p0 1.52 1.51 -1.0% PASS
total/synth/PUSH15/p1 2.49 2.52 +3.6% PASS
total/synth/PUSH16/p0 2.47 2.54 +2.7% PASS
total/synth/PUSH16/p1 1.76 1.80 +2.1% PASS
total/synth/PUSH17/p0 2.03 2.52 +24.3% PASS
total/synth/PUSH17/p1 2.53 2.40 -5.1% PASS
total/synth/PUSH18/p0 1.51 1.51 +0.3% PASS
total/synth/PUSH18/p1 2.51 2.56 +2.0% PASS
total/synth/PUSH19/p0 2.48 2.48 -0.2% PASS
total/synth/PUSH19/p1 1.77 1.99 +12.4% PASS
total/synth/PUSH2/p0 2.47 2.43 -1.9% PASS
total/synth/PUSH2/p1 2.61 2.46 -5.8% PASS
total/synth/PUSH20/p0 2.50 2.59 +3.9% PASS
total/synth/PUSH20/p1 2.49 2.47 -0.3% PASS
total/synth/PUSH21/p0 1.53 1.53 +0.2% PASS
total/synth/PUSH21/p1 2.51 2.59 +3.3% PASS
total/synth/PUSH22/p0 2.48 2.56 +3.3% PASS
total/synth/PUSH22/p1 1.99 1.99 -0.0% PASS
total/synth/PUSH23/p0 2.48 2.58 +4.2% PASS
total/synth/PUSH23/p1 2.52 2.38 -5.6% PASS
total/synth/PUSH24/p0 1.53 1.53 +0.2% PASS
total/synth/PUSH24/p1 2.48 2.44 -1.5% PASS
total/synth/PUSH25/p0 2.50 2.57 +2.9% PASS
total/synth/PUSH25/p1 1.99 2.00 +0.8% PASS
total/synth/PUSH26/p0 2.51 2.48 -1.3% PASS
total/synth/PUSH26/p1 2.70 2.37 -12.2% PASS
total/synth/PUSH27/p0 1.53 1.53 -0.2% PASS
total/synth/PUSH27/p1 2.52 2.43 -3.4% PASS
total/synth/PUSH28/p0 2.50 2.48 -0.8% PASS
total/synth/PUSH28/p1 2.00 1.78 -10.9% PASS
total/synth/PUSH29/p0 2.34 2.57 +10.0% PASS
total/synth/PUSH29/p1 2.53 2.55 +0.8% PASS
total/synth/PUSH3/p0 1.52 1.51 -0.1% PASS
total/synth/PUSH3/p1 2.39 2.50 +4.7% PASS
total/synth/PUSH30/p0 1.61 1.56 -2.6% PASS
total/synth/PUSH30/p1 2.65 2.77 +4.8% PASS
total/synth/PUSH31/p0 2.54 2.56 +0.8% PASS
total/synth/PUSH31/p1 2.02 1.80 -11.0% PASS
total/synth/PUSH32/p0 2.48 2.47 -0.2% PASS
total/synth/PUSH32/p1 2.46 2.49 +1.5% PASS
total/synth/PUSH4/p0 2.45 2.52 +2.7% PASS
total/synth/PUSH4/p1 1.97 1.98 +0.4% PASS
total/synth/PUSH5/p0 2.45 2.43 -0.9% PASS
total/synth/PUSH5/p1 2.41 2.45 +1.6% PASS
total/synth/PUSH6/p0 1.51 1.52 +0.5% PASS
total/synth/PUSH6/p1 2.44 2.52 +3.6% PASS
total/synth/PUSH7/p0 2.48 2.46 -0.8% PASS
total/synth/PUSH7/p1 1.99 1.77 -11.0% PASS
total/synth/PUSH8/p0 2.46 2.44 -0.9% PASS
total/synth/PUSH8/p1 2.45 2.76 +12.2% PASS
total/synth/PUSH9/p0 1.52 1.51 -0.5% PASS
total/synth/PUSH9/p1 2.60 2.51 -3.4% PASS
total/synth/RETURNDATASIZE/a0 3.74 3.98 +6.5% PASS
total/synth/RETURNDATASIZE/a1 8.17 6.23 -23.7% PASS
total/synth/SAR/b0 4.46 4.43 -0.5% PASS
total/synth/SAR/b1 7.68 8.06 +4.9% PASS
total/synth/SGT/b0 5.85 5.90 +0.8% PASS
total/synth/SGT/b1 5.07 5.08 +0.1% PASS
total/synth/SHL/b0 6.94 6.71 -3.3% PASS
total/synth/SHL/b1 3.68 3.94 +6.9% PASS
total/synth/SHR/b0 6.97 6.86 -1.5% PASS
total/synth/SHR/b1 6.52 6.32 -2.9% PASS
total/synth/SIGNEXTEND/b0 3.59 3.42 -4.7% PASS
total/synth/SIGNEXTEND/b1 6.84 6.54 -4.4% PASS
total/synth/SLT/b0 4.31 4.25 -1.3% PASS
total/synth/SLT/b1 5.72 5.64 -1.4% PASS
total/synth/SUB/b0 6.23 6.01 -3.4% PASS
total/synth/SUB/b1 6.12 6.53 +6.6% PASS
total/synth/SWAP1/s0 3.43 3.44 +0.2% PASS
total/synth/SWAP10/s0 3.45 3.45 -0.0% PASS
total/synth/SWAP11/s0 3.94 3.66 -7.1% PASS
total/synth/SWAP12/s0 3.69 3.76 +2.2% PASS
total/synth/SWAP13/s0 3.45 3.45 +0.0% PASS
total/synth/SWAP14/s0 3.70 3.60 -2.8% PASS
total/synth/SWAP15/s0 3.80 4.44 +16.7% PASS
total/synth/SWAP16/s0 3.39 3.39 -0.0% PASS
total/synth/SWAP2/s0 3.78 4.11 +8.8% PASS
total/synth/SWAP3/s0 3.82 3.69 -3.5% PASS
total/synth/SWAP4/s0 3.44 3.44 -0.1% PASS
total/synth/SWAP5/s0 3.74 3.78 +0.9% PASS
total/synth/SWAP6/s0 3.88 3.85 -0.9% PASS
total/synth/SWAP7/s0 3.44 3.47 +0.7% PASS
total/synth/SWAP8/s0 3.72 3.93 +5.6% PASS
total/synth/SWAP9/s0 13.30 3.67 -72.4% PASS
total/synth/XOR/b0 4.95 4.99 +0.8% PASS
total/synth/XOR/b1 5.21 5.01 -3.7% PASS
total/synth/loop_v1 14.00 13.73 -1.9% PASS
total/synth/loop_v2 14.12 13.29 -5.9% PASS

Summary: 194 benchmarks, 0 regressions


✅ Performance Check Passed (multipass)

Performance Benchmark Results (threshold: 25%)

Benchmark Baseline (us) Current (us) Change Status
total/main/blake2b_huff/8415nulls 1.41 1.52 +8.3% PASS
total/main/blake2b_huff/empty 0.03 0.02 -9.9% PASS
total/main/blake2b_shifts/8415nulls 20.25 20.36 +0.6% PASS
total/main/sha1_divs/5311 12.40 11.53 -7.0% PASS
total/main/sha1_divs/empty 0.13 0.14 +9.0% PASS
total/main/sha1_shifts/5311 8.74 8.32 -4.8% PASS
total/main/sha1_shifts/empty 0.07 0.08 +6.6% PASS
total/main/snailtracer/benchmark 107.41 105.48 -1.8% PASS
total/main/structarray_alloc/nfts_rank 1.48 1.45 -1.7% PASS
total/main/swap_math/insufficient_liquidity 0.00 0.00 +0.4% PASS
total/main/swap_math/received 0.01 0.01 -2.5% PASS
total/main/swap_math/spent 0.01 0.01 +1.5% PASS
total/main/weierstrudel/1 0.38 0.38 -0.5% PASS
total/main/weierstrudel/15 4.32 4.45 +2.9% PASS
total/micro/JUMPDEST_n0/empty 0.00 0.00 -0.5% PASS
total/micro/jump_around/empty 0.05 0.05 +0.1% PASS
total/micro/loop_with_many_jumpdests/empty 0.01 0.01 +6.3% PASS
total/micro/memory_grow_mload/by1 0.02 0.02 +0.7% PASS
total/micro/memory_grow_mload/by16 0.02 0.02 +4.0% PASS
total/micro/memory_grow_mload/by32 0.01 0.01 -0.3% PASS
total/micro/memory_grow_mload/nogrow 0.01 0.01 -0.0% PASS
total/micro/memory_grow_mstore/by1 0.02 0.02 +0.3% PASS
total/micro/memory_grow_mstore/by16 0.01 0.01 +0.2% PASS
total/micro/memory_grow_mstore/by32 0.02 0.02 +4.2% PASS
total/micro/memory_grow_mstore/nogrow 0.02 0.02 +0.2% PASS
total/micro/signextend/one 0.09 0.09 -1.6% PASS
total/micro/signextend/zero 0.18 0.18 -1.7% PASS
total/synth/ADD/b0 0.00 0.00 -2.2% PASS
total/synth/ADD/b1 0.00 0.00 -0.0% PASS
total/synth/ADDRESS/a0 0.22 0.22 +0.8% PASS
total/synth/ADDRESS/a1 0.15 0.15 +0.2% PASS
total/synth/AND/b0 0.00 0.00 -4.7% PASS
total/synth/AND/b1 0.00 0.00 +0.3% PASS
total/synth/BYTE/b0 0.00 0.00 -4.3% PASS
total/synth/BYTE/b1 0.00 0.00 -0.9% PASS
total/synth/CALLDATASIZE/a0 0.10 0.10 -1.0% PASS
total/synth/CALLDATASIZE/a1 0.07 0.07 +0.2% PASS
total/synth/CALLER/a0 0.25 0.21 -15.3% PASS
total/synth/CALLER/a1 0.20 0.20 +0.9% PASS
total/synth/CALLVALUE/a0 0.19 0.19 +0.1% PASS
total/synth/CALLVALUE/a1 0.28 0.26 -7.1% PASS
total/synth/CODESIZE/a0 0.10 0.10 +5.4% PASS
total/synth/CODESIZE/a1 0.12 0.11 -12.3% PASS
total/synth/DUP1/d0 0.00 0.00 -0.3% PASS
total/synth/DUP1/d1 0.00 0.00 -0.3% PASS
total/synth/DUP10/d0 0.00 0.00 +0.1% PASS
total/synth/DUP10/d1 0.00 0.00 +1.9% PASS
total/synth/DUP11/d0 0.00 0.00 +2.3% PASS
total/synth/DUP11/d1 0.00 0.00 +0.5% PASS
total/synth/DUP12/d0 0.00 0.00 +0.3% PASS
total/synth/DUP12/d1 0.00 0.00 -2.4% PASS
total/synth/DUP13/d0 0.00 0.00 +0.3% PASS
total/synth/DUP13/d1 0.00 0.00 +0.1% PASS
total/synth/DUP14/d0 0.00 0.00 -4.3% PASS
total/synth/DUP14/d1 0.00 0.00 -0.3% PASS
total/synth/DUP15/d0 0.00 0.00 -1.9% PASS
total/synth/DUP15/d1 0.00 0.00 -5.7% PASS
total/synth/DUP16/d0 0.00 0.00 -0.3% PASS
total/synth/DUP16/d1 0.00 0.00 +0.1% PASS
total/synth/DUP2/d0 0.00 0.00 -3.6% PASS
total/synth/DUP2/d1 0.00 0.00 +0.3% PASS
total/synth/DUP3/d0 0.00 0.00 -1.8% PASS
total/synth/DUP3/d1 0.00 0.00 -1.7% PASS
total/synth/DUP4/d0 0.00 0.00 +0.3% PASS
total/synth/DUP4/d1 0.00 0.00 -1.4% PASS
total/synth/DUP5/d0 0.00 0.00 -0.7% PASS
total/synth/DUP5/d1 0.00 0.00 +0.8% PASS
total/synth/DUP6/d0 0.00 0.00 +0.8% PASS
total/synth/DUP6/d1 0.00 0.00 -2.3% PASS
total/synth/DUP7/d0 0.00 0.00 +0.9% PASS
total/synth/DUP7/d1 0.00 0.00 -1.2% PASS
total/synth/DUP8/d0 0.00 0.00 -4.3% PASS
total/synth/DUP8/d1 0.00 0.00 +0.1% PASS
total/synth/DUP9/d0 0.00 0.00 -0.1% PASS
total/synth/DUP9/d1 0.00 0.00 -3.3% PASS
total/synth/EQ/b0 0.00 0.00 -0.7% PASS
total/synth/EQ/b1 0.00 0.00 -1.9% PASS
total/synth/GAS/a0 0.86 0.86 +0.1% PASS
total/synth/GAS/a1 1.04 1.03 -0.5% PASS
total/synth/GT/b0 0.00 0.00 -0.1% PASS
total/synth/GT/b1 0.00 0.00 -1.0% PASS
total/synth/ISZERO/u0 0.00 0.00 -1.9% PASS
total/synth/JUMPDEST/n0 0.00 0.00 -4.9% PASS
total/synth/LT/b0 0.00 0.00 -1.6% PASS
total/synth/LT/b1 0.00 0.00 -2.4% PASS
total/synth/MSIZE/a0 0.00 0.00 -1.0% PASS
total/synth/MSIZE/a1 0.00 0.00 +0.4% PASS
total/synth/MUL/b0 0.00 0.00 -0.5% PASS
total/synth/MUL/b1 0.00 0.00 -1.2% PASS
total/synth/NOT/u0 0.00 0.00 -1.1% PASS
total/synth/OR/b0 0.00 0.00 +1.2% PASS
total/synth/OR/b1 0.00 0.00 -5.0% PASS
total/synth/PC/a0 0.00 0.00 -0.5% PASS
total/synth/PC/a1 0.00 0.00 -2.5% PASS
total/synth/PUSH1/p0 0.00 0.00 -0.6% PASS
total/synth/PUSH1/p1 0.00 0.00 -3.3% PASS
total/synth/PUSH10/p0 0.00 0.00 +0.8% PASS
total/synth/PUSH10/p1 0.00 0.00 -1.3% PASS
total/synth/PUSH11/p0 0.00 0.00 -0.8% PASS
total/synth/PUSH11/p1 0.00 0.00 -1.3% PASS
total/synth/PUSH12/p0 0.00 0.00 +0.2% PASS
total/synth/PUSH12/p1 0.00 0.00 -0.2% PASS
total/synth/PUSH13/p0 0.00 0.00 +0.4% PASS
total/synth/PUSH13/p1 0.00 0.00 -3.3% PASS
total/synth/PUSH14/p0 0.00 0.00 -0.8% PASS
total/synth/PUSH14/p1 0.00 0.00 -3.2% PASS
total/synth/PUSH15/p0 0.00 0.00 -0.6% PASS
total/synth/PUSH15/p1 0.00 0.00 -1.2% PASS
total/synth/PUSH16/p0 0.00 0.00 -1.0% PASS
total/synth/PUSH16/p1 0.00 0.00 -4.7% PASS
total/synth/PUSH17/p0 0.00 0.00 -0.4% PASS
total/synth/PUSH17/p1 0.00 0.00 -1.2% PASS
total/synth/PUSH18/p0 0.00 0.00 -2.5% PASS
total/synth/PUSH18/p1 0.00 0.00 -2.6% PASS
total/synth/PUSH19/p0 0.00 0.00 -1.7% PASS
total/synth/PUSH19/p1 0.00 0.00 -0.7% PASS
total/synth/PUSH2/p0 0.00 0.00 -2.4% PASS
total/synth/PUSH2/p1 0.00 0.00 +1.3% PASS
total/synth/PUSH20/p0 0.00 0.00 +2.3% PASS
total/synth/PUSH20/p1 0.00 0.00 -2.0% PASS
total/synth/PUSH21/p0 0.00 0.00 -4.4% PASS
total/synth/PUSH21/p1 0.00 0.00 -2.2% PASS
total/synth/PUSH22/p0 2.16 2.28 +5.8% PASS
total/synth/PUSH22/p1 1.80 1.76 -2.3% PASS
total/synth/PUSH23/p0 2.19 2.24 +2.4% PASS
total/synth/PUSH23/p1 2.22 2.31 +4.0% PASS
total/synth/PUSH24/p0 1.54 1.53 -0.6% PASS
total/synth/PUSH24/p1 2.26 2.18 -3.5% PASS
total/synth/PUSH25/p0 2.23 2.20 -1.4% PASS
total/synth/PUSH25/p1 1.79 1.76 -1.6% PASS
total/synth/PUSH26/p0 2.17 2.16 -0.5% PASS
total/synth/PUSH26/p1 2.23 2.29 +2.4% PASS
total/synth/PUSH27/p0 1.54 1.53 -0.9% PASS
total/synth/PUSH27/p1 2.21 2.31 +4.7% PASS
total/synth/PUSH28/p0 2.25 2.16 -4.3% PASS
total/synth/PUSH28/p1 1.80 1.76 -2.1% PASS
total/synth/PUSH29/p0 2.20 2.19 -0.2% PASS
total/synth/PUSH29/p1 2.22 2.17 -2.2% PASS
total/synth/PUSH3/p0 0.00 0.00 -1.8% PASS
total/synth/PUSH3/p1 0.00 0.00 +1.8% PASS
total/synth/PUSH30/p0 1.61 1.64 +2.4% PASS
total/synth/PUSH30/p1 2.30 2.18 -5.4% PASS
total/synth/PUSH31/p0 2.24 2.21 -1.1% PASS
total/synth/PUSH31/p1 1.84 1.80 -2.2% PASS
total/synth/PUSH32/p0 2.35 2.31 -1.5% PASS
total/synth/PUSH32/p1 2.19 2.43 +11.0% PASS
total/synth/PUSH4/p0 0.00 0.00 -2.0% PASS
total/synth/PUSH4/p1 0.00 0.00 +0.9% PASS
total/synth/PUSH5/p0 0.00 0.00 -3.1% PASS
total/synth/PUSH5/p1 0.00 0.00 -2.0% PASS
total/synth/PUSH6/p0 0.00 0.00 -1.4% PASS
total/synth/PUSH6/p1 0.00 0.00 -0.8% PASS
total/synth/PUSH7/p0 0.00 0.00 +6.5% PASS
total/synth/PUSH7/p1 0.00 0.00 -3.9% PASS
total/synth/PUSH8/p0 0.00 0.00 +0.0% PASS
total/synth/PUSH8/p1 0.00 0.00 +3.4% PASS
total/synth/PUSH9/p0 0.00 0.00 +2.1% PASS
total/synth/PUSH9/p1 0.00 0.00 +2.7% PASS
total/synth/RETURNDATASIZE/a0 0.03 0.03 -0.3% PASS
total/synth/RETURNDATASIZE/a1 0.05 0.05 -6.4% PASS
total/synth/SAR/b0 0.00 0.00 -2.3% PASS
total/synth/SAR/b1 0.00 0.00 +0.3% PASS
total/synth/SGT/b0 0.00 0.00 -2.2% PASS
total/synth/SGT/b1 0.00 0.00 -2.5% PASS
total/synth/SHL/b0 0.00 0.00 -1.0% PASS
total/synth/SHL/b1 0.00 0.00 -1.4% PASS
total/synth/SHR/b0 0.00 0.00 +20.0% PASS
total/synth/SHR/b1 0.00 0.00 +0.9% PASS
total/synth/SIGNEXTEND/b0 0.00 0.00 -2.7% PASS
total/synth/SIGNEXTEND/b1 0.00 0.00 -0.6% PASS
total/synth/SLT/b0 0.00 0.00 -3.9% PASS
total/synth/SLT/b1 0.00 0.00 +0.8% PASS
total/synth/SUB/b0 0.00 0.00 -0.9% PASS
total/synth/SUB/b1 0.00 0.00 +1.9% PASS
total/synth/SWAP1/s0 0.00 0.00 -3.1% PASS
total/synth/SWAP10/s0 0.00 0.00 -1.9% PASS
total/synth/SWAP11/s0 0.00 0.00 -1.0% PASS
total/synth/SWAP12/s0 0.00 0.00 +0.7% PASS
total/synth/SWAP13/s0 0.00 0.00 -1.2% PASS
total/synth/SWAP14/s0 0.00 0.00 +0.5% PASS
total/synth/SWAP15/s0 0.00 0.00 +0.7% PASS
total/synth/SWAP16/s0 0.00 0.00 -0.0% PASS
total/synth/SWAP2/s0 0.00 0.00 -0.7% PASS
total/synth/SWAP3/s0 0.00 0.00 -0.3% PASS
total/synth/SWAP4/s0 0.00 0.00 -2.5% PASS
total/synth/SWAP5/s0 0.00 0.00 +1.4% PASS
total/synth/SWAP6/s0 0.00 0.00 -0.8% PASS
total/synth/SWAP7/s0 0.00 0.00 -1.6% PASS
total/synth/SWAP8/s0 0.00 0.00 -0.0% PASS
total/synth/SWAP9/s0 0.00 0.00 +0.2% PASS
total/synth/XOR/b0 0.00 0.00 +0.2% PASS
total/synth/XOR/b1 0.00 0.00 +1.5% PASS
total/synth/loop_v1 13.30 12.89 -3.0% PASS
total/synth/loop_v2 11.86 12.92 +8.9% PASS

Summary: 194 benchmarks, 0 regressions


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.

2 participants