1) Half-precision in LLVM libc - Nicolas Celik
2) DynamicAPInt: Infinite-Precision Arithmetic for LLVM - Arjun Pitchanathan
3) FPOpt: Balancing Cost and Accuracy of Floating-Point Computations in LLVM IR - Siyuan Brant Qian
1) Half-precision in LLVM libc - Nicolas Celik
C23 defines new floating-point types, such as _Float16, which corresponds to the IEEE 754 standard's binary16 interchange format, also known as half-precision floating-point or FP16. C23 also defines variants of the C standard library's math functions for these new types. This talk will present the implementation of _Float16 math functions in LLVM libc, their performance, and the challenges encountered while implementing them.
2) DynamicAPInt: Infinite-Precision Arithmetic for LLVM - Arjun Pitchanathan
We announce a new class, DynamicAPInt, that can perform infinite-precision integer arithmetic. Unlike APInt, the user does not have to specify a particular maximum size. We also provide a more friendly user interface with overloaded operators. Finally, the class implements a small-value optimization making it significantly faster than APInt when operating on small values. In particular, we see a 2.8x speedup on an addition microbenchmark where the values always stay small. We describe the performance optimizations that we applied to achieve this level of performance.
3) FPOpt: Balancing Cost and Accuracy of Floating-Point Computations in LLVM IR - Siyuan Brant Qian
This talk introduces FPOpt, an optimization pass integrated into the LLVM-based Enzyme automatic differentiation framework, which automatically discovers improvements for floating-point programs using Herbie and tries to maximize overall accuracy of programs subject to a customizable computation cost budget. To make optimization decisions that respect realistic program behaviors, FPOpt leverages numeric profile data generated by a specialized logging functionality in Enzyme.