Given an if-converter, tail duplicator, and loop detector, the objective of this contest was to implement a hyperblock formation heuristic that yields the best performance on a 9-issue VLIW processor. Any heuristic was allowed. Hyperblock formation heuristically applies if-conversion to a selected code region.
Performance evaluation was carried out on 4 benchmarks with non-trivial control flow structure. The benchmarks were given out about 1.5 days before the assignment was due so that only a limited amount of benchmark-specific tuning was possible. Here are the individual benchmark results, the top several cycle counts are given for each application.
1. 008.espresso
Kien Yue Kuo - 428504344 cycles (Winner, on the most grueling benchmark, many were not up to this challenge)
Tomasz Micula - 428822787 cycles
2. 026.compress
Krian Upapatthangkoon - 56431931 cycles (Winner, by the narrowest of margins)
Ben Walstrum - 56431979 cycles
Jason Blome - 56431980 cycles
Steve Lieberman - 56431980 cycles
3. wc
Jason Blome - 437608 cycles (Winner, utterly devastated the competition on this benchmark)
Tomasz Micula - 1124132 cycles
4. viterbi
Ramashis Das - 251580 cycles (Winner, on the most competitive benchmark of the bunch)
Galen Elias - 251925 cycles
Kien Yue Kuo - 251925 cycles
Tomasz Micula - 251925 cycles
Krian Upapatthangkoon - 251925 cycles
1. Average speedup vs basic block code for all 4 benchmarks
Tomasz Micula - 1.47 (Winner, not the best heuristic on any 1 benchmark, but the most consistent)
Ben Walstrum - 1.46
Kien Yue Kuo - 1.43
2. Average speedup vs basic block code excluding 008.espresso (many people had difficulty running 008.espresso due to problems with Trimaran so results excluding this benchmark are also presented).
Jason Blome - 2.16 (Winner, love that wc benchmark and rides it to victory)
Tomasz Micula - 1.61
Ben Walstrum - 1.60