Souper: A Synthesizing Superoptimizer
Raimondas Sasnauskas, Yang Chen, Peter Collingbourne, Jeroen Ketema,, Gratian Lup, Jubi Taneja, John Regehr

TL;DR
Souper is a synthesizing superoptimizer that automatically derives compiler optimizations, reducing compiler size and suggesting optimizations that are often manually implemented, demonstrating potential to automate compiler engineering.
Contribution
Introduces Souper, a superoptimizer for LLVM and Visual C++, capable of automatically generating optimizations and reducing compiler size, advancing automated compiler optimization techniques.
Findings
Souper's IR is compatible with Visual C++ IR.
Souper suggests optimizations used in shipping compiler versions.
Automated optimization reduces compiler size by 4.4%.
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.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Logic, programming, and type systems · Formal Methods in Verification
