E-Graphs as a Persistent Compiler Abstraction
Jules Merckx, Alexandre Lopoukhine, Samuel Coward, Jianyi Cheng, Bjorn De Sutter, Tobias Grosser

TL;DR
This paper introduces a novel MLIR dialect, eqsat, enabling persistent e-graph representation within compilers to enhance equality saturation and integrate it seamlessly with other compiler passes.
Contribution
It presents a new MLIR dialect, eqsat, that maintains e-graph state throughout compilation, expanding equality saturation's applicability across multiple abstraction levels.
Findings
Enables interleaving pattern rewriting with other compiler transformations.
Provides a unified MLIR abstraction for equality saturation.
Expands the scope of equality saturation in compiler optimization.
Abstract
Recent algorithmic advances have made equality saturation an appealing approach to program optimization because it avoids the phase-ordering problem. Existing work uses external equality saturation libraries, or custom implementations that are deeply tied to the specific application. However, these works only apply equality saturation at a single level of abstraction, or discard the discovered equalities when code is transformed by other compiler passes. We propose an alternative approach that represents an e-graph natively in the compiler's intermediate representation, facilitating the application of constructive compiler passes that maintain the e-graph state throughout the compilation flow. We build on a Python-based MLIR framework, xDSL, and introduce a new MLIR dialect, eqsat, that represents e-graphs in MLIR code. We show that this representation expands the scope of equality…
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.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsGraph Theory and Algorithms · Parallel Computing and Optimization Techniques · Logic, programming, and type systems
