Solve the FP-arithmetic fpscr problem without lowering fpscr into IR. Add a generic single-instruction shim, xj_interp_op(ctx, env, raw, addr), that decodes and runs one instruction through the interpreter's execute() on the live context/memory — bit-exact by construction. This lets a block containing FP math still be JIT-compiled: the surrounding integer/memory/branch ops run as machine code and only the FP op calls back into Rust (the technique production JITs use for complex ops). Validated on a full boot+movie run (movie plays, clean exit): checked 147.2M blocks, 73.48% native (108.2M, up from 39.82%!), MISMATCHES=0 The fpscr bookkeeping (rounding-mode-dependent rounding, sticky exception bits, FPRF classification) was too intricate to emit correctly in IR; punting sidesteps it entirely while still capturing the coverage. is_fp_punt allowlist (all verified always-Continue, non-branch): faddx/faddsx, fsubx/fsubsx, fmulx/fmulsx, fdivx/fdivsx, fmaddx/fmaddsx, fmsubx/fmsubsx, fnmaddx/fnmaddsx, fnmsubx/fnmsubsx, frspx, fsqrtx, fresx, frsqrtex, fselx, fnabsx, fcmpu, fcmpo. covered() returns true for them; emit_op emits `call interp(ctx, env, raw, addr)`. execute() advances pc by 4 (harmless — the block epilogue stamps end_pc for non-branch blocks; cycle_count is bumped once per block, not by execute). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>