Skip to content

Add addi-zero assembly peephole rule (Topic 13) - #2

Draft
zinoe-1 wants to merge 1 commit into
mainfrom
cursor/peephole-addi-zero-5307
Draft

Add addi-zero assembly peephole rule (Topic 13)#2
zinoe-1 wants to merge 1 commit into
mainfrom
cursor/peephole-addi-zero-5307

Conversation

@zinoe-1

@zinoe-1 zinoe-1 commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

Adds a new assembly-level peephole rule for Topic 13 practice: eliminate no-op addi rd, rd, 0 instructions.

Also includes a small demo fixture for hands-on experimentation.

Changes

  • addi zero elimination rule in scratchv/backend/asm_peephole.py
    • Matches addi rd, rd, 0 when destination equals source
    • Removes the instruction entirely
  • Unit tests in tests/test_asm_peephole.py
    • Verifies zero-immediate removal
    • Verifies non-zero addi is preserved
  • Demo fixture at benchmarks/fixtures/peephole_demo.asm

Try it

python3 -m pytest tests/test_asm_peephole.py -v
python3 -m scratchv.backend.asm_peephole benchmarks/fixtures/peephole_demo.asm --report

Example optimization

Before:

li a0, 5
addi a0, a0, 3
addi a0, a0, 0
beq x0, x0, .Ldone

After:

li a0, 8  # peephole: li+addi fusion
j .Ldone  # peephole: beq zero-zero to jump

Test plan

  • python3 -m pytest tests/test_asm_peephole.py (19 passed)
  • Manual run on benchmarks/fixtures/peephole_demo.asm
Open in Web Open in Cursor 

Implement Topic 13 exercise rule: delete addi rd, rd, 0 no-ops at the
assembly peephole layer. Add unit tests and benchmarks/fixtures/peephole_demo.asm
for hands-on practice.

Co-authored-by: zinoe-1 <zinoe-1@users.noreply.github.com>
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