Constraint-based Instruction Selection and Execution Platform Description
The backend of a compiler primarily performs three tasks:
- instruction selection,
- register allocation, and
- instruction scheduling.
Due to their massive complexity – all problems above are NP-complete – the tasks are typically performed and optimized in isolation. This, however, leads to a solution which is suboptimal since one needs to consider all these tasks simultaneously in order to reach a globally optimal solution.
In a research project called Unison we try to apply constraint programming – a combinatorial method typically used in optimization – as a tool to achieving that goal, and my part of this research project is to devise a constraint model that captures the task of instruction selection. A close colleague of mine, Roberto Castañeda Lozano, is currently working on a constraint model that captures the tasks of register allocation and instruction scheduling.
My main supervisor is Christian Schulte, who is also the main leader of Unison, together with Ingo Sander and Mats Carlsson as my co-supervisors.