Files
Odin/core/rexcode
Brendan Punsky ac0589daa1 rexcode/x86: emit-descriptor fast path (precompiled per-form recipe)
Precompute each encoding form into a flat Form_Recipe -- prefix byte, escape+
opcode blob, role->operand-index slots, ext, imm size, flags -- so the encoder
replays common forms straight-line instead of re-interpreting enc.ops/enc.enc
on every instruction (the resolve scan, escape ladder, prefix/REX selection).

encode() takes the fast path when the form is hinted, eligible, has a register
r/m and a literal immediate; everything else falls through to the existing
interpreter, which stays the byte-exact source of truth. First cut:
  - reg-direct ModR/M only (memory r/m falls back)
  - hint path only (matcher / generic builders fall back)
  - ~33% of forms eligible (VEX/EVEX, 16-bit operand-size, x87 fixed-ModR/M,
    moffs/far/rel/implicit operands are marked ineligible)

Recipes are built at startup into static storage (no heap); this moves into the
table generator (#loaded like every other table) once the shape settles.

Realistic immediate-heavy mix: ~19.0 -> ~16.3 ns/inst (52.7 -> 61.3 M/s).
Byte-exact across 2282 cases + idempotent.

Next: memory r/m addressing in the fast path, then the matcher path, then the
gen-time port.
2026-06-19 10:49:10 -04:00
..
2026-06-18 15:21:05 +01:00