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

--- Comment #2 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Kewen Lin <li...@gcc.gnu.org>:

https://gcc.gnu.org/g:10e702789eeabcc88451e34c2a5c7dccb96190a5

commit r15-5554-g10e702789eeabcc88451e34c2a5c7dccb96190a5
Author: Kewen Lin <li...@linux.ibm.com>
Date:   Thu Nov 21 07:41:34 2024 +0000

    rs6000: Adjust FLOAT128 signbit2 expander for P8 LE [PR114567]

    As the associated test case shows, signbit generated assembly
    is sub-optimal for _Float128 argument from memory on P8 LE.
    On P8 LE, p8swap pass puts an explicit AND -16 on the memory,
    which causes mode_dependent_address_p considers it's invalid
    to change its mode and combine fails to make use of the
    existing pattern signbit<SIGNBIT:mode>2_dm_mem.  Considering
    it's always more efficient to make use of 8 bytes load and
    shift on P8 LE, this patch is to adjust the current expander
    and treat it specially.

            PR target/114567

    gcc/ChangeLog:

            * config/rs6000/rs6000.md (expander signbit<FLOAT128:mode>2):
Adjust.
            (*signbit<mode>2_dm_mem): Rename to ...
            (signbit<mode>2_dm_mem): ... this.

    gcc/testsuite/ChangeLog:

            * gcc.target/powerpc/pr114567.c: New test.

Reply via email to