LifeJacket: Verifying precise floating-point optimizations in LLVM
Andres N\"otzli, Fraser Brown

TL;DR
LifeJacket automates the verification of precise floating-point optimizations in LLVM using SMT solvers, ensuring correctness and uncovering errors in existing optimizations, thus improving compiler reliability.
Contribution
It introduces a novel SMT-based approach and an implementation in LifeJacket for verifying floating-point optimizations in LLVM, including discovering previously unknown issues.
Findings
Verified 43 LLVM optimizations with LifeJacket
Discovered 8 incorrect optimizations, 3 previously unreported
Enhanced confidence in floating-point optimization correctness
Abstract
Optimizing floating-point arithmetic is vital because it is ubiquitous, costly, and used in compute-heavy workloads. Implementing precise optimizations correctly, however, is difficult, since developers must account for all the esoteric properties of floating-point arithmetic to ensure that their transformations do not alter the output of a program. Manual reasoning is error prone and stifles incorporation of new optimizations. We present an approach to automate reasoning about floating-point optimizations using satisfiability modulo theories (SMT) solvers. We implement the approach in LifeJacket, a system for automatically verifying precise floating-point optimizations for the LLVM assembly language. We have used LifeJacket to verify 43 LLVM optimizations and to discover eight incorrect ones, including three previously unreported problems. LifeJacket is an open source extension of the…
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
TopicsNumerical Methods and Algorithms · Parallel Computing and Optimization Techniques · Logic, programming, and type systems
