Constraint-Based Register Allocation and Instruction Scheduling

Roberto Castañeda Lozano, Mats Carlsson, Frej Drejhammar, Christian Schulte

Research output: Chapter in Book/Report/Conference proceedingConference contribution

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.
Original languageEnglish
Title of host publicationPrinciples and Practice of Constraint Programming
EditorsMichela Milano
Place of PublicationBerlin, Heidelberg
PublisherSpringer Berlin Heidelberg
Pages750-766
Number of pages17
ISBN (Electronic)978-3-642-33558-7
ISBN (Print)978-3-642-33557-0
DOIs
Publication statusPublished - 31 Dec 2012
Event18th International Conference on Principles and Practice of Constraint Programming - Québec City, Canada
Duration: 8 Oct 201212 Oct 2012
Conference number: 18
https://archive.a4cp.org/cp2012/index.php

Publication series

NameLecture Notes in Computer Science (LNCS)
PublisherSpringer, Berlin, Heidelberg
Volume7514
ISSN (Print)0302-9743
ISSN (Electronic)1611-3349

Conference

Conference18th International Conference on Principles and Practice of Constraint Programming
Abbreviated titleCP 2012
CountryCanada
CityQuébec City
Period8/10/1212/10/12
Internet address

Keywords

  • Constraint Programming
  • Constraint Model
  • Register Allocation
  • Code Quality
  • Instruction Schedule

Fingerprint Dive into the research topics of 'Constraint-Based Register Allocation and Instruction Scheduling'. Together they form a unique fingerprint.

Cite this