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

--- Comment #80 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tamar Christina <tnfch...@gcc.gnu.org>:

https://gcc.gnu.org/g:ed2e058c58ab064fe3a26bc4a47a5d0a47350f97

commit r14-5289-ged2e058c58ab064fe3a26bc4a47a5d0a47350f97
Author: Tamar Christina <tamar.christ...@arm.com>
Date:   Thu Nov 9 14:04:57 2023 +0000

    AArch64: Handle copysign (x, -1) expansion efficiently

    copysign (x, -1) is effectively fneg (abs (x)) which on AArch64 can be
    most efficiently done by doing an OR of the signbit.

    The middle-end will optimize fneg (abs (x)) now to copysign as the
    canonical form and so this optimizes the expansion.

    If the target has an inclusive-OR that takes an immediate, then the
transformed
    instruction is both shorter and faster.  For those that don't, the
immediate
    has to be separately constructed, but this still ends up being faster as
the
    immediate construction is not on the critical path.

    Note that this is part of another patch series, the additional testcases
    are mutually dependent on the match.pd patch.  As such the tests are added
    there insteadof here.

    gcc/ChangeLog:

            PR tree-optimization/109154
            * config/aarch64/aarch64.md (copysign<GPF:mode>3): Handle
            copysign (x, -1).
            * config/aarch64/aarch64-simd.md (copysign<mode>3): Likewise.
            * config/aarch64/aarch64-sve.md (copysign<mode>3): Likewise.

Reply via email to