Skip to content

perf(compiler): add EVM peepholes and branch shaping#435

Open
abmcar wants to merge 5 commits intoDTVMStack:mainfrom
abmcar:perf/evm-peephole-rules
Open

perf(compiler): add EVM peepholes and branch shaping#435
abmcar wants to merge 5 commits intoDTVMStack:mainfrom
abmcar:perf/evm-peephole-rules

Conversation

@abmcar
Copy link
Copy Markdown
Contributor

@abmcar abmcar commented Mar 27, 2026

Summary

  • add EVM frontend peepholes for zero/one/all-ones identities in ADD, SUB, MUL, AND, OR, and XOR
  • defer NOT and zero-test materialization so ISZERO chains can collapse without building redundant 256-bit MIR values
  • improve x86 lowering and CG peepholes for compare chains and short-diamond branches to reduce extra branch and movzx/test sequences

Implementation

  • src/compiler/evm_frontend/evm_mir_compiler.h
    • add constant helpers on Operand
    • add deferred operand kinds for bitwise-not and zero-test
    • early-return identity paths in binary and bitwise handlers
  • src/compiler/evm_frontend/evm_mir_compiler.cpp
    • add MUL zero/one fast paths
    • teach handleCompareEQZ() to emit either eq or ne for deferred zero tests
    • materialize deferred values only when a concrete U256Inst is actually needed
  • src/compiler/target/x86/x86_cg_peephole.cpp
    • fold cmp/test -> setcc -> [movzx] -> test -> jne into a shorter compare/branch form
  • src/compiler/target/x86/x86lowering.cpp
    • shape short diamonds so the true block falls through and the branch goes directly to the rejoin block on the zero case

Validation

  • tools/format.sh check
  • ./build/evmStateTests
    • passed 1798/1798

Benchmark

Compared with the same-session fix2 baseline on evmone-bench external totals:

  • geomean improvement: about 11.4%
  • total time reduction: about 3.8%

Representative wins:

  • external/total/main/jump_around/empty: about 48% faster
  • external/total/main/memory_grow_mload/by32: improved
  • external/total/main/memory_grow_mstore/by16: improved

Known remaining hot spots:

  • JUMPDEST_n0
  • loop_with_many_jumpdests

Copilot AI review requested due to automatic review settings March 27, 2026 09:25
Copy link
Copy Markdown
Contributor

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

This PR adds a set of EVM frontend and x86 backend peephole optimizations aimed at reducing redundant MIR materialization (notably around ISZERO/NOT) and producing tighter x86 compare/branch sequences and short-diamond branch layouts.

