SUIF IR

Machine SUIF

Friday, April 9th, 2004

Machine SUIF is “a flexible, extensible, and usable infrastructure for constructing compiler back ends.” Most notably, Machine SUIF provides a way to generate code for x86, IA-64, or Alpha from SUIF code, as well as “libraries for control- and data-flow analysis, and passes for register allocation, instruction scheduling, scalar optimization, and code layout.” The optimizations supplied by Machine SUIF are implemented on top of a substrate-independent API — therefore, one can use Machine SUIF optimizations in other compiler infrastructures by re-implementing an API. Furthermore, target-specific information to be used by low-level optimizations is supplied by dynamically-linked libraries, allowing the possibility of portable low-level optimization code.

SUIF

Friday, April 9th, 2004

The venerable SUIF system is “a free infrastructure designed to support collaborative research in optimizing and parallelizing compilers.” It is fairly straightforward to write your own passes on the SUIF IR in C++. Frontends exist for C, C++, Fortran, and Java, and SUIF can interoperate with Zephyr; there are MIPS and C backends.

Joeq: a Java virtual machine

Wednesday, March 31st, 2004

Joeq is a virtual machine that can execute, analyze, and optimize Java class files, x86 ELF object (.o) files, and files in the SUIF intermediate representation. It is implemented in Java, and runs both in a hosted mode (on another JVM) and self-hosted (compiling itself).