Modeling Universal Instruction Selection

Gabriel Hjort Blindell, Roberto Castañeda Lozano, Mats Carlsson, Christian Schulte

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

Abstract / Description of output

Instruction selection implements a program under compilation by selecting processor instructions and has tremendous impact on the performance of the code generated by a compiler. This paper introduces a graph-based universal representation that unifies data and control flow for both programs and processor instructions. The representation is the essential prerequisite for a constraint model for instruction selection introduced in this paper. The model is demonstrated to be expressive in that it supports many processor features that are out of reach of state-of-the-art approaches, such as advanced branching instructions, multiple register banks, and SIMD instructions. The resulting model can be solved for small to medium size input programs and sophisticated processor instructions and is competitive with LLVM in code quality. Model and representation are significant due to their expressiveness and their potential to be combined with models for other code generation tasks.
Original languageEnglish
Title of host publicationPrinciples and Practice of Constraint Programming
EditorsGilles Pesant
Place of PublicationCham
PublisherSpringer International Publishing
Number of pages18
ISBN (Electronic)978-3-319-23219-5
ISBN (Print)978-3-319-23218-8
Publication statusPublished - 15 Aug 2015
Event21st International Conference on Principles and Practice of Constraint Programming (CP 2015) - Cork, Ireland
Duration: 31 Aug 20154 Sept 2015

Publication series

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


Conference21st International Conference on Principles and Practice of Constraint Programming (CP 2015)


Dive into the research topics of 'Modeling Universal Instruction Selection'. Together they form a unique fingerprint.

Cite this