Skip to content

dispatch: compute pack-load effective address with a carry-save adder#373

Merged
tinebp merged 1 commit into
masterfrom
dispatch-packld-csa
Jun 18, 2026
Merged

dispatch: compute pack-load effective address with a carry-save adder#373
tinebp merged 1 commit into
masterfrom
dispatch-packld-csa

Conversation

@tinebp

@tinebp tinebp commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator

Shortens the dispatch write path for pack-load address generation.

What

The pack-load effective address eff = rs1 + idx*rs2 is a 3-input sum (rs1 + t0 + t1). It was computed as two chained adds on the operand-to-LSU-buffer path. This replaces them with a 3:2 carry-save compressor (VX_csa_32) plus a single carry add — one compressor level + one CARRY8 add instead of two ripple adds.

Properties

  • Bit-identical result ((rs1 + t0 + t1) mod 2^32 is associative).
  • No latency change (combinational restructure, no added register).
  • No IPC change (handshake/scheduling untouched).
  • Shortens the operand→LSU-buffer write path that feeds the dispatch FIFO.

Validation

  • packld (exercises the pack-load path) and vecadd (non-pack eff=rs1) pass on rtlsim.

🤖 Generated with Claude Code

Replace the two chained adds (rs1 + idx*rs2) on the operand-to-LSU-buffer path with a 3:2 compressor (VX_csa_32) plus a single carry add, shortening the dispatch write path. Bit-identical result, no latency or IPC change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@tinebp tinebp merged commit 1c6c361 into master Jun 18, 2026
1 of 5 checks passed
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.

1 participant