Much of the previous work on modulo scheduling has targeted numeric programs, in which, often, the majority of the loops are well-behaved loop-counter-based loops without early exits. In control-intensive non-numeric programs, the loops frequently have characteristics that make it more difcult to e ectively apply modulo scheduling. These characteristics include multiple control ow paths, loops that are not based on a loop counter, and multiple exits. In these loops, the presence of unimportant paths with high resource usage or long dependence chains can penalize the important paths. A path that contains a hazard such as another nested loop can prohibit modulo scheduling of the loop. Control dependences can severely restrict the overlap of the blocks within and across iterations. This paper describes a set of methods that allow e ective modulo scheduling of loops with multiple exits. The techniques include removal of control dependences to enable speculation, extensions to modulo varia...
Daniel M. Lavery, Wen-mei W. Hwu