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.