https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116826

--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jennifer Schmitz <jschm...@gcc.gnu.org>:

https://gcc.gnu.org/g:4be7d2d340a013d01a47c43d2feb6826d1b67af0

commit r15-4267-g4be7d2d340a013d01a47c43d2feb6826d1b67af0
Author: Jennifer Schmitz <jschm...@nvidia.com>
Date:   Wed Sep 25 03:21:22 2024 -0700

    match.pd: Fold logarithmic identities.

    This patch implements 4 rules for logarithmic identities in match.pd
    under -funsafe-math-optimizations:
    1) logN(1.0/a) -> -logN(a). This avoids the division instruction.
    2) logN(C/a) -> logN(C) - logN(a), where C is a real constant. Same as 1).
    3) logN(a) + logN(b) -> logN(a*b). This reduces the number of calls to
    log function.
    4) logN(a) - logN(b) -> logN(a/b). Same as 4).
    Tests were added for float, double, and long double.

    The patch was bootstrapped and regtested on aarch64-linux-gnu and
    x86_64-linux-gnu, no regression.
    Additionally, SPEC 2017 fprate was run. While the transform does not seem
    to be triggered, we also see no non-noise impact on performance.
    OK for mainline?

    Signed-off-by: Jennifer Schmitz <jschm...@nvidia.com>

    gcc/
            PR tree-optimization/116826
            PR tree-optimization/86710
            * match.pd: Fold logN(1.0/a) -> -logN(a),
            logN(C/a) -> logN(C) - logN(a), logN(a) + logN(b) -> logN(a*b),
            and logN(a) - logN(b) -> logN(a/b).

    gcc/testsuite/
            PR tree-optimization/116826
            PR tree-optimization/86710
            * gcc.dg/tree-ssa/log_ident.c: New test.

Reply via email to