# Features - Large-input support (> 1M vregs, > 1M blocks) - Two operand impls: u64-based and u32-based. Always accept u64-based `Operand` publicly (do not expose this in interface). - Trait to generalize over them and support both internally (parameterize the whole allocator impl) - On data-structure init, choose one or the other based on max vreg index - Update halfmove keys: u128 rather than u64 - Support allocation of register pairs (or overlapping registers generally) - Rematerialization - Stack-location constraints that place operands in user-defined stack locations (distinct from SpillSlots) (e.g., stack args) # Performance - Investigate better register hinting - Investigate more principled cost functions and split locations, especially around loop nests - Investigate ways to improve bundle-merging; e.g., merge moves before other types of connections - Add limited inter-block redundant-move elimination: propagate across splits but not joins. - Optimize allocations (some reports of 5-7% of time spent in allocator) # Cleanup - Remove support for non-SSA code once no longer necessary