POET: A Scripting Language For Applying Parameterized Source-to-source Program Transformations
Date
Authors
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
We present POET, a scripting language designed for applying advanced program transformations to code in arbitrary programming languages as well as building ad-hoc translators between these languages. We have used POET to support a large number of compiler optimizations, including loop interchange, parallelization, blocking, fusion/fission, strength reduction, scalar replacement, SSE vectorization, among others, and to fully support the code generation of several domain-specific languages, including automatic tester/timer generation, and automatically translating a finite-state-machine-based behavior modeling language to C++/Java code. This paper presents key design and implementation decisions of the POET language and show how to use various language features to significantly improve the productivity of supporting programmable compiler optimization for high performance computing and supporting ad-hoc code generation for various domain-specific languages.