Item 3 of HANDOFF-x86-rt.md, which was blocked on the language decision rather than on code. check_div and check_cast sit beside check_at and check_slice and reuse bounds_call unchanged; flan_arith_error takes three extras, so the channel lands in r9 and the argument registers are exactly full. Three things differ from the LLVM side because the instruction set does: two branches rather than one branch and a select, since there is no select and a second compare on the cold path is free; the cast bounds compared in the source's own precision rather than widened to a double, which is exact because every bound is a power of two; and NaN excluded by choosing the direction of each compare, because ucomis sets CF, ZF and PF together when either operand is unordered. Both programs now print byte-identical stdout, stderr and exit status through either backend.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%