Souper: A Synthesizing Superoptimizer
arXiv:1711.04422
Abstract
If we can automatically derive compiler optimizations, we might be able to sidestep some of the substantial engineering challenges involved in creating and maintaining a high-quality compiler. We developed Souper, a synthesizing superoptimizer, to see how far these ideas might be pushed in the context of LLVM. Along the way, we discovered that Souper's intermediate representation was sufficiently similar to the one in Microsoft Visual C++ that we applied Souper to that compiler as well. Shipping, or about-to-ship, versions of both compilers contain optimizations suggested by Souper but implemented by hand. Alternately, when Souper is used as a fully automated optimization pass it compiles a Clang compiler binary that is about 3 MB (4.4%) smaller than the one compiled by LLVM.
Cited by in corpus (10)
- Equality Saturation for Tensor Graph Superoptimization
- CROW: Code Diversification for WebAssembly
- Facile: Fast, Accurate, and Interpretable Basic-Block Throughput Prediction
- Optimal Program Synthesis via Abstract Interpretation
- Blockchain Superoptimizer
- Dynamic Recompilation of Software Network Services with Morpheus
- Future Directions for Optimizing Compilers
- Synthesizing Safe and Efficient Kernel Extensions for Packet Processing
- Learning to Superoptimize Real-world Programs
- GraFS: Graph Analytics Fusion and Synthesis