Files
Odin/core
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-03-13 11:54:15 +01:00
2026-04-28 19:27:24 +02:00
2026-04-01 18:58:16 +02:00
2026-05-19 19:32:50 +09:00
2026-04-28 19:27:24 +02:00
2026-02-12 12:12:21 +01:00
2026-05-27 11:03:14 +01:00
2026-04-22 11:17:17 +01:00
2026-06-15 14:42:38 +01:00
2026-05-12 18:53:39 -04:00
2026-04-28 19:27:24 +02:00
2026-03-14 16:21:38 +00:00
2026-05-20 17:55:29 -07:00
2026-06-12 21:48:41 +02:00
2026-02-09 20:08:22 +01:00
2026-04-28 19:27:24 +02:00
2026-04-28 19:27:24 +02:00