deliverable: peephole patterns
The
implementation only uses 4 peephole patterns.
There are many more patterns that may be useful for the optimizer.
Think of as many as you can and implement them following the
templates in patterns.h
.
You should examine
optimize.c
to see the various primitives you can use
in your patterns.
In particular, a pattern may only use the given operations on the
goto graph (or clearly documented extensions)
and the makeCODExxx
constructors defined in
tree.h
.
You should hand in the following:
A Jar file containing:
- your
patterns.h
file;
- a file called
compile.log
showing the results of running the compile_and_run_opt
on your classes set of benchmarks.
Your log file must show that all benchmarks compiled correctly, verified
correctly, and ran with the correct output (i.e. no differences between
the expected output and what your optimized benchmark produced).
Making sure the patterns operate correctly on your benchmarks in necessary,
but not sufficient. In addition, we will be checking your patterns are
sound, in general, and any unsound patterns will be removed.
- a file called
size
containing the result of running
the totalbytes
command for the .sj files as produced from
your A- compiler (with your peephole optimizations enabled).
A hard copy of these three files, clearly printed and
labeled with your group number, should
be handed in at the beginning of class.
Please refer to the handout provided about the format in which the
deliverable should be printed, as provided by Chris.
The deadline is MONDAY of the week in which the deliverable is
due.
This deliverable is also the basis for the peephole
contest, where your group may win fabulous T-shirts!