The Wire · Showcase
GO STRIPS MIPS REGISTER ALLOCATOR SUPPORT
By RepoJournal · Filed · About Go
Go's compiler is ripping out HI/LO register support for MIPS, closing the door on a decade of architectural complexity that wasn't worth the maintenance tax.
Jorropo landed a pair of commits that simplify the register allocator by removing special-case handling for MIPS multiply/divide results [1]. The alternative would have required building a register allocator for the register allocator itself, a complexity spiral the team decided wasn't worth the ROI [1]. The second commit [2] stops the compiler from keeping mul/div results homed in HI/LO registers, which previously forced spill operations through REGTMP and generated expensive address materializations when stack frames exceeded 16-bit offsets. This is a clean signal: MIPS support is moving toward maintenance mode. If you're running Go on MIPS, watch the release notes closely for what this means for your deployment.
One email a day. Unsubscribe in one click.
Keep up with Go in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Monitor Go release notes for MIPS deprecation timeline golang/go [monitor]
References
- [1] cmd/compile: remove HI LO mips support from regalloc golang/go
- [2] cmd/compile: do not home mul/div results in HI/LO golang/go