Summary
In this chapter, you learned how to leverage the LLVM instruction scheduling infrastructure to customize the scheduling decisions made in your backend.
You saw that the scheduling infrastructure is tied to your subtarget and its customization capabilities hinge on three axes:
- The mutation of the DDG graph: This allows you to modify the DDG of your input scheduling region by adding or removing constraints.
- The tweaking of the scheduling strategy: This allows you to modify how the overall scheduling algorithm works, such as how it picks its next candidate in the ready queue or in which direction the scheduling algorithm progresses.
- The definition of your scheduling model: This provides the scheduling infrastructure with the information it needs to know the resources available in your subtarget and track and optimize their consumption while scheduling the DDGs.
While this chapter scratched only the surface of what you can achieve with these...