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 instru...
Software Pipelining is a loop scheduling technique that extracts parallelism from loops by overlappi...
[[abstract]]Instruction scheduling and register allocation are two very important optimizations in m...
register allocation, modulo scheduling, software pipelining, instruction scheduling, code generation...
code generation, modulo scheduling, software pipelining, instruction scheduling, register allocation...
Phase-decoupled methods for code generation are the state of the art in compilers for standard proce...
Software pipelining is an important instruction scheduling technique for efficiently overlapping suc...
Software pipelining is a scheduling technique that is used by some product compilers in order to exp...
Two of the most important phases of code generation for instruction level parallel processors are re...
Abstract. In achieving higher instruction level parallelism, software pipelining increases the regis...
In achieving higher instruction level parallelism, software pipelining increases the register pressu...
Effective global instruction scheduling techniques have become an important component in modern comp...
Software pipelining is an instruction scheduling technique that exploits the instruction level paral...
A common characterictic of many applications is that they are aimed at the high-volume consumer mark...
This work presents a modulo scheduling framework for clustered ILP processors that integrates the cl...
Register allocation and instruction scheduling are two central compiler back-end problems that are c...
Software Pipelining is a loop scheduling technique that extracts parallelism from loops by overlappi...
[[abstract]]Instruction scheduling and register allocation are two very important optimizations in m...
register allocation, modulo scheduling, software pipelining, instruction scheduling, code generation...
code generation, modulo scheduling, software pipelining, instruction scheduling, register allocation...
Phase-decoupled methods for code generation are the state of the art in compilers for standard proce...
Software pipelining is an important instruction scheduling technique for efficiently overlapping suc...
Software pipelining is a scheduling technique that is used by some product compilers in order to exp...
Two of the most important phases of code generation for instruction level parallel processors are re...
Abstract. In achieving higher instruction level parallelism, software pipelining increases the regis...
In achieving higher instruction level parallelism, software pipelining increases the register pressu...
Effective global instruction scheduling techniques have become an important component in modern comp...
Software pipelining is an instruction scheduling technique that exploits the instruction level paral...
A common characterictic of many applications is that they are aimed at the high-volume consumer mark...
This work presents a modulo scheduling framework for clustered ILP processors that integrates the cl...
Register allocation and instruction scheduling are two central compiler back-end problems that are c...
Software Pipelining is a loop scheduling technique that extracts parallelism from loops by overlappi...
[[abstract]]Instruction scheduling and register allocation are two very important optimizations in m...
register allocation, modulo scheduling, software pipelining, instruction scheduling, code generation...