POET, or Parameterized Optimizations for Empirical Tuning, is an open-source transformation scripting language that can be used to conveniently apply advanced compiler optimizations to applications written in arbitrary programming languages as well as build ad-hoc translators between these languages.

POET is used 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-statemachine- based behavior modeling language to C++/Java code.
For more information on POET, refer Documents or Publications sections.
History
The POET language was designed and implemented by Dr. Qing Yi at the University of Texas at San Antonio.
POET was first proposed in Mar 2007 by Qing Yi
POET Transformation Engine

POET is an interpreted language designed for applying advanced program transformations to code in arbitrary languages as well as quickly building ad-hoc source-to-source translators between these languages. It has been used to support the transformation needs of both popular programming languages such as C/C++, Java, FORTRAN, and several domain-specific languages that we have designed on the fly for various purposes. Figure shows the structure of a typical POET transformation engine, which is essentially a POET language interpreter coupled with a set of transformation libraries and language syntax descriptions. The transformation libraries include predefined POET routines which can be invoked to apply a large number of compiler optimizations such as loop interchange, parallelization, fusion, blocking, unrolling, array copying, scalar replacement, among others. The language syntax specifications, on the other hand, are used by the POET interpreter to dynamically parse input code in a variety of different programming languages. The developer needs to write a POET script to specify which input files to parse using which syntax descriptions, what transformations to apply to the input code after parsing, and which syntax to use to unparse the transformation result. The POET script can be extensively parameterized and reconfigured via command-line options when invoking the transformation engine.