EECS 583 – Homework 2 Fall 2011 Assigned: Mon, October 3, 2011 Due: Fri, October 21, 2011 (11:59:59 pm) Speculative LICM The goal of this homework is to extend the LLVM loop invariant code motion (LICM) optimization to identify more opportunities for optimization using memory dependence speculation . LICM of loads/stores is limited by the quality of the memory dependence analysis to disambiguate potential invariant memory operations from other memory operations inside the loop. Often, memory disambiguation returns an answer of ‘maybe’ because it can neither prove nor disprove that two memory operations alias. To overcome this limitation, your job is to extend LICM by breaking unlikely memory dependences using statistics about how often memory dependences occur during a sample run of the program (memory profile). This will enable you to hoist not only more loads out of loops, but other instructions that solely depend on hoisted loads can also be moved out of the loop. A pass that performs loop-aware memory profiling (LAMP) provided in HW1 collects statistics
This is the end of the preview.
access the rest of the document.