Integrated Code Generation for Loops
2012 (English)In: ACM Transactions on Embedded Computing Systems, ISSN 1539-9087, E-ISSN 1558-3465, Vol. 11, no 1Article in journal (Refereed) Published
Code generation in a compiler is commonly divided into several phases: instruction selection, scheduling, register allocation, spill code generation, and, in the case of clustered architectures, cluster assignment. These phases are interdependent; for instance, a decision in the instruction selection phase affects how an operation can be scheduled We examine the effect of this separation of phases on the quality of the generated code. To study this we have formulated optimal methods for code generation with integer linear programming; first for acyclic code and then we extend this method to modulo scheduling of loops. In our experiments we compare optimal modulo scheduling, where all phases are integrated, to modulo scheduling, where instruction selection and cluster assignment are done in a separate phase. The results show that, for an architecture with two clusters, the integrated method finds a better solution than the nonintegrated method for 27% of the instances.
Place, publisher, year, edition, pages
Association for Computing Machinery (ACM) , 2012. Vol. 11, no 1
Algorithms, Experimentation, Performance, Theory, Code generation, clustered VLIW architectures, modulo scheduling
Engineering and Technology
IdentifiersURN: urn:nbn:se:liu:diva-81509DOI: 10.1145/2180887.2180896ISI: 000307050900009OAI: oai:DiVA.org:liu-81509DiVA: diva2:553076