This document discusses global code scheduling techniques. It defines global scheduling as strategies that operate on more than one basic block. The key techniques discussed are:
1. Basic block definition, primitive code motion, upward code motion, and downward code motion.
2. Upward code motion moves operations from one block to another it dominates, while satisfying data dependencies. Downward code motion considers dominance and post-dominance.
3. Global scheduling algorithms use region-based scheduling and speculative code motion to move operations between control-equivalent or dominating blocks. Advanced techniques add new blocks or implement downward motion.
Related topics: