[LLVMdev] Order of optimization: modulo scheduling & register allocation

ryan baird ryanrbaird at gmail.com
Wed Jan 23 15:45:03 PST 2013


I was reading about the order of optimizations in the code generation stage
here:
http://llvm.org/docs/CodeGenerator.html#the-high-level-design-of-the-code-generator

This is the part that's interesting to me:

3. SSA-based Machine Code
Optimizations<http://llvm.org/docs/CodeGenerator.html#ssa-based-machine-code-optimizations>—
This optional stage consists of a series of machine-code optimizations
that operate on the SSA-form produced by the instruction selector.
Optimizations like* modulo-scheduling* or peephole optimization work here.
4. Register Allocation<http://llvm.org/docs/CodeGenerator.html#register-allocation>—
The target code is transformed from an infinite virtual register file
in
SSA form to the concrete register file used by the target. This
phase*introduces spill code
* and eliminates all virtual register references from the program.

If modulo scheduling happens before more code is introduced, how do we know
that we still have an optimal schedule?  Is there another scheduling stage
during later optimization?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130123/441fd3f2/attachment.html>


More information about the llvm-dev mailing list