Constraint-Based register allocation and instruction scheduling

  • Authors:
  • Roberto Castañeda Lozano;Mats Carlsson;Frej Drejhammar;Christian Schulte

  • Affiliations:
  • SICS (Swedish Institute of Computer Science), Sweden;SICS (Swedish Institute of Computer Science), Sweden;SICS (Swedish Institute of Computer Science), Sweden;School of ICT, KTH Royal Institute of Technology, Sweden, SICS (Swedish Institute of Computer Science), Sweden

  • Venue:
  • CP'12 Proceedings of the 18th international conference on Principles and Practice of Constraint Programming
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

This paper introduces a constraint model and solving techniques for code generation in a compiler back-end. It contributes a new model for global register allocation that combines several advanced aspects: multiple register banks (subsuming spilling to memory), coalescing, and packing. The model is extended to include instruction scheduling and bundling. The paper introduces a decomposition scheme exploiting the underlying program structure and exhibiting robust behavior for functions with thousands of instructions. Evaluation shows that code quality is on par with LLVM, a state-of-the-art compiler infrastructure. The paper makes important contributions to the applicability of constraint programming as well as compiler construction: essential concepts are unified in a high-level model that can be solved by readily available modern solvers. This is a significant step towards basing code generation entirely on a high-level model and by this facilitates the construction of correct, simple, flexible, robust, and high-quality code generators.