Skip to content

fix(evm): pin MLOAD results to prevent stale memory reads in multipass JIT#364

Open
starwarfan wants to merge 2 commits intoDTVMStack:mainfrom
starwarfan:fix-mload-memory-read-ordering
Open

fix(evm): pin MLOAD results to prevent stale memory reads in multipass JIT#364
starwarfan wants to merge 2 commits intoDTVMStack:mainfrom
starwarfan:fix-mload-memory-read-ordering

Conversation

@starwarfan
Copy link
Contributor

MLOAD's convertBytes32ToU256Operand generates load instructions from the EVM memory buffer that are represented as SSA values in the MIR. When the MLOAD result stays on the EVM stack across a memory-writing opcode (CODECOPY, MSTORE, EXTCODECOPY, etc.), the backend may schedule these loads after the write, causing the MLOAD to observe the new memory contents instead of the value at the time of the MLOAD.

Pin the four uint64 components into local variables immediately after the loads, creating a data dependency that prevents reordering past subsequent function calls.

Fixes 2 fuzz crashes (crash-0e10c1dd, crash-cdb6d9e4) where MLOAD returned code bytes written by a later CODECOPY, producing non-zero upper bits that triggered a spurious GasLimitExceeded.

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):

src/compiler/evm_frontend/evm_mir_compiler.cpp

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

Root cause: In the multipass JIT compiler, handleMLoad converts the 32-byte memory read into a 4-component uint256 Operand via convertBytes32ToU256Operand. This function emits four LoadInstruction MIR nodes that read directly from the EVM memory buffer pointer. These MIR nodes are SSA values—the Operand merely holds pointers to them on the compile-time stack. When LLVM later compiles these nodes to native code, it may schedule them at the point of use rather than the point of definition, because it sees no data dependency forcing early execution.

If a memory-writing opcode (CODECOPY, EXTCODECOPY, MSTORE, etc.) occurs between the MLOAD and the eventual use of its result, LLVM can legally move the loads past the write call, causing the MLOAD to read modified memory. In the fuzz crashes, CODECOPY wrote bytecode to memory at offset 0. A previous MLOAD(0) result was still on the stack. When that result was later consumed by normalizeOperandU64 (for a second CODECOPY's size argument), the loads read the new code bytes instead of zeros. The non-zero upper bits triggered GasLimitExceeded.

Fix: After convertBytes32ToU256Operand, immediately store each component into a local variable via storeInstructionInTemp and reload it. This creates a register-spill/reload sequence that the backend cannot reorder past function calls, ensuring the memory read is pinned to the MLOAD's position in the instruction stream.

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

  • N
  • Y

5. Provide a description of the tests:

Verified both crash files pass with the fix using evmone-fuzzer in multipass mode. Also verified that no other fixed crash files regressed.

Made with Cursor

…s JIT

MLOAD's convertBytes32ToU256Operand generates load instructions from the
EVM memory buffer that are represented as SSA values in the MIR.  When
the MLOAD result stays on the EVM stack across a memory-writing opcode
(CODECOPY, MSTORE, EXTCODECOPY, etc.), the backend may schedule these
loads after the write, causing the MLOAD to observe the *new* memory
contents instead of the value at the time of the MLOAD.

Pin the four uint64 components into local variables immediately after
the loads, creating a data dependency that prevents reordering past
subsequent function calls.

Fixes 2 fuzz crashes (crash-0e10c1dd, crash-cdb6d9e4) where MLOAD
returned code bytes written by a later CODECOPY, producing non-zero
upper bits that triggered a spurious GasLimitExceeded.

Made-with: Cursor
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Fixes a multipass JIT miscompile where MLOAD results could observe later memory writes due to backend reordering of the underlying memory loads, leading to incorrect values and fuzz crashes.

Changes:

  • In handleMLoad, “pins” the four 64-bit components produced by convertBytes32ToU256Operand into temporaries immediately after loading.
  • Reconstructs the UINT256 operand from the reloaded components to enforce an ordering/data-dependency barrier against later memory-writing opcodes.

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

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@github-actions
Copy link

⚡ Performance Regression Check Results

✅ Performance Check Passed (interpreter)

Performance Benchmark Results (threshold: 20%)

Benchmark Baseline (us) Current (us) Change Status
total/main/blake2b_huff/8415nulls 1.68 1.66 -1.4% PASS
total/main/blake2b_huff/empty 0.08 0.08 -0.7% PASS
total/main/blake2b_shifts/8415nulls 15.45 15.32 -0.8% PASS
total/main/sha1_divs/5311 6.50 6.48 -0.4% PASS
total/main/sha1_divs/empty 0.09 0.09 +0.2% PASS
total/main/sha1_shifts/5311 4.59 4.55 -0.9% PASS
total/main/sha1_shifts/empty 0.06 0.06 -0.3% PASS
total/main/snailtracer/benchmark 60.75 61.25 +0.9% PASS
total/main/structarray_alloc/nfts_rank 1.13 1.13 -0.3% PASS
total/main/swap_math/insufficient_liquidity 0.01 0.01 +0.6% PASS
total/main/swap_math/received 0.01 0.01 -1.9% PASS
total/main/swap_math/spent 0.01 0.01 -2.8% PASS
total/main/weierstrudel/1 0.29 0.29 -0.3% PASS
total/main/weierstrudel/15 2.69 2.68 -0.4% PASS
total/micro/JUMPDEST_n0/empty 1.64 1.64 -0.0% PASS
total/micro/jump_around/empty 0.13 0.13 -0.3% PASS
total/micro/loop_with_many_jumpdests/empty 24.95 18.66 -25.2% PASS
total/micro/memory_grow_mload/by1 0.13 0.13 -0.0% PASS
total/micro/memory_grow_mload/by16 0.19 0.19 -2.6% PASS
total/micro/memory_grow_mload/by32 0.22 0.21 -2.0% PASS
total/micro/memory_grow_mload/nogrow 0.13 0.13 +0.0% PASS
total/micro/memory_grow_mstore/by1 0.16 0.16 -0.8% PASS
total/micro/memory_grow_mstore/by16 0.21 0.18 -13.0% PASS
total/micro/memory_grow_mstore/by32 0.21 0.19 -12.3% PASS
total/micro/memory_grow_mstore/nogrow 0.15 0.15 -0.1% PASS
total/micro/signextend/one 0.26 0.26 -0.8% PASS
total/micro/signextend/zero 0.26 0.26 +0.1% PASS
total/synth/ADD/b0 2.25 2.25 +0.0% PASS
total/synth/ADD/b1 2.22 2.15 -3.2% PASS
total/synth/ADDRESS/a0 4.32 4.32 +0.1% PASS
total/synth/ADDRESS/a1 4.70 4.79 +1.9% PASS
total/synth/AND/b0 1.88 1.96 +4.5% PASS
total/synth/AND/b1 2.04 2.20 +7.6% PASS
total/synth/BYTE/b0 6.03 6.05 +0.3% PASS
total/synth/BYTE/b1 4.87 4.79 -1.7% PASS
total/synth/CALLDATASIZE/a0 2.43 2.45 +0.8% PASS
total/synth/CALLDATASIZE/a1 2.95 2.95 +0.2% PASS
total/synth/CALLER/a0 4.31 4.30 -0.1% PASS
total/synth/CALLER/a1 5.11 5.12 +0.2% PASS
total/synth/CALLVALUE/a0 2.18 1.97 -9.7% PASS
total/synth/CALLVALUE/a1 2.19 2.23 +1.4% PASS
total/synth/CODESIZE/a0 2.45 2.45 -0.1% PASS
total/synth/CODESIZE/a1 3.10 3.09 -0.3% PASS
total/synth/DUP1/d0 1.40 1.48 +5.5% PASS
total/synth/DUP1/d1 1.49 1.55 +4.5% PASS
total/synth/DUP10/d0 1.46 1.48 +1.2% PASS
total/synth/DUP10/d1 1.51 1.49 -1.4% PASS
total/synth/DUP11/d0 1.49 1.49 +0.1% PASS
total/synth/DUP11/d1 1.49 1.55 +3.8% PASS
total/synth/DUP12/d0 1.49 1.41 -5.4% PASS
total/synth/DUP12/d1 1.49 1.48 -0.6% PASS
total/synth/DUP13/d0 1.49 1.49 +0.0% PASS
total/synth/DUP13/d1 1.50 1.49 -0.5% PASS
total/synth/DUP14/d0 1.49 1.41 -5.5% PASS
total/synth/DUP14/d1 1.56 1.54 -1.8% PASS
total/synth/DUP15/d0 1.50 1.50 +0.1% PASS
total/synth/DUP15/d1 1.49 1.48 -0.6% PASS
total/synth/DUP16/d0 1.49 1.48 -0.6% PASS
total/synth/DUP16/d1 1.54 1.50 -2.4% PASS
total/synth/DUP2/d0 1.48 1.47 -0.9% PASS
total/synth/DUP2/d1 1.49 1.50 +0.9% PASS
total/synth/DUP3/d0 1.49 1.48 -0.7% PASS
total/synth/DUP3/d1 1.49 1.51 +1.1% PASS
total/synth/DUP4/d0 1.49 1.40 -5.7% PASS
total/synth/DUP4/d1 1.54 1.53 -0.3% PASS
total/synth/DUP5/d0 1.48 1.40 -5.6% PASS
total/synth/DUP5/d1 1.49 1.44 -3.0% PASS
total/synth/DUP6/d0 1.48 1.40 -5.9% PASS
total/synth/DUP6/d1 1.50 1.48 -1.3% PASS
total/synth/DUP7/d0 1.49 1.48 -0.1% PASS
total/synth/DUP7/d1 1.49 1.49 +0.1% PASS
total/synth/DUP8/d0 1.49 1.41 -5.3% PASS
total/synth/DUP8/d1 1.53 1.47 -3.6% PASS
total/synth/DUP9/d0 1.49 1.43 -3.9% PASS
total/synth/DUP9/d1 1.51 1.50 -0.2% PASS
total/synth/EQ/b0 4.78 4.80 +0.5% PASS
total/synth/EQ/b1 4.80 4.81 +0.1% PASS
total/synth/GAS/a0 2.91 2.91 +0.0% PASS
total/synth/GAS/a1 3.54 3.53 -0.3% PASS
total/synth/GT/b0 4.56 4.56 +0.0% PASS
total/synth/GT/b1 4.46 4.50 +0.9% PASS
total/synth/ISZERO/u0 6.99 6.99 +0.1% PASS
total/synth/JUMPDEST/n0 1.64 1.64 -0.1% PASS
total/synth/LT/b0 4.56 4.56 +0.1% PASS
total/synth/LT/b1 4.44 4.68 +5.3% PASS
total/synth/MSIZE/a0 3.83 3.82 -0.4% PASS
total/synth/MSIZE/a1 4.31 4.32 +0.2% PASS
total/synth/MUL/b0 4.04 4.04 -0.0% PASS
total/synth/MUL/b1 4.20 4.18 -0.5% PASS
total/synth/NOT/u0 1.65 1.71 +3.6% PASS
total/synth/OR/b0 1.95 1.97 +0.9% PASS
total/synth/OR/b1 1.97 2.03 +2.9% PASS
total/synth/PC/a0 2.45 2.45 +0.0% PASS
total/synth/PC/a1 2.98 2.99 +0.1% PASS
total/synth/PUSH1/p0 1.74 1.74 -0.3% PASS
total/synth/PUSH1/p1 1.51 1.51 +0.1% PASS
total/synth/PUSH10/p0 1.76 1.76 -0.1% PASS
total/synth/PUSH10/p1 1.57 1.51 -4.1% PASS
total/synth/PUSH11/p0 1.78 1.76 -0.8% PASS
total/synth/PUSH11/p1 1.57 1.59 +1.7% PASS
total/synth/PUSH12/p0 1.77 1.76 -0.6% PASS
total/synth/PUSH12/p1 1.56 1.56 +0.0% PASS
total/synth/PUSH13/p0 1.77 1.77 +0.2% PASS
total/synth/PUSH13/p1 1.56 1.56 +0.3% PASS
total/synth/PUSH14/p0 1.79 1.80 +0.6% PASS
total/synth/PUSH14/p1 1.60 1.59 -0.4% PASS
total/synth/PUSH15/p0 1.78 1.79 +0.7% PASS
total/synth/PUSH15/p1 1.67 1.66 -0.1% PASS
total/synth/PUSH16/p0 1.78 1.78 -0.1% PASS
total/synth/PUSH16/p1 1.57 1.56 -0.9% PASS
total/synth/PUSH17/p0 1.78 1.78 -0.0% PASS
total/synth/PUSH17/p1 1.57 1.58 +0.3% PASS
total/synth/PUSH18/p0 1.79 1.78 -0.7% PASS
total/synth/PUSH18/p1 1.58 1.55 -2.2% PASS
total/synth/PUSH19/p0 1.79 1.80 +0.9% PASS
total/synth/PUSH19/p1 1.54 1.57 +1.6% PASS
total/synth/PUSH2/p0 1.74 1.74 -0.1% PASS
total/synth/PUSH2/p1 1.52 1.52 +0.3% PASS
total/synth/PUSH20/p0 1.80 1.79 -0.4% PASS
total/synth/PUSH20/p1 1.59 1.57 -1.1% PASS
total/synth/PUSH21/p0 1.81 1.79 -0.7% PASS
total/synth/PUSH21/p1 1.55 1.58 +2.1% PASS
total/synth/PUSH22/p0 1.79 1.80 +0.5% PASS
total/synth/PUSH22/p1 1.59 1.58 -0.3% PASS
total/synth/PUSH23/p0 1.79 1.79 -0.5% PASS
total/synth/PUSH23/p1 1.61 1.60 -0.5% PASS
total/synth/PUSH24/p0 1.81 1.80 -0.5% PASS
total/synth/PUSH24/p1 1.61 1.61 -0.0% PASS
total/synth/PUSH25/p0 1.80 1.80 -0.2% PASS
total/synth/PUSH25/p1 1.63 1.56 -4.6% PASS
total/synth/PUSH26/p0 1.80 1.80 -0.1% PASS
total/synth/PUSH26/p1 1.64 1.61 -1.6% PASS
total/synth/PUSH27/p0 1.81 1.80 -0.5% PASS
total/synth/PUSH27/p1 1.63 1.61 -1.6% PASS
total/synth/PUSH28/p0 1.82 1.81 -0.3% PASS
total/synth/PUSH28/p1 1.56 1.63 +4.1% PASS
total/synth/PUSH29/p0 1.81 1.81 -0.0% PASS
total/synth/PUSH29/p1 1.61 1.65 +2.3% PASS
total/synth/PUSH3/p0 1.75 1.75 +0.3% PASS
total/synth/PUSH3/p1 1.54 1.54 +0.6% PASS
total/synth/PUSH30/p0 1.84 1.83 -0.7% PASS
total/synth/PUSH30/p1 1.65 1.63 -0.8% PASS
total/synth/PUSH31/p0 1.83 1.82 -0.4% PASS
total/synth/PUSH31/p1 1.76 1.73 -1.7% PASS
total/synth/PUSH32/p0 1.82 1.81 -0.4% PASS
total/synth/PUSH32/p1 1.64 1.66 +1.4% PASS
total/synth/PUSH4/p0 1.75 1.75 -0.0% PASS
total/synth/PUSH4/p1 1.54 1.54 -0.2% PASS
total/synth/PUSH5/p0 1.76 1.76 +0.0% PASS
total/synth/PUSH5/p1 1.53 1.53 -0.2% PASS
total/synth/PUSH6/p0 1.77 1.75 -1.1% PASS
total/synth/PUSH6/p1 1.58 1.52 -3.9% PASS
total/synth/PUSH7/p0 1.75 1.76 +0.2% PASS
total/synth/PUSH7/p1 1.56 1.56 -0.4% PASS
total/synth/PUSH8/p0 1.76 1.76 -0.1% PASS
total/synth/PUSH8/p1 1.57 1.54 -2.0% PASS
total/synth/PUSH9/p0 1.76 1.78 +0.8% PASS
total/synth/PUSH9/p1 1.55 1.57 +1.7% PASS
total/synth/RETURNDATASIZE/a0 2.46 2.45 -0.6% PASS
total/synth/RETURNDATASIZE/a1 3.25 3.24 -0.5% PASS
total/synth/SAR/b0 3.42 3.43 +0.1% PASS
total/synth/SAR/b1 3.83 3.77 -1.7% PASS
total/synth/SGT/b0 4.71 4.68 -0.5% PASS
total/synth/SGT/b1 4.30 4.41 +2.4% PASS
total/synth/SHL/b0 3.67 3.68 +0.4% PASS
total/synth/SHL/b1 2.23 2.22 -0.6% PASS
total/synth/SHR/b0 2.96 3.02 +1.9% PASS
total/synth/SHR/b1 2.15 2.24 +4.1% PASS
total/synth/SIGNEXTEND/b0 2.05 2.05 +0.0% PASS
total/synth/SIGNEXTEND/b1 2.22 2.15 -3.0% PASS
total/synth/SLT/b0 4.71 4.71 +0.0% PASS
total/synth/SLT/b1 4.38 4.27 -2.4% PASS
total/synth/SUB/b0 2.25 2.25 +0.3% PASS
total/synth/SUB/b1 2.38 2.22 -7.0% PASS
total/synth/SWAP1/s0 1.77 2.30 +30.0% PASS
total/synth/SWAP10/s0 2.31 2.31 +0.1% PASS
total/synth/SWAP11/s0 2.33 2.31 -0.6% PASS
total/synth/SWAP12/s0 2.31 2.32 +0.1% PASS
total/synth/SWAP13/s0 2.30 2.31 +0.6% PASS
total/synth/SWAP14/s0 2.15 2.32 +7.9% PASS
total/synth/SWAP15/s0 2.32 2.32 +0.0% PASS
total/synth/SWAP16/s0 2.31 2.32 +0.3% PASS
total/synth/SWAP2/s0 1.82 2.30 +26.5% PASS
total/synth/SWAP3/s0 2.15 2.15 -0.1% PASS
total/synth/SWAP4/s0 2.15 2.30 +7.0% PASS
total/synth/SWAP5/s0 2.15 2.31 +7.6% PASS
total/synth/SWAP6/s0 2.15 2.30 +7.2% PASS
total/synth/SWAP7/s0 2.15 2.14 -0.1% PASS
total/synth/SWAP8/s0 2.31 2.31 +0.1% PASS
total/synth/SWAP9/s0 2.17 2.32 +7.0% PASS
total/synth/XOR/b0 1.96 1.96 +0.3% PASS
total/synth/XOR/b1 2.15 2.05 -4.5% PASS
total/synth/loop_v1 6.77 6.99 +3.3% PASS
total/synth/loop_v2 6.78 6.82 +0.5% PASS

Summary: 194 benchmarks, 0 regressions


✅ Performance Check Passed (multipass)

Performance Benchmark Results (threshold: 20%)

Benchmark Baseline (us) Current (us) Change Status
total/main/blake2b_huff/8415nulls 1.73 1.73 +0.2% PASS
total/main/blake2b_huff/empty 0.13 0.12 -0.7% PASS
total/main/blake2b_shifts/8415nulls 6.54 6.48 -1.0% PASS
total/main/sha1_divs/5311 3.42 3.42 +0.1% PASS
total/main/sha1_divs/empty 0.05 0.05 +1.0% PASS
total/main/sha1_shifts/5311 3.76 3.75 -0.1% PASS
total/main/sha1_shifts/empty 0.06 0.06 +0.2% PASS
total/main/snailtracer/benchmark 62.03 64.90 +4.6% PASS
total/main/structarray_alloc/nfts_rank 0.31 0.31 -1.7% PASS
total/main/swap_math/insufficient_liquidity 0.03 0.03 -0.6% PASS
total/main/swap_math/received 0.03 0.03 -1.0% PASS
total/main/swap_math/spent 0.03 0.03 -1.4% PASS
total/main/weierstrudel/1 0.40 0.40 -0.7% PASS
total/main/weierstrudel/15 2.82 2.87 +1.7% PASS
total/micro/JUMPDEST_n0/empty 0.18 0.18 -0.5% PASS
total/micro/jump_around/empty 0.69 0.69 -0.2% PASS
total/micro/loop_with_many_jumpdests/empty 2.49 2.47 -0.9% PASS
total/micro/memory_grow_mload/by1 0.22 0.23 +4.9% PASS
total/micro/memory_grow_mload/by16 0.24 0.25 +2.8% PASS
total/micro/memory_grow_mload/by32 0.27 0.27 -0.7% PASS
total/micro/memory_grow_mload/nogrow 0.22 0.23 +5.1% PASS
total/micro/memory_grow_mstore/by1 0.25 0.25 -0.5% PASS
total/micro/memory_grow_mstore/by16 0.26 0.26 -0.6% PASS
total/micro/memory_grow_mstore/by32 0.27 0.27 -1.1% PASS
total/micro/memory_grow_mstore/nogrow 0.24 0.24 -0.6% PASS
total/micro/signextend/one 0.38 0.38 -0.1% PASS
total/micro/signextend/zero 0.38 0.38 -0.1% PASS
total/synth/ADD/b0 0.02 0.02 -0.1% PASS
total/synth/ADD/b1 0.02 0.02 -0.2% PASS
total/synth/ADDRESS/a0 0.99 0.91 -8.2% PASS
total/synth/ADDRESS/a1 1.02 0.94 -7.9% PASS
total/synth/AND/b0 0.02 0.02 -0.2% PASS
total/synth/AND/b1 0.02 0.02 +1.6% PASS
total/synth/BYTE/b0 1.99 1.97 -1.0% PASS
total/synth/BYTE/b1 2.33 2.33 +0.0% PASS
total/synth/CALLDATASIZE/a0 0.66 0.74 +12.6% PASS
total/synth/CALLDATASIZE/a1 0.68 0.77 +12.5% PASS
total/synth/CALLER/a0 0.99 0.96 -3.0% PASS
total/synth/CALLER/a1 1.17 1.02 -13.1% PASS
total/synth/CALLVALUE/a0 0.66 0.50 -23.9% PASS
total/synth/CALLVALUE/a1 0.69 0.53 -24.2% PASS
total/synth/CODESIZE/a0 0.66 0.74 +12.4% PASS
total/synth/CODESIZE/a1 0.68 0.76 +12.4% PASS
total/synth/DUP1/d0 0.02 0.02 +0.2% PASS
total/synth/DUP1/d1 0.02 0.02 -0.0% PASS
total/synth/DUP10/d0 0.02 0.02 -0.4% PASS
total/synth/DUP10/d1 0.02 0.02 +0.1% PASS
total/synth/DUP11/d0 0.02 0.02 -0.0% PASS
total/synth/DUP11/d1 0.02 0.02 -0.1% PASS
total/synth/DUP12/d0 0.02 0.02 -0.0% PASS
total/synth/DUP12/d1 0.02 0.02 -0.1% PASS
total/synth/DUP13/d0 0.02 0.02 -0.1% PASS
total/synth/DUP13/d1 0.02 0.02 -0.0% PASS
total/synth/DUP14/d0 0.02 0.02 +0.3% PASS
total/synth/DUP14/d1 0.02 0.02 -0.0% PASS
total/synth/DUP15/d0 0.02 0.02 +0.1% PASS
total/synth/DUP15/d1 0.02 0.02 +0.1% PASS
total/synth/DUP16/d0 0.02 0.02 -0.1% PASS
total/synth/DUP16/d1 0.02 0.02 -0.1% PASS
total/synth/DUP2/d0 0.02 0.02 -0.1% PASS
total/synth/DUP2/d1 0.02 0.02 -0.3% PASS
total/synth/DUP3/d0 0.02 0.02 -0.4% PASS
total/synth/DUP3/d1 0.02 0.02 -0.3% PASS
total/synth/DUP4/d0 0.02 0.02 +0.0% PASS
total/synth/DUP4/d1 0.02 0.02 +0.1% PASS
total/synth/DUP5/d0 0.02 0.02 +0.0% PASS
total/synth/DUP5/d1 0.02 0.02 +0.2% PASS
total/synth/DUP6/d0 0.02 0.02 -0.1% PASS
total/synth/DUP6/d1 0.02 0.02 +0.1% PASS
total/synth/DUP7/d0 0.02 0.02 +0.0% PASS
total/synth/DUP7/d1 0.02 0.02 +0.2% PASS
total/synth/DUP8/d0 0.02 0.02 -0.1% PASS
total/synth/DUP8/d1 0.02 0.02 -0.2% PASS
total/synth/DUP9/d0 0.02 0.02 +1.0% PASS
total/synth/DUP9/d1 0.02 0.02 -0.0% PASS
total/synth/EQ/b0 0.02 0.02 +0.1% PASS
total/synth/EQ/b1 0.02 0.02 -0.2% PASS
total/synth/GAS/a0 1.01 1.01 +0.3% PASS
total/synth/GAS/a1 1.05 1.05 -0.3% PASS
total/synth/GT/b0 0.02 0.02 -0.2% PASS
total/synth/GT/b1 0.02 0.02 -0.0% PASS
total/synth/ISZERO/u0 0.02 0.02 -0.2% PASS
total/synth/JUMPDEST/n0 0.18 0.18 -0.6% PASS
total/synth/LT/b0 0.02 0.02 +0.1% PASS
total/synth/LT/b1 0.02 0.02 -0.6% PASS
total/synth/MSIZE/a0 0.02 0.02 -0.3% PASS
total/synth/MSIZE/a1 0.02 0.02 -0.3% PASS
total/synth/MUL/b0 4.06 4.06 -0.0% PASS
total/synth/MUL/b1 4.41 4.38 -0.7% PASS
total/synth/NOT/u0 0.02 0.02 -0.0% PASS
total/synth/OR/b0 0.02 0.02 -0.2% PASS
total/synth/OR/b1 0.02 0.02 +0.4% PASS
total/synth/PC/a0 0.02 0.02 -0.6% PASS
total/synth/PC/a1 0.02 0.02 -0.4% PASS
total/synth/PUSH1/p0 0.02 0.02 -0.1% PASS
total/synth/PUSH1/p1 0.02 0.02 -0.2% PASS
total/synth/PUSH10/p0 0.04 0.04 +3.0% PASS
total/synth/PUSH10/p1 0.04 0.04 +1.3% PASS
total/synth/PUSH11/p0 0.05 0.05 +2.1% PASS
total/synth/PUSH11/p1 0.05 0.05 +1.2% PASS
total/synth/PUSH12/p0 0.05 0.05 +2.4% PASS
total/synth/PUSH12/p1 0.05 0.05 +2.9% PASS
total/synth/PUSH13/p0 0.05 0.05 +2.7% PASS
total/synth/PUSH13/p1 0.05 0.05 +2.9% PASS
total/synth/PUSH14/p0 0.05 0.06 +3.5% PASS
total/synth/PUSH14/p1 0.05 0.06 +3.9% PASS
total/synth/PUSH15/p0 0.06 0.06 +3.8% PASS
total/synth/PUSH15/p1 0.06 0.06 +4.0% PASS
total/synth/PUSH16/p0 0.06 0.06 +2.5% PASS
total/synth/PUSH16/p1 0.06 0.06 +1.0% PASS
total/synth/PUSH17/p0 0.06 0.06 -0.4% PASS
total/synth/PUSH17/p1 0.06 0.06 -0.3% PASS
total/synth/PUSH18/p0 0.06 0.06 -0.7% PASS
total/synth/PUSH18/p1 0.06 0.06 -1.2% PASS
total/synth/PUSH19/p0 0.07 0.07 -0.1% PASS
total/synth/PUSH19/p1 0.07 0.07 -0.5% PASS
total/synth/PUSH2/p0 0.02 0.02 +0.7% PASS
total/synth/PUSH2/p1 0.02 0.02 -0.4% PASS
total/synth/PUSH20/p0 0.07 0.07 +0.3% PASS
total/synth/PUSH20/p1 0.07 0.07 -0.3% PASS
total/synth/PUSH21/p0 0.07 0.07 -0.0% PASS
total/synth/PUSH21/p1 0.07 0.07 -0.2% PASS
total/synth/PUSH22/p0 1.80 1.80 +0.0% PASS
total/synth/PUSH22/p1 1.56 1.56 +0.3% PASS
total/synth/PUSH23/p0 1.81 1.80 -0.4% PASS
total/synth/PUSH23/p1 1.61 1.63 +1.4% PASS
total/synth/PUSH24/p0 1.81 1.81 +0.0% PASS
total/synth/PUSH24/p1 1.56 1.56 +0.1% PASS
total/synth/PUSH25/p0 1.81 1.81 +0.0% PASS
total/synth/PUSH25/p1 1.60 1.57 -1.4% PASS
total/synth/PUSH26/p0 1.81 1.81 -0.0% PASS
total/synth/PUSH26/p1 1.62 1.57 -3.3% PASS
total/synth/PUSH27/p0 1.82 1.82 -0.1% PASS
total/synth/PUSH27/p1 1.64 1.57 -4.2% PASS
total/synth/PUSH28/p0 1.82 1.82 -0.0% PASS
total/synth/PUSH28/p1 1.57 1.58 +0.2% PASS
total/synth/PUSH29/p0 1.82 1.82 -0.1% PASS
total/synth/PUSH29/p1 1.58 1.57 -0.2% PASS
total/synth/PUSH3/p0 0.03 0.02 -2.2% PASS
total/synth/PUSH3/p1 0.02 0.02 -0.7% PASS
total/synth/PUSH30/p0 1.84 1.86 +0.8% PASS
total/synth/PUSH30/p1 1.60 1.60 +0.0% PASS
total/synth/PUSH31/p0 1.89 1.83 -3.0% PASS
total/synth/PUSH31/p1 1.63 1.62 -0.8% PASS
total/synth/PUSH32/p0 1.83 1.83 +0.0% PASS
total/synth/PUSH32/p1 1.66 1.58 -4.4% PASS
total/synth/PUSH4/p0 0.03 0.03 -1.9% PASS
total/synth/PUSH4/p1 0.03 0.03 -1.5% PASS
total/synth/PUSH5/p0 0.03 0.03 -2.6% PASS
total/synth/PUSH5/p1 0.03 0.03 -2.0% PASS
total/synth/PUSH6/p0 0.03 0.03 -2.9% PASS
total/synth/PUSH6/p1 0.03 0.03 +1.1% PASS
total/synth/PUSH7/p0 0.04 0.04 +2.0% PASS
total/synth/PUSH7/p1 0.04 0.04 +1.3% PASS
total/synth/PUSH8/p0 0.04 0.04 +0.7% PASS
total/synth/PUSH8/p1 0.04 0.04 +1.2% PASS
total/synth/PUSH9/p0 0.04 0.04 +2.4% PASS
total/synth/PUSH9/p1 0.04 0.04 +2.4% PASS
total/synth/RETURNDATASIZE/a0 0.66 0.66 +0.3% PASS
total/synth/RETURNDATASIZE/a1 0.68 0.68 +0.1% PASS
total/synth/SAR/b0 3.45 3.44 -0.3% PASS
total/synth/SAR/b1 3.89 4.02 +3.3% PASS
total/synth/SGT/b0 0.02 0.02 +0.0% PASS
total/synth/SGT/b1 0.02 0.02 -0.3% PASS
total/synth/SHL/b0 3.69 3.67 -0.5% PASS
total/synth/SHL/b1 2.04 2.17 +6.1% PASS
total/synth/SHR/b0 3.00 2.98 -0.7% PASS
total/synth/SHR/b1 2.23 2.38 +6.9% PASS
total/synth/SIGNEXTEND/b0 2.07 2.07 +0.2% PASS
total/synth/SIGNEXTEND/b1 2.47 2.40 -2.9% PASS
total/synth/SLT/b0 0.02 0.02 -0.1% PASS
total/synth/SLT/b1 0.02 0.02 -0.1% PASS
total/synth/SUB/b0 0.02 0.02 -0.1% PASS
total/synth/SUB/b1 0.02 0.02 -0.1% PASS
total/synth/SWAP1/s0 0.02 0.02 -0.0% PASS
total/synth/SWAP10/s0 0.02 0.02 +0.2% PASS
total/synth/SWAP11/s0 0.02 0.02 +0.3% PASS
total/synth/SWAP12/s0 0.02 0.02 +0.1% PASS
total/synth/SWAP13/s0 0.02 0.02 -0.3% PASS
total/synth/SWAP14/s0 0.02 0.02 +0.0% PASS
total/synth/SWAP15/s0 0.02 0.02 +0.0% PASS
total/synth/SWAP16/s0 0.02 0.02 -0.4% PASS
total/synth/SWAP2/s0 0.02 0.02 +0.1% PASS
total/synth/SWAP3/s0 0.02 0.02 -0.1% PASS
total/synth/SWAP4/s0 0.02 0.02 +0.0% PASS
total/synth/SWAP5/s0 0.02 0.02 +0.0% PASS
total/synth/SWAP6/s0 0.02 0.02 +0.1% PASS
total/synth/SWAP7/s0 0.02 0.02 +0.0% PASS
total/synth/SWAP8/s0 0.02 0.02 +0.4% PASS
total/synth/SWAP9/s0 0.02 0.02 +0.0% PASS
total/synth/XOR/b0 0.02 0.02 -1.9% PASS
total/synth/XOR/b1 0.02 0.02 -0.1% PASS
total/synth/loop_v1 1.90 1.91 +0.8% PASS
total/synth/loop_v2 1.82 1.79 -1.4% 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