Abstract

AbstractPredicated execution has become a standard feature in modern high-performance microprocessors, and is supported by compilers through if-conversion. The static single assignment (SSA) form has been demonstrated to be a very successful intermediate representation in modern compilers. Traditionally, SSA optimizations preceed the if-conversion because the classical SSA form is not adapted for if-converted programs. Recently, the Ψ-SSA extension of the classical SSA form has been proposed for optimizing predicated code. However, up until now, the if-conversion itself has not been applicable to programs in SSA form. As a result, optimizers that want to use SSA before and Ψ-SSA after the if-conversion would have to translate the program out of the SSA form before performing the if-conversion, and to rebuild the Ψ-SSA from scratch after the if-conversion. In this paper, we propose a simple model of if-conversion in SSA form such that if-conversion results in the Ψ-SSA. We implemented our if-conversion method in the Open64/ORC compiler code generator, and evaluated the size of the Ψ-SSA form resulting from if-conversion on a set of MediaBench programs.KeywordsBasic BlockOriginal ProgramExecution PathIntermediate RepresentationProgram PointThese keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call