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.