Images 💾

Last commit ⭐

commit 2dba79bc6be860fef59df2be743117a4e5f5eea9
Author:     Dan Klishch <danilklishch@gmail.com>
AuthorDate: Thu Nov 16 14:48:32 2023 -0500
Commit:     Tim Flynn <trflynn89@pm.me>
CommitDate: Thu Nov 16 19:05:13 2023 -0500

    Meta: Globally disable floating point contraction
    
    FP contraction is a standard-conforming behavior which allows the
    compiler to calculate intermediate results of expressions containing
    floating point numbers with a greater precision than the expression type
    allows. And in theory, it enables additional optimizations, such as
    replacing `a * b + c` with fma(a, b, c).
    
    Unfortunately, it is extremely hard to predict when the contraction will
    happen. For example, Clang 17 on x86_64 with the default options will
    use FMA only for constant-folded non-constexpr expressions. So, in
    practice, FP contraction leads to hard-to-find bugs and inconsistencies
    between executables compiled with different toolchains or for different
    OSes. And we had two instances of this happening last week.
    
    Since we did not ever used -mfma on x86_64, this patch can only possibly
    regress performance on Apple ARM devices, where FMA is enabled by
    default. However, this regression will likely be negligible since the
    difference would be one additional add instruction, which would be then
    likely executed in parallel with something else.