SMS - Swing Modulo Scheduling in GCC

February 2005

We are pleased to announce that Mostafa Hagog and Ayal Zaks, of IBM Haifa Labs, have contributed Swing Modulo Scheduling (SMS) to GCC 4.0. Their implementation is based on the articles:

SMS is intended to schedule instructions of loops rather than the traditional scheduler (in GCC) that does not give a special handling for loops. For more information on the theory behind SMS take a look at the 2004 GCC summit proceedings (page 55). This optimization helps in loops where there is a place to run consecutive iterations concurrently but the traditional instruction scheduling is not able to fully utilize the hardware functional units. This optimization is disabled by default because of compile time consumption; -fmodulo-sched activates it. The current implementation of SMS is preliminary and is not effective in the following cases:

Improvements to SMS to overcome (but not only) the first three restrictions are expected in the coming releases of GCC.