Abstract: In modern computing systems, compilation employs numerous optimization techniques to enhance code performance. Source-to-source code transformations, which include control flow and datapath transformations, have been widely used in High-Level Synthesis (HLS) and compiler optimization.
While researchers actively investigate methods to improve performance with source-to-source code transformations, they often overlook the significance of verifying their correctness. Current tools cannot provide a holistic verification of these transformations. This paper introduces \texttt{HEC}\xspace, a framework for equivalence checking that leverages the e-graph data structure to comprehensively verify functional equivalence between programs.
\texttt{HEC}\xspace utilizes the MLIR as its frontend and integrates MLIR into the e-graph framework. Through the combination of dynamic and static e-graph rewriting, \texttt{HEC}\xspace facilitates the validation of comprehensive code transformations.
We demonstrate effectiveness of \texttt{HEC}\xspace on PolyBenchC benchmarks, successfully verifying loop unrolling, tiling, and fusion transformations. \texttt{HEC}\xspace processes over 100,000 lines of MLIR code in 40 minutes with predictable runtime scaling. Importantly, \texttt{HEC}\xspace identified two critical compilation errors in mlir-opt: loop boundary check errors causing unintended executions during unrolling, and memory read-after-write violations in loop fusion that alter program semantics. These findings demonstrate \texttt{HEC}\xspace practical value in detecting real-world compiler bugs and highlight the importance of formal verification in optimization pipelines.
Loading