For homework assignments and term projects in 15-745, you will use the SUIF research compiler. SUIF stands for Stanford University Intermediate Format. You can look into the background of SUIF on the Stanford SUIF home page. Prof. Michael Smith's research group at Harvard has extended SUIF to support work on machine-specific optimizations. The resulting system, called Machine SUIF (machsuif for short), includes all the capabilities of Stanford SUIF (aka base SUIF), but adds facilities to generate and refine machine code for a number of target architectures.
An overview of Machine SUIF, describing its goals and how to begin using it.
The core of the machsuif documentation, including interfaces for the key data structures for the machine-level IR and the utilities that manipulate it.
Describes machsuif's support for representating and manipulating Machine SUIF programs via control flow graphs.
Describes dominator- and loop-analysis facilities.
Describes a framework for bit-vector based iterative data flow analysis
The preferred machines to for 745 course work are CS facilitated x86 Linux machines. However, Andrew linux workstations (such as linux.andrew.cmu.edu) should also work. To setup your environment to run on these machines you should use the script /afs/cs/academic/class/15745-f03/public/bin/setup-suif-env. You invoke the script as follows:
eval `/afs/cs/academic/class/15745-f03/public/bin/setup-suif-env`If you like, you can put this command in your shell setup file, e.g.,
.bashrc. (Note, the script will make its best guess about
the shell you are using. You can force it to use the proper type with
the optional arguments -sh or -csh.)
If your environment is setup correctly, you should be able to use the
program c2s hello.cshould produce the file hello.suif.
${HOME}/localnci
${HOME}/localnci/bin
${HOME}/localnci/solib
${HOME}/localnci/include
${HOME}/localnci/assignments
Your Machine SUIF passes will be in ${HOME}/localnci/assignments which should have its permissions
set appropriately.
Also, after creating such directories, you should define LOCAL_BASE
in your shell initialization file (e.g. .cshrc for csh). Make sure
you define it before setup-suif-env is evaluated.
I then put these two lines in my .cshrc:
setenv LOCAL_BASE /afs/cs.cmu.edu/user/dkoes/localnci eval `/afs/cs/academic/class/15745-f03/public/bin/setup-suif-env`
Back to CS745 home page.