Files
Odin/core
Brendan Punsky 8387731357 rexcode/x86: branchless hot paths + single-pass operand resolution
Three layers on the x86 encode/decode hot paths, all byte-exact (2246
LLVM-verified cases) and roundtrip-clean:

1. Branchless: legacy-prefix emission (speculative write + conditional
   advance), REX/VEX/EVEX extension-bit accumulation (gate-and-mask),
   ModRM mod/disp-size selection (cmov selects), displacement emission
   (widened store + ENCODE_TAIL_SLACK); decoder REX/VEX/EVEX register
   extensions (arithmetic instead of if/+=8).

2. Resolve-operands-once: the previous code re-derived each user operand
   ~5-10x per instruction (a fresh O(n) scan of enc.ops per emission
   pass). Now resolved into a [4]^Operand map a single time.

3. Single-pass gather: fold the opcode-+rb and ModR/M slot-detection
   scans into that one resolve pass (3 enc.enc passes -> 1).

Net on a 100k mixed-instruction benchmark: encode ~58 -> ~54 ns/inst
(best 52). Branchless alone was a ~7% encode regression (predicted
branches, nothing to recover); the algorithmic passes recovered it and
beat baseline.
2026-06-18 20:16:26 -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