The Compiler Foundations Project

Program Decision Logic Optimization using Predication and
Control Speculation [abstract] (IEEE Xplore, PDF, PostScript)Wen-mei W. Hwu, David I. August, and John W. SiasProceedings of the IEEE, Volume 89, Number 11, November 2001.

The mainstream arrival of predication, a means other than
branching of selecting instructions for execution, has required
compiler architects to reformulate fundamental analyses and
transformations. Traditionally, the compiler has generated branches
straightforwardly to implement control flow designed by the programmer
and has then performed sophisticated global optimizations to move and
optimize code around them. In this model, the inherent tie between the
control state of the program and the location of the single
instruction pointer serialized runtime evaluation of control and
limited the extent to which the compiler could optimize the control
structure of the program (without extensive code
replication). Predication provides a means of control independent of
branches and instruction fetch location, freeing both compiler and
architecture from these restrictions; effective compilation of
predicated code, however, requires sophisticated understanding of the
program s control structure. This article explores a representational
technique which, through direct code analysis, maps the program's
control component into a canonical database, a reduced ordered binary
decision diagram (ROBDD), which fully enables the compiler to utilize
and manipulate predication. This abstraction is then applied to
optimize the program s control component, transforming it into a form
more amenable to instruction-level parallel (ILP)
execution.