Students are expected to apply a variety of optimization techniques, including some at the source code level and come at the assembly code level. Students typically apply strength reduction and obvious loop cptimizations in the
source code. Some apply loop unrolling. Optimizations at
the assembly level require an understanding of the instruction set and pipeline stalls. Typical optimizations employed at this level include filling branch delay slots, scheduling instructions to avoid pipeline stalls, and simplifying the address computation for array elements. Code changes are required to be generally applicable and not
specific to the benchmark.