Rethinking Code Generation in Compilers
Speaker: Christian Schulte
The talk will focus on a new model for global register allocation that combines many advanced aspects: multiple register banks (subsuming spilling to memory), ultimate coalescing, spill code optimization, and register packing. The model is extended to include instruction scheduling and bundling. Thorough experiments using MediaBench and a processor (Hexagon) that are typical for embedded systems demonstrate that the approach: is robust and scalable; generates faster code than LLVM (up to 41% with a mean improvement of 7%); possibly generates optimal code (for 29% of the experiments); effortlessly supports different optimization criteria (code size on par with LLVM).