I ended up adding new super instructions (merging IR entities into one), first by following my own intuition to optimize something done quite frequently:
(while (< index 100) …)
This would generate 4 instructions for the condition, load symbol, load const, LT, jump if false, I compacted it to 2, load sym and LT_CONST_JUMP_IF_FALSE to do the comparison with a constant. This gave a 30% perf improvement on the comparison/looping!
Well according to my IR entities frequencies it wasn’t the most common set of entities so I have more to add, and some are… disturbing