Swing Modulo Scheduling for GCC

Mostafa Hagog, Ayal Zaks · 2004

Software pipelining is a technique that improves the scheduling of instructions in loops by overlapping instructions from different iterations. Modulo scheduling is an approach for constructing software pipelines that focuses on minimizing the cycle count of the loops and thereby optimize performance. In this paper we describe our implementation of Swing Modulo Scheduling in GCC, which is a Modulo Scheduling technique that also focuses on reducing register pressure. Several key issues are discussed, including the use and adaptation of GCC’s machine-model infrastructure for scheduling (DFA) and data-dependence graph construction. We also present directions for future enhancements.

Read the paper · More papers on PaperTik