Changes:

  • Add EVM MIR builder constant-identity folds (e.g., +0, *0/*1, &0, &~0, |0, ^0) and introduce deferred operand kinds for bitwise-NOT and zero-test to enable collapsing ISZERO chains.
  • Materialize deferred values only when needed by teaching extractU256Operand() / argument conversion paths to realize deferred operands and by extending handleCompareEQZ() with a negation mode.
  • Improve x86 output by (a) folding cmp/test -> setcc -> [movzx] -> test -> jne into a direct jcc, and (b) shaping “short diamond” branches to prefer fallthrough to the true block.

Reviewed changes

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

File Description
src/compiler/target/x86/x86lowering.cpp Adds short-diamond detection and inverts branch emission to make the true block fall through when safe.
src/compiler/target/x86/x86_cg_peephole.cpp Extends compare-chain peephole to handle optional movzx and shortens compare+branch sequences.
src/compiler/evm_frontend/evm_mir_compiler.h Introduces deferred operand kinds and constant helper predicates; adds identity folds in arithmetic/bitwise handlers; updates handleCompareEQZ() signature.
src/compiler/evm_frontend/evm_mir_compiler.cpp Implements MUL identity folds, deferred NOT/ISZERO materialization, and realizes deferred operands in extraction and arg-lowering paths.

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

@abmcar abmcar marked this pull request as draft March 27, 2026 09:43
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 27, 2026

⚡ 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 1.49 1.56 +4.9% PASS
total/main/blake2b_huff/empty 0.02 0.03 +4.2% PASS
total/main/blake2b_shifts/8415nulls 11.52 11.71 +1.6% PASS
total/main/sha1_divs/5311 5.10 5.16 +1.2% PASS
total/main/sha1_divs/empty 0.06 0.06 +1.4% PASS
total/main/sha1_shifts/5311 2.83 2.88 +1.7% PASS
total/main/sha1_shifts/empty 0.04 0.04 +1.6% PASS
total/main/snailtracer/benchmark 52.57 53.05 +0.9% PASS
total/main/structarray_alloc/nfts_rank 1.03 1.06 +2.6% PASS
total/main/swap_math/insufficient_liquidity 0.00 0.00 +1.8% PASS
total/main/swap_math/received 0.01 0.01 +0.4% PASS
total/main/swap_math/spent 0.00 0.00 +0.2% PASS
total/main/weierstrudel/1 0.29 0.29 +0.2% PASS
total/main/weierstrudel/15 3.16 3.18 +0.8% PASS
total/micro/JUMPDEST_n0/empty 1.64 1.63 -0.2% PASS
total/micro/jump_around/empty 0.10 0.10 -0.7% PASS
total/micro/loop_with_many_jumpdests/empty 22.54 25.07 +11.2% PASS
total/micro/memory_grow_mload/by1 0.10 0.09 -5.1% PASS
total/micro/memory_grow_mload/by16 0.11 0.10 -6.6% PASS
total/micro/memory_grow_mload/by32 0.12 0.11 -2.3% PASS
total/micro/memory_grow_mload/nogrow 0.09 0.08 -11.3% PASS
total/micro/memory_grow_mstore/by1 0.10 0.10 +0.5% PASS
total/micro/memory_grow_mstore/by16 0.11 0.11 +1.9% PASS
total/micro/memory_grow_mstore/by32 0.12 0.12 -0.2% PASS
total/micro/memory_grow_mstore/nogrow 0.09 0.09 +0.7% PASS
total/micro/signextend/one 0.24 0.27 +11.0% PASS
total/micro/signextend/zero 0.24 0.27 +12.0% PASS
total/synth/ADD/b0 3.52 3.52 +0.1% PASS
total/synth/ADD/b1 1.99 2.00 +0.2% PASS
total/synth/ADDRESS/a0 4.82 4.82 +0.0% PASS
total/synth/ADDRESS/a1 5.24 5.28 +0.7% PASS
total/synth/AND/b0 1.64 1.64 +0.1% PASS
total/synth/AND/b1 1.69 1.71 +1.1% PASS
total/synth/BYTE/b0 6.04 6.04 +0.0% PASS
total/synth/BYTE/b1 4.74 4.74 -0.1% PASS
total/synth/CALLDATASIZE/a0 3.05 3.19 +4.3% PASS
total/synth/CALLDATASIZE/a1 4.01 4.04 +0.6% PASS
total/synth/CALLER/a0 4.83 4.83 +0.1% PASS
total/synth/CALLER/a1 5.31 5.38 +1.3% PASS
total/synth/CALLVALUE/a0 3.02 3.34 +10.6% PASS
total/synth/CALLVALUE/a1 3.37 3.36 -0.2% PASS
total/synth/CODESIZE/a0 3.43 3.51 +2.5% PASS
total/synth/CODESIZE/a1 3.77 3.77 -0.0% PASS
total/synth/DUP1/d0 1.06 0.82 -22.7% PASS
total/synth/DUP1/d1 1.23 1.23 +0.0% PASS
total/synth/DUP10/d0 1.07 0.91 -14.8% PASS
total/synth/DUP10/d1 0.92 1.16 +25.9% PASS
total/synth/DUP11/d0 1.07 1.07 -0.2% PASS
total/synth/DUP11/d1 0.92 0.92 +0.3% PASS
total/synth/DUP12/d0 0.91 0.83 -8.4% PASS
total/synth/DUP12/d1 0.92 1.16 +25.8% PASS
total/synth/DUP13/d0 1.07 0.91 -14.7% PASS
total/synth/DUP13/d1 0.92 0.93 +1.8% PASS
total/synth/DUP14/d0 0.83 0.90 +8.8% PASS
total/synth/DUP14/d1 1.15 1.16 +0.1% PASS
total/synth/DUP15/d0 1.07 1.07 +0.1% PASS
total/synth/DUP15/d1 0.92 1.16 +25.9% PASS
total/synth/DUP16/d0 1.07 1.07 -0.4% PASS
total/synth/DUP16/d1 0.92 1.16 +26.2% PASS
total/synth/DUP2/d0 1.10 0.90 -17.7% PASS
total/synth/DUP2/d1 0.92 0.93 +0.7% PASS
total/synth/DUP3/d0 1.07 0.90 -15.4% PASS
total/synth/DUP3/d1 0.92 1.16 +26.4% PASS
total/synth/DUP4/d0 0.83 1.08 +30.4% PASS
total/synth/DUP4/d1 0.91 1.16 +26.5% PASS
total/synth/DUP5/d0 1.07 1.07 +0.0% PASS
total/synth/DUP5/d1 0.92 1.16 +26.4% PASS
total/synth/DUP6/d0 1.07 1.07 +0.0% PASS
total/synth/DUP6/d1 0.92 1.16 +26.2% PASS
total/synth/DUP7/d0 0.83 1.07 +29.1% PASS
total/synth/DUP7/d1 0.91 1.16 +26.3% PASS
total/synth/DUP8/d0 0.92 0.91 -1.8% PASS
total/synth/DUP8/d1 0.92 0.91 -0.2% PASS
total/synth/DUP9/d0 1.07 1.07 -0.3% PASS
total/synth/DUP9/d1 1.15 1.16 +0.1% PASS
total/synth/EQ/b0 2.73 2.73 -0.2% PASS
total/synth/EQ/b1 1.39 1.39 +0.2% PASS
total/synth/GAS/a0 3.67 3.67 +0.0% PASS
total/synth/GAS/a1 3.69 3.68 -0.2% PASS
total/synth/GT/b0 2.61 2.61 -0.0% PASS
total/synth/GT/b1 1.39 1.39 +0.2% PASS
total/synth/ISZERO/u0 0.99 0.99 -0.0% PASS
total/synth/JUMPDEST/n0 1.63 1.64 +0.3% PASS
total/synth/LT/b0 2.67 2.67 -0.0% PASS
total/synth/LT/b1 1.39 1.39 +0.1% PASS
total/synth/MSIZE/a0 4.24 4.25 +0.4% PASS
total/synth/MSIZE/a1 4.65 4.65 -0.1% PASS
total/synth/MUL/b0 5.29 5.29 -0.0% PASS
total/synth/MUL/b1 5.29 5.29 +0.0% PASS
total/synth/NOT/u0 1.68 1.68 -0.1% PASS
total/synth/OR/b0 1.63 1.63 +0.0% PASS
total/synth/OR/b1 1.71 1.71 +0.0% PASS
total/synth/PC/a0 3.05 3.18 +4.2% PASS
total/synth/PC/a1 4.00 4.03 +0.6% PASS
total/synth/PUSH1/p0 1.07 0.83 -22.1% PASS
total/synth/PUSH1/p1 1.13 1.14 +0.2% PASS
total/synth/PUSH10/p0 0.85 0.83 -2.3% PASS
total/synth/PUSH10/p1 1.23 1.21 -2.0% PASS
total/synth/PUSH11/p0 0.85 0.85 -0.4% PASS
total/synth/PUSH11/p1 1.22 1.23 +0.4% PASS
total/synth/PUSH12/p0 0.85 0.83 -2.3% PASS
total/synth/PUSH12/p1 1.24 1.22 -1.2% PASS
total/synth/PUSH13/p0 1.07 0.84 -21.3% PASS
total/synth/PUSH13/p1 1.24 1.22 -1.8% PASS
total/synth/PUSH14/p0 0.92 0.92 -0.3% PASS
total/synth/PUSH14/p1 1.21 1.20 -1.0% PASS
total/synth/PUSH15/p0 1.07 0.85 -20.6% PASS
total/synth/PUSH15/p1 1.30 1.30 -0.4% PASS
total/synth/PUSH16/p0 0.85 0.83 -2.5% PASS
total/synth/PUSH16/p1 1.23 1.23 -0.5% PASS
total/synth/PUSH17/p0 0.85 0.85 +0.3% PASS
total/synth/PUSH17/p1 1.21 1.22 +1.1% PASS
total/synth/PUSH18/p0 0.85 1.07 +26.2% PASS
total/synth/PUSH18/p1 1.23 1.23 -0.1% PASS
total/synth/PUSH19/p0 0.85 0.85 -0.5% PASS
total/synth/PUSH19/p1 1.23 1.24 +0.6% PASS
total/synth/PUSH2/p0 0.83 1.07 +28.0% PASS
total/synth/PUSH2/p1 1.15 1.15 -0.2% PASS
total/synth/PUSH20/p0 0.83 1.07 +28.5% PASS
total/synth/PUSH20/p1 1.23 1.24 +0.4% PASS
total/synth/PUSH21/p0 0.85 0.85 +0.7% PASS
total/synth/PUSH21/p1 1.22 1.24 +1.0% PASS
total/synth/PUSH22/p0 0.85 0.85 +0.9% PASS
total/synth/PUSH22/p1 1.23 1.24 +0.7% PASS
total/synth/PUSH23/p0 1.07 1.07 +0.0% PASS
total/synth/PUSH23/p1 1.23 1.25 +1.5% PASS
total/synth/PUSH24/p0 0.85 1.07 +25.7% PASS
total/synth/PUSH24/p1 1.23 1.24 +0.9% PASS
total/synth/PUSH25/p0 0.85 1.07 +26.3% PASS
total/synth/PUSH25/p1 1.23 1.23 +0.2% PASS
total/synth/PUSH26/p0 1.07 0.85 -20.3% PASS
total/synth/PUSH26/p1 1.21 1.24 +2.6% PASS
total/synth/PUSH27/p0 0.85 1.07 +25.7% PASS
total/synth/PUSH27/p1 1.22 1.24 +1.3% PASS
total/synth/PUSH28/p0 0.85 1.07 +25.2% PASS
total/synth/PUSH28/p1 1.23 1.25 +1.4% PASS
total/synth/PUSH29/p0 0.85 0.85 +0.3% PASS
total/synth/PUSH29/p1 1.21 1.22 +0.8% PASS
total/synth/PUSH3/p0 0.83 0.83 +0.0% PASS
total/synth/PUSH3/p1 1.16 1.22 +5.1% PASS
total/synth/PUSH30/p0 1.09 0.93 -14.3% PASS
total/synth/PUSH30/p1 1.21 1.24 +2.5% PASS
total/synth/PUSH31/p0 0.84 0.88 +4.0% PASS
total/synth/PUSH31/p1 1.31 1.31 -0.3% PASS
total/synth/PUSH32/p0 1.07 1.07 -0.2% PASS
total/synth/PUSH32/p1 1.24 1.25 +0.4% PASS
total/synth/PUSH4/p0 0.84 1.07 +27.2% PASS
total/synth/PUSH4/p1 1.20 1.19 -0.3% PASS
total/synth/PUSH5/p0 1.07 0.84 -21.0% PASS
total/synth/PUSH5/p1 1.20 1.21 +0.4% PASS
total/synth/PUSH6/p0 1.07 0.83 -22.3% PASS
total/synth/PUSH6/p1 1.19 1.23 +2.8% PASS
total/synth/PUSH7/p0 0.83 1.07 +28.8% PASS
total/synth/PUSH7/p1 1.21 1.23 +1.1% PASS
total/synth/PUSH8/p0 0.85 0.83 -2.5% PASS
total/synth/PUSH8/p1 1.20 1.22 +2.1% PASS
total/synth/PUSH9/p0 0.85 0.84 -0.5% PASS
total/synth/PUSH9/p1 1.23 1.20 -2.2% PASS
total/synth/RETURNDATASIZE/a0 3.26 3.53 +8.0% PASS
total/synth/RETURNDATASIZE/a1 3.61 3.60 -0.1% PASS
total/synth/SAR/b0 3.77 3.77 -0.1% PASS
total/synth/SAR/b1 4.29 4.28 -0.1% PASS
total/synth/SGT/b0 2.60 2.60 +0.0% PASS
total/synth/SGT/b1 1.63 1.63 -0.0% PASS
total/synth/SHL/b0 3.05 3.05 +0.0% PASS
total/synth/SHL/b1 1.63 1.64 +0.0% PASS
total/synth/SHR/b0 3.10 3.10 +0.0% PASS
total/synth/SHR/b1 1.51 1.51 +0.1% PASS
total/synth/SIGNEXTEND/b0 3.37 3.37 -0.1% PASS
total/synth/SIGNEXTEND/b1 3.55 3.55 -0.2% PASS
total/synth/SLT/b0 2.58 2.58 +0.1% PASS
total/synth/SLT/b1 1.63 1.63 -0.0% PASS
total/synth/SUB/b0 1.94 1.94 +0.1% PASS
total/synth/SUB/b1 1.97 1.98 +0.2% PASS
total/synth/SWAP1/s0 1.49 1.49 -0.1% PASS
total/synth/SWAP10/s0 1.50 1.50 +0.0% PASS
total/synth/SWAP11/s0 1.51 1.51 +0.1% PASS
total/synth/SWAP12/s0 1.51 1.51 -0.0% PASS
total/synth/SWAP13/s0 1.51 1.51 -0.0% PASS
total/synth/SWAP14/s0 1.51 1.51 -0.0% PASS
total/synth/SWAP15/s0 1.51 1.51 +0.1% PASS
total/synth/SWAP16/s0 1.51 1.51 -0.0% PASS
total/synth/SWAP2/s0 1.49 1.49 -0.0% PASS
total/synth/SWAP3/s0 1.49 1.49 -0.0% PASS
total/synth/SWAP4/s0 1.49 1.49 -0.1% PASS
total/synth/SWAP5/s0 1.49 1.49 -0.0% PASS
total/synth/SWAP6/s0 1.50 1.50 +0.1% PASS
total/synth/SWAP7/s0 1.50 1.50 -0.0% PASS
total/synth/SWAP8/s0 1.50 1.50 -0.0% PASS
total/synth/SWAP9/s0 1.54 1.50 -2.8% PASS
total/synth/XOR/b0 1.55 1.55 +0.1% PASS
total/synth/XOR/b1 1.55 1.55 +0.2% PASS
total/synth/loop_v1 4.74 4.75 +0.2% PASS
total/synth/loop_v2 4.74 4.74 +0.1% 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.53 1.54 +0.7% PASS
total/main/blake2b_huff/empty 0.07 0.07 -0.1% PASS
total/main/blake2b_shifts/8415nulls 5.27 4.97 -5.7% PASS
total/main/sha1_divs/5311 1.90 1.87 -1.7% PASS
total/main/sha1_divs/empty 0.03 0.03 -1.2% PASS
total/main/sha1_shifts/5311 2.76 2.71 -1.7% PASS
total/main/sha1_shifts/empty 0.04 0.04 -1.3% PASS
total/main/snailtracer/benchmark 52.52 53.04 +1.0% PASS
total/main/structarray_alloc/nfts_rank 0.29 0.27 -8.9% PASS
total/main/swap_math/insufficient_liquidity 0.02 0.02 +1.0% PASS
total/main/swap_math/received 0.02 0.02 +0.9% PASS
total/main/swap_math/spent 0.02 0.02 +0.6% PASS
total/main/weierstrudel/1 0.36 0.39 +8.7% PASS
total/main/weierstrudel/15 3.23 3.24 +0.1% PASS
total/micro/JUMPDEST_n0/empty 0.13 0.14 +1.8% PASS
total/micro/jump_around/empty 0.62 0.58 -7.0% PASS
total/micro/loop_with_many_jumpdests/empty 1.96 1.99 +1.7% PASS
total/micro/memory_grow_mload/by1 0.18 0.18 -1.1% PASS
total/micro/memory_grow_mload/by16 0.19 0.22 +14.9% PASS
total/micro/memory_grow_mload/by32 0.21 0.21 -0.5% PASS
total/micro/memory_grow_mload/nogrow 0.18 0.18 +1.0% PASS
total/micro/memory_grow_mstore/by1 0.19 0.21 +13.5% PASS
total/micro/memory_grow_mstore/by16 0.20 0.20 +0.3% PASS
total/micro/memory_grow_mstore/by32 0.22 0.24 +13.0% PASS
total/micro/memory_grow_mstore/nogrow 0.18 0.18 +0.6% PASS
total/micro/signextend/one 0.35 0.35 +0.1% PASS
total/micro/signextend/zero 0.35 0.35 +0.2% PASS
total/synth/ADD/b0 0.01 0.01 -0.7% PASS
total/synth/ADD/b1 0.01 0.01 -1.7% PASS
total/synth/ADDRESS/a0 0.16 0.16 -0.1% PASS
total/synth/ADDRESS/a1 0.16 0.16 -0.1% PASS
total/synth/AND/b0 0.01 0.01 -0.7% PASS
total/synth/AND/b1 0.01 0.01 -1.5% PASS
total/synth/BYTE/b0 1.96 1.98 +1.3% PASS
total/synth/BYTE/b1 2.34 2.28 -2.5% PASS
total/synth/CALLDATASIZE/a0 0.08 0.08 -3.2% PASS
total/synth/CALLDATASIZE/a1 0.08 0.08 -0.9% PASS
total/synth/CALLER/a0 0.16 0.16 -0.0% PASS
total/synth/CALLER/a1 0.16 0.16 -0.1% PASS
total/synth/CALLVALUE/a0 0.27 0.27 -0.1% PASS
total/synth/CALLVALUE/a1 0.28 0.27 -2.5% PASS
total/synth/CODESIZE/a0 0.08 0.08 -3.7% PASS
total/synth/CODESIZE/a1 0.08 0.08 -0.5% PASS
total/synth/DUP1/d0 0.01 0.01 -0.8% PASS
total/synth/DUP1/d1 0.01 0.01 -1.4% PASS
total/synth/DUP10/d0 0.01 0.01 -0.7% PASS
total/synth/DUP10/d1 0.01 0.01 -1.4% PASS
total/synth/DUP11/d0 0.01 0.01 -0.6% PASS
total/synth/DUP11/d1 0.01 0.01 -1.4% PASS
total/synth/DUP12/d0 0.01 0.01 -0.7% PASS
total/synth/DUP12/d1 0.01 0.01 -1.4% PASS
total/synth/DUP13/d0 0.01 0.01 -0.7% PASS
total/synth/DUP13/d1 0.01 0.01 -1.5% PASS
total/synth/DUP14/d0 0.01 0.01 -0.4% PASS
total/synth/DUP14/d1 0.01 0.01 -1.4% PASS
total/synth/DUP15/d0 0.01 0.01 -0.8% PASS
total/synth/DUP15/d1 0.01 0.01 -1.6% PASS
total/synth/DUP16/d0 0.01 0.01 -0.8% PASS
total/synth/DUP16/d1 0.01 0.01 -1.4% PASS
total/synth/DUP2/d0 0.01 0.01 -0.7% PASS
total/synth/DUP2/d1 0.01 0.01 -1.4% PASS
total/synth/DUP3/d0 0.01 0.01 -0.7% PASS
total/synth/DUP3/d1 0.01 0.01 -1.1% PASS
total/synth/DUP4/d0 0.01 0.01 -0.8% PASS
total/synth/DUP4/d1 0.01 0.01 -1.4% PASS
total/synth/DUP5/d0 0.01 0.01 -0.9% PASS
total/synth/DUP5/d1 0.01 0.01 -1.4% PASS
total/synth/DUP6/d0 0.01 0.01 -0.8% PASS
total/synth/DUP6/d1 0.01 0.01 -1.5% PASS
total/synth/DUP7/d0 0.01 0.01 -0.8% PASS
total/synth/DUP7/d1 0.01 0.01 -1.4% PASS
total/synth/DUP8/d0 0.01 0.01 -0.7% PASS
total/synth/DUP8/d1 0.01 0.01 -1.4% PASS
total/synth/DUP9/d0 0.01 0.01 -0.8% PASS
total/synth/DUP9/d1 0.01 0.01 -1.6% PASS
total/synth/EQ/b0 0.01 0.01 -0.8% PASS
total/synth/EQ/b1 0.01 0.01 -1.5% PASS
total/synth/GAS/a0 0.80 0.65 -18.2% PASS
total/synth/GAS/a1 0.76 0.65 -14.7% PASS
total/synth/GT/b0 0.01 0.01 -0.6% PASS
total/synth/GT/b1 0.01 0.01 -1.6% PASS
total/synth/ISZERO/u0 0.01 0.01 -0.6% PASS
total/synth/JUMPDEST/n0 0.13 0.14 +1.6% PASS
total/synth/LT/b0 0.01 0.01 -0.8% PASS
total/synth/LT/b1 0.01 0.01 -1.6% PASS
total/synth/MSIZE/a0 0.01 0.01 -0.7% PASS
total/synth/MSIZE/a1 0.01 0.01 -1.3% PASS
total/synth/MUL/b0 0.01 0.01 -0.6% PASS
total/synth/MUL/b1 0.01 0.01 -1.4% PASS
total/synth/NOT/u0 0.01 0.01 -0.7% PASS
total/synth/OR/b0 0.01 0.01 -1.0% PASS
total/synth/OR/b1 0.01 0.01 -1.6% PASS
total/synth/PC/a0 0.01 0.01 -0.8% PASS
total/synth/PC/a1 0.01 0.01 -1.3% PASS
total/synth/PUSH1/p0 0.01 0.01 -0.9% PASS
total/synth/PUSH1/p1 0.01 0.01 -1.1% PASS
total/synth/PUSH10/p0 0.01 0.01 +0.5% PASS
total/synth/PUSH10/p1 0.01 0.01 -1.5% PASS
total/synth/PUSH11/p0 0.01 0.01 -0.9% PASS
total/synth/PUSH11/p1 0.01 0.01 -1.4% PASS
total/synth/PUSH12/p0 0.01 0.01 -0.9% PASS
total/synth/PUSH12/p1 0.01 0.01 -1.6% PASS
total/synth/PUSH13/p0 0.01 0.01 -0.8% PASS
total/synth/PUSH13/p1 0.01 0.01 -1.4% PASS
total/synth/PUSH14/p0 0.01 0.01 -1.0% PASS
total/synth/PUSH14/p1 0.01 0.01 -1.6% PASS
total/synth/PUSH15/p0 0.01 0.01 -2.3% PASS
total/synth/PUSH15/p1 0.01 0.01 -1.4% PASS
total/synth/PUSH16/p0 0.01 0.01 -0.8% PASS
total/synth/PUSH16/p1 0.01 0.01 -1.4% PASS
total/synth/PUSH17/p0 0.01 0.01 -1.0% PASS
total/synth/PUSH17/p1 0.01 0.01 -1.5% PASS
total/synth/PUSH18/p0 0.01 0.01 -0.9% PASS
total/synth/PUSH18/p1 0.01 0.01 -0.7% PASS
total/synth/PUSH19/p0 0.01 0.01 -1.0% PASS
total/synth/PUSH19/p1 0.01 0.01 -1.7% PASS
total/synth/PUSH2/p0 0.01 0.01 -0.9% PASS
total/synth/PUSH2/p1 0.01 0.01 -0.7% PASS
total/synth/PUSH20/p0 0.01 0.01 -0.9% PASS
total/synth/PUSH20/p1 0.01 0.01 -1.4% PASS
total/synth/PUSH21/p0 0.01 0.01 -1.0% PASS
total/synth/PUSH21/p1 0.01 0.01 -0.6% PASS
total/synth/PUSH22/p0 1.08 1.11 +2.6% PASS
total/synth/PUSH22/p1 1.25 1.25 -0.1% PASS
total/synth/PUSH23/p0 1.08 1.11 +2.8% PASS
total/synth/PUSH23/p1 1.26 1.26 +0.1% PASS
total/synth/PUSH24/p0 1.08 1.11 +2.8% PASS
total/synth/PUSH24/p1 1.25 1.23 -1.4% PASS
total/synth/PUSH25/p0 1.08 1.08 -0.4% PASS
total/synth/PUSH25/p1 1.24 1.26 +1.5% PASS
total/synth/PUSH26/p0 0.89 1.08 +21.4% PASS
total/synth/PUSH26/p1 1.25 1.28 +2.6% PASS
total/synth/PUSH27/p0 1.08 1.11 +2.6% PASS
total/synth/PUSH27/p1 1.26 1.24 -1.6% PASS
total/synth/PUSH28/p0 1.08 1.11 +2.7% PASS
total/synth/PUSH28/p1 1.25 1.28 +2.2% PASS
total/synth/PUSH29/p0 1.08 1.11 +2.8% PASS
total/synth/PUSH29/p1 1.26 1.24 -1.6% PASS
total/synth/PUSH3/p0 0.01 0.01 -0.8% PASS
total/synth/PUSH3/p1 0.01 0.01 -1.5% PASS
total/synth/PUSH30/p0 1.11 1.11 -0.6% PASS
total/synth/PUSH30/p1 1.27 1.28 +1.1% PASS
total/synth/PUSH31/p0 1.08 1.08 -0.2% PASS
total/synth/PUSH31/p1 1.40 1.33 -4.7% PASS
total/synth/PUSH32/p0 1.08 1.11 +2.8% PASS
total/synth/PUSH32/p1 1.26 1.25 -0.7% PASS
total/synth/PUSH4/p0 0.01 0.01 -0.8% PASS
total/synth/PUSH4/p1 0.01 0.01 -1.5% PASS
total/synth/PUSH5/p0 0.01 0.01 -0.8% PASS
total/synth/PUSH5/p1 0.01 0.01 -1.5% PASS
total/synth/PUSH6/p0 0.01 0.01 -0.8% PASS
total/synth/PUSH6/p1 0.01 0.01 -1.4% PASS
total/synth/PUSH7/p0 0.01 0.01 -0.8% PASS
total/synth/PUSH7/p1 0.01 0.01 -1.6% PASS
total/synth/PUSH8/p0 0.01 0.01 -1.0% PASS
total/synth/PUSH8/p1 0.01 0.01 -1.4% PASS
total/synth/PUSH9/p0 0.01 0.01 -0.7% PASS
total/synth/PUSH9/p1 0.01 0.01 -1.5% PASS
total/synth/RETURNDATASIZE/a0 0.53 0.52 -1.8% PASS
total/synth/RETURNDATASIZE/a1 0.49 0.50 +2.7% PASS
total/synth/SAR/b0 3.78 3.79 +0.3% PASS
total/synth/SAR/b1 4.29 4.31 +0.5% PASS
total/synth/SGT/b0 0.01 0.01 -0.8% PASS
total/synth/SGT/b1 0.01 0.01 -1.4% PASS
total/synth/SHL/b0 3.06 3.06 +0.0% PASS
total/synth/SHL/b1 1.64 1.67 +1.8% PASS
total/synth/SHR/b0 3.11 3.15 +1.1% PASS
total/synth/SHR/b1 1.52 1.53 +0.2% PASS
total/synth/SIGNEXTEND/b0 3.13 3.13 +0.2% PASS
total/synth/SIGNEXTEND/b1 3.56 3.56 -0.2% PASS
total/synth/SLT/b0 0.01 0.01 -0.8% PASS
total/synth/SLT/b1 0.01 0.01 -1.7% PASS
total/synth/SUB/b0 0.01 0.01 -0.8% PASS
total/synth/SUB/b1 0.01 0.01 -1.3% PASS
total/synth/SWAP1/s0 0.01 0.01 -0.8% PASS
total/synth/SWAP10/s0 0.01 0.01 -0.8% PASS
total/synth/SWAP11/s0 0.01 0.01 -0.8% PASS
total/synth/SWAP12/s0 0.01 0.01 -0.8% PASS
total/synth/SWAP13/s0 0.01 0.01 -0.7% PASS
total/synth/SWAP14/s0 0.01 0.01 -0.6% PASS
total/synth/SWAP15/s0 0.01 0.01 -0.8% PASS
total/synth/SWAP16/s0 0.01 0.01 -0.8% PASS
total/synth/SWAP2/s0 0.01 0.01 -0.8% PASS
total/synth/SWAP3/s0 0.01 0.01 -0.7% PASS
total/synth/SWAP4/s0 0.01 0.01 -0.5% PASS
total/synth/SWAP5/s0 0.01 0.01 -0.7% PASS
total/synth/SWAP6/s0 0.01 0.01 -0.8% PASS
total/synth/SWAP7/s0 0.01 0.01 -0.6% PASS
total/synth/SWAP8/s0 0.01 0.01 -0.7% PASS
total/synth/SWAP9/s0 0.01 0.01 -0.7% PASS
total/synth/XOR/b0 0.01 0.01 -0.5% PASS
total/synth/XOR/b1 0.01 0.01 -1.4% PASS
total/synth/loop_v1 1.41 1.26 -10.6% PASS
total/synth/loop_v2 1.33 1.18 -11.0% PASS

Summary: 194 benchmarks, 0 regressions


@abmcar abmcar marked this pull request as ready for review March 29, 2026 05:51
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