Equality Saturation: A New Approach to Optimization
Ross Tate (University of California, San Diego), Michael Stepp, (University of California, San Diego), Zachary Tatlock (University of, California, San Diego), Sorin Lerner (University of California, San Diego)

TL;DR
Equality saturation is a novel compiler optimization technique that saturates an intermediate representation with equalities, enabling global optimization and validation by considering multiple program variants simultaneously.
Contribution
The paper introduces equality saturation, a new framework for compiler optimization that avoids ordering issues and allows for global optimization and validation.
Findings
Practical in terms of time and space overhead
Effective at discovering intricate optimization opportunities
Enables translation validation for realistic compilers
Abstract
Optimizations in a traditional compiler are applied sequentially, with each optimization destructively modifying the program to produce a transformed program that is then passed to the next optimization. We present a new approach for structuring the optimization phase of a compiler. In our approach, optimizations take the form of equality analyses that add equality information to a common intermediate representation. The optimizer works by repeatedly applying these analyses to infer equivalences between program fragments, thus saturating the intermediate representation with equalities. Once saturated, the intermediate representation encodes multiple optimized versions of the input program. At this point, a profitability heuristic picks the final optimized program from the various programs represented in the saturated representation. Our proposed way of structuring optimizers has a…
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.